diff options
Diffstat (limited to 'git/new-c-proj')
| -rwxr-xr-x | git/new-c-proj | 81 |
1 files changed, 70 insertions, 11 deletions
diff --git a/git/new-c-proj b/git/new-c-proj index 8bd90f8..7546478 100755 --- a/git/new-c-proj +++ b/git/new-c-proj @@ -39,7 +39,11 @@ cat > .gitignore <<EOF *~ *.o *.a +*.t +*.f *.lo +*.to +*.fo *.su *.so *.so.* @@ -52,7 +56,9 @@ cat > .gitignore <<EOF EOF mkdir -p -- .git/info -printf '%s\n' '_*' '.hidden' '.makeenv' >> .git/info/exclude +printf '%s\n' '_*' '._*' '.hidden' '.makeenv' >> .git/info/exclude + +printf '%s\n' 'MAKEENV_OPTS_OPT_ATTACHED_ARG = j' 'CC = gcc-extreme -std=c99' >> .makeenv if printf '%s\n' "$1" | grep '^lib' >/dev/null 2>/dev/null; then UPPERCASE="$(printf '%s\n' "$1" | tr '[a-z-]' '[A-Z_]')" @@ -92,17 +98,37 @@ if printf '%s\n' "$1" | grep '^lib' >/dev/null 2>/dev/null; then x $1.h LOBJ = \$(OBJ:.o=.lo) + TOBJ = \$(OBJ:.o=.to) + + + ALL_CPPFLAGS = \$(CPPFLAGS) \$(FUZZED_CPPFLAGS) + ALL_CFLAGS = \$(CFLAGS) \$(FUZZED_CFLAGS) + ALL_LDFLAGS = \$(LDFLAGS) \$(FUZZED_LDFLAGS) - all: $1.a $1.\$(LIBEXT) + all: $1.a $1.\$(LIBEXT) \$(TEST) \$(OBJ): \$(HDR) \$(LOBJ): \$(HDR) + \$(TOBJ): \$(HDR) + \$(TEST): $1.a .c.o: - x \$(CC) -c -o \$@ \$< \$(CFLAGS) \$(CPPFLAGS) + x \$(CC) -c -o \$@ \$< \$(ALL_CFLAGS) \$(COV_CFLAGS) \$(ALL_CPPFLAGS) \$(COV_CPPFLAGS) .c.lo: - x \$(CC) -fPIC -c -o \$@ \$< \$(CFLAGS) \$(CPPFLAGS) + x \$(CC) -fPIC -c -o \$@ \$< \$(ALL_CFLAGS) \$(COV_CFLAGS) \$(ALL_CPPFLAGS) \$(COV_CPPFLAGS) + + .c.to: + x \$(CC) -DTEST -c -o \$@ \$< $\(G) \$(ALL_CFLAGS) \$(ALL_CPPFLAGS) \$(COV_CPPFLAGS) + + .to.t: + x \$(CC) -o \$@ \$< $1.a \$(G) \$(ALL_LDFLAGS) \$(COV_LDFLAGS) + + .c.fo: + x \$(CC) -DTEST -DFUZZ -c -o \$@ \$< \$(G) \$(ALL_CFLAGS) \$(ALL_CPPFLAGS) \$(FUZZ_CFLAGS) \$(FUZZ_CPPFLAGS) + + .fo.f: + x \$(CC) -o \$@ \$< $1.a \$(G) \$(ALL_LDFLAGS) \$(TEST_LDFLAGS) \$(FUZZ_LDFLAGS) $1.a: \$(OBJ) x @rm -f -- \$@ @@ -110,7 +136,7 @@ if printf '%s\n' "$1" | grep '^lib' >/dev/null 2>/dev/null; then x \$(AR) ts \$@ > /dev/null $1.\$(LIBEXT): \$(LOBJ) - x \$(CC) \$(LIBFLAGS) -o \$@ \$(LOBJ) \$(LDFLAGS) + x \$(CC) \$(LIBFLAGS) -o \$@ \$(LOBJ) \$(ALL_LDFLAGS) install: $1.a $1.\$(LIBEXT) x mkdir -p -- "\$(DESTDIR)\$(PREFIX)/lib" @@ -132,9 +158,10 @@ if printf '%s\n' "$1" | grep '^lib' >/dev/null 2>/dev/null; then clean: x -rm -f -- *.o *.a *.lo *.su *.so *.so.* *.dll *.dylib x -rm -f -- *.gch *.gcov *.gcno *.gcda *.\$(LIBEXT) + x -rm -f -- *.t *.to *.f *.fo .SUFFIXES: - .SUFFIXES: .lo .o .c + .SUFFIXES: .lo .o .c .to .t .fo .f .PHONY: all install uninstall clean EOF @@ -181,14 +208,20 @@ else HDR = + + ALL_CPPFLAGS = \$(CPPFLAGS) \$(FUZZED_CPPFLAGS) + ALL_CFLAGS = \$(CFLAGS) \$(FUZZED_CFLAGS) + ALL_LDFLAGS = \$(LDFLAGS) \$(FUZZED_LDFLAGS) + + all: $1 \$(OBJ): \$(HDR) .c.o: - x \$(CC) -c -o \$@ \$< \$(CFLAGS) \$(CPPFLAGS) + x \$(CC) -c -o \$@ \$< \$(ALL_CFLAGS) \$(GOV_CFLAGS) \$(ALL_CPPFLAGS) \$(GOV_CPPFLAGS) $1: \$(OBJ) - x \$(CC) -o \$@ \$(OBJ) \$(LDFLAGS) + x \$(CC) -o \$@ \$(OBJ) \$(ALL_LDFLAGS) \$(COV_LDFLAGS) install: $1 x mkdir -p -- "\$(DESTDIR)\$(PREFIX)/bin" @@ -201,7 +234,8 @@ else x -rm -f -- "\$(DESTDIR)\$(MANPREFIX)/man1/$1.1" clean: - x -rm -f -- *.o *.a *.lo *.su *.so *.so.* *.gch *.gcov *.gcno *.gcda + x -rm -f -- *.o *.a *.lo *.su *.so *.so.* *.gch + x -rm -f -- *.gcov *.gcno *.gcda *.t *.to *.f *.fo x -rm -f -- $1 .SUFFIXES: @@ -217,7 +251,32 @@ cat > config.mk <<-EOF CC = c99 + COMMON_SANITIZE = -fsanitize=alignment,shift,signed-integer-overflow,object-size,null,undefined,bounds,address + CLANG_SANITIZE = -O1 \$(COMMON_SANITIZE),cfi -flto -fvisibility=hidden -fno-sanitize-trap=cfi + GCC_SANITIZE = -O1 \$(COMMON_SANITIZE) + #SANITIZE = \$(CLANG_SANITIZE) + #SANITIZE = \$(GCC_SANITIZE) + CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_GNU_SOURCE - CFLAGS = - LDFLAGS = + CFLAGS = \$(SANITIZE) + LDFLAGS = \$(SANITIZE) + + G = -g +EOF + +cat <<-EOF | sed 's/x\t/\t/g' > config-coverage-gcc.mk + CONFIGFILE_PROPER = config.mk + include \$(CONFIGFILE_PROPER) + + CC = \$(CC_PREFIX)gcc -std=c99 + GCOV = gcov + + COV_CPPFLAGS = -DCOVERAGE_TEST + COV_CFLAGS = --coverage -g -O0 + COV_LDFLAGS = --coverage -g -O0 + + G = + + coverage: check + x \$(GCOV) -pr -- *.gcda 2>&1 EOF |
