save
This commit is contained in:
68
configure
vendored
68
configure
vendored
@@ -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"
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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: $*"
|
||||
}
|
||||
|
||||
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'
|
||||
[ -d "./tools" ] || fatal "must be run from parent directory"
|
||||
|
||||
echo done.
|
||||
run sh ./tools/format
|
||||
run rm -rf .cache
|
||||
run rm -f compile_commands.json
|
||||
run make distclean
|
||||
|
||||
echo "done."
|
||||
|
||||
Reference in New Issue
Block a user