diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 51 |
1 files changed, 48 insertions, 3 deletions
@@ -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 |
