From e2fcea07eca10bf925e450dc1c2ce60735da16c2 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Tue, 21 Apr 2020 23:05:26 +0200 Subject: initial - basic makefile and main.c --- Makefile | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..647ebcd --- /dev/null +++ b/Makefile @@ -0,0 +1,53 @@ +# if $CC is not set, use gcc as a sensible default +CC ?= gcc +RM ?= rm -fv + +# if $CFLAGS is not set, be very pedantic and compile +# as C11, that should catch some common errors, also +# fortify the source, which is a must for security. +CFLAGS ?= -Wall \ + -D_FORTIFY_SOURCE=2 \ + -Wextra -Wcast-align -Wcast-qual -Wpointer-arith \ + -Waggregate-return -Wunreachable-code -Wfloat-equal \ + -Wformat=2 -Wredundant-decls -Wundef \ + -Wdisabled-optimization -Wshadow -Wmissing-braces \ + -Wstrict-aliasing=2 -Wstrict-overflow=5 -Wconversion \ + -Wno-unused-parameter \ + -pedantic -std=c11 + +CFLAGS_DEBUG := -g3 \ + -O \ + -DDEBUG + +CFLAGS_RELEASE := -O2 \ + -DNDEBUG \ + -march=native \ + -mtune=native \ + -ftree-vectorize + +# the default target is debug +all: debug + +# clean target, removing all .o and the executable +clean: + $(RM) *o bs_exe + +# when the target is debug, +# add CFLAGS_DEBUG to CFLAGS +debug: CFLAGS += $(CFLAGS_DEBUG) +debug: clean bs_exe + +# when the target is release, +# add CFLAGS_RELEASE to CFLAGS +release: CFLAGS += $(CFLAGS_RELEASE) +release: clean bs_exe + +bs_exe: main.o + $(CC) $^ -o $@ $(CFLAGS) + +# when looking for something that ends in .o, look +# for the same thing ending in .c and run gcc on it +%.o: %.c + $(CC) -c $< $(CFLAGS) + +.PHONY: debug release clean \ No newline at end of file -- cgit v1.2.3-54-g00ecf