CICD
This commit is contained in:
SoftFever 2023-01-12 22:55:50 +08:00 committed by GitHub
parent 43f4288fdc
commit 96c861f906
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 581 additions and 84 deletions

View File

@ -1,4 +1,4 @@
name: BambuStudio-SoftFever name: Build Linux
on: [push, pull_request] on: [push, pull_request]
@ -20,13 +20,19 @@ jobs:
- name: Fix permissions - name: Fix permissions
shell: bash shell: bash
run: sudo chown $USER -R ./ run: sudo chown $USER -R ./
- name: Build Bambu Studio dependencies using BuildLinux.sh - name: build deps
shell: bash id: cache_deps
run: ./BuildLinux.sh -dsr uses: actions/cache@v3
- name: Build Bambu Studio AppImage using BuildLinux.sh env:
shell: bash cache-name: ${{ runner.os }}-cache-bambustudio_deps_x64
run: ./BuildLinux.sh -ir
- uses: actions/upload-artifact@v3
with: with:
name: AppImage path: ${{ github.workspace }}/deps/build/destdir
path: './build/BambuStudio_ubu64.AppImage' key: build-${{ env.cache-name }}
- if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
name: build deps
working-directory: ${{ github.workspace }}
continue-on-error: true
run: ./BuildLinux.sh -dsr

51
.github/workflows/build_mac_arm64.yml vendored Normal file
View File

@ -0,0 +1,51 @@
name: Build Mac arm64
on: [pull_request, push]
jobs:
build_win64:
name: Build Mac arm64
runs-on: macos-12
steps:
- uses: actions/checkout@v3
- name: Install tools
run: |
brew install cmake git gettext zstd
- run: mkdir -p ${{ github.workspace }}/deps/build
# - run: mkdir -p ${{ github.workspace }}/deps/build/BambuStudio_dep
# - name: build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-bambustudio_deps_arm64
# with:
# path: ${{ github.workspace }}/deps/build/BambuStudio_dep
# key: build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: ./build_release_macos.sh -d -a arm64
- name: Download and extract deps
working-directory: ${{ github.workspace }}
run: |
curl -LJO https://github.com/SoftFever/FileSharing/releases/download/2/BambuStudio_dep_arm64.tar.gz
tar -zxvf BambuStudio_dep_arm64.tar.gz -C ${{ github.workspace }}/deps/build
chown -R $(id -u):$(id -g) ${{ github.workspace }}/deps/build/BambuStudio_dep
ls -l ${{ github.workspace }}/deps/build/BambuStudio_dep
rm BambuStudio_dep_arm64.tar.gz
- name: Build studio
working-directory: ${{ github.workspace }}
run: ./build_release_macos.sh -s -n -a arm64
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: BambuStudio-SoftFever_Mac
path: ${{ github.workspace }}/build/BambuStudio-SoftFever/BambuStudio-SoftFever*.zip

42
.github/workflows/build_mac_x64.yml vendored Normal file
View File

@ -0,0 +1,42 @@
name: Build Mac x64
on: [pull_request, push]
jobs:
build_win64:
name: Build Mac x64
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- name: Install tools
run: |
brew install cmake git gettext zstd
- run: mkdir -p ${{ github.workspace }}/deps/build
- run: mkdir -p ${{ github.workspace }}/deps/build/BambuStudio_dep
- name: build deps
id: cache_deps
uses: actions/cache@v3
env:
cache-name: ${{ runner.os }}-cache-bambustudio_deps_x64
with:
path: ${{ github.workspace }}/deps/build/BambuStudio_dep
key: build-${{ env.cache-name }}
- if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
name: build deps
working-directory: ${{ github.workspace }}
continue-on-error: true
run: ./build_release_macos.sh -d -a x86_64
- name: Build studio
working-directory: ${{ github.workspace }}
run: ./build_release_macos.sh -s -n -a x86_64
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: BambuStudio-SoftFever_Mac
path: ${{ github.workspace }}/build/BambuStudio-SoftFever/BambuStudio-SoftFever*.zip

58
.github/workflows/build_win.yml vendored Normal file
View File

