3 # Copyright (C) 2007-2010 OpenWrt.org
5 # This is free software, licensed under the GNU General Public License v2.
6 # See /LICENSE for more information.
12 export TOPDIR LC_ALL LANG
13 export KBUILD_VERBOSE
=99
16 include $(TOPDIR
)/include/host.mk
18 ifneq ($(OPENWRT_BUILD
),1)
19 override OPENWRT_BUILD
=1
24 include $(INCLUDE_DIR
)/debug.mk
25 include $(INCLUDE_DIR
)/depends.mk
27 include $(INCLUDE_DIR
)/version.mk
33 info: Show a list of available target profiles
34 clean: Remove images and temporary build files
35 image
: Build an image
(see below for more information
).
38 By default
'make image' will create an image with the default
39 target profile and package set. You can use the following parameters
42 make image PROFILE
="<profilename>" # override the default target profile
43 make image PACKAGES
="<pkg1> [<pkg2> [<pkg3> ...]]" # include extra packages
44 make image FILES
="<path>" # include extra files from <path>
47 $(eval
$(call shexport
,Helptext
))
50 echo
"$$$(call shvar,Helptext)"
53 # override variables from rules.mk
54 PACKAGE_DIR
:=$(TOPDIR
)/packages
56 IPKG_TMP
="$(TOPDIR)/tmp/ipkgtmp" \
57 IPKG_INSTROOT
="$(TARGET_DIR)" \
58 IPKG_CONF_DIR
="$(TOPDIR)/tmp" \
59 IPKG_OFFLINE_ROOT
="$(TARGET_DIR)" \
60 $(STAGING_DIR_HOST
)/bin
/opkg \
61 -f
$(TOPDIR
)/tmp
/opkg.conf \
66 $(eval
$(call Profile
/Default
))
67 $(eval
$(call Profile
/$(1)))
68 ifeq ($(USER_PROFILE
),)
72 $(1)_PACKAGES
:=$(PACKAGES
)
74 echo
'$(1):'; [ -z
'$(NAME)' ] || echo
' $(NAME)'; echo
' Packages: $(PACKAGES)';
77 include $(INCLUDE_DIR
)/target.mk
80 echo
'Current Target: "$(BOARD)$(if $(SUBTARGET), ($(BOARDNAME)))"'
81 echo
'Default Packages: $(DEFAULT_PACKAGES)'
82 echo
'Available Profiles:'
85 $(TOPDIR
)/tmp
/opkg.conf
: FORCE
86 @mkdir
-p
$(TOPDIR
)/tmp
87 @mkdir
-p
$(TARGET_DIR
)/tmp
88 @echo
'dest root /' > $@
89 @echo
'src packages file:$(PACKAGE_DIR)' >> $@
90 @echo
'arch all 100' >> $@
91 ifneq ($(CONFIG_TARGET_adm5120
),y
)
92 @echo
'arch $(BOARD) 200' >> $@
94 @echo
'arch $(BOARD)_$(ARCH) 200' >> $@
96 @echo
'option offline_root $(TARGET_DIR)' >> $@
98 BUILD_PACKAGES
:=$(sort $(DEFAULT_PACKAGES
) $(USER_PACKAGES
) $($(USER_PROFILE
)_PACKAGES
) kernel
)
99 # "-pkgname" in the package list means remove "pkgname" from the package list
100 BUILD_PACKAGES
:=$(filter-out $(filter -%,$(BUILD_PACKAGES
)) $(patsubst -%,%,$(filter -%,$(BUILD_PACKAGES
))),$(BUILD_PACKAGES
))
103 echo
'Building images for $(BOARD)$(if $($(USER_PROFILE)_NAME), - $($(USER_PROFILE)_NAME))'
104 echo
'Packages: $(BUILD_PACKAGES)'
107 mkdir
-p
$(TARGET_DIR
) $(BIN_DIR
) $(TMP_DIR
)
108 $(MAKE
) package_index
109 $(MAKE
) package_install
110 ifneq ($(USER_FILES
),)
113 $(MAKE
) package_postinst
116 package_index
: $(TOPDIR
)/tmp
/opkg.conf FORCE
118 @echo Building package index...
119 (cd
$(PACKAGE_DIR
); $(SCRIPT_DIR
)/ipkg-make-index.sh .
> Packages
&& \
120 gzip
-9c Packages
> Packages.gz \
121 ) >/dev
/null
2>/dev
/null
124 package_install
: FORCE
126 @echo Installing packages...
127 $(OPKG
) install $(BUILD_PACKAGES
)
131 @echo Copying extra files
132 $(CP
) $(USER_FILES
)/* $(TARGET_DIR
)/
134 package_postinst
: FORCE
137 @
rm -f
$(TARGET_DIR
)/tmp
/opkg.lock
139 @echo Activating init scripts
142 for script in .
/etc
/init.d
/*; do \
143 grep
'#!/bin/sh /etc/rc.common' $$script >/dev
/null || continue
; \
144 IPKG_INSTROOT
=$(TARGET_DIR
) $(which bash
) .
/etc
/rc.common
$$script enable
; \
150 @echo Building images...
151 $(NO_TRACE_MAKE
) -C target
/linux
/$(BOARD
)/image
install TARGET_BUILD
=1 IB
=1
154 rm -rf tmp
$(TARGET_DIR
) $(BIN_DIR
)
158 (unset PROFILE FILES PACKAGES MAKEFLAGS
; $(MAKE
) -s _call_info
)
161 (unset PROFILE FILES PACKAGES MAKEFLAGS
; \
162 $(MAKE
) _call_image \
163 $(if
$(PROFILE
),USER_PROFILE
="$(PROFILE)") \
164 $(if
$(FILES
),USER_FILES
="$(FILES)") \
165 $(if
$(PACKAGES
),USER_PACKAGES
="$(PACKAGES)"))
167 .SILENT
: help
info image