diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/scan.mk | 1 | ||||
-rw-r--r-- | include/subdir.mk | 4 | ||||
-rw-r--r-- | include/toplevel.mk | 132 | ||||
-rw-r--r-- | include/verbose.mk | 20 |
4 files changed, 147 insertions, 10 deletions
diff --git a/include/scan.mk b/include/scan.mk index 552f14637..53b66f324 100644 --- a/include/scan.mk +++ b/include/scan.mk @@ -68,3 +68,4 @@ tmp/.$(SCAN_TARGET): $(TARGET_STAMP) $(SCAN_STAMP) FORCE: .PHONY: FORCE +.NOTPARALLEL: diff --git a/include/subdir.mk b/include/subdir.mk index 79624238b..407f8a81d 100644 --- a/include/subdir.mk +++ b/include/subdir.mk @@ -32,7 +32,7 @@ define subdir $(call warn,$(1),d,BD $(1)/$(bd)) $(foreach target,$(SUBTARGETS), $(call warn_eval,$(1)/$(bd),t,T,$(1)/$(bd)/$(target): $($(1)/$(bd)/$(target)) $(call $(1)//$(target),$(1)/$(bd))) - @$$(MAKE) -j1 -C $(1)/$(bd) $(target) + @+$$(MAKE) -j1 -C $(1)/$(bd) $(target) # legacy targets $(call warn_eval,$(1)/$(bd),l,T,$(1)/$(bd)-$(target): $(1)/$(bd)/$(target)) @@ -49,7 +49,7 @@ define stampfile $(call rdep,$(1),$$($(1)/stamp)) $$($(1)/stamp): - @$(MAKE) $(1)/install + @+$(MAKE) $(1)/install @mkdir -p $$$$(dirname $$($(1)/stamp)) @touch $$($(1)/stamp) .PRECIOUS: $$($(1)/stamp) # work around a make bug diff --git a/include/toplevel.mk b/include/toplevel.mk new file mode 100644 index 000000000..d9c16a5ec --- /dev/null +++ b/include/toplevel.mk @@ -0,0 +1,132 @@ +# Makefile for OpenWrt +# +# Copyright (C) 2007 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +RELEASE:=Kamikaze +#VERSION:=2.0 # uncomment for final release + +all: world + +SHELL:=/usr/bin/env bash +OPENWRTVERSION:=$(RELEASE) +ifneq ($(VERSION),) + OPENWRTVERSION:=$(VERSION) ($(OPENWRTVERSION)) +else + REV:=$(shell LANG=C svn info | awk '/^Revision:/ { print$$2 }' ) + ifneq ($(REV),) + OPENWRTVERSION:=$(OPENWRTVERSION)/r$(REV) + endif +endif +export OPENWRTVERSION + +ifeq ($(FORCE),) + .config scripts/config/conf scripts/config/mconf: tmp/.prereq-build + world: prereq +endif + +SCAN_COOKIE?=$(shell echo $$$$) +export SCAN_COOKIE + +tmp/.packageinfo tmp/.targetinfo prepare-tmpinfo: + @mkdir -p tmp/info + @$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="packageinfo" SCAN_DIR="package" SCAN_NAME="package" SCAN_DEPS="$(TOPDIR)/include/package*.mk" SCAN_DEPTH=4 SCAN_EXTRA="" + @$(NO_TRACE_MAKE) -s -f include/scan.mk SCAN_TARGET="targetinfo" SCAN_DIR="target/linux" SCAN_NAME="target" SCAN_DEPS="profiles/*.mk $(TOPDIR)/include/kernel*.mk" SCAN_DEPTH=2 SCAN_EXTRA="" + @for type in package target; do \ + f=tmp/.$${type}info; t=tmp/.config-$${type}.in; \ + [ "$$t" -nt "$$f" ] || ./scripts/metadata.pl $${type}_config < "$$f" > "$$t" || { rm -f "$$t"; echo "Failed to build $$t"; false; break; }; \ + done + +.config: ./scripts/config/conf prepare-tmpinfo + if [ \! -f .config ]; then \ + [ -e $(HOME)/.openwrt/defconfig ] && cp $(HOME)/.openwrt/defconfig .config; \ + $(NO_TRACE_MAKE) menuconfig; \ + fi + $< -D .config Config.in &> /dev/null + +scripts/config/mconf: + $(MAKE) -C scripts/config all + +scripts/config/conf: + $(MAKE) -C scripts/config conf + +config: scripts/config/conf prepare-tmpinfo FORCE + $< Config.in + +config-clean: FORCE + $(NO_TRACE_MAKE) -C scripts/config clean + +defconfig: scripts/config/conf prepare-tmpinfo FORCE + touch .config + $< -D .config Config.in + +oldconfig: scripts/config/conf prepare-tmpinfo FORCE + $< -o Config.in + +menuconfig: scripts/config/mconf prepare-tmpinfo FORCE + if [ \! -f .config -a -e $(HOME)/.openwrt/defconfig ]; then \ + cp $(HOME)/.openwrt/defconfig .config; \ + fi + $< Config.in + +kernel_oldconfig: .config FORCE + $(NO_TRACE_MAKE) -C target/linux oldconfig + +kernel_menuconfig: .config FORCE + $(NO_TRACE_MAKE) -C target/linux menuconfig + +tmp/.prereq-build: include/prereq-build.mk + mkdir -p tmp + rm -f tmp/.host.mk + $(NO_TRACE_MAKE) -s -f $(TOPDIR)/include/prereq-build.mk prereq 2>/dev/null || { \ + echo "Prerequisite check failed. Use FORCE=1 to override."; \ + false; \ + } + touch $@ + +tmp/.prereq-package: tmp/.packageinfo +tmp/.prereq-target: tmp/.targetinfo .config +tmp/.prereq-package tmp/.prereq-target: include/prereq.mk + mkdir -p tmp + rm -f tmp/.host.mk + $(NO_TRACE_MAKE) -s -C $(patsubst tmp/.prereq-%,%,$@) prereq 2>/dev/null || { \ + echo "Prerequisite check failed. Use FORCE=1 to override."; \ + false; \ + } + touch $@ + +prereq: tmp/.prereq-build tmp/.prereq-package tmp/.prereq-target .config FORCE ; + +download: .config FORCE + $(MAKE) -j1 tools/download + $(MAKE) -j1 toolchain/download + $(MAKE) -j1 package/download + $(MAKE) -j1 target/download + +clean dirclean distclean: + @$(MAKE) $@ + +%:: + @$(SUBMAKE) -s prereq QUIET=0 OPENWRT_BUILD= + @$(MAKE) $@ + +help: + cat README + +docs docs/compile: FORCE + $(MAKE) -C docs compile + +docs/clean: FORCE + $(MAKE) -C docs clean + +symlinkclean: + -find package -type l | xargs rm -f + rm -rf tmp + +.SILENT: symlinkclean clean dirclean distclean config-clean download help tmpinfo-clean .config scripts/config/mconf scripts/config/conf menuconfig tmp/.prereq-build tmp/.prereq-package tmp/.prereq-target +.PHONY: help FORCE +.NOTPARALLEL: + diff --git a/include/verbose.mk b/include/verbose.mk index 6b2d6d044..f18e9a2c7 100644 --- a/include/verbose.mk +++ b/include/verbose.mk @@ -8,7 +8,9 @@ ifeq ($(NO_TRACE_MAKE),) NO_TRACE_MAKE := $(MAKE) V=99 +SUBMAKE := $(MAKE) export NO_TRACE_MAKE +export SUBMAKE endif ifndef KBUILD_VERBOSE @@ -29,18 +31,20 @@ endef ifneq ($(KBUILD_VERBOSE),99) ifeq ($(QUIET),1) - $(MAKECMDGOALS): trace - trace: FORCE - @[ -f "$(MAKECMDGOALS)" ] || { \ - [ -z "$${PWD##$$TOPDIR}" ] || DIR=" -C $${PWD##$$TOPDIR/}"; \ - $(call MESSAGE, "make[$$(($(MAKELEVEL)+1))]$$DIR $(MAKECMDGOALS)"); \ - } + ifneq ($(CURDIR),$(TOPDIR)) + _DIR:=$(patsubst $(TOPDIR)/%,%,${CURDIR}) + else + _DIR:= + endif + _NULL:=$(if $(MAKECMDGOALS),$(shell \ + $(call MESSAGE, "make[$(MAKELEVEL)]$(if $(_DIR), -C $(_DIR)) $(MAKECMDGOALS)"); \ + )) else - export QUIET:=1 ifeq ($(KBUILD_VERBOSE),0) MAKE:=&>/dev/null $(MAKE) endif - MAKE:=cmd() { $(MAKE) $$* || { echo "Build failed. Please re-run make with V=99 to see what's going on"; false; } } 3>&1 4>&2; cmd + export QUIET:=1 + MAKE:=cmd() { $(MAKE) $$* || { echo "make $$*: build failed. Please re-run make with V=99 to see what's going on"; false; } } 3>&1 4>&2; cmd endif .SILENT: $(MAKECMDGOALS) |