@ -0,0 +1,58 @@
name: Build Win64
on: [pull_request,push]
jobs:
build_win64:
name: Build Win64
runs-on: windows-2019
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1
# - name: Install perl
# run: |
# choco install strawberryperl
- run: mkdir ${{ github.workspace }}/deps/build
- run: mkdir ${{ github.workspace }}/deps/build/BambuStudio_dep
- name: download deps
shell: powershell
run: '(new-object System.Net.WebClient).DownloadFile("https://github.com/SoftFever/FileSharing/releases/download/2/BambuStudio_dep.zip", "$env:temp\BambuStudio_dep.zip")'
- name: extract deps
working-directory: ${{ github.workspace }}/deps/build
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" x %temp%\BambuStudio_dep.zip'
- run: dir "${{ github.workspace }}\deps\build\BambuStudio_dep"
# - name: build deps
# id: cache_deps
# uses: actions/cache@v3
# env:
# cache-name: ${{ runner.os }}-cache-bambustudio_deps
# with:
# path: ${{ github.workspace }}/deps/build/BambuStudio_dep
# key: ${{ runner.os }}-build-${{ env.cache-name }}
# - if: ${{ steps.cache_deps.outputs.cache-hit != 'true' }}
# name: build deps
# working-directory: ${{ github.workspace }}
# continue-on-error: true
# run: .\build_release.bat deps
# - run: Get-ChildItem ${{ github.workspace }}/deps/build/ -Exclude BambuStudio_dep | Remove-Item -Recurse -Force
- name: Build studio
working-directory: ${{ github.workspace }}
run: .\build_release.bat studio
- name: pack app
working-directory: ${{ github.workspace }}/build
shell: cmd
run: '"C:/Program Files/7-Zip/7z.exe" a -tzip BambuStudio-SoftFever_dev_build.zip ${{ github.workspace }}/build/BambuStudio-SoftFever'
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: BambuStudio-SoftFever_Win64
path: ${{ github.workspace }}/build/BambuStudio-SoftFever_dev_build.zip

View File

@ -3,12 +3,21 @@ cd deps
mkdir build mkdir build
cd build cd build
set DEPS=%CD%/BambuStudio_dep set DEPS=%CD%/BambuStudio_dep
@REM cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/BambuStudio_dep" -DCMAKE_BUILD_TYPE=Release if "%1"=="studio" (
@REM cmake --build . --config Release --target ALL_BUILD -- -m GOTO :studio
)
echo "building deps.."
cmake ../ -G "Visual Studio 16 2019" -DDESTDIR="%CD%/BambuStudio_dep" -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release --target ALL_BUILD -- -m
if "%1"=="deps" exit /b 0
:studio
echo "building studio..."
cd %WP% cd %WP%
mkdir build mkdir build
cd build cd build
cmake .. -G "Visual Studio 16 2019" -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0" cmake .. -G "Visual Studio 16 2019" -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="%DEPS%/usr/local" -DCMAKE_INSTALL_PREFIX="./BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DWIN10SDK_PATH="C:/Program Files (x86)/Windows Kits/10/Include/10.0.19041.0"
@REM cmake --build . --config Release --target ALL_BUILD -- -m cmake --build . --config Release --target ALL_BUILD -- -m
@REM cmake --build . --target install --config Release cmake --build . --target install --config Release

View File

