Skip to content

Commit fbd2521

Browse files
committed
packaging
1 parent d448582 commit fbd2521

6 files changed

Lines changed: 82 additions & 8 deletions

File tree

CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
cmake_minimum_required(VERSION 3.14...3.20)
22

3-
project(MapTran
3+
project(maptran
44
LANGUAGES Fortran
5-
VERSION 1.1.2
5+
VERSION 1.1.3
66
HOMEPAGE_URL https://github.com/geospace-code/maptran3d)
77

88
include(CTest)
@@ -21,3 +21,5 @@ add_subdirectory(src)
2121
if(BUILD_TESTING)
2222
add_subdirectory(src/tests)
2323
endif()
24+
25+
include(cmake/install.cmake)

cmake/.cpack_ignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
\\.git/
2+
\\.git*
3+
\\.vscode/
4+
\\.mypy_cache/
5+
6+
_CPack_Packages/
7+
build*/
8+
paper/

cmake/Config.cmake.in

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
@PACKAGE_INIT@
2+
3+
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
4+
5+
check_required_components(@PROJECT_NAME@)

cmake/install.cmake

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# --- BOILERPLATE: install / packaging
2+
3+
include(CMakePackageConfigHelpers)
4+
5+
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in
6+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
7+
INSTALL_DESTINATION lib)
8+
9+
write_basic_package_version_file(
10+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
11+
VERSION ${${PROJECT_NAME}_VERSION}
12+
COMPATIBILITY SameMinorVersion
13+
)
14+
15+
install(EXPORT ${PROJECT_NAME}Targets
16+
FILE ${PROJECT_NAME}Targets.cmake
17+
NAMESPACE ${PROJECT_NAME}::
18+
DESTINATION lib/cmake/${PROJECT_NAME}
19+
)
20+
21+
install(FILES
22+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Config.cmake
23+
${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}ConfigVersion.cmake
24+
DESTINATION lib/cmake/${PROJECT_NAME})
25+
26+
export(EXPORT ${PROJECT_NAME}Targets
27+
FILE ${CMAKE_CURRENT_BINARY_DIR}/cmake/${PROJECT_NAME}Targets.cmake
28+
NAMESPACE ${PROJECT_NAME}::
29+
)
30+
31+
# --- CPack
32+
33+
set(_fmt TGZ)
34+
if(WIN32)
35+
set(_fmt ZIP)
36+
endif()
37+
set(CPACK_GENERATOR ${_fmt})
38+
set(CPACK_SOURCE_GENERATOR ${_fmt})
39+
set(CPACK_PACKAGE_VENDOR "Michael Hirsch")
40+
set(CPACK_PACKAGE_CONTACT "Michael Hirsch")
41+
set(CPACK_DEBIAN_PACKAGE_DEPENDS)
42+
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
43+
set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
44+
set(CPACK_OUTPUT_FILE_PREFIX "${CMAKE_CURRENT_BINARY_DIR}/package")
45+
set(CPACK_PACKAGE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
46+
47+
# not .gitignore as its regex syntax is more advanced than CMake
48+
file(READ ${CMAKE_CURRENT_LIST_DIR}/.cpack_ignore _cpack_ignore)
49+
string(REGEX REPLACE "\n" ";" _cpack_ignore ${_cpack_ignore})
50+
set(CPACK_SOURCE_IGNORE_FILES "${_cpack_ignore}")
51+
52+
install(FILES ${CPACK_RESOURCE_FILE_README} ${CPACK_RESOURCE_FILE_LICENSE}
53+
DESTINATION share/docs/${PROJECT_NAME})
54+
55+
include(CPack)

src/CMakeLists.txt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
1-
configure_file(maptran.in.f90 maptran.f90)
2-
configure_file(vallado.in.f90 vallado.f90)
1+
configure_file(maptran.in.f90 maptran.f90 @ONLY)
2+
configure_file(vallado.in.f90 vallado.f90 @ONLY)
33

44
add_library(maptran)
55
target_sources(maptran PRIVATE
66
${CMAKE_CURRENT_BINARY_DIR}/maptran.f90 ${CMAKE_CURRENT_BINARY_DIR}/vallado.f90
77
aer.f90 ecef.f90 enu.f90 sphere.f90 utils.f90)
88

9-
target_include_directories(maptran INTERFACE
9+
target_include_directories(maptran
10+
PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/include
11+
INTERFACE
1012
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
1113
$<INSTALL_INTERFACE:include>)
1214

@@ -15,8 +17,10 @@ set_target_properties(maptran PROPERTIES
1517
LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}
1618
Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include)
1719

18-
add_library(maptran::maptran ALIAS maptran)
20+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/include/maptran.mod
21+
DESTINATION include)
1922

2023
install(TARGETS maptran
24+
EXPORT ${PROJECT_NAME}Targets
2125
ARCHIVE DESTINATION lib
2226
LIBRARY DESTINATION lib)

src/tests/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
add_executable(test_maptran)
22
target_sources(test_maptran PRIVATE test_mod.f90 assert.f90)
3-
target_link_libraries(test_maptran maptran::maptran)
3+
target_link_libraries(test_maptran PRIVATE maptran)
44
add_test(NAME unit:maptran COMMAND $<TARGET_FILE:test_maptran>)
55
set_target_properties(test_maptran PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
66

77
add_executable(benchmark_maptran benchmark.f90)
8-
target_link_libraries(benchmark_maptran maptran::maptran)
8+
target_link_libraries(benchmark_maptran PRIVATE maptran)
99
set_target_properties(benchmark_maptran PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})

0 commit comments

Comments
 (0)