From a40b5dcd741d0e6afc431271f48439a670cc5474 Mon Sep 17 00:00:00 2001 From: Andrew Noyes Date: Mon, 8 Apr 2024 15:21:40 -0700 Subject: [PATCH] Add script to build .pkg file for macos --- CMakeLists.txt | 19 +++++++++++++++++++ package_macos.sh | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 package_macos.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f52bed..83dd312 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,8 @@ project( LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) +file(WRITE ${CMAKE_BINARY_DIR}/version.txt ${PROJECT_VERSION}) + include(CMakePushCheckState) include(CheckCXXCompilerFlag) include(CheckIncludeFileCXX) @@ -333,6 +335,7 @@ endif() # packaging set(CPACK_PACKAGE_CONTACT andrew@weaselab.dev) +set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME all) set(CPACK_PACKAGE_VENDOR "Weaselab") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") @@ -353,6 +356,19 @@ else() set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.14)") endif() +# macos +if(APPLE) + find_program(PANDOC_EXE pandoc) + if(PANDOC_EXE) + execute_process(COMMAND ${PANDOC_EXE} ${CMAKE_SOURCE_DIR}/README.md -o + ${CMAKE_BINARY_DIR}/README.txt) + set(CPACK_RESOURCE_FILE_README ${CMAKE_BINARY_DIR}/README.txt) + endif() + configure_file(${CMAKE_SOURCE_DIR}/LICENSE ${CMAKE_BINARY_DIR}/LICENSE.txt + COPYONLY) + set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_BINARY_DIR}/LICENSE.txt) +endif() + include(CPack) include(GNUInstallDirs) @@ -377,8 +393,11 @@ install( ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}) install(EXPORT ${PROJECT_NAME}Config DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake) + +cpack_add_component(all) diff --git a/package_macos.sh b/package_macos.sh new file mode 100755 index 0000000..c287b01 --- /dev/null +++ b/package_macos.sh @@ -0,0 +1,33 @@ +#!/bin/bash + +set -euxo pipefail + +umask 022 + +SRC_DIR="${0%/*}" +BUILD_ARM="$(mktemp -d -t conflict-set-arm)" +BUILD_X86="$(mktemp -d -t conflict-set-x86)" + +cmake_args=(-DCMAKE_CXX_FLAGS=-DNVALGRIND -DCPACK_PACKAGING_INSTALL_PREFIX=/usr/local) + +cmake -S"$SRC_DIR" -B"$BUILD_ARM" -DCMAKE_OSX_ARCHITECTURES=arm64 "${cmake_args[@]}" +cmake --build "$BUILD_ARM" --target conflict-set --target conflict-set-static + +cmake -S"$SRC_DIR" -B"$BUILD_X86" -DCMAKE_OSX_ARCHITECTURES=x86_64 "${cmake_args[@]}" +cmake --build "$BUILD_X86" --target conflict-set --target conflict-set-static + +VERSION="$(cat "$BUILD_ARM/version.txt")" + +lipo -create "$BUILD_ARM/radix_tree/libconflict-set.$VERSION.dylib" "$BUILD_X86/radix_tree/libconflict-set.$VERSION.dylib" -output "libconflict-set.$VERSION.dylib.tmp" +lipo -create "$BUILD_ARM"/libconflict-set-static.a "$BUILD_X86"/libconflict-set-static.a -output libconflict-set-static.a.tmp + +mv "libconflict-set.$VERSION.dylib.tmp" "$BUILD_ARM/radix_tree/libconflict-set.$VERSION.dylib" +mv libconflict-set-static.a.tmp "$BUILD_ARM/libconflict-set-static.a" + +pushd "$BUILD_ARM" +cpack -G productbuild +popd + +mv "$BUILD_ARM/conflict-set-$VERSION-Darwin.pkg" . + +rm -rf "$BUILD_ARM" "$BUILD_X86"