From 90cc1f2632be0c45f8aa19d07e5af6e817cc791b Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Wed, 24 Jul 2013 14:17:19 +0200 Subject: build: split build system into smaller manageable pieces Split the build system into smaller manageable pieces, grouped by context. In that sense, we can keep the most important information within the Makefile itself, and group out misc bits and pieces that we just include into it. E.g. 'Cmds' contains all defined commands that we call from other locations, 'Template' contains the generic build template for all tools, 'Extra' has pieces that need special treatment for the tools to build and 'Misc' contains help and release code. This makes it more manageable on the long run. While at it, I also simplified some code and removed all Wflags expect "-Wall" as we want to convert into "-Wall -Wextra -W" anyway. Signed-off-by: Daniel Borkmann --- Template | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Template (limited to 'Template') diff --git a/Template b/Template new file mode 100644 index 0000000..d3b4ecc --- /dev/null +++ b/Template @@ -0,0 +1,23 @@ +define TOOL_templ + include $(1)/Makefile + $(1) $(1)%: BUILD_DIR := $(1) + $(1) $(1)%: CFLAGS += $$($(1)-eflags) + $(1)_prehook: + $(Q)echo "$(bold)$(WHAT) $(1):$(normal)" + $(1): $(1)_prehook $$($(1)-lex) $$($(1)-yaac) $$(patsubst %.o,$(1)/%.o,$$($(1)-objs)) + $(1)_clean: $(1)_clean_custom + $(Q)$$(call RM,$(1)/*.o $(1)/$(1) $(1)/*.gz) + $(1)_install: $(1)_install_custom + $(Q)$$(call INSTX,$(1)/$(1),$$(SBINDIR)) + $(Q)$(GZIP) $(1).8 > $(1)/$(1).8.gz + $(Q)$$(call INSTX,$(1)/$(1).8.gz,$$(MAN8DIR)) + $(1)_uninstall: $(1)_uninstall_custom + $(Q)$$(call RM,$$(SBINDIR)/$(1)) + $(Q)$$(call RM,$$(MAN8DIR)/$(1).8.gz) + $(1)/%.yy.o: $(1)/%.yy.c + $$(CC) $$(CFLAGS) -o $$@ -c $$< + $(1)/%.tab.o: $(1)/%.tab.c + $$(CC) $$(CFLAGS) -o $$@ -c $$< + $(1)/%.o: %.c + $$(CC) $$(CFLAGS) -o $(1)/$$(shell basename $$@) -c $$< +endef -- cgit v1.2.3-54-g00ecf