From 389529fe3599b90544f09cdae2d6318eefbe2352 Mon Sep 17 00:00:00 2001 From: nbd Date: Sat, 28 Jul 2007 13:00:43 +0000 Subject: more build system cleanup git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8206 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- include/toplevel.mk | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 include/toplevel.mk (limited to 'include/toplevel.mk') 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: + -- cgit v1.2.3