_top_makefile(mcf5249)
时间:2006-06-06 来源:rwen2012
1 ############################################################################
2
3 #
4 # Makefile -- Top level uClinux makefile.
5 #
6 # Copyright (c) 2001-2002, SnapGear (www.snapgear.com)
7 # Copyright (c) 2001, Lineo
8 #
9
10 VERSIONPKG = 1.3.4
11 VERSIONSTR = $(CONFIG_VENDOR)/$(CONFIG_PRODUCT) Version $(VERSIONPKG)
其中,CONFIG_VENDOR, CONFIG_PRODUCT在19行中的.config中“后定义”,注意Makefile
中可以使用这种方式。
12
13 ############################################################################
14 #
15 # Lets work out what the user wants, and if they have configured us yet
16 #
17
18 ifeq (.config,$(wildcard .config))
19 include .config
# .config内容:
# CONFIG_DEFAULTS_HHTECH_M5249=y
# CONFIG_DEFAULTS_KERNEL_2_4=y
# CONFIG_DEFAULTS_LIBC_UC_LIBC=y
# CONFIG_VENDOR=HHtech
# CONFIG_PRODUCT=M5249
# CONFIG_LINUXDIR=linux-2.4.x
# CONFIG_LIBCDIR=libc
# CONFIG_LANGUAGE=
20
21 all: subdirs romfs modules modules_install image
22 else
23 all: config_error
24 endif
25
26 ############################################################################
27 #
28 # Get the core stuff worked out
29 #
30
31 LINUXDIR = $(CONFIG_LINUXDIR) ;;linux-2.4.x
32 LIBCDIR = $(CONFIG_LIBCDIR) ;;libc
33 ROOTDIR = $(shell pwd) ;;uClinux-dist
34 PATH := $(PATH):$(ROOTDIR)/tools
35 HOSTCC = unset GCC_EXEC_PREFIX; cc
36 IMAGEDIR = $(ROOTDIR)/images
37 ROMFSDIR = $(ROOTDIR)/romfs
38 ROMFSINST= romfs-inst.sh
39 SCRIPTSDIR = $(ROOTDIR)/config/scripts
40 TFTPDIR = /tftpboot
41
;;内核的conifg文件
42 LINUX_CONFIG = $(ROOTDIR)/$(LINUXDIR)/.config
;;uClinux的config文件,用于提示编入哪些用户程序(在user目录中的程序)
43 CONFIG_CONFIG = $(ROOTDIR)/config/.config
44 MODULES_CONFIG = $(ROOTDIR)/modules/.config
45
;;测试用户shell
46 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
47 else if [ -x /bin/bash ]; then echo /bin/bash; \
48 else echo sh; fi ; fi)
49
50 ifeq (config.arch,$(wildcard config.arch))
51 include config.arch
#config.arch的内容:
# CONSOLE_BAUD_RATE = 19200
# CPUFLAGS = -m5307 -DCONFIG_COLDFIRE ;;52XX的编译参数
#
# 包含机器相关的参数
# include $(ROOTDIR)/vendors/config/m68knommu/config.arch
#
# 以下是可选的参数:
# #DISABLE_XIP = 1 # XIP works fine
# #DISABLE_MOVE_RODATA = 1 # move-rodata is fine
# #DISABLE_SHARED_LIBS = 1 # shared libs are fine
# #LOPT = -Os
# #UOPT = -Os
#
52 ARCH_CONFIG = $(ROOTDIR)/config.arch
53 export ARCH_CONFIG
54 endif
55
56 ifneq ($(SUBARCH),)
57 # Using UML, so make the kernel and non-kernel with different ARCHs
58 MAKEARCH = $(MAKE) ARCH=$(SUBARCH) CROSS_COMPILE=$(CROSS_COMPILE)
59 MAKEARCH_KERNEL = $(MAKE) ARCH=$(ARCH) SUBARCH=$(SUBARCH) CROSS_COMPILE=$(CROSS_COMPILE)
60 else
61 MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
62 MAKEARCH_KERNEL = $(MAKEARCH)
63 endif
64
65
66 DIRS = $(VENDOR_TOPDIRS) lib user
67 VENDDIR = $(ROOTDIR)/vendors/$(CONFIG_VENDOR)/$(CONFIG_PRODUCT)/.
## = uClinux-dist/vendors/HHtech/M5249
68
69 export VENDOR PRODUCT ROOTDIR LINUXDIR HOSTCC CONFIG_SHELL
70 export CONFIG_CONFIG LINUX_CONFIG ROMFSDIR SCRIPTSDIR
71 export VERSIONPKG VERSIONSTR ROMFSINST PATH IMAGEDIR TFTPDIR
72
73 ############################################################################
74
75 #
76 # Config stuff, we recall ourselves to load the new config.arch before
77 # running the kernel and other config scripts
78 #
79
80 .PHONY: config.tk config.in
81
82 config.in:
83 config/mkconfig > config.in
84
85 config.tk: config.in
86 $(MAKE) -C $(SCRIPTSDIR) tkparse
87 ARCH=dummy $(SCRIPTSDIR)/tkparse < config.in > config.tmp
88 @if [ -f /usr/local/bin/wish ]; then \
89 echo '#!'"/usr/local/bin/wish -f" > config.tk; \
90 else \
91 echo '#!'"/usr/bin/wish -f" > config.tk; \
92 fi
93 cat $(SCRIPTSDIR)/header.tk >> ./config.tk
94 cat config.tmp >> config.tk
95 rm -f config.tmp
96 echo "set defaults \"/dev/null\"" >> config.tk
97 echo "set help_file \"config/Configure.help\"" >> config.tk
98 cat $(SCRIPTSDIR)/tail.tk >> config.tk
99 chmod 755 config.tk
100
101 .PHONY: xconfig
102 xconfig: config.tk
103 @wish -f config.tk
104 @if [ ! -f .config ]; then \
105 echo; \
106 echo "You have not saved your config, please re-run make config"; \
107 echo; \
108 exit 1; \
109 fi
110 @config/setconfig defaults
111 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
112 $(MAKE) linux_xconfig; \
113 fi
114 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
115 $(MAKE) modules_xconfig; \
116 fi
117 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
118 $(MAKE) config_xconfig; \
119 fi
120 @config/setconfig final
121
122 .PHONY: config
123 config: config.in
124 @HELP_FILE=config/Configure.help \
125 $(CONFIG_SHELL) $(SCRIPTSDIR)/Configure config.in
126 @config/setconfig defaults
127 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
128 $(MAKE) linux_config; \
129 fi
130 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
131 $(MAKE) modules_config; \
132 fi
133 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
134 $(MAKE) config_config; \
135 fi
136 @config/setconfig final
137
138 .PHONY: menuconfig
139 menuconfig: config.in
140 $(MAKE) -C $(SCRIPTSDIR)/lxdialog all
141 @HELP_FILE=config/Configure.help \
142 $(CONFIG_SHELL) $(SCRIPTSDIR)/Menuconfig config.in
143 @if [ ! -f .config ]; then \
144 echo; \
145 echo "You have not saved your config, please re-run make config"; \
146 echo; \
147 exit 1; \
148 fi
149 @config/setconfig defaults
150 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
151 $(MAKE) linux_menuconfig; \
152 fi
153 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
154 $(MAKE) modules_menuconfig; \
155 fi
156 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
157 $(MAKE) config_menuconfig; \
158 fi
159 @config/setconfig final
160
161 .PHONY: oldconfig
162 oldconfig:
163 @$(MAKE) oldconfig_linux
164 @$(MAKE) oldconfig_modules
165 @$(MAKE) oldconfig_config
166 @config/setconfig final
167
168 .PHONY: modules
169 modules:
170 . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
171 [ -d $(LINUXDIR)/modules ] || mkdir $(LINUXDIR)/modules; \
172 $(MAKEARCH_KERNEL) -C $(LINUXDIR) modules; \
173 fi
174
175 .PHONY: modules_install
176 modules_install:
177 . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
178 [ -d $(ROMFSDIR)/lib/modules ] || mkdir -p $(ROMFSDIR)/lib/modules; \
179 $(MAKEARCH_KERNEL) -C $(LINUXDIR) INSTALL_MOD_PATH=$(ROMFSDIR) DEPMOD=true modules_install; \
180 rm -f $(ROMFSDIR)/lib/modules/*/build; \
181 find $(ROMFSDIR)/lib/modules -type f | xargs -r $(STRIP) -g; \
182 fi
183
184 linux_xconfig:
185 $(MAKEARCH_KERNEL) -C $(LINUXDIR) xconfig
186 linux_menuconfig:
187 $(MAKEARCH_KERNEL) -C $(LINUXDIR) menuconfig
188 linux_config:
189 $(MAKEARCH_KERNEL) -C $(LINUXDIR) config
190 modules_xconfig:
191 [ ! -d modules ] || $(MAKEARCH) -C modules xconfig
192 modules_menuconfig:
193 [ ! -d modules ] || $(MAKEARCH) -C modules menuconfig
194 modules_config:
195 [ ! -d modules ] || $(MAKEARCH) -C modules config
196 modules_clean:
197 -[ ! -d modules ] || $(MAKEARCH) -C modules clean
198 config_xconfig:
199 $(MAKEARCH) -C config xconfig
200 config_menuconfig:
201 $(MAKEARCH) -C config menuconfig
202 config_config:
203 $(MAKEARCH) -C config config
204 oldconfig_config:
205 $(MAKEARCH) -C config oldconfig
206 oldconfig_modules:
207 [ ! -d modules ] || $(MAKEARCH) -C modules oldconfig
208 oldconfig_linux:
209 $(MAKEARCH_KERNEL) -C $(LINUXDIR) oldconfig
210
211 ############################################################################
212 #
213 # normal make targets
214 #
215
216 .PHONY: romfs
217 romfs:
218 for dir in $(DIRS) ; do $(MAKEARCH) -C $$dir romfs || exit 1 ; done
219 -find $(ROMFSDIR)/. -name CVS | xargs -r rm -rf
220
221 .PHONY: image
222 image:
223 [ -d $(IMAGEDIR) ] || mkdir $(IMAGEDIR)
224 $(MAKEARCH) -C $(VENDDIR) image
225
226 #
227 # fancy target that allows a vendor to have other top level
228 # make targets, for example "make vendor_flash" will run the
229 # vendor_flash target in the vendors directory
230 #
231
232 vendor_%:
233 $(MAKEARCH) -C $(VENDDIR) $@
234
235 .PHONY: linux
236 linux linux%_only:
237 # cp dm9000x.o linux-2.4.x/drivers/net
238 @if [ $(LINUXDIR) != linux-2.5.x -a ! -f $(LINUXDIR)/.depend ] ; then \
239 echo "ERROR: you need to do a 'make dep' first" ; \
240 exit 1 ; \
241 fi
242 $(MAKEARCH_KERNEL) -C $(LINUXDIR) $(LINUXTARGET) || exit 1
243 if [ -f $(LINUXDIR)/vmlinux ]; then \
244 ln -f $(LINUXDIR)/vmlinux $(LINUXDIR)/linux ; \
245 fi
246
247 .PHONY: subdirs
248 subdirs: linux
249 for dir in $(DIRS) ; do $(MAKEARCH_KERNEL) -C $$dir || exit 1 ; done
250
251 dep:
252 @if [ ! -f $(LINUXDIR)/.config ] ; then \
253 echo "ERROR: you need to do a 'make config' first" ; \
254 exit 1 ; \
255 fi
256 $(MAKEARCH_KERNEL) -C $(LINUXDIR) dep
257
258 # This one removes all executables from the tree and forces their relinking
259 .PHONY: relink
260 relink:
261 find user -name '*.gdb' | sed 's/^\(.*\)\.gdb/\1 \1.gdb/' | xargs rm -f
262 find $(VENDDIR) -name '*.gdb' | sed 's/^\(.*\)\.gdb/\1 \1.gdb/' | xargs rm -f
263
264 clean: modules_clean
265 for dir in $(LINUXDIR) $(DIRS); do $(MAKEARCH) -C $$dir clean ; done
266 rm -rf $(ROMFSDIR)/bin/*
267 rm -f $(IMAGEDIR)/*
268 rm -f config.tk
269 rm -f $(LINUXDIR)/linux
270 rm -rf $(LINUXDIR)/net/ipsec/alg/libaes $(LINUXDIR)/net/ipsec/alg/perlasm
271
272 real_clean mrproper: clean
273 -$(MAKEARCH_KERNEL) -C $(LINUXDIR) mrproper
274 -$(MAKEARCH) -C config clean
275 rm -rf config.in config.arch config.tk images
276 rm -f modules/config.tk
277 rm -rf .config .config.old .oldconfig autoconf.h
278
279 distclean: mrproper
280 -$(MAKEARCH_KERNEL) -C $(LINUXDIR) distclean
281
282 %_only:
283 [ ! -d "$(@:_only=)" ] || $(MAKEARCH) -C $(@:_only=)
284
285 %_clean:
286 [ ! -d "$(@:_clean=)" ] || $(MAKEARCH) -C $(@:_clean=) clean
287
288 config_error:
289 @echo "*************************************************"
290 @echo "You have not run make config."
291 @echo "The build sequence for this source tree is:"
292 @echo "1. 'make config' or 'make xconfig'"
293 @echo "2. 'make dep'"
294 @echo "3. 'make'"
295 @echo "*************************************************"
296 @exit 1
297
298 prune:
299 $(MAKE) -C user prune
300
301 dist-prep:
302 -find $(ROOTDIR) -name 'Makefile*.bin' | while read t; do \
303 $(MAKEARCH) -C `dirname $$t` -f `basename $$t` $@; \
304 done
305
306 ############################################################################
2
3 #
4 # Makefile -- Top level uClinux makefile.
5 #
6 # Copyright (c) 2001-2002, SnapGear (www.snapgear.com)
7 # Copyright (c) 2001, Lineo
8 #
9
10 VERSIONPKG = 1.3.4
11 VERSIONSTR = $(CONFIG_VENDOR)/$(CONFIG_PRODUCT) Version $(VERSIONPKG)
其中,CONFIG_VENDOR, CONFIG_PRODUCT在19行中的.config中“后定义”,注意Makefile
中可以使用这种方式。
12
13 ############################################################################
14 #
15 # Lets work out what the user wants, and if they have configured us yet
16 #
17
18 ifeq (.config,$(wildcard .config))
19 include .config
# .config内容:
# CONFIG_DEFAULTS_HHTECH_M5249=y
# CONFIG_DEFAULTS_KERNEL_2_4=y
# CONFIG_DEFAULTS_LIBC_UC_LIBC=y
# CONFIG_VENDOR=HHtech
# CONFIG_PRODUCT=M5249
# CONFIG_LINUXDIR=linux-2.4.x
# CONFIG_LIBCDIR=libc
# CONFIG_LANGUAGE=
20
21 all: subdirs romfs modules modules_install image
22 else
23 all: config_error
24 endif
25
26 ############################################################################
27 #
28 # Get the core stuff worked out
29 #
30
31 LINUXDIR = $(CONFIG_LINUXDIR) ;;linux-2.4.x
32 LIBCDIR = $(CONFIG_LIBCDIR) ;;libc
33 ROOTDIR = $(shell pwd) ;;uClinux-dist
34 PATH := $(PATH):$(ROOTDIR)/tools
35 HOSTCC = unset GCC_EXEC_PREFIX; cc
36 IMAGEDIR = $(ROOTDIR)/images
37 ROMFSDIR = $(ROOTDIR)/romfs
38 ROMFSINST= romfs-inst.sh
39 SCRIPTSDIR = $(ROOTDIR)/config/scripts
40 TFTPDIR = /tftpboot
41
;;内核的conifg文件
42 LINUX_CONFIG = $(ROOTDIR)/$(LINUXDIR)/.config
;;uClinux的config文件,用于提示编入哪些用户程序(在user目录中的程序)
43 CONFIG_CONFIG = $(ROOTDIR)/config/.config
44 MODULES_CONFIG = $(ROOTDIR)/modules/.config
45
;;测试用户shell
46 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
47 else if [ -x /bin/bash ]; then echo /bin/bash; \
48 else echo sh; fi ; fi)
49
50 ifeq (config.arch,$(wildcard config.arch))
51 include config.arch
#config.arch的内容:
# CONSOLE_BAUD_RATE = 19200
# CPUFLAGS = -m5307 -DCONFIG_COLDFIRE ;;52XX的编译参数
#
# 包含机器相关的参数
# include $(ROOTDIR)/vendors/config/m68knommu/config.arch
#
# 以下是可选的参数:
# #DISABLE_XIP = 1 # XIP works fine
# #DISABLE_MOVE_RODATA = 1 # move-rodata is fine
# #DISABLE_SHARED_LIBS = 1 # shared libs are fine
# #LOPT = -Os
# #UOPT = -Os
#
52 ARCH_CONFIG = $(ROOTDIR)/config.arch
53 export ARCH_CONFIG
54 endif
55
56 ifneq ($(SUBARCH),)
57 # Using UML, so make the kernel and non-kernel with different ARCHs
58 MAKEARCH = $(MAKE) ARCH=$(SUBARCH) CROSS_COMPILE=$(CROSS_COMPILE)
59 MAKEARCH_KERNEL = $(MAKE) ARCH=$(ARCH) SUBARCH=$(SUBARCH) CROSS_COMPILE=$(CROSS_COMPILE)
60 else
61 MAKEARCH = $(MAKE) ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE)
62 MAKEARCH_KERNEL = $(MAKEARCH)
63 endif
64
65
66 DIRS = $(VENDOR_TOPDIRS) lib user
67 VENDDIR = $(ROOTDIR)/vendors/$(CONFIG_VENDOR)/$(CONFIG_PRODUCT)/.
## = uClinux-dist/vendors/HHtech/M5249
68
69 export VENDOR PRODUCT ROOTDIR LINUXDIR HOSTCC CONFIG_SHELL
70 export CONFIG_CONFIG LINUX_CONFIG ROMFSDIR SCRIPTSDIR
71 export VERSIONPKG VERSIONSTR ROMFSINST PATH IMAGEDIR TFTPDIR
72
73 ############################################################################
74
75 #
76 # Config stuff, we recall ourselves to load the new config.arch before
77 # running the kernel and other config scripts
78 #
79
80 .PHONY: config.tk config.in
81
82 config.in:
83 config/mkconfig > config.in
84
85 config.tk: config.in
86 $(MAKE) -C $(SCRIPTSDIR) tkparse
87 ARCH=dummy $(SCRIPTSDIR)/tkparse < config.in > config.tmp
88 @if [ -f /usr/local/bin/wish ]; then \
89 echo '#!'"/usr/local/bin/wish -f" > config.tk; \
90 else \
91 echo '#!'"/usr/bin/wish -f" > config.tk; \
92 fi
93 cat $(SCRIPTSDIR)/header.tk >> ./config.tk
94 cat config.tmp >> config.tk
95 rm -f config.tmp
96 echo "set defaults \"/dev/null\"" >> config.tk
97 echo "set help_file \"config/Configure.help\"" >> config.tk
98 cat $(SCRIPTSDIR)/tail.tk >> config.tk
99 chmod 755 config.tk
100
101 .PHONY: xconfig
102 xconfig: config.tk
103 @wish -f config.tk
104 @if [ ! -f .config ]; then \
105 echo; \
106 echo "You have not saved your config, please re-run make config"; \
107 echo; \
108 exit 1; \
109 fi
110 @config/setconfig defaults
111 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
112 $(MAKE) linux_xconfig; \
113 fi
114 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
115 $(MAKE) modules_xconfig; \
116 fi
117 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
118 $(MAKE) config_xconfig; \
119 fi
120 @config/setconfig final
121
122 .PHONY: config
123 config: config.in
124 @HELP_FILE=config/Configure.help \
125 $(CONFIG_SHELL) $(SCRIPTSDIR)/Configure config.in
126 @config/setconfig defaults
127 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
128 $(MAKE) linux_config; \
129 fi
130 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
131 $(MAKE) modules_config; \
132 fi
133 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
134 $(MAKE) config_config; \
135 fi
136 @config/setconfig final
137
138 .PHONY: menuconfig
139 menuconfig: config.in
140 $(MAKE) -C $(SCRIPTSDIR)/lxdialog all
141 @HELP_FILE=config/Configure.help \
142 $(CONFIG_SHELL) $(SCRIPTSDIR)/Menuconfig config.in
143 @if [ ! -f .config ]; then \
144 echo; \
145 echo "You have not saved your config, please re-run make config"; \
146 echo; \
147 exit 1; \
148 fi
149 @config/setconfig defaults
150 @if egrep "^CONFIG_DEFAULTS_KERNEL=y" .config > /dev/null; then \
151 $(MAKE) linux_menuconfig; \
152 fi
153 @if egrep "^CONFIG_DEFAULTS_MODULES=y" .config > /dev/null; then \
154 $(MAKE) modules_menuconfig; \
155 fi
156 @if egrep "^CONFIG_DEFAULTS_VENDOR=y" .config > /dev/null; then \
157 $(MAKE) config_menuconfig; \
158 fi
159 @config/setconfig final
160
161 .PHONY: oldconfig
162 oldconfig:
163 @$(MAKE) oldconfig_linux
164 @$(MAKE) oldconfig_modules
165 @$(MAKE) oldconfig_config
166 @config/setconfig final
167
168 .PHONY: modules
169 modules:
170 . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
171 [ -d $(LINUXDIR)/modules ] || mkdir $(LINUXDIR)/modules; \
172 $(MAKEARCH_KERNEL) -C $(LINUXDIR) modules; \
173 fi
174
175 .PHONY: modules_install
176 modules_install:
177 . $(LINUXDIR)/.config; if [ "$$CONFIG_MODULES" = "y" ]; then \
178 [ -d $(ROMFSDIR)/lib/modules ] || mkdir -p $(ROMFSDIR)/lib/modules; \
179 $(MAKEARCH_KERNEL) -C $(LINUXDIR) INSTALL_MOD_PATH=$(ROMFSDIR) DEPMOD=true modules_install; \
180 rm -f $(ROMFSDIR)/lib/modules/*/build; \
181 find $(ROMFSDIR)/lib/modules -type f | xargs -r $(STRIP) -g; \
182 fi
183
184 linux_xconfig:
185 $(MAKEARCH_KERNEL) -C $(LINUXDIR) xconfig
186 linux_menuconfig:
187 $(MAKEARCH_KERNEL) -C $(LINUXDIR) menuconfig
188 linux_config:
189 $(MAKEARCH_KERNEL) -C $(LINUXDIR) config
190 modules_xconfig:
191 [ ! -d modules ] || $(MAKEARCH) -C modules xconfig
192 modules_menuconfig:
193 [ ! -d modules ] || $(MAKEARCH) -C modules menuconfig
194 modules_config:
195 [ ! -d modules ] || $(MAKEARCH) -C modules config
196 modules_clean:
197 -[ ! -d modules ] || $(MAKEARCH) -C modules clean
198 config_xconfig:
199 $(MAKEARCH) -C config xconfig
200 config_menuconfig:
201 $(MAKEARCH) -C config menuconfig
202 config_config:
203 $(MAKEARCH) -C config config
204 oldconfig_config:
205 $(MAKEARCH) -C config oldconfig
206 oldconfig_modules:
207 [ ! -d modules ] || $(MAKEARCH) -C modules oldconfig
208 oldconfig_linux:
209 $(MAKEARCH_KERNEL) -C $(LINUXDIR) oldconfig
210
211 ############################################################################
212 #
213 # normal make targets
214 #
215
216 .PHONY: romfs
217 romfs:
218 for dir in $(DIRS) ; do $(MAKEARCH) -C $$dir romfs || exit 1 ; done
219 -find $(ROMFSDIR)/. -name CVS | xargs -r rm -rf
220
221 .PHONY: image
222 image:
223 [ -d $(IMAGEDIR) ] || mkdir $(IMAGEDIR)
224 $(MAKEARCH) -C $(VENDDIR) image
225
226 #
227 # fancy target that allows a vendor to have other top level
228 # make targets, for example "make vendor_flash" will run the
229 # vendor_flash target in the vendors directory
230 #
231
232 vendor_%:
233 $(MAKEARCH) -C $(VENDDIR) $@
234
235 .PHONY: linux
236 linux linux%_only:
237 # cp dm9000x.o linux-2.4.x/drivers/net
238 @if [ $(LINUXDIR) != linux-2.5.x -a ! -f $(LINUXDIR)/.depend ] ; then \
239 echo "ERROR: you need to do a 'make dep' first" ; \
240 exit 1 ; \
241 fi
242 $(MAKEARCH_KERNEL) -C $(LINUXDIR) $(LINUXTARGET) || exit 1
243 if [ -f $(LINUXDIR)/vmlinux ]; then \
244 ln -f $(LINUXDIR)/vmlinux $(LINUXDIR)/linux ; \
245 fi
246
247 .PHONY: subdirs
248 subdirs: linux
249 for dir in $(DIRS) ; do $(MAKEARCH_KERNEL) -C $$dir || exit 1 ; done
250
251 dep:
252 @if [ ! -f $(LINUXDIR)/.config ] ; then \
253 echo "ERROR: you need to do a 'make config' first" ; \
254 exit 1 ; \
255 fi
256 $(MAKEARCH_KERNEL) -C $(LINUXDIR) dep
257
258 # This one removes all executables from the tree and forces their relinking
259 .PHONY: relink
260 relink:
261 find user -name '*.gdb' | sed 's/^\(.*\)\.gdb/\1 \1.gdb/' | xargs rm -f
262 find $(VENDDIR) -name '*.gdb' | sed 's/^\(.*\)\.gdb/\1 \1.gdb/' | xargs rm -f
263
264 clean: modules_clean
265 for dir in $(LINUXDIR) $(DIRS); do $(MAKEARCH) -C $$dir clean ; done
266 rm -rf $(ROMFSDIR)/bin/*
267 rm -f $(IMAGEDIR)/*
268 rm -f config.tk
269 rm -f $(LINUXDIR)/linux
270 rm -rf $(LINUXDIR)/net/ipsec/alg/libaes $(LINUXDIR)/net/ipsec/alg/perlasm
271
272 real_clean mrproper: clean
273 -$(MAKEARCH_KERNEL) -C $(LINUXDIR) mrproper
274 -$(MAKEARCH) -C config clean
275 rm -rf config.in config.arch config.tk images
276 rm -f modules/config.tk
277 rm -rf .config .config.old .oldconfig autoconf.h
278
279 distclean: mrproper
280 -$(MAKEARCH_KERNEL) -C $(LINUXDIR) distclean
281
282 %_only:
283 [ ! -d "$(@:_only=)" ] || $(MAKEARCH) -C $(@:_only=)
284
285 %_clean:
286 [ ! -d "$(@:_clean=)" ] || $(MAKEARCH) -C $(@:_clean=) clean
287
288 config_error:
289 @echo "*************************************************"
290 @echo "You have not run make config."
291 @echo "The build sequence for this source tree is:"
292 @echo "1. 'make config' or 'make xconfig'"
293 @echo "2. 'make dep'"
294 @echo "3. 'make'"
295 @echo "*************************************************"
296 @exit 1
297
298 prune:
299 $(MAKE) -C user prune
300
301 dist-prep:
302 -find $(ROOTDIR) -name 'Makefile*.bin' | while read t; do \
303 $(MAKEARCH) -C `dirname $$t` -f `basename $$t` $@; \
304 done
305
306 ############################################################################
相关阅读 更多 +