summaryrefslogtreecommitdiff
path: root/Justfile
diff options
context:
space:
mode:
authorsteven-na <noreply.github@stvnc.dev>2026-07-28 02:12:43 -0700
committersteven-na <noreply.github@stvnc.dev>2026-07-28 02:12:43 -0700
commitacea02e9b90a83167d15e62741c8e8bb9f0d4b7c (patch)
tree5b9073f297a8704be194cbee4fe4775ded0ed4cc /Justfile
Initial commit.
Diffstat (limited to 'Justfile')
-rw-r--r--Justfile57
1 files changed, 57 insertions, 0 deletions
diff --git a/Justfile b/Justfile
new file mode 100644
index 0000000..8343372
--- /dev/null
+++ b/Justfile
@@ -0,0 +1,57 @@
+lib := "steez"
+src_dir := "src"
+test_dir := "tests"
+build_dir := "build"
+cc := "cc"
+cflags := "-Wall -Wextra -Wpedantic -Werror -std=c23 -fPIC"
+lflags := ""
+prefix := "/usr/local"
+
+default:
+ @just --list
+
+build: build-static build-shared
+
+build-static:
+ mkdir -p {{build_dir}}
+ cd {{build_dir}} && {{cc}} {{cflags}} -c ../{{src_dir}}/*.c
+ ar rcs {{build_dir}}/lib{{lib}}.a {{build_dir}}/*.o
+
+build-shared:
+ mkdir -p {{build_dir}}
+ cd {{build_dir}} && {{cc}} {{cflags}} -c ../{{src_dir}}/*.c
+ {{cc}} -shared -o {{build_dir}}/lib{{lib}}.so {{build_dir}}/*.o {{lflags}}
+
+build-release:
+ mkdir -p {{build_dir}}
+ cd {{build_dir}} && {{cc}} {{cflags}} -O3 -DNDEBUG -c ../{{src_dir}}/*.c
+ ar rcs {{build_dir}}/lib{{lib}}-release.a {{build_dir}}/*.o
+ {{cc}} -shared -o {{build_dir}}/lib{{lib}}-release.so {{build_dir}}/*.o {{lflags}}
+
+build-debug:
+ mkdir -p {{build_dir}}
+ cd {{build_dir}} && {{cc}} {{cflags}} -g -O0 -fsanitize=address,undefined -fno-omit-frame-pointer -c ../{{src_dir}}/*.c
+ ar rcs {{build_dir}}/lib{{lib}}-debug.a {{build_dir}}/*.o
+ {{cc}} -shared -fsanitize=address,undefined -o {{build_dir}}/lib{{lib}}-debug.so {{build_dir}}/*.o {{lflags}}
+
+install: build
+ sudo mkdir -p {{prefix}}/include/{{lib}} {{prefix}}/lib
+ sudo cp {{src_dir}}/*.h {{prefix}}/include/{{lib}}/
+ sudo cp {{build_dir}}/lib{{lib}}.a {{build_dir}}/lib{{lib}}.so {{prefix}}/lib/
+ sudo ldconfig
+
+uninstall:
+ sudo rm -rf {{prefix}}/include/{{lib}}
+ sudo rm -f {{prefix}}/lib/lib{{lib}}.a {{prefix}}/lib/lib{{lib}}.so
+ sudo ldconfig
+
+test-all:
+ mkdir -p {{build_dir}}
+ {{cc}} {{cflags}} {{test_dir}}/*.c {{src_dir}}/*.c -o {{build_dir}}/test -lcriterion {{lflags}}
+ ./{{build_dir}}/test
+
+clean:
+ rm -rf {{build_dir}}
+
+compiledb:
+ bear -- just build