@ -1,17 +1,66 @@
#!/bin/sh #!/bin/sh
while getopts ":a:sdhn" opt; do
case ${opt} in
d )
export BUILD_TARGET="deps"
;;
a )
export ARCH="$OPTARG"
;;
s )
export BUILD_TARGET="studio"
;;
n )
export NIGHTLY_BUILD="1"
;;
h ) echo "Usage: ./build_release_macos.sh [-d]"
echo " -d: Build deps only"
echo " -a: Set ARCHITECTURE (arm64 or x86_64)"
echo " -s: Build studio only"
echo " -n: Nightly build"
exit 0
;;
esac
done
if [ -z "$ARCH" ]
then
export ARCH=$(uname -m)
fi
echo "Arch: $ARCH"
echo "BUILD_TARGET: $BUILD_TARGET"
brew --prefix libiconv
brew --prefix zstd
export LIBRARY_PATH=$LIBRARY_PATH:$(brew --prefix zstd)/lib/
WD="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WD="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd $WD/deps cd $WD/deps
mkdir -p build mkdir -p build
cd build cd build
DEPS=$PWD/BambuStudio_dep DEPS=$PWD/BambuStudio_dep
mkdir -p $DEPS mkdir -p $DEPS
cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-$(uname -m)-cc" -DCMAKE_BUILD_TYPE=Release if [ "studio." != $BUILD_TARGET. ];
cmake --build . --config Release --target all then
echo "building deps..."
echo "cmake ../ -DDESTDIR=$DEPS -DOPENSSL_ARCH=darwin64-${ARCH}-cc -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH}"
cmake ../ -DDESTDIR="$DEPS" -DOPENSSL_ARCH="darwin64-${ARCH}-cc" -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES:STRING=${ARCH}
cmake --build . --config Release --target all
fi
if [ "deps." == "$BUILD_TARGET". ];
then
exit 0
fi
cd $WD cd $WD
mkdir -p build mkdir -p build
cd build cd build
cmake .. -GXcode -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON echo "building studio..."
cmake .. -GXcode -DBBL_RELEASE_TO_PUBLIC=1 -DCMAKE_PREFIX_PATH="$DEPS/usr/local" -DCMAKE_INSTALL_PREFIX="$PWD/BambuStudio-SoftFever" -DCMAKE_BUILD_TYPE=Release -DCMAKE_MACOSX_RPATH=ON -DCMAKE_INSTALL_RPATH="$DEPS/usr/local" -DCMAKE_MACOSX_BUNDLE=ON -DCMAKE_OSX_ARCHITECTURES=${ARCH}
cmake --build . --config Release --target ALL_BUILD cmake --build . --config Release --target ALL_BUILD
mkdir -p BambuStudio-SoftFever mkdir -p BambuStudio-SoftFever
cd BambuStudio-SoftFever cd BambuStudio-SoftFever
@ -21,7 +70,14 @@ resources_path=$(readlink ./BambuStudio-SoftFever.app/Contents/Resources)
rm ./BambuStudio-SoftFever.app/Contents/Resources rm ./BambuStudio-SoftFever.app/Contents/Resources
cp -R $resources_path ./BambuStudio-SoftFever.app/Contents/Resources cp -R $resources_path ./BambuStudio-SoftFever.app/Contents/Resources
# extract version # extract version
ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3) export ver="_dev"
ver="${ver//\"}" echo $PWD
zip -FSr BambuStudio-SoftFever_V${ver}_Mac_$(uname -m).zip BambuStudio-SoftFever.app if [ "1." != "$NIGHTLY_BUILD". ];
then
ver=$(grep '^#define SoftFever_VERSION' ../src/libslic3r/libslic3r_version.h | cut -d ' ' -f3)
ver="_V${ver//\"}"
fi
zip -FSr BambuStudio-SoftFever${ver}_Mac_${ARCH}.zip BambuStudio-SoftFever.app

View File

@ -6,23 +6,43 @@ else()
set(_build_static ON) set(_build_static ON)
endif() endif()
bambustudio_add_cmake_project(Blosc if(IS_CROSS_COMPILE AND APPLE)
#URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip bambustudio_add_cmake_project(Blosc
#URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9 #URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip
URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip #URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9
URL_HASH SHA256=dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3 URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip
DEPENDS ${ZLIB_PKG} URL_HASH SHA256=dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3
# Patching upstream does not work this way with git version 2.28 installed on mac worker DEPENDS ${ZLIB_PKG}
# PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/blosc-mods.patch # Patching upstream does not work this way with git version 2.28 installed on mac worker
CMAKE_ARGS # PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/blosc-mods.patch
-DCMAKE_POSITION_INDEPENDENT_CODE=ON CMAKE_ARGS
-DBUILD_SHARED=${_build_shared} -DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_STATIC=${_build_static} -DBUILD_SHARED=${_build_shared}
-DBUILD_TESTS=OFF -DBUILD_STATIC=${_build_static}
-DBUILD_BENCHMARKS=OFF -DBUILD_TESTS=OFF
-DPREFER_EXTERNAL_ZLIB=ON -DBUILD_BENCHMARKS=OFF
) -DPREFER_EXTERNAL_ZLIB=ON
-DDEACTIVATE_SSE2=ON
-DDEACTIVATE_AVX2=ON
)
else()
bambustudio_add_cmake_project(Blosc
#URL https://github.com/Blosc/c-blosc/archive/refs/tags/v1.17.0.zip
#URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9
URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip
URL_HASH SHA256=dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3
DEPENDS ${ZLIB_PKG}
# Patching upstream does not work this way with git version 2.28 installed on mac worker
# PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/blosc-mods.patch
CMAKE_ARGS
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_SHARED=${_build_shared}
-DBUILD_STATIC=${_build_static}
-DBUILD_TESTS=OFF
-DBUILD_BENCHMARKS=OFF
-DPREFER_EXTERNAL_ZLIB=ON
)
endif()
if (MSVC) if (MSVC)
add_debug_dep(dep_Blosc) add_debug_dep(dep_Blosc)
endif () endif ()

