Skip to content

Commit 4210490

Browse files
authored
Merge pull request #44 from kokkos/develop
Merge develop into master to create release to be tagged as 0.4.0
2 parents 53ea986 + 42b9bbd commit 4210490

31 files changed

+5521
-315
lines changed

CMakeLists.txt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
cmake_minimum_required(VERSION 3.17)
22
set(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

65
set(default_build_type "RelWithDebInfo")
76
set(BUILD_SHARED_LIBS OFF)
@@ -16,29 +15,13 @@ include(CheckFortranCompilerFlag)
1615
include(CheckCXXCompilerFlag)
1716
include(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

3922
add_link_options(LINKER:--disable-new-dtags)
4023

41-
24+
#flcl-fortran library
4225
add_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
)
5840
set_target_properties(
5941
flcl-fortran
6042
PROPERTIES
6143
Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod"
6244
)
6345

46+
#flcl-cxx library
6447
add_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}")
6957
target_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
9080
include(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

9287
write_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
10394
install(
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)
112101
install(
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
118118
if(BUILD_TESTING)
119119
add_subdirectory(test)
120120
endif()

examples/01-axpy-ndarray/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
add_executable(example-axpy-ndarray axpy-ndarray-main.F90 axpy-ndarray-f.f90 axpy-ndarray-cxx.cc)
2+
set_target_properties(
3+
example-axpy-ndarray
4+
PROPERTIES
5+
Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod"
6+
)
27
target_include_directories(example-axpy-ndarray
38
PUBLIC
49
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
@@ -11,7 +16,7 @@ target_include_directories(example-axpy-ndarray
1116
${CMAKE_CURRENT_SOURCE_DIR}
1217
${CMAKE_CURRENT_SOURCE_DIR}/../../src
1318
)
14-
target_link_libraries(example-axpy-ndarray ${PROJECT_LIBS} FLCL::flcl)
19+
target_link_libraries(example-axpy-ndarray ${PROJECT_LIBS} flcl::flcl)
1520
if (CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
1621
target_link_options(example-axpy-ndarray PRIVATE LINKER:-lxlf90_r)
1722
endif()
@@ -21,4 +26,4 @@ endif()
2126
set(RPATHS "$ENV{LD_LIBRARY_PATH}")
2227
set_target_properties(example-axpy-ndarray PROPERTIES
2328
BUILD_WITH_INSTALL_RPATH True
24-
INSTALL_RPATH "${RPATHS}")
29+
INSTALL_RPATH "${RPATHS}")

examples/02-axpy-dualview/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
add_executable(example-axpy-dualview axpy-dualview-main.F90 axpy-dualview-f.f90 axpy-dualview-cxx.cc)
2+
set_target_properties(
3+
example-axpy-dualview
4+
PROPERTIES
5+
Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod"
6+
)
27
target_include_directories(example-axpy-dualview
38
PUBLIC
49
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
@@ -11,7 +16,7 @@ target_include_directories(example-axpy-dualview
1116
${CMAKE_CURRENT_SOURCE_DIR}
1217
${CMAKE_CURRENT_SOURCE_DIR}/../../src
1318
)
14-
target_link_libraries(example-axpy-dualview ${PROJECT_LIBS} FLCL::flcl)
19+
target_link_libraries(example-axpy-dualview ${PROJECT_LIBS} flcl::flcl)
1520
if (CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
1621
target_link_options(example-axpy-dualview PRIVATE LINKER:-lxlf90_r)
1722
endif()

examples/03-axpy-view/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
add_executable(example-axpy-view axpy-view-main.F90 axpy-view-f.f90 axpy-view-cxx.cc)
2+
set_target_properties(
3+
example-axpy-view
4+
PROPERTIES
5+
Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod"
6+
)
27
target_include_directories(example-axpy-view
38
PUBLIC
49
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
@@ -11,7 +16,7 @@ target_include_directories(example-axpy-view
1116
${CMAKE_CURRENT_SOURCE_DIR}
1217
${CMAKE_CURRENT_SOURCE_DIR}/../../src
1318
)
14-
target_link_libraries(example-axpy-view ${PROJECT_LIBS} FLCL::flcl)
19+
target_link_libraries(example-axpy-view ${PROJECT_LIBS} flcl::flcl)
1520
if (CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
1621
target_link_options(example-axpy-view PRIVATE LINKER:-lxlf90_r)
1722
endif()

examples/04-complex-ndarray/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
add_executable(example-complex-ndarray complex-ndarray-main.F90 complex-ndarray-f.f90 complex-ndarray-cxx.cc)
2+
set_target_properties(
3+
example-complex-ndarray
4+
PROPERTIES
5+
Fortran_MODULE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/mod"
6+
)
27
target_include_directories(example-complex-ndarray
38
PUBLIC
49
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/mod>
@@ -11,7 +16,7 @@ target_include_directories(example-complex-ndarray
1116
${CMAKE_CURRENT_SOURCE_DIR}
1217
${CMAKE_CURRENT_SOURCE_DIR}/../../src
1318
)
14-
target_link_libraries(example-complex-ndarray ${PROJECT_LIBS} FLCL::flcl)
19+
target_link_libraries(example-complex-ndarray ${PROJECT_LIBS} flcl::flcl)
1520
if (CMAKE_Fortran_COMPILER_ID STREQUAL "XL")
1621
target_link_options(example-complex-ndarray PRIVATE LINKER:-lxlf90_r)
1722
endif()

0 commit comments

Comments
 (0)