1. New build system
All checks were successful
build-dsl-smoke / Build judge (push) Successful in 12s
build-dsl-smoke / debug / clang / linux (push) Successful in 6s
build-dsl-smoke / debug / gcc / linux (push) Successful in 8s
build-dsl-smoke / release / clang / linux (push) Successful in 8s
build-dsl-smoke / release / gcc / linux (push) Successful in 6s
build-dsl-smoke / sanitized / clang / linux (push) Successful in 8s
build-dsl-smoke / sanitized / gcc / linux (push) Successful in 7s
build-dsl-smoke / debug / clang / windows (push) Successful in 13s
build-dsl-smoke / debug-valgrind / gcc / linux (push) Successful in 14s
build-dsl-smoke / release / clang / windows (push) Successful in 16s
build-dsl-smoke / debug / msvc / windows (push) Successful in 18s
build-dsl-smoke / release / msvc / windows (push) Successful in 17s
build-dsl-smoke / SUMMARY (push) Successful in 4s
Release / Build & publish (push) Successful in 48s

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2026-04-12 07:59:38 +00:00
parent 358e3146bc
commit 7ec3a43c7a
47 changed files with 14124 additions and 209 deletions

View File

@@ -0,0 +1,72 @@
// Полный showcase возможностей build-блока.
// Показывает: toolchains c платформами / переопределением binary / явным class,
// build_defaults как общая основа, три профиля (release/debug/sanitized),
// фильтры platforms и compilers, OS-оверрайды, wrapper, sanitize, define,
// includes, link, extra, а также build-level `wrapper` для valgrind.
toolchains {
gcc { platforms = "linux" }
clang {
platforms = "linux" "windows"
binary = "clang-17" // конкретная версия в PATH
class = gnu // явный class если имя нестандартное
}
msvc { platforms = "windows" }
nvcc {
platforms = "linux"
class = gnu // nvcc принимает gnu-like флаги
}
}
build_defaults {
language = "c"
standard = "c11"
sources = "src/*.c" // glob, раскрывается относительно work dir
output = "solution" // на Windows автоматически станет solution.exe
includes = "include" "vendor/include"
link = "m" "pthread"
warnings = strict // → -Wall -Wextra / /W4
define("BUILD_ID") = "42"
}
build "release" {
profile = release // → -O2 / /O2
// OS-специфичные правки поверх defaults. Скаляры переопределяются,
// списки (extra, sanitize, sources, includes) аккумулируются.
linux { extra = "-fPIC" }
windows { extra = "/bigobj" }
darwin { extra = "-mmacosx-version-min=11" }
}
build "debug" {
profile = debug // → -O0 -g / /Od /Zi
warnings = pedantic // → добавляет -Wpedantic / /permissive-
define("DEBUG") = "1"
}
build "sanitized" {
profile = sanitized
sanitize = "address" "undefined" "leak"
platforms = "linux" // UBSan не работает на MSVC
compilers = "gcc" "clang" // и только gnu-like
extra = "-fno-sanitize-recover=all"
}
build "debug-valgrind" {
profile = debug
wrapper = "valgrind --error-exitcode=99 --leak-check=full -q"
platforms = "linux"
compilers = "gcc"
}
timeout 10s
memory_limit = 256M
group("basic") {
weight = 1.0
test("smoke") {
stdout = "ok\n"
}
}