@@ -19,8 +19,11 @@ run_quiet() {
1919# libbson_arm64.a, libbson_x86_64.a, libbson_universal.a
2020# libmongoc_arm64.a, libmongoc_x86_64.a, libmongoc_universal.a
2121#
22- # OpenSSL is built from source to match the app's deployment target,
23- # preventing "Symbol not found" crashes from Homebrew-built libraries.
22+ # Uses macOS SecureTransport (ENABLE_SSL=DARWIN) for TLS so that
23+ # certificate verification uses the system Keychain automatically.
24+ # Note: SecureTransport is deprecated by Apple but still functional on
25+ # macOS 14+. It supports TLS 1.2 (no 1.3). MongoDB Atlas accepts TLS 1.2.
26+ # libmongoc does not support Network.framework as a TLS backend.
2427#
2528# All libraries are built with MACOSX_DEPLOYMENT_TARGET=14.0 to match
2629# the app's minimum deployment target.
@@ -35,8 +38,6 @@ run_quiet() {
3538
3639DEPLOY_TARGET=" 14.0"
3740MONGOC_VERSION=" 1.28.1"
38- OPENSSL_VERSION=" 3.4.1"
39- OPENSSL_SHA256=" 002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3"
4041MONGOC_SHA256=" a93259840f461b28e198311e32144f5f8dc9fbd74348029f2793774d781bb7da"
4142
4243ARCH=" ${1:- both} "
@@ -46,7 +47,7 @@ LIBS_DIR="$PROJECT_DIR/Libs"
4647BUILD_DIR=" $( mktemp -d) "
4748NCPU=$( sysctl -n hw.ncpu)
4849
49- echo " 🔧 Building static libmongoc $MONGOC_VERSION + OpenSSL $OPENSSL_VERSION "
50+ echo " 🔧 Building static libmongoc $MONGOC_VERSION (SecureTransport) "
5051echo " Deployment target: macOS $DEPLOY_TARGET "
5152echo " Architecture: $ARCH "
5253echo " Build dir: $BUILD_DIR "
@@ -61,12 +62,6 @@ trap cleanup EXIT
6162download_sources () {
6263 echo " 📥 Downloading source tarballs..."
6364
64- if [ ! -f " $BUILD_DIR /openssl-$OPENSSL_VERSION .tar.gz" ]; then
65- curl -fSL " https://github.com/openssl/openssl/releases/download/openssl-$OPENSSL_VERSION /openssl-$OPENSSL_VERSION .tar.gz" \
66- -o " $BUILD_DIR /openssl-$OPENSSL_VERSION .tar.gz"
67- fi
68- echo " $OPENSSL_SHA256 $BUILD_DIR /openssl-$OPENSSL_VERSION .tar.gz" | shasum -a 256 -c -
69-
7065 if [ ! -f " $BUILD_DIR /mongo-c-driver-$MONGOC_VERSION .tar.gz" ]; then
7166 curl -fSL " https://github.com/mongodb/mongo-c-driver/releases/download/$MONGOC_VERSION /mongo-c-driver-$MONGOC_VERSION .tar.gz" \
7267 -o " $BUILD_DIR /mongo-c-driver-$MONGOC_VERSION .tar.gz"
@@ -76,46 +71,8 @@ download_sources() {
7671 echo " ✅ Sources downloaded"
7772}
7873
79- build_openssl () {
80- local arch=$1
81- local prefix=" $BUILD_DIR /install-openssl-$arch "
82-
83- echo " "
84- echo " 🔨 Building OpenSSL $OPENSSL_VERSION for $arch ..."
85-
86- # Extract fresh copy for this arch
87- rm -rf " $BUILD_DIR /openssl-$OPENSSL_VERSION -$arch "
88- mkdir -p " $BUILD_DIR /openssl-$OPENSSL_VERSION -$arch "
89- tar xzf " $BUILD_DIR /openssl-$OPENSSL_VERSION .tar.gz" -C " $BUILD_DIR /openssl-$OPENSSL_VERSION -$arch " --strip-components=1
90-
91- cd " $BUILD_DIR /openssl-$OPENSSL_VERSION -$arch "
92-
93- local target
94- if [ " $arch " = " arm64" ]; then
95- target=" darwin64-arm64-cc"
96- else
97- target=" darwin64-x86_64-cc"
98- fi
99-
100- MACOSX_DEPLOYMENT_TARGET=$DEPLOY_TARGET \
101- ./Configure \
102- " $target " \
103- no-shared \
104- no-tests \
105- no-apps \
106- no-docs \
107- --prefix=" $prefix " \
108- -mmacosx-version-min=$DEPLOY_TARGET > /dev/null 2>&1
109-
110- run_quiet make -j" $NCPU "
111- run_quiet make install_sw
112-
113- echo " ✅ OpenSSL $arch : $( ls -lh " $prefix /lib/libssl.a" | awk ' {print $5}' ) (libssl) $( ls -lh " $prefix /lib/libcrypto.a" | awk ' {print $5}' ) (libcrypto)"
114- }
115-
11674build_mongoc () {
11775 local arch=$1
118- local openssl_prefix=" $BUILD_DIR /install-openssl-$arch "
11976 local prefix=" $BUILD_DIR /install-mongoc-$arch "
12077
12178 echo " "
@@ -139,12 +96,6 @@ build_mongoc() {
13996 mkdir -p " $build_dir "
14097 cd " $build_dir "
14198
142- # Resolve OpenSSL library path (may be lib/ or lib64/)
143- local openssl_lib_dir=" $openssl_prefix /lib"
144- if [ -f " $openssl_prefix /lib64/libssl.a" ]; then
145- openssl_lib_dir=" $openssl_prefix /lib64"
146- fi
147-
14899 run_quiet env MACOSX_DEPLOYMENT_TARGET=$DEPLOY_TARGET \
149100 cmake .. \
150101 -DCMAKE_INSTALL_PREFIX=" $prefix " \
@@ -159,13 +110,9 @@ build_mongoc() {
159110 -DENABLE_SRV=ON \
160111 -DENABLE_ZLIB=SYSTEM \
161112 -DENABLE_ZSTD=OFF \
162- -DENABLE_SSL=OPENSSL \
113+ -DENABLE_SSL=DARWIN \
163114 -DENABLE_TESTS=OFF \
164- -DENABLE_EXAMPLES=OFF \
165- -DOPENSSL_ROOT_DIR=" $openssl_prefix " \
166- -DOPENSSL_INCLUDE_DIR=" $openssl_prefix /include" \
167- -DOPENSSL_SSL_LIBRARY=" $openssl_lib_dir /libssl.a" \
168- -DOPENSSL_CRYPTO_LIBRARY=" $openssl_lib_dir /libcrypto.a"
115+ -DENABLE_EXAMPLES=OFF
169116
170117 run_quiet cmake --build . --parallel " $NCPU "
171118 run_quiet cmake --install .
@@ -226,7 +173,6 @@ create_universal() {
226173
227174build_for_arch () {
228175 local arch=$1
229- build_openssl " $arch "
230176 build_mongoc " $arch "
231177 install_libs " $arch "
232178 # Install headers once (they're arch-independent)
0 commit comments