Files
judge/example/showcase/02-structured-build.jdg
Mikhail Kornilovich 7ec3a43c7a
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
1. New build system
Reviewed-on: #1
2026-04-12 07:59:38 +00:00

73 lines
2.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Полный 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"
}
}