@@ -74,6 +74,19 @@ macro(linklibdirs_from_list LINK_LIBDIRS LIBDIR_LIST)
7474
7575endmacro ()
7676
77+ ## macro include_dirs_to_cflags
78+ # Turn list of include directories into a -I delimited string for compilation
79+ #
80+ # First: INCLUDE_CFLAGS: output string
81+ # Second: INCLUDE_DIRS_LIST: input list to process
82+ #
83+ macro (include_dirs_to_cflags INCLUDE_CFLAGS INCLUDE_DIRS_LIST )
84+
85+ string (REPLACE ";" " -I" ${INCLUDE_CFLAGS} "${${INCLUDE_DIRS_LIST} }" )
86+ set (${INCLUDE_CFLAGS} "-I${${INCLUDE_CFLAGS} }" )
87+
88+ endmacro ()
89+
7790## Extract the library name from a path
7891 # e.g. /path/to/libname.so produces name
7992 #
@@ -108,6 +121,34 @@ macro(liblist_strip_namespace LIBRARY_LIST prefix)
108121
109122endmacro ()
110123
124+ ## macro liblist_strip_paths
125+ # Strip path and library filename decorations from a list.
126+ # E.g. /path/to/libname.so becomes name
127+ #
128+ # LIBRARY_LIST: input/output list of libraries
129+ #
130+ macro (liblist_strip_paths LIBRARY_LIST )
131+
132+ set (LIBLIST_STRIP_PATHS_OUT "" )
133+
134+ foreach (lib ${${LIBRARY_LIST} })
135+
136+ cmake_path (HAS_PARENT_PATH lib LIB_IS_PATH )
137+
138+ if (LIB_IS_PATH)
139+ get_filename_component (lib ${lib} NAME )
140+ string (REGEX REPLACE "^lib" "" lib "${lib} " )
141+ string (REGEX REPLACE "(\\ .so(\\ ..*)?|\\ .a)$" "" lib "${lib} " )
142+ endif ()
143+
144+ list (APPEND LIBLIST_STRIP_PATHS_OUT "${lib} " )
145+
146+ endforeach ()
147+
148+ set (${LIBRARY_LIST} "${LIBLIST_STRIP_PATHS_OUT} " )
149+
150+ endmacro ()
151+
111152## Function linklibs_from_list
112153 # Turn list of library names into a -l delimited string for linking
113154 # If the library is specified with a full path we don't mess with it
@@ -117,6 +158,8 @@ endmacro()
117158 #
118159macro (linklibs_from_list LINK_LIBRARIES LIBRARY_LIST )
119160
161+ set (LINKLIBS_FROM_LIST_OUT "" )
162+
120163 foreach (lib ${${LIBRARY_LIST} })
121164
122165 cmake_path (HAS_PARENT_PATH lib LIB_IS_PATH )
@@ -127,13 +170,13 @@ macro(linklibs_from_list LINK_LIBRARIES LIBRARY_LIST)
127170 string (PREPEND lib "-l" )
128171 endif ()
129172
130- set (LIBRARY_LIST_OUT "${LIBRARY_LIST_OUT } ${lib} " )
173+ set (LINKLIBS_FROM_LIST_OUT "${LINKLIBS_FROM_LIST_OUT } ${lib} " )
131174
132175 endforeach ()
133176
134177 #message("LIBRARY_LIST_OUT: ${LIBRARY_LIST_OUT}")
135178
136- set (${LINK_LIBRARIES} "${LIBRARY_LIST_OUT } " )
179+ set (${LINK_LIBRARIES} "${LINKLIBS_FROM_LIST_OUT } " )
137180
138181 #message("LINK_LIBRARIES: ${${LINK_LIBRARIES}}")
139182
@@ -433,6 +476,7 @@ linklibdirs_from_list(Boost_LIBDIRS_FLAGS Boost_LIBRARY_DIRS)
433476set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${Boost_LIBDIRS_FLAGS} " )
434477
435478liblist_strip_namespace (Boost_LIBRARIES "boost_" )
479+ liblist_strip_paths (Boost_LIBRARIES )
436480linklibs_from_list (Boost_LIBRARIES_FLAGS Boost_LIBRARIES )
437481set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${Boost_LIBRARIES_FLAGS} " )
438482
@@ -451,7 +495,8 @@ add_compile_definitions(EIGEN_DONT_PARALLELIZE)
451495
452496set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} -I${EIGEN3_INCLUDE_DIRS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER} " )
453497
454- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${EIGEN3_INCLUDE_DIRS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER} -DEIGEN_DONT_PARALLELIZE" )
498+ include_dirs_to_cflags (EIGEN3_INCLUDE_CFLAGS EIGEN3_INCLUDE_DIRS )
499+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${EIGEN3_INCLUDE_CFLAGS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER} -DEIGEN_DONT_PARALLELIZE" )
455500set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${EIGEN3_LDFLAGS} " )
456501
457502############################################
@@ -467,7 +512,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw")
467512 target_link_libraries (mxlib-static PUBLIC PkgConfig::FFTW3 )
468513
469514 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3_CFLAGS} ${FFTW3_CFLAGS_OTHER} " )
470- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3_INCLUDE_DIRS} " )
515+ include_dirs_to_cflags (FFTW3_INCLUDE_CFLAGS FFTW3_INCLUDE_DIRS )
516+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3_INCLUDE_CFLAGS} " )
471517
472518 linklibdirs_from_list (FFTW3_LIBDIRS_FLAGS FFTW3_LIBRARY_DIRS )
473519 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3_LIBDIRS_FLAGS} " )
@@ -483,7 +529,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw")
483529 target_link_libraries (mxlib-static PUBLIC PkgConfig::FFTW3F )
484530
485531 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3F_CFLAGS} ${FFTW3F_CFLAGS_OTHER} " )
486- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3F_INCLUDE_DIRS} " )
532+ include_dirs_to_cflags (FFTW3F_INCLUDE_CFLAGS FFTW3F_INCLUDE_DIRS )
533+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3F_INCLUDE_CFLAGS} " )
487534
488535 linklibdirs_from_list (FFTW3F_LIBDIRS_FLAGS FFTW3F_LIBRARY_DIRS )
489536 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3F_LIBDIRS_FLAGS} " )
@@ -499,7 +546,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw")
499546 target_link_libraries (mxlib-static PUBLIC PkgConfig::FFTW3L )
500547
501548 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3L_CFLAGS} ${FFTW3L_CFLAGS_OTHER} " )
502- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3L_INCLUDE_DIRS} " )
549+ include_dirs_to_cflags (FFTW3L_INCLUDE_CFLAGS FFTW3L_INCLUDE_DIRS )
550+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3L_INCLUDE_CFLAGS} " )
503551
504552 linklibdirs_from_list (FFTW3L_LIBDIRS_FLAGS FFTW3L_LIBRARY_DIRS )
505553 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTWL_LIBDIRS_FLAGS} " )
@@ -518,7 +566,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw")
518566 target_link_libraries (mxlib-static PUBLIC PkgConfig::FFTW3Q )
519567
520568 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3Q_CFLAGS} ${FFTW3Q_CFLAGS_OTHER} " )
521- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DHAS_QUAD -I${FFTW3Q_INCLUDE_DIRS} " )
569+ include_dirs_to_cflags (FFTW3Q_INCLUDE_CFLAGS FFTW3Q_INCLUDE_DIRS )
570+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DHAS_QUAD ${FFTW3Q_INCLUDE_CFLAGS} " )
522571
523572 linklibdirs_from_list (FFTW3Q_LIBDIRS_FLAGS FFTW3Q_LIBRARY_DIRS )
524573 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3Q_LIBDIRS_FLAGS} " )
@@ -562,7 +611,8 @@ if(${MXLIB_USE_BLAS_FROM} STREQUAL "mkl")
562611
563612 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_MKL_CFLAGS} " )
564613
565- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${MXLIB_MKL_INCLUDE_DIRECTORY} ${MXLIB_MKL_DEFINITIONS} ${MXLIB_MKL_CFLAGS} " )
614+ include_dirs_to_cflags (MXLIB_MKL_INCLUDE_CFLAGS MXLIB_MKL_INCLUDE_DIRECTORY )
615+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${MXLIB_MKL_INCLUDE_CFLAGS} ${MXLIB_MKL_DEFINITIONS} ${MXLIB_MKL_CFLAGS} " )
566616
567617 linklibdirs_from_list (MXLIB_MKL_LIBDIRS_FLAGS MXLIB_MKL_LIBDIRS )
568618 linklibs_from_list (MXLIB_MKL_LIBS_FLAGS MXLIB_MKL_LIBS )
@@ -726,7 +776,7 @@ if(MXLIB_USE_CUDA)
726776
727777 libname_from_path (CUDA_cusolver_LIBNAME CUDA_cusolver_LIBRARY )
728778
729- set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_CXXVERSION} ${ MXLIB_CXXFLAGS} ${MXLIB_OPTIMIZE} ${MXLIB_DEFINES} " )
779+ set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_CXXFLAGS} ${MXLIB_OPTIMIZE} -D ${MXLIB_DEFINES} " )
730780
731781 set (MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA -I${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} " )
732782
@@ -737,6 +787,7 @@ if(MXLIB_USE_CUDA)
737787 #Strip the includes, extra spaces, and prepend -Xcompiler
738788 string (REGEX REPLACE "-I[^ ]*" "" MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} " )
739789 string (REGEX REPLACE "[ ]+" " " MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} " )
790+ string (STRIP "${MXLIB_NVCCXX_FLAGS} " MXLIB_NVCCXX_FLAGS)
740791 string (REPLACE " " " -Xcompiler=" MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} " )
741792
742793 #and add to the CUDA flags
@@ -747,7 +798,8 @@ if(MXLIB_USE_CUDA)
747798 set (CMAKE_CUDA_STANDARD 20)
748799 #set(CMAKE_CXX_STANDARD_REQUIRED ON)
749800
750- set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA -I${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES} " )
801+ include_dirs_to_cflags (CUDA_INCLUDE_CFLAGS CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES )
802+ set (MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA ${CUDA_INCLUDE_CFLAGS} " )
751803
752804 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} -L${CUDAToolkit_LIBRARY_DIR} " )
753805 set (MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} -l${CUDA_cudart_LIBNAME} " )
0 commit comments