11cmake_minimum_required (VERSION 3.17 )
22set (CMAKE_DISABLE_IN_SOURCE_BUILD ON )
3-
4- project (FLCL VERSION 0.3.0 LANGUAGES Fortran C CXX )
3+ project (flcl VERSION 0.4.0 LANGUAGES Fortran C CXX )
54
65set (default_build_type "RelWithDebInfo" )
76set (BUILD_SHARED_LIBS OFF )
@@ -16,29 +15,13 @@ include(CheckFortranCompilerFlag)
1615include (CheckCXXCompilerFlag )
1716include (CheckCCompilerFlag )
1817
19- include (CTest )
20- # use, i.e. don't skip the full RPATH for the build tree
21- #set(CMAKE_SKIP_BUILD_RPATH FALSE)
22-
23- # when building, don't use the install RPATH already
24- # (but later on when installing)
25- #set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
26-
27- #set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
28-
29- # add the automatically determined parts of the RPATH
30- # which point to directories outside the build tree to the install RPATH
31- #set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
18+ include (GNUInstallDirs )
3219
33- # the RPATH to be used when installing, but only if it's not a system directory
34- #list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/lib" isSystemDir)
35- #if("${isSystemDir}" STREQUAL "-1")
36- # set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
37- #endif("${isSystemDir}" STREQUAL "-1")
20+ include (CTest )
3821
3922add_link_options (LINKER:--disable-new-dtags )
4023
41-
24+ # flcl-fortran library
4225add_library (flcl-fortran
4326 OBJECT
4427 src/flcl-ndarray-f.f90
@@ -53,68 +36,85 @@ target_include_directories(flcl-fortran
5336 $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR} /mod >
5437 INTERFACE
5538 $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR} /mod >
56- $<INSTALL_INTERFACE :mod >
5739)
5840set_target_properties (
5941 flcl-fortran
6042 PROPERTIES
6143 Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /mod"
6244)
6345
46+ #flcl-cxx library
6447add_library (flcl-cxx
6548 OBJECT
6649 src/flcl-cxx.cpp
6750 src/flcl-util-cxx.cpp
6851)
52+ set (flcl-cxx-public-headers
53+ ${PROJECT_SOURCE_DIR} /src/flcl-cxx.hpp
54+ ${PROJECT_SOURCE_DIR} /src/flcl-util-cxx.h
55+ )
56+ set_target_properties (flcl-cxx PROPERTIES PUBLIC_HEADER "${flcl-cxx-public-headers}" )
6957target_link_libraries (flcl-cxx
7058 PRIVATE
7159 Kokkos::kokkos
7260)
7361
74- add_library (FLCL
62+ add_library (flcl
7563 STATIC
7664 $<TARGET_OBJECTS :flcl -fortran >
7765 $<TARGET_OBJECTS :flcl -cxx >
7866)
79- target_include_directories (FLCL
67+ set_target_properties (flcl PROPERTIES PUBLIC_HEADER "${flcl-cxx-public-headers}" )
68+ target_include_directories (flcl
8069 INTERFACE
8170 $<BUILD_INTERFACE :${CMAKE_CURRENT_BINARY_DIR} /mod >
82- $<INSTALL_INTERFACE :mod >
71+ $<INSTALL_INTERFACE :${CMAKE_INSTALL_INCLUDEDIR} >
8372)
84- target_link_libraries (FLCL
73+ target_link_libraries (flcl
8574 INTERFACE
8675 Kokkos::kokkos
8776)
88- add_library (FLCL ::flcl ALIAS FLCL )
77+ add_library (flcl ::flcl ALIAS flcl )
8978
79+ #installation section
9080include (CMakePackageConfigHelpers )
81+ configure_package_config_file (
82+ "cmake/flclConfig.cmake.in"
83+ "${PROJECT_BINARY_DIR} /flclConfig.cmake"
84+ INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake"
85+ )
9186
9287write_basic_package_version_file (
9388 "${PROJECT_BINARY_DIR} /flclConfigVersion.cmake"
89+ VERSION "${PROJECT_VERSION} "
9490 COMPATIBILITY SameMinorVersion
9591)
9692
97- configure_package_config_file (
98- "${PROJECT_SOURCE_DIR} /cmake/flclConfig.cmake.in"
99- "${PROJECT_BINARY_DIR} /flclConfig.cmake"
100- INSTALL_DESTINATION lib/cmake/flcl
101- )
102-
93+ # install flcl cmake config files
10394install (
10495 FILES
10596 "${PROJECT_BINARY_DIR} /flclConfigVersion.cmake"
10697 "${PROJECT_BINARY_DIR} /flclConfig.cmake"
107- DESTINATION lib /cmake/flcl
98+ DESTINATION " ${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} "
10899)
109-
110- install (TARGETS FLCL EXPORT flclTargets)
111- install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} /mod DESTINATION .)
100+ install (TARGETS flcl EXPORT flclTargets)
112101install (
113102 EXPORT flclTargets
114- DESTINATION lib/cmake/flcl
115- NAMESPACE FLCL::)
103+ DESTINATION "${CMAKE_INSTALL_LIBDIR} /cmake/${PROJECT_NAME} "
104+ NAMESPACE flcl::
105+ )
106+
107+ # install flcl library and headers
108+ install (
109+ TARGETS flcl
110+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR} "
111+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} "
112+ )
116113
114+ # install flcl module files in include directory
115+ install (DIRECTORY "${CMAKE_CURRENT_BINARY_DIR} /mod/" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR} " )
117116
117+ #unit testing section and toggle
118118if (BUILD_TESTING)
119119 add_subdirectory (test )
120120endif ()
0 commit comments