Skip to content

Commit dc71a4c

Browse files
committed
build with glibc-2.17
1 parent 85f4042 commit dc71a4c

File tree

2 files changed

+54
-3
lines changed

2 files changed

+54
-3
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ jobs:
4343
if: startsWith(matrix.os, 'ubuntu')
4444
run: |
4545
if [[ "${{ matrix.zig_build }}" == "true" ]]; then
46-
sudo snap install zig --classic --beta
46+
snap install zig --classic --beta
4747
mkdir -p build
48-
# 使用Zig作为工具链编译C++项目
49-
cmake -B build -G Ninja -DCMAKE_C_COMPILER=zig -DCMAKE_C_COMPILER_ARG1=cc -DCMAKE_CXX_COMPILER=zig -DCMAKE_CXX_COMPILER_ARG1=c++ -DCMAKE_BUILD_TYPE=Release -DEMMY_CORE_VERSION=${{env.TAG}}
48+
# 使用zig-build.cmake配置文件编译C++项目
49+
cmake -B build -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/zig-build.cmake -DCMAKE_BUILD_TYPE=Release -DEMMY_CORE_VERSION=${{env.TAG}}
5050
cmake --build build --config Release
5151
cmake --install build --config Release --prefix ${{ github.workspace }}/artifact/
5252
else

cmake/zig-build.cmake

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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

Comments
 (0)