1+
2+ set (CMAKE_C_COMPILER zig)
3+ set (CMAKE_C_COMPILER_ARG1 cc)
4+ set (CMAKE_CXX_COMPILER zig)
5+ set (CMAKE_CXX_COMPILER_ARG1 c++)
6+
7+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
8+ set (ZIG_TARGET_TRIPLE "x86_64-linux-gnu" )
9+ set (ZIG_GLIBC_VERSION "2.17" )
10+
11+
12+ set (CMAKE_C_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} -fPIC -static-libgcc -D_GLIBCXX_USE_CXX11_ABI=0" )
13+ set (CMAKE_CXX_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} -fPIC -static-libgcc -static-libstdc++ -D_GLIBCXX_USE_CXX11_ABI=0" )
14+
15+
16+ set (CMAKE_EXE_LINKER_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} -fuse-ld=lld" )
17+ set (CMAKE_SHARED_LINKER_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} -fuse-ld=lld" )
18+
19+
20+ set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --target=${ZIG_TARGET_TRIPLE} .${ZIG_GLIBC_VERSION} " )
21+ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --target=${ZIG_TARGET_TRIPLE} .${ZIG_GLIBC_VERSION} " )
22+
23+ message (STATUS "Configured Zig for Linux with glibc ${ZIG_GLIBC_VERSION} " )
24+ elseif (CMAKE_SYSTEM_NAME STREQUAL "Windows" )
25+ set (ZIG_TARGET_TRIPLE "x86_64-windows-gnu" )
26+ set (CMAKE_C_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} " )
27+ set (CMAKE_CXX_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} " )
28+
29+ message (STATUS "Configured Zig for Windows" )
30+ elseif (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
31+ if (CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" )
32+ set (ZIG_TARGET_TRIPLE "aarch64-macos" )
33+ else ()
34+ set (ZIG_TARGET_TRIPLE "x86_64-macos" )
35+ endif ()
36+
37+ set (CMAKE_C_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} " )
38+ set (CMAKE_CXX_FLAGS_INIT "-target ${ZIG_TARGET_TRIPLE} " )
39+
40+ message (STATUS "Configured Zig for macOS (${ZIG_TARGET_TRIPLE} )" )
41+ endif ()
42+
43+ set (CMAKE_C_COMPILER_ID Clang)
44+ set (CMAKE_CXX_COMPILER_ID Clang)
45+
46+ execute_process (
47+ COMMAND ${CMAKE_C_COMPILER} version
48+ OUTPUT_VARIABLE ZIG_VERSION_OUTPUT
49+ OUTPUT_STRIP_TRAILING_WHITESPACE
50+ )
51+ message (STATUS "Using Zig: ${ZIG_VERSION_OUTPUT} " )
0 commit comments