summaryrefslogtreecommitdiff
path: root/scripts/gen-deps
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-05-18 17:15:57 +0300
committerKimplul <kimi.h.kuparinen@gmail.com>2025-05-18 17:15:57 +0300
commit0e6bc60ceb3d2676fae166308668680a2f675d17 (patch)
tree0f7ebe21dafb8f7546e36b91645e4e5281fff856 /scripts/gen-deps
downloadberg-0e6bc60ceb3d2676fae166308668680a2f675d17.tar.gz
berg-0e6bc60ceb3d2676fae166308668680a2f675d17.zip
initial rough skeleton
+ Naive/fast allocation hashmap + Stores/loads are currently all checked, the idea about static analysis to skip checks is still TODO
Diffstat (limited to 'scripts/gen-deps')
-rwxr-xr-xscripts/gen-deps37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/gen-deps b/scripts/gen-deps
new file mode 100755
index 0000000..f45707c
--- /dev/null
+++ b/scripts/gen-deps
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+PREFIX=
+COMPILE=COMPILE
+LINT=LINT
+BUILD=build/
+
+while getopts "p:c:b:l:" opt; do
+ case "$opt" in
+ p) PREFIX="$OPTARG"_;;
+ c) COMPILE="$OPTARG";;
+ l) LINT="$OPTARG";;
+ b) BUILD=build/"$OPTARG";;
+ *) echo "unrecognised option -$OPTARG" >&2; exit 1;;
+ esac
+done
+
+shift $((OPTIND - 1))
+
+# create all subdirectories
+mkdir -p $(echo "${@}" | tr ' ' '\n' | sed "s|[^/]*$||;s|^|${BUILD}/|" | uniq)
+
+for s in ${@}
+do
+ obj="${BUILD}/${s%.*}.o"
+ lint="${obj}.l"
+ dep="${obj}.d"
+
+ echo "${PREFIX}OBJS += ${obj}" >> deps.mk
+ echo "${PREFIX}LINTS += ${lint}" >> deps.mk
+ echo "${dep}:" >> deps.mk
+ echo "-include ${dep}" >> deps.mk
+ echo "${obj}: ${s}" >> deps.mk
+ echo " \$(${COMPILE}) -c ${s} -o ${obj}" >> deps.mk
+ echo "${lint}: ${s}" >> deps.mk
+ echo " \$(${LINT}) -c ${s} -o /dev/null" >> deps.mk
+done