#Authors: Aaron Graham (aaron.graham@unb.ca, aarongraham9@gmail.com), # Jean-Philippe Legault (jlegault@unb.ca, jeanphilippe.legault@gmail.com) and # Dr. Kenneth B. Kent (ken@unb.ca) # for the Reconfigurable Computing Research Lab at the # Univerity of New Brunswick in Fredericton, New Brunswick, Canada # If the first argument is "run"... ifeq (build,$(firstword $(MAKECMDGOALS))) # use the rest as arguments for "make" RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(RUN_ARGS):;@:) endif ifeq (run,$(firstword $(MAKECMDGOALS))) # use the rest as arguments for "make" RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(RUN_ARGS):;@:) endif ifeq (gdb,$(firstword $(MAKECMDGOALS))) # use the rest as arguments for "make" RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(RUN_ARGS):;@:) endif ifeq (valgrind,$(firstword $(MAKECMDGOALS))) # use the rest as arguments for "make" RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(RUN_ARGS):;@:) endif ifeq (debug,$(firstword $(MAKECMDGOALS))) # use the rest as arguments for "make" RUN_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) # ...and turn them into do-nothing targets $(eval $(RUN_ARGS):;@:) endif INCLUDE =-I../src/include BIN = bin/exec.out C = clang++ -std=c++14 -lpthread cleanup_flags=\ -ferror-limit=1000 \ -Werror \ -Wpedantic \ -Weverything \ -Wall \ -Wno-c++98-compat \ -Wno-unused-parameter \ -g -O0 -fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls PHONY: error error: echo "can only use 'clean', 'debug .cpp', 'build .cpp' or 'run '" debug: mkdir -p bin $(C) -ggdb $(cleanup_flags) $(INCLUDE) $(RUN_ARGS) -o $(BIN) build: mkdir -p bin $(C) $(INCLUDE) $(RUN_ARGS) -o $(BIN) run: $(BIN) $(RUN_ARGS) valgrind: build valgrind --tool=helgrind $(BIN) $(RUN_ARGS) gdb: gdb --args $(BIN) $(RUN_ARGS) clean: $(RM) -Rf bin