initial attempt at cleaning up subdirectory handling. tools/Makefile is now being included instead of recursively called
SVN-Revision: 8201
This commit is contained in:
		
							
								
								
									
										13
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								Makefile
									
									
									
									
									
								
							| @@ -23,7 +23,10 @@ export LANG=C | |||||||
| export TOPDIR=${CURDIR} | export TOPDIR=${CURDIR} | ||||||
| export IS_TTY=$(shell tty -s && echo 1 || echo 0) | export IS_TTY=$(shell tty -s && echo 1 || echo 0) | ||||||
|  |  | ||||||
| include $(TOPDIR)/include/verbose.mk | include ./rules.mk  | ||||||
|  | include $(INCLUDE_DIR)/depends.mk | ||||||
|  | include $(INCLUDE_DIR)/subdir.mk | ||||||
|  | include tools/Makefile | ||||||
|  |  | ||||||
| OPENWRTVERSION:=$(RELEASE) | OPENWRTVERSION:=$(RELEASE) | ||||||
| ifneq ($(VERSION),) | ifneq ($(VERSION),) | ||||||
| @@ -100,7 +103,7 @@ kernel_menuconfig: .config FORCE | |||||||
|  |  | ||||||
| package/% target/%: tmp/.packageinfo | package/% target/%: tmp/.packageinfo | ||||||
| toolchain/% package/% target/%: tmp/.targetinfo | toolchain/% package/% target/%: tmp/.targetinfo | ||||||
| package/% target/% tools/% toolchain/%: FORCE | package/% target/% toolchain/%: FORCE | ||||||
| 	$(MAKE) -C $(patsubst %/$*,%,$@) $* | 	$(MAKE) -C $(patsubst %/$*,%,$@) $* | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -130,8 +133,7 @@ download: .config FORCE | |||||||
| 	$(MAKE) package/download | 	$(MAKE) package/download | ||||||
| 	$(MAKE) target/download | 	$(MAKE) target/download | ||||||
|  |  | ||||||
| world: .config FORCE | world: .config $(tools/stamp) FORCE | ||||||
| 	$(MAKE) tools/install |  | ||||||
| 	$(MAKE) toolchain/install | 	$(MAKE) toolchain/install | ||||||
| 	$(MAKE) target/compile | 	$(MAKE) target/compile | ||||||
| 	$(MAKE) package/compile | 	$(MAKE) package/compile | ||||||
| @@ -162,5 +164,4 @@ symlinkclean: | |||||||
| 	rm -rf tmp | 	rm -rf tmp | ||||||
|  |  | ||||||
| .SILENT: clean dirclean distclean symlinkclean config-clean download world help tmp/.packageinfo tmp/.targetinfo tmpinfo-clean tmp/.config-package.in tmp/.config-target.in .config scripts/config/mconf scripts/config/conf menuconfig tmp/.prereq-build tmp/.prereq-package tmp/.prereq-target | .SILENT: clean dirclean distclean symlinkclean config-clean download world help tmp/.packageinfo tmp/.targetinfo tmpinfo-clean tmp/.config-package.in tmp/.config-target.in .config scripts/config/mconf scripts/config/conf menuconfig tmp/.prereq-build tmp/.prereq-package tmp/.prereq-target | ||||||
| FORCE: ; | .PHONY: help | ||||||
| .PHONY: FORCE help |  | ||||||
|   | |||||||
							
								
								
									
										63
									
								
								include/subdir.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								include/subdir.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | |||||||
