mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-09 10:16:50 +00:00
Merge branch 'main' into fix/clang-cl-windows-support
This commit is contained in:
4
deps/CMakeLists.txt
vendored
4
deps/CMakeLists.txt
vendored
@@ -422,6 +422,8 @@ endif ()
|
||||
|
||||
include(OCCT/OCCT.cmake)
|
||||
include(OpenCV/OpenCV.cmake)
|
||||
include(python3/python3.cmake)
|
||||
include(wxInspector/wxInspector.cmake)
|
||||
|
||||
set(_dep_list
|
||||
dep_Boost
|
||||
@@ -444,6 +446,8 @@ set(_dep_list
|
||||
${ZLIB_PKG}
|
||||
${EXPAT_PKG}
|
||||
dep_libnoise
|
||||
dep_python3
|
||||
dep_wxInspector
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
|
||||
8
deps/OpenSSL/OpenSSL.cmake
vendored
8
deps/OpenSSL/OpenSSL.cmake
vendored
@@ -52,6 +52,14 @@ ExternalProject_Add(dep_OpenSSL
|
||||
CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch}
|
||||
"--openssldir=${DESTDIR}"
|
||||
"--prefix=${DESTDIR}"
|
||||
# OpenSSL's linux-x86_64 target sets multilib=64, so it installs to
|
||||
# <prefix>/lib64 while every other dep uses <prefix>/lib. CPython's
|
||||
# --with-openssl only ever emits -L<dir>/lib, so it misses the bundled
|
||||
# static libs and silently links the system OpenSSL instead -- which,
|
||||
# against 1.1.1w headers, leaves _ssl.so with an undefined
|
||||
# SSL_get_peer_certificate (removed in OpenSSL 3.x). Pin libdir so the
|
||||
# prefix stays single-layout.
|
||||
"--libdir=lib"
|
||||
${_cross_comp_prefix_line}
|
||||
no-shared
|
||||
no-asm
|
||||
|
||||
71
deps/python3/01-windows-nuget.patch
vendored
Normal file
71
deps/python3/01-windows-nuget.patch
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
From b32e63f75046d186d93ee7d627c978f2f7c892f3 Mon Sep 17 00:00:00 2001
|
||||
From: Steve Dower <steve.dower@python.org>
|
||||
Date: Fri, 10 Jul 2026 14:04:00 +0100
|
||||
Subject: [PATCH] [3.13] gh-153438: Update NuGet download URL (GH-153482)
|
||||
(GH-153515)
|
||||
|
||||
gh-153438: Update NuGet download URL (GH-153482)
|
||||
(cherry picked from commit 106eb532ea3b243423e62a702719e9d3c0e40c16)
|
||||
(cherry picked from commit 62eb50d65d538dda5164f9c4a097a896454a0d1c)
|
||||
|
||||
Co-authored-by: Steve Dower <steve.dower@python.org>
|
||||
Co-authored-by: Harjoth Khara <harjoth.khara@gmail.com>
|
||||
---
|
||||
Doc/using/windows.rst | 6 +++---
|
||||
.../Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst | 2 ++
|
||||
PCbuild/find_python.bat | 2 +-
|
||||
Tools/msi/get_externals.bat | 2 +-
|
||||
4 files changed, 7 insertions(+), 5 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst
|
||||
|
||||
diff --git a/Doc/using/windows.rst b/Doc/using/windows.rst
|
||||
index 2a507675044666..4800789ca2d6cc 100644
|
||||
--- a/Doc/using/windows.rst
|
||||
+++ b/Doc/using/windows.rst
|
||||
@@ -414,9 +414,9 @@ on using nuget. What follows is a summary that is sufficient for Python
|
||||
developers.
|
||||
|
||||
The ``nuget.exe`` command line tool may be downloaded directly from
|
||||
-``https://aka.ms/nugetclidl``, for example, using curl or PowerShell. With the
|
||||
-tool, the latest version of Python for 64-bit or 32-bit machines is installed
|
||||
-using::
|
||||
+``https://dist.nuget.org/win-x86-commandline/latest/nuget.exe``, for example,
|
||||
+using curl or PowerShell. With the tool, the latest version of Python for
|
||||
+64-bit or 32-bit machines is installed using::
|
||||
|
||||
nuget.exe install python -ExcludeVersion -OutputDirectory .
|
||||
nuget.exe install pythonx86 -ExcludeVersion -OutputDirectory .
|
||||
diff --git a/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst b/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst
|
||||
new file mode 100644
|
||||
index 00000000000000..edab8e6ba7b259
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Build/2026-07-09-22-45-00.gh-issue-153438.Qr7N2p.rst
|
||||
@@ -0,0 +1,2 @@
|
||||
+Update Windows build and installer tooling and documentation to use the
|
||||
+current download URL for ``nuget.exe``.
|
||||
diff --git a/PCbuild/find_python.bat b/PCbuild/find_python.bat
|
||||
index 0af367a3efafad..9612a2860ef9c3 100644
|
||||
--- a/PCbuild/find_python.bat
|
||||
+++ b/PCbuild/find_python.bat
|
||||
@@ -52,7 +52,7 @@
|
||||
@set _Py_HOST_PYTHON=%HOST_PYTHON%
|
||||
@if "%_Py_HOST_PYTHON%"=="" set _Py_HOST_PYTHON=py
|
||||
@if "%_Py_NUGET%"=="" (set _Py_NUGET=%_Py_EXTERNALS_DIR%\nuget.exe)
|
||||
-@if "%_Py_NUGET_URL%"=="" (set _Py_NUGET_URL=https://aka.ms/nugetclidl)
|
||||
+@if "%_Py_NUGET_URL%"=="" (set _Py_NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe)
|
||||
@if NOT exist "%_Py_NUGET%" (
|
||||
@if not "%_Py_Quiet%"=="1" @echo Downloading nuget...
|
||||
@rem NB: Must use single quotes around NUGET here, NOT double!
|
||||
diff --git a/Tools/msi/get_externals.bat b/Tools/msi/get_externals.bat
|
||||
index f6602ce9588ff4..c7c7e9f470bc25 100644
|
||||
--- a/Tools/msi/get_externals.bat
|
||||
+++ b/Tools/msi/get_externals.bat
|
||||
@@ -6,7 +6,7 @@ set HERE=%~dp0
|
||||
if "%PCBUILD%"=="" (set PCBUILD=%HERE%..\..\PCbuild\)
|
||||
if "%EXTERNALS_DIR%"=="" (set EXTERNALS_DIR=%HERE%..\..\externals\windows-installer)
|
||||
if "%NUGET%"=="" (set NUGET=%EXTERNALS_DIR%\..\nuget.exe)
|
||||
-if "%NUGET_URL%"=="" (set NUGET_URL=https://aka.ms/nugetclidl)
|
||||
+if "%NUGET_URL%"=="" (set NUGET_URL=https://dist.nuget.org/win-x86-commandline/latest/nuget.exe)
|
||||
|
||||
set DO_FETCH=true
|
||||
set DO_CLEAN=false
|
||||
279
deps/python3/python3.cmake
vendored
Normal file
279
deps/python3/python3.cmake
vendored
Normal file
@@ -0,0 +1,279 @@
|
||||
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(NPROC)
|
||||
|
||||
set(_python_version "3.12.13")
|
||||
string(REGEX REPLACE "^([0-9]+\\.[0-9]+)\\..*" "\\1" _python_version_short "${_python_version}")
|
||||
set(_python_url "https://www.python.org/ftp/python/${_python_version}/Python-${_python_version}.tar.xz")
|
||||
set(_python_sha256 "c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684")
|
||||
|
||||
|
||||
set(_patch_cmd "")
|
||||
if(WIN32)
|
||||
|
||||
# Fix python build failure on Windows if python is not available, due to wrong nuget download URL
|
||||
# See https://github.com/python/cpython/issues/153438
|
||||
# Patch from https://github.com/python/cpython/pull/153608
|
||||
# This patch has not been merged to 3.12 yet so we need to apply it manually
|
||||
set(_patch_cmd git init && ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/01-windows-nuget.patch)
|
||||
|
||||
if(MSVC_VERSION EQUAL 1800)
|
||||
set(_python_platform_toolset v120)
|
||||
elseif(MSVC_VERSION EQUAL 1900)
|
||||
set(_python_platform_toolset v140)
|
||||
elseif(MSVC_VERSION LESS 1920)
|
||||
set(_python_platform_toolset v141)
|
||||
elseif(MSVC_VERSION LESS 1930)
|
||||
set(_python_platform_toolset v142)
|
||||
elseif(MSVC_VERSION LESS 1950)
|
||||
set(_python_platform_toolset v143)
|
||||
elseif(MSVC_VERSION LESS 1960)
|
||||
set(_python_platform_toolset v145)
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported MSVC version for CPython build: ${MSVC_VERSION}")
|
||||
endif()
|
||||
|
||||
# 64-bit-hosted MSBuild selection (see the build-step comment below). Default
|
||||
# to the amd64 host + x64 tools; only the native ARM64 build differs.
|
||||
set(_python_msbuild_host amd64)
|
||||
set(_python_tool_arch x64)
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|aarch64")
|
||||
set(_python_pcbuild_platform ARM64)
|
||||
set(_python_layout_arch arm64)
|
||||
set(_python_pcbuild_output_dir arm64)
|
||||
set(_python_msbuild_host arm64) # native ARM64 MSBuild already hosts arm64 tools
|
||||
set(_python_tool_arch "")
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(_python_pcbuild_platform x64)
|
||||
set(_python_layout_arch amd64)
|
||||
set(_python_pcbuild_output_dir amd64)
|
||||
else()
|
||||
set(_python_pcbuild_platform Win32)
|
||||
set(_python_layout_arch win32)
|
||||
set(_python_pcbuild_output_dir win32)
|
||||
endif()
|
||||
|
||||
set(_python_pcbuild_config Release)
|
||||
set(_python_layout_debug OFF)
|
||||
if(DEFINED DEP_DEBUG AND DEP_DEBUG)
|
||||
set(_python_pcbuild_config Debug)
|
||||
set(_python_layout_debug ON)
|
||||
endif()
|
||||
|
||||
# CPython's PCbuild needs a 64-bit-hosted toolchain: find_msbuild.bat picks the
|
||||
# 32-bit Bin\MSBuild.exe, whose x86 cl.exe/link.exe run out of address space
|
||||
# (fatal C1002 "out of heap space") building the LTCG-optimized pythoncore.
|
||||
# That 32-bit MSBuild ignores PreferredToolArchitecture, so build.bat must be
|
||||
# pointed at a 64-bit MSBuild via the MSBUILD env var. The native arm64 MSBuild
|
||||
# then hosts arm64 tools on its own; the amd64 MSBuild still defaults to x86, so
|
||||
# PreferredToolArchitecture pins it to x64. Scoped to this build step, so
|
||||
# CPython's own sources stay untouched.
|
||||
set(_python_env_args "GIT_CEILING_DIRECTORIES=<SOURCE_DIR>/..")
|
||||
if(CMAKE_GENERATOR_INSTANCE) # empty for non-VS generators (e.g. Ninja)
|
||||
set(_python_msbuild "${CMAKE_GENERATOR_INSTANCE}/MSBuild/Current/Bin/${_python_msbuild_host}/MSBuild.exe")
|
||||
if(EXISTS "${_python_msbuild}")
|
||||
file(TO_NATIVE_PATH "${_python_msbuild}" _python_msbuild_native)
|
||||
list(APPEND _python_env_args "MSBUILD=${_python_msbuild_native}")
|
||||
else()
|
||||
# Loud signal: a silent fall-through to the 32-bit MSBuild reintroduces C1002.
|
||||
message(WARNING "Bundled Python: 64-bit MSBuild not found at '${_python_msbuild}'. "
|
||||
"CPython will fall back to find_msbuild.bat's default (32-bit) MSBuild, which may "
|
||||
"fail with C1002 (out of heap space) building the optimized pythoncore.")
|
||||
endif()
|
||||
endif()
|
||||
if(_python_tool_arch)
|
||||
list(APPEND _python_env_args "PreferredToolArchitecture=${_python_tool_arch}")
|
||||
endif()
|
||||
|
||||
set(_conf_cmd
|
||||
cmd /c "echo /p:PlatformToolset=${_python_platform_toolset}>PCbuild\\msbuild.rsp"
|
||||
)
|
||||
set(_build_cmd
|
||||
${CMAKE_COMMAND} -E env ${_python_env_args}
|
||||
cmd /c PCbuild\\build.bat
|
||||
-p ${_python_pcbuild_platform}
|
||||
-c ${_python_pcbuild_config}
|
||||
--no-tkinter
|
||||
)
|
||||
set(_install_cmd
|
||||
${CMAKE_COMMAND}
|
||||
-DPYTHON_SOURCE_DIR=<SOURCE_DIR>
|
||||
-DPYTHON_BUILD_DIR=<SOURCE_DIR>/PCbuild/${_python_pcbuild_output_dir}
|
||||
-DPYTHON_DEST_DIR=${DESTDIR}/libpython
|
||||
-DPYTHON_LAYOUT_ARCH=${_python_layout_arch}
|
||||
-DPYTHON_DEBUG=${_python_layout_debug}
|
||||
-P ${CMAKE_CURRENT_LIST_DIR}/stage_windows.cmake
|
||||
)
|
||||
elseif(APPLE)
|
||||
# macOS configuration
|
||||
if(CMAKE_OSX_ARCHITECTURES)
|
||||
set(_python_target_arch "${CMAKE_OSX_ARCHITECTURES}")
|
||||
else()
|
||||
set(_python_target_arch "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
|
||||
if(CMAKE_SYSTEM_PROCESSOR MATCHES "ARM64|arm64|aarch64")
|
||||
set(_python_build_arch aarch64)
|
||||
set(_python_build_arch_flag "arm64")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64|amd64")
|
||||
set(_python_build_arch x86_64)
|
||||
set(_python_build_arch_flag "x86_64")
|
||||
else()
|
||||
set(_python_build_arch "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set(_python_build_arch_flag "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
|
||||
if(_python_target_arch MATCHES "ARM64|arm64|aarch64")
|
||||
set(_python_host_arch aarch64)
|
||||
set(_python_arch_flag "arm64")
|
||||
elseif(_python_target_arch MATCHES "x86_64|AMD64|amd64")
|
||||
set(_python_host_arch x86_64)
|
||||
set(_python_arch_flag "x86_64")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported macOS Python target architecture: ${_python_target_arch}")
|
||||
endif()
|
||||
|
||||
set(_python_arch_flags "-arch ${_python_arch_flag} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
# No -rpath: all other deps are static, so libpython has no shared
|
||||
# dependencies to find there. headerpad reserves load-command space for
|
||||
# the post-install -add_rpath below.
|
||||
set(_python_ldflags "${_python_arch_flags} -Wl,-headerpad_max_install_names")
|
||||
|
||||
if(IS_CROSS_COMPILE)
|
||||
set(_python_build_tgt --build=${_python_build_arch}-apple-darwin --host=${_python_host_arch}-apple-darwin)
|
||||
set(_python_build_arch_flags "-arch ${_python_build_arch_flag} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
set(_python_build_ldflags "${_python_build_arch_flags} -Wl,-rpath,${DESTDIR}/lib")
|
||||
set(_python_build_python_dir "<SOURCE_DIR>/build-python-host")
|
||||
set(_python_build_python "${_python_build_python_dir}/python")
|
||||
set(_conf_cmd
|
||||
/bin/sh -c
|
||||
"rm -rf '${_python_build_python_dir}' && \
|
||||
mkdir -p '${_python_build_python_dir}' && \
|
||||
cd '${_python_build_python_dir}' && \
|
||||
env \
|
||||
CC='${CMAKE_C_COMPILER}' \
|
||||
CXX='${CMAKE_CXX_COMPILER}' \
|
||||
CFLAGS='${_python_build_arch_flags}' \
|
||||
CXXFLAGS='${_python_build_arch_flags}' \
|
||||
LDFLAGS='${_python_build_ldflags}' \
|
||||
MACOSX_DEPLOYMENT_TARGET='${CMAKE_OSX_DEPLOYMENT_TARGET}' \
|
||||
../configure \
|
||||
--prefix='${_python_build_python_dir}/install' \
|
||||
--enable-shared \
|
||||
--without-static-libpython \
|
||||
--disable-test-modules \
|
||||
--build=${_python_build_arch}-apple-darwin && \
|
||||
make -j${NPROC} python && \
|
||||
cd '<SOURCE_DIR>' && \
|
||||
env \
|
||||
CC='${CMAKE_C_COMPILER}' \
|
||||
CXX='${CMAKE_CXX_COMPILER}' \
|
||||
CFLAGS='${_python_arch_flags}' \
|
||||
CXXFLAGS='${_python_arch_flags}' \
|
||||
LDFLAGS='${_python_ldflags}' \
|
||||
MACOSX_DEPLOYMENT_TARGET='${CMAKE_OSX_DEPLOYMENT_TARGET}' \
|
||||
./configure \
|
||||
--prefix='${DESTDIR}/libpython' \
|
||||
--enable-shared \
|
||||
--enable-optimizations \
|
||||
--without-static-libpython \
|
||||
--with-openssl='${DESTDIR}' \
|
||||
--disable-test-modules \
|
||||
${_python_build_tgt} \
|
||||
--with-build-python='${_python_build_python}' \
|
||||
py_cv_module__tkinter=n/a"
|
||||
)
|
||||
else()
|
||||
set(_python_build_tgt --build=${_python_host_arch}-apple-darwin)
|
||||
set(_conf_cmd
|
||||
env
|
||||
"CC=${CMAKE_C_COMPILER}"
|
||||
"CXX=${CMAKE_CXX_COMPILER}"
|
||||
"CFLAGS=${_python_arch_flags}"
|
||||
"CXXFLAGS=${_python_arch_flags}"
|
||||
"LDFLAGS=${_python_ldflags}"
|
||||
"MACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}"
|
||||
./configure
|
||||
--prefix=${DESTDIR}/libpython
|
||||
--enable-shared
|
||||
--enable-optimizations
|
||||
--without-static-libpython
|
||||
--with-openssl=${DESTDIR}
|
||||
--disable-test-modules
|
||||
${_python_build_tgt}
|
||||
# Tcl/Tk 9.0 (e.g. from Homebrew) is incompatible with CPython 3.12's
|
||||
# _tkinter; OrcaSlicer's embedded Python does not need tkinter anyway.
|
||||
py_cv_module__tkinter=n/a
|
||||
)
|
||||
endif()
|
||||
set(_build_cmd make -j${NPROC})
|
||||
|
||||
# CPython stamps libpython with an absolute install name ($prefix/lib/...),
|
||||
# which every consumer inherits at link time and which only exists on the
|
||||
# build host. Normalize once here, before anything links against the dep:
|
||||
# give the dylib an @rpath id and teach the interpreter to find it relative
|
||||
# to itself. Consumers then just need an rpath entry (src/CMakeLists.txt).
|
||||
# install_name_tool invalidates code signatures, so re-sign ad-hoc; CI
|
||||
# re-signs the whole bundle with the real identity later.
|
||||
# ld collapses '//' in -install_name (but not in -rpath) strings, while
|
||||
# ${DESTDIR} ends with a slash -- collapse slashes so -change matches the
|
||||
# recorded install name.
|
||||
string(REGEX REPLACE "/+" "/" _python_prefix "${DESTDIR}/libpython")
|
||||
set(_python_dylib "${_python_prefix}/lib/libpython${_python_version_short}.dylib")
|
||||
set(_python_bin "${_python_prefix}/bin/python${_python_version_short}")
|
||||
set(_install_cmd make install
|
||||
COMMAND install_name_tool -id "@rpath/libpython${_python_version_short}.dylib" "${_python_dylib}"
|
||||
COMMAND install_name_tool -change "${_python_dylib}" "@rpath/libpython${_python_version_short}.dylib" "${_python_bin}"
|
||||
COMMAND install_name_tool -add_rpath "@loader_path/../lib" "${_python_bin}"
|
||||
COMMAND codesign --force --sign - "${_python_dylib}"
|
||||
COMMAND codesign --force --sign - "${_python_bin}"
|
||||
)
|
||||
else()
|
||||
# Linux/Unix
|
||||
# Kept verbatim, no slash normalization (unlike the macOS branch's
|
||||
# collapsed copy): the LDFLAGS rpath below is recorded byte-for-byte in
|
||||
# the ELF, and the OLD_RPATH handed to relocate_linux.cmake must match it
|
||||
# exactly -- both derive from this one variable to make that structural.
|
||||
set(_python_prefix "${DESTDIR}/libpython")
|
||||
# The rpath points at libpython's real install dir, so the interpreter runs
|
||||
# in-tree pre-relocation -- and, critically, it reserves enough RUNPATH
|
||||
# bytes for the in-place $ORIGIN rewrite at install time (Flatpak's
|
||||
# DESTDIR is the short /app) -- see relocate_linux.cmake.
|
||||
set(_conf_cmd ./configure
|
||||
--prefix=${_python_prefix}
|
||||
--enable-shared
|
||||
--enable-optimizations
|
||||
--with-openssl=${DESTDIR}
|
||||
--without-static-libpython
|
||||
--disable-test-modules
|
||||
# Tcl/Tk 9.0 is incompatible with CPython 3.12's _tkinter; not needed here.
|
||||
py_cv_module__tkinter=n/a
|
||||
LDFLAGS=-Wl,-rpath,${_python_prefix}/lib
|
||||
)
|
||||
set(_build_cmd make -j${NPROC})
|
||||
set(_install_cmd make install
|
||||
COMMAND ${CMAKE_COMMAND}
|
||||
"-DPYTHON_BIN=${_python_prefix}/bin/python${_python_version_short}"
|
||||
"-DOLD_RPATH=${_python_prefix}/lib"
|
||||
-P "${CMAKE_CURRENT_LIST_DIR}/relocate_linux.cmake"
|
||||
)
|
||||
endif()
|
||||
|
||||
ExternalProject_Add(dep_python3
|
||||
URL "${_python_url}"
|
||||
URL_HASH SHA256=${_python_sha256}
|
||||
PATCH_COMMAND ${_patch_cmd}
|
||||
DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/python3
|
||||
BUILD_IN_SOURCE ON
|
||||
CONFIGURE_COMMAND ${_conf_cmd}
|
||||
BUILD_COMMAND ${_build_cmd}
|
||||
INSTALL_COMMAND ${_install_cmd}
|
||||
)
|
||||
|
||||
# Python depends on OpenSSL and ZLIB
|
||||
if(TARGET dep_OpenSSL)
|
||||
add_dependencies(dep_python3 dep_OpenSSL)
|
||||
endif()
|
||||
if(TARGET dep_ZLIB)
|
||||
add_dependencies(dep_python3 dep_ZLIB)
|
||||
endif()
|
||||
10
deps/python3/relocate_linux.cmake
vendored
Normal file
10
deps/python3/relocate_linux.cmake
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
# Repoint the installed interpreter's RUNPATH from the absolute deps dir to a
|
||||
# self-relative entry so the bundled runtime is relocatable (the deps tree,
|
||||
# Flatpak /app/libpython, and AppImage $APPDIR/lib/python all keep bin/ and
|
||||
# lib/ as siblings). $ORIGIN is expanded by the dynamic loader; CMake leaves
|
||||
# it alone (only ${...} is expanded here). RPATH_CHANGE edits the ELF in
|
||||
# place, so the new entry must not be longer than the old one: the reserved
|
||||
# ${DESTDIR}/libpython/lib is at least 18 bytes even for the shortest
|
||||
# supported DESTDIR (Flatpak's /app), longer than the 14-byte $ORIGIN/../lib.
|
||||
# Invoked from python3.cmake with -DPYTHON_BIN=... -DOLD_RPATH=...
|
||||
file(RPATH_CHANGE FILE "${PYTHON_BIN}" OLD_RPATH "${OLD_RPATH}" NEW_RPATH "$ORIGIN/../lib")
|
||||
72
deps/python3/stage_windows.cmake
vendored
Normal file
72
deps/python3/stage_windows.cmake
vendored
Normal file
@@ -0,0 +1,72 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
set(_python_abi "312")
|
||||
|
||||
foreach(_var PYTHON_SOURCE_DIR PYTHON_BUILD_DIR PYTHON_DEST_DIR PYTHON_LAYOUT_ARCH)
|
||||
if(NOT DEFINED ${_var} OR "${${_var}}" STREQUAL "")
|
||||
message(FATAL_ERROR "${_var} is required")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(_python_exe "${PYTHON_BUILD_DIR}/python.exe")
|
||||
if(PYTHON_DEBUG)
|
||||
set(_python_exe "${PYTHON_BUILD_DIR}/python_d.exe")
|
||||
endif()
|
||||
|
||||
if(NOT EXISTS "${_python_exe}")
|
||||
message(FATAL_ERROR "Built Python executable not found: ${_python_exe}")
|
||||
endif()
|
||||
|
||||
file(REMOVE_RECURSE "${PYTHON_DEST_DIR}")
|
||||
file(MAKE_DIRECTORY "${PYTHON_DEST_DIR}")
|
||||
|
||||
# CPython's Windows layout helper reads LICENSE.txt from the build output.
|
||||
# Source archives ship this file as LICENSE, so provide the expected name.
|
||||
if(EXISTS "${PYTHON_SOURCE_DIR}/LICENSE" AND NOT EXISTS "${PYTHON_BUILD_DIR}/LICENSE.txt")
|
||||
configure_file("${PYTHON_SOURCE_DIR}/LICENSE" "${PYTHON_BUILD_DIR}/LICENSE.txt" COPYONLY)
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND
|
||||
"${CMAKE_COMMAND}" -E env
|
||||
"PYTHONHOME="
|
||||
"PYTHONPATH=${PYTHON_SOURCE_DIR}/Lib"
|
||||
"${_python_exe}"
|
||||
"${PYTHON_SOURCE_DIR}/PC/layout"
|
||||
--source "${PYTHON_SOURCE_DIR}"
|
||||
--build "${PYTHON_BUILD_DIR}"
|
||||
--arch "${PYTHON_LAYOUT_ARCH}"
|
||||
--copy "${PYTHON_DEST_DIR}"
|
||||
--include-dev
|
||||
WORKING_DIRECTORY "${PYTHON_SOURCE_DIR}"
|
||||
RESULT_VARIABLE _layout_result
|
||||
)
|
||||
|
||||
if(NOT _layout_result EQUAL 0)
|
||||
message(FATAL_ERROR "CPython Windows layout staging failed with exit code ${_layout_result}")
|
||||
endif()
|
||||
|
||||
set(_required_files
|
||||
"${PYTHON_DEST_DIR}/Lib/encodings/__init__.py"
|
||||
"${PYTHON_DEST_DIR}/include/Python.h"
|
||||
)
|
||||
|
||||
if(PYTHON_DEBUG)
|
||||
list(APPEND _required_files
|
||||
"${PYTHON_DEST_DIR}/python_d.exe"
|
||||
"${PYTHON_DEST_DIR}/python${_python_abi}_d.dll"
|
||||
"${PYTHON_DEST_DIR}/libs/python${_python_abi}_d.lib"
|
||||
)
|
||||
else()
|
||||
list(APPEND _required_files
|
||||
"${PYTHON_DEST_DIR}/python.exe"
|
||||
"${PYTHON_DEST_DIR}/python${_python_abi}.dll"
|
||||
"${PYTHON_DEST_DIR}/libs/python${_python_abi}.lib"
|
||||
)
|
||||
endif()
|
||||
|
||||
foreach(_required_file IN LISTS _required_files)
|
||||
if(NOT EXISTS "${_required_file}")
|
||||
message(FATAL_ERROR "Staged Python file missing: ${_required_file}")
|
||||
endif()
|
||||
endforeach()
|
||||
13
deps/wxInspector/wxInspector.cmake
vendored
Normal file
13
deps/wxInspector/wxInspector.cmake
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
orcaslicer_add_cmake_project(
|
||||
wxInspector
|
||||
URL https://github.com/Noisyfox/wxInspector/archive/refs/tags/v1.0.0.zip
|
||||
URL_HASH SHA256=0ba163956f2d468b19a91b96c5aba66ee9610843ea41dda628ea44cdafde7db7
|
||||
DEPENDS ${WXWIDGETS_PKG}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_CXX_FLAGS="-DwxDEBUG_LEVEL=0"
|
||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
||||
)
|
||||
|
||||
if (MSVC)
|
||||
add_debug_dep(dep_wxInspector)
|
||||
endif ()
|
||||
1
deps/wxWidgets/wxWidgets.cmake
vendored
1
deps/wxWidgets/wxWidgets.cmake
vendored
@@ -26,6 +26,7 @@ orcaslicer_add_cmake_project(
|
||||
GIT_REPOSITORY "https://github.com/SoftFever/Orca-deps-wxWidgets"
|
||||
GIT_TAG v3.3.2
|
||||
GIT_SHALLOW ON
|
||||
GIT_SUBMODULES 3rdparty/catch 3rdparty/pcre 3rdparty/libwebp
|
||||
DEPENDS ${PNG_PKG} ${ZLIB_PKG} ${EXPAT_PKG} ${JPEG_PKG}
|
||||
PATCH_COMMAND git apply --verbose --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/0001-Clang-CL-fix.patch
|
||||
CMAKE_ARGS
|
||||
|
||||
Reference in New Issue
Block a user