View File

@ -28,9 +28,6 @@ elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
elseif (MSVC_VERSION LESS 1930) elseif (MSVC_VERSION LESS 1930)
# 1920-1929 = VS 16.0 (v142 toolset) # 1920-1929 = VS 16.0 (v142 toolset)
set(_boost_toolset "msvc-14.2") set(_boost_toolset "msvc-14.2")
elseif (MSVC_VERSION LESS 1940)
# 1930-1939 = VS 17.0 (v143 toolset)
set(_boost_toolset "msvc-14.3")
else () else ()
message(FATAL_ERROR "Unsupported MSVC version") message(FATAL_ERROR "Unsupported MSVC version")
endif () endif ()
@ -70,16 +67,6 @@ include(ProcessorCount)
ProcessorCount(NPROC) ProcessorCount(NPROC)
file(TO_NATIVE_PATH ${DESTDIR}/usr/local/ _prefix) file(TO_NATIVE_PATH ${DESTDIR}/usr/local/ _prefix)
set(_boost_flags "")
if (UNIX)
set(_boost_flags "cflags=-fPIC;cxxflags=-fPIC")
elseif(APPLE)
set(_boost_flags
"cflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
"cxxflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
"mflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET};"
"mmflags=-fPIC -mmacosx-version-min=${DEP_OSX_TARGET}")
endif()
set(_boost_variants "") set(_boost_variants "")
if(CMAKE_BUILD_TYPE) if(CMAKE_BUILD_TYPE)
@ -103,8 +90,38 @@ if (NOT _boost_variants)
set(_boost_variants release) set(_boost_variants release)
endif() endif()
if (IS_CROSS_COMPILE AND APPLE)
if (${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
message(STATUS "Compiling Boost for arm64.")
message(STATUS "Compiling Boost with toolset ${_boost_toolset}.")
message(STATUS "Compiling Boost with libs ${_libs}.")
message(STATUS "Compiling Boost with variant ${_boost_variants}.")
message(STATUS "Compiling Boost with _bootstrap_cmd ${_bootstrap_cmd}.")
message(STATUS "_boost_linkflags = ${_boost_linkflags}")
set(_arch_flags "-arch arm64")
set(_boost_linkflags "linkflags=${_arch_flags}")
message(STATUS "_cmake_args_osx_arch = '${_cmake_args_osx_arch}'")
elseif (${CMAKE_OSX_ARCHITECTURES} MATCHES "x86_64")
message(STATUS "Compiling Boost for x86_64.")
set(_arch_flags "-arch x86_64")
endif()
set(_boost_linkflags "linkflags=${_arch_flags}")
endif ()
set(_boost_flags "")
if(APPLE)
set(_boost_flags
"cflags=-fPIC ${_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET};"
"cxxflags=-fPIC ${_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET};"
"mflags=-fPIC ${_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET};"
"mmflags=-fPIC ${_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET}")
elseif (UNIX)
set(_boost_flags "cflags=-fPIC;cxxflags=-fPIC")
endif()
set(_build_cmd ${_build_cmd} set(_build_cmd ${_build_cmd}
${_boost_flags} ${_boost_flags}
${_boost_linkflags}
-j${NPROC} -j${NPROC}
${_libs} ${_libs}
--layout=versioned --layout=versioned
@ -120,9 +137,14 @@ set(_build_cmd ${_build_cmd}
set(_install_cmd ${_build_cmd} --prefix=${_prefix} install) set(_install_cmd ${_build_cmd} --prefix=${_prefix} install)
if (NOT IS_CROSS_COMPILE OR NOT APPLE OR BUILD_SHARED_LIBS)
message(STATUS "Standard boost build with bootstrap command '${_bootstrap_cmd}'")
message(STATUS "Standard boost build with patch command '${_patch_command}'")
message(STATUS "Standard boost build with build command '${_build_cmd}'")
message(STATUS "Standard boost build with install command '${_install_cmd}'")
ExternalProject_Add( ExternalProject_Add(
dep_Boost dep_Boost
URL "https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz" URL "https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz"
URL_HASH SHA256=aeb26f80e80945e82ee93e5939baebdca47b9dee80a07d3144be1e1a6a66dd6a URL_HASH SHA256=aeb26f80e80945e82ee93e5939baebdca47b9dee80a07d3144be1e1a6a66dd6a
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
CONFIGURE_COMMAND "${_bootstrap_cmd}" CONFIGURE_COMMAND "${_bootstrap_cmd}"
@ -132,7 +154,26 @@ ExternalProject_Add(
INSTALL_COMMAND "${_install_cmd}" INSTALL_COMMAND "${_install_cmd}"
) )
else()
ExternalProject_Add(
dep_Boost
URL "https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.tar.gz"
URL_HASH SHA256=aeb26f80e80945e82ee93e5939baebdca47b9dee80a07d3144be1e1a6a66dd6a
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/Boost
CONFIGURE_COMMAND ./bootstrap.sh
--with-toolset=clang
--with-libraries=date_time,filesystem,iostreams,locale,log,regex,system,thread
"--prefix=${DESTDIR}/usr/local"
# PATCH_COMMAND ${_patch_command}
BUILD_COMMAND "${_build_cmd}"
BUILD_IN_SOURCE ON
INSTALL_COMMAND "${_install_cmd}"
)
endif()
if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
message(STATUS "Patch the boost::polygon library with a custom one.")
# Patch the boost::polygon library with a custom one. # Patch the boost::polygon library with a custom one.
ExternalProject_Add(dep_boost_polygon ExternalProject_Add(dep_boost_polygon
EXCLUDE_FROM_ALL ON EXCLUDE_FROM_ALL ON
@ -144,6 +185,7 @@ if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
DEPENDS dep_Boost DEPENDS dep_Boost
CONFIGURE_COMMAND "" CONFIGURE_COMMAND ""
BUILD_COMMAND "" BUILD_COMMAND ""
${_cmake_args_osx_arch}
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
"${CMAKE_CURRENT_BINARY_DIR}/dep_boost_polygon-prefix/src/dep_boost_polygon/include/boost/polygon" "${CMAKE_CURRENT_BINARY_DIR}/dep_boost_polygon-prefix/src/dep_boost_polygon/include/boost/polygon"
"${DESTDIR}/usr/local/include/boost/polygon" "${DESTDIR}/usr/local/include/boost/polygon"

41
deps/CMakeLists.txt vendored
View File

@ -40,6 +40,25 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF) option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
endif() endif()
set(IS_CROSS_COMPILE FALSE)
if (APPLE)
set(CMAKE_FIND_FRAMEWORK LAST)
set(CMAKE_FIND_APPBUNDLE LAST)
list(FIND CMAKE_OSX_ARCHITECTURES ${CMAKE_SYSTEM_PROCESSOR} _arch_idx)
message(STATUS "prusaslicer_add_cmake_project for Apple")
if (CMAKE_OSX_ARCHITECTURES AND _arch_idx LESS 0)
message(STATUS "prusaslicer_add_cmake_project for Apple crosscompiling")
set(IS_CROSS_COMPILE TRUE)
set(CMAKE_CXX_COMPILER_ID "Clang")
string(REPLACE ";" "$<SEMICOLON>" CMAKE_OSX_ARCHS "${CMAKE_OSX_ARCHITECTURES}")
set(_cmake_osx_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHS})
set(_cmake_args_osx_arch CMAKE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHS})
message(STATUS "Detect Cross-compilation. Will build for target ${CMAKE_OSX_ARCHS}" )
endif ()
endif ()
# On developer machines, it can be enabled to speed up compilation and suppress warnings coming from IGL. # On developer machines, it can be enabled to speed up compilation and suppress warnings coming from IGL.
# FIXME: # FIXME:
# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while # Enabling this option is not safe. IGL will compile itself with its own version of Eigen while
@ -77,6 +96,7 @@ function(bambustudio_add_cmake_project projectname)
set(_build_j "/m") set(_build_j "/m")
endif () endif ()
if (NOT IS_CROSS_COMPILE OR NOT APPLE)
ExternalProject_Add( ExternalProject_Add(
dep_${projectname} dep_${projectname}
EXCLUDE_FROM_ALL ON EXCLUDE_FROM_ALL ON
@ -92,6 +112,7 @@ function(bambustudio_add_cmake_project projectname)
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER} -DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
-DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE} -DCMAKE_TOOLCHAIN_FILE:STRING=${CMAKE_TOOLCHAIN_FILE}
-DBUILD_SHARED_LIBS:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}" "${_configs_line}"
${DEP_CMAKE_OPTS} ${DEP_CMAKE_OPTS}
${P_ARGS_CMAKE_ARGS} ${P_ARGS_CMAKE_ARGS}
@ -99,6 +120,26 @@ function(bambustudio_add_cmake_project projectname)
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j} BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
) )
else()
ExternalProject_Add(
dep_${projectname}
EXCLUDE_FROM_ALL ON
INSTALL_DIR ${DESTDIR}/usr/local
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/${projectname}
${_gen}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
-DBUILD_SHARED_LIBS:BOOL=OFF
${_cmake_osx_arch}
"${_configs_line}"
${DEP_CMAKE_OPTS}
${P_ARGS_CMAKE_ARGS}
${P_ARGS_UNPARSED_ARGUMENTS}
BUILD_COMMAND ${CMAKE_COMMAND} --build . --config Release -- ${_build_j}
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config Release
)
endif()
endfunction(bambustudio_add_cmake_project) endfunction(bambustudio_add_cmake_project)

22
deps/GMP/GMP.cmake vendored
View File

@ -22,10 +22,24 @@ else ()
if (APPLE) if (APPLE)
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
set(_gmp_build_tgt aarch64) set(_gmp_build_arch aarch64)
else ()
set(_gmp_build_arch ${CMAKE_SYSTEM_PROCESSOR})
endif()
if (IS_CROSS_COMPILE)
if (${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
set(_gmp_host_arch aarch64)
set(_gmp_host_arch_flags "-arch arm64")
elseif (${CMAKE_OSX_ARCHITECTURES} MATCHES "x86_64")
set(_gmp_host_arch x86_64)
set(_gmp_host_arch_flags "-arch x86_64")
endif()
set(_gmp_ccflags "${_gmp_ccflags} ${_gmp_host_arch_flags} -mmacosx-version-min=${DEP_OSX_TARGET}")
set(_gmp_build_tgt --build=${_gmp_build_arch}-apple-darwin --host=${_gmp_host_arch}-apple-darwin)
else ()
set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}")
set(_gmp_build_tgt "--build=${_gmp_build_arch}-apple-darwin")
endif() endif()
set(_gmp_ccflags "${_gmp_ccflags} -mmacosx-version-min=${DEP_OSX_TARGET}")
set(_gmp_build_tgt "--build=${_gmp_build_tgt}-apple-darwin")
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux") elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4 set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
@ -51,4 +65,4 @@ else ()
BUILD_COMMAND make -j BUILD_COMMAND make -j
INSTALL_COMMAND make install INSTALL_COMMAND make install
) )
endif () endif ()

