115 lines
2.5 KiB
Bash
Executable File
115 lines
2.5 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
|
|
# augment path to help it find cmake via homebrew
|
|
PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
|
|
|
|
SCRIPT_DIR=$(dirname "$0")
|
|
source "${SCRIPT_DIR}/xcode_functions.sh"
|
|
|
|
function setup_build_environment ()
|
|
{
|
|
pushd "$SCRIPT_DIR/.." > /dev/null
|
|
ROOT_PATH="$PWD"
|
|
popd > /dev/null
|
|
|
|
CLANG="/usr/bin/xcrun clang"
|
|
CC="${CLANG}"
|
|
CPP="${CLANG} -E"
|
|
|
|
MACOSX_DEPLOYMENT_TARGET="10.13"
|
|
|
|
XCODE_MAJOR_VERSION=$(xcode_major_version)
|
|
XCODE_MINOR_VERSION=$(xcode_minor_version)
|
|
|
|
if [ "${XCODE_MAJOR_VERSION}" -lt "14" ]
|
|
then
|
|
echo "Requires Xcode 14 or newer."
|
|
exit 1
|
|
fi
|
|
|
|
ARCHS="x86_64 arm64"
|
|
}
|
|
|
|
function setup ()
|
|
{
|
|
if [ "${ROOT_PATH}/External/libgit2-mac/libgit2-mac.a" -nt "${ROOT_PATH}/External/libgit2" ]
|
|
then
|
|
echo "No update needed."
|
|
exit 0
|
|
fi
|
|
|
|
LIBRARY_NAME="libgit2"
|
|
LIB_PATH="${ROOT_PATH}/External/libgit2-mac"
|
|
rm -rf "${LIB_PATH}"
|
|
|
|
pushd "${ROOT_PATH}/External/libgit2" > /dev/null
|
|
}
|
|
|
|
function build_libgit2 ()
|
|
{
|
|
rm -rf "build"
|
|
mkdir "build"
|
|
|
|
pushd "build" > /dev/null
|
|
|
|
# install the each built arch somewhere sane
|
|
INSTALL_PREFIX="${LIB_PATH}/${SDKNAME}-${ARCH}.sdk"
|
|
|
|
mkdir -p "${INSTALL_PREFIX}"
|
|
|
|
LOG="${INSTALL_PREFIX}/build-libgit2.log"
|
|
echo "$LOG"
|
|
|
|
cmake \
|
|
-DBUILD_SHARED_LIBS:BOOL=OFF \
|
|
-DCMAKE_PREFIX_PATH:PATH="${ROOT_PATH}/External/libssh2-mac/bin/${SDKNAME}-${ARCH}.sdk" \
|
|
-DCMAKE_INSTALL_PREFIX:PATH="${INSTALL_PREFIX}/" \
|
|
-DBUILD_CLAR:BOOL=OFF \
|
|
-DTHREADSAFE:BOOL=ON \
|
|
-DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \
|
|
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="${MACOSX_DEPLOYMENT_TARGET}" \
|
|
.. >> "${LOG}" 2>&1
|
|
cmake --build . --target install >> "${LOG}" 2>&1
|
|
|
|
# push the built library into the list
|
|
BUILT_LIB_PATHS+=("${INSTALL_PREFIX}/lib/libgit2.a")
|
|
popd > /dev/null
|
|
}
|
|
|
|
function fat_binary ()
|
|
{
|
|
echo "Building fat binary..."
|
|
|
|
lipo -create "${BUILT_LIB_PATHS[@]}" -output "${ROOT_PATH}/External/libgit2-mac/libgit2-mac.a"
|
|
|
|
echo "Building done."
|
|
|
|
popd > /dev/null
|
|
}
|
|
|
|
setup_build_environment
|
|
setup
|
|
|
|
echo "Building for ${ARCHS}"
|
|
|
|
for ARCH in ${ARCHS}
|
|
do
|
|
PLATFORM="macosx"
|
|
SDKVERSION=$(macos_sdk_version)
|
|
|
|
SDKNAME="${PLATFORM}${SDKVERSION}"
|
|
SDKROOT="$(sdk_path ${SDKNAME})"
|
|
|
|
echo "Building ${LIBRARY_NAME} for ${SDKNAME} ${ARCH}"
|
|
echo "Please stand by..."
|
|
|
|
# run the per arch build command
|
|
build_libgit2
|
|
done
|
|
|
|
fat_binary
|
|
|
|
echo "libgit2 has been updated."
|