Skip to content

Commit 944e949

Browse files
committed
feat: add defensive comments for cross-compilation edge cases
- Add comment explaining macOS SDK path prevention - Document MSVC-style RC syntax requirement for zig rc
1 parent 59fd630 commit 944e949

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

zig.toolchain.cmake

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ if(NOT ZIG_TARGET)
4040
set(Z_ABI "gnu")
4141
if(Z_OS MATCHES "darwin|macos")
4242
set(Z_OS "macos")
43-
set(Z_ABI "none")
43+
set(Z_ABI "none") # macOS uses its own ABI, not GNU
4444
elseif(Z_OS MATCHES "windows")
4545
set(Z_OS "windows")
4646
elseif(Z_OS MATCHES "linux")
@@ -64,6 +64,7 @@ elseif(ZIG_TARGET MATCHES "macos")
6464
set(CMAKE_SYSTEM_NAME Darwin)
6565
endif()
6666

67+
# Dummy version satisfies CMake's cross-compilation requirements without affecting Zig's behavior
6768
set(CMAKE_SYSTEM_VERSION 1)
6869
set(CMAKE_SYSTEM_PROCESSOR ${Z_ARCH})
6970

@@ -79,6 +80,7 @@ if(ZIG_USE_CCACHE)
7980
endif()
8081
endif()
8182

83+
# Generate wrapper scripts to inject -target flag and ccache prefix transparently
8284
set(ZIG_SHIMS_DIR "${CMAKE_BINARY_DIR}/.zig-shims")
8385
file(MAKE_DIRECTORY "${ZIG_SHIMS_DIR}")
8486
if(CMAKE_HOST_WIN32)
@@ -110,6 +112,13 @@ set(CMAKE_C_COMPILER "${ZIG_SHIMS_DIR}/zig-cc${EXT}")
110112
set(CMAKE_CXX_COMPILER "${ZIG_SHIMS_DIR}/zig-c++${EXT}")
111113
set(CMAKE_AR "${ZIG_SHIMS_DIR}/zig-ar${EXT}" CACHE FILEPATH "Archiver" FORCE)
112114
set(CMAKE_RANLIB "${ZIG_SHIMS_DIR}/zig-ranlib${EXT}" CACHE FILEPATH "Ranlib" FORCE)
115+
113116
if(CMAKE_SYSTEM_NAME MATCHES "Windows")
114117
set(CMAKE_RC_COMPILER "${ZIG_SHIMS_DIR}/zig-rc${EXT}" CACHE FILEPATH "Resource Compiler" FORCE)
118+
# Explicitly specify MSVC syntax because zig rc only supports this format
119+
set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> /fo <OBJECT> <SOURCE>")
120+
elseif(CMAKE_SYSTEM_NAME MATCHES "Darwin")
121+
# Prevent CMake from searching for Xcode SDKs since Zig provides its own sysroot
122+
set(CMAKE_OSX_SYSROOT "" CACHE PATH "Force empty sysroot for Zig" FORCE)
123+
set(CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Force empty deployment target" FORCE)
115124
endif()

0 commit comments

Comments
 (0)