From 44afcc8cbed5f746dbe6eec8093f1bc5cdfd5eef Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sun, 21 Dec 2025 20:01:54 +0000 Subject: [PATCH] firmware: add build rules for RegGen-generated headers Change-Id: I86ff1a39aec1ee428abd6464483ae3732fdf9196 --- firmware/firmware.make | 3 +++ firmware/reggen/SOURCES | 1 + firmware/reggen/reggen.make | 27 +++++++++++++++++++++++++++ tools/tools.make | 4 ++++ 4 files changed, 35 insertions(+) create mode 100644 firmware/reggen/SOURCES create mode 100644 firmware/reggen/reggen.make diff --git a/firmware/firmware.make b/firmware/firmware.make index b840c90ba8..98c2c3bb27 100644 --- a/firmware/firmware.make +++ b/firmware/firmware.make @@ -14,6 +14,9 @@ INCLUDES += -I$(FIRMDIR)/libc/include endif include $(FIRMDIR)/asm/asm.make +ifneq ($(filter reggen,$(TOOLSET)),) + include $(FIRMDIR)/reggen/reggen.make +endif FIRMLIB_SRC += $(call preprocess, $(FIRMDIR)/SOURCES) FIRMLIB_OBJ := $(call c2obj, $(FIRMLIB_SRC)) diff --git a/firmware/reggen/SOURCES b/firmware/reggen/SOURCES new file mode 100644 index 0000000000..dfd8c956b1 --- /dev/null +++ b/firmware/reggen/SOURCES @@ -0,0 +1 @@ +// Intentionally empty file. diff --git a/firmware/reggen/reggen.make b/firmware/reggen/reggen.make new file mode 100644 index 0000000000..5f1c075fb0 --- /dev/null +++ b/firmware/reggen/reggen.make @@ -0,0 +1,27 @@ +# __________ __ ___. +# Open \______ \ ____ ____ | | _\_ |__ _______ ___ +# Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / +# Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < +# Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ +# \/ \/ \/ \/ \/ +# $Id$ +# + +REGGEN_SRC := $(call preprocess, $(FIRMDIR)/reggen/SOURCES) + +REGGEN_STAMP := $(foreach regs,$(REGGEN_SRC),$(notdir $(regs))) +REGGEN_STAMP := $(patsubst %.regs,$(BUILDDIR)/regs/%/_stamp,$(REGGEN_STAMP)) + +$(BUILDDIR)/regs/%/_stamp: $(FIRMDIR)/reggen/%.regs $(TOOLSDIR)/reggen + $(SILENT)rm -rf $(@D) + $(SILENT)mkdir -p $(@D) + $(call PRINTS,REGGEN $(subst $(ROOTDIR)/,,$<))$(TOOLSDIR)/reggen $< -rh reggen.h -ig $(subst -,_,$*) -o $(@D) + $(SILENT)touch $@ + +# 'touch' header to propagate dependency on reggen.h through to +# users of the generated headers. Might be a better way to do +# this, but this seems to be adequate. +$(BUILDDIR)/regs/%.h: $(REGGEN_STAMP) $(FIRMDIR)/export/reggen.h + $(SILENT)touch $@ + +CLEANOBJS += $(BUILDDIR)/regs diff --git a/tools/tools.make b/tools/tools.make index 00cb431078..5fd8e80cc3 100644 --- a/tools/tools.make +++ b/tools/tools.make @@ -41,6 +41,10 @@ $(TOOLSDIR)/convttf: $(TOOLSDIR)/convttf.c $(SILENT)$(HOSTCC) $(TOOLSFLAGS) -lm -O2 -Wall -g $+ -o $@ \ `pkg-config --cflags --libs freetype2` +$(TOOLSDIR)/reggen: $(wildcard $(TOOLSDIR)/reggen_src/*.c) + $(call PRINTS,CC $(@F)) + $(SILENT)$(HOSTCC) $(TOOLSFLAGS) -Wall -Wextra -O2 -g -o $@ $+ + # implicit rule for simple tools $(TOOLSDIR)/%: $(TOOLSDIR)/%.c $(call PRINTS,CC $(subst $(ROOTDIR)/,,$@))