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)
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