From fd1d32d3143c879a66828466f64197b64a9d2018 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Sat, 2 Aug 2025 10:22:54 -0500 Subject: [PATCH] Add macOS support #34 --- cmake/settings.cmake | 4 ++++ cmake/versions.cmake | 14 +++++++------- scripts/copy_mingw64_deps.sh | 2 +- scripts/create_containers.sh | 2 +- scripts/deliver.sh | 4 ++-- scripts/docker_common.sh | 2 +- scripts/env.sh | 9 ++++++--- scripts/info.sh | 2 +- scripts/libraries.sh | 2 +- scripts/make_common.sh | 2 +- scripts/make_flutter.sh | 2 +- scripts/make_package.sh | 2 +- scripts/make_unix.sh | 2 +- scripts/make_win32.sh | 2 +- scripts/run_docker_shell.sh | 2 +- scripts/run_tests.sh | 2 +- scripts/setup_msys2.sh | 2 +- scripts/versions.sh | 2 +- support/3rd_party/libsodium_configure.sh | 2 +- support/src/utils/file.cpp | 7 +++++-- 20 files changed, 39 insertions(+), 29 deletions(-) diff --git a/cmake/settings.cmake b/cmake/settings.cmake index 8a0898b8..cd2e6ef9 100644 --- a/cmake/settings.cmake +++ b/cmake/settings.cmake @@ -38,6 +38,10 @@ if(PROJECT_IS_MINGW) /mingw64/lib /mingw64/lib64 ) +elseif(PROJECT_IS_DARWIN) + list(PREPEND CMAKE_PREFIX_PATH + /opt/homebrew/opt/zlib + ) endif() include_directories(BEFORE SYSTEM diff --git a/cmake/versions.cmake b/cmake/versions.cmake index 01c6d81b..7b24f207 100644 --- a/cmake/versions.cmake +++ b/cmake/versions.cmake @@ -1,15 +1,15 @@ set(BINUTILS_VERSION 2.44) -set(BOOST2_MAJOR_VERSION 1) -set(BOOST2_MINOR_VERSION 76) -set(BOOST2_PATCH_VERSION 0) set(BOOST_MAJOR_VERSION 1) set(BOOST_MINOR_VERSION 88) set(BOOST_PATCH_VERSION 0) +set(BOOST2_MAJOR_VERSION 1) +set(BOOST2_MINOR_VERSION 76) +set(BOOST2_PATCH_VERSION 0) set(CPP_HTTPLIB_VERSION 0.23.1) -set(CURL2_VERSION 8_15_0) set(CURL_VERSION 8.15.0) -set(EXPAT2_VERSION 2_7_1) +set(CURL2_VERSION 8_15_0) set(EXPAT_VERSION 2.7.1) +set(EXPAT2_VERSION 2_7_1) set(GCC_VERSION 15.1.0) set(GTEST_VERSION 1.17.0) set(ICU_VERSION 76-1) @@ -22,9 +22,9 @@ set(PKG_CONFIG_VERSION 0.29.2) set(PUGIXML_VERSION 1.15) set(ROCKSDB_VERSION 10.4.2) set(SPDLOG_VERSION 1.15.3) -set(SQLITE2_VERSION 3.50.3) set(SQLITE_VERSION 3500300) +set(SQLITE2_VERSION 3.50.3) set(STDUUID_VERSION 1.2.3) -set(WINFSP2_VERSION 2.1) set(WINFSP_VERSION 2.1.25156) +set(WINFSP2_VERSION 2.1) set(ZLIB_VERSION 1.3.1) diff --git a/scripts/copy_mingw64_deps.sh b/scripts/copy_mingw64_deps.sh index ab905e7e..8f44e5c4 100755 --- a/scripts/copy_mingw64_deps.sh +++ b/scripts/copy_mingw64_deps.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_MINGW64_COPY_DEPENDENCIES=() diff --git a/scripts/create_containers.sh b/scripts/create_containers.sh index 78155f7a..2d785f20 100755 --- a/scripts/create_containers.sh +++ b/scripts/create_containers.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/deliver.sh b/scripts/deliver.sh index 594611ef..9181ff90 100755 --- a/scripts/deliver.sh +++ b/scripts/deliver.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash DEST_DIR=$1 DIST_DIR=$2 @@ -35,7 +35,7 @@ fi pushd "${PROJECT_SOURCE_DIR}" BRANCH=$(git branch --show-current) -RELEASE=$(grep PROJECT_RELEASE_ITER= ./config.sh | sed s/PROJECT_RELEASE_ITER=//g) +RELEASE=$(grep PROJECT_RELEASE_ITER= ./config.sh | ${SED} s/PROJECT_RELEASE_ITER=//g) popd if [ "${BRANCH}" == "master" ] || [ "${BRANCH}" == "alpha" ] || diff --git a/scripts/docker_common.sh b/scripts/docker_common.sh index d0b58ca4..ae0559aa 100755 --- a/scripts/docker_common.sh +++ b/scripts/docker_common.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if [ "${PROJECT_BUILD_ARCH}" == "aarch64" ] && [ "${PROJECT_ENABLE_MULTIARCH_DOCKER}" == "1" ]; then diff --git a/scripts/env.sh b/scripts/env.sh index 638932df..9d8900c5 100755 --- a/scripts/env.sh +++ b/scripts/env.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_BUILD_ARCH=$1 PROJECT_CMAKE_BUILD_TYPE=$2 @@ -59,6 +59,9 @@ PROJECT_STATIC_LINK=OFF if [ "$(uname -s)" == "Darwin" ]; then PROJECT_IS_DARWIN=1 + export SED=gsed +else + export SED=sed fi if [ "${PROJECT_BUILD_ARCH}" == "" ]; then @@ -238,12 +241,12 @@ if [ "${PROJECT_IS_MINGW}" == "1" ] && [ "${PROJECT_IS_MINGW_UNIX}" == "1" ]; th fi if [ -f "${PROJECT_SOURCE_DIR}/cmake/versions.cmake" ]; then - VERSIONS=($(sed -e s/\ /=/g -e s/set\(//g -e s/\)//g "${PROJECT_SOURCE_DIR}/cmake/versions.cmake")) + VERSIONS=($(${SED} -e s/\ /=/g -e s/set\(//g -e s/\)//g "${PROJECT_SOURCE_DIR}/cmake/versions.cmake")) PROJECT_MINGW64_DOCKER_BUILD_ARGS=() for VERSION in "${VERSIONS[@]}"; do - LOOKUP_NAME=$(echo ${VERSION} | sed s/_VERSION.*// | sed s/GTEST/TESTING/g) + LOOKUP_NAME=$(echo ${VERSION} | ${SED} s/_VERSION.*// | sed s/GTEST/TESTING/g) ENABLE_NAME=PROJECT_ENABLE_${LOOKUP_NAME} if [ "${!ENABLE_NAME}" != "OFF" ]; then PROJECT_MINGW64_DOCKER_BUILD_ARGS+=("--build-arg ${VERSION}") diff --git a/scripts/info.sh b/scripts/info.sh index 9dd8dbf7..6cbfc6f8 100755 --- a/scripts/info.sh +++ b/scripts/info.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/libraries.sh b/scripts/libraries.sh index 19f2db1d..660ce959 100755 --- a/scripts/libraries.sh +++ b/scripts/libraries.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_LIBRARIES=( BOOST diff --git a/scripts/make_common.sh b/scripts/make_common.sh index e8b864b9..09c203ed 100755 --- a/scripts/make_common.sh +++ b/scripts/make_common.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/make_flutter.sh b/scripts/make_flutter.sh index 0165e607..3b9973a7 100755 --- a/scripts/make_flutter.sh +++ b/scripts/make_flutter.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/make_package.sh b/scripts/make_package.sh index a6e0ac49..2a2e3f41 100755 --- a/scripts/make_package.sh +++ b/scripts/make_package.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash TEMP_DIR=$(mktemp -d) diff --git a/scripts/make_unix.sh b/scripts/make_unix.sh index d45bab35..4327c829 100755 --- a/scripts/make_unix.sh +++ b/scripts/make_unix.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/make_win32.sh b/scripts/make_win32.sh index b90b276a..009e7ad6 100755 --- a/scripts/make_win32.sh +++ b/scripts/make_win32.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/run_docker_shell.sh b/scripts/run_docker_shell.sh index c2d88aa7..8a08db1a 100755 --- a/scripts/run_docker_shell.sh +++ b/scripts/run_docker_shell.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash DOCKER_NAME=$1 diff --git a/scripts/run_tests.sh b/scripts/run_tests.sh index 03d55c80..4f2483fa 100755 --- a/scripts/run_tests.sh +++ b/scripts/run_tests.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_SCRIPTS_DIR=$(realpath "$0") PROJECT_SCRIPTS_DIR=$(dirname "${PROJECT_SCRIPTS_DIR}") diff --git a/scripts/setup_msys2.sh b/scripts/setup_msys2.sh index 7a91c90d..bc1fab0f 100755 --- a/scripts/setup_msys2.sh +++ b/scripts/setup_msys2.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash PROJECT_MSYS2_PACKAGE_LIST=() diff --git a/scripts/versions.sh b/scripts/versions.sh index c2f09d4e..5d9838f4 100755 --- a/scripts/versions.sh +++ b/scripts/versions.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash declare -A PROJECT_VERSIONS PROJECT_VERSIONS[BINUTILS]="2.44" diff --git a/support/3rd_party/libsodium_configure.sh b/support/3rd_party/libsodium_configure.sh index 6e7a384d..ae92dc45 100755 --- a/support/3rd_party/libsodium_configure.sh +++ b/support/3rd_party/libsodium_configure.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if [ "$1" == "mingw64" ]; then HOST_CFG=--host=x86_64-w64-mingw32 diff --git a/support/src/utils/file.cpp b/support/src/utils/file.cpp index b7ec7160..bfed2c5d 100644 --- a/support/src/utils/file.cpp +++ b/support/src/utils/file.cpp @@ -55,8 +55,11 @@ auto change_to_process_directory() -> bool { std::string path; path.resize(PATH_MAX + 1); #if defined(__APPLE__) - auto res =proc_pidpath(getpid(), reinterpret_cast(path.data()), - static_cast(path.size())); + auto res = proc_pidpath(getpid(), reinterpret_cast(path.data()), + static_cast(path.size())); + if (res == 0) { + path = utils::path::get_parent_path(path) : + } #else // !defined(__APPLE__) auto res = readlink("/proc/self/exe", path.data(), path.size()); if (res == -1) {