X-Git-Url: http://git.thejh.net/?p=libjh.git;a=blobdiff_plain;f=compile.sh;h=9375a6729cb156539640d0301e705d09c302e21e;hp=64c148da8d8f7a23491a634311164479bf0c3cf6;hb=0fa47e6453747e3ef4ab707a5bcb34980a465a75;hpb=db23824f0c7b41e3cdbf74b3cf80acf2c65f5bda;ds=sidebyside diff --git a/compile.sh b/compile.sh index 64c148d..9375a67 100755 --- a/compile.sh +++ b/compile.sh @@ -11,7 +11,8 @@ set -f -u -e -o pipefail # flags for the build - adjust for your needs # delete all the generated stuff afterwards (with `rm -r gen`) CC='gcc' -CFLAGS='-O3 -Wall -Werror -fPIC -std=c99 -march=native' +# -fstack-check isn't just hardening - we do unbounded stack allocations in TPRINTF! +CFLAGS='-O3 -Wall -Werror -Wno-error=strict-aliasing -fPIC -std=c99 -march=native -fstack-check -fstack-protector-all -D_FORTIFY_SOURCE=2' # create build environment if it doesn't exist yet mkdir -p gen # contains all generated files @@ -24,6 +25,10 @@ echo "welcome. your friendly compiler will be \"$CC\" today." >&2 echo "going ahead with CFLAGS=\"$CFLAGS\"..." >&2 # generate header +set +f +# needs correct order, so list them here +cat header.h bufio.h > gen/jh.h +set -f for source_file in $(ls|grep '\.c$'); do echo "extracting header data from $source_file..." >&2 source_name="$(sed 's|\.c$||' <<< "$source_file")" @@ -38,7 +43,7 @@ for source_file in $(ls|grep '\.c$'); do echo '' echo '' -done > gen/jh.h +done >> gen/jh.h # preprocess all source files for source_file in $(ls|grep '\.c$'); do @@ -52,6 +57,7 @@ for source_file in $(ls|grep '\.c$'); do (set +e +o pipefail; grep -v '^PUBLIC_CONST '; exit 0) | sed 's|^PUBLIC_FN ||g' | (set +e +o pipefail; grep -v '^HEADER '; exit 0) | + sed 's| *JH_ATTR_[A-Z_]*||g' | cat >> "gen/realc/$source_name.c" if [ $? -ne 0 ]; then exit 1; fi @@ -78,4 +84,5 @@ done # ... and link! cd gen/obj $CC -shared -Wl,-soname,libjh.so -o ../libjh.so $(ls) +ar rcs ../libjh.a $(ls) cd ../..