Skip to content

Commit 714e7fb

Browse files
committed
* Introduce macosx-arm64 builds to presets for OpenBLAS, OpenCV (issue #1069)
1 parent fbe1e52 commit 714e7fb

File tree

10 files changed

+60
-15
lines changed

10 files changed

+60
-15
lines changed

.github/workflows/openblas.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,10 @@ jobs:
6969
container: centos:7
7070
steps:
7171
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
72+
macosx-arm64:
73+
runs-on: macos-10.15
74+
steps:
75+
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
7276
macosx-x86_64:
7377
runs-on: macos-10.15
7478
steps:
@@ -82,7 +86,7 @@ jobs:
8286
steps:
8387
- uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions
8488
redeploy:
85-
needs: [android-arm, android-arm64, android-x86, android-x86_64, ios-arm64, ios-x86_64, linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-x86_64, windows-x86, windows-x86_64]
89+
needs: [android-arm, android-arm64, android-x86, android-x86_64, ios-arm64, ios-x86_64, linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-arm64, macosx-x86_64, windows-x86, windows-x86_64]
8690
runs-on: ubuntu-18.04
8791
steps:
8892
- uses: bytedeco/javacpp-presets/.github/actions/redeploy@actions

.github/workflows/opencv.yml

+5-1
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ jobs:
7272
ext: ["", -gpu]
7373
steps:
7474
- uses: bytedeco/javacpp-presets/.github/actions/deploy-centos@actions
75+
macosx-arm64:
76+
runs-on: macos-10.15
77+
steps:
78+
- uses: bytedeco/javacpp-presets/.github/actions/deploy-macosx@actions
7579
macosx-x86_64:
7680
runs-on: macos-10.15
7781
steps:
@@ -88,7 +92,7 @@ jobs:
8892
steps:
8993
- uses: bytedeco/javacpp-presets/.github/actions/deploy-windows@actions
9094
redeploy:
91-
needs: [android-arm, android-arm64, android-x86, android-x86_64, ios-arm64, ios-x86_64, linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-x86_64, windows-x86, windows-x86_64]
95+
needs: [android-arm, android-arm64, android-x86, android-x86_64, ios-arm64, ios-x86_64, linux-armhf, linux-arm64, linux-ppc64le, linux-x86, linux-x86_64, macosx-arm64, macosx-x86_64, windows-x86, windows-x86_64]
9296
runs-on: ubuntu-18.04
9397
steps:
9498
- uses: bytedeco/javacpp-presets/.github/actions/redeploy@actions

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
* Include new `llvm-c/Transforms/PassBuilder.h` header file in presets for LLVM ([pull #1093](https://github.com/bytedeco/javacpp-presets/pull/1093))
3-
* Introduce `macosx-arm64` builds to presets for LLVM ([pull #1092](https://github.com/bytedeco/javacpp-presets/pull/1092))
3+
* Introduce `macosx-arm64` builds to presets for OpenBLAS, OpenCV ([issue #1069](https://github.com/bytedeco/javacpp-presets/issues/1069)), LLVM ([pull #1092](https://github.com/bytedeco/javacpp-presets/pull/1092))
44
* Add presets for LZ4 1.9.3 ([pull #1094](https://github.com/bytedeco/javacpp-presets/pull/1094)), Triton Inference Server 2.14 ([pull #1085](https://github.com/bytedeco/javacpp-presets/pull/1085))
55
* Add presets for the NvToolsExt (NVTX) module of CUDA ([issue #1068](https://github.com/bytedeco/javacpp-presets/issues/1068))
66
* Increase the amount of function pointers available for callbacks in presets for Qt ([pull #1080](https://github.com/bytedeco/javacpp-presets/pull/1080))

openblas/cppbuild.sh

+12-1
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,18 @@ case $PLATFORM in
196196
export BINARY=64
197197
export TARGET=ARMV8
198198
;;
199-
macosx-*)
199+
macosx-arm64)
200+
patch -Np1 < ../../../OpenBLAS-macosx.patch
201+
patch -Np1 -d ../OpenBLAS-$OPENBLAS_VERSION-nolapack/ < ../../../OpenBLAS-macosx.patch
202+
export CC="clang -arch arm64"
203+
export FC=
204+
export LDFLAGS='-s -Wl,-rpath,@loader_path/'
205+
export NO_LAPACK=1
206+
export NOFORTRAN=1
207+
export BINARY=64
208+
export TARGET=ARMV8
209+
;;
210+
macosx-x86_64)
200211
patch -Np1 < ../../../OpenBLAS-macosx.patch
201212
patch -Np1 -d ../OpenBLAS-$OPENBLAS_VERSION-nolapack/ < ../../../OpenBLAS-macosx.patch
202213
export CC="$(ls -1 /usr/local/bin/gcc-? | head -n 1)"

openblas/platform/pom.xml

+8-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@
9696
<version>${project.version}</version>
9797
<classifier>${javacpp.platform.linux-ppc64le}</classifier>
9898
</dependency>
99+
<dependency>
100+
<groupId>${project.groupId}</groupId>
101+
<artifactId>${javacpp.moduleId}</artifactId>
102+
<version>${project.version}</version>
103+
<classifier>${javacpp.platform.macosx-arm64}</classifier>
104+
</dependency>
99105
<dependency>
100106
<groupId>${project.groupId}</groupId>
101107
<artifactId>${javacpp.moduleId}</artifactId>
@@ -126,7 +132,7 @@
126132
<configuration>
127133
<archive>
128134
<manifestEntries>
129-
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
135+
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-macosx-arm64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
130136
</manifestEntries>
131137
</archive>
132138
</configuration>
@@ -182,6 +188,7 @@
182188
requires static org.bytedeco.${javacpp.moduleId}.linux.armhf;
183189
requires static org.bytedeco.${javacpp.moduleId}.linux.arm64;
184190
requires static org.bytedeco.${javacpp.moduleId}.linux.ppc64le;
191+
requires static org.bytedeco.${javacpp.moduleId}.macosx.arm64;
185192
requires static org.bytedeco.${javacpp.moduleId}.macosx.x86_64;
186193
requires static org.bytedeco.${javacpp.moduleId}.windows.x86;
187194
requires static org.bytedeco.${javacpp.moduleId}.windows.x86_64;

openblas/src/main/java/org/bytedeco/openblas/presets/openblas.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2016-2020 Samuel Audet
2+
* Copyright (C) 2016-2021 Samuel Audet
33
*
44
* Licensed either under the Apache License, Version 2.0, or (at your option)
55
* under the terms of the GNU General Public License as published by
@@ -37,7 +37,7 @@
3737
@Platform(
3838
include = {"openblas_config.h", "cblas.h"}),
3939
@Platform(
40-
value = {"linux", "macosx", "windows"},
40+
value = {"linux", "macosx-x86_64", "windows"},
4141
include = {"openblas_config.h", "cblas.h", "lapacke_config.h", "lapacke_mangling.h", "lapack.h", "lapacke.h", "lapacke_utils.h"})})
4242
@NoException
4343
public class openblas extends openblas_nolapack {

openblas/src/main/java/org/bytedeco/openblas/presets/openblas_nolapack.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747
preload = {"gcc_s@.1", "quadmath@.0", "gfortran@.5", "gfortran@.4", "gfortran@.3", "openblas@.0#openblas_nolapack@.0"},
4848
preloadpath = {"/opt/intel/oneapi/mkl/latest/lib/", "/opt/intel/oneapi/compiler/latest/mac/compiler/lib/"}),
4949
@Platform(value = "android", link = "openblas", preload = ""),
50-
@Platform(value = "macosx", preloadpath = {"/usr/local/lib/gcc/8/", "/usr/local/lib/gcc/7/", "/usr/local/lib/gcc/6/", "/usr/local/lib/gcc/5/"}),
50+
@Platform(value = "macosx-x86_64", preloadpath = {"/usr/local/lib/gcc/8/", "/usr/local/lib/gcc/7/", "/usr/local/lib/gcc/6/", "/usr/local/lib/gcc/5/"}),
5151
@Platform(value = "windows", preload = "libopenblas#libopenblas_nolapack"),
5252
@Platform(value = "windows-x86", preloadpath = {"C:/Program Files (x86)/Intel/oneAPI/mkl/latest/redist/ia32/",
5353
"C:/Program Files (x86)/Intel/oneAPI/compiler/latest/windows/redist/ia32_win/compiler/"}),

opencv/cppbuild.sh

+16-6
Original file line numberDiff line numberDiff line change
@@ -371,14 +371,24 @@ case $PLATFORM in
371371
cp ../share/java/opencv4/libopencv_java.so ../lib
372372
sedinplace "s/.so.${OPENCV_VERSION%-*}/.so/g" ../lib/cmake/opencv4/OpenCVModules-release.cmake
373373
;;
374-
macosx-*)
374+
macosx-arm64)
375375
# also use pthreads on Mac for increased usability and more consistent behavior with Linux
376376
sedinplace '/IF HAVE_GCD/d' CMakeLists.txt
377-
# remove spurious "lib" lib
378-
sedinplace '/if.*(HAVE_CUDA)/a\
379-
list(REMOVE_ITEM CUDA_LIBRARIES lib)\
380-
' CMakeLists.txt cmake/OpenCVModule.cmake cmake/OpenCVDetectCUDA.cmake
381-
CC="clang" CXX="clang++" $CMAKE -DCMAKE_INSTALL_PREFIX="$INSTALL_PATH" -DCMAKE_INSTALL_LIBDIR="lib" $BUILD_X -DENABLE_PRECOMPILED_HEADERS=OFF $WITH_X $GPU_FLAGS -DCUDA_HOST_COMPILER=/usr/bin/clang++ $BUILD_CONTRIB_X -DCMAKE_CXX_FLAGS="-w" .
377+
CC="clang -arch arm64" CXX="clang++ -arch arm64" $CMAKE -DAARCH64=ON -DENABLE_NEON=OFF -DENABLE_SSE=OFF -DCMAKE_INSTALL_PREFIX="$INSTALL_PATH" -DCMAKE_INSTALL_LIBDIR="lib" $BUILD_X -DBUILD_opencv_python3=OFF -DENABLE_PRECOMPILED_HEADERS=OFF $WITH_X $GPU_FLAGS $BUILD_CONTRIB_X -DCMAKE_CXX_FLAGS="-w" .
378+
# download files CMake failed to download
379+
if [[ -f download_with_curl.sh ]]; then
380+
bash download_with_curl.sh
381+
$CMAKE .
382+
fi
383+
make -j $MAKEJ
384+
make install/strip
385+
cp ../share/java/opencv4/libopencv_java.dylib ../lib
386+
sedinplace "s/.${OPENCV_VERSION%-*}.dylib/.dylib/g" ../lib/cmake/opencv4/OpenCVModules-release.cmake
387+
;;
388+
macosx-x86_64)
389+
# also use pthreads on Mac for increased usability and more consistent behavior with Linux
390+
sedinplace '/IF HAVE_GCD/d' CMakeLists.txt
391+
CC="clang -arch x86_64" CXX="clang++ -arch x86_64" $CMAKE -DCMAKE_INSTALL_PREFIX="$INSTALL_PATH" -DCMAKE_INSTALL_LIBDIR="lib" $BUILD_X -DENABLE_PRECOMPILED_HEADERS=OFF $WITH_X $GPU_FLAGS $BUILD_CONTRIB_X -DCMAKE_CXX_FLAGS="-w" .
382392
# download files CMake failed to download
383393
if [[ -f download_with_curl.sh ]]; then
384394
bash download_with_curl.sh

opencv/platform/pom.xml

+8-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@
9696
<version>${project.version}</version>
9797
<classifier>${javacpp.platform.linux-ppc64le}</classifier>
9898
</dependency>
99+
<dependency>
100+
<groupId>${project.groupId}</groupId>
101+
<artifactId>${javacpp.moduleId}</artifactId>
102+
<version>${project.version}</version>
103+
<classifier>${javacpp.platform.macosx-arm64}</classifier>
104+
</dependency>
99105
<dependency>
100106
<groupId>${project.groupId}</groupId>
101107
<artifactId>${javacpp.moduleId}</artifactId>
@@ -126,7 +132,7 @@
126132
<configuration>
127133
<archive>
128134
<manifestEntries>
129-
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
135+
<Class-Path>${javacpp.moduleId}.jar ${javacpp.moduleId}-linux-x86.jar ${javacpp.moduleId}-linux-x86_64.jar ${javacpp.moduleId}-linux-armhf.jar ${javacpp.moduleId}-linux-arm64.jar ${javacpp.moduleId}-linux-ppc64le.jar ${javacpp.moduleId}-macosx-arm64.jar ${javacpp.moduleId}-macosx-x86_64.jar ${javacpp.moduleId}-windows-x86.jar ${javacpp.moduleId}-windows-x86_64.jar</Class-Path>
130136
</manifestEntries>
131137
</archive>
132138
</configuration>
@@ -182,6 +188,7 @@
182188
requires static org.bytedeco.${javacpp.moduleId}.linux.armhf;
183189
requires static org.bytedeco.${javacpp.moduleId}.linux.arm64;
184190
requires static org.bytedeco.${javacpp.moduleId}.linux.ppc64le;
191+
requires static org.bytedeco.${javacpp.moduleId}.macosx.arm64;
185192
requires static org.bytedeco.${javacpp.moduleId}.macosx.x86_64;
186193
requires static org.bytedeco.${javacpp.moduleId}.windows.x86;
187194
requires static org.bytedeco.${javacpp.moduleId}.windows.x86_64;

pom.xml

+2
Original file line numberDiff line numberDiff line change
@@ -1433,6 +1433,8 @@
14331433
</property>
14341434
</activation>
14351435
<modules>
1436+
<module>opencv</module>
1437+
<module>openblas</module>
14361438
<module>llvm</module>
14371439
</modules>
14381440
<properties>

0 commit comments

Comments
 (0)