Makefile: Generate embedded resources. Output to build/
Tento commit je obsažen v:
58
Makefile
58
Makefile
@@ -26,7 +26,8 @@ HEADERS+=$(wildcard cache/*.h)
|
|||||||
HEADERS+=$(wildcard sandbox/*.h)
|
HEADERS+=$(wildcard sandbox/*.h)
|
||||||
HEADERS+=$(wildcard dynamic/*.h)
|
HEADERS+=$(wildcard dynamic/*.h)
|
||||||
|
|
||||||
OBJECTS=$(patsubst %.cpp, %.o, $(SOURCES))
|
BUILDDIR = build
|
||||||
|
OBJECTS=$(patsubst %.cpp, $(BUILDDIR)/%.o, $(SOURCES))
|
||||||
WIKIOBJECTS=$(filter-out test.o, $(OBJECTS))
|
WIKIOBJECTS=$(filter-out test.o, $(OBJECTS))
|
||||||
TESTOBJECTS=$(filter-out qswiki.o, $(OBJECTS))
|
TESTOBJECTS=$(filter-out qswiki.o, $(OBJECTS))
|
||||||
DEPENDS = ${WIKIOBJECTS:.o=.d}
|
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.
|
# Points to the root of Google Test, relative to where this file is.
|
||||||
# Remember to tweak this if you move this file.
|
# Remember to tweak this if you move this file.
|
||||||
GTEST_DIR = /home/data/SOURCES/gtest/googletest
|
GTEST_DIR = ../../gtest/googletest
|
||||||
|
|
||||||
GTESTS_TESTDIR = ./tests/
|
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_LDFLAGS=-lsqlite3 -g -O0 -lpthread -lcrypto -lstdc++fs
|
||||||
GTEST_OBJECTS=$(filter-out qswiki.o, $(WIKIOBJECTS))
|
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
|
.DEFAULT_GOAL := qswiki
|
||||||
|
|
||||||
release: CXXFLAGS=$(RELEASE_CXXFLAGS)
|
release: CXXFLAGS=$(RELEASE_CXXFLAGS)
|
||||||
@@ -51,25 +62,52 @@ profile: LDFLAGS+= -pg
|
|||||||
release: qswiki
|
release: qswiki
|
||||||
profile: 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)
|
test: $(TESTOBJECTS)
|
||||||
$(CXX) $(TESTOBJECTS) ${LDFLAGS} -o test
|
$(CXX) $(TESTOBJECTS) ${LDFLAGS} -o $(BUILDDIR)/test
|
||||||
|
|
||||||
gtest: $(GTESTS_TESTDIR)/*.cpp $(GTEST_OBJECTS)
|
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)
|
$(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
|
$(BUILDDIR)/%.o:%.cpp
|
||||||
$(CXX) ${CXXFLAGS} ${INCLUDEFLAGS} -c -o $@ $<
|
$(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 $@ $<
|
$(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:
|
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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Odkázat v novém úkolu
Zablokovat Uživatele