3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-05-09 08:45:47 +00:00

Fix mac linking once more.

This commit is contained in:
Weng Shiwei 2025-04-19 04:30:53 -04:00
parent eac9908550
commit ac10869fff
2 changed files with 7 additions and 124 deletions

View file

@ -7,40 +7,10 @@ on:
branches: [ "**" ]
jobs:
no-matrix:
name: No matrix job
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup OCaml (no matrix)
uses: ocaml/setup-ocaml@v3
with:
ocaml-compiler: 5.3.0
opam-disable-sandboxing: true
- name: Debug PATH and ENV (no matrix)
run: |
echo "GITHUB_ENV:"
cat $GITHUB_ENV || echo "❌ Not found"
echo ""
echo "GITHUB_PATH:"
cat $GITHUB_PATH || echo "❌ Not found"
echo "PATH:"
echo "$PATH" | tr ':' '\n'
echo ""
echo "which ocamlc:"
which ocamlc || echo "❌ Not found"
echo ""
echo "OPAM_SWITCH_PREFIX: $OPAM_SWITCH_PREFIX"
build-test:
strategy:
matrix:
# ubuntu-latest,
os: [ macos-latest]
os: [ ubuntu-latest, macos-latest]
ocaml-version: ["5"]
fail-fast: false
runs-on: ${{ matrix.os }}
@ -73,25 +43,6 @@ jobs:
ocaml-compiler: ${{ matrix.ocaml-version }}
opam-disable-sandboxing: true
- name: Debug after setup-ocaml
run: |
echo "GITHUB_ENV:"
cat $GITHUB_ENV || echo "❌ Not found"
echo ""
echo "GITHUB_PATH:"
cat $GITHUB_PATH || echo "❌ Not found"
echo "PATH after setup:"
echo "$PATH" | tr ':' '\n'
echo ""
echo "which ocamlfind:"
which ocamlfind || echo "❌ Not found"
echo ""
echo "OPAM_SWITCH_PREFIX: $OPAM_SWITCH_PREFIX"
# Platform-specific dependencies
- name: Install system dependencies (Ubuntu)
if: matrix.os == 'ubuntu-latest'
@ -108,75 +59,6 @@ jobs:
- name: Install required opam packages
run: opam install -y ocamlfind zarith
- name: 🔍 Debug ocamlfind + ocamlc.opt issue
run: |
set -e # fail on error
eval $(opam env)
echo "🔎 ocamlc: $(which ocamlc)"
echo "🔎 ocamlopt: $(which ocamlopt)"
echo "🔎 ocamlfind: $(which ocamlfind)"
echo "🔎 All ocamlfind on path:"
which -a ocamlfind
echo ""
echo "📄 Writing test.ml"
echo 'let () = print_endline "Hello from OCaml"' > test.ml
echo ""
echo "🧪 ocamlc compile"
ocamlc test.ml -o test_bytecode
echo ""
echo "🧪 ocamlopt compile"
ocamlopt test.ml -o test_native
echo ""
echo "🧪 ocamlfind ocamlc compile"
ocamlfind ocamlc -package zarith -linkpkg test.ml -o test_bytecode_find
echo ""
echo "🧪 ocamlfind ocamlopt compile"
ocamlfind ocamlopt -package zarith -linkpkg test.ml -o test_native_find
# echo ""
# echo "🧪 FULLPATH ocamlfind ocamlc compile"
# /home/runner/work/z3/z3/_opam/bin/ocamlfind ocamlc -package zarith -linkpkg test.ml -o test_bytecode_full
# echo ""
# echo "🧪 FULLPATH ocamlfind ocamlopt compile"
# /home/runner/work/z3/z3/_opam/bin/ocamlfind ocamlopt -package zarith -linkpkg test.ml -o test_native_full
echo ""
echo "✅ All compiles passed."
- name: 🧪 Debug OPAM + GITHUB_PATH setup
run: |
echo "🔍 PATH at this step:"
echo "$PATH" | tr ':' '\n'
echo ""
echo "📁 Listing \$GITHUB_PATH file (if exists):"
if [ -f "$GITHUB_PATH" ]; then
cat "$GITHUB_PATH"
else
echo "❌ GITHUB_PATH file does not exist at $GITHUB_PATH"
fi
echo ""
echo "📦 OPAM_SWITCH_PREFIX = $OPAM_SWITCH_PREFIX"
echo ""
echo "📂 Listing contents of \$OPAM_SWITCH_PREFIX/bin:"
ls -al "$OPAM_SWITCH_PREFIX/bin" || echo "❌ Directory does not exist"
echo ""
echo "🔍 Check if PATH includes _opam/bin:"
echo "$PATH" | grep "_opam/bin" || echo "❌ _opam/bin NOT in PATH"
echo ""
echo "✅ Done."
# Configure
- name: Configure with CMake
env:

View file

@ -168,13 +168,13 @@ execute_process(
set(ocaml_stublibs_path "${ocaml_destdir_path}/stublibs")
set(c_lib_deps "-lz3" "-lstdc++" "-lpthread")
set(c_lib_deps "-cclib" "-lz3" "-lstdc++" "-lpthread")
if (Z3_USE_LIB_GMP)
list(APPEND c_lib_deps "-lgmp")
endif()
if( APPLE )
set(ocaml_rpath "@executable_path/../libz3${so_ext}")
# set(ocaml_rpath "@executable_path/../libz3${so_ext}")
elseif( UNIX )
set(ocaml_rpath "\\$ORIGIN/../libz3${so_ext}")
endif()
@ -241,11 +241,12 @@ execute_process(
if(APPLE)
add_custom_command(
OUTPUT ${z3ml_bin}/patched_dllz3ml
COMMAND install_name_tool -id "@loader_path/libz3.dylib" "${CMAKE_BINARY_DIR}/libz3.dylib"
COMMAND install_name_tool -change libz3.dylib "@loader_path/libz3.dylib" "${z3ml_bin}/dllz3ml.so"
COMMAND install_name_tool -id "@rpath/libz3.dylib" "${CMAKE_BINARY_DIR}/libz3.dylib"
COMMAND install_name_tool -change libz3.dylib "@rpath/libz3.dylib" "${z3ml_bin}/dllz3ml.so"
COMMAND install_name_tool -add_rpath "@loader_path/../../../" "${z3ml_bin}/dllz3ml.so"
COMMAND touch ${z3ml_bin}/patched_dllz3ml
DEPENDS ${z3ml_bin}/dllz3ml.so
COMMENT "Patch macOS dynamic lib loader path"
COMMENT "Patch install name and reference for macOS"
VERBATIM
)
else()