From 46c896bcd78d31130321562b0659e28230261b8e Mon Sep 17 00:00:00 2001 From: Dylan Date: Sat, 6 Jun 2026 18:05:19 +1200 Subject: feat: Initial commit, json data structure and serializing to json --- GNUmakefile | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 GNUmakefile (limited to 'GNUmakefile') diff --git a/GNUmakefile b/GNUmakefile new file mode 100644 index 0000000..b8aab00 --- /dev/null +++ b/GNUmakefile @@ -0,0 +1,59 @@ +# Source +OBJS_DIR := ./build +SOURCE_DIR := ./src +LIB_DIR := ./lib +INCLUDE_DIR := ./include +TEST_SRC_DIR := ./test +out ?= +INSTALL_DIR = $(out) + +# Flags +CXX := g++ +CXXFLAGS := -std=c++23 # -fsanitize=address -g +LINKFLAGS := #-static-libasan +TEST_CXXFLAGS := -std=c++23 -I$(INCLUDE_DIR) -fsanitize=address -g +TEST_LINKFLAGS := -L$(LIB_DIR) -ltehjson -static-libasan + +# Outputs +LIB := $(LIB_DIR)/libtehjson.so +TEST := json_test + +# Files +SOURCE_FILES := $(wildcard $(SOURCE_DIR)/*.cpp) +SOURCE_HEADERS := $(wildcard $(SOURCE_DIR)/*.h $(SOURCE_DIR)/*.hpp) +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 $(SOURCE_DIR)/%.h + $(CXX) $(CXXFLAGS) -c $< -o $@ + +$(INCLUDE_DIR)/%.h: $(SOURCE_DIR)/%.h lib + cp $< $@ +$(INCLUDE_DIR)/%.hpp: $(SOURCE_DIR)/%.hpp 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 +clean: + rm -f $(LIB) + rm -f $(OBJS_DIR)/*.o + rm -f $(TEST) + +test: $(TEST) + +$(OBJS_DIR)/json.o: $(SOURCE_DIR)/json.hpp -- cgit v1.2.3