commit 6a13171bf1b3f231c6a82b3dc569b096837810df
parent c43284a7d66af9933bda1a61a573401a64d2b419
Author: vx-clutch <[email protected]>
Date: Thu, 11 Sep 2025 21:12:30 -0400
save
Diffstat:
3 files changed, 55 insertions(+), 41 deletions(-)
diff --git a/configure b/configure
@@ -7,70 +7,84 @@ Usage: $0 [OPTION]... [VAR=VALUE]...
To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.
- CC C compiler command [detected]
- CFLAGS C compiler flags [-g, ...]
- LDFLAGS C linker flags
+CC C compiler command [detected]
+CFLAGS C compiler flags [-g, ...]
+LDFLAGS C linker flags
- --prefix=<path> Set the install path
- --debug Flags for debug build, overides CFLAGS
+--prefix=<path> Set the install path
+--debug Flags for debug build, overrides CFLAGS
EOF
exit 0
}
-echo () { printf "%s\n" "$*" ; }
-cmdexists () { type "$1" >/dev/null 2>&1 ; }
-trycc () { test -z "$CC" && cmdexists "$1" && CC=$1 ; }
+cmdexists() { type "$1" >/dev/null 2>&1 ; }
+trycc() { [ -z "$CC" ] && cmdexists "$1" && CC=$1 ; }
-prefix=/usr/bin/
-CFLAGS="-std=c23 -O2 -pipe -Wall -Wextra -Wpedantic -Wformat=2 -Wshadow -Wcast-qual -Wcast-align=strict -Wconversion -Wsign-conversion -Wnull-dereference -Wstrict-overflow=5 -Wstrict-aliasing=2 -Wswitch-enum -Wundef -fstack-protector-strong -D_FORTIFY_SOURCE=3 -fPIE -pie -fno-plt -Wl,-z,relro,-z,now" # release flags
+prefix=/usr/local
+CFLAGS="-std=c23"
LDFLAGS=
CC=
printf "checking for C compiler... "
-trycc clang
trycc gcc
+trycc clang
trycc cc
trycc icx
printf "%s\n" "$CC"
DEBUG=false
-for arg ; do
+for arg; do
case "$arg" in
---help|h) usage ;;
+--help|-h) usage ;;
--prefix=*) prefix=${arg#*=} ;;
---debug=*) DEBUG=true ;;
+--debug) DEBUG=true ;;
CFLAGS=*) CFLAGS=${arg#*=} ;;
LDFLAGS=*) LDFLAGS=${arg#*=} ;;
CC=*) CC=${arg#*=} ;;
-*) prinf "Unrecognized option %s" $arg;;
+*) printf "Unrecognized option %s\n" "$arg" ;;
esac
done
-
printf "checking whether C compiler works... "
-status="fail"
tmpc="$(mktemp -d)/test.c"
echo "typedef int x;" > "$tmpc"
-if output=$($CC $CFLAGS -c -o /dev/null "$tmpc" 2>&1) ; then
+if output=$($CC $CFLAGS -c -o /dev/null "$tmpc" 2>&1); then
printf "yes\n"
else
printf "no; %s\n" "$output"
exit 1
fi
-if [ -z "$DEBUG" ]; then
-CFLAGS="-std=c23 -O0 -g3 -Wall -Wextra -Wpedantic -Werror -Wshadow -Wdouble-promotion -Wformat=2 -Wnull-dereference -Wconversion -Wsign-conversion -Wcast-qual -Wcast-align=strict -Wpointer-arith -Wstrict-overflow=5 -Wstrict-aliasing=2 -Wundef -Wunreachable-code -Wswitch-enum -fanalyzer -fsanitize=undefined,address -fstack-protector-strong -D_FORTIFY_SOURCE=3"
-fi
+GDEBUGCFLAGS="-std=c23 -O0 -g3 -Wall -Wextra -Wpedantic -Werror -Wshadow -Wdouble-promotion -Wformat=2 -Wnull-dereference -Wconversion -Wsign-conversion -Wcast-qual -Wcast-align=strict -Wpointer-arith -Wstrict-overflow=5 -Wstrict-aliasing=2 -Wundef -Wunreachable-code -Wswitch-enum -fanalyzer -fsanitize=undefined,address -fstack-protector-strong -D_FORTIFY_SOURCE=3"
+CDEBUGCFLAGS="-std=gnu2x -O0 -g3 -Wall -Wextra -Wpedantic -Werror -Wshadow -Wdouble-promotion -Wformat=2 -Wnull-dereference -Wconversion -Wsign-conversion -Wcast-qual -Wcast-align=strict -Wpointer-arith -Wstrict-overflow=5 -Wstrict-aliasing=2 -Wundef -Wunreachable-code -Wswitch-enum -fanalyzer -fsanitize=undefined,address -fstack-protector-strong -D_FORTIFY_SOURCE=3"
-case "$OSTYPE"
-case "cygwin"|"msys") echo "enabling windows specific flags" ; CFLAGS="-v ${CFLAGS}";;
+if [ -z "$DEBUG" ]; then
+case "$CC" in
+gcc) CFLAGS="$GDEBUGFLAGS";;
+clang) CFLAGS="$CDEBUGFLAGS";;
*) ;;
easc
+else
+case "$CC" in
+gcc) ;;
+clang) ;;
+*) ;;
+easc
+fi
+
+case "$OSTYPE" in
+cygwin|msys)
+echo "enabling windows specific flags"
+CFLAGS="-v $CFLAGS"
+;;
+esac
printf "creating config.mak... "
-printf "PREFIX=%s\n" "$prefix" > config.mak
-printf "CFLAGS=%s\n" "$CFLAGS" >> config.mak
-printf "LDFLAGS=%s\n" "$LDFLAGS" >> config.mak
-printf "CC=%s\n" "$CC" >> config.mak
+{
+printf "PREFIX=%s\n" "$prefix"
+printf "CFLAGS=%s\n" "$CFLAGS"
+printf "LDFLAGS=%s\n" "$LDFLAGS"
+printf "CC=%s\n" "$CC"
+} > config.mak
printf "done\n"
diff --git a/src/main.c b/src/main.c
@@ -48,7 +48,8 @@ static void usage(int status)
print_option("--make", "Use the GNU make build system (default)");
print_option("--bare", "Minimal C project structure");
print_option("--flat", "All files in project root.");
- print_option("--extras=<arg1>,<arg2>", "Extra build options, Pass list to list out options.");
+ print_option("--extras=<arg1>,<arg2>",
+ "Extra build options, Pass list to list out options.");
puts(" --help display this help text and exit");
puts(" --version output version information and exit");
}
diff --git a/tools/Cleanup b/tools/Cleanup
@@ -1,21 +1,20 @@
#!/bin/sh
-
# Usage: ./Cleanup
fatal() {
- echo "$@"
- echo fail.
- exit 1
+ echo "fatal: $*" >&2
+ exit 1
}
-if [ ! -d "./tools" ]; then
- echo "error: must be run from parent directory"
- exit 1
-fi
+run() {
+ "$@" || fatal "could not run: $*"
+}
+
+[ -d "./tools" ] || fatal "must be run from parent directory"
-sh ./tools/format || fatal Could not run './tools/format'
-rm -rf .cache || fatal Could not run 'rm -rf .cache'
-rm -f compile_commands.json || fatal Could not run 'rm -f compile_commands.json'
-make distclean || fatal Could not run 'make dist-clean'
+run sh ./tools/format
+run rm -rf .cache
+run rm -f compile_commands.json
+run make distclean
-echo done.
+echo "done."