Skip to content

Commit 2b42f74

Browse files
ci-macos: the raw compiles use the SDK mcpp selects (xcode-27 image 20260912) (#665)
xcode-27-arm64 20260912 updated the Command Line Tools SDK, whose .tbd stubs list arm64e.x1. ld64.lld 22.1.8 does not parse that architecture (support landed upstream in llvm-project#222721, after 22.1.8), and the raw compiles in this job took the SDK from the xlings LLVM package's clang++.cfg, which names the Command Line Tools SDK. mcpp itself passes --no-default-config and uses xcrun --show-sdk-path, and the mcpp e2e suite on the same image is green. The raw compiles now state -isysroot from xcrun, so the job measures what mcpp builds. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
1 parent 9f15525 commit 2b42f74

1 file changed

Lines changed: 29 additions & 17 deletions

File tree

‎.github/workflows/ci-macos.yml‎

Lines changed: 29 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,18 @@ jobs:
8181
- name: The floating macros mcpp states for an Apple target
8282
run: echo 'APPLE_FLOAT_MACROS=-DINFINITY=HUGE_VALF -DNAN=__builtin_nanf("0x7fc00000")' >> "$GITHUB_ENV"
8383

84+
# THE SDK mcpp SELECTS, NOT THE ONE THE PACKAGE'S clang++.cfg NAMES. The
85+
# xlings LLVM package writes `--sysroot=/Library/Developer/CommandLineTools/
86+
# SDKs/MacOSX.sdk` into its configuration; mcpp passes --no-default-config
87+
# and uses `xcrun --show-sdk-path` (modules/platform/src/macos/macos.cppm).
88+
# On xcode-27-arm64 20260912 the Command Line Tools SDK lists `arm64e.x1`
89+
# in its .tbd stubs, which ld64.lld 22.1.8 does not parse (support landed
90+
# upstream in llvm-project#222721, after 22.1.8), while the SDK xcrun
91+
# selects links. These raw compiles state the SDK the way mcpp does, so the
92+
# job measures what mcpp builds rather than the package's default.
93+
- name: The SDK mcpp selects for an Apple target
94+
run: echo "APPLE_SYSROOT=-isysroot $(xcrun --show-sdk-path)" >> "$GITHUB_ENV"
95+
8496
- name: Test — non-module C++23 compilation
8597
run: |
8698
WORK=$(mktemp -d)
@@ -93,7 +105,7 @@ jobs:
93105
return 0;
94106
}
95107
EOF
96-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -o hello main.cpp
108+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -o hello main.cpp
97109
./hello
98110
99111
- name: Test — import std (two-stage module compilation)
@@ -112,11 +124,11 @@ jobs:
112124
113125
echo "=== Step 1: Precompile std module ==="
114126
mkdir -p pcm.cache
115-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
127+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
116128
--precompile "$STD_CPPM" -o pcm.cache/std.pcm
117129
118130
echo "=== Step 2: Compile std.pcm → std.o ==="
119-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
131+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
120132
pcm.cache/std.pcm -c -o std.o
121133
122134
echo "=== Step 3: Compile main.cpp with import std ==="
@@ -127,10 +139,10 @@ jobs:
127139
return 0;
128140
}
129141
EOF
130-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm -c main.cpp -o main.o
142+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm -c main.cpp -o main.o
131143
132144
echo "=== Step 4: Link ==="
133-
"$CXX" main.o std.o -o hello_modules
145+
"$CXX" $APPLE_SYSROOT main.o std.o -o hello_modules
134146
echo "=== Step 5: Run ==="
135147
./hello_modules
136148
@@ -150,16 +162,16 @@ jobs:
150162
151163
mkdir -p pcm.cache
152164
# Build std first
153-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
165+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
154166
--precompile "$STD_CPPM" -o pcm.cache/std.pcm
155-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
167+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
156168
pcm.cache/std.pcm -c -o std.o
157169
158170
# Build std.compat (depends on std)
159-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
171+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
160172
-fmodule-file=std=pcm.cache/std.pcm \
161173
--precompile "$STD_COMPAT_CPPM" -o pcm.cache/std.compat.pcm
162-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
174+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
163175
-fmodule-file=std=pcm.cache/std.pcm \
164176
pcm.cache/std.compat.pcm -c -o std.compat.o
165177
@@ -171,11 +183,11 @@ jobs:
171183
return 0;
172184
}
173185
EOF
174-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS \
186+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS \
175187
-fmodule-file=std=pcm.cache/std.pcm \
176188
-fmodule-file=std.compat=pcm.cache/std.compat.pcm \
177189
-c main.cpp -o main.o
178-
"$CXX" main.o std.o std.compat.o -o compat_test
190+
"$CXX" $APPLE_SYSROOT main.o std.o std.compat.o -o compat_test
179191
./compat_test
180192
181193
- name: Test — multi-module project
@@ -187,9 +199,9 @@ jobs:
187199
mkdir -p pcm.cache
188200
189201
# Build std
190-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
202+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
191203
--precompile "$STD_CPPM" -o pcm.cache/std.pcm
192-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
204+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -Wno-reserved-module-identifier \
193205
pcm.cache/std.pcm -c -o std.o
194206
195207
# User module: greeter
@@ -202,9 +214,9 @@ jobs:
202214
}
203215
}
204216
EOF
205-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm \
217+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm \
206218
--precompile greeter.cppm -o pcm.cache/greeter.pcm
207-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm \
219+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS -fmodule-file=std=pcm.cache/std.pcm \
208220
pcm.cache/greeter.pcm -c -o greeter.o
209221
210222
# Main
@@ -216,11 +228,11 @@ jobs:
216228
return 0;
217229
}
218230
EOF
219-
"$CXX" -std=c++23 $APPLE_FLOAT_MACROS \
231+
"$CXX" $APPLE_SYSROOT -std=c++23 $APPLE_FLOAT_MACROS \
220232
-fmodule-file=std=pcm.cache/std.pcm \
221233
-fmodule-file=greeter=pcm.cache/greeter.pcm \
222234
-c main.cpp -o main.o
223-
"$CXX" main.o greeter.o std.o -o multimod
235+
"$CXX" $APPLE_SYSROOT main.o greeter.o std.o -o multimod
224236
./multimod
225237
226238
- name: Validate mcpp probe logic expectations

0 commit comments

Comments
 (0)