From fac3d4359b336e5df66813eccbf00852b280d1c0 Mon Sep 17 00:00:00 2001 From: Smittix Date: Sun, 15 Feb 2026 13:44:39 +0000 Subject: [PATCH] fix: Patch acarsdec source for macOS Apple Silicon builds (fixes #136) The upstream acarsdec uses pthread_tryjoin_np (a Linux-only GNU extension) and has broken libacars linking on macOS. The setup script now patches both issues at build time, along with the existing compiler flag fix for ARM64. Co-Authored-By: Claude Opus 4.6 --- setup.sh | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/setup.sh b/setup.sh index 3a81d9a..ef71f1f 100755 --- a/setup.sh +++ b/setup.sh @@ -571,10 +571,43 @@ install_acarsdec_from_source_macos() { || { warn "Failed to clone acarsdec"; exit 1; } cd "$tmp_dir/acarsdec" + + # Fix compiler flags for macOS Apple Silicon (ARM64) + # -march=native can fail with Apple Clang on M-series chips + # -Ofast is deprecated in modern Clang + if [[ "$(uname -m)" == "arm64" ]]; then + sed -i '' 's/-Ofast -march=native/-O3 -ffast-math/g' CMakeLists.txt + info "Patched compiler flags for Apple Silicon (arm64)" + fi + + # Fix pthread_tryjoin_np (Linux-only GNU extension) for macOS + # Replace with pthread_join which provides equivalent behavior + if grep -q 'pthread_tryjoin_np' rtl.c 2>/dev/null; then + sed -i '' 's/pthread_tryjoin_np(\([^,]*\), NULL)/pthread_join(\1, NULL)/g' rtl.c + info "Patched pthread_tryjoin_np for macOS compatibility" + fi + + # Fix libacars linking on macOS (upstream issue #112) + # Use LIBACARS_LINK_LIBRARIES (full path) instead of LIBACARS_LIBRARIES (name only) + if grep -q 'LIBACARS_LIBRARIES' CMakeLists.txt 2>/dev/null; then + sed -i '' 's/${LIBACARS_LIBRARIES}/${LIBACARS_LINK_LIBRARIES}/g' CMakeLists.txt + info "Patched libacars linking for macOS" + fi + mkdir -p build && cd build + # Set Homebrew paths for Apple Silicon (/opt/homebrew) or Intel (/usr/local) + HOMEBREW_PREFIX="$(brew --prefix)" + export PKG_CONFIG_PATH="${HOMEBREW_PREFIX}/lib/pkgconfig:${PKG_CONFIG_PATH:-}" + export CMAKE_PREFIX_PATH="${HOMEBREW_PREFIX}" + info "Compiling acarsdec..." - if cmake .. -Drtl=ON >/dev/null 2>&1 && make >/dev/null 2>&1; then + build_log="$tmp_dir/acarsdec-build.log" + if cmake .. -Drtl=ON \ + -DCMAKE_C_FLAGS="-I${HOMEBREW_PREFIX}/include" \ + -DCMAKE_EXE_LINKER_FLAGS="-L${HOMEBREW_PREFIX}/lib" \ + >"$build_log" 2>&1 \ + && make >>"$build_log" 2>&1; then if [[ -w /usr/local/bin ]]; then install -m 0755 acarsdec /usr/local/bin/acarsdec else @@ -583,6 +616,8 @@ install_acarsdec_from_source_macos() { ok "acarsdec installed successfully from source" else warn "Failed to build acarsdec. ACARS decoding will not be available." + warn "Build log (last 30 lines):" + tail -30 "$build_log" | while IFS= read -r line; do warn " $line"; done fi ) }