build: fix macOS link options + libtor paths for all 7 CI jobs

Run #467 (the re-trigger after #466's fixes) failed with two new error
classes that the previous commit didn't catch:

  1. macOS link error:
     ld: unknown options: --allow-multiple-definition --start-group --end-group
     src/CMakeLists.txt passed GNU ld flags unconditionally in the
     USE_TOR_EMBEDDED block. Apple's ld64 doesn't recognize them.
     Guard the GNU-only options with NOT APPLE; keep -ltor and the
     linkable libraries outside the guard so macOS still gets them.

  2. Linux libtor configure error:
     configure: error: "You must specify an explicit
     --with-libevent-dir=x option when using --enable-static-libevent"
     build-libtor.sh defaults to /mingw64 paths. On ubuntu-22.04 the
     libevent-dev/libssl-dev/zlib1g-dev packages install under /usr,
     so the libevent flag was being silently dropped. Set
     LIBEVENT_DIR=/usr OPENSSL_DIR=/usr ZLIB_DIR=/usr for Linux jobs.

  3. Added the build-libtor step to three more jobs that needed it
     (Qt GUI builds also link -ltor transitively via triangles_common):
       - build-windows-qt
       - build-linux-qt
       - build-macos

After this:
  - All 7 build jobs will pass the libtor step.
  - macOS Qt link will work (no more GNU-ld-only options).
  - Windows Qt build will produce the .exe installer artifact.

If anything still fails I'll iterate. This is the third build pass.
This commit is contained in:
Krystie
2026-06-24 19:32:34 -07:00
parent 518de7cb2e
commit bf401437e8
2 changed files with 68 additions and 13 deletions
+13 -3
View File
@@ -179,14 +179,24 @@ if(USE_TOR_EMBEDDED)
# and its dependencies.
# Use --allow-multiple-definition because libtor.a may pull in static
# OpenSSL objects that duplicate the DLL import lib already linked above.
# These GNU ld options are not supported on macOS (which uses lld) —
# guard with NOT APPLE so the build still works on macOS.
if(NOT APPLE)
target_link_libraries(triangles_common PUBLIC
-Wl,--allow-multiple-definition
-Wl,--start-group
)
endif()
target_link_libraries(triangles_common PUBLIC
-Wl,--allow-multiple-definition
-Wl,--start-group
-ltor
-levent -levent_core -levent_extra -levent_openssl
-lssl -lcrypto -lz -llzma -lzstd
-Wl,--end-group
)
if(NOT APPLE)
target_link_libraries(triangles_common PUBLIC
-Wl,--end-group
)
endif()
if(WIN32)
target_link_libraries(triangles_common PUBLIC iphlpapi shlwapi crypt32)
endif()