script-linux/Makefile

98 lines
1.9 KiB
Makefile

PROJECTNAME=OMTRTA
BIN=build/$(PROJECTNAME)
CC=g++
EXT=cpp
INCFOLDERS=include lib
INCDIRS=$(foreach I,$(INCFOLDERS),$(shell find $(I) -type d 2>/dev/null))
# make mode=release
ifeq ($(mode), release)
OPT=-O3
else
OPT=-Og -g
endif
DEPFLAGS=-MP -MD
FLAGS=-Wall -Wextra $(foreach F,$(INCDIRS),-I$(F)) $(OPT) $(DEPFLAGS)
SRC=$(shell find . -name "*.$(EXT)" -path "./src/*")
OBJ=$(subst ./src/,./build/,$(SRC:.$(EXT)=.o))
DEP=$(OBJ:.o=.d)
ASM=$(OBJ:.o=.s)
TEST=$(shell find . -name "*.$(EXT)" -path "./test/*")
TESTO=$(subst ./test/,./build/,$(TEST:.$(EXT)=.test))
$(shell mkdir -p build)
all : $(BIN)
$(BIN) : $(OBJ)
$(CC) $(FLAGS) -o $@ $^
-include $(DEP)
build/%.o : src/%.$(EXT)
@mkdir -p $(@D)
$(CC) $(FLAGS) -o $@ -c $<
run : all
./$(BIN) $(input)
clean :
rm -rf build/*
# make test file=testGenID.cpp
test : build/$(file:.$(EXT)=.test)
./build/$(file:.$(EXT)=.test)
alltest : $(TESTO)
for i in $$(ls build/*.test); do echo $$i; $$i; done
build/%.test : test/%.$(EXT)
@mkdir -p $(@D)
$(CC) $(FLAGS) -o $@ $<
check :
cppcheck --enable=all --suppress=missingIncludeSystem $(foreach I,$(INCDIRS),-I$(I)) .
flawfinder .
info :
$(info put what ever)
@echo you want
# 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
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