summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile51
1 files changed, 48 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index a111866..ac18f45 100644
--- a/Makefile
+++ b/Makefile
@@ -17,6 +17,47 @@ define cxx-command
$(CXX) -std=c++23 -c -o $@ $(BUILD_MODE_FLAGS) $(CXXFLAGS) $(INCS) $<
endef
+define cc-encode-binary-command
+$(1): $(2)
+ xxd -i $$< | sed -e 's/^unsigned /const unsigned /' > $$@
+endef
+
+define cc-pre-compile-header-command
+$(1): $(2)
+ $(CC) -std=c2x -O3 -c $$< -o $$@
+endef
+
+FILES_BIN = \
+ src/sql/schema-000-000.sql \
+ src/sql/section_delete.sql \
+ src/sql/section_get.sql \
+ src/sql/section_upsert.sql \
+ src/sql/setlist_delete.sql \
+ src/sql/setlist_get.sql \
+ src/sql/setlist_upsert.sql \
+ src/sql/setlist_song_delete.sql \
+ src/sql/setlist_song_get.sql \
+ src/sql/setlist_song_upsert.sql \
+ src/sql/song_delete.sql \
+ src/sql/song_get.sql \
+ src/sql/song_upsert.sql \
+
+FILES_BIN_SAFE = $(subst -,_,$(subst .,_,$(FILES_BIN)))
+FILES_BIN_H = $(FILES_BIN_SAFE:%=%.h)
+FILES_BIN_GCH = $(FILES_BIN_SAFE:%=%.gch)
+
+# I don't like foreach but this works
+$(foreach f,$(FILES_BIN), \
+ $(eval \
+ $(call cc-encode-binary-command,$(subst -,_,$(subst .,_,$f)).h,$(f)) \
+ ) \
+)
+$(foreach f,$(FILES_BIN_SAFE), \
+ $(eval \
+ $(call cc-pre-compile-header-command,$(f).gch,$(f).h) \
+ ) \
+)
+
.PHONY: default
default: options .WAIT bin/pke-at
@@ -35,18 +76,21 @@ options: prepare .WAIT
@echo "CC = $(CC)"
@echo "CXX = $(CXX)"
+obj/embedded-sql.o : $(FILES_BIN_GCH)
obj/%.o : src/%.c | prepare
$(cc-command)
obj/%.o : src/%.cpp | prepare
$(cxx-command)
bin/pke-at: ## Builds the pke-at executable
+bin/pke-at: obj/embedded-sql.o
+bin/pke-at: obj/level-main.o
+bin/pke-at: obj/level-init.o
bin/pke-at: obj/main.o
-bin/pke-at: obj/pke-at-settings.o
bin/pke-at: obj/pke-at-common.o
+bin/pke-at: obj/pke-at-settings.o
+bin/pke-at: obj/pke-at-storage-sql.o
bin/pke-at: obj/pke-at.o
-bin/pke-at: obj/level-main.o
-bin/pke-at: obj/level-init.o
$(CXX) -v -std=c++23 $(BUILD_MODE_FLAGS) $(INCS) -Wl,--whole-archive $^ $(LDFLAGS) -Wl,--no-whole-archive $(CXXFLAGS) -o $@
.PHONY: clean
@@ -54,6 +98,7 @@ clean:
rm -rf bin
rm -rf obj
rm -rf *.plist
+ rm -f $(FILES_BIN_H)
.PHONY: help
help: ## Prints help for targets with comments