Reorganize toolchain files

This commit is contained in:
Duncan Ogilvie
2024-12-20 16:03:00 +01:00
parent 21be12c2d3
commit 0184e268d3
15 changed files with 23834 additions and 15 deletions

View File

@@ -7,14 +7,13 @@ Reference: https://zig.news/kristoff/cross-compile-a-c-c-project-with-zig-3599
## Building ## Building
- [Install zig](https://ziglang.org/learn/getting-started/#installing-zig) in your PATH (`choco install zig` on Windows) - [Install zig](https://ziglang.org/learn/getting-started/#installing-zig) in your PATH (`choco install zig` on Windows)
- `cmake -B build-aarch64 -G Ninja -DCMAKE_TOOLCHAIN_FILE=cmake/zig-toolchain-aarch64.cmake` - `cmake -B build-aarch64 -G Ninja --toolchain aarch64-linux-gnu.cmake`
- `cmake --build build-arch64` - `cmake --build build-arch64`
You can create toolchains for other triples like this. Here is an example to build for Windows on ARM64: You can create toolchains for other triples as well, just create a file named `aarch64-windows-gnu.cmake` with the following contents to build for Windows on ARM64:
```cmake ```cmake
set(ZIG_TARGET "aarch64-windows-gnu") include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)
``` ```
## clangd ## clangd

1
aarch64-linux-gnu.cmake Normal file
View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

View File

@@ -1,2 +0,0 @@
set(ZIG_TARGET "aarch64-linux-gnu")
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)

View File

@@ -1,2 +0,0 @@
set(ZIG_TARGET "riscv64-freestanding-none")
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)

View File

@@ -1,2 +0,0 @@
set(ZIG_TARGET "x86_64-uefi-gnu")
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)

View File

@@ -1,2 +0,0 @@
set(ZIG_TARGET "x86_64-windows-gnu")
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)

View File

@@ -1,2 +0,0 @@
set(ZIG_TARGET "aarch64-windows-gnu")
include(${CMAKE_CURRENT_LIST_DIR}/zig-toolchain.cmake)

View File

@@ -4,8 +4,16 @@ if(CMAKE_GENERATOR MATCHES "Visual Studio")
message(FATAL_ERROR "Visual Studio generator not supported, use: cmake -G Ninja") message(FATAL_ERROR "Visual Studio generator not supported, use: cmake -G Ninja")
endif() endif()
if(NOT DEFINED ZIG_TARGET)
get_filename_component(PARENT_LIST_DIR "${CMAKE_PARENT_LIST_FILE}" DIRECTORY)
string(FIND "${CMAKE_CURRENT_LIST_DIR}" "${PARENT_LIST_DIR}" POS)
if(POS EQUAL 0)
get_filename_component(ZIG_TARGET "${CMAKE_PARENT_LIST_FILE}" NAME_WE)
endif()
endif()
if(NOT ZIG_TARGET MATCHES "^([a-zZ-Z0-9_]+)-([a-zZ-Z0-9_]+)-([a-zZ-Z0-9_]+)$") if(NOT ZIG_TARGET MATCHES "^([a-zZ-Z0-9_]+)-([a-zZ-Z0-9_]+)-([a-zZ-Z0-9_]+)$")
message(FATAL_ERROR "Expected -DZIG_TARGET=<arch>-<os>-<abi>") message(FATAL_ERROR "Expected ZIG_TARGET=<arch>-<os>-<abi>")
endif() endif()
set(ZIG_ARCH ${CMAKE_MATCH_1}) set(ZIG_ARCH ${CMAKE_MATCH_1})

View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

1
x86_64-linux-gnu.cmake Normal file
View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

1
x86_64-linux-musl.cmake Normal file
View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

1
x86_64-uefi-gnu.cmake Normal file
View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

1
x86_64-windows-gnu.cmake Normal file
View File

@@ -0,0 +1 @@
include(${CMAKE_CURRENT_LIST_DIR}/cmake/zig-toolchain.cmake)

23815
zig-targets.json Normal file

File diff suppressed because it is too large Load Diff