summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk')
-rw-r--r--mk/preprocessor.mk28
1 files changed, 28 insertions, 0 deletions
diff --git a/mk/preprocessor.mk b/mk/preprocessor.mk
new file mode 100644
index 0000000..e503702
--- /dev/null
+++ b/mk/preprocessor.mk
@@ -0,0 +1,28 @@
+################################################################################
+## CONFIG ######################################################################
+################################################################################
+CONFIG_FILE ?= ${CURDIR}/conf/constants.conf
+
+################################################################################
+## MAKEFILE MAGIC ##############################################################
+################################################################################
+PREPROCESSOR_FILES = $(shell find ${CURDIR} -name "*.m4")
+PREPROCESSED_FILES = $(patsubst %.m4,%,$(PREPROCESSOR_FILES))
+
+################################################################################
+## SANITY CHECKS ###############################################################
+################################################################################
+ifeq ($(wildcard $(CONFIG_FILE)),)
+$(error "Missing CONFIG_FILE ($(CONFIG_FILE)), use the example to make one.")
+endif
+
+################################################################################
+## TARGET RULES ################################################################
+################################################################################
+PREPROCESSOR_RESULT = $(PREPROCESSED_FILES)
+
+################################################################################
+## INTERNAL RULES ##############################################################
+################################################################################
+$(PREPROCESSED_FILES): %: $(CONFIG_FILE) %.m4
+ m4 $^ > $@