-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbuild_mlpack.osx.sh
More file actions
executable file
·71 lines (61 loc) · 1.87 KB
/
build_mlpack.osx.sh
File metadata and controls
executable file
·71 lines (61 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/usr/bin/env bash
#
# Build mlpack's Python bindings inside the cibuildwheel environment.
set -e -u -o pipefail
brew install --force cereal gcc cmake
pip install cython numpy pandas wheel setuptools packaging
export rootdir=`pwd`
# Armadillo must be installed by hand.
#
# If we are building for an arm64 target, then we want to disable everything
# except OpenBLAS.
wget https://files.mlpack.org/armadillo-11.4.1.tar.gz
tar -xvzpf armadillo-11.4.1.tar.gz
cd armadillo-11.4.1/
if [ "$CIBW_ARCHS_MACOS" == "x86_64" ];
then
cmake \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_ARCHITECTURES="$CIBW_ARCHS_MACOS" \
-DDETECT_HDF5=OFF \
.
elif [ "$CIBW_ARCHS_MACOS" == "arm64" ];
then
cmake \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DCMAKE_OSX_ARCHITECTURES="$CIBW_ARCHS_MACOS" \
-DDETECT_HDF5=OFF \
.
else
echo "Unknown architecture \"$CIBW_ARCHS_MACOS\"!"
exit 1
fi
make
sudo make install # So that libarmadillo.dylib is available in the search path.
cd ../
rm -f armadillo-11.4.1.tar.gz
# ensmallen must also be installed by hand.
wget https://www.ensmallen.org/files/ensmallen-2.19.0.tar.gz
tar -xvzpf ensmallen-2.19.0.tar.gz
rm -f ensmallen-2.19.0.tar.gz
wget https://www.mlpack.org/files/stb.tar.gz
tar -xvzpf stb.tar.gz
rm -rf stb.tar.gz
cd mlpack/
rm -rf build/
mkdir build
cd build/
# _LIBCPP_DISABLE_AVAILABILITY is required to avoid compilation errors claiming
# that any_cast is not available.
cmake \
-DBUILD_PYTHON_BINDINGS=ON \
-DCMAKE_OSX_ARCHITECTURES="$CIBW_ARCHS_MACOS" \
-DCMAKE_CXX_FLAGS="-D_LIBCPP_DISABLE_AVAILABILITY" \
-DBUILD_CLI_EXECUTABLES=OFF \
-DENSMALLEN_INCLUDE_DIR="$PWD/../../ensmallen-2.19.0/include/" \
-DSTB_IMAGE_INCLUDE_DIR="$PWD/../../stb/include/" \
-DCMAKE_INSTALL_PREFIX="$PWD/../install" \
../
make -j4
# Revert to a version of packaging that is sufficient for delocate-wheel.
pip install "packaging>=20.9"