2023-07-07 12:48:50 +02:00
|
|
|
PROJECTNAME=OMTRTA
|
|
|
|
BIN=build/$(PROJECTNAME)
|
2023-07-06 18:45:15 +02:00
|
|
|
CC=g++
|
|
|
|
|
|
|
|
EXT=cpp
|
2023-07-16 18:02:24 +02:00
|
|
|
INCFOLDERS=include lib
|
|
|
|
INCDIRS=$(foreach I,$(INCFOLDERS),$(shell find $(I) -type d 2>/dev/null))
|
2023-07-06 18:45:15 +02:00
|
|
|
|
|
|
|
# make mode=release
|
2023-07-07 12:48:50 +02:00
|
|
|
ifeq ($(mode), release)
|
2023-07-06 18:45:15 +02:00
|
|
|
OPT=-O3
|
2023-07-07 12:48:50 +02:00
|
|
|
else
|
|
|
|
OPT=-Og -g
|
2023-07-06 18:45:15 +02:00
|
|
|
endif
|
|
|
|
DEPFLAGS=-MP -MD
|
2023-07-07 12:48:50 +02:00
|
|
|
FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS)
|
2023-07-06 18:45:15 +02:00
|
|
|
|
|
|
|
SRC=$(shell find . -name "*.$(EXT)" -path "./src/*")
|
|
|
|
OBJ=$(subst ./src/,./build/,$(SRC:.$(EXT)=.o))
|
|
|
|
DEP=$(OBJ:.o=.d)
|
2023-07-16 18:02:24 +02:00
|
|
|
ASM=$(OBJ:.o=.s)
|
2023-07-07 12:48:50 +02:00
|
|
|
TEST=$(shell find . -name "*.$(EXT)" -path "./test/*")
|
2023-07-16 18:02:24 +02:00
|
|
|
TESTO=$(subst ./test/,./build/,$(TEST:.$(EXT)=.test))
|
2023-07-06 18:45:15 +02:00
|
|
|
|
|
|
|
$(shell mkdir -p build)
|
|
|
|
|
|
|
|
all : $(BIN)
|
|
|
|
|
|
|
|
$(BIN) : $(OBJ)
|
|
|
|
$(CC) $(FLAGS) -o $@ $^
|
|
|
|
|
|
|
|
-include $(DEP)
|
|
|
|
|
2023-07-07 12:48:50 +02:00
|
|
|
build/%.o : src/%.$(EXT)
|
2023-07-06 18:45:15 +02:00
|
|
|
@mkdir -p $(@D)
|
|
|
|
$(CC) $(FLAGS) -o $@ -c $<
|
|
|
|
|
|
|
|
run : all
|
2023-07-08 18:55:31 +02:00
|
|
|
./$(BIN) $(input)
|
2023-07-06 18:45:15 +02:00
|
|
|
|
|
|
|
clean :
|
|
|
|
rm -rf build/*
|
|
|
|
|
|
|
|
# make test file=testGenID.cpp
|
2023-07-16 18:02:24 +02:00
|
|
|
test : build/$(file:.$(EXT)=.test)
|
|
|
|
./build/$(file:.$(EXT)=.test)
|
2023-07-06 18:45:15 +02:00
|
|
|
|
2023-07-16 18:02:24 +02:00
|
|
|
alltest : $(TESTO)
|
|
|
|
for i in $$(ls build/*.test); do echo $$i; $$i; done
|
|
|
|
|
|
|
|
build/%.test : test/%.$(EXT)
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
$(CC) $(FLAGS) -o $@ $<
|
2023-07-06 18:45:15 +02:00
|
|
|
|
|
|
|
check :
|
|
|
|
cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) .
|
|
|
|
flawfinder .
|
|
|
|
|
|
|
|
info :
|
|
|
|
$(info put what ever)
|
|
|
|
@echo you want
|
|
|
|
|
2023-07-08 18:55:31 +02:00
|
|
|
# unzip : tar -xvf exemple.tgz
|
|
|
|
dist : clean
|
|
|
|
$(info /!\ project folder has to be named $(PROJECTNAME) /!\ )
|
|
|
|
cd .. && tar zcvf $(PROJECTNAME)/build/$(PROJECTNAME).tgz $(PROJECTNAME) >/dev/null
|
|
|
|
|
2023-07-16 18:02:24 +02:00
|
|
|
asm : $(ASM) $(BIN) $(BIN).s
|
|
|
|
|
|
|
|
build/%.s : src/%.$(EXT)
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
$(CC) $(FLAGS) -S $^ -o $@
|
|
|
|
|
|
|
|
$(BIN).s :
|
|
|
|
objdump -drwC -Mintel -S $(BIN) > $(BIN).s
|
|
|
|
|
|
|
|
debug : $(BIN)
|
|
|
|
gdb $(BIN) $(input)
|
|
|
|
|
|
|
|
preprocess : $(OBJ:.o=.i)
|
|
|
|
|
|
|
|
build/%.i : src/%.$(EXT)
|
|
|
|
@mkdir -p $(@D)
|
|
|
|
$(CC) $(FLAGS) -E $^ -o $@
|
|
|
|
|
|
|
|
gigall : all asm preprocess $(TESTO)
|
|
|
|
|
|
|
|
install : dist
|
|
|
|
cp Makefile ../script
|
|
|
|
mv build/OMTRTA.tgz ../opt/archive
|
|
|
|
cd .. && rm -rf OMTRTA
|
|
|
|
|
|
|
|
push :
|
|
|
|
git push bbsrv
|
|
|
|
git push gh
|
|
|
|
|
|
|
|
.PHONY : all run clean test alltest check info dist asm debug preprocess gigall install push
|