Skip to content

Conversation

@threecgreen
Copy link
Contributor

This pull request fixes an issue where the CMake build was missing linking against CFNetwork, which is used in the non-blocking getaddrinfo logic on macOS. This wasn't caught in CI because the tests use plain make on macOS.

Example error when building the httplib tests on mac:

[1/2] Linking CXX executable test/httplib-test
FAILED: [code=1] test/httplib-test test/httplib-test[1]_tests.cmake /Users/carter/git/cpp-httplib/build/test/httplib-test[1]_tests.cmake
: && /usr/bin/c++ -arch arm64 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/homebrew/opt/openssl@3/lib test/CMakeFiles/httplib-test.dir/test.cc.o test/CMakeFiles/httplib-test.dir/include_httplib.cc.o -o test/httplib-test  /opt/homebrew/lib/libgtest_main.a  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd  -framework CoreFoundation -framework Security  /opt/homebrew/Cellar/brotli/1.2.0/lib/libbrotlicommon.dylib  /opt/homebrew/Cellar/brotli/1.2.0/lib/libbrotlienc.dylib  /opt/homebrew/Cellar/brotli/1.2.0/lib/libbrotlidec.dylib  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libz.tbd  /opt/homebrew/lib/libzstd.a  /opt/homebrew/Cellar/openssl@3/3.6.0/lib/libssl.dylib  /opt/homebrew/Cellar/openssl@3/3.6.0/lib/libcrypto.dylib  /opt/homebrew/lib/libgtest.a  /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib/libcurl.tbd && cd /Users/carter/git/cpp-httplib/build/test && /opt/homebrew/bin/cmake -D TEST_TARGET=httplib-test -D TEST_EXECUTABLE=/Users/carter/git/cpp-httplib/build/test/httplib-test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/Users/carter/git/cpp-httplib/build/test -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=httplib-test_TESTS -D CTEST_FILE=/Users/carter/git/cpp-httplib/build/test/httplib-test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -D TEST_DISCOVERY_EXTRA_ARGS= -D TEST_XML_OUTPUT_DIR= -P /opt/homebrew/share/cmake/Modules/GoogleTestAddTests.cmake
Undefined symbols for architecture arm64:
  "_CFHostCancelInfoResolution", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
  "_CFHostCreateWithName", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
  "_CFHostGetAddressing", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long)::'lambda'(__CFHost*, CFHostInfoType, CFStreamError const*, void*)::operator()(__CFHost*, CFHostInfoType, CFStreamError const*, void*) const in test.cc.o
  "_CFHostScheduleWithRunLoop", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
  "_CFHostSetClient", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
  "_CFHostStartInfoResolution", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
  "_CFHostUnscheduleFromRunLoop", referenced from:
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
      httplib::detail::getaddrinfo_with_timeout(char const*, char const*, addrinfo const*, addrinfo**, long) in test.cc.o
ld: symbol(s) not found for architecture arm64
clang++: error: linker command failed with exit code 1 (use -v to see invocation)

@yhirose
Copy link
Owner

yhirose commented Dec 10, 2025

@sum01 @jimmy-park @Tachi107 it looks good to me. If you have any questions, please let @threecgreen know.

@Tachi107
Copy link
Contributor

Tachi107 commented Dec 12, 2025 via email

@yhirose yhirose merged commit f4ecb96 into yhirose:master Dec 12, 2025
8 of 10 checks passed
@yhirose
Copy link
Owner

yhirose commented Dec 12, 2025

@threecgreen thanks for the fine contribution!

@threecgreen
Copy link
Contributor Author

Thank you!

noresources pushed a commit to noresources/cpp-httplib that referenced this pull request Dec 31, 2025
noresources pushed a commit to noresources/cpp-httplib that referenced this pull request Dec 31, 2025
noresources pushed a commit to noresources/cpp-httplib that referenced this pull request Dec 31, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants