From 7ea092039b8c3a5c73e2f18ac32443167a089e77 Mon Sep 17 00:00:00 2001 From: Jared Males Date: Wed, 20 May 2026 14:14:06 -0700 Subject: [PATCH 1/3] fix NVCC flag forwarding --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ae80f5116..fd96da69f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -726,7 +726,7 @@ if(MXLIB_USE_CUDA) libname_from_path(CUDA_cusolver_LIBNAME CUDA_cusolver_LIBRARY) - set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_CXXVERSION} ${MXLIB_CXXFLAGS} ${MXLIB_OPTIMIZE} ${MXLIB_DEFINES}") + set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_CXXFLAGS} ${MXLIB_OPTIMIZE} -D${MXLIB_DEFINES}") set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA -I${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}") @@ -737,6 +737,7 @@ if(MXLIB_USE_CUDA) #Strip the includes, extra spaces, and prepend -Xcompiler string(REGEX REPLACE "-I[^ ]*" "" MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS}") string(REGEX REPLACE "[ ]+" " " MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS}") + string(STRIP "${MXLIB_NVCCXX_FLAGS}" MXLIB_NVCCXX_FLAGS) string(REPLACE " " " -Xcompiler=" MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS}") #and add to the CUDA flags From d5b11fc0b80ed860edbae079ce9e8300b39f7f38 Mon Sep 17 00:00:00 2001 From: Jared Males Date: Wed, 20 May 2026 17:07:53 -0700 Subject: [PATCH 2/3] fix Rocky boost path stripping --- CMakeLists.txt | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fd96da69f..1297d0c81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,6 +108,34 @@ macro(liblist_strip_namespace LIBRARY_LIST prefix) endmacro() +## macro liblist_strip_paths + # Strip path and library filename decorations from a list. + # E.g. /path/to/libname.so becomes name + # + # LIBRARY_LIST: input/output list of libraries + # +macro(liblist_strip_paths LIBRARY_LIST) + + set(LIBLIST_STRIP_PATHS_OUT "") + + foreach(lib ${${LIBRARY_LIST}}) + + cmake_path(HAS_PARENT_PATH lib LIB_IS_PATH) + + if(LIB_IS_PATH) + get_filename_component(lib ${lib} NAME) + string(REGEX REPLACE "^lib" "" lib "${lib}") + string(REGEX REPLACE "(\\.so(\\..*)?|\\.a)$" "" lib "${lib}") + endif() + + list(APPEND LIBLIST_STRIP_PATHS_OUT "${lib}") + + endforeach() + + set(${LIBRARY_LIST} "${LIBLIST_STRIP_PATHS_OUT}") + +endmacro() + ## Function linklibs_from_list # Turn list of library names into a -l delimited string for linking # If the library is specified with a full path we don't mess with it @@ -117,6 +145,8 @@ endmacro() # macro(linklibs_from_list LINK_LIBRARIES LIBRARY_LIST) + set(LINKLIBS_FROM_LIST_OUT "") + foreach(lib ${${LIBRARY_LIST}}) cmake_path(HAS_PARENT_PATH lib LIB_IS_PATH) @@ -127,13 +157,13 @@ macro(linklibs_from_list LINK_LIBRARIES LIBRARY_LIST) string(PREPEND lib "-l") endif() - set(LIBRARY_LIST_OUT "${LIBRARY_LIST_OUT} ${lib}") + set(LINKLIBS_FROM_LIST_OUT "${LINKLIBS_FROM_LIST_OUT} ${lib}") endforeach() #message("LIBRARY_LIST_OUT: ${LIBRARY_LIST_OUT}") - set(${LINK_LIBRARIES} "${LIBRARY_LIST_OUT}") + set(${LINK_LIBRARIES} "${LINKLIBS_FROM_LIST_OUT}") #message("LINK_LIBRARIES: ${${LINK_LIBRARIES}}") @@ -433,6 +463,7 @@ linklibdirs_from_list(Boost_LIBDIRS_FLAGS Boost_LIBRARY_DIRS) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${Boost_LIBDIRS_FLAGS}") liblist_strip_namespace(Boost_LIBRARIES "boost_") +liblist_strip_paths(Boost_LIBRARIES) linklibs_from_list(Boost_LIBRARIES_FLAGS Boost_LIBRARIES) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${Boost_LIBRARIES_FLAGS}") From 022fb97b26cac314d15ca103ca6765bc45aba919 Mon Sep 17 00:00:00 2001 From: Jared Males Date: Wed, 20 May 2026 18:10:48 -0700 Subject: [PATCH 3/3] more pc file formatting cleanup --- CMakeLists.txt | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1297d0c81..de962c606 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,6 +74,19 @@ macro(linklibdirs_from_list LINK_LIBDIRS LIBDIR_LIST) endmacro() +## macro include_dirs_to_cflags + # Turn list of include directories into a -I delimited string for compilation + # + # First: INCLUDE_CFLAGS: output string + # Second: INCLUDE_DIRS_LIST: input list to process + # +macro(include_dirs_to_cflags INCLUDE_CFLAGS INCLUDE_DIRS_LIST) + + string(REPLACE ";" " -I" ${INCLUDE_CFLAGS} "${${INCLUDE_DIRS_LIST}}") + set(${INCLUDE_CFLAGS} "-I${${INCLUDE_CFLAGS}}") + +endmacro() + ## Extract the library name from a path # e.g. /path/to/libname.so produces name # @@ -482,7 +495,8 @@ add_compile_definitions(EIGEN_DONT_PARALLELIZE) set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} -I${EIGEN3_INCLUDE_DIRS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER}") -set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${EIGEN3_INCLUDE_DIRS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER} -DEIGEN_DONT_PARALLELIZE") +include_dirs_to_cflags(EIGEN3_INCLUDE_CFLAGS EIGEN3_INCLUDE_DIRS) +set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${EIGEN3_INCLUDE_CFLAGS} ${EIGEN3_CFLAGS} ${EIGEN3_CFLAGS_OTHER} -DEIGEN_DONT_PARALLELIZE") set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${EIGEN3_LDFLAGS}") ############################################ @@ -498,7 +512,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw") target_link_libraries(mxlib-static PUBLIC PkgConfig::FFTW3) set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3_CFLAGS} ${FFTW3_CFLAGS_OTHER}") - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3_INCLUDE_DIRS}") + include_dirs_to_cflags(FFTW3_INCLUDE_CFLAGS FFTW3_INCLUDE_DIRS) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3_INCLUDE_CFLAGS}") linklibdirs_from_list(FFTW3_LIBDIRS_FLAGS FFTW3_LIBRARY_DIRS) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3_LIBDIRS_FLAGS}") @@ -514,7 +529,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw") target_link_libraries(mxlib-static PUBLIC PkgConfig::FFTW3F) set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3F_CFLAGS} ${FFTW3F_CFLAGS_OTHER}") - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3F_INCLUDE_DIRS}") + include_dirs_to_cflags(FFTW3F_INCLUDE_CFLAGS FFTW3F_INCLUDE_DIRS) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3F_INCLUDE_CFLAGS}") linklibdirs_from_list(FFTW3F_LIBDIRS_FLAGS FFTW3F_LIBRARY_DIRS) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3F_LIBDIRS_FLAGS}") @@ -530,7 +546,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw") target_link_libraries(mxlib-static PUBLIC PkgConfig::FFTW3L) set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3L_CFLAGS} ${FFTW3L_CFLAGS_OTHER}") - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${FFTW3L_INCLUDE_DIRS}") + include_dirs_to_cflags(FFTW3L_INCLUDE_CFLAGS FFTW3L_INCLUDE_DIRS) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${FFTW3L_INCLUDE_CFLAGS}") linklibdirs_from_list(FFTW3L_LIBDIRS_FLAGS FFTW3L_LIBRARY_DIRS) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTWL_LIBDIRS_FLAGS}") @@ -549,7 +566,8 @@ if(${MXLIB_USE_FFT_FROM} STREQUAL "fftw") target_link_libraries(mxlib-static PUBLIC PkgConfig::FFTW3Q) set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${FFTW3Q_CFLAGS} ${FFTW3Q_CFLAGS_OTHER}") - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DHAS_QUAD -I${FFTW3Q_INCLUDE_DIRS}") + include_dirs_to_cflags(FFTW3Q_INCLUDE_CFLAGS FFTW3Q_INCLUDE_DIRS) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DHAS_QUAD ${FFTW3Q_INCLUDE_CFLAGS}") linklibdirs_from_list(FFTW3Q_LIBDIRS_FLAGS FFTW3Q_LIBRARY_DIRS) set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} ${FFTW3Q_LIBDIRS_FLAGS}") @@ -593,7 +611,8 @@ if(${MXLIB_USE_BLAS_FROM} STREQUAL "mkl") set(MXLIB_NVCCXX_FLAGS "${MXLIB_NVCCXX_FLAGS} ${MXLIB_MKL_CFLAGS}") - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -I${MXLIB_MKL_INCLUDE_DIRECTORY} ${MXLIB_MKL_DEFINITIONS} ${MXLIB_MKL_CFLAGS}" ) + include_dirs_to_cflags(MXLIB_MKL_INCLUDE_CFLAGS MXLIB_MKL_INCLUDE_DIRECTORY) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} ${MXLIB_MKL_INCLUDE_CFLAGS} ${MXLIB_MKL_DEFINITIONS} ${MXLIB_MKL_CFLAGS}" ) linklibdirs_from_list(MXLIB_MKL_LIBDIRS_FLAGS MXLIB_MKL_LIBDIRS) linklibs_from_list(MXLIB_MKL_LIBS_FLAGS MXLIB_MKL_LIBS) @@ -779,7 +798,8 @@ if(MXLIB_USE_CUDA) set(CMAKE_CUDA_STANDARD 20) #set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA -I${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}") + include_dirs_to_cflags(CUDA_INCLUDE_CFLAGS CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES) + set(MXLIB_PC_CFLAGS "${MXLIB_PC_CFLAGS} -DEIGEN_NO_CUDA -DMXLIB_CUDA ${CUDA_INCLUDE_CFLAGS}") set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} -L${CUDAToolkit_LIBRARY_DIR}") set(MXLIB_PC_LDFLAGS "${MXLIB_PC_LDFLAGS} -l${CUDA_cudart_LIBNAME}")