OpenVDS fails to build on MacOS if BUILD_CURL=ON
Building OpenVDS fails for me on MacOS if I want OpenVDS to build its own version of curl (-DBUILD_CURL=ON
, which is the default). The build passes if the system's curl is used (by setting -DBUILD_CURL=OFF
). I am also deactivating some I/O managers that I do not need so this may influence the behavior. The error message sounds like the linker is missing some (part) of curl when linking.
System
- Apple M1 Max CPU
- MacOS Ventura
- OpenVDS 3.4.0 checked out via git, but also
master
- cmake version 3.28.3
Build command
cmake -S . \
-B build \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_JAVA=OFF \
-DBUILD_PYTHON=ON \
-DBUILD_EXAMPLES=ON \
-DBUILD_TESTS=OFF \
-DBUILD_DOCS=OFF \
-DENABLE_OPENMP=ON \
-DDISABLE_AWS_IOMANAGER=ON \
-DDISABLE_AZURESDKFORCPP_IOMANAGER=OFF \
-DDISABLE_GCP_IOMANAGER=ON \
-DDISABLE_DMS_IOMANAGER=ON \
-DDISABLE_STRICT_WARNINGS=ON \
-DCMAKE_FIND_FRAMEWORK=LAST \
-DAUTO_ADJUST_UUID=OFF \
-DBUILD_CURL=ON \
-DCMAKE_INSTALL_PREFIX="${INSTALLATION_DIR}"
Error
[ 79%] Linking CXX shared library libopenvds.dylib
cd /Users/AEJ/software/compilescripts/openvds/openvds-3.4.0-src/build/src/OpenVDS && /opt/homebrew/Cellar/cmake/3.28.3/bin/cmake -E cmake_link_script CMakeFiles/openvds.dir/link.txt --verbose=1
ccache /Library/Developer/CommandLineTools/usr/bin/c++ -O3 -DNDEBUG -flto=thin -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -dynamiclib -Wl,-headerpad_max_install_names -s -compatibility_version 3.0.0 -current_version 3.4.0 -o libopenvds.3.4.0.dylib -install_name @rpath/libopenvds.3.dylib CMakeFiles/openvds_objects.dir/OpenVDS.cpp.o CMakeFiles/openvds_objects.dir/IO/File.cpp.o CMakeFiles/openvds_objects.dir/IO/Linux_File.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManager.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerAzureSdkForCpp.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerInMemory.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerCurl.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerAzurePresigned.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerHttp.cpp.o CMakeFiles/openvds_objects.dir/IO/IORefreshToken.cpp.o CMakeFiles/openvds_objects.dir/IO/IOManagerDmsProxy.cpp.o CMakeFiles/openvds_objects.dir/IO/DmsIoFactories/AzureDmsIoManagerFactory.cpp.o CMakeFiles/openvds_objects.dir/IO/DmsIoFactories/DmsIoManagerFactory.cpp.o CMakeFiles/openvds_objects.dir/IO/SslVerifyPeerEnv.cpp.o CMakeFiles/openvds_objects.dir/IO/SDPath.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataPartition.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataChannelMapping.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataLayer.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataLayoutImpl.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataChunk.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataRegion.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataHash.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataPageAccessorImpl.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataAccessManagerImpl.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataPageImpl.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataAccessor.cpp.o CMakeFiles/openvds_objects.dir/VDS/DimensionGroup.cpp.o CMakeFiles/openvds_objects.dir/VDS/ParseVDSJson.cpp.o CMakeFiles/openvds_objects.dir/VDS/MetadataManager.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataStore.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataStoreIOManager.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataStoreVDSFile.cpp.o CMakeFiles/openvds_objects.dir/VDS/DataBlock.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeDataRequestProcessor.cpp.o CMakeFiles/openvds_objects.dir/VDS/VolumeIndexer.cpp.o CMakeFiles/openvds_objects.dir/VDS/Env.cpp.o CMakeFiles/openvds_objects.dir/VDS/StringToDouble.cpp.o CMakeFiles/openvds_objects.dir/VDS/GlobalStateImpl.cpp.o CMakeFiles/openvds_objects.dir/VDS/WaveletAdaptiveLLDecompress.cpp.o CMakeFiles/openvds_objects.dir/VDS/WaveletDecompress.cpp.o CMakeFiles/openvds_objects.dir/VDS/WaveletInverseTransform.cpp.o CMakeFiles/openvds_objects.dir/VDS/WaveletTypes.cpp.o CMakeFiles/openvds_objects.dir/VDS/FSE/entropy_common.cpp.o CMakeFiles/openvds_objects.dir/VDS/FSE/fse_decompress.cpp.o CMakeFiles/openvds_objects.dir/VDS/Rle.cpp.o CMakeFiles/openvds_objects.dir/__/__/common/Base64/Base64.cpp.o "CMakeFiles/openvds_objects.dir/__/__/3rdparty/jsoncpp-1.8.4/src/lib_json/json_reader.cpp.o" "CMakeFiles/openvds_objects.dir/__/__/3rdparty/jsoncpp-1.8.4/src/lib_json/json_value.cpp.o" "CMakeFiles/openvds_objects.dir/__/__/3rdparty/jsoncpp-1.8.4/src/lib_json/json_writer.cpp.o" -Wl,-rpath,@executable_path -ldl -pthread ../../3rdparty/BuildAzureSdkForCpp/libazure-core.a ../../3rdparty/BuildLibXml2/libLibXml2.a libhue_bds_objects.a ../../fmt_9.1.0/libfmt.a ../../libuv_1.44.2_install/Release/lib/libuv_a.a ../../curl_7.85.0_install/Release/lib/libcurl.a ../../openssl_3.0.12_install/Release/lib/libssl.a ../../openssl_3.0.12_install/Release/lib/libcrypto.a ../../zlib_1.2.12_install/Release/lib/libz.a
ld: warning: -s is obsolete
ld: Undefined symbols:
_CFRelease, referenced from:
_Curl_resolv in libcurl.a[53](hostip.c.o)
_SCDynamicStoreCopyProxies, referenced from:
_Curl_resolv in libcurl.a[53](hostip.c.o)
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [src/OpenVDS/libopenvds.3.4.0.dylib] Error 1
make[1]: *** [src/OpenVDS/CMakeFiles/openvds.dir/all] Error 2
make: *** [all] Error 2