Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 30b05e5a authored by hhakim's avatar hhakim
Browse files

Enhance cmake code for BUILD_MULTITHREADING and refactor a bit cmake scripts.

[skip ci]
parent 9fc69e9b
No related branches found
No related tags found
No related merge requests found
......@@ -521,88 +521,60 @@ elseif(COMPILER_SUPPORTS_CXX0X)
else()
message(FATAL_ERROR "The compiler ${CMAKE_CXX_COMPILER} has neither C++11 nor c++0x support.")
endif()
if(BUILD_MULTITHREAD)
find_package(OpenMP REQUIRED)
if(NOT OpenMP_FOUND)
message(FATAL_ERROR "OpenMP not found.")
else()
message(STATUS "OpenMP is supported OpenMP_CXX_FOUND: ${OpenMP_CXX_FOUND}, OpenMP_CXX_FLAGS: ${OpenMP_CXX_FLAGS}, OpenMP_CXX_LIB_NAMES: ${OpenMP_CXX_LIB_NAMES}, OpenMP_CXX_LIBRARY: ${OpenMP_CXX_LIBRARY}, OpenMP_CXX_LIBRARIES: ${OpenMP_CXX_LIBRARIES}")
foreach(OMP_FLAG IN LISTS OpenMP_CXX_FLAGS)
set(OMP_CXX_FLAGS "${OMP_CXX_FLAGS} ${OMP_FLAG}")
endforeach()
if(UNIX OR (WIN32 AND ${CMAKE_GENERATOR} MATCHES "MinGW Makefiles"))
foreach(OMP_LFLAG IN LISTS OpenMP_CXX_LIB_NAMES)
set(OMP_CXX_LFLAGS "${OMP_CXX_LFLAGS} -l${OMP_LFLAG}")
endforeach()
foreach(OMP_LFLAG IN LISTS OpenMP_CXX_LIBRARIES)
string(REGEX REPLACE "(.*)(/|\\\\).*" "\\1" OMP_LIB_PATH ${OMP_LFLAG})
set(OMP_CXX_LFLAGS " ${OMP_CXX_LFLAGS} -L${OMP_LIB_PATH}")
endforeach()
elseif(WIN32 AND ${CMAKE_GENERATOR} MATCHES "Visual Studio.*")
# strangely I noticed that findOpenMP gives -openmp instead of /openmp when compiler is msvc cl.exe
string(REGEX REPLACE "-" "/" OMP_CXX_FLAGS ${OMP_CXX_FLAGS})
endif()
string(REGEX REPLACE "(^[ \t\r\n]+)|([ \t\r\n]+$)" "" OMP_CXX_FLAGS ${OMP_CXX_FLAGS})
string(REGEX REPLACE "(^[ \t\r\n]+)|([ \t\r\n]+$)" "" OMP_CXX_LFLAGS ${OMP_CXX_LFLAGS})
message(STATUS OMP_CXX_FLAGS=${OMP_CXX_FLAGS} OMP_CXX_LFLAGS=${OMP_CXX_LFLAGS})
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OMP_CXX_FLAGS}")
endif()
endif(BUILD_MULTITHREAD)
#if( (CMAKE_BUILD_TYPE MATCHES "Debug") OR (CMAKE_BUILD_TYPE MATCHES "debug") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") )
if (BUILD_DEBUG OR (CMAKE_BUILD_TYPE MATCHES "Debug") OR (CMAKE_BUILD_TYPE MATCHES "debug") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") )
if (UNIX)
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS_DEBUG} -g -pg -std=c++11")
if(APPLE)
#message(STATUS "APPLE OPERATING SYSTEM")
if (BUILD_MULTITHREAD)
message (WARNING "-fopenmp is not activated for MAC OS.")
endif(BUILD_MULTITHREAD)
# -pthread is not take into account with MAC platform.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -fPIC " CACHE STRING "compile flags" FORCE)
else(APPLE)
#message(STATUS "UNIX OPERATING SYSTEM")
if (BUILD_MULTITHREAD)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp " CACHE STRING "compile flags" FORCE)
set(ENV{__OPENMP__} "TRUE")
endif(BUILD_MULTITHREAD)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -pthread -fPIC " CACHE STRING "compile flags" FORCE)
endif(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -fPIC " CACHE STRING "compile flags" FORCE)
elseif(WIN32)
set(CMAKE_CXX_FLAGS " ${CMAKE_CXX_FLAGS_DEBUG} /O0")
if (BUILD_MULTITHREAD)
if (${CMAKE_GENERATOR} MATCHES "MinGW Makefiles" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp " CACHE STRING "compile flags" FORCE)
else()
# assume VS is used^M
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp " CACHE STRING "compile flags" FORCE)
endif()
set(ENV{__OPENMP__} "TRUE")
endif(BUILD_MULTITHREAD)
else()
message(WARNING "Unknown type of plateform for CMAKE_CXX_FLAGS")
endif()
message(STATUS "**********DEBUG mode************")
else(BUILD_DEBUG OR (CMAKE_BUILD_TYPE MATCHES "Debug") OR (CMAKE_BUILD_TYPE MATCHES "debug") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") )
else() # RELEASE CONFIG
if (UNIX)
if(APPLE)
#message(STATUS "APPLE OPERATING SYSTEM")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -fPIC -O3" CACHE STRING "compile flags" FORCE)
# -pthread is not take into account with MAC platform.
if (BUILD_MULTITHREAD)
message (WARNING "-fopenmp is not activated for MAC OS.")
endif(BUILD_MULTITHREAD)
else(APPLE)
#message(STATUS "UNIX OPERATING SYSTEM")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -pthread -fPIC -O3" CACHE STRING "compile flags" FORCE)
if (BUILD_MULTITHREAD)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp " CACHE STRING "compile flags" FORCE)
endif(BUILD_MULTITHREAD)
endif(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexceptions -fno-omit-frame-pointer -fPIC -O3" CACHE STRING "compile flags" FORCE)
elseif(WIN32)
if (BUILD_MULTITHREAD)
#message (STATUS "CMAKE_GENERATOR=${CMAKE_GENERATOR}")
if (${CMAKE_GENERATOR} MATCHES "MinGW Makefiles" )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp " CACHE STRING "compile flags" FORCE)
else()
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp " CACHE STRING "compile flags" FORCE)
message (WARNING "openmp is not activated for visual studio compiler.")
endif()
endif(BUILD_MULTITHREAD)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs /MD /O2" CACHE STRING "compile flags" FORCE)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs /MD /O2" CACHE STRING "compile flags" FORCE)
else()
message(WARNING "Unknown type of plateform for CMAKE_CXX_FLAGS")
message(WARNING "Unknown type of plateform for CMAKE_CXX_FLAGS")
endif()
message(STATUS "**********RELEASE mode************")
endif(BUILD_DEBUG OR (CMAKE_BUILD_TYPE MATCHES "Debug") OR (CMAKE_BUILD_TYPE MATCHES "debug") OR (CMAKE_BUILD_TYPE MATCHES "DEBUG") )
############################################################################
#if(UNIX)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp -fexceptions -fno-omit-frame-pointer -pthread -fPIC " CACHE STRING "compile flags" FORCE)
#elseif(WIN32)
# set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHs /openmp /MD" CACHE STRING "compile flags" FORCE)
#else()
# message(WARNING "Unknown type of plateform for CMAKE_CXX_FLAGS")
#endif(UNIX)
#message(STATUS "CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}")
##################################################################
###### MATIO inc and lib env. vars #########
if(NOT "$ENV{MATIO_INC_DIR}" MATCHES "^$")
message(STATUS "MATIO_INC_DIR=$ENV{MATIO_INC_DIR}")
......@@ -618,15 +590,6 @@ include(CMake/findExternalLibs.cmake)
#########################################
#########################################
if(FAUST_TORCH)
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS} -DFAUST_TORCH") #-D_GLIBCXX_USE_CXX11_ABI=0")
message(STATUS TORCH_LIBRARY=${TORCH_LIBRARY})
#message(STATUS "TORCH_CXX_FLAGS=" ${TORCH_CXX_FLAGS)
get_filename_component(Torch_DIR ${TORCH_LIBRARY} DIRECTORY)
message(STATUS TORCH_DIR=${Torch_DIR})
endif()
if(USE_GPU_MOD)
find_package(GPU_MOD) #REQUIRED)
if(NOT GPU_MOD_INCLUDE_DIR)
......@@ -655,7 +618,7 @@ if(USE_GPU_MOD)
endif()
include_directories(BEFORE ${EIGEN_INC_DIR} ${FAUST_SRC_LINEAR_OPERATOR_DIR} ${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR} ${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR} ${FAUST_UTILS_SRC_DIR})
include_directories(BEFORE ${EIGEN_INC_DIR} ${FAUST_SRC_LINEAR_OPERATOR_DIR} ${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR} ${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR} ${FAUST_UTILS_SRC_DIR} ${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR})
########### add_subdirectory ###############
if (BUILD_WRAPPER_PYTHON)
add_subdirectory(${FAUST_PYTHON_SRC_DIR} ${FAUST_PYTHON_BIN_DIR})
......@@ -722,8 +685,16 @@ else (BUILD_USE_GPU)
endif (BUILD_USE_GPU)
if(FAUST_TORCH)
find_package(Torch REQUIRED)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS} -DFAUST_TORCH") #-D_GLIBCXX_USE_CXX11_ABI=0")
message(STATUS TORCH_LIBRARY=${TORCH_LIBRARY})
target_compile_definitions(${FAUST_TARGET} PUBLIC FAUST_TORCH -D_GLIBCXX_USE_CXX11_ABI=1)
#target_compile_options(${FAUST_TARGET} PUBLIC ${TORCH_CXX_FLAGS})
#message(STATUS "TORCH_CXX_FLAGS=" ${TORCH_CXX_FLAGS)
get_filename_component(Torch_DIR ${TORCH_LIBRARY} DIRECTORY)
message(STATUS TORCH_DIR=${Torch_DIR})
include_directories(${FAUST_TARGET} ${Torch_DIR}/../include ${Torch_DIR}/../include/torch/csrc/api/include)
target_link_libraries(${FAUST_TARGET} torch c10)
# target_link_libraries(${FAUST_TARGET} torch c10)
target_include_directories(${FAUST_TARGET} PUBLIC ${Torch_DIR}/../include ${Torch_DIR}/../include/torch/csrc/api/include)
endif()
......
......@@ -81,14 +81,11 @@ else() #UNIX
set(FAUST_SETUP_PY_LFLAGS "'-s'")
endif()
if(BUILD_MULTITHREAD AND NOT APPLE)
if(WIN32)
set(FAUST_SETUP_PY_CFLAGS "${FAUST_SETUP_PY_CFLAGS}, '/openmp'")
set(FAUST_SETUP_PY_LFLAGS "${FAUST_SETUP_PY_LFLAGS}")
else()
set(FAUST_SETUP_PY_CFLAGS "${FAUST_SETUP_PY_CFLAGS}, '-fopenmp'")
set(FAUST_SETUP_PY_LFLAGS "${FAUST_SETUP_PY_LFLAGS}, '-fopenmp'")
endif()
if(BUILD_MULTITHREAD)
set(FAUST_SETUP_PY_CFLAGS "${FAUST_SETUP_PY_CFLAGS}, '${OMP_CXX_FLAGS}'")
string(REGEX REPLACE "([^'])[ \t\r\n]([^'])" "\\1','\\2" FAUST_SETUP_PY_CFLAGS ${FAUST_SETUP_PY_CFLAGS})
set(FAUST_SETUP_PY_LFLAGS "${FAUST_SETUP_PY_LFLAGS}, '${OMP_CXX_LFLAGS}'")
string(REGEX REPLACE "([^'])[ \t\r\n]([^'])" "\\1','\\2" FAUST_SETUP_PY_LFLAGS ${FAUST_SETUP_PY_LFLAGS})
endif()
if(FAUST_TORCH)
......@@ -283,9 +280,6 @@ elseif(WIN32)
endif()
set(PY_STATIC_LIBS "$<TARGET_FILE:${FAUST_TARGET}>;${MATIO_STATIC_LIB_PATH};${PYTHON_STATIC_LIB_PATH}")
string(REGEX REPLACE "\n" ";" PY_STATIC_LIBS "${PY_STATIC_LIBS}")
if(BUILD_MULTITHREAD)
set(WIN32_GCC_OMP "-fopenmp")
endif()
add_custom_command(TARGET ${FAUST_PYTHON_TARGET}
COMMAND ${CYTHON_EXE}
ARGS "--cplus" "-o" "${FAUST_PYTHON_BIN_DIR}/_FaustCorePy.cpp" "${FAUST_PYTHON_BIN_DIR}/_FaustCorePy.pyx"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment