120 lines
2.3 KiB
Markdown
120 lines
2.3 KiB
Markdown
|
|
||
|
## Target file format
|
||
|
|
||
|
A target file is used for describing a new cross-compiler to use.
|
||
|
Generally, a target file is named like this: `{target}-{arch}.json`. For example, you could have:
|
||
|
- `host-x86-64`
|
||
|
- `windows-arm`
|
||
|
- ...
|
||
|
|
||
|
### `id`
|
||
|
|
||
|
The `id` of the target. This is used to identify the target in the target file.
|
||
|
|
||
|
### `type`
|
||
|
|
||
|
Should be `target`.
|
||
|
|
||
|
### `props`
|
||
|
|
||
|
A list of properties for the target.
|
||
|
|
||
|
Example:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"props": {
|
||
|
"arch": "x86_64",
|
||
|
"vendor": "pc",
|
||
|
"os": "linux",
|
||
|
"env": "gnu",
|
||
|
"abi": "elf",
|
||
|
"cpu": "x86_64",
|
||
|
"features": "fxsr,sse,sse2"
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Theses may be accessed during compilation as C-Macros: `__ck_{prop}__`.
|
||
|
|
||
|
### `tools`
|
||
|
|
||
|
A list of tools for the target.
|
||
|
|
||
|
Each tool is described like this:
|
||
|
|
||
|
```json
|
||
|
"name": {
|
||
|
"cmd": "",
|
||
|
"args": [
|
||
|
...
|
||
|
]
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Where:
|
||
|
- `cmd` describe the command to run
|
||
|
- `arg` describes each argument to use (note: each entry of the table correspond to ONE argument).
|
||
|
|
||
|
You have different tools names that you can use:
|
||
|
- "cc"
|
||
|
- "cxx"
|
||
|
- "ld"
|
||
|
- "ar"
|
||
|
- "as"
|
||
|
|
||
|
**Example**:
|
||
|
|
||
|
```json
|
||
|
{
|
||
|
"tools": {
|
||
|
"cc": {
|
||
|
"cmd": ["@latest", "clang"],
|
||
|
"args": [
|
||
|
"-target",
|
||
|
"x86_64-unknown-windows",
|
||
|
"-ffreestanding",
|
||
|
"-fno-stack-protector",
|
||
|
"-fshort-wchar",
|
||
|
"-mno-red-zone"
|
||
|
]
|
||
|
},
|
||
|
"cxx": {
|
||
|
"cmd": ["@latest", "clang++"],
|
||
|
"args": [
|
||
|
"-target",
|
||
|
"x86_64-unknown-windows",
|
||
|
"-ffreestanding",
|
||
|
"-fno-stack-protector",
|
||
|
"-fshort-wchar",
|
||
|
"-mno-red-zone"
|
||
|
]
|
||
|
},
|
||
|
"ld": {
|
||
|
"cmd": ["@latest", "clang++"],
|
||
|
"args": [
|
||
|
"-target",
|
||
|
"x86_64-unknown-windows",
|
||
|
"-nostdlib",
|
||
|
"-Wl,-entry:efi_main",
|
||
|
"-Wl,-subsystem:efi_application",
|
||
|
"-fuse-ld=lld-link"
|
||
|
]
|
||
|
},
|
||
|
"ar": {
|
||
|
"cmd": ["@latest", "llvm-ar"],
|
||
|
"args": [
|
||
|
"rcs"
|
||
|
]
|
||
|
},
|
||
|
"as": {
|
||
|
"cmd": "nasm",
|
||
|
"args": [
|
||
|
"-f",
|
||
|
"win64"
|
||
|
]
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
```
|