X-Git-Url: http://git.thejh.net/?p=libjh.git;a=blobdiff_plain;f=compile.sh;h=64c148da8d8f7a23491a634311164479bf0c3cf6;hp=0e005667c97fbc7ce258eaf40a71ad9292503721;hb=db23824f0c7b41e3cdbf74b3cf80acf2c65f5bda;hpb=e3a7f339e843d1424aef577e5634ac70343ec49c;ds=sidebyside diff --git a/compile.sh b/compile.sh index 0e00566..64c148d 100755 --- a/compile.sh +++ b/compile.sh @@ -1,6 +1,8 @@ #!/bin/bash # YES, THIS NEEDS BASH, NOT /bin/sh (e.g. for <<<). +# Copyright (2013) Jann Horn + # -f for files with weird names # -u for coding mistakes (or against, to be precise) # -e and -o pipefail so that we don't have to spam the code with error handling @@ -9,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='-g -O0 -Wall -Werror -fPIC -std=c99' +CFLAGS='-O3 -Wall -Werror -fPIC -std=c99 -march=native' # create build environment if it doesn't exist yet mkdir -p gen # contains all generated files @@ -31,12 +33,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/libjh.h +done > gen/jh.h # preprocess all source files for source_file in $(ls|grep '\.c$'); do @@ -44,12 +46,12 @@ for source_file in $(ls|grep '\.c$'); do source_name="$(sed 's|\.c$||' <<< "$source_file")" # do our own preprocessing - echo '#include "../libjh.h"' > "gen/realc/$source_name.c" + 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) | cat >> "gen/realc/$source_name.c" if [ $? -ne 0 ]; then exit 1; fi @@ -76,4 +78,4 @@ done # ... and link! cd gen/obj $CC -shared -Wl,-soname,libjh.so -o ../libjh.so $(ls) -cd ../.. \ No newline at end of file +cd ../..