View File

@ -1,3 +1,34 @@
# Check if we're building for arm on x86_64 and just for OpenEXR, build fat
# binaries. We need this because it compiles some code to generate other
# source and we need to be able to run the executables. When we link the
# library, the x86_64 part will be ignored.
if (APPLE AND IS_CROSS_COMPILE)
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64" AND ${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
set(_openexr_arch arm64^^x86_64)
set(_openxr_list_sep LIST_SEPARATOR ^^)
set(_cmake_openexr_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${_openexr_arch})
else()
set(_openexr_arch ${CMAKE_OSX_ARCHITECTURES})
set(_cmake_openexr_arch -DCMAKE_OSX_ARCHITECTURES:STRING=${_openexr_arch})
endif()
ExternalProject_Add(dep_OpenEXR
EXCLUDE_FROM_ALL ON
URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de
INSTALL_DIR ${DESTDIR}/usr/local
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenEXR
${_openxr_list_sep}
CMAKE_ARGS
-DCMAKE_INSTALL_PREFIX:STRING=${DESTDIR}/usr/local
-DBUILD_SHARED_LIBS:BOOL=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DBUILD_TESTING=OFF
-DPYILMBASE_ENABLE:BOOL=OFF
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
-DOPENEXR_BUILD_UTILS:BOOL=OFF
${_cmake_openexr_arch}
)
else()
bambustudio_add_cmake_project(OpenEXR bambustudio_add_cmake_project(OpenEXR
# GIT_REPOSITORY https://github.com/openexr/openexr.git # GIT_REPOSITORY https://github.com/openexr/openexr.git
URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip
@ -11,6 +42,7 @@ bambustudio_add_cmake_project(OpenEXR
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF -DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
-DOPENEXR_BUILD_UTILS:BOOL=OFF -DOPENEXR_BUILD_UTILS:BOOL=OFF
) )
endif()
if (MSVC) if (MSVC)
add_debug_dep(dep_OpenEXR) add_debug_dep(dep_OpenEXR)

53
deps/PNG/PNG.cmake vendored
View File

@ -5,26 +5,43 @@ else ()
set(_disable_neon_extension "") set(_disable_neon_extension "")
endif () endif ()
if(APPLE AND IS_CROSS_COMPILE)
# TODO: check if it doesn't create problem when compiling from arm to x86_64
bambustudio_add_cmake_project(PNG
GIT_REPOSITORY https://github.com/glennrp/libpng.git
GIT_TAG v1.6.35
DEPENDS ${ZLIB_PKG}
PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/macos-arm64.patch
CMAKE_ARGS
-DPNG_SHARED=OFF
-DPNG_STATIC=ON
-DPNG_PREFIX=prusaslicer_
-DPNG_TESTS=OFF
-DDISABLE_DEPENDENCY_TRACKING=OFF
${_disable_neon_extension}
)
else ()
set(_patch_step "") set(_patch_step "")
if (APPLE) if (APPLE)
set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch) set(_patch_step PATCH_COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/PNG.patch)
endif () endif ()
bambustudio_add_cmake_project(PNG
bambustudio_add_cmake_project(PNG # GIT_REPOSITORY https://github.com/glennrp/libpng.git
# GIT_REPOSITORY https://github.com/glennrp/libpng.git # GIT_TAG v1.6.35
# GIT_TAG v1.6.35 URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip
URL https://github.com/glennrp/libpng/archive/refs/tags/v1.6.35.zip URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f
URL_HASH SHA256=3d22d46c566b1761a0e15ea397589b3a5f36ac09b7c785382e6470156c04247f DEPENDS ${ZLIB_PKG}
DEPENDS ${ZLIB_PKG} "${_patch_step}"
"${_patch_step}" CMAKE_ARGS
CMAKE_ARGS -DPNG_SHARED=OFF
-DPNG_SHARED=OFF -DPNG_STATIC=ON
-DPNG_STATIC=ON -DPNG_PREFIX=prusaslicer_
-DPNG_PREFIX=prusaslicer_ -DPNG_TESTS=OFF
-DPNG_TESTS=OFF -DDISABLE_DEPENDENCY_TRACKING=OFF
-DDISABLE_DEPENDENCY_TRACKING=OFF ${_disable_neon_extension}
${_disable_neon_extension}
) )
endif()
if (MSVC) if (MSVC)
add_debug_dep(dep_PNG) add_debug_dep(dep_PNG)

