mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-13 19:25:54 +08:00
Add support for building MacOS fat binaries
* Fix cross compiling for GMP on Mac * Fix Apple silicon cross-compile for libcurl * Fix OpenEXR cross compile for apple silicon * Patch to cross compile libpng for Apple Silicon * Fix comment supermerill: * Test new BuildMacOS.sh script * limits macos-arm new command to macos. * add debug to BuildMacos script (like for linux)
This commit is contained in:
parent
9e4b73f081
commit
45c8c3722f
2
.github/workflows/ccpp_mac.yml
vendored
2
.github/workflows/ccpp_mac.yml
vendored
@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-latest
|
||||
runs-on: macos-10.15
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
28
.github/workflows/ccpp_mac_arm.yml
vendored
Normal file
28
.github/workflows/ccpp_mac_arm.yml
vendored
Normal file
@ -0,0 +1,28 @@
|
||||
name: C/C++ debug arm macos
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- Nigthly
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-11
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 'debug_macos'
|
||||
- name: build deps & slicer
|
||||
run: ./BuildMacOS.sh -ia
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_macos_arm_debug.dmg
|
||||
path: build/${{ github.event.repository.name }}.dmg
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_arm_macos.tar
|
||||
path: build/${{ github.event.repository.name }}.tar
|
31
.github/workflows/ccpp_mac_arm_debug.yml
vendored
Normal file
31
.github/workflows/ccpp_mac_arm_debug.yml
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
name: C/C++ debug arm macos
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- debug_macos
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: macos-11
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 'debug_macos'
|
||||
- name: build deps & slicer
|
||||
run: ./BuildMacOS.sh -bia
|
||||
- name: ls build
|
||||
working-directory: ./build
|
||||
run: ls
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_macos_arm_debug.dmg
|
||||
path: build/${{ github.event.repository.name }}.dmg
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_arm_macos.tar
|
||||
path: build/${{ github.event.repository.name }}.tar
|
100
.github/workflows/ccpp_mac_debug.yml
vendored
100
.github/workflows/ccpp_mac_debug.yml
vendored
@ -10,104 +10,22 @@ jobs:
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
env:
|
||||
EXEC_NAME: "${{ github.event.repository.name }}"
|
||||
DBL_NAME: "${{ github.event.repository.name }}/${{ github.event.repository.name }}"
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
ref: 'debug_macos'
|
||||
- name: update submodule profiles
|
||||
working-directory: ./resources/profiles
|
||||
run: git submodule update --init
|
||||
- id: lowercase_repo
|
||||
uses: ASzc/change-string-case-action@v1
|
||||
with:
|
||||
string: ${{ github.event.repository.name }}
|
||||
- name: set exec name
|
||||
if: ${{ github.event.repository.name != 'Slic3r' }}
|
||||
uses: allenevans/set-env@v2.0.0
|
||||
with:
|
||||
EXEC_NAME: "${{ steps.lowercase_repo.outputs.lowercase }}"
|
||||
- name: change date in version
|
||||
run: |
|
||||
sed "s/+UNKNOWN/_$(date '+%F')/" version.inc > version.date.inc
|
||||
mv version.date.inc version.inc
|
||||
- name: mkdir in deps
|
||||
run: mkdir deps/build
|
||||
- name: cmake deps
|
||||
working-directory: ./deps/build
|
||||
run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13"
|
||||
- name: make deps
|
||||
working-directory: ./deps/build
|
||||
run: make
|
||||
- name: ls libs
|
||||
working-directory: ./deps/build
|
||||
run: ls ./destdir/usr/local/lib
|
||||
- name: rename wxscintilla
|
||||
working-directory: ./deps/build/destdir/usr/local/lib
|
||||
run: cp libwxscintilla-3.1.a libwx_osx_cocoau_scintilla-3.1.a
|
||||
- name: ls libs
|
||||
working-directory: ./deps/build
|
||||
run: ls ./destdir/usr/local/lib
|
||||
- name: clean deps
|
||||
working-directory: ./deps/build
|
||||
run: rm -rf dep_*
|
||||
- name: mkdir build
|
||||
run: mkdir build
|
||||
- name: cmake
|
||||
- name: build deps & slicer
|
||||
run: ./BuildMacOS.sh -bi
|
||||
- name: tar the pack
|
||||
working-directory: ./build
|
||||
run: cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" -DSLIC3R_STATIC=1
|
||||
- name: make ${{ github.event.repository.name }}
|
||||
working-directory: ./build
|
||||
run: make Slic3r
|
||||
- name: make .mo
|
||||
working-directory: ./build
|
||||
run: make gettext_po_to_mo
|
||||
- name: update Info.plist
|
||||
working-directory: ./build/src
|
||||
run: sed "s/+UNKNOWN/_$(date '+%F')/" Info.plist >Info.date.plist
|
||||
- name: create directory and copy into it
|
||||
working-directory: ./build
|
||||
run: |
|
||||
mkdir pack
|
||||
mkdir pack/${{ github.event.repository.name }}
|
||||
mkdir pack/${{ env.DBL_NAME }}.app
|
||||
mkdir pack/${{ env.DBL_NAME }}.app/Contents
|
||||
mkdir pack/${{ env.DBL_NAME }}.app/Contents/_CodeSignature
|
||||
mkdir pack/${{ env.DBL_NAME }}.app/Contents/Frameworks
|
||||
mkdir pack/${{ env.DBL_NAME }}.app/Contents/MacOS
|
||||
- name: copy Resources
|
||||
working-directory: ./build
|
||||
run: |
|
||||
cp -Rf ../resources pack/${{ env.DBL_NAME }}.app/Contents/Resources
|
||||
cp pack/${{ env.DBL_NAME }}.app/Contents/Resources/icons/${{ github.event.repository.name }}.icns pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/resources/${{ github.event.repository.name }}.icns
|
||||
cp src/Info.date.plist pack/${{ github.event.repository.name }}/${{ github.event.repository.name }}.app/Contents/Info.plist
|
||||
echo -n -e 'APPL????\x0a' > PkgInfo
|
||||
cp PkgInfo pack/${{ env.DBL_NAME }}.app/Contents/PkgInfo
|
||||
# echo -n -e '\xff\xfeAPPL\x3f\x00\x3f\x00\x3f\x00\x3f\x00\x0a\x00' > PkgInfo
|
||||
- name: copy bin and do not let it lower case
|
||||
working-directory: ./build
|
||||
run: |
|
||||
cp -f src/${{ env.EXEC_NAME }} pack/${{ env.DBL_NAME }}.app/Contents/MacOS/${{ github.event.repository.name }}
|
||||
chmod u+x pack/${{ env.DBL_NAME }}.app/Contents/MacOS/${{ github.event.repository.name }}
|
||||
tar -cvf ${{ github.event.repository.name }}.tar pack/${{ github.event.repository.name }}
|
||||
- name: create dmg
|
||||
working-directory: ./build
|
||||
run: |
|
||||
hdiutil create -ov -fs HFS+ -volname "${{ github.event.repository.name }}" -srcfolder "pack/${{ github.event.repository.name }}" temp.dmg
|
||||
hdiutil convert temp.dmg -format UDZO -o ${{ github.event.repository.name }}.dmg
|
||||
# - name: signing Resources (creating CodeResources inside _CodeSignature)
|
||||
# working-directory: .
|
||||
# run: codesign -s <identity> Resources
|
||||
# maybe i should just try to do that on a separate pc and copy the file here, more secure as a signing process.
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_macos.tar
|
||||
path: build/${{ github.event.repository.name }}.tar
|
||||
run: ls
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_macos_debug.dmg
|
||||
path: build/${{ github.event.repository.name }}.dmg
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
with:
|
||||
name: nightly_macos.tar
|
||||
path: build/${{ github.event.repository.name }}.tar
|
||||
|
@ -3,6 +3,7 @@
|
||||
export ROOT=`pwd`
|
||||
export NCORES=`sysctl -n hw.ncpu`
|
||||
export CMAKE_INSTALLED=`which cmake`
|
||||
#export ARCH=$(uname -m)
|
||||
|
||||
# Check if CMake is installed
|
||||
if [[ -z "$CMAKE_INSTALLED" ]]
|
||||
@ -11,18 +12,32 @@ then
|
||||
exit -1
|
||||
fi
|
||||
|
||||
while getopts ":ih" opt; do
|
||||
while getopts ":iaxbh" opt; do
|
||||
case ${opt} in
|
||||
i )
|
||||
export BUILD_IMAGE="1"
|
||||
;;
|
||||
a )
|
||||
export BUILD_ARCH="arm64"
|
||||
;;
|
||||
x )
|
||||
export BUILD_ARCH="x86_64"
|
||||
;;
|
||||
b )
|
||||
export BUILD_DEBUG="1"
|
||||
;;
|
||||
h ) echo "Usage: ./BuildMacOS.sh [-i]"
|
||||
echo " -i: Generate DMG image (optional)"
|
||||
echo " -a: Build for arm64 (Apple Silicon)"
|
||||
echo " -x: Build for x86_64 (Intel)"
|
||||
echo " -b: Build with debug symbols"
|
||||
exit 0
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Build architecture: ${BUILD_ARCH}"
|
||||
|
||||
# mkdir build
|
||||
if [ ! -d "build" ]
|
||||
then
|
||||
@ -35,7 +50,7 @@ echo -n "[1/9] Updating submodules..."
|
||||
pushd resources/profiles
|
||||
git submodule update --init
|
||||
popd
|
||||
} > $ROOT/build/Build.log # Capture all command output
|
||||
} #> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[2/9] Changing date in version..."
|
||||
@ -43,7 +58,7 @@ echo -n "[2/9] Changing date in version..."
|
||||
# change date in version
|
||||
sed "s/+UNKNOWN/_$(date '+%F')/" version.inc > version.date.inc
|
||||
mv version.date.inc version.inc
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
# mkdir in deps
|
||||
@ -54,17 +69,31 @@ fi
|
||||
|
||||
echo -n "[3/9] Configuring dependencies..."
|
||||
{
|
||||
BUILD_ARGS=""
|
||||
if [[ -n "$BUILD_ARCH" ]]
|
||||
then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_OSX_ARCHITECTURES:STRING=${BUILD_ARCH}"
|
||||
fi
|
||||
if [[ -n "$BUILD_DEBUG" ]]
|
||||
then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
|
||||
fi
|
||||
# cmake deps
|
||||
echo "Cmake command: cmake .. -DCMAKE_OSX_DEPLOYMENT_TARGET=\"10.13\" ${BUILD_ARCH} "
|
||||
pushd deps/build
|
||||
cmake .. -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13"
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
cmake .. -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" $BUILD_ARGS
|
||||
echo "ls deps/build:"
|
||||
ls -al
|
||||
echo "ls deps/build/dep_GLEW-prefix"
|
||||
ls -al dep_GLEW-prefix
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[4/9] Building dependencies..."
|
||||
{
|
||||
# make deps
|
||||
make -j$NCORES
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[5/9] Renaming wxscintilla library..."
|
||||
@ -72,8 +101,10 @@ echo -n "[5/9] Renaming wxscintilla library..."
|
||||
# rename wxscintilla
|
||||
pushd destdir/usr/local/lib
|
||||
cp libwxscintilla-3.1.a libwx_osx_cocoau_scintilla-3.1.a
|
||||
echo "ls deps/build/destdir/usr/local/lib"
|
||||
ls -al
|
||||
popd
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[6/9] Cleaning dependencies..."
|
||||
@ -81,15 +112,25 @@ echo -n "[6/9] Cleaning dependencies..."
|
||||
# clean deps
|
||||
rm -rf dep_*
|
||||
popd
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[7/9] Configuring Slic3r..."
|
||||
{
|
||||
BUILD_ARGS=""
|
||||
if [[ -n "$BUILD_ARCH" ]]
|
||||
then
|
||||
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_OSX_ARCHITECTURES=${BUILD_ARCH}"
|
||||
fi
|
||||
if [[ -n "$BUILD_DEBUG" ]]
|
||||
then
|
||||
BUILD_ARGS="-DCMAKE_BUILD_TYPE=Debug ${BUILD_ARGS}"
|
||||
fi
|
||||
# cmake
|
||||
pushd build
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" -DSLIC3R_STATIC=1
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
echo "Cmake command: cmake .. -DCMAKE_PREFIX_PATH=\"$PWD/../deps/build/destdir/usr/local\" -DCMAKE_OSX_DEPLOYMENT_TARGET=\"10.13\" -DSLIC3R_STATIC=1 ${BUILD_ARGS}"
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$PWD/../deps/build/destdir/usr/local" -DCMAKE_OSX_DEPLOYMENT_TARGET="10.13" -DSLIC3R_STATIC=1 ${BUILD_ARGS}
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo -n "[8/9] Building Slic3r..."
|
||||
@ -99,9 +140,14 @@ echo -n "[8/9] Building Slic3r..."
|
||||
|
||||
# make .mo
|
||||
make gettext_po_to_mo
|
||||
} &> $ROOT/build/Build.log # Capture all command output
|
||||
} #&> $ROOT/build/Build.log # Capture all command output
|
||||
echo "done"
|
||||
|
||||
echo "ls ROOT"
|
||||
ls $ROOT
|
||||
echo "ls ROOT/build"
|
||||
ls $ROOT/build
|
||||
echo "ls -al ROOT/build/src"
|
||||
ls -al $ROOT/build/src
|
||||
# Give proper permissions to script
|
||||
chmod 755 $ROOT/build/src/BuildMacOSImage.sh
|
||||
|
||||
@ -111,3 +157,5 @@ then
|
||||
else
|
||||
$ROOT/build/src/BuildMacOSImage.sh
|
||||
fi
|
||||
echo "ls -al ROOT/build"
|
||||
ls -al $ROOT/build
|
||||
|
19
deps/CMakeLists.txt
vendored
19
deps/CMakeLists.txt
vendored
@ -39,6 +39,21 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
option(DEP_WX_GTK3 "Build wxWidgets against GTK3" OFF)
|
||||
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)
|
||||
if (CMAKE_OSX_ARCHITECTURES AND _arch_idx LESS 0)
|
||||
set(IS_CROSS_COMPILE TRUE)
|
||||
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("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.
|
||||
# FIXME:
|
||||
# Enabling this option is not safe. IGL will compile itself with its own version of Eigen while
|
||||
@ -61,7 +76,7 @@ function(prusaslicer_add_cmake_project projectname)
|
||||
|
||||
set(_gen "")
|
||||
set(_build_j "-j${NPROC}")
|
||||
if (MSVC)
|
||||
if (MSVC)
|
||||
set(_gen CMAKE_GENERATOR "${DEP_MSVC_GEN}" CMAKE_GENERATOR_PLATFORM "${DEP_PLATFORM}")
|
||||
set(_build_j "/m")
|
||||
endif ()
|
||||
@ -79,6 +94,7 @@ if (MSVC)
|
||||
-DCMAKE_C_COMPILER:STRING=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_CXX_COMPILER:STRING=${CMAKE_CXX_COMPILER}
|
||||
-DBUILD_SHARED_LIBS:BOOL=OFF
|
||||
${_cmake_osx_arch}
|
||||
"${_configs_line}"
|
||||
${DEP_CMAKE_OPTS}
|
||||
${P_ARGS_CMAKE_ARGS}
|
||||
@ -181,6 +197,7 @@ if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8")
|
||||
DEPENDS dep_boost
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
${_cmake_args_osx_arch}
|
||||
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/dep_boost_polygon-prefix/src/dep_boost_polygon/include/boost/polygon"
|
||||
"${DESTDIR}/usr/local/include/boost/polygon"
|
||||
|
20
deps/GMP/GMP.cmake
vendored
20
deps/GMP/GMP.cmake
vendored
@ -22,10 +22,24 @@ else ()
|
||||
|
||||
if (APPLE)
|
||||
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()
|
||||
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")
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
set(_gmp_ccflags "${_gmp_ccflags} -march=armv7-a") # Works on RPi-4
|
||||
|
1
deps/MPFR/MPFR.cmake
vendored
1
deps/MPFR/MPFR.cmake
vendored
@ -24,6 +24,7 @@ else ()
|
||||
CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt}
|
||||
BUILD_COMMAND make -j
|
||||
INSTALL_COMMAND make install
|
||||
${_cmake_args_osx_arch}
|
||||
DEPENDS dep_GMP
|
||||
)
|
||||
endif ()
|
||||
|
40
deps/PNG/PNG.cmake
vendored
40
deps/PNG/PNG.cmake
vendored
@ -5,18 +5,36 @@ else ()
|
||||
set(_disable_neon_extension "")
|
||||
endif ()
|
||||
|
||||
prusaslicer_add_cmake_project(PNG
|
||||
GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||
GIT_TAG v1.6.35
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
CMAKE_ARGS
|
||||
-DPNG_SHARED=OFF
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_PREFIX=prusaslicer_
|
||||
-DPNG_TESTS=OFF
|
||||
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||
${_disable_neon_extension}
|
||||
if(APPLE AND IS_CROSS_COMPILE)
|
||||
# TODO: check if it doesn't create problem when compiling from arm to x86_64
|
||||
prusaslicer_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 ()
|
||||
prusaslicer_add_cmake_project(PNG
|
||||
GIT_REPOSITORY https://github.com/glennrp/libpng.git
|
||||
GIT_TAG v1.6.35
|
||||
DEPENDS ${ZLIB_PKG}
|
||||
CMAKE_ARGS
|
||||
-DPNG_SHARED=OFF
|
||||
-DPNG_STATIC=ON
|
||||
-DPNG_PREFIX=prusaslicer_
|
||||
-DPNG_TESTS=OFF
|
||||
-DDISABLE_DEPENDENCY_TRACKING=OFF
|
||||
${_disable_neon_extension}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_PNG)
|
||||
|
65
deps/PNG/macos-arm64.patch
vendored
Normal file
65
deps/PNG/macos-arm64.patch
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
Based on https://github.com/vespakoen/libpng to work around until
|
||||
https://github.com/glennrp/libpng/pull/354 is resolved.
|
||||
|
||||
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")
|
32
deps/deps-macos.cmake
vendored
32
deps/deps-macos.cmake
vendored
@ -15,6 +15,24 @@ set(DEP_CMAKE_OPTS
|
||||
|
||||
include("deps-unix-common.cmake")
|
||||
|
||||
if (IS_CROSS_COMPILE)
|
||||
if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
|
||||
set(_build_arch aarch64)
|
||||
elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64")
|
||||
set(_build_arch x86_64)
|
||||
endif()
|
||||
|
||||
if (${CMAKE_OSX_ARCHITECTURES} MATCHES "arm")
|
||||
set(_host_arch aarch64)
|
||||
set(_arch_flags "-arch arm64")
|
||||
elseif (${CMAKE_OSX_ARCHITECTURES} MATCHES "x86_64")
|
||||
set(_host_arch x86_64)
|
||||
set(_arch_flags "-arch x86_64")
|
||||
endif()
|
||||
set(_boost_linkflags "linkflags=${_arch_flags}")
|
||||
set(_build_tgt --build=${_build_arch}-apple-darwin --host=${_host_arch}-apple-darwin)
|
||||
set(_env_curl env "CFLAGS=${_arch_flags}")
|
||||
endif ()
|
||||
|
||||
ExternalProject_Add(dep_boost
|
||||
EXCLUDE_FROM_ALL 1
|
||||
@ -33,10 +51,11 @@ ExternalProject_Add(dep_boost
|
||||
variant=release
|
||||
threading=multi
|
||||
boost.locale.icu=off
|
||||
"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}"
|
||||
"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}"
|
||||
${_boost_linkflags}
|
||||
install
|
||||
INSTALL_COMMAND "" # b2 does that already
|
||||
)
|
||||
@ -46,7 +65,8 @@ ExternalProject_Add(dep_libcurl
|
||||
URL "https://curl.haxx.se/download/curl-7.58.0.tar.gz"
|
||||
URL_HASH SHA256=cc245bf9a1a42a45df491501d97d5593392a03f7b4f07b952793518d97666115
|
||||
BUILD_IN_SOURCE 1
|
||||
CONFIGURE_COMMAND ./configure
|
||||
CONFIGURE_COMMAND ${_env_curl} ./configure
|
||||
${_build_tgt}
|
||||
--enable-static
|
||||
--disable-shared
|
||||
"--with-ssl=${DESTDIR}/usr/local"
|
||||
@ -87,4 +107,4 @@ ExternalProject_Add(dep_libcurl
|
||||
INSTALL_COMMAND make install "DESTDIR=${DESTDIR}"
|
||||
)
|
||||
|
||||
add_dependencies(dep_openvdb dep_boost)
|
||||
add_dependencies(dep_openvdb dep_boost)
|
||||
|
27
deps/deps-unix-common.cmake
vendored
27
deps/deps-unix-common.cmake
vendored
@ -27,6 +27,7 @@ ExternalProject_Add(dep_tbb
|
||||
-DTBB_BUILD_TESTS=OFF
|
||||
-DCMAKE_CXX_FLAGS=${TBB_MINGW_WORKAROUND}
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
${_cmake_osx_arch}
|
||||
${DEP_CMAKE_OPTS}
|
||||
)
|
||||
|
||||
@ -34,7 +35,10 @@ ExternalProject_Add(dep_gtest
|
||||
EXCLUDE_FROM_ALL 1
|
||||
URL "https://github.com/google/googletest/archive/release-1.8.1.tar.gz"
|
||||
URL_HASH SHA256=9bf1fe5182a604b4135edc1a425ae356c9ad15e9b23f9f12a02e80184c3a249c
|
||||
CMAKE_ARGS -DBUILD_GMOCK=OFF ${DEP_CMAKE_OPTS} -DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
CMAKE_ARGS
|
||||
-DBUILD_GMOCK=OFF ${DEP_CMAKE_OPTS}
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
${_cmake_osx_arch}
|
||||
)
|
||||
|
||||
ExternalProject_Add(dep_cereal
|
||||
@ -44,6 +48,7 @@ ExternalProject_Add(dep_cereal
|
||||
CMAKE_ARGS
|
||||
-DJUST_INSTALL_CEREAL=on
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
${_cmake_osx_arch}
|
||||
${DEP_CMAKE_OPTS}
|
||||
)
|
||||
|
||||
@ -58,6 +63,7 @@ ExternalProject_Add(dep_nlopt
|
||||
-DNLOPT_MATLAB=OFF
|
||||
-DNLOPT_GUILE=OFF
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
${_cmake_osx_arch}
|
||||
${DEP_CMAKE_OPTS}
|
||||
)
|
||||
|
||||
@ -70,6 +76,7 @@ ExternalProject_Add(dep_qhull
|
||||
CMAKE_ARGS
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
${_cmake_osx_arch}
|
||||
${DEP_CMAKE_OPTS}
|
||||
)
|
||||
|
||||
@ -88,14 +95,30 @@ ExternalProject_Add(dep_blosc
|
||||
-DBUILD_TESTS=OFF
|
||||
-DBUILD_BENCHMARKS=OFF
|
||||
-DPREFER_EXTERNAL_ZLIB=ON
|
||||
${_cmake_osx_arch}
|
||||
PATCH_COMMAND ${GIT_EXECUTABLE} reset --hard && git clean -df &&
|
||||
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_SOURCE_DIR}/blosc-mods.patch
|
||||
)
|
||||
|
||||
# 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()
|
||||
endif()
|
||||
ExternalProject_Add(dep_openexr
|
||||
EXCLUDE_FROM_ALL 1
|
||||
GIT_REPOSITORY https://github.com/openexr/openexr.git
|
||||
GIT_TAG eae0e337c9f5117e78114fd05f7a415819df413a #v2.4.0
|
||||
${_openxr_list_sep}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_INSTALL_PREFIX=${DESTDIR}/usr/local
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
@ -104,6 +127,7 @@ ExternalProject_Add(dep_openexr
|
||||
-DPYILMBASE_ENABLE:BOOL=OFF
|
||||
-DOPENEXR_VIEWERS_ENABLE:BOOL=OFF
|
||||
-DOPENEXR_BUILD_UTILS:BOOL=OFF
|
||||
${_cmake_openexr_arch}
|
||||
)
|
||||
|
||||
ExternalProject_Add(dep_openvdb
|
||||
@ -124,6 +148,7 @@ ExternalProject_Add(dep_openvdb
|
||||
-DTBB_STATIC=ON
|
||||
-DOPENVDB_BUILD_VDB_PRINT=ON
|
||||
-DDISABLE_DEPENDENCY_VERSION_CHECKS=ON
|
||||
${_cmake_osx_arch}
|
||||
PATCH_COMMAND PATCH_COMMAND ${GIT_EXECUTABLE} checkout -f -- . && git clean -df &&
|
||||
${GIT_EXECUTABLE} apply --whitespace=fix ${CMAKE_CURRENT_SOURCE_DIR}/openvdb-mods.patch
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user