Skip to content

Commit ac10869

Browse files
committed
Fix mac linking once more.
1 parent eac9908 commit ac10869

File tree

2 files changed

+7
-124
lines changed

2 files changed

+7
-124
lines changed

Diff for: .github/workflows/ocaml-all.yaml

+1-119
Original file line numberDiff line numberDiff line change
@@ -7,40 +7,10 @@ on:
77
branches: [ "**" ]
88

99
jobs:
10-
no-matrix:
11-
name: No matrix job
12-
runs-on: ubuntu-latest
13-
steps:
14-
- uses: actions/checkout@v4
15-
16-
- name: Setup OCaml (no matrix)
17-
uses: ocaml/setup-ocaml@v3
18-
with:
19-
ocaml-compiler: 5.3.0
20-
opam-disable-sandboxing: true
21-
22-
- name: Debug PATH and ENV (no matrix)
23-
run: |
24-
echo "GITHUB_ENV:"
25-
cat $GITHUB_ENV || echo "❌ Not found"
26-
27-
echo ""
28-
echo "GITHUB_PATH:"
29-
cat $GITHUB_PATH || echo "❌ Not found"
30-
31-
echo "PATH:"
32-
echo "$PATH" | tr ':' '\n'
33-
echo ""
34-
echo "which ocamlc:"
35-
which ocamlc || echo "❌ Not found"
36-
echo ""
37-
echo "OPAM_SWITCH_PREFIX: $OPAM_SWITCH_PREFIX"
38-
3910
build-test:
4011
strategy:
4112
matrix:
42-
# ubuntu-latest,
43-
os: [ macos-latest]
13+
os: [ ubuntu-latest, macos-latest]
4414
ocaml-version: ["5"]
4515
fail-fast: false
4616
runs-on: ${{ matrix.os }}
@@ -73,25 +43,6 @@ jobs:
7343
ocaml-compiler: ${{ matrix.ocaml-version }}
7444
opam-disable-sandboxing: true
7545

76-
- name: Debug after setup-ocaml
77-
run: |
78-
echo "GITHUB_ENV:"
79-
cat $GITHUB_ENV || echo "❌ Not found"
80-
81-
echo ""
82-
echo "GITHUB_PATH:"
83-
cat $GITHUB_PATH || echo "❌ Not found"
84-
85-
echo "PATH after setup:"
86-
echo "$PATH" | tr ':' '\n'
87-
88-
echo ""
89-
echo "which ocamlfind:"
90-
which ocamlfind || echo "❌ Not found"
91-
92-
echo ""
93-
echo "OPAM_SWITCH_PREFIX: $OPAM_SWITCH_PREFIX"
94-
9546
# Platform-specific dependencies
9647
- name: Install system dependencies (Ubuntu)
9748
if: matrix.os == 'ubuntu-latest'
@@ -108,75 +59,6 @@ jobs:
10859
- name: Install required opam packages
10960
run: opam install -y ocamlfind zarith
11061

