diff --git a/justfile b/justfile new file mode 100644 index 0000000..edba21c --- /dev/null +++ b/justfile @@ -0,0 +1,107 @@ +#!/usr/bin/env just --justfile +# -------------------------------------------------------------- +# SPDX-License-Identifier: GPL-3.0-or-later +# -------------------------------------------------------------- +# Build File : justfile +# File Authors : Aoran Zeng +# Contributors : Nul None +# | +# Created On : <2025-06-18> +# Last Modified : <2025-06-18> +# +# just (build) +# just debug +# just test +# +# just DEBUG=1 # 编译出 debug 版 +# -------------------------------------------------------------- + +set windows-shell := ['cmd', '/c'] + +CC := 'gcc' +DEBUGGER := 'gdb' + +CFLAGS_base := '-Iinclude -Ilib' + +CFLAGS_for_Clang := if os() == 'windows' { + if CC == 'clang' { + '-target x86_64-pc-windows-gnu' + } else {''} +} else {''} + + +WARN := '-Wall -Wextra -Wno-unused-variable -Wno-unused-function -Wno-missing-braces -Wno-misleading-indentation' + ' ' + \ + '-Wno-missing-field-initializers -Wno-unused-parameter -Wno-sign-compare' +CFLAGS_warn := WARN + + +DEBUG := '0' +CFLAGS_debug := if DEBUG != '0' { "-g" } else { "" } + +Debuggable-Target-Name := 'chsrc-debug' + +Target-Name := if DEBUG != '0' { + Debuggable-Target-Name +} else { + 'chsrc' +} + +CI := '0' +CI_ARTIFACT_NAME := 'chsrc' + +# 在 GitHub Actions 时的 Linux 环境下,just CI=1 时触发 +CFLAGS_static := if os() == 'linux' { + if CI == '0' { + "-static" + } else {''} +} else {''} + + +CFLAGS := CFLAGS_base + ' ' + CFLAGS_debug + ' ' + CFLAGS_warn + ' ' + CFLAGS_static + ' ' + CFLAGS_for_Clang + +CFLAGS_only_promp_for_dev := CFLAGS_base + ' ' + CFLAGS_debug + CFLAGS_static + CFLAGS_for_Clang + +#======================= + +alias b := build +alias d := debug +alias t := test + +default: build + +build: + @echo Starting: Compile chsrc executable + @{{CC}} src/chsrc-main.c {{CFLAGS}} -o {{Target-Name}} + @echo Finished: Compile chsrc executable using '{{CC}}' {{CFLAGS_only_promp_for_dev}} -o {{Target-Name}} + +CI: build + @mv {{Target-Name}} {{CI_ARTIFACT_NAME}} + +debug: + @{{DEBUGGER}} {{Debuggable-Target-Name}} + +test: test-xy test-fw + +test-xy: + @{{CC}} test/xy.c {{CFLAGS}} -o xy + @./xy + +test-fw: + @{{CC}} test/fw.c {{CFLAGS}} -o fw + @./fw + + +check: test + +fastcheck: + @perl ./test/cli.pl fastcheck + +test-cli: + @perl ./test/cli.pl + +clean: + -@rm *.exe 2>/dev/null + -@rm xy 2>/dev/null + -@rm fw 2>/dev/null + -@rm chsrc 2>/dev/null + -@rm README.md.bak* 2>/dev/null