3 # Copyright (C) 2007 OpenWrt.org
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
10 SHELL
:=/usr
/bin
/env bash
11 PREP_MK
= OPENWRT_BUILD
= QUIET
=0
13 include $(TOPDIR
)/include/verbose.mk
15 REVISION
:=$(shell $(TOPDIR
)/scripts
/getver.sh
)
16 OPENWRTVERSION
:=$(RELEASE
)$(if
$(REVISION
), ($(REVISION
)))
20 export IS_TTY
=$(shell tty
-s
&& echo
1 || echo
0)
23 .config scripts
/config
/conf scripts
/config
/mconf
: tmp
/.prereq-build
26 SCAN_COOKIE?
=$(shell echo
$$$$)
31 prepare-tmpinfo
: FORCE
33 +$(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
=5 SCAN_EXTRA
=""
34 +$(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
="" SCAN_MAKEOPTS
="TARGET_BUILD=1"
35 for type in package target
; do \
36 f
=tmp
/.
$${type}info; t
=tmp
/.config-
$${type}.in
; \
37 [ "$$t" -nt
"$$f" ] || .
/scripts
/metadata.pl
$${type}_config
"$$f" > "$$t" ||
{ rm -f
"$$t"; echo
"Failed to build $$t"; false
; break
; }; \
39 .
/scripts
/metadata.pl package_mk tmp
/.packageinfo
> tmp
/.packagedeps ||
{ rm -f tmp
/.packagedeps
; false
; }
40 touch
$(TOPDIR
)/tmp
/.build
42 .config
: .
/scripts
/config
/conf prepare-tmpinfo
43 @
+if
[ \
! -f .config
]; then \
44 [ -e
$(HOME
)/.openwrt
/defconfig
] && cp
$(HOME
)/.openwrt
/defconfig .config
; \
45 $(NO_TRACE_MAKE
) menuconfig
$(PREP_MK
); \
49 @
+$(MAKE
) -C scripts
/config
all
51 $(eval
$(call rdep
,scripts
/config
,scripts
/config
/mconf
))
54 @
+$(MAKE
) -C scripts
/config conf
56 config
: scripts
/config
/conf prepare-tmpinfo FORCE
60 $(NO_TRACE_MAKE
) -C scripts
/config
clean
62 defconfig
: scripts
/config
/conf prepare-tmpinfo FORCE
64 $< -D .config Config.in
66 oldconfig
: scripts
/config
/conf prepare-tmpinfo FORCE
67 $< -$(if
$(CONFDEFAULT
),$(CONFDEFAULT
),o
) Config.in
69 menuconfig
: scripts
/config
/mconf prepare-tmpinfo FORCE
70 if
[ \
! -f .config
-a
-e
$(HOME
)/.openwrt
/defconfig
]; then \
71 cp
$(HOME
)/.openwrt
/defconfig .config
; \
75 kernel_oldconfig
: .config FORCE
76 $(NO_TRACE_MAKE
) -C target
/linux oldconfig
78 kernel_menuconfig
: .config FORCE
79 $(NO_TRACE_MAKE
) -C target
/linux menuconfig
81 tmp
/.prereq-build
: include/prereq-build.mk
84 @
+$(NO_TRACE_MAKE
) -s
-f
$(TOPDIR
)/include/prereq-build.mk prereq
2>/dev
/null ||
{ \
85 echo
"Prerequisite check failed. Use FORCE=1 to override."; \
90 download
: .config FORCE
91 $(MAKE
) -j1 tools
/download
92 $(MAKE
) -j1 toolchain
/download
93 $(MAKE
) -j1 package
/download
94 $(MAKE
) -j1 target
/download
96 clean dirclean
: .config
100 @
+$(SUBMAKE
) -s tmp
/.prereq-build
$(PREP_MK
)
101 @
$(NO_TRACE_MAKE
) -s
$@
104 @
+$(PREP_MK
) $(NO_TRACE_MAKE
) -s prereq
110 docs docs
/compile
: FORCE
111 $(MAKE
) -C docs compile
114 $(MAKE
) -C docs
clean
117 -find package
-type l | xargs
rm -f
121 rm -rf tmp build_dir staging_dir dl .config
* feeds
123 ifeq ($(findstring v
,$(DEBUG
)),)
124 .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 prepare-tmpinfo