111-
- name: 🔍 Debug ocamlfind + ocamlc.opt issue
112-
run: |
113-
set -e # fail on error
114-
115-
eval $(opam env)
116-
117-
echo "🔎 ocamlc: $(which ocamlc)"
118-
echo "🔎 ocamlopt: $(which ocamlopt)"
119-
echo "🔎 ocamlfind: $(which ocamlfind)"
120-
echo "🔎 All ocamlfind on path:"
121-
which -a ocamlfind
122-
123-
echo ""
124-
echo "📄 Writing test.ml"
125-
echo 'let () = print_endline "Hello from OCaml"' > test.ml
126-
127-
echo ""
128-
echo "🧪 ocamlc compile"
129-
ocamlc test.ml -o test_bytecode
130-
131-
echo ""
132-
echo "🧪 ocamlopt compile"
133-
ocamlopt test.ml -o test_native
134-
135-
echo ""
136-
echo "🧪 ocamlfind ocamlc compile"
137-
ocamlfind ocamlc -package zarith -linkpkg test.ml -o test_bytecode_find
138-
139-
echo ""
140-
echo "🧪 ocamlfind ocamlopt compile"
141-
ocamlfind ocamlopt -package zarith -linkpkg test.ml -o test_native_find
142-
143-
# echo ""
144-
# echo "🧪 FULLPATH ocamlfind ocamlc compile"
145-
# /home/runner/work/z3/z3/_opam/bin/ocamlfind ocamlc -package zarith -linkpkg test.ml -o test_bytecode_full
146-
147-
# echo ""
148-
# echo "🧪 FULLPATH ocamlfind ocamlopt compile"
149-
# /home/runner/work/z3/z3/_opam/bin/ocamlfind ocamlopt -package zarith -linkpkg test.ml -o test_native_full
150-
151-
echo ""
152-
echo "✅ All compiles passed."
153-
154-
- name: 🧪 Debug OPAM + GITHUB_PATH setup
155-
run: |
156-
echo "🔍 PATH at this step:"
157-
echo "$PATH" | tr ':' '\n'
158-
159-
echo ""
160-
echo "📁 Listing \$GITHUB_PATH file (if exists):"
161-
if [ -f "$GITHUB_PATH" ]; then
162-
cat "$GITHUB_PATH"
163-
else
164-
echo "❌ GITHUB_PATH file does not exist at $GITHUB_PATH"
165-
fi
166-
167-
echo ""
168-
echo "📦 OPAM_SWITCH_PREFIX = $OPAM_SWITCH_PREFIX"
169-
echo ""
170-
echo "📂 Listing contents of \$OPAM_SWITCH_PREFIX/bin:"
171-
ls -al "$OPAM_SWITCH_PREFIX/bin" || echo "❌ Directory does not exist"
172-
173-
echo ""
174-
echo "🔍 Check if PATH includes _opam/bin:"
175-
echo "$PATH" | grep "_opam/bin" || echo "❌ _opam/bin NOT in PATH"
176-
177-
echo ""
178-
echo "✅ Done."
179-
18062
# Configure
18163
- name: Configure with CMake
18264
env:

Diff for: src/api/ml/CMakeLists.txt

+6-5
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,13 @@ execute_process(
168168

169169
set(ocaml_stublibs_path "${ocaml_destdir_path}/stublibs")
170170

171-
set(c_lib_deps "-lz3" "-lstdc++" "-lpthread")
171+
set(c_lib_deps "-cclib" "-lz3" "-lstdc++" "-lpthread")
172172
if (Z3_USE_LIB_GMP)
173173
list(APPEND c_lib_deps "-lgmp")
174174
endif()
175175

176176
if( APPLE )
177-
set(ocaml_rpath "@executable_path/../libz3${so_ext}")
177+
# set(ocaml_rpath "@executable_path/../libz3${so_ext}")
178178
elseif( UNIX )
179179
set(ocaml_rpath "\\$ORIGIN/../libz3${so_ext}")
180180
endif()
@@ -241,11 +241,12 @@ execute_process(
241241
if(APPLE)
242242
add_custom_command(
243243
OUTPUT ${z3ml_bin}/patched_dllz3ml
244-
COMMAND install_name_tool -id "@loader_path/libz3.dylib" "${CMAKE_BINARY_DIR}/libz3.dylib"
245-
COMMAND install_name_tool -change libz3.dylib "@loader_path/libz3.dylib" "${z3ml_bin}/dllz3ml.so"
244+
COMMAND install_name_tool -id "@rpath/libz3.dylib" "${CMAKE_BINARY_DIR}/libz3.dylib"
245+
COMMAND install_name_tool -change libz3.dylib "@rpath/libz3.dylib" "${z3ml_bin}/dllz3ml.so"
246+
COMMAND install_name_tool -add_rpath "@loader_path/../../../" "${z3ml_bin}/dllz3ml.so"
246247
COMMAND touch ${z3ml_bin}/patched_dllz3ml
247248
DEPENDS ${z3ml_bin}/dllz3ml.so
248-
COMMENT "Patch macOS dynamic lib loader path"
249+
COMMENT "Patch install name and reference for macOS"
249250
VERBATIM
250251
)
251252
else()

0 commit comments

Comments
 (0)