Skip to content

Commit

Permalink
CMake: Fix export with AMReX_INSTALL=OFF (AMReX-Codes#2838)
Browse files Browse the repository at this point in the history
When introducing `AMReX_INSTALL`, the `export` of targets
broke for `OFF`. This generalizes this to work in either case.
  • Loading branch information
ax3l authored Jun 14, 2022
1 parent 1a2fc3d commit e39b964
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 44 deletions.
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -149,10 +149,10 @@ endif ()
#
# Install amrex -- Export
#
if(AMReX_INSTALL)
include(AMReXInstallHelpers)
install_amrex_targets(${_amrex_targets})
include(AMReXInstallHelpers)
install_amrex_targets(${_amrex_targets})

if(AMReX_INSTALL)
# Add a test_install target to smoke-test
# the installation
add_test_install_target(
Expand Down
84 changes: 43 additions & 41 deletions Tools/CMake/AMReXInstallHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -39,51 +39,53 @@ function (install_amrex_targets)
${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXConfigVersion.cmake
COMPATIBILITY AnyNewerVersion )

install( FILES
${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXConfig.cmake
${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXConfigVersion.cmake
DESTINATION ${CMAKE_FILES_DIR} )

#
# Export install-tree
#
install(
TARGETS ${_targets}
EXPORT AMReXTargets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
INCLUDES DESTINATION include # Adds proper directory to INTERFACE_INCLUDE_DIRECTORIES
PUBLIC_HEADER DESTINATION include
RUNTIME DESTINATION bin
)

install( EXPORT AMReXTargets
NAMESPACE AMReX::
DESTINATION lib/cmake/AMReX )

# Install fortran modules if Fortran is enabled
get_property(_lang GLOBAL PROPERTY ENABLED_LANGUAGES)
if ("Fortran" IN_LIST _lang AND "amrex" IN_LIST _targets)
get_target_property(_mod_dir amrex Fortran_MODULE_DIRECTORY )
install( DIRECTORY ${_mod_dir}/ DESTINATION include ) # Trailing backslash is crucial here!
endif ()

# Install Tools directory
install(
DIRECTORY
${PROJECT_SOURCE_DIR}/Tools/CMake
${PROJECT_SOURCE_DIR}/Tools/C_scripts
${PROJECT_SOURCE_DIR}/Tools/typechecker
DESTINATION
Tools
USE_SOURCE_PERMISSIONS
)
if(AMReX_INSTALL)
install( FILES
${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXConfig.cmake
${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXConfigVersion.cmake
DESTINATION ${CMAKE_FILES_DIR} )

#
# Export install-tree
#
install(
TARGETS ${_targets}
EXPORT AMReXTargets
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
INCLUDES DESTINATION include # Adds proper directory to INTERFACE_INCLUDE_DIRECTORIES
PUBLIC_HEADER DESTINATION include
RUNTIME DESTINATION bin
)

install( EXPORT AMReXTargets
NAMESPACE AMReX::
DESTINATION lib/cmake/AMReX )

# Install fortran modules if Fortran is enabled
get_property(_lang GLOBAL PROPERTY ENABLED_LANGUAGES)
if ("Fortran" IN_LIST _lang AND "amrex" IN_LIST _targets)
get_target_property(_mod_dir amrex Fortran_MODULE_DIRECTORY )
install( DIRECTORY ${_mod_dir}/ DESTINATION include ) # Trailing backslash is crucial here!
endif ()

# Install Tools directory
install(
DIRECTORY
${PROJECT_SOURCE_DIR}/Tools/CMake
${PROJECT_SOURCE_DIR}/Tools/C_scripts
${PROJECT_SOURCE_DIR}/Tools/typechecker
DESTINATION
Tools
USE_SOURCE_PERMISSIONS
)
endif()

#
# Export build-tree
#
export( EXPORT AMReXTargets NAMESPACE AMReX::
FILE ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXTargets.cmake )
export(TARGETS ${_targets} NAMESPACE AMReX::
FILE ${PROJECT_BINARY_DIR}/${CMAKE_FILES_DIR}/AMReXTargets.cmake)

# Copy Tools directory to build tree
file(
Expand Down

0 comments on commit e39b964

Please sign in to comment.