90
deps/PNG/macos-arm64.patch vendored Normal file
View File

@ -0,0 +1,90 @@
Based on https://github.com/vespakoen/libpng to work around until
https://github.com/glennrp/libpng/pull/354 is resolved.
also added patch from PS2.4 (PNG.pach) in pngrutil.c
---
CMakeLists.txt | 28 ++++++++++++++++++++--------
pngrutil.c | 7 -------
2 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4db9bb87d..9099d1edf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -82,10 +82,22 @@ option(PNG_HARDWARE_OPTIMIZATIONS "Enable Hardware Optimizations" ON)
set(PNG_PREFIX "" CACHE STRING "Prefix to add to the API function names")
set(DFA_XTRA "" CACHE FILEPATH "File containing extra configuration settings")
+# CMake currently sets CMAKE_SYSTEM_PROCESSOR to one of x86_64 or arm64 on macOS,
+# based upon the OS architecture, not the target architecture. As such, we need
+# to check CMAKE_OSX_ARCHITECTURES to identify which hardware-specific flags to
+# enable. Note that this will fail if you attempt to build a universal binary in
+# a single cmake invokation.
+if (APPLE AND CMAKE_OSX_ARCHITECTURES)
+ set(TARGET_ARCH ${CMAKE_OSX_ARCHITECTURES})
+else()
+ set(TARGET_ARCH ${CMAKE_SYSTEM_PROCESSOR})
+endif()
+
+
if(PNG_HARDWARE_OPTIMIZATIONS)
# set definitions and sources for arm
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
- CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64")
+if(TARGET_ARCH MATCHES "^arm" OR
+ TARGET_ARCH MATCHES "^aarch64")
set(PNG_ARM_NEON_POSSIBLE_VALUES check on off)
set(PNG_ARM_NEON "check" CACHE STRING "Enable ARM NEON optimizations:
check: (default) use internal checking code;
@@ -114,8 +126,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm" OR
endif()
# set definitions and sources for powerpc
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
- CMAKE_SYSTEM_PROCESSOR MATCHES "^ppc64*" )
+if(TARGET_ARCH MATCHES "^powerpc*" OR
+ TARGET_ARCH MATCHES "^ppc64*" )
set(PNG_POWERPC_VSX_POSSIBLE_VALUES on off)
set(PNG_POWERPC_VSX "on" CACHE STRING "Enable POWERPC VSX optimizations:
off: disable the optimizations.")
@@ -138,8 +150,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^powerpc*" OR
endif()
# set definitions and sources for intel
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
- CMAKE_SYSTEM_PROCESSOR MATCHES "^x86_64*" )
+if(TARGET_ARCH MATCHES "^i?86" OR
+ TARGET_ARCH MATCHES "^x86_64*" )
set(PNG_INTEL_SSE_POSSIBLE_VALUES on off)
set(PNG_INTEL_SSE "on" CACHE STRING "Enable INTEL_SSE optimizations:
off: disable the optimizations")
@@ -162,8 +174,8 @@ if(CMAKE_SYSTEM_PROCESSOR MATCHES "^i?86" OR
endif()
# set definitions and sources for MIPS
-if(CMAKE_SYSTEM_PROCESSOR MATCHES "mipsel*" OR
- CMAKE_SYSTEM_PROCESSOR MATCHES "mips64el*" )
+if(TARGET_ARCH MATCHES "mipsel*" OR
+ TARGET_ARCH MATCHES "mips64el*" )
set(PNG_MIPS_MSA_POSSIBLE_VALUES on off)
set(PNG_MIPS_MSA "on" CACHE STRING "Enable MIPS_MSA optimizations:
off: disable the optimizations")
diff --git a/pngrutil.c b/pngrutil.c
index 7001f1976..91930f1f2 100644
--- a/pngrutil.c
+++ b/pngrutil.c
@@ -422,13 +422,6 @@ png_inflate_claim(png_structrp png_ptr, png_uint_32 owner)
png_ptr->flags |= PNG_FLAG_ZSTREAM_INITIALIZED;
}
-#if ZLIB_VERNUM >= 0x1290 && \
- defined(PNG_SET_OPTION_SUPPORTED) && defined(PNG_IGNORE_ADLER32)
- if (((png_ptr->options >> PNG_IGNORE_ADLER32) & 3) == PNG_OPTION_ON)
- /* Turn off validation of the ADLER32 checksum in IDAT chunks */
- ret = inflateValidate(&png_ptr->zstream, 0);
-#endif
-
if (ret == Z_OK)
png_ptr->zowner = owner;
--
2.33.0.windows.1

41
deps/TIFF/TIFF.cmake vendored
View File

@ -1,13 +1,32 @@
find_package(OpenGL QUIET REQUIRED) find_package(OpenGL QUIET REQUIRED)
bambustudio_add_cmake_project(TIFF if (APPLE)
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip message(STATUS "Compiling TIFF for macos ${CMAKE_SYSTEM_VERSION}.")
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32 bambustudio_add_cmake_project(TIFF
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG URL https://gitlab.com/libtiff/libtiff/-/archive/v4.3.0/libtiff-v4.3.0.zip
CMAKE_ARGS URL_HASH SHA256=4fca1b582c88319f3ad6ecd5b46320eadaf5eb4ef6f6c32d44caaae4a03d0726
-Dlzma:BOOL=OFF DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
-Dwebp:BOOL=OFF CMAKE_ARGS
-Djbig:BOOL=OFF -Dlzma:BOOL=OFF
-Dzstd:BOOL=OFF -Dwebp:BOOL=OFF
-Dpixarlog:BOOL=OFF -Djbig:BOOL=OFF
) -Dzstd:BOOL=OFF
-Dpixarlog:BOOL=OFF
)
else()
bambustudio_add_cmake_project(TIFF
URL https://gitlab.com/libtiff/libtiff/-/archive/v4.1.0/libtiff-v4.1.0.zip
URL_HASH SHA256=c56edfacef0a60c0de3e6489194fcb2f24c03dbb550a8a7de5938642d045bd32
DEPENDS ${ZLIB_PKG} ${PNG_PKG} dep_JPEG
CMAKE_ARGS
-Dlzma:BOOL=OFF
-Dwebp:BOOL=OFF
-Djbig:BOOL=OFF
-Dzstd:BOOL=OFF
-Dpixarlog:BOOL=OFF
)
endif()