Skip to content

Commit bcfec3f

Browse files
committed
Build macOS packages via vcpkg
1 parent 42cd284 commit bcfec3f

File tree

1 file changed

+11
-178
lines changed

1 file changed

+11
-178
lines changed

pkg/mac/build-static-library.sh

Lines changed: 11 additions & 178 deletions
Original file line numberDiff line numberDiff line change
@@ -19,185 +19,18 @@
1919
#
2020

2121
set -ex
22-
cd `dirname $0`
22+
cd `dirname $0`/../..
2323

24-
python3 -m venv venv
25-
source venv/bin/activate
26-
python3 -m pip install pyyaml
27-
28-
MACOSX_DEPLOYMENT_TARGET=10.15
29-
if [[ -z ${ARCH} ]]; then
30-
ARCH=`uname -m`
31-
fi
32-
33-
BUILD_DIR=$PWD/.build
34-
INSTALL_DIR=$PWD/.install
35-
PREFIX=$BUILD_DIR/install
36-
mkdir -p $BUILD_DIR
37-
cp -f ../../build-support/dep-version.py $BUILD_DIR/
38-
cp -f ../../dependencies.yaml $BUILD_DIR/
39-
40-
pushd $BUILD_DIR
41-
42-
BOOST_VERSION=$(./dep-version.py boost)
43-
ZLIB_VERSION=$(./dep-version.py zlib)
44-
OPENSSL_VERSION=$(./dep-version.py openssl)
45-
PROTOBUF_VERSION=$(./dep-version.py protobuf)
46-
ZSTD_VERSION=$(./dep-version.py zstd)
47-
SNAPPY_VERSION=$(./dep-version.py snappy)
48-
CURL_VERSION=$(./dep-version.py curl)
49-
50-
if [ ! -f boost/.done ]; then
51-
echo "Building Boost $BOOST_VERSION"
52-
curl -O -L https://github.com/boostorg/boost/releases/download/boost-${BOOST_VERSION}/boost-${BOOST_VERSION}.tar.gz
53-
tar zxf boost-${BOOST_VERSION}.tar.gz
54-
mkdir -p $PREFIX/include
55-
pushd boost-${BOOST_VERSION}
56-
./bootstrap.sh
57-
./b2 headers
58-
cp -rf boost $PREFIX/include/
59-
popd
60-
mkdir -p boost
61-
touch boost/.done
62-
else
63-
echo "Using cached Boost $BOOST_VERSION"
64-
fi
65-
66-
if [ ! -f zlib-${ZLIB_VERSION}/.done ]; then
67-
echo "Building ZLib $ZLIB_VERSION"
68-
curl -O -L https://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz
69-
tar zxf zlib-${ZLIB_VERSION}.tar.gz
70-
pushd zlib-$ZLIB_VERSION
71-
CFLAGS="-fPIC -O3 -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" ./configure --prefix=$PREFIX
72-
make -j16
73-
make install
74-
touch .done
75-
popd
76-
else
77-
echo "Using cached ZLib $ZLIB_VERSION"
78-
fi
79-
80-
OPENSSL_VERSION_UNDERSCORE=$(echo $OPENSSL_VERSION | sed 's/\./_/g')
81-
if [ ! -f openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.done ]; then
82-
echo "Building OpenSSL $OPENSSL_VERSION"
83-
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_$OPENSSL_VERSION_UNDERSCORE.tar.gz
84-
tar zxf OpenSSL_$OPENSSL_VERSION_UNDERSCORE.tar.gz
85-
86-
pushd openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}
87-
if [[ $ARCH = 'arm64' ]]; then
88-
PLATFORM=darwin64-arm64-cc
89-
else
90-
PLATFORM=darwin64-x86_64-cc
91-
fi
92-
CFLAGS="-fPIC -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
93-
./Configure --prefix=$PREFIX no-shared no-unit-test $PLATFORM
94-
make -j8 >/dev/null
95-
make install_sw >/dev/null
96-
popd
97-
98-
touch openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.done
99-
else
100-
echo "Using cached OpenSSL $OPENSSL_VERSION"
101-
fi
102-
103-
if [ ! -f protobuf-${PROTOBUF_VERSION}/.done ]; then
104-
echo "Building Protobuf $PROTOBUF_VERSION"
105-
curl -O -L https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-cpp-${PROTOBUF_VERSION}.tar.gz
106-
tar zxf protobuf-cpp-${PROTOBUF_VERSION}.tar.gz
107-
pushd protobuf-${PROTOBUF_VERSION}
108-
pushd cmake/
109-
# Build protoc that can run on both x86 and arm architectures
110-
cmake -B build -DCMAKE_CXX_FLAGS="-fPIC -arch x86_64 -arch arm64 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
111-
-Dprotobuf_BUILD_TESTS=OFF \
112-
-DCMAKE_INSTALL_PREFIX=$PREFIX
113-
cmake --build build -j16 --target install
114-
popd
115-
116-
# Retain the library for one architecture so that `ar` can work on the library
117-
pushd $PREFIX/lib
118-
mv libprotobuf.a libprotobuf_universal.a
119-
lipo libprotobuf_universal.a -thin ${ARCH} -output libprotobuf.a
120-
popd
121-
touch .done
122-
popd
123-
else
124-
echo "Using cached Protobuf $PROTOBUF_VERSION"
125-
fi
126-
127-
if [ ! -f zstd-${ZSTD_VERSION}/.done ]; then
128-
echo "Building ZStd $ZSTD_VERSION"
129-
curl -O -L https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSION}/zstd-${ZSTD_VERSION}.tar.gz
130-
tar zxf zstd-${ZSTD_VERSION}.tar.gz
131-
pushd zstd-${ZSTD_VERSION}
132-
CFLAGS="-fPIC -O3 -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" PREFIX=$PREFIX \
133-
make -j16 -C lib install-static install-includes
134-
touch .done
135-
popd
136-
else
137-
echo "Using cached ZStd $ZSTD_VERSION"
138-
fi
139-
140-
if [ ! -f snappy-${SNAPPY_VERSION}/.done ]; then
141-
echo "Building Snappy $SNAPPY_VERSION"
142-
curl -O -L https://github.com/google/snappy/archive/refs/tags/${SNAPPY_VERSION}.tar.gz
143-
tar zxf ${SNAPPY_VERSION}.tar.gz
144-
pushd snappy-${SNAPPY_VERSION}
145-
# Without this patch, snappy 1.10 will report a sign-compare error, which cannot be suppressed with the -Wno-sign-compare option in CI
146-
curl -O -L https://raw.githubusercontent.com/microsoft/vcpkg/2024.02.14/ports/snappy/no-werror.patch
147-
patch <no-werror.patch
148-
CXXFLAGS="-fPIC -O3 -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
149-
cmake . -DCMAKE_INSTALL_PREFIX=$PREFIX -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF
150-
make -j16
151-
make install
152-
touch .done
153-
popd
154-
else
155-
echo "Using cached Snappy $SNAPPY_VERSION"
156-
fi
157-
158-
if [ ! -f curl-${CURL_VERSION}/.done ]; then
159-
echo "Building LibCurl $CURL_VERSION"
160-
CURL_VERSION_=${CURL_VERSION//./_}
161-
curl -O -L https://github.com/curl/curl/releases/download/curl-${CURL_VERSION_}/curl-${CURL_VERSION}.tar.gz
162-
tar zxf curl-${CURL_VERSION}.tar.gz
163-
pushd curl-${CURL_VERSION}
164-
# Force the compiler to find the OpenSSL headers instead of the headers in the system path like /usr/local/include/openssl.
165-
cp -rf $PREFIX/include/openssl include/
166-
CFLAGS="-I$PREFIX/include -fPIC -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
167-
./configure --with-ssl=$PREFIX \
168-
--without-nghttp2 \
169-
--without-libidn2 \
170-
--disable-ldap \
171-
--without-brotli \
172-
--without-secure-transport \
173-
--without-librtmp \
174-
--disable-ipv6 \
175-
--without-libpsl \
176-
--host=$ARCH-apple-darwin \
177-
--prefix=$PREFIX
178-
make -j16 install
179-
touch .done
180-
popd
181-
else
182-
echo "Using cached LibCurl $CURL_VERSION"
183-
fi
184-
185-
popd # pkg/mac
186-
cd ../../ # project root
187-
188-
# TODO: add it only for debugging
189-
ls $PREFIX/lib
190-
for file in $(ls $PREFIX/lib/*.a); do file $file; done
191-
192-
cmake -B build-static -DCMAKE_OSX_DEPLOYMENT_TARGET=$MACOSX_DEPLOYMENT_TARGET \
193-
-DLINK_STATIC=ON \
24+
INSTALL_DIR=$PWD/pkg/mac/.install
25+
cmake -B build-osx -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 \
26+
-DINTEGRATE_VCPKG=ON \
27+
-DCMAKE_BUILD_TYPE=Release \
19428
-DBUILD_TESTS=OFF \
29+
-DBUILD_PERF_TOOLS=OFF \
19530
-DBUILD_DYNAMIC_LIB=ON \
19631
-DBUILD_STATIC_LIB=ON \
197-
-DCMAKE_OSX_ARCHITECTURES=${ARCH} \
198-
-DCMAKE_PREFIX_PATH=$PREFIX \
199-
-DOPENSSL_ROOT_DIR=$PREFIX \
200-
-DPROTOC_PATH=$PREFIX/bin/protoc \
201-
-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR \
202-
-DCMAKE_BUILD_TYPE=Release
203-
cmake --build build-static -j16 --target install
32+
-DCMAKE_INSTALL_PREFIX=$INSTALL_DIR
33+
cmake --build build-osx -j16
34+
35+
./build-support/merge_archives_vcpkg.sh $PWD/build-osx
36+
cp ./build-osx/libpulsarwithdeps.a $INSTALL_DIR/lib/

0 commit comments

Comments
 (0)