diff --git a/CMakeLists.txt b/CMakeLists.txt index d9c7c66..909235f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,52 +29,45 @@ if (WAVES2AMR_GPU_BACKEND STREQUAL "CUDA") include(AMReXTargetHelpers) endif () -add_library(waves_2_amr OBJECT) -if (BUILD_SHARED_LIBS) - set_target_properties(waves_2_amr PROPERTIES POSITION_INDEPENDENT_CODE ON) -endif() -target_link_libraries(waves_2_amr PUBLIC AMReX::amrex) +add_library(${PROJECT_NAME}) +set_target_properties(${PROJECT_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) +target_link_libraries(${PROJECT_NAME} PUBLIC AMReX::amrex) find_package(FFTW REQUIRED) -target_link_libraries(waves_2_amr PUBLIC FFTW::FFTW) +target_link_libraries(${PROJECT_NAME} PUBLIC FFTW::FFTW) add_subdirectory(src) add_subdirectory(include) if (WAVES2AMR_GPU_BACKEND STREQUAL "CUDA") - setup_target_for_cuda_compilation(waves_2_amr) + setup_target_for_cuda_compilation(${PROJECT_NAME}) endif () include(CMakePackageConfigHelpers) include(GNUInstallDirs) -add_library(waves_2_amr_api) -target_link_libraries(waves_2_amr_api PUBLIC waves_2_amr) -add_library(${PROJECT_NAME}::waves_2_amr_api ALIAS waves_2_amr) -add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS waves_2_amr) - -get_target_property(WAVES2AMR_INCLUDES waves_2_amr SOURCES) +get_target_property(WAVES2AMR_INCLUDES ${PROJECT_NAME} SOURCES) list(FILTER WAVES2AMR_INCLUDES INCLUDE REGEX "\\.h") set_target_properties( - waves_2_amr PROPERTIES PUBLIC_HEADER "${WAVES2AMR_INCLUDES}") + ${PROJECT_NAME} PROPERTIES PUBLIC_HEADER "${WAVES2AMR_INCLUDES}") -install( - TARGETS waves_2_amr_api waves_2_amr +add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME}) + +install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib - INCLUDES DESTINATION include - PUBLIC_HEADER DESTINATION include + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} ) - install( EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) configure_package_config_file( - ${PROJECT_NAME}Config.cmake.in + ${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) @@ -82,3 +75,6 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) +install(FILES + ${PROJECT_SOURCE_DIR}/cmake/FindFFTW.cmake + DESTINATION ${CMAKE_INSTALL_DATADIR}/cmake/Modules) diff --git a/Waves2AMRConfig.cmake.in b/Waves2AMRConfig.cmake.in deleted file mode 100644 index ad7cea1..0000000 --- a/Waves2AMRConfig.cmake.in +++ /dev/null @@ -1,15 +0,0 @@ -@PACKAGE_INIT@ - -set(WAVES2AMR_MPI @WAVES2AMR_MPI@) -set(WAVES2AMR_GPU_BACKEND @WAVES2AMR_GPU_BACKEND@) - -find_package(AMReX QUIET REQUIRED @AMREX_REQUIRED_COMPONENTS@) - -include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") - -set(@PROJECT_NAME@_INCLUDE_DIRS "${PROJECT_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") -set(@PROJECT_NAME@_LIBRARY_DIRS "${PROJECT_PREFIX_DIR}/@CMAKE_INSTALL_LIBDIR@") -set(@PROJECT_NAME@_LIBRARIES "@PROJECT_NAME@::waves_2_amr_api") - -set(@PROJECT_NAME@_FOUND TRUE) -check_required_components(@PROJECT_NAME@) diff --git a/cmake/Waves2AMRConfig.cmake.in b/cmake/Waves2AMRConfig.cmake.in new file mode 100644 index 0000000..a6251d0 --- /dev/null +++ b/cmake/Waves2AMRConfig.cmake.in @@ -0,0 +1,24 @@ +@PACKAGE_INIT@ + +list(APPEND CMAKE_MODULE_PATH "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_DATADIR@/cmake/Modules") + +set(WAVES2AMR_MPI @WAVES2AMR_MPI@) +set(WAVES2AMR_GPU_BACKEND @WAVES2AMR_GPU_BACKEND@) + +include(CMakeFindDependencyMacro) + +find_dependency(AMReX) + +#This works upstream +include("${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_DATADIR@/cmake/Modules/FindFFTW.cmake") +#This does not and it feels like a bug because it doesn't invoke FindFFTW.cmake at all +#find_dependency(FFTW) + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") + +set(@PROJECT_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") +set(@PROJECT_NAME@_LIBRARY_DIRS "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_LIBDIR@") +set(@PROJECT_NAME@_LIBRARIES "@PROJECT_NAME@::@PROJECT_NAME@") + +set(@PROJECT_NAME@_FOUND TRUE) +check_required_components(@PROJECT_NAME@) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index e150879..690db2b 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -1,5 +1,5 @@ target_include_directories( - waves_2_amr + ${PROJECT_NAME} PUBLIC $ - ) \ No newline at end of file + ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index caac45f..13b141d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,11 +1,11 @@ target_include_directories( - waves_2_amr + ${PROJECT_NAME} PUBLIC $ ) target_sources( - waves_2_amr + ${PROJECT_NAME} PRIVATE read_modes.h read_modes.cpp @@ -14,4 +14,4 @@ target_sources( modes_hosgrid.cpp interp_to_mfab.h interp_to_mfab.cpp - ) \ No newline at end of file + )