diff --git a/CMakeLists.txt b/CMakeLists.txt index 89754e2ab4..a9ea22cf5d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -98,8 +98,6 @@ if (AMR_WIND_ENABLE_W2A) endif() ########################### AMR-Wind ##################################### - -# General information about machine, compiler, and build type message(STATUS "AMR-Wind Information:") message(STATUS "CMAKE_SYSTEM_NAME = ${CMAKE_SYSTEM_NAME}") message(STATUS "CMAKE_CXX_COMPILER_ID = ${CMAKE_CXX_COMPILER_ID}") @@ -114,7 +112,6 @@ set(amr_wind_exe_name "amr_wind") set(amr_wind_unit_test_exe_name "${amr_wind_exe_name}_unit_tests") set(aw_api_lib "amrwind_api") -#Create main target executable add_library(${amr_wind_lib_name} OBJECT) add_library(${aw_api_lib}) add_executable(${amr_wind_exe_name}) @@ -142,7 +139,7 @@ endif() if (AMR_WIND_ENABLE_UMPIRE) set(CMAKE_PREFIX_PATH ${UMPIRE_DIR} ${CMAKE_PREFIX_PATH}) find_package(Umpire REQUIRED) - include_directories(SYSTEM ${UMPIRE_INCLUDE_DIRS}) + target_include_directories(${amr_wind_lib_name} SYSTEM ${UMPIRE_INCLUDE_DIRS}) endif() if(AMR_WIND_ENABLE_HDF5) @@ -208,7 +205,6 @@ if(AMR_WIND_ENABLE_ASCENT) target_compile_definitions(${amr_wind_lib_name} PUBLIC AMR_WIND_USE_ASCENT) endif() -# Link with HELICS module if(AMR_WIND_ENABLE_HELICS) set(CMAKE_PREFIX_PATH ${HELICS_DIR} ${CMAKE_PREFIX_PATH}) find_package(HELICS 3 REQUIRED) @@ -226,17 +222,20 @@ if(AMR_WIND_TEST_WITH_PYTHON) find_package(Python3 REQUIRED COMPONENTS Interpreter) endif() -#Build amr-wind and link to amrex library generate_version_info() add_subdirectory(amr-wind) +target_link_libraries_system(${amr_wind_lib_name} PUBLIC AMReX::amrex AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${amr_wind_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${aw_api_lib} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) + +set_target_properties(${amr_wind_lib_name} buildInfo${amr_wind_lib_name} + PROPERTIES POSITION_INDEPENDENT_CODE ON) + if(AMR_WIND_ENABLE_CUDA) set(awtargets "${amr_wind_lib_name};${amr_wind_exe_name}") foreach(tgt IN LISTS awtargets) set_cuda_build_properties(${tgt}) - # get_target_property(AMR_WIND_SOURCES ${tgt} SOURCES) - # list(FILTER AMR_WIND_SOURCES INCLUDE REGEX "\\.cpp") - # set_source_files_properties(${AMR_WIND_SOURCES} PROPERTIES LANGUAGE CUDA) endforeach() endif() @@ -249,12 +248,6 @@ if(AMR_WIND_ENABLE_UNIT_TESTS OR AMR_WIND_ENABLE_TESTS) add_subdirectory("submods/googletest") add_subdirectory("unit_tests") set_cuda_build_properties(${amr_wind_unit_test_exe_name}) - # if(AMR_WIND_ENABLE_CUDA) - # get_target_property(UTEST_SOURCES ${amr_wind_unit_test_exe_name} SOURCES) - # set_source_files_properties(${UTEST_SOURCES} PROPERTIES LANGUAGE CUDA) - # set_target_properties(${amr_wind_unit_test_exe_name} PROPERTIES - # CUDA_SEPARABLE_COMPILATION ON) - # endif() endif() add_subdirectory(tools) @@ -274,14 +267,14 @@ install( TARGETS ${amr_wind_exe_name} ${aw_api_lib} ${amr_wind_lib_name} buildInfo${amr_wind_lib_name} EXPORT ${PROJECT_NAME}Targets - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(AMR_WIND_ENABLE_UNIT_TESTS OR AMR_WIND_ENABLE_TESTS) install( TARGETS ${amr_wind_unit_test_exe_name} - RUNTIME DESTINATION bin) + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() install( @@ -292,15 +285,15 @@ install( install( EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}:: - DESTINATION lib/cmake/${PROJECT_NAME}) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) configure_package_config_file( cmake/${PROJECT_NAME}Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake - INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}) + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake - DESTINATION lib/cmake/${PROJECT_NAME}) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) install(FILES ${PROJECT_SOURCE_DIR}/cmake/FindMASA.cmake ${PROJECT_SOURCE_DIR}/cmake/FindNetCDF.cmake diff --git a/amr-wind/CMakeLists.txt b/amr-wind/CMakeLists.txt index c68b511d16..a11eb3cbb4 100644 --- a/amr-wind/CMakeLists.txt +++ b/amr-wind/CMakeLists.txt @@ -10,13 +10,11 @@ target_sources(${amr_wind_lib_name} target_sources(${amr_wind_exe_name} PRIVATE main.cpp) -#AMR-Wind include directories target_include_directories(${amr_wind_lib_name} PUBLIC $ $ $) -#Gather all other source files add_subdirectory(core) add_subdirectory(boundary_conditions) add_subdirectory(convection) @@ -38,28 +36,12 @@ add_subdirectory(eos_models) include(AMReXBuildInfo) generate_buildinfo(${amr_wind_lib_name} ${PROJECT_SOURCE_DIR}) -# Generate AMR-Wind version header configure_file("${PROJECT_SOURCE_DIR}/cmake/AMRWindVersion.H.in" "${CMAKE_CURRENT_BINARY_DIR}/AMRWindVersion.H" @ONLY) -target_link_libraries_system(${amr_wind_lib_name} PUBLIC AMReX::amrex AMReX-Hydro::amrex_hydro_api) -target_link_libraries(${amr_wind_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) -target_link_libraries(${aw_api_lib} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) - -if (AMR_WIND_ENABLE_W2A) - target_link_libraries_system(${amr_wind_lib_name} PUBLIC Waves2AMR::waves_2_amr_api) - target_link_libraries(${amr_wind_exe_name} PRIVATE ${amr_wind_lib_name} Waves2AMR::waves_2_amr_api) - target_link_libraries(${aw_api_lib} PUBLIC ${amr_wind_lib_name} Waves2AMR::waves_2_amr_api) -endif() - -# Set -fpic options -set_target_properties(${amr_wind_lib_name} buildInfo${amr_wind_lib_name} - PROPERTIES POSITION_INDEPENDENT_CODE ON) - file(GLOB_RECURSE amr_wind_header_list ${CMAKE_CURRENT_SOURCE_DIR} "*.H") add_custom_target(amr_wind_headers SOURCES ${amr_wind_header_list}) -# Add CMake-generated headers to installation install( FILES ${CMAKE_CURRENT_BINARY_DIR}/AMRWindVersion.H DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) diff --git a/cmake/AMR-WindConfig.cmake.in b/cmake/AMR-WindConfig.cmake.in index 5cb7f92e42..2217e1099e 100644 --- a/cmake/AMR-WindConfig.cmake.in +++ b/cmake/AMR-WindConfig.cmake.in @@ -6,26 +6,21 @@ set(AMR_WIND_ENABLE_W2A @AMR_WIND_ENABLE_W2A@) set(AMR_WIND_ENABLE_MASA @AMR_WIND_ENABLE_MASA@) set(AMR_WIND_ENABLE_NETCDF @AMR_WIND_ENABLE_NETCDF@) -set(AMReX_DIR "${CMAKE_CURRENT_LIST_DIR}/../AMReX") -find_package(AMReX QUIET REQUIRED) +include(CMakeFindDependencyMacro) -set(AMReX-Hydro_DIR "${CMAKE_CURRENT_LIST_DIR}/../AMReX-Hydro") -find_package(AMReX-Hydro QUIET REQUIRED) +find_dependency(AMReX) +find_dependency(AMReX-Hydro) -set(Waves2AMR_DIR "${CMAKE_CURRENT_LIST_DIR}/../Waves2AMR") if (AMR_WIND_ENABLE_W2A) - find_package(Waves2AMR QUIET REQUIRED) + find_dependency(Waves2AMR) endif() -if (${AMR_WIND_ENABLE_MASA}) - set(MASA_DIR @MASA_DIR@) - find_package(MASA QUIET REQUIRED) +if (AMR_WIND_ENABLE_MASA) + find_dependency(MASA) endif() -if (${AMR_WIND_ENABLE_NETCDF}) - set(NetCDF_DIR @NETCDF_DIR@) - set(NETCDF_DIR @NETCDF_DIR@) - find_package(NetCDF QUIET REQUIRED) +if (AMR_WIND_ENABLE_NETCDF) + find_dependency(NetCDF) endif() set(AMR_WIND_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/@CMAKE_INSTALL_INCLUDEDIR@") diff --git a/submods/Waves2AMR b/submods/Waves2AMR index 94b312191f..a9d457c2ad 160000 --- a/submods/Waves2AMR +++ b/submods/Waves2AMR @@ -1 +1 @@ -Subproject commit 94b312191fe28627f6a57548a61e3d4692757958 +Subproject commit a9d457c2adc04c55e650e582f53ce5239c20d3cf diff --git a/tools/utilities/CheckpointToCSV/CMakeLists.txt b/tools/utilities/CheckpointToCSV/CMakeLists.txt index 54f1c3daa0..f119765766 100644 --- a/tools/utilities/CheckpointToCSV/CMakeLists.txt +++ b/tools/utilities/CheckpointToCSV/CMakeLists.txt @@ -8,13 +8,10 @@ target_sources(${tool_exe_name} target_include_directories(${tool_exe_name} PRIVATE $) -target_link_libraries(${tool_exe_name} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${tool_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) if (AMR_WIND_ENABLE_W2A) - target_link_libraries(${tool_exe_name} PUBLIC Waves2AMR::waves_2_amr_api) + target_link_libraries(${tool_exe_name} PRIVATE Waves2AMR::Waves2AMR) endif() set_cuda_build_properties(${tool_exe_name}) -install(TARGETS ${tool_exe_name} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) +install(TARGETS ${tool_exe_name}) diff --git a/tools/utilities/PlotfileToCSV/CMakeLists.txt b/tools/utilities/PlotfileToCSV/CMakeLists.txt index 012548c4f7..22fe30e6d1 100644 --- a/tools/utilities/PlotfileToCSV/CMakeLists.txt +++ b/tools/utilities/PlotfileToCSV/CMakeLists.txt @@ -7,13 +7,10 @@ target_sources(${tool_exe_name} target_include_directories(${tool_exe_name} PRIVATE $) -target_link_libraries(${tool_exe_name} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${tool_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) if (AMR_WIND_ENABLE_W2A) - target_link_libraries(${tool_exe_name} PUBLIC Waves2AMR::waves_2_amr_api) + target_link_libraries(${tool_exe_name} PRIVATE Waves2AMR::Waves2AMR) endif() set_cuda_build_properties(${tool_exe_name}) -install(TARGETS ${tool_exe_name} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) +install(TARGETS ${tool_exe_name}) diff --git a/tools/utilities/coarsen-chkpt/CMakeLists.txt b/tools/utilities/coarsen-chkpt/CMakeLists.txt index 8a601a288f..37c83eb1da 100644 --- a/tools/utilities/coarsen-chkpt/CMakeLists.txt +++ b/tools/utilities/coarsen-chkpt/CMakeLists.txt @@ -8,13 +8,10 @@ target_sources(${tool_exe_name} target_include_directories(${tool_exe_name} PRIVATE $) -target_link_libraries(${tool_exe_name} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${tool_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) if (AMR_WIND_ENABLE_W2A) - target_link_libraries(${tool_exe_name} PUBLIC Waves2AMR::waves_2_amr_api) + target_link_libraries(${tool_exe_name} PRIVATE Waves2AMR::Waves2AMR) endif() set_cuda_build_properties(${tool_exe_name}) -install(TARGETS ${tool_exe_name} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) +install(TARGETS ${tool_exe_name}) diff --git a/tools/utilities/refine-chkpt/CMakeLists.txt b/tools/utilities/refine-chkpt/CMakeLists.txt index 13610ab064..5152c046bd 100644 --- a/tools/utilities/refine-chkpt/CMakeLists.txt +++ b/tools/utilities/refine-chkpt/CMakeLists.txt @@ -8,13 +8,10 @@ target_sources(${tool_exe_name} target_include_directories(${tool_exe_name} PRIVATE $) -target_link_libraries(${tool_exe_name} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${tool_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) if (AMR_WIND_ENABLE_W2A) - target_link_libraries(${tool_exe_name} PUBLIC Waves2AMR::waves_2_amr_api) + target_link_libraries(${tool_exe_name} PRIVATE Waves2AMR::Waves2AMR) endif() set_cuda_build_properties(${tool_exe_name}) -install(TARGETS ${tool_exe_name} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) +install(TARGETS ${tool_exe_name}) diff --git a/unit_tests/CMakeLists.txt b/unit_tests/CMakeLists.txt index 120c3ddf66..05751ed21c 100644 --- a/unit_tests/CMakeLists.txt +++ b/unit_tests/CMakeLists.txt @@ -22,24 +22,18 @@ if(AMR_WIND_ENABLE_MASA) add_subdirectory(mms) endif() -target_compile_options( - ${amr_wind_unit_test_exe_name} PRIVATE +target_compile_options(${amr_wind_unit_test_exe_name} PRIVATE $<$:${AMR_WIND_CXX_FLAGS}>) target_include_directories(${amr_wind_unit_test_exe_name} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) -#Link our unit test executable with GoogleTest #target_link_libraries(${utest_exe_name} PRIVATE GTest::GTest GTest::Main) target_link_libraries(${amr_wind_unit_test_exe_name} PRIVATE gtest) target_include_directories(${amr_wind_unit_test_exe_name} SYSTEM PRIVATE - ${CMAKE_SOURCE_DIR}/submods/googletest/googletest/include) + ${PROJECT_SOURCE_DIR}/submods/googletest/googletest/include) -target_link_libraries(${amr_wind_unit_test_exe_name} PUBLIC ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) +target_link_libraries(${amr_wind_unit_test_exe_name} PRIVATE ${amr_wind_lib_name} AMReX-Hydro::amrex_hydro_api) if (AMR_WIND_ENABLE_W2A) - target_link_libraries(${amr_wind_unit_test_exe_name} PUBLIC Waves2AMR::waves_2_amr_api) + target_link_libraries(${amr_wind_unit_test_exe_name} PRIVATE Waves2AMR::Waves2AMR) endif() -#Define what we want to be installed during a make install -install(TARGETS ${amr_wind_unit_test_exe_name} - RUNTIME DESTINATION bin - ARCHIVE DESTINATION lib - LIBRARY DESTINATION lib) +install(TARGETS ${amr_wind_unit_test_exe_name}) diff --git a/unit_tests/aw_test_utils/CMakeLists.txt b/unit_tests/aw_test_utils/CMakeLists.txt index 9b75b25a51..ca25428452 100644 --- a/unit_tests/aw_test_utils/CMakeLists.txt +++ b/unit_tests/aw_test_utils/CMakeLists.txt @@ -1,6 +1,5 @@ target_sources( ${amr_wind_unit_test_exe_name} PRIVATE - pp_utils.cpp AmrTestMesh.cpp MeshTest.cpp diff --git a/unit_tests/utilities/CMakeLists.txt b/unit_tests/utilities/CMakeLists.txt index d90c23b575..fbb76e115a 100644 --- a/unit_tests/utilities/CMakeLists.txt +++ b/unit_tests/utilities/CMakeLists.txt @@ -1,5 +1,4 @@ target_sources(${amr_wind_unit_test_exe_name} PRIVATE - test_refinement.cpp test_plane_averaging.cpp test_field_plane_averaging.cpp