Skip to content

Commit cab7c28

Browse files
authored
Add CPack to CMakeLists.txt for binary and source package generation (#4645)
Add CPack to CMakeLists.txt. All default package exports are enabled for tiledb project so the superbuild's `package` command generates outputs based on the current platform (TGZ for Linux). Usage: - *Superbuild* - `make package` invokes `cpack` inside of the EP tiledb. - *Build* - `cpack` for default behaviour or `cpack -G <GENERATOR>` for specific output - `make package` - `make package_source` Example output from Superbuild's `make package`: ``` TGZ CPack: Create package using TGZ CPack: Install projects CPack: - Run preinstall target for: TileDB CPack: - Install project: TileDB [] CPack: Create package CPack: - package: /mnt/c/Users/dbara/CLionProjects/TileDB/build_superbuild/tiledb/tiledb-linux-x86_64-2.20.0.tar.gz generated. CPack: - checksum file: /mnt/c/Users/dbara/CLionProjects/TileDB/build_superbuild/tiledb/tiledb-linux-x86_64-2.20.0.tar.gz.sha1 generated. ``` --- TYPE: FEATURE DESC: Add CPack to CMakeLists.txt
1 parent 74ebc44 commit cab7c28

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

cmake/TileDB-Superbuild.cmake

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,3 +191,10 @@ if (TILEDB_TESTS)
191191
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tiledb
192192
)
193193
endif()
194+
195+
# make package (.tar.gz for Linux and MacOS, .zip for Windows)
196+
add_custom_target(package
197+
DEPENDS tiledb
198+
COMMAND ${CMAKE_CPACK_COMMAND} --config CPackConfig.cmake -G "$<IF:$<PLATFORM_ID:Windows>,ZIP,TGZ>"
199+
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/tiledb
200+
)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
set(CPACK_SOURCE_IGNORE_FILES ".*\\.git;.*build.*")
2+
3+
set(CPACK_PACKAGE_VENDOR "TileDB Inc.")
4+
set(CPACK_PACKAGE_VERSION "@TILEDB_VERSION@")
5+
6+
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF)
7+
8+
# Append NOAVX2 if needed
9+
if(NOT ${COMPILER_SUPPORTS_AVX2})
10+
set(NOAVX2 "-noavx2")
11+
endif()
12+
13+
# Set output name
14+
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}${NOAVX2}-${CPACK_PACKAGE_VERSION}")
15+
string(TOLOWER ${CPACK_PACKAGE_FILE_NAME} CPACK_PACKAGE_FILE_NAME )
16+
17+
# Enable HASH
18+
set(CPACK_PACKAGE_CHECKSUM "SHA256")

tiledb/CMakeLists.txt

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,3 +1053,21 @@ configure_file(
10531053
)
10541054
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/tiledb.pc
10551055
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
1056+
1057+
# Packaging configuration
1058+
configure_file ("${PROJECT_SOURCE_DIR}/cmake/inputs/CustomCPackOptions.cmake.in"
1059+
"${PROJECT_BINARY_DIR}/CustomCPackOptions.cmake"
1060+
@ONLY)
1061+
set (CPACK_PROJECT_CONFIG_FILE
1062+
"${PROJECT_BINARY_DIR}/CustomCPackOptions.cmake")
1063+
1064+
# Not all options can be set in CustomCPackOptions.cmake
1065+
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
1066+
set(CPACK_SOURCE_GENERATOR "ZIP")
1067+
set(CPACK_GENERATOR "ZIP")
1068+
else()
1069+
set(CPACK_SOURCE_GENERATOR "TGZ")
1070+
set(CPACK_GENERATOR "TGZ")
1071+
endif()
1072+
1073+
include(CPack)

0 commit comments

Comments
 (0)