From 658669d103fb07ea1284c934c60313bf81c323c9 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 27 Mar 2025 22:53:37 +0800 Subject: [PATCH] Universal mac build (#9074) build universal Mac app --- .github/workflows/build_all.yml | 2 - .github/workflows/build_check_cache.yml | 9 +- .github/workflows/build_deps.yml | 22 ++- .github/workflows/build_orca.yml | 31 ++-- build_release_macos.sh | 236 +++++++++++------------- deps/CMakeLists.txt | 2 +- 6 files changed, 142 insertions(+), 160 deletions(-) diff --git a/.github/workflows/build_all.yml b/.github/workflows/build_all.yml index c0a35f66bf..3c55bd7088 100644 --- a/.github/workflows/build_all.yml +++ b/.github/workflows/build_all.yml @@ -50,8 +50,6 @@ jobs: - os: ubuntu-20.04 - os: ubuntu-24.04 - os: windows-latest - - os: macos-14 - arch: x86_64 - os: macos-14 arch: arm64 uses: ./.github/workflows/build_check_cache.yml diff --git a/.github/workflows/build_check_cache.yml b/.github/workflows/build_check_cache.yml index f71cc9b281..ddac07545e 100644 --- a/.github/workflows/build_check_cache.yml +++ b/.github/workflows/build_check_cache.yml @@ -30,13 +30,12 @@ jobs: - name: set outputs id: set_outputs env: - underscore-arch: ${{ inputs.os == 'macos-14' && '_' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }} # if is macos, make a string that does "_{arch}", else output nothing - dash-arch: ${{ inputs.os == 'macos-14' && '-' || ''}}${{ inputs.os == 'macos-14' && inputs.arch || '' }} # if is macos, make a string that does "-{arch}", else output nothing - dep-folder-name: ${{ (inputs.os == 'windows-latest' || inputs.os == 'macos-14') && 'OrcaSlicer_dep' || 'destdir' }} + # todo: this is mad! refactor other build scripts to use same name + dep-folder-name: ${{ inputs.os == 'windows-latest' && '/OrcaSlicer_dep' || inputs.os == 'macos-14' && '' || inputs.os != 'macos-14' && '/destdir' || '' }} output-cmd: ${{ inputs.os == 'windows-latest' && '$env:GITHUB_OUTPUT' || '"$GITHUB_OUTPUT"'}} run: | - echo cache-key=${{ inputs.os }}${{ env.dash-arch }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} - echo cache-path=${{ github.workspace }}/deps/build${{ env.underscore-arch }}/${{ env.dep-folder-name }}${{ env.underscore-arch }} >> ${{ env.output-cmd }} + echo cache-key=${{ inputs.os }}-cache-orcaslicer_deps-build-${{ hashFiles('deps/**') }} >> ${{ env.output-cmd }} + echo cache-path=${{ github.workspace }}/deps/build${{ env.dep-folder-name }} >> ${{ env.output-cmd }} - name: load cache id: cache_deps diff --git a/.github/workflows/build_deps.yml b/.github/workflows/build_deps.yml index 163cbca23c..b9dd05f647 100644 --- a/.github/workflows/build_deps.yml +++ b/.github/workflows/build_deps.yml @@ -74,12 +74,14 @@ jobs: if: inputs.os == 'macos-14' working-directory: ${{ github.workspace }} run: | - brew install automake texinfo ninja libtool + brew install automake texinfo libtool brew list - mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }} - mkdir -p ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep_${{ inputs.arch }} brew uninstall --ignore-dependencies zstd - ./build_release_macos.sh -dpx -a ${{ inputs.arch }} -t 10.15 -1 + ./build_release_macos.sh -dx -a universal -t 10.15 -1 + for arch in arm64 x86_64; do + (cd "${{ github.workspace }}/deps/build/${arch}" && \ + find . -mindepth 1 -maxdepth 1 ! -name 'OrcaSlicer_dep' -exec rm -rf {} +) + done brew install zstd @@ -111,12 +113,12 @@ jobs: # Upload Artifacts - - name: Upload Mac ${{ inputs.arch }} artifacts - if: inputs.os == 'macos-14' - uses: actions/upload-artifact@v4 - with: - name: OrcaSlicer_dep_mac_${{ inputs.arch }}_${{ env.date }} - path: ${{ github.workspace }}/deps/build_${{ inputs.arch }}/OrcaSlicer_dep*.tar.gz + # - name: Upload Mac ${{ inputs.arch }} artifacts + # if: inputs.os == 'macos-14' + # uses: actions/upload-artifact@v4 + # with: + # name: OrcaSlicer_dep_mac_${{ env.date }} + # path: ${{ github.workspace }}/deps/build/OrcaSlicer_dep*.tar.gz - name: Upload Windows artifacts if: inputs.os == 'windows-latest' diff --git a/.github/workflows/build_orca.yml b/.github/workflows/build_orca.yml index fc99a751ac..68f6553e0a 100644 --- a/.github/workflows/build_orca.yml +++ b/.github/workflows/build_orca.yml @@ -81,10 +81,9 @@ jobs: - name: Install tools mac if: inputs.os == 'macos-14' run: | - brew install ninja libtool + brew install libtool brew list - mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}} - mkdir -p ${{ github.workspace }}/deps/build_${{inputs.arch}}/OrcaSlicer_dep_${{inputs.arch}} + mkdir -p ${{ github.workspace }}/deps/build - name: Free disk space if: inputs.os == 'macos-14' @@ -98,7 +97,7 @@ jobs: if: inputs.os == 'macos-14' working-directory: ${{ github.workspace }} run: | - ./build_release_macos.sh -s -n -x -a ${{inputs.arch}} -t 10.15 -1 + ./build_release_macos.sh -s -n -x -a universal -t 10.15 -1 # Thanks to RaySajuuk, it's working now - name: Sign app and notary @@ -119,27 +118,27 @@ jobs: security import $CERTIFICATE_PATH -P $P12_PASSWORD -A -t cert -f pkcs12 -k $KEYCHAIN_PATH security list-keychain -d user -s $KEYCHAIN_PATH security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k $P12_PASSWORD $KEYCHAIN_PATH - codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/OrcaSlicer.app - ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications - hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg + codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" ${{ github.workspace }}/build/universal/OrcaSlicer/OrcaSlicer.app + ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications + hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg + codesign --deep --force --verbose --options runtime --timestamp --entitlements ${{ github.workspace }}/scripts/disable_validation.entitlements --sign "$CERTIFICATE_ID" OrcaSlicer_Mac_universal_${{ env.ver }}.dmg xcrun notarytool store-credentials "notarytool-profile" --apple-id "${{ secrets.APPLE_DEV_ACCOUNT }}" --team-id "${{ secrets.TEAM_ID }}" --password "${{ secrets.APP_PWD }}" - xcrun notarytool submit "OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait - xcrun stapler staple OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg + xcrun notarytool submit "OrcaSlicer_Mac_universal_${{ env.ver }}.dmg" --keychain-profile "notarytool-profile" --wait + xcrun stapler staple OrcaSlicer_Mac_universal_${{ env.ver }}.dmg - name: Create DMG without notary if: github.ref != 'refs/heads/main' && inputs.os == 'macos-14' working-directory: ${{ github.workspace }} run: | - ln -s /Applications ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer/Applications - hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build_${{inputs.arch}}/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg + ln -s /Applications ${{ github.workspace }}/build/universal/OrcaSlicer/Applications + hdiutil create -volname "OrcaSlicer" -srcfolder ${{ github.workspace }}/build/universal/OrcaSlicer -ov -format UDZO OrcaSlicer_Mac_universal_${{ env.ver }}.dmg - name: Upload artifacts mac if: inputs.os == 'macos-14' uses: actions/upload-artifact@v4 with: - name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }} - path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg + name: OrcaSlicer_Mac_universal_${{ env.ver }} + path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg - name: Deploy Mac release if: github.ref == 'refs/heads/main' && inputs.os == 'macos-14' @@ -147,8 +146,8 @@ jobs: with: upload_url: https://uploads.github.com/repos/SoftFever/OrcaSlicer/releases/137995723/assets{?name,label} release_id: 137995723 - asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg - asset_name: OrcaSlicer_Mac_${{inputs.arch}}_${{ env.ver }}.dmg + asset_path: ${{ github.workspace }}/OrcaSlicer_Mac_universal_${{ env.ver }}.dmg + asset_name: OrcaSlicer_Mac_universal_${{ env.ver }}.dmg asset_content_type: application/octet-stream max_releases: 1 # optional, if there are more releases than this matching the asset_name, the oldest ones are going to be deleted diff --git a/build_release_macos.sh b/build_release_macos.sh index 59cd616c76..95d06833f9 100755 --- a/build_release_macos.sh +++ b/build_release_macos.sh @@ -3,7 +3,7 @@ set -e set -o pipefail -while getopts ":dpa:snt:xbc:hu" opt; do +while getopts ":dpa:snt:xbc:h" opt; do case "${opt}" in d ) export BUILD_TARGET="deps" @@ -37,19 +37,15 @@ while getopts ":dpa:snt:xbc:hu" opt; do 1 ) export CMAKE_BUILD_PARALLEL_LEVEL=1 ;; - u ) - export BUILD_UNIVERSAL="1" - ;; h ) echo "Usage: ./build_release_macos.sh [-d]" echo " -d: Build deps only" - echo " -a: Set ARCHITECTURE (arm64 or x86_64)" + echo " -a: Set ARCHITECTURE (arm64 or x86_64 or universal)" echo " -s: Build slicer only" echo " -n: Nightly build" echo " -t: Specify minimum version of the target platform, default is 11.3" echo " -x: Use Ninja CMake generator, default is Xcode" echo " -b: Build without reconfiguring CMake" echo " -c: Set CMake build configuration, default is Release" - echo " -u: Build universal binary (both arm64 and x86_64)" echo " -1: Use single job for building" exit 0 ;; @@ -61,16 +57,8 @@ done # Set defaults if [ -z "$ARCH" ]; then - if [ "1." == "$BUILD_UNIVERSAL". ]; then - ARCH="universal" - else ARCH="$(uname -m)" - fi - export ARCH -fi - -if [ "1." == "$BUILD_UNIVERSAL". ]; then - echo "Universal build enabled - will create a combined arm64/x86_64 binary" + export ARCH fi if [ -z "$BUILD_CONFIG" ]; then @@ -119,10 +107,10 @@ echo # fi PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" +PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH" DEPS_DIR="$PROJECT_DIR/deps" -DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" -DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" +DEPS_BUILD_DIR="$DEPS_DIR/build/$ARCH" +DEPS="$DEPS_BUILD_DIR/OrcaSlicer_deps" # Fix for Multi-config generators if [ "$SLICER_CMAKE_GENERATOR" == "Xcode" ]; then @@ -132,133 +120,133 @@ else fi function build_deps() { - echo "Building deps..." - ( - set -x - mkdir -p "$DEPS" - cd "$DEPS_BUILD_DIR" - if [ "1." != "$BUILD_ONLY". ]; then - cmake .. \ - -G "${DEPS_CMAKE_GENERATOR}" \ - -DDESTDIR="$DEPS" \ - -DOPENSSL_ARCH="darwin64-${ARCH}-cc" \ - -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \ - -DCMAKE_OSX_ARCHITECTURES:STRING="${ARCH}" \ - -DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" + # iterate over two architectures: x86_64 and arm64 + for _ARCH in x86_64 arm64; do + # if ARCH is universal or equal to _ARCH + if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then + + PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH" + DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH" + DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep" + + echo "Building deps..." + ( + set -x + mkdir -p "$DEPS" + cd "$DEPS_BUILD_DIR" + if [ "1." != "$BUILD_ONLY". ]; then + cmake "${DEPS_DIR}" \ + -G "${DEPS_CMAKE_GENERATOR}" \ + -DDESTDIR="$DEPS" \ + -DOPENSSL_ARCH="darwin64-${_ARCH}-cc" \ + -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \ + -DCMAKE_OSX_ARCHITECTURES:STRING="${_ARCH}" \ + -DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" + fi + cmake --build . --config "$BUILD_CONFIG" --target deps + ) fi - cmake --build . --config "$BUILD_CONFIG" --target deps - ) + done } function pack_deps() { echo "Packing deps..." ( set -x - mkdir -p "$DEPS" - cd "$DEPS_BUILD_DIR" - tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "OrcaSlicer_dep_$ARCH" + cd "$DEPS_DIR" + tar -zcvf "OrcaSlicer_dep_mac_${ARCH}_$(date +"%Y%m%d").tar.gz" "build" ) } function build_slicer() { - echo "Building slicer..." - ( - set -x - mkdir -p "$PROJECT_BUILD_DIR" - cd "$PROJECT_BUILD_DIR" - if [ "1." != "$BUILD_ONLY". ]; then - cmake .. \ - -G "${SLICER_CMAKE_GENERATOR}" \ - -DBBL_RELEASE_TO_PUBLIC=1 \ - -DCMAKE_PREFIX_PATH="$DEPS/usr/local" \ - -DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \ - -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \ - -DCMAKE_MACOSX_RPATH=ON \ - -DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \ - -DCMAKE_MACOSX_BUNDLE=ON \ - -DCMAKE_OSX_ARCHITECTURES="${ARCH}" \ - -DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" - fi - cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET" - ) + # iterate over two architectures: x86_64 and arm64 + for _ARCH in x86_64 arm64; do + # if ARCH is universal or equal to _ARCH + if [ "$ARCH" == "universal" ] || [ "$ARCH" == "$_ARCH" ]; then - echo "Verify localization with gettext..." - ( - cd "$PROJECT_DIR" - ./run_gettext.sh - ) + PROJECT_BUILD_DIR="$PROJECT_DIR/build/$_ARCH" + DEPS_BUILD_DIR="$DEPS_DIR/build/$_ARCH" + DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep" - echo "Fix macOS app package..." - ( - cd "$PROJECT_BUILD_DIR" - mkdir -p OrcaSlicer - cd OrcaSlicer - # remove previously built app - rm -rf ./OrcaSlicer.app - # fully copy newly built app - cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app - # fix resources - resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources) - rm ./OrcaSlicer.app/Contents/Resources - cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources - # delete .DS_Store file - find ./OrcaSlicer.app/ -name '.DS_Store' -delete - ) + echo "Building slicer for $_ARCH..." + ( + set -x + mkdir -p "$PROJECT_BUILD_DIR" + cd "$PROJECT_BUILD_DIR" + if [ "1." != "$BUILD_ONLY". ]; then + cmake "${PROJECT_DIR}" \ + -G "${SLICER_CMAKE_GENERATOR}" \ + -DBBL_RELEASE_TO_PUBLIC=1 \ + -DCMAKE_PREFIX_PATH="$DEPS/usr/local" \ + -DCMAKE_INSTALL_PREFIX="$PWD/OrcaSlicer" \ + -DCMAKE_BUILD_TYPE="$BUILD_CONFIG" \ + -DCMAKE_MACOSX_RPATH=ON \ + -DCMAKE_INSTALL_RPATH="${DEPS}/usr/local" \ + -DCMAKE_MACOSX_BUNDLE=ON \ + -DCMAKE_OSX_ARCHITECTURES="${_ARCH}" \ + -DCMAKE_OSX_DEPLOYMENT_TARGET="${OSX_DEPLOYMENT_TARGET}" + fi + cmake --build . --config "$BUILD_CONFIG" --target "$SLICER_BUILD_TARGET" + ) - # extract version - # export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3) - # ver="_V${ver//\"}" - # echo $PWD - # if [ "1." != "$NIGHTLY_BUILD". ]; - # then - # ver=${ver}_dev - # fi + echo "Verify localization with gettext..." + ( + cd "$PROJECT_DIR" + ./run_gettext.sh + ) - # zip -FSr OrcaSlicer${ver}_Mac_${ARCH}.zip OrcaSlicer.app + echo "Fix macOS app package..." + ( + cd "$PROJECT_BUILD_DIR" + mkdir -p OrcaSlicer + cd OrcaSlicer + # remove previously built app + rm -rf ./OrcaSlicer.app + # fully copy newly built app + cp -pR "../src$BUILD_DIR_CONFIG_SUBDIR/OrcaSlicer.app" ./OrcaSlicer.app + # fix resources + resources_path=$(readlink ./OrcaSlicer.app/Contents/Resources) + rm ./OrcaSlicer.app/Contents/Resources + cp -R "$resources_path" ./OrcaSlicer.app/Contents/Resources + # delete .DS_Store file + find ./OrcaSlicer.app/ -name '.DS_Store' -delete + ) + + # extract version + # export ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3) + # ver="_V${ver//\"}" + # echo $PWD + # if [ "1." != "$NIGHTLY_BUILD". ]; + # then + # ver=${ver}_dev + # fi + + # zip -FSr OrcaSlicer${ver}_Mac_${_ARCH}.zip OrcaSlicer.app + + fi + done } function build_universal() { echo "Building universal binary..." - # Save current ARCH - ORIGINAL_ARCH="$ARCH" - - # Build x86_64 - ARCH="x86_64" - PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" - DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" - DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" - build_deps - build_slicer - - # Build arm64 - ARCH="arm64" - PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" - DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" - DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" - build_deps - build_slicer - - # Restore original ARCH - ARCH="$ORIGINAL_ARCH" - PROJECT_BUILD_DIR="$PROJECT_DIR/build_$ARCH" - DEPS_BUILD_DIR="$DEPS_DIR/build_$ARCH" - DEPS="$DEPS_BUILD_DIR/OrcaSlicer_dep_$ARCH" + + PROJECT_BUILD_DIR="$PROJECT_DIR/build/$ARCH" # Create universal binary echo "Creating universal binary..." - PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal" + # PROJECT_BUILD_DIR="$PROJECT_DIR/build_Universal" mkdir -p "$PROJECT_BUILD_DIR/OrcaSlicer" - UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/Universal_OrcaSlicer.app" + UNIVERSAL_APP="$PROJECT_BUILD_DIR/OrcaSlicer/OrcaSlicer.app" rm -rf "$UNIVERSAL_APP" - cp -R "$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP" + cp -R "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app" "$UNIVERSAL_APP" # Get the binary path inside the .app bundle BINARY_PATH="Contents/MacOS/OrcaSlicer" # Create universal binary using lipo lipo -create \ - "$PROJECT_DIR/build_x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ - "$PROJECT_DIR/build_arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ + "$PROJECT_DIR/build/x86_64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ + "$PROJECT_DIR/build/arm64/OrcaSlicer/OrcaSlicer.app/$BINARY_PATH" \ -output "$UNIVERSAL_APP/$BINARY_PATH" echo "Universal binary created at $UNIVERSAL_APP" @@ -266,22 +254,14 @@ function build_universal() { case "${BUILD_TARGET}" in all) - if [ "1." == "$BUILD_UNIVERSAL". ]; then - build_universal - else - build_deps - build_slicer - fi + build_deps + build_slicer ;; deps) build_deps ;; slicer) - if [ "1." == "$BUILD_UNIVERSAL". ]; then - build_universal - else - build_slicer - fi + build_slicer ;; *) echo "Unknown target: $BUILD_TARGET. Available targets: deps, slicer, all." @@ -289,6 +269,10 @@ case "${BUILD_TARGET}" in ;; esac +if [ "$ARCH" = "universal" ] && [ "$BUILD_TARGET" != "deps" ]; then + build_universal +fi + if [ "1." == "$PACK_DEPS". ]; then pack_deps fi diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index b43bfa153f..b24ee20e26 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -45,7 +45,7 @@ if (NPROC EQUAL 0) endif () set(DESTDIR "${CMAKE_CURRENT_BINARY_DIR}/destdir" CACHE PATH "Destination directory") -set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_BINARY_DIR}/../DL_CACHE CACHE PATH "Path for downloaded source packages.") +set(DEP_DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/DL_CACHE CACHE PATH "Path for downloaded source packages.") set(FLATPAK FALSE CACHE BOOL "Toggles various build settings for flatpak, like /usr/local in DESTDIR or not building wxwidgets") if (NOT FLATPAK) set(DESTDIR "${DESTDIR}/usr/local/")