aboutsummaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
authorBossCode45 <boss@tehbox.org>2025-06-27 14:54:46 +1200
committerBossCode45 <boss@tehbox.org>2025-07-24 12:48:21 +1200
commitf953c730af2b90db99f709258c5d5e50fdcaadf7 (patch)
treeadbc79f0d48a74a42fd0eb22d85f03696a99dc42 /makefile
parent06a2928d96b3d9aeaffb19013ba71a5cb6d96381 (diff)
downloadtehimage-f953c730af2b90db99f709258c5d5e50fdcaadf7.tar.gz
tehimage-f953c730af2b90db99f709258c5d5e50fdcaadf7.zip
Initial commit
Bringing a lot of stuff over from my maze-reader project in an attempt to split the image reading code off into a library.
Diffstat (limited to 'makefile')
-rw-r--r--makefile58
1 files changed, 58 insertions, 0 deletions
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..dabc3ed
--- /dev/null
+++ b/makefile
@@ -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)/%.hls 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