3 # Copyright (C) 2007-2011 OpenWrt.org
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
9 RELEASE
:=Attitude Adjustment
10 PREP_MK
= OPENWRT_BUILD
= QUIET
=0
12 include $(TOPDIR
)/include/verbose.mk
15 include $(TOPDIR
)/include/version.mk
17 REVISION
:=$(shell $(TOPDIR
)/scripts
/getver.sh
)
20 OPENWRTVERSION
:=$(RELEASE
)$(if
$(REVISION
), ($(REVISION
)))
24 export IS_TTY
=$(shell tty
-s
&& echo
1 || echo
0)
25 export LD_LIBRARY_PATH
:=$(subst ::,:,$(if
$(LD_LIBRARY_PATH
),$(LD_LIBRARY_PATH
):)$(STAGING_DIR_HOST
)/lib
)
26 export DYLD_LIBRARY_PATH
:=$(subst ::,:,$(if
$(DYLD_LIBRARY_PATH
),$(DYLD_LIBRARY_PATH
):)$(STAGING_DIR_HOST
)/lib
)
27 export GIT_CONFIG_PARAMETERS
='core.autocrlf=false'
29 # prevent perforce from messing with the patch utility
30 unexport P4PORT P4USER P4CONFIG P4CLIENT
32 # prevent user defaults for quilt from interfering
33 unexport QUILT_PATCHES QUILT_PATCH_OPTS
35 unexport C_INCLUDE_PATH
37 # prevent distro default LPATH from interfering
40 # make sure that a predefined CFLAGS variable does not disturb packages
44 .config scripts
/config
/conf scripts
/config
/mconf
: tmp
/.prereq-build
47 SCAN_COOKIE?
=$(shell echo
$$$$)
50 SUBMAKE
:=umask
022; $(SUBMAKE
)
54 prepare-tmpinfo
: FORCE
56 $(_SINGLE
)$(NO_TRACE_MAKE
) -j1
-r
-s
-f
include/scan.mk SCAN_TARGET
="packageinfo" SCAN_DIR
="package" SCAN_NAME
="package" SCAN_DEPS
="$(TOPDIR)/include/package*.mk $(TOPDIR)/overlay/*/*.mk" SCAN_DEPTH
=5 SCAN_EXTRA
=""
57 $(_SINGLE
)$(NO_TRACE_MAKE
) -j1
-r
-s
-f
include/scan.mk SCAN_TARGET
="targetinfo" SCAN_DIR
="target/linux" SCAN_NAME
="target" SCAN_DEPS
="profiles/*.mk $(TOPDIR)/include/kernel*.mk $(TOPDIR)/include/target.mk" SCAN_DEPTH
=2 SCAN_EXTRA
="" SCAN_MAKEOPTS
="TARGET_BUILD=1"
58 for type in package target
; do \
59 f
=tmp
/.
$${type}info; t
=tmp
/.config-
$${type}.in
; \
60 [ "$$t" -nt
"$$f" ] || .
/scripts
/metadata.pl
$${type}_config
"$$f" > "$$t" ||
{ rm -f
"$$t"; echo
"Failed to build $$t"; false
; break
; }; \
62 .
/scripts
/metadata.pl package_mk tmp
/.packageinfo
> tmp
/.packagedeps ||
{ rm -f tmp
/.packagedeps
; false
; }
63 touch
$(TOPDIR
)/tmp
/.build
65 .config
: .
/scripts
/config
/conf
$(if
$(CONFIG_HAVE_DOT_CONFIG
),,prepare-tmpinfo
)
66 @
+if
[ \
! -e .config
] ||
! grep CONFIG_HAVE_DOT_CONFIG .config
>/dev
/null
; then \
67 [ -e
$(HOME
)/.openwrt
/defconfig
] && cp
$(HOME
)/.openwrt
/defconfig .config
; \
68 $(_SINGLE
)$(NO_TRACE_MAKE
) menuconfig
$(PREP_MK
); \
72 @
$(_SINGLE
)$(SUBMAKE
) -s
-C scripts
/config
all
74 $(eval
$(call rdep
,scripts
/config
,scripts
/config
/mconf
))
77 @
$(_SINGLE
)$(SUBMAKE
) -s
-C scripts
/config conf
79 config
: scripts
/config
/conf prepare-tmpinfo FORCE
83 $(_SINGLE
)$(NO_TRACE_MAKE
) -C scripts
/config
clean
85 defconfig
: scripts
/config
/conf prepare-tmpinfo FORCE
87 $< -D .config Config.in
89 oldconfig
: scripts
/config
/conf prepare-tmpinfo FORCE
90 $< -$(if
$(CONFDEFAULT
),$(CONFDEFAULT
),o
) Config.in
92 menuconfig
: scripts
/config
/mconf prepare-tmpinfo FORCE
93 if
[ \
! -e .config
-a
-e
$(HOME
)/.openwrt
/defconfig
]; then \
94 cp
$(HOME
)/.openwrt
/defconfig .config
; \
98 prepare_kernel_conf
: .config FORCE
100 ifeq ($(wildcard staging_dir
/host
/bin
/quilt
),)
102 @
+$(SUBMAKE
) -r tools
/quilt
/install
104 prepare_kernel_conf
: ;
107 kernel_oldconfig
: prepare_kernel_conf
108 $(_SINGLE
)$(NO_TRACE_MAKE
) -C target
/linux oldconfig
110 kernel_menuconfig
: prepare_kernel_conf
111 $(_SINGLE
)$(NO_TRACE_MAKE
) -C target
/linux menuconfig
113 kernel_nconfig
: prepare_kernel_conf
114 $(_SINGLE
)$(NO_TRACE_MAKE
) -C target
/linux nconfig
116 tmp
/.prereq-build
: include/prereq-build.mk
119 @
$(_SINGLE
)$(NO_TRACE_MAKE
) -j1
-r
-s
-f
$(TOPDIR
)/include/prereq-build.mk prereq
2>/dev
/null ||
{ \
120 echo
"Prerequisite check failed. Use FORCE=1 to override."; \
126 @
$(_SINGLE
)$(NO_TRACE_MAKE
) -p
$@ V
=99 DUMP_TARGET_DB
=1 2>&1
128 download
: .config FORCE
129 @
+$(SUBMAKE
) tools
/download
130 @
+$(SUBMAKE
) toolchain
/download
131 @
+$(SUBMAKE
) package
/download
132 @
+$(SUBMAKE
) target
/download
134 clean dirclean
: .config
137 prereq
:: prepare-tmpinfo .config
138 @
+$(MAKE
) -r
-s tmp
/.prereq-build
$(PREP_MK
)
139 @
+$(NO_TRACE_MAKE
) -r
-s
$@
142 @
+$(PREP_MK
) $(NO_TRACE_MAKE
) -r
-s prereq
144 cp .config tmp
/.config
; \
145 .
/scripts
/config
/conf
-D tmp
/.config
-w tmp
/.config Config.in
> /dev
/null
2>&1; \
146 if .
/scripts
/kconfig.pl
'>' .config tmp
/.config | grep
-q CONFIG
; then \
147 echo
"WARNING: your configuration is out of sync. Please run make menuconfig, oldconfig or defconfig!"; \
155 docs docs
/compile
: FORCE
156 @
$(_SINGLE
)$(SUBMAKE
) -C docs compile
159 @
$(_SINGLE
)$(SUBMAKE
) -C docs
clean
162 rm -rf tmp build_dir staging_dir dl .config
* feeds package
/feeds package
/openwrt-packages bin
163 @
$(_SINGLE
)$(SUBMAKE
) -C scripts
/config
clean
165 ifeq ($(findstring v
,$(DEBUG
)),)
166 .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