diff --git a/Makefile b/Makefile index 07131cf..120bc81 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,8 @@ HEADERS+=$(wildcard cache/*.h) HEADERS+=$(wildcard sandbox/*.h) HEADERS+=$(wildcard dynamic/*.h) -OBJECTS=$(patsubst %.cpp, %.o, $(SOURCES)) +BUILDDIR = build +OBJECTS=$(patsubst %.cpp, $(BUILDDIR)/%.o, $(SOURCES)) WIKIOBJECTS=$(filter-out test.o, $(OBJECTS)) TESTOBJECTS=$(filter-out qswiki.o, $(OBJECTS)) DEPENDS = ${WIKIOBJECTS:.o=.d} @@ -34,7 +35,7 @@ DEPENDS = ${WIKIOBJECTS:.o=.d} # Points to the root of Google Test, relative to where this file is. # Remember to tweak this if you move this file. -GTEST_DIR = /home/data/SOURCES/gtest/googletest +GTEST_DIR = ../../gtest/googletest GTESTS_TESTDIR = ./tests/ @@ -42,6 +43,16 @@ GTEST_CXXFLAGS=-std=$(CPPSTD) -isystem $(GTEST_DIR)/include -I$(GTEST_DIR) -g -O GTEST_LDFLAGS=-lsqlite3 -g -O0 -lpthread -lcrypto -lstdc++fs GTEST_OBJECTS=$(filter-out qswiki.o, $(WIKIOBJECTS)) +RESOURCEDIR := template/quitesimple +RESOURCEFILES := $(shell find $(RESOURCEDIR) -type f) +RESOURCEOUTDIR := $(BUILDDIR)/resources +RESOURCEOBJECTS := $(patsubst $(RESOURCEDIR)/%,$(RESOURCEOUTDIR)/%.o,$(RESOURCEFILES)) + +GENERATED_PATH = $(BUILDDIR)/generated + +OBJCOPY_ARCH := elf64-x86-64 +OBJCOPY_TARGET := i386:x86-64 + .DEFAULT_GOAL := qswiki release: CXXFLAGS=$(RELEASE_CXXFLAGS) @@ -51,25 +62,52 @@ profile: LDFLAGS+= -pg release: qswiki profile: qswiki +OBJECTDIRS=$(sort $(dir $(OBJECTS))) -exile.o: submodules/exile.h/exile.c - $(CC) -std=c99 -c submodules/exile.h/exile.c -o exile.o -qswiki: $(WIKIOBJECTS) exile.o - $(CXX) $(shell shuf -e $(WIKIOBJECTS) exile.o ) ${LDFLAGS} ${INCLUDEFLAGS} -o qswiki + +$(OBJECTS): | $(OBJECTDIRS) + +$(OBJECTDIRS): + mkdir -p $@ + + +$(BUILDDIR)/exile.o: submodules/exile.h/exile.c + $(CC) -std=c99 -c submodules/exile.h/exile.c -o $@ + +qswiki: $(WIKIOBJECTS) $(BUILDDIR)/exile.o $(RESOURCEOBJECTS) + $(CXX) $(shell shuf -e $(WIKIOBJECTS) $(RESOURCEOBJECTS) $(BUILDDIR)/exile.o ) ${LDFLAGS} ${INCLUDEFLAGS} -o $(BUILDDIR)/qswiki test: $(TESTOBJECTS) - $(CXX) $(TESTOBJECTS) ${LDFLAGS} -o test + $(CXX) $(TESTOBJECTS) ${LDFLAGS} -o $(BUILDDIR)/test gtest: $(GTESTS_TESTDIR)/*.cpp $(GTEST_OBJECTS) $(CXX) -o gtest $(GTESTS_TESTDIR)/*.cpp $(GTEST_OBJECTS) $(GTEST_CXXFLAGS) $(GTEST_DIR)/src/gtest_main.cc $(GTEST_DIR)/src/gtest-all.cc $(GTEST_LDFLAGS) -%.o:%.cpp - $(CXX) ${CXXFLAGS} ${INCLUDEFLAGS} -c -o $@ $< +$(BUILDDIR)/%.o:%.cpp + $(CXX) ${CXXFLAGS} ${INCLUDEFLAGS} -c -o $@ $< -version.o:version.cpp +$(BUILDDIR)/version.o:version.cpp $(CXX) ${CXXFLAGS} ${INCLUDEFLAGS} -DGITCOMMIT=\"$(shell git rev-parse --short HEAD)\" -c -o $@ $< + +$(BUILDDIR)/embedded.o:embedded.cpp genresources + $(CXX) ${CXXFLAGS} ${INCLUDEFLAGS} -I $(GENERATED_PATH) -c -o $@ $< clean: - rm -f exile.o $(OBJECTS) $(DEPENDS) + rm -r build + +genresources: resources_gen.sh + ./resources_gen.sh $(GENERATED_PATH) + +$(RESOURCEOUTDIR)/%.o: $(RESOURCEDIR)/% + @mkdir -p $(dir $@) + objcopy -I binary -O $(OBJCOPY_ARCH) -B $(OBJCOPY_TARGET) \ + --rename-section .data=.rodata,alloc,load,readonly,data,contents \ + $< $@ + + + +.PHONY: resources +resources: $(RESOURCEOBJECTS) +