diff --git a/.github/actions/deploy-macosx/action.yml b/.github/actions/deploy-macosx/action.yml index f02483e9597..690321c6aaa 100644 --- a/.github/actions/deploy-macosx/action.yml +++ b/.github/actions/deploy-macosx/action.yml @@ -55,15 +55,15 @@ runs: otool -L /usr/local/lib/gcc/10/*.dylib fi - sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libomp.dylib /usr/local/opt/libomp/lib/libomp.dylib - sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libSDL2-2.0.0.dylib /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib - sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libusb-1.0.0.dylib /usr/local/opt/libusb/lib/libusb-1.0.0.dylib + sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libomp.dylib `brew ls libomp|grep libomp.dylib` + sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libSDL2-2.0.0.dylib `brew ls sdl2|grep libSDL2-2.0.0.dylib` + sudo install_name_tool -add_rpath @loader_path/. -id @rpath/libusb-1.0.0.dylib `brew ls libusb|grep libusb-1.0.0.dylib` curl -LO https://archive.apache.org/dist/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz sudo tar -xzf apache-maven-3.6.3-bin.tar.gz -C /usr/local/opt sudo ln -sf /usr/local/opt/apache-maven-3.6.3/bin/mvn /usr/local/bin/mvn - python3 -m pip install gdown || python3 -m pip install gdown + PIP_BREAK_SYSTEM_PACKAGES=1 python3 -m pip install gdown || python3 -m pip install gdown # Install vulkan sdk echo Installing Vulkan SDK @@ -108,6 +108,11 @@ runs: export DYLD_LIBRARY_PATH="$LIBRARY_PATH" export DYLD_FALLBACK_LIBRARY_PATH="$LIBRARY_PATH" + # Change default JVM on macos-14 runner + if [[ -n ${JAVA_HOME_17_arm64:-} ]]; then + export JAVA_HOME=$JAVA_HOME_17_arm64 + fi + git --version clang --version /usr/local/bin/gcc-* --version || true diff --git a/.github/workflows/cpython.yml b/.github/workflows/cpython.yml index 825806beb3c..a64ea8a021c 100644 --- a/.github/workflows/cpython.yml +++ b/.github/workflows/cpython.yml @@ -37,6 +37,10 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: bytedeco/javacpp-presets/.github/actions/deploy-ubuntu@actions + macosx-arm64: + runs-on: macos-14 + steps: + - uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions macosx-x86_64: runs-on: macos-12 steps: @@ -50,7 +54,7 @@ jobs: steps: - uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions redeploy: - needs: [linux-x86_64, macosx-x86_64, windows-x86_64] + needs: [linux-x86_64, macosx-arm64, macosx-x86_64, windows-x86_64] # needs: [linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-x86_64, windows-x86, windows-x86_64] runs-on: ubuntu-20.04 steps: diff --git a/CHANGELOG.md b/CHANGELOG.md index 656148ef97b..641a5e4ffa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ + * Introduce `macosx-arm64` builds for CPython ([pull #1511](https://github.com/bytedeco/javacpp-presets/pull/1511)) * Update and fix the sample code of the presets for LLVM ([pull #1501](https://github.com/bytedeco/javacpp-presets/pull/1501)) * Fix Vulkan GPU acceleration for FFmpeg ([pull #1497](https://github.com/bytedeco/javacpp-presets/pull/1497)) * Build FFmpeg with zimg to enable zscale filter ([pull #1481](https://github.com/bytedeco/javacpp-presets/pull/1481)) diff --git a/cpython/cppbuild.sh b/cpython/cppbuild.sh index ee84b4d45d6..de188be6d81 100755 --- a/cpython/cppbuild.sh +++ b/cpython/cppbuild.sh @@ -141,7 +141,23 @@ case $PLATFORM in make -j $MAKEJ make install ;; - macosx-*) + macosx-arm64) + cd ../$OPENSSL + ./Configure darwin64-arm64 -fPIC no-shared --prefix=$INSTALL_PATH --libdir=lib + make -s -j $MAKEJ + make install_sw + + # Without this variable, cpython will pick up openssl 1.1 from homebrew + export PYTHON_BUILD_SKIP_HOMEBREW=1 + cd ../Python-$CPYTHON_VERSION + sedinplace 's/libintl.h//g' configure + sedinplace 's/ac_cv_lib_intl_textdomain=yes/ac_cv_lib_intl_textdomain=no/g' configure + ./configure --prefix=$INSTALL_PATH --enable-shared --with-openssl=$INSTALL_PATH LDFLAGS='-s -Wl,-rpath,@loader_path/,-rpath,@loader_path/../,-rpath,@loader_path/../lib/' ac_cv_working_openssl_hashlib=yes ac_cv_working_openssl_ssl=yes + sedinplace 's:-install_name,$(prefix)/lib/:-install_name,@rpath/:g' Makefile + make -j $MAKEJ + make install + ;; + macosx-x86_64) cd ../$OPENSSL ./Configure darwin64-x86_64-cc -fPIC no-shared --prefix=$INSTALL_PATH --libdir=lib make -s -j $MAKEJ diff --git a/cpython/platform/pom.xml b/cpython/platform/pom.xml index fc53fd3f1f7..2780f734e10 100644 --- a/cpython/platform/pom.xml +++ b/cpython/platform/pom.xml @@ -60,6 +60,12 @@ ${project.version} ${javacpp.platform.linux-x86_64} + + ${project.groupId} + ${javacpp.moduleId} + ${project.version} + ${javacpp.platform.macosx-arm64} + ${project.groupId} ${javacpp.moduleId} @@ -90,7 +96,7 @@ - ${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar + ${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-macosx-arm64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar @@ -140,6 +146,7 @@ // requires static org.bytedeco.${javacpp.moduleId}.linux.ppc64le; // requires static org.bytedeco.${javacpp.moduleId}.linux.x86; requires static org.bytedeco.${javacpp.moduleId}.linux.x86_64; + requires static org.bytedeco.${javacpp.moduleId}.macosx.arm64; requires static org.bytedeco.${javacpp.moduleId}.macosx.x86_64; // requires static org.bytedeco.${javacpp.moduleId}.windows.x86; requires static org.bytedeco.${javacpp.moduleId}.windows.x86_64; diff --git a/pom.xml b/pom.xml index f9338860b7e..6c2f5ccf3b1 100644 --- a/pom.xml +++ b/pom.xml @@ -1461,6 +1461,7 @@ ffmpeg lz4 openblas + cpython llvm libffi libpostal