Mentions légales du service

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

Modernize mex building cmake script and uniformize macOS/Linux code.

parent 30b05e5a
Branches
Tags
No related merge requests found
# CMakeLists used to generated ".mexa64" files.
#
#INCLUDE("${PROJECT_SOURCE_DIR}/CMake/define_variables.cmake") # data is retrieved from remote website
# copy and install the matlab wrapping the underlying C++ class
# prioritary data is retrieved from remote website
if(NOT REMOTE_DATA_URL OR NOT REMOTE_DATA_FILE) if(NOT REMOTE_DATA_URL OR NOT REMOTE_DATA_FILE)
#file(MAKE_DIRECTORY ${FAUST_MATLAB_TOOLS_INSTALL_DIR}) #file(MAKE_DIRECTORY ${FAUST_MATLAB_TOOLS_INSTALL_DIR})
# copy BSL data matrices and Laplacians # copy BSL data matrices and Laplacians
file(GLOB BSL_DATA_FILE RELATIVE ${FAUST_DATA_MAT_DIR} file(GLOB BSL_DATA_FILE RELATIVE ${FAUST_DATA_MAT_DIR}
"${FAUST_DATA_MAT_DIR}/*MEG*.mat" "${FAUST_DATA_MAT_DIR}/*MEG*.mat"
"${FAUST_DATA_MAT_DIR}/Laplacian*.mat" "${FAUST_DATA_MAT_DIR}/Laplacian*.mat"
"${FAUST_DATA_MAT_DIR}/results_BSL_user.mat") "${FAUST_DATA_MAT_DIR}/results_BSL_user.mat")
foreach(data_BSL ${BSL_DATA_FILE}) foreach(data_BSL ${BSL_DATA_FILE})
configure_file(${FAUST_DATA_MAT_DIR}/${data_BSL} ${FAUST_MATFAUST_DEMO_DATA_BIN_DIR}/${data_BSL} COPYONLY) configure_file(${FAUST_DATA_MAT_DIR}/${data_BSL} ${FAUST_MATFAUST_DEMO_DATA_BIN_DIR}/${data_BSL} COPYONLY)
endforeach() endforeach()
...@@ -29,24 +23,6 @@ foreach(MATLAB_TOOL ${MATLAB_TOOLS}) ...@@ -29,24 +23,6 @@ foreach(MATLAB_TOOL ${MATLAB_TOOLS})
#install(FILES ${FAUST_MATLAB_TOOL_BIN_DIR}/${MATLAB_TOOL}.m DESTINATION ${FAUST_MATLAB_TOOL_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE) #install(FILES ${FAUST_MATLAB_TOOL_BIN_DIR}/${MATLAB_TOOL}.m DESTINATION ${FAUST_MATLAB_TOOL_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
endforeach() endforeach()
file(GLOB CPP_MEXTOOLS_FILES "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp")
# include directory
#{${FAUST_EXCEPTION_SRC_DIR}
include_directories(${FAUST_SRC_LINEAR_OPERATOR_DIR} ${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR} ${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR} ${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR} ${FAUST_MATLAB_TOOLS_SRC_DIR} ${MATLAB_INCLUDE_DIR} ${EIGEN_INC_DIR} ${FAUST_UTILS_SRC_DIR})
if(MATIO_INC_DIR)
include_directories(${MATIO_INC_DIR})
endif()
#modif compatibilite ubuntu avec openblas
if (BUILD_OPENBLAS)
include_directories(${OPENBLAS_INC_DIR})
endif(BUILD_OPENBLAS)
FILE(COPY ${FAUST_MATLAB_NAMESPACE_SRC_DIR} DESTINATION ${PROJECT_BINARY_DIR}/tmp_gendoc_matfaust) FILE(COPY ${FAUST_MATLAB_NAMESPACE_SRC_DIR} DESTINATION ${PROJECT_BINARY_DIR}/tmp_gendoc_matfaust)
#message(FATAL_ERROR ${FAUST_MATLAB_MATFAUST_FILE_LIST}) #message(FATAL_ERROR ${FAUST_MATLAB_MATFAUST_FILE_LIST})
...@@ -87,9 +63,10 @@ foreach(MATFAUST_FILE IN LISTS FAUST_MATLAB_MATFAUST_FILE_LIST) ...@@ -87,9 +63,10 @@ foreach(MATFAUST_FILE IN LISTS FAUST_MATLAB_MATFAUST_FILE_LIST)
endif() endif()
endforeach() endforeach()
file(GLOB CPP_MEXTOOLS_FILES "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp")
include_directories(${FAUST_MATLAB_TOOLS_SRC_DIR} ${MATLAB_INCLUDE_DIR})
add_library(${FAUST_MEXTOOLS_TARGET} OBJECT ${CPP_MEXTOOLS_FILES}) add_library(${FAUST_MEXTOOLS_TARGET} OBJECT ${CPP_MEXTOOLS_FILES})
foreach(SCALAR_AND_FSUFFIX double:Real std::complex<double>:Cplx) # TODO: float and complex<float> versions foreach(SCALAR_AND_FSUFFIX double:Real std::complex<double>:Cplx) # TODO: float and complex<float> versions
# configuration de mexFaust.cpp.in # configuration de mexFaust.cpp.in
# specialization of the class mexFaust template scalar with real or complex # specialization of the class mexFaust template scalar with real or complex
...@@ -125,127 +102,70 @@ file(GLOB CPP_MEX_FILES "${FAUST_MATLAB_MEX_SRC_DIR}/*.cpp") ...@@ -125,127 +102,70 @@ file(GLOB CPP_MEX_FILES "${FAUST_MATLAB_MEX_SRC_DIR}/*.cpp")
#string(REGEX REPLACE "[a-zA-Z0-9_/:.]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}") #string(REGEX REPLACE "[a-zA-Z0-9_/:.]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}")
string(REGEX REPLACE "[a-zA-Z0-9_/:.-]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}") string(REGEX REPLACE "[a-zA-Z0-9_/:.-]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "\\1\\2" MEXFILE_TARGET_LIST "${CPP_MEX_FILES}")
if(CXX_MEX_FLAGS) if(WIN32)
string(STRIP ${CXX_MEX_FLAGS} CXX_MEX_FLAGS)
string(REGEX REPLACE "([ \n\r\t]+)" ";" CMAKE_CXX_FLAGS_LIST "${CXX_MEX_FLAGS}")
endif()
#"-I${FAUST_FAUSTCORE_SRC_DIR}" "-I${FAUST_EXCEPTION_SRC_DIR}"
set(CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS_LIST} "-I${MATIO_INC_DIR}" "-I${MATLAB_INCLUDE_DIR}" "-I${EIGEN_INC_DIR}" "-I${FAUST_SRC_LINEAR_OPERATOR_DIR}" "-I${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}" "-I${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}" "-I${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}" "-I${FAUST_MATLAB_TOOLS_SRC_DIR}" "-I${FAUST_UTILS_SRC_DIR}")
if(USE_GPU_MOD)
set(CMAKE_CXX_FLAGS_LIST ${CMAKE_CXX_FLAGS_LIST} -DUSE_GPU_MOD -I${GPU_MOD_INCLUDE_DIR} -I${GPU_MOD_INCLUDE_DIR}/../build/)
endif()
#if(BUILD_OPENBLAS AND UNIX)
if(BUILD_OPENBLAS)
set(CMAKE_CXX_FLAGS_LIST "${CMAKE_CXX_FLAGS_LIST}" "-I${OPENBLAS_INC_DIR}")
endif()
#target_link_libraries(${FAUST_FAUSTCORE_TARGET} ${FAUST_MATRIX_TARGET} ${FAUST_EXCEPTION_TARGET} )
if(UNIX)
# we always use matio
if(${USE_MATIO_STATIC_LIBS})
set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} "-L${FAUST_BIN_DIR}" "-l${FAUST_TARGET}" "${MATIO_STATIC_LIB_PATH}" "${HDF5_STATIC_LIB_PATH}" "${Z_STATIC_LIB_PATH}")
else()
string(REGEX REPLACE "^(.+)/.*$" "-L\\1" LDD_MEX_FLAGS "${MATIO_LIB_FILE}")
set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} "-L${FAUST_BIN_DIR}" "-l${FAUST_TARGET}" "-lmatio")
endif()
elseif(WIN32)
# MODIF ALALAL
#set(LDD_MEX_FLAGS "-L${FAUST_BIN_DIR}" "-l${FAUST_TARGET}")
#windows version uses static lib of matio anyway (so replace any dyn. lib found by the static lib) #windows version uses static lib of matio anyway (so replace any dyn. lib found by the static lib)
string(REGEX REPLACE "^(.+)/.*$" "\\1/libmatio.lib" LDD_MEX_FLAGS "${MATIO_LIB_FILE}") string(REGEX REPLACE "^(.+)/.*$" "\\1/libmatio.lib" LDD_MEX_FLAGS "${MATIO_LIB_FILE}")
set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} ${HDF5_STATIC_LIB_PATH} ${Z_STATIC_LIB_PATH}) set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} ${HDF5_STATIC_LIB_PATH} ${Z_STATIC_LIB_PATH})
set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} $ENV{WIN_HDF5_OBJS_DIR}/*.obj) # complete static libs by objects of libs if needed (fallback solution from environment)
set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} $ENV{WIN_SZIP_OBJS_DIR}/*.obj) set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} $ENV{WIN_HDF5_OBJS_DIR}/*.obj)
endif() set(LDD_MEX_FLAGS ${LDD_MEX_FLAGS} $ENV{WIN_SZIP_OBJS_DIR}/*.obj)
if(BUILD_OPENBLAS)
set(LDD_MEX_FLAGS "${LDD_MEX_FLAGS}" "${OPENBLAS_LIB_FILE}")
endif()
if(UNIX)
add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS ${MEXFILE_TARGET_LIST} ${FAUST_TARGET} ${FAUST_MEXTOOLS_TARGET} )
elseif(WIN32)
file(GLOB CPP_SRC_FILES "${FAUST_SRC_LINEAR_OPERATOR_DIR}/*.cpp" "${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}/*.cpp" "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp" "${FAUST_UTILS_SRC_DIR}/*.cpp") file(GLOB CPP_SRC_FILES "${FAUST_SRC_LINEAR_OPERATOR_DIR}/*.cpp" "${FAUST_LINEAR_OPERATOR_CPU_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_CONSTRAINT_SRC_DIR}/*.cpp" "${FAUST_ALGORITHM_FACTORIZATION_SRC_DIR}/*.cpp" "${FAUST_MATLAB_TOOLS_SRC_DIR}/*.cpp" "${FAUST_UTILS_SRC_DIR}/*.cpp")
string(REGEX REPLACE "([a-zA-Z0-9_/:-]+)\\.cpp(;|$)" "\\1\\2" MEXSRC_FULL "${CPP_SRC_FILES}") string(REGEX REPLACE "([a-zA-Z0-9_/:-]+)\\.cpp(;|$)" "\\1\\2" MEXSRC_FULL "${CPP_SRC_FILES}")
#message (STATUS "MEXSRC_FULL ------------- ${MEXSRC_FULL}")
#message (STATUS "FAUST_TMPMEX_DIR ------------- ${FAUST_TMPMEX_DIR}")
#message (STATUS "CPP_SRC_FILES ---------${CPP_SRC_FILES}")
#modif AL
#string(REGEX REPLACE "[a-zA-Z0-9_/:-]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "${FAUST_TMPMEX_DIR}/\\1.${MEXOBJ_EXT}\\2" MEXOBJ_FILES "${CPP_SRC_FILES}")
string(REGEX REPLACE "[a-zA-Z0-9_/:.-]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "${FAUST_TMPMEX_DIR}/\\1.${MEXOBJ_EXT}\\2" MEXOBJ_FILES "${CPP_SRC_FILES}") string(REGEX REPLACE "[a-zA-Z0-9_/:.-]+/([a-zA-Z0-9_]+)\\.cpp(;|$)" "${FAUST_TMPMEX_DIR}/\\1.${MEXOBJ_EXT}\\2" MEXOBJ_FILES "${CPP_SRC_FILES}")
#message (STATUS "MEXOBJ_FILES --------- ${MEXOBJ_FILES}")
set(MEX_OBJS_IN_ONE ${FAUST_TMPMEX_DIR}/mexobj_allinone.obj) set(MEX_OBJS_IN_ONE ${FAUST_TMPMEX_DIR}/mexobj_allinone.obj)
add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS MEXFILE_TARGET_LIST_TARGET ) add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS MEXFILE_TARGET_LIST_TARGET )
add_custom_target(MEXFILE_TARGET_LIST_TARGET DEPENDS ${MEXFILE_TARGET_LIST}) add_custom_target(MEXFILE_TARGET_LIST_TARGET DEPENDS ${MEXFILE_TARGET_LIST})
#add_custom_target(MEXOBJ_FILES_TARGET DEPENDS ${MEXOBJ_FILES})
# foreach( mex_src ${MEXSRC_FULL})
# #modif AL pour gerer les "-" dans le path
# #string(REGEX REPLACE "[a-zA-Z0-9_/:-.]+/([a-zA-Z0-9_]+)" "\\1" mexsrc_short "${mex_src}")
# string(REGEX REPLACE "[a-zA-Z0-9_/:.-]+/([a-zA-Z0-9_]+)(;|$)" "\\1\\2" mexsrc_short "${mex_src}")
# #message(STATUS "-------------------------mexsrc_short---${mexsrc_short}")
# add_custom_command( OUTPUT ${FAUST_TMPMEX_DIR}/${mexsrc_short}.${MEXOBJ_EXT}
# COMMAND ${MATLAB_ROOT}/bin/mex
# ARGS "-v" "-c" "-largeArrayDims" ${mex_src}.cpp
# ${CMAKE_CXX_FLAGS_LIST} ${LDD_MEX_FLAGS}
# "-outdir" "${FAUST_TMPMEX_DIR}" "OBJEXT=.${MEXOBJ_EXT}"
# COMMENT "Compiling ${mex_src}.cpp for mex usage")
# #message (STATUS "${FAUST_TMPMEX_DIR}/${mexsrc_short}.${MEXOBJ_EXT}")
# endforeach()
# dirty trick to force the *.obj compilation before mex shared libs which depend on them # dirty trick to force the *.obj compilation before mex shared libs which depend on them
add_custom_target(MEX_OBJS_IN_ONE add_custom_target(MEX_OBJS_IN_ONE
COMMAND ${MATLAB_ROOT}/bin/mex -output ${MEX_OBJS_IN_ONE} "-v" "-c" "-largeArrayDims" ${CPP_SRC_FILES} COMMAND ${MATLAB_ROOT}/bin/mex -output ${MEX_OBJS_IN_ONE} "-v" "-c" "-largeArrayDims" ${CPP_SRC_FILES}
${CMAKE_CXX_FLAGS_LIST} ${LDD_MEX_FLAGS} ${CMAKE_CXX_FLAGS_LIST} ${LDD_MEX_FLAGS}
"-outdir" "${FAUST_TMPMEX_DIR}" "OBJEXT=.${MEXOBJ_EXT}" "-outdir" "${FAUST_TMPMEX_DIR}" "OBJEXT=.${MEXOBJ_EXT}"
COMMENT "Compiling ${MEX_OBJS_IN_ONE} for mex usage") COMMENT "Compiling ${MEX_OBJS_IN_ONE} for mex usage")
add_custom_target(MEXOBJ_FILES_TARGET DEPENDS MEX_OBJS_IN_ONE)
add_dependencies(MEXFILE_TARGET_LIST_TARGET MEXOBJ_FILES_TARGET)
elseif(UNIX)
find_package(Matlab)
if(NOT Matlab_FOUND)
message(FATAL_ERROR "Matlab not found.")
endif()
add_custom_target(MEXOBJ_FILES_TARGET DEPENDS MEX_OBJS_IN_ONE) add_custom_target(${FAUST_MEX_TARGET} ALL DEPENDS ${MEXFILE_TARGET_LIST})
add_dependencies(MEXFILE_TARGET_LIST_TARGET MEXOBJ_FILES_TARGET)
endif() endif()
#file(MAKE_DIRECTORY ${FAUST_MATLAB_MEX_INSTALL_DIR})
#file(MAKE_DIRECTORY ${CMAKE_INSTALL_MATLAB_PREFIX})
foreach(mex_target ${MEXFILE_TARGET_LIST})
if(WIN32)
add_custom_target(${mex_target} DEPENDS ${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} MEXOBJ_FILES_TARGET )
elseif(UNIX)
add_custom_target(${mex_target} DEPENDS ${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} ${FAUST_MEXTOOLS_TARGET} ${FAUST_TARGET})
endif()
foreach(mex_target ${MEXFILE_TARGET_LIST})
if(UNIX) if(UNIX)
if(APPLE) matlab_add_mex(NAME ${mex_target} SHARED SRC "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" R2017b)
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} set_target_properties(${mex_target} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${FAUST_MATLAB_MEX_BIN_DIR})
COMMAND ${MATLAB_ROOT}/bin/mex target_link_options(${mex_target} PRIVATE $<TARGET_PROPERTY:${FAUST_TARGET},LINK_OPTIONS>)
ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" #target_link_options(${mex_target} PRIVATE ${LDD_MEX_FLAGS})
"-O" target_link_options(${mex_target} PRIVATE ${OpenMP_CXX_LIBRARIES}) # do nothing if BUILD_MULTITHREAD is OFF
${CMAKE_CXX_FLAGS_LIST} target_compile_options(${mex_target} PRIVATE "-v" "-largeArrayDims")
${LDD_MEX_FLAGS} target_include_directories(${mex_target} PRIVATE $<TARGET_PROPERTY:${FAUST_TARGET},INTERFACE_INCLUDE_DIRECTORIES>)
COMMENT "Creating mex function ${mex_target}.${MEX_EXT}") add_dependencies(${mex_target} ${FAUST_TARGET})
else(APPLE) add_dependencies(${mex_target} ${FAUST_MEXTOOLS_TARGET})
if(BUILD_MULTITHREAD) target_compile_definitions(${mex_target} PRIVATE $<TARGET_PROPERTY:${FAUST_TARGET},COMPILE_DEFINITIONS>)
set(OPENMP_CFLAG "-fopenmp") target_compile_options(${mex_target} PRIVATE $<TARGET_PROPERTY:${FAUST_TARGET},COMPILE_OPTIONS>)
set(OPENMP_LFLAG "-fopenmp") target_link_libraries(${mex_target} ${FAUST_TARGET})
endif() if(USE_MATIO_STATIC_LIBS)
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} target_link_libraries(${mex_target} "${MATIO_STATIC_LIB_PATH}" "${HDF5_STATIC_LIB_PATH}" "${Z_STATIC_LIB_PATH}")
COMMAND ${MATLAB_ROOT}/bin/mex else()
ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" target_link_libraries(${mex_target} matio)
"LDFLAGS=$$LDFLAGS ${OPENMP_LFLAG} -Wl,-rpath=${MATLAB_ROOT}/bin/${MEX_SUBDIR_LIB}:${FAUST_INSTALL_LIB}:${PROJECT_BINARY_DIR}" endif()
"CFLAGS=$$CFLAGS ${OPENMP_CFLAG} -fexceptions -fPIC -fno-omit-frame-pointer -pthread " # add_custom_command(OUTPUT ${mex_target}.${MEX_EXT}
"-O" # COMMAND ${MATLAB_ROOT}/bin/mex
${CMAKE_CXX_FLAGS_LIST} # ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" "-L${MATLAB_ROOT}/bin/${MEX_SUBDIR_LIB}" "-L${FAUST_INSTALL_LIB}" "-L${PROJECT_BINARY_DIR}"
${LDD_MEX_FLAGS} # "LDFLAGS=${OMP_CXX_LFLAGS}"
COMMENT "Creating mex function ${mex_target}.${MEX_EXT}") # VERBATIM ${CMAKE_CXX_FLAGS_LIST}
endif(APPLE) # VERBATIM ${LDD_MEX_FLAGS}
# "-O"
# COMMENT "Creating mex function ${mex_target}.${MEX_EXT}")
elseif(WIN32) elseif(WIN32)
add_custom_target(${mex_target} DEPENDS ${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp ${mex_target}.${MEX_EXT} MEXOBJ_FILES_TARGET )
if(BUILD_MULTITHREAD) if(BUILD_MULTITHREAD)
if (${CMAKE_GENERATOR} MATCHES "MinGW Makefiles" ) if (${CMAKE_GENERATOR} MATCHES "MinGW Makefiles" )
set(OMP_COMPFLAG -fopenmp) set(OMP_COMPFLAG -fopenmp)
...@@ -260,94 +180,82 @@ foreach(mex_target ${MEXFILE_TARGET_LIST}) ...@@ -260,94 +180,82 @@ foreach(mex_target ${MEXFILE_TARGET_LIST})
#message(STATUS "${MEXOBJ_FILES} ") #message(STATUS "${MEXOBJ_FILES} ")
file(GLOB OBJ_MEXTOOLS_FILES "${FAUST_TMPMEX_DIR}/*.${MEXOBJ_EXT}") file(GLOB OBJ_MEXTOOLS_FILES "${FAUST_TMPMEX_DIR}/*.${MEXOBJ_EXT}")
add_custom_command(OUTPUT ${mex_target}.${MEX_EXT} add_custom_command(OUTPUT ${mex_target}.${MEX_EXT}
#COMMAND set ARGS CL=/openmp /link /openmp # doesn't work (https://docs.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=vs-2019) #COMMAND set ARGS CL=/openmp /link /openmp # doesn't work (https://docs.microsoft.com/en-us/cpp/build/reference/cl-environment-variables?view=vs-2019)
#COMMAND echo ARGS CL=%CL% #COMMAND echo ARGS CL=%CL%
COMMAND ${MATLAB_ROOT}/bin/mex COMMAND ${MATLAB_ROOT}/bin/mex
ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" ${OBJ_MEXTOOLS_FILES} ${MEXOBJ_FILES} ARGS "-v" "-largeArrayDims" "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp" ${OBJ_MEXTOOLS_FILES} ${MEXOBJ_FILES}
${CMAKE_CXX_FLAGS_LIST} ${LDD_MEX_FLAGS} -DNOMINMAX COMPFLAGS="${OMP_COMPFLAG} $COMPFLAGS" LINKFLAGS="${OMP_LINKFLAG} $LINKFLAGS" # mex will replace -D by /D if VS is used for building ${CMAKE_CXX_FLAGS_LIST} ${LDD_MEX_FLAGS} -DNOMINMAX COMPFLAGS="${OMP_COMPFLAG} $COMPFLAGS" LINKFLAGS="${OMP_LINKFLAG} $LINKFLAGS" # mex will replace -D by /D if VS is used for building
# (this constant is to contervene the symbol conflicts between std::min/max and min/max macro from Microsoft) # (this constant is to contervene the symbol conflicts between std::min/max and min/max macro from Microsoft)
DEPENDS ${MEXOBJ_FILES} DEPENDS ${MEXOBJ_FILES}
COMMENT "Creating mex function ${mex_target}.${MEX_EXT}" COMMENT "Creating mex function ${mex_target}.${MEX_EXT}"
) )
#message (STATUS "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp") #message (STATUS "${FAUST_MATLAB_MEX_SRC_DIR}/${mex_target}.cpp")
else() else()
message(FATAL_ERROR "Unable to compile mex functions for this platform") message(FATAL_ERROR "Unable to compile mex functions for this platform")
endif() endif()
configure_file(${FAUST_MATLAB_DOC_SRC_DIR}/${mex_target}.m ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.m COPYONLY) configure_file(${FAUST_MATLAB_DOC_SRC_DIR}/${mex_target}.m ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.m COPYONLY)
#install(FILES ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.m DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE) endforeach()
#install(FILES ${FAUST_MATLAB_MEX_BIN_DIR}/${mex_target}.${MEX_EXT} DESTINATION ${FAUST_MATLAB_MEX_INSTALL_DIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_WRITE WORLD_EXECUTE)
endforeach()
# CONFIGURATION DES CHEMINS
configure_file(${FAUST_MATLAB_SRC_DIR}/setup_FAUST.m ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m COPYONLY)
### OLD MATLAB VERSION CODE TO MAKE TIME COMPARISON ########
#version MATLAB du code (entierement MATLAB, pas de mexfunction)
set(FAUST_MATLAB_OLD_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/old_matlab CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_PROX_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/proxs CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/utils CACHE INTERNAL "")
set(FAUST_MATLAB_OLD_UTILS_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/utils CACHE INTERNAL "")
# CONFIGURATION DES CHEMINS
configure_file(${FAUST_MATLAB_SRC_DIR}/setup_FAUST.m ${FAUST_MATLAB_BIN_DIR}/setup_FAUST.m COPYONLY)
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_hierarchical_fact.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_hierarchical_fact.m)
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_palm4MSA.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_palm4MSA.m)
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/setup_old_FAUST.m ${FAUST_MATLAB_OLD_BIN_DIR}/setup_old_FAUST.m COPYONLY) ### OLD MATLAB VERSION CODE TO MAKE TIME COMPARISON ########
#version MATLAB du code (entierement MATLAB, pas de mexfunction)
#prox matlab function set(FAUST_MATLAB_OLD_SRC_DIR ${FAUST_MATLAB_SRC_DIR}/old_matlab CACHE INTERNAL "")
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m") set(FAUST_MATLAB_OLD_BIN_DIR ${FAUST_MATLAB_BIN_DIR}/old_matlab CACHE INTERNAL "")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}") set(FAUST_MATLAB_OLD_PROX_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/proxs CACHE INTERNAL "")
foreach(prox ${MATLAB_PROX}) set(FAUST_MATLAB_OLD_PROX_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/proxs CACHE INTERNAL "")
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY) set(FAUST_MATLAB_OLD_UTILS_BIN_DIR ${FAUST_MATLAB_OLD_BIN_DIR}/utils CACHE INTERNAL "")
endforeach() set(FAUST_MATLAB_OLD_UTILS_SRC_DIR ${FAUST_MATLAB_OLD_SRC_DIR}/utils CACHE INTERNAL "")
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m") configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_hierarchical_fact.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_hierarchical_fact.m)
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}") configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/old_palm4MSA.m ${FAUST_MATLAB_OLD_BIN_DIR}/old_palm4MSA.m)
foreach(prox ${MATLAB_PROX})
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY)
endforeach()
file(GLOB MATLAB_UTILS RELATIVE ${FAUST_MATLAB_OLD_UTILS_SRC_DIR} "${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_UTILS})
configure_file(${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_UTILS_BIN_DIR}/${prox} COPYONLY)
endforeach()
configure_file(${FAUST_MATLAB_OLD_SRC_DIR}/setup_old_FAUST.m ${FAUST_MATLAB_OLD_BIN_DIR}/setup_old_FAUST.m COPYONLY)
#prox matlab function
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_PROX})
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY)
endforeach()
#### installation ####
install(DIRECTORY ${FAUST_MATLAB_BIN_DIR}/ DESTINATION ${CMAKE_INSTALL_MATLAB_PREFIX} FILE_PERMISSIONS ${INSTALL_FILE_PERMISSION} DIRECTORY_PERMISSIONS ${INSTALL_DIR_PERMISSION} FILES_MATCHING PATTERN "*.${MEX_EXT}" PATTERN "*.m" PATTERN "*.mat" PATTERN "*CMakeFiles*" EXCLUDE PATTERN "*old_matlab*" EXCLUDE PATTERN BitReversalPermutation.m EXCLUDE
PATTERN CooleyTukeyFact.m EXCLUDE
PATTERN diagonalization_givens.m EXCLUDE
PATTERN diagonalization_givens_parall.m EXCLUDE
PATTERN dvp.m EXCLUDE
PATTERN normalizeCol.m EXCLUDE
PATTERN hadamard_mat.m EXCLUDE
PATTERN generate_params.m EXCLUDE
PATTERN gen_artificial_faust.m EXCLUDE
PATTERN TransStockhamFact.m EXCLUDE
PATTERN test_Givens.m EXCLUDE
PATTERN test_GivensDiag.m EXCLUDE
)#PATTERN faust_decompose.m EXCLUDE #TODO: uncomment later when
# matfaust.demo.hadamard will be updated to use hierarchical)
file(GLOB MATLAB_PROX RELATIVE ${FAUST_MATLAB_OLD_PROX_SRC_DIR} "${FAUST_MATLAB_OLD_PROX_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_PROX})
configure_file(${FAUST_MATLAB_OLD_PROX_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_PROX_BIN_DIR}/${prox} COPYONLY)
endforeach()
file(GLOB MATLAB_UTILS RELATIVE ${FAUST_MATLAB_OLD_UTILS_SRC_DIR} "${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/*.m")
#message(STATUS "MATLAB PROX : ${MATLAB_PROX}")
foreach(prox ${MATLAB_UTILS})
configure_file(${FAUST_MATLAB_OLD_UTILS_SRC_DIR}/${prox} ${FAUST_MATLAB_OLD_UTILS_BIN_DIR}/${prox} COPYONLY)
endforeach()
#### installation ####
install(DIRECTORY ${FAUST_MATLAB_BIN_DIR}/ DESTINATION ${CMAKE_INSTALL_MATLAB_PREFIX} FILE_PERMISSIONS ${INSTALL_FILE_PERMISSION} DIRECTORY_PERMISSIONS ${INSTALL_DIR_PERMISSION} FILES_MATCHING PATTERN "*.${MEX_EXT}" PATTERN "*.m" PATTERN "*.mat" PATTERN "*CMakeFiles*" EXCLUDE PATTERN "*old_matlab*" EXCLUDE PATTERN BitReversalPermutation.m EXCLUDE
PATTERN CooleyTukeyFact.m EXCLUDE
PATTERN diagonalization_givens.m EXCLUDE
PATTERN diagonalization_givens_parall.m EXCLUDE
PATTERN dvp.m EXCLUDE
PATTERN normalizeCol.m EXCLUDE
PATTERN hadamard_mat.m EXCLUDE
PATTERN generate_params.m EXCLUDE
PATTERN gen_artificial_faust.m EXCLUDE
PATTERN TransStockhamFact.m EXCLUDE
PATTERN test_Givens.m EXCLUDE
PATTERN test_GivensDiag.m EXCLUDE
)#PATTERN faust_decompose.m EXCLUDE #TODO: uncomment later when
# matfaust.demo.hadamard will be updated to use hierarchical)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment