From eed164fa72297efb69b624f3c58cb5deb339a974 Mon Sep 17 00:00:00 2001 From: BossCode45 Date: Fri, 27 Jun 2025 15:12:30 +1200 Subject: feat: Renamed makefile Changed it to GNUmakefile because it uses GNU make only features --- GNUmakefile | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 GNUmakefile (limited to 'GNUmakefile') diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..d42f0cf --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,58 @@ +# Source +OBJS_DIR := ./build +SOURCE_DIR := ./src +LIB_DIR := ./lib +INCLUDE_DIR := ./include +TEST_SRC_DIR := ./test + +# Flags +CXX := g++ +CXXFLAGS := -fsanitize=address -g +LINKFLAGS := -static-libasan +TEST_CXXFLAGS := -I$(INCLUDE_DIR) -fsanitize=address -g +TEST_LINKFLAGS := -L$(LIB_DIR) -ltehimage -static-libasan + +# Outputs +LIB := $(LIB_DIR)/libtehimage.so +TEST := image_test + +# Files +SOURCE_FILES := $(wildcard $(SOURCE_DIR)/*.cpp) +SOURCE_HEADERS := $(wildcard $(SOURCE_DIR)/*.h) +OBJS := $(subst $(SOURCE_DIR),$(OBJS_DIR), $(patsubst %.cpp,%.o,$(SOURCE_FILES))) +INCLUDE_HEADERS := $(subst $(SOURCE_DIR),$(INCLUDE_DIR), $(SOURCE_HEADERS)) +TEST_SOURCE := $(wildcard $(TEST_SRC_DIR)/*.cpp) +TEST_HEADERS := $(wildcard $(TEST_SRC_DIR)/*.h) +TEST_OBJS = $(subst $(TEST_SRC_DIR),$(OBJS_DIR), $(patsubst %.cpp,%.o,$(TEST_SOURCE))) + +# Main lib +$(LIB): $(INCLUDE_HEADERS) $(OBJS) + $(CXX) $(OBJS) $(CXXFLAGS) $(LINKFLAGS) -shared -o $(LIB) + +$(OBJS_DIR)/%.o: $(SOURCE_DIR)/%.cpp + $(CXX) $(CXXFLAGS) -c $< -o $@ + +$(INCLUDE_DIR)/%.h: $(SOURCE_DIR)/%.h lib + cp $< $@ + +# Test binary +$(TEST): $(TEST_OBJS) $(LIB) + $(CXX) $(TEST_OBJS) $(TEST_CXXFLAGS) $(TEST_LINKFLAGS) -o $(TEST) + +$(OBJS_DIR)/%.o: $(TEST_SRC_DIR)/%.cpp $(TEST_SOURCE) $(TEST_HEADERS) + $(CXX) $(TEST_CXXFLAGS) -c $< -o $@ + + +# Phony +.PHONY: clean test +clean: + rm -f $(LIB) + rm -f $(OBJS_DIR)/*.o + rm -f $(TEST) + +test: $(TEST) + +$(OBJS_DIR)/reader.o: $(SOURCE_DIR)/reader.cpp $(SOURCE_DIR)/reader.h $(SOURCE_DIR)/debug.h +$(OBJS_DIR)/image.o: $(SOURCE_DIR)/image.cpp $(SOURCE_DIR)/image.h +$(OBJS_DIR)/PNGImage.o: $(SOURCE_DIR)/PNGImage.cpp $(SOURCE_DIR)/PNGImage.h $(SOURCE_DIR)/debug.h $(SOURCE_DIR)/image.h $(SOURCE_DIR)/puff.h +$(OBJS_DIR)/zlib.o: $(SOURCE_DIR)/zlib.cpp $(SOURCE_DIR)/zlib.h -- cgit v1.2.3