|  | # debug flags: | ||||||
|  | # | ||||||
|  | # d: show subdirectory tree | ||||||
|  | # t: show added targets | ||||||
|  | # l: show legacy targets | ||||||
|  |  | ||||||
|  | ifeq ($(DEBUG),all) | ||||||
|  |   build_debug:=dt | ||||||
|  | else | ||||||
|  |   build_debug:=$(DEBUG) | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | define debug | ||||||
|  | $$(findstring $(2),$$(if $$(DEBUG_DIR),$$(if $$(filter $$(DEBUG_DIR)%,$(1)),$(build_debug)),$(build_debug))) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define warn | ||||||
|  | $$(if $(call debug,$(1),$(2)),$$(warning $(3))) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | define warn_eval | ||||||
|  | $(call warn,$(1),$(2),$(3)	$(4)) | ||||||
|  | $(4) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | dep/compile=$(1)/prepare | ||||||
|  | dep/install=$(1)/compile | ||||||
|  | SUBTARGETS:=clean download prepare compile install update refresh prereq | ||||||
|  |  | ||||||
|  | # Parameters: <subdir> | ||||||
|  | define subdir | ||||||
|  |   $(call warn,$(1),d,D $(1)) | ||||||
|  |   $(foreach bd,$($(1)/builddirs), | ||||||
|  |     $(call warn,$(1),d,BD $(1)/$(bd)) | ||||||
|  |     $(foreach target,$(SUBTARGETS), | ||||||
|  |       $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $(call dep/$(target),$(1)/$(bd)) $($(1)/$(bd)/$(target)) $($(1)//$(target))) | ||||||
|  | 		@$$(MAKE) -j1 -C $(1)/$(bd) $(target) | ||||||
|  |  | ||||||
|  |       # legacy targets | ||||||
|  |       $(call warn_eval,$(1)/$(bd),l,T,$(1)/$(bd)-$(target): $(1)/$(bd)/$(target)) | ||||||
|  | 	) | ||||||
|  |   ) | ||||||
|  |   $(foreach target,$(SUBTARGETS), | ||||||
|  |     $(call warn_eval,$(1),t,T,$(1)/$(target): $($(1)/) $(foreach bd,$($(1)/builddirs),$(1)/$(bd)/$(target))) | ||||||
|  |   ) | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | # Parameters: <subdir> <name> | ||||||
|  | define stampfile | ||||||
|  |   $(1)/stamp:=$(STAGING_DIR)/stampfiles/.$(2)_installed | ||||||
|  |   $(call rdep,$(1),$$($(1)/stamp)) | ||||||
|  |  | ||||||
|  |   $$($(1)/stamp): | ||||||
|  | 	@$(MAKE) $(1)/install | ||||||
|  | 	@mkdir -p $$$$(dirname $$($(1)/stamp)) | ||||||
|  | 	@touch $$($(1)/stamp) | ||||||
|  |   .PRECIOUS: $$($(1)/stamp) # work around a make bug | ||||||
|  |  | ||||||
|  |   $(1)//clean:=$(1)/stamp/clean | ||||||
|  |   $(1)/stamp/clean: FORCE | ||||||
|  | 	@rm -f $$($(1)/stamp) | ||||||
|  |  | ||||||
|  | endef | ||||||
| @@ -1,60 +1,28 @@ | |||||||
| #  | #  | ||||||
| # Copyright (C) 2006 OpenWrt.org | # Copyright (C) 2007 OpenWrt.org | ||||||
| # | # | ||||||
| # This is free software, licensed under the GNU General Public License v2. | # This is free software, licensed under the GNU General Public License v2. | ||||||
| # See /LICENSE for more information. | # See /LICENSE for more information. | ||||||
| # | # | ||||||
| # Main makefile for the host tools | # Main makefile for the host tools | ||||||
| # | # | ||||||
| include $(TOPDIR)/rules.mk |  | ||||||
| TARGETS-y:=sed sstrip ipkg-utils ext2fs squashfs mtd-utils lzma mkimage firmware-utils patch-cmdline |  | ||||||
| TARGETS-$(CONFIG_CCACHE) += ccache |  | ||||||
|  |  | ||||||
| TARGETS_DOWNLOAD:=$(patsubst %,%-download,$(TARGETS-y)) | curdir:=$(patsubst %/Makefile,%,$(lastword $(MAKEFILE_LIST))) | ||||||
| TARGETS_PREPARE:=$(patsubst %,%-prepare,$(TARGETS-y)) |  | ||||||
| TARGETS_COMPILE:=$(patsubst %,%-compile,$(TARGETS-y)) |  | ||||||
| TARGETS_INSTALL:=$(patsubst %,%-install,$(TARGETS-y)) |  | ||||||
| TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS-y)) |  | ||||||
| STAMP:=$(STAGING_DIR)/stampfiles/.tools_installed |  | ||||||
|  |  | ||||||
| all: install | # subdirectories to descend into | ||||||
| download: $(TARGETS_DOWNLOAD) | $(curdir)/builddirs := sed sstrip ipkg-utils ext2fs squashfs mtd-utils lzma mkimage firmware-utils patch-cmdline $(if $(CONFIG_CCACHE),ccache) | ||||||
| compile: $(TARGETS_COMPILE) |  | ||||||
| install: $(STAMP) |  | ||||||
| clean: $(TARGETS_CLEAN) |  | ||||||
|  |  | ||||||
| squashfs-compile: lzma-install | # builddir dependencies | ||||||
|  | $(curdir)/squashfs/compile := $(curdir)/lzma/install | ||||||
|  |  | ||||||
| ifneq ($(shell $(SCRIPT_DIR)/timestamp.pl -p . $(STAMP)),$(STAMP)) | # preparatory work | ||||||
|   $(STAMP): $(TARGETS_INSTALL) | $(STAGING_DIR)/include-host/.done: | ||||||
| endif | 	@mkdir -p $$(dirname $@) | ||||||
|  | 	@cp $(curdir)/include/*.h $$(dirname $@)/ | ||||||
|  | 	@touch $@ | ||||||
|  |  | ||||||
| $(STAMP): $(TOPDIR)/.config | # prerequisites for the individual targets | ||||||
| 	mkdir -p $(shell dirname $@) | $(curdir)/ := .config | ||||||
| 	touch $@ | $(curdir)//prepare := $(STAGING_DIR)/include-host/.done | ||||||
|  | $(eval $(call stampfile,$(curdir),tools)) | ||||||
| TOOL_HOST_INCLUDES:=$(patsubst ./include/%.h,$(STAGING_DIR)/include-host/%.h,$(wildcard ./include/*.h)) | $(eval $(call subdir,$(curdir))) | ||||||
| $(TOOL_HOST_INCLUDES): $(STAGING_DIR)/include-host/%.h: ./include/%.h |  | ||||||
| 	@mkdir -p $(STAGING_DIR)/include-host |  | ||||||
| 	$(CP) $< $@ |  | ||||||
|  |  | ||||||
| $(TOOL_BUILD_DIR): |  | ||||||
| 	@mkdir -p $@ |  | ||||||
|  |  | ||||||
| %-prereq %-download %-clean %-refresh %-update: FORCE |  | ||||||
| 	$(MAKE) -C $* $(patsubst $*-%,%,$@) |  | ||||||
|  |  | ||||||
| %-prepare: $(TOOL_HOST_INCLUDES) $(TOOL_BUILD_DIR) FORCE |  | ||||||
| 	$(MAKE) -C $* $(patsubst $*-%,%,$@) |  | ||||||
|  |  | ||||||
| %-compile: %-prepare FORCE |  | ||||||
| 	$(MAKE) -C $* $(patsubst $*-%,%,$@) |  | ||||||
| 	 |  | ||||||
| %-install: %-compile FORCE |  | ||||||
| 	$(MAKE) -C $* $(patsubst $*-%,%,$@) |  | ||||||
|  |  | ||||||
| ifeq ($(MAKECMDGOALS),install-targets) |  | ||||||
| MAKEFLAGS:=$(MAKEFLAGS) -j$(CONFIG_JLEVEL) |  | ||||||
| else |  | ||||||
| .NOTPARALLEL: |  | ||||||
| endif |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Felix Fietkau
					Felix Fietkau