INC=. LIBS=-lcrypto -lssl CFLAGS=-g -fno-inline SRC_C_FILES := $(wildcard src/*.c) SRC_CPP_FILES := $(wildcard src/*.cpp) OBJ_SRC_C_FILES := $(addprefix obj/,$(notdir $(SRC_C_FILES:.c=.o))) OBJ_SRC_CPP_FILES := $(addprefix obj/,$(notdir $(SRC_CPP_FILES:.cpp=.o))) SOL_C_FILES := $(wildcard sol/*.c) SOL_CPP_FILES := $(wildcard sol/*.cpp) OBJ_SOL_C_FILES := $(addprefix obj/,$(notdir $(SOL_C_FILES:.c=.o))) OBJ_SOL_CPP_FILES := $(addprefix obj/,$(notdir $(SOL_CPP_FILES:.cpp=.o))) TST_C_FILES := $(wildcard tst/*.c) TST_CPP_FILES := $(wildcard tst/*.cpp) OBJ_TST_C_FILES := $(addprefix obj/,$(notdir $(TST_C_FILES:.c=.o))) OBJ_TST_CPP_FILES := $(addprefix obj/,$(notdir $(TST_CPP_FILES:.cpp=.o))) obj/%.o: src/%.cpp g++ ${CFLAGS} -I${INC} -o $@ -c $^ obj/%.o: src/%.c g++ ${CFLAGS} -I${INC} -o $@ -c $^ obj/%.o: sol/%.cpp g++ ${CFLAGS} -I${INC} -o $@ -c $^ obj/%.o: sol/%.c g++ ${CFLAGS} -I${INC} -o $@ -c $^ obj/%.o: tst/%.cpp g++ ${CFLAGS} -I${INC} -o $@ -c $^ obj/%.o: tst/%.c g++ ${CFLAGS} -I${INC} -o $@ -c $^ all: create_directories obj-c obj-cpp sol-c sol-cpp tst-c tst-cpp g++ ${CFLAGS} -I${INC} -o main ${OBJ_SRC_C_FILES} \ ${OBJ_SRC_CPP_FILES} \ ${OBJ_SOL_C_FILES} \ ${OBJ_SOL_CPP_FILES} \ ${OBJ_TST_C_FILES} \ ${OBJ_TST_CPP_FILES} \ ${LIBS} create_directories: mkdir -p obj clean: rm -rf obj rm -rf main rm -rf core* obj-c: ${OBJ_SRC_C_FILES} obj-cpp: ${OBJ_SRC_CPP_FILES} sol-c: ${OBJ_SOL_C_FILES} sol-cpp: ${OBJ_SOL_CPP_FILES} tst-c: ${OBJ_TST_C_FILES} tst-cpp: ${OBJ_TST_CPP_FILES} .PHONY: valgrind valgrind: valgrind --suppressions=etc/suppressions.valgrind --max-stackframe=3145776 --leak-check=full ./main