Skip to content

Commit

Permalink
First work for support for COMPONENT in cmake find_package
Browse files Browse the repository at this point in the history
  • Loading branch information
jbigot committed Jul 23, 2019
1 parent 26360a0 commit fef6676
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 5 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ set(USE_YAML SYSTEM CACHE STRING "version of yaml to use, SYSTEM and EMBEDDE
## Options handling

if("${USE_YAML}" STREQUAL EMBEDDED)
set(YAML_PATH "${PARACONF_DISTRIB_SOURCE_DIR}/vendor/libyaml-0.2.1.tar")
set(YAML_PATH "${PARACONF_DISTRIB_SOURCE_DIR}/vendor/libyaml-0.2.2.tar")
else()
set(YAML_PATH "${USE_YAML}")
endif()
Expand Down
9 changes: 5 additions & 4 deletions paraconf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ endif()
include(GenerateExportHeader)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
set(INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/paraconf/cmake") # not provided by GNUInstallDirs


# Dependencies
Expand Down Expand Up @@ -91,11 +92,12 @@ set_property(TARGET paraconf PROPERTY VERSION ${paraconf_VERSION})
set_property(TARGET paraconf PROPERTY SOVERSION ${paraconf_VERSION_MAJOR})
set_property(TARGET paraconf PROPERTY paraconf_MAJOR_VERSION ${paraconf_VERSION_MAJOR})
set_property(TARGET paraconf APPEND PROPERTY COMPATIBLE_INTERFACE_STRING paraconf_MAJOR_VERSION)
install(TARGETS paraconf EXPORT PC_export
install(TARGETS paraconf EXPORT paraconf_export
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
install(EXPORT paraconf_export NAMESPACE "paraconf::" DESTINATION "${INSTALL_CMAKEDIR}" FILE paraconf.cmake)
install(FILES include/paraconf.h "${paraconf_BINARY_DIR}/paraconf_export.h"
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
)
Expand All @@ -120,11 +122,12 @@ if("${ENABLE_FORTRAN}")
set(COMPILER_FVER "${CMAKE_Fortran_COMPILER_VERSION}")
endif()
set(INSTALL_FINCLUDEDIR "${CMAKE_INSTALL_LIBDIR}/${COMPILER_FID}/${CMAKE_Fortran_LIBRARY_ARCHITECTURE}/${COMPILER_FVER}/finclude" CACHE PATH "Fortran module files (LIBDIR/${COMPILER_FID}/${CMAKE_Fortran_LIBRARY_ARCHITECTURE}/${COMPILER_FVER}/finclude)")
install(TARGETS paraconf_f90 EXPORT PC_export
install(TARGETS paraconf_f90 EXPORT paraconf_f90_export
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
INCLUDES DESTINATION "${INSTALL_FINCLUDEDIR}"
)
install(EXPORT paraconf_f90_export NAMESPACE "paraconf::" DESTINATION "${INSTALL_CMAKEDIR}" FILE paraconf_f90.cmake)
install(DIRECTORY "${paraconf_BINARY_DIR}/fortran_inc/"
DESTINATION "${INSTALL_FINCLUDEDIR}"
)
Expand All @@ -144,12 +147,10 @@ endif()

# Installable config

set(INSTALL_CMAKEDIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}-${paraconf_VERSION}/cmake")
write_basic_package_version_file("${paraconf_BINARY_DIR}/paraconf/paraconfConfigVersion.cmake"
VERSION ${paraconf_VERSION}
COMPATIBILITY AnyNewerVersion
)
install(EXPORT PC_export NAMESPACE "paraconf::" DESTINATION "${INSTALL_CMAKEDIR}" FILE paraconf.cmake)
install(FILES
cmake/paraconfConfig.cmake
"${paraconf_BINARY_DIR}/paraconf/paraconfConfigVersion.cmake"
Expand Down
26 changes: 26 additions & 0 deletions paraconf/cmake/paraconfConfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,30 @@ list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}")
find_dependency(Threads)
find_dependency(yaml)

# by default, if no component is specified, look for all
if("xx" STREQUAL "x${paraconf_FIND_COMPONENTS}x")
set(paraconf_FIND_COMPONENTS C f90)
endif()

# we always look for C
list(REMOVE_ITEM paraconf_FIND_COMPONENTS C)
include("${CMAKE_CURRENT_LIST_DIR}/paraconf.cmake")
if(NOT TARGET paraconf::paraconf)
set(paraconf_FOUND "FALSE")
if(NOT "${paraconf_FIND_QUIETLY}")
message("paraconf: component \"C\" not found")
endif()
endif()

# currently, only f90 is supported
foreach(_paraconf_ONE_COMPONENT ${paraconf_FIND_COMPONENTS})
include("${CMAKE_CURRENT_LIST_DIR}/paraconf_${_paraconf_ONE_COMPONENT}.cmake" OPTIONAL)
if(NOT TARGET "paraconf::paraconf_${_paraconf_ONE_COMPONENT}")
if("${paraconf_FIND_REQUIRED_${_paraconf_ONE_COMPONENT}}")
set(paraconf_FOUND "FALSE")
endif()
if(NOT "${paraconf_FIND_QUIETLY}")
message("paraconf: component \"${_paraconf_ONE_COMPONENT}\" not found")
endif()
endif()
endforeach()
Binary file not shown.

0 comments on commit fef6676

Please sign in to comment.