diff --git a/external/cutt.cmake b/external/cutt.cmake index 942d4f5b07..4023f2b43c 100644 --- a/external/cutt.cmake +++ b/external/cutt.cmake @@ -42,6 +42,7 @@ else() set(CUTT_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_DIR} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} + -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} @@ -102,11 +103,22 @@ else() BUILD_COMMAND ${CMAKE_COMMAND} --build . --target cutt -v BUILD_BYPRODUCTS ${CUTT_BUILD_BYPRODUCTS} #--Install step--------------- - INSTALL_COMMAND cmake -E echo "Skipping default install step." + INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "cuTT will be installed during TiledArray's installation." #--Custom targets------------- STEP_TARGETS build ) + # do install of cuTT as part of building TiledArray's install target + install(CODE + "execute_process( + COMMAND \"${CMAKE_COMMAND}\" \"--build\" \".\" \"--target\" \"install\" + WORKING_DIRECTORY \"${EXTERNAL_BUILD_DIR}\" + RESULT_VARIABLE error_code) + if(error_code) + message(FATAL_ERROR \"Failed to install cuTT\") + endif() + ") + # Add cuTT dependency to External add_dependencies(External-tiledarray cutt-build) diff --git a/external/umpire.cmake b/external/umpire.cmake index 54f5ded0d9..6c2d49b7f5 100644 --- a/external/umpire.cmake +++ b/external/umpire.cmake @@ -43,6 +43,7 @@ else() set(UMPIRE_CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${EXTERNAL_INSTALL_DIR} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} + -DCMAKE_POSITION_INDEPENDENT_CODE=${CMAKE_POSITION_INDEPENDENT_CODE} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} @@ -108,11 +109,22 @@ else() BUILD_COMMAND ${CMAKE_COMMAND} --build . -v BUILD_BYPRODUCTS ${UMPIRE_BUILD_BYPRODUCTS} #--Install step--------------- - INSTALL_COMMAND cmake -E echo "Skipping default install step." + INSTALL_COMMAND ${CMAKE_COMMAND} -E echo "Umpire will be installed during TiledArray's installation." #--Custom targets------------- STEP_TARGETS build ) + # do install of Umpire as part of building TiledArray's install target + install(CODE + "execute_process( + COMMAND \"${CMAKE_COMMAND}\" \"--build\" \".\" \"--target\" \"install\" + WORKING_DIRECTORY \"${EXTERNAL_BUILD_DIR}\" + RESULT_VARIABLE error_code) + if(error_code) + message(FATAL_ERROR \"Failed to install Umpire\") + endif() + ") + # Add Umpire dependency to External add_dependencies(External-tiledarray Umpire-build) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8ba82b06d7..79fd5bb6d6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -258,21 +258,9 @@ add_library(tiledarray ${TILEDARRAY_SOURCE_FILES} ${TILEDARRAY_HEADER_FILES}) target_link_libraries(${targetname} PUBLIC MADworld) target_link_libraries(${targetname} PUBLIC Boost::boost) - if (TARGET build-madness) - add_dependencies(${targetname} build-madness) - endif () - if (TARGET eigen3) - add_dependencies(${targetname} eigen3) - endif () - if (TARGET btas) - add_dependencies(${targetname} btas) - endif () - if (TARGET cutt) - add_dependencies(${targetname} cutt) - endif () - if (TARGET Umpire) - add_dependencies(${targetname} Umpire) - endif () + # build all external deps before building tiledarray + add_dependencies(${targetname} External-tiledarray) + # append current CMAKE_CXX_FLAGS string(REPLACE " " ";" CMAKE_CXX_FLAG_LIST "${CMAKE_CXX_FLAGS}") target_compile_options(${targetname} PUBLIC ${CMAKE_CXX_FLAG_LIST})