X-Git-Url: http://git.thejh.net/?p=libjh.git;a=blobdiff_plain;f=compile.sh;h=6e3b1c6e6300187d439e4abcdd76fbe0daf9dd29;hp=756af2b55c0e218fc98afac1a4bf59e0f85d5a5c;hb=6d9303c441fe1d8b473d24f40421d70058e2d2e5;hpb=ba887c5b9cbc2014cc1be9053169e694d2176657;ds=sidebyside diff --git a/compile.sh b/compile.sh index 756af2b..6e3b1c6 100755 --- a/compile.sh +++ b/compile.sh @@ -2,7 +2,6 @@ # YES, THIS NEEDS BASH, NOT /bin/sh (e.g. for <<<). # Copyright (2013) Jann Horn -# This code is licensed under the AGPLv3. # -f for files with weird names # -u for coding mistakes (or against, to be precise) @@ -12,7 +11,7 @@ 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' +CFLAGS='-O3 -Wall -Werror -Wno-error=strict-aliasing -fPIC -std=c99 -march=native' # create build environment if it doesn't exist yet mkdir -p gen # contains all generated files @@ -25,6 +24,9 @@ echo "welcome. your friendly compiler will be \"$CC\" today." >&2 echo "going ahead with CFLAGS=\"$CFLAGS\"..." >&2 # generate header +set +f +cat *.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")" @@ -34,12 +36,12 @@ for source_file in $(ls|grep '\.c$'); do sed 's|^PUBLIC_FN \(.*\){|KEEPLINE \1;|g' | sed 's|^PUBLIC_CONST |KEEPLINE #define |g' | sed 's|^HEADER |KEEPLINE |g' | - grep '^KEEPLINE' | + (set +e +o pipefail; grep '^KEEPLINE'; exit 0) | sed 's|^KEEPLINE ||g' echo '' echo '' -done > gen/jh.h +done >> gen/jh.h # preprocess all source files for source_file in $(ls|grep '\.c$'); do @@ -50,9 +52,10 @@ for source_file in $(ls|grep '\.c$'); do echo '#include "../jh.h"' > "gen/realc/$source_name.c" cat "$source_file" | - grep -v '^PUBLIC_CONST ' | + (set +e +o pipefail; grep -v '^PUBLIC_CONST '; exit 0) | sed 's|^PUBLIC_FN ||g' | - grep -v '^HEADER ' | + (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