2 # GLOBAL Makefile for the whole L4 tree
8 install-dirs = tool pkg
9 clean-dirs = tool pkg doc
10 cleanall-dirs = tool pkg doc
12 BUILD_TOOLS = gawk gcc g++ ld perl pkg-config
14 CMDS_WITHOUT_OBJDIR := checkbuild up update check_build_tools
16 # our default target is all::
23 DROPSCONF_DEFCONFIG ?= $(L4DIR)/mk/defconfig/config.x86
24 #DROPSCONF_CONFIG_IN = $(L4DIR)/mk/config.in
25 DROPSCONF_CONFIG = $(OBJ_BASE)/.kconfig.auto
26 DROPSCONF_CONFIG_H = $(OBJ_BASE)/include/l4/bid_config.h
27 DROPSCONF_CONFIG_MK = $(OBJ_BASE)/.config.all
28 DROPSCONF_DONTINC_MK = y
29 DROPSCONF_HELPFILE = $(L4DIR)/mk/config.help
31 # separation in "dependent" (ie opts the build output depends on) and
32 # "independent" (ie opts the build output does not depend on) opts
33 CONFIG_MK_INDEPOPTS = CONFIG_BID_GENERATE_MAPFILE \
34 CONFIG_DEPEND_VERBOSE \
35 CONFIG_VERBOSE_SWITCH \
36 CONFIG_BID_COLORED_PHASES CONFIG_HAVE_LDSO \
37 CONFIG_INT_CPP_NAME_SWITCH BID_LIBGENDEP_PATHS CONFIG_INT_CPP_.*_NAME \
38 CONFIG_INT_CXX_.*_NAME CONFIG_VERBOSE CONFIG_BID_STRIP_PROGS \
39 CONFIG_INT_LD_NAME_SWITCH CONFIG_INT_LD_.*_NAME
40 CONFIG_MK_REAL = $(OBJ_BASE)/.config
41 CONFIG_MK_INDEP = $(OBJ_BASE)/.config.indep
44 ifneq ($(filter $(CMDS_WITHOUT_OBJDIR),$(MAKECMDGOALS)),)
45 IGNORE_MAKECONF_INCLUDE=1
48 ifneq ($(B)$(BUILDDIR_TO_CREATE),)
49 IGNORE_MAKECONF_INCLUDE=1
52 ifeq ($(IGNORE_MAKECONF_INCLUDE),)
53 ifneq ($(filter help config oldconfig,$(MAKECMDGOALS)),)
54 # tweek $(L4DIR)/mk/Makeconf to use the intermediate file
55 export BID_IGN_ROOT_CONF=y
56 BID_ROOT_CONF=$(DROPSCONF_CONFIG_MK)
59 # $(L4DIR)/mk/Makeconf shouln't include Makeconf.local twice
60 MAKECONFLOCAL = /dev/null
61 include $(L4DIR)/mk/Makeconf
64 # after having absfilename, we can export BID_ROOT_CONF
65 ifneq ($(filter config oldconfig gconfig qconfig xconfig, $(MAKECMDGOALS)),)
66 export BID_ROOT_CONF=$(call absfilename,$(OBJ_BASE))/.config.all
73 ifneq ($(strip $(B)),)
74 BUILDDIR_TO_CREATE := $(B)
76 ifneq ($(strip $(BUILDDIR_TO_CREATE)),)
77 all:: check_build_tools
78 @echo "Creating build directory \"$(BUILDDIR_TO_CREATE)\"..."
79 @if [ -e "$(BUILDDIR_TO_CREATE)" ]; then \
80 echo "Already exists, aborting."; \
83 @mkdir -p "$(BUILDDIR_TO_CREATE)"
84 @cp $(DROPSCONF_DEFCONFIG) $(BUILDDIR_TO_CREATE)/.kconfig
85 @$(MAKE) B= BUILDDIR_TO_CREATE= O=$(BUILDDIR_TO_CREATE) oldconfig
95 # some more dependencies
96 tool: $(DROPSCONF_CONFIG_MK)
97 pkg: $(DROPSCONF_CONFIG_MK) tool
99 ifneq ($(CONFIG_BID_BUILD_DOC),)
106 $(VERBOSE)svn up mk tool/gendep tool/kconfig tool/elf-patcher doc/source conf $(wildcard tool/bin)
107 $(VERBOSE)$(MAKE) -C pkg up
109 tool ../kernel/fiasco pkg: ../dice
110 $(VERBOSE)if [ -r $@/Makefile ]; then PWD=$(PWD)/$@ $(MAKE) -C $@; fi
113 $(VERBOSE)if [ -r $@/Makefile.drops ]; then \
114 $(MAKE) -C $@ -f Makefile.drops; \
118 $(VERBOSE)for d in tool doc ; do \
119 test ! -r $$d/Makefile || PWD=$(PWD)/$$d $(MAKE) -C $$d $@ ; done
122 $(VERBOSE)test ! -r pkg/Makefile || PWD=$(PWD)/pkg $(MAKE) -C pkg doc
125 $(VERBOSE)$(MAKE) -C pkg cont
127 .PHONY: all clean cleanall install hello pkgdoc up update
128 .PHONY: $(BUILD_DIRS) doc check_build_tools cont cleanfast
133 clean cleanall install::
134 $(VERBOSE)set -e; for i in $($@-dirs) ; do \
135 if [ -r $$i/Makefile -o -r $$i/GNUmakefile ] ; then \
136 PWD=$(PWD)/$$i $(MAKE) -C $$i $@ ; fi ; done
139 $(VERBOSE)$(RM) -r $(OBJ_BASE)/{bin,include,pkg,doc,ext-pkg,pc,lib,l4defs.mk.inc,l4defs.sh.inc,images}
142 L4DEF_FILE_MK ?= $(OBJ_BASE)/l4defs.mk.inc
143 L4DEF_FILE_SH ?= $(OBJ_BASE)/l4defs.sh.inc
145 l4defs: $(L4DEF_FILE_MK) $(L4DEF_FILE_SH)
147 generate_l4defs_files = \
148 $(VERBOSE)tmpdir=$(OBJ_BASE)/l4defs.gen.dir && \
149 mkdir -p $$tmpdir && \
150 echo "L4DIR = $(L4DIR_ABS)" > $$tmpdir/Makefile && \
151 echo "OBJ_BASE = $(OBJ_BASE)" >> $$tmpdir/Makefile && \
152 echo "L4_BUILDDIR = $(OBJ_BASE)" >> $$tmpdir/Makefile && \
153 echo "SRC_DIR = $$tmpdir" >> $$tmpdir/Makefile && \
154 echo "PKGDIR_ABS = $(L4DIR_ABS)/l4defs.gen.dir" >> $$tmpdir/Makefile && \
155 cat $(L4DIR)/mk/export_defs.inc >> $$tmpdir/Makefile && \
156 PWD=$$tmpdir $(MAKE) -C $$tmpdir -f $$tmpdir/Makefile \
157 CALLED_FOR=$(1) L4DEF_FILE_MK=$(L4DEF_FILE_MK) L4DEF_FILE_SH=$(L4DEF_FILE_SH) && \
160 $(L4DEF_FILE_MK): $(BUILD_DIRS) $(DROPSCONF_CONFIG_MK) $(L4DIR)/mk/export_defs.inc
161 $(call generate_l4defs_files,prog)
162 $(call generate_l4defs_files,lib)
164 $(L4DEF_FILE_SH): $(L4DEF_FILE_MK)
167 $(call generate_l4defs_files,prog)
168 $(call generate_l4defs_files,lib)
170 .PHONY: l4defs regen_l4defs
172 #####################
173 # config-rules follow
175 HOST_SYSTEM := $(shell uname | tr 'A-Z' 'a-z')
178 # it becomes a bit confusing now: 'make config' results in a config file, which
179 # must be postprocessed. This is done in config.inc. Then,
180 # we evaluate some variables that depend on the postprocessed config file.
181 # The variables are defined in mk/Makeconf, which sources Makeconf.bid.local.
182 # Hence, we have to 1) postprocess, 2) call make again to get the variables.
183 DROPSCONF_CONFIG_MK_POST_HOOK:: check_build_tools $(OBJ_DIR)/Makefile
184 # libgendep must be done before calling make with the local helper
185 $(VERBOSE)$(MAKE) libgendep
186 $(VERBOSE)$(MAKE) Makeconf.bid.local-helper || \
187 (rm -f $(DROPSCONF_CONFIG_MK) $(CONFIG_MK_REAL) $(CONFIG_MK_INDEP); false)
188 $(VEROBSE)$(LN) -snf $(L4DIR_ABS) $(OBJ_BASE)/source
189 $(VERBOSE)$(MAKE) checkconf
192 $(VERBOSE)if [ ! -e $(GCCDIR)/include/stddef.h ]; then \
194 $(ECHO) "$(GCCDIR) seems wrong (stddef.h not found)."; \
195 $(ECHO) "Does it exist?"; \
200 # caching of some variables. Others are determined directly.
201 # The contents of the variables to cache is already defined in mk/Makeconf.
202 .PHONY: Makeconf.bid.local-helper Makeconf.bid.local-internal-names \
205 Makeconf.bid.local-helper:
206 $(VERBOSE)echo BUILD_SYSTEMS="$(strip $(ARCH)_$(CPU) \
207 $(ARCH)_$(CPU)-$(BUILD_ABI))" >> $(DROPSCONF_CONFIG_MK)
208 $(VERBOSE)$(foreach v, GCCLIBDIR GCCDIR GCCLIB GCCLIB_EH GCCVERSION \
209 GCCMAJORVERSION GCCMINORVERSION GCCSUBVERSION \
210 GCCNOSTACKPROTOPT LDVERSION GCCSYSLIBDIRS, \
211 echo $(v)=$(call $(v)_f,$(ARCH)) \
212 >>$(DROPSCONF_CONFIG_MK);)
213 $(VERBOSE)$(foreach v, LD_GENDEP_PREFIX, echo $v=$($(v)) >>$(DROPSCONF_CONFIG_MK);)
214 $(VERBOSE)echo "HOST_SYSTEM=$(HOST_SYSTEM)" >>$(DROPSCONF_CONFIG_MK)
215 $(VERBOSE)echo "COLOR_TERMINAL=$(shell if [ $$(tput colors || echo -1) = '-1' ]; then echo n; else echo y; fi)" >>$(DROPSCONF_CONFIG_MK)
216 $(VERBOSE)echo "LD_HAS_HASH_STYLE_OPTION=$(shell if $(LD) --help 2>&1 | grep -q ' --hash-style='; then echo y; else echo n; fi)" >>$(DROPSCONF_CONFIG_MK)
217 $(VERBOSE)# we need to call make again, because HOST_SYSTEM (set above) must be
218 $(VERBOSE)# evaluated for LD_PRELOAD to be set, which we need in the following
219 $(VERBOSE)$(MAKE) Makeconf.bid.local-internal-names
220 $(VERBOSE)sort <$(DROPSCONF_CONFIG_MK) >$(CONFIG_MK_REAL).tmp
221 $(VERBOSE)echo -e "# Automatically generated. Don't edit\n" >$(CONFIG_MK_INDEP)
222 $(VERBOSE)grep $(addprefix -e ^,$(CONFIG_MK_INDEPOPTS) ) \
223 <$(CONFIG_MK_REAL).tmp >>$(CONFIG_MK_INDEP)
224 $(VERBOSE)echo -e "# Automatically generated. Don't edit\n" >$(CONFIG_MK_REAL).tmp2
225 $(VERBOSE)grep -v $(addprefix -e ^,$$ # $(CONFIG_MK_INDEPOPTS) ) \
226 <$(CONFIG_MK_REAL).tmp >>$(CONFIG_MK_REAL).tmp2
227 $(VERBOSE)echo -e 'include $(call absfilename,$(CONFIG_MK_INDEP))' >>$(CONFIG_MK_REAL).tmp2
228 $(VERBOSE)if [ -e "$(CONFIG_MK_REAL)" ]; then \
229 diff --brief -I ^COLOR_TERMINAL $(CONFIG_MK_REAL) $(CONFIG_MK_REAL).tmp2 || \
230 mv $(CONFIG_MK_REAL).tmp2 $(CONFIG_MK_REAL); \
232 mv $(CONFIG_MK_REAL).tmp2 $(CONFIG_MK_REAL); \
234 $(VERBOSE)$(RM) $(CONFIG_MK_REAL).tmp $(CONFIG_MK_REAL).tmp2
236 Makeconf.bid.local-internal-names:
237 ifneq ($(CONFIG_INT_CPP_NAME_SWITCH),)
238 $(VERBOSE) set -e; X="tmp.$$$$$$RANDOM.c" ; echo 'int main(void){}'>$$X ; \
239 rm -f $$X.out ; $(LD_GENDEP_PREFIX) GENDEP_SOURCE=$$X \
240 GENDEP_OUTPUT=$$X.out $(CC) -c $$X -o $$X.o; \
241 test -e $$X.out; echo INT_CPP_NAME=`cat $$X.out` \
242 >>$(DROPSCONF_CONFIG_MK); \
243 rm -f $$X $$X.{o,out};
244 $(VERBOSE)set -e; X="tmp.$$$$$$RANDOM.cc" ; echo 'int main(void){}'>$$X; \
245 rm -f $$X.out; $(LD_GENDEP_PREFIX) GENDEP_SOURCE=$$X \
246 GENDEP_OUTPUT=$$X.out $(CXX) -c $$X -o $$X.o; \
247 test -e $$X.out; echo INT_CXX_NAME=`cat $$X.out` \
248 >>$(DROPSCONF_CONFIG_MK); \
249 rm -f $$X $$X.{o,out};
251 ifneq ($(CONFIG_INT_LD_NAME_SWITCH),)
252 $(VERBOSE) set -e; echo INT_LD_NAME=$$($(LD) 2>&1 | perl -p -e 's,^(.+/)?(.+):.+,$$2,') >> $(DROPSCONF_CONFIG_MK)
254 $(VERBOSE)emulations=$$(LANG= $(LD) --help | \
255 grep -i "supported emulations:" | \
256 sed -e 's/.*supported emulations: //') ; \
258 for e in $$emulations; do \
259 for c in $(LD_EMULATION_CHOICE_$(ARCH)); do \
260 if [ "$$e" = "$$c" ]; then \
261 echo LD_EMULATION=$$e >> $(DROPSCONF_CONFIG_MK); \
267 if [ "$$found_it" != "1" ]; then \
268 echo "No known ld emulation found"; exit 1; \
272 $(VERBOSE)if [ ! -r tool/gendep/Makefile ]; then \
273 echo "=== l4/tool/gendep missing! ==="; \
276 $(VERBOSE)PWD=$(PWD)/tool/gendep $(MAKE) -C tool/gendep
280 for i in $(BUILD_TOOLS); do \
281 if ! command -v $$i >/dev/null 2>&1; then \
282 [ -n "$$mis" ] && mis="$$mis "; \
286 if [ -n "$$mis" ]; then \
287 echo -e "\033[1;31mProgram(s) \"$$mis\" not found, please install!\033[0m"; \
290 echo "All checked ok."; \
293 define entryselection
295 ml=$(L4DIR_ABS)/conf/modules.list; \
296 [ -n "$(MODULES_LIST)" ] && ml=$(MODULES_LIST); \
297 [ -n "$(ENTRY)" ] && e="$(ENTRY)"; \
298 [ -n "$(E)" ] && e="$(E)"; \
299 if [ -z "$$e" ]; then \
300 BACKTITLE="No entry given. Use 'make $@ E=entryname' to avoid menu." \
301 L4DIR=$(L4DIR) $(L4DIR)/tool/bin/entry-selector $$ml 2> $(OBJ_BASE)/.entry-selector.tmp; \
302 if [ $$? != 0 ]; then \
303 cat $(OBJ_BASE)/.entry-selector.tmp; \
306 e=$$(cat $(OBJ_BASE)/.entry-selector.tmp); \
310 BUILDDIR_SEARCHPATH = $(OBJ_BASE)/bin/$(ARCH)_$(CPU):$(OBJ_BASE)/bin/$(ARCH)_$(CPU)/$(BUILD_ABI):$(OBJ_BASE)/lib/$(ARCH)_$(CPU):$(OBJ_BASE)/lib/$(ARCH)_$(CPU)/$(BUILD_ABI)
312 -include $(L4DIR)/conf/Makeconf.boot
313 -include $(OBJ_BASE)/conf/Makeconf.boot
316 $(VERBOSE)$(entryselection); \
317 PWD=$(PWD)/pkg/bootstrap/server/src \
318 $(MAKE) -C pkg/bootstrap/server/src ENTRY="$$e" \
319 BOOTSTRAP_MODULES_LIST=$$ml \
320 BOOTSTRAP_MODULE_PATH_BINLIB="$(BUILDDIR_SEARCHPATH)" \
321 BOOTSTRAP_SEARCH_PATH="$(MODULE_SEARCH_PATH)"
324 $(VERBOSE)if [ "$(ARCH)" != "x86" -a "$(ARCH)" != "amd64" ]; then \
325 echo "This mode can only be used with architectures x86 and amd64."; \
328 $(VERBOSE)$(entryselection); \
330 if [ -z "$$qemu" ]; then \
331 [ "$(ARCH)" = "amd64" ] && qemu=qemu-system-x86_64; \
332 [ "$(ARCH)" = "x86" ] && qemu=qemu; \
334 QEMU=$$qemu L4DIR=$(L4DIR) \
335 SEARCHPATH="$(MODULE_SEARCH_PATH):$(BUILDDIR_SEARCHPATH)" \
336 $(L4DIR)/tool/bin/qemu-x86-launch $$ml "$$e" $(QEMU_OPTIONS)
339 $(VERBOSE)$(entryselection); \
341 SEARCHPATH="$(MODULE_SEARCH_PATH):$(BUILDDIR_SEARCHPATH)" \
342 $(L4DIR)/tool/bin/kexec-launch $$ml "$$e"
345 $(VERBOSE)if [ "$(ARCH)" != "x86" ]; then \
346 echo "This mode can only be used with architecture x86."; \
349 $(VERBOSE)$(entryselection); \
351 $(if $(UX_GFX),UX_GFX=$(UX_GFX)) \
352 $(if $(UX_GFX_CMD),UX_GFX_CMD=$(UX_GFX_CMD)) \
353 $(if $(UX_NET),UX_NET=$(UX_NET)) \
354 $(if $(UX_NET_CMD),UX_NET_CMD=$(UX_NET_CMD)) \
355 SEARCHPATH="$(MODULE_SEARCH_PATH):$(BUILDDIR_SEARCHPATH)" \
356 $(L4DIR)/tool/bin/ux-launch $$ml "$$e" $(UX_OPTIONS)
359 $(VERBOSE)if [ "$(ARCH)" != "x86" -a "$(ARCH)" != "amd64" ]; then \
360 echo "This mode can only be used with architectures x86 and amd64."; \
363 $(VERBOSE)$(entryselection); \
364 $(MKDIR) $(OBJ_BASE)/images; \
366 SEARCHPATH="$(MODULE_SEARCH_PATH):$(BUILDDIR_SEARCHPATH)" \
367 $(L4DIR)/tool/bin/gengrub1iso --timeout=0 $$ml \
368 $(OBJ_BASE)/images/$$(echo $$e | tr '[ ]' '[_]').iso "$$e"
371 $(VERBOSE)if [ "$(ARCH)" != "x86" -a "$(ARCH)" != "amd64" ]; then \
372 echo "This mode can only be used with architectures x86 and amd64."; \
375 $(VERBOSE)$(entryselection); \
376 $(MKDIR) $(OBJ_BASE)/images; \
378 SEARCHPATH="$(MODULE_SEARCH_PATH):$(BUILDDIR_SEARCHPATH)" \
379 $(L4DIR)/tool/bin/gengrub2iso --timeout=0 $$ml \
380 $(OBJ_BASE)/images/$$(echo $$e | tr '[ ]' '[_]').iso "$$e"
384 @echo "Image generation targets:"
385 @echo " image - Generate images containing all modules."
386 @echo " Supported formats include ELF, uimage and raw."
387 @echo " grub1iso - Generate an ISO using GRUB1 in images/name.iso [x86, amd64]"
388 @echo " grub2iso - Generate an ISO using GRUB2 in images/name.iso [x86, amd64]"
389 @echo " qemu - Use Qemu to run 'name'. [x86, amd64]"
390 @echo " ux - Run 'name' under Fiasco/UX. [x86]"
391 @echo " kexec - Issue a kexec call to start the entry."
392 @echo " Add 'E=name' to directly select the entry without using the menu."
393 @echo " Modules are defined in conf/modules.list."
396 .PHONY: image qemu ux switch_ram_base grub1iso grub2iso
399 @echo " ... Regenerating RAM_BASE settings"
400 $(VERBOSE)echo "# File semi-automatically generated by 'make switch_ram_base'" > $(OBJ_BASE)/Makeconf.ram_base
401 $(VERBOSE)echo "RAM_BASE := $(RAM_BASE)" >> $(OBJ_BASE)/Makeconf.ram_base
402 PWD=$(PWD)/pkg/sigma0/server/src $(MAKE) -C pkg/sigma0/server/src
403 PWD=$(PWD)/pkg/moe/server/src $(MAKE) -C pkg/moe/server/src
406 @if [ -z "$(CHECK_BASE_DIR)" ]; then \
407 echo "Need to set CHECK_BASE_DIR variable"; \
410 set -e; for i in $(if $(USE_CONFIGS),$(addprefix mk/defconfig/config.,$(USE_CONFIGS)),mk/defconfig/config.*); do \
411 p=$(CHECK_BASE_DIR)/$$(basename $$i); \
414 cp $$i $$p/.kconfig; \
415 $(MAKE) O=$$p oldconfig; \
416 $(MAKE) O=$$p tool; \
417 $(MAKE) O=$$p USE_CCACHE=$(USE_CCACHE) $(CHECK_MAKE_ARGS); \
421 @echo -e $(EMPHSTART)"============================================================="$(EMPHSTOP)
422 @echo -e $(EMPHSTART)" Note, this report might disclose private information"$(EMPHSTOP)
423 @echo -e $(EMPHSTART)" Please review (and edit) before sending it to public lists"$(EMPHSTOP)
424 @echo -e $(EMPHSTART)"============================================================="$(EMPHSTOP)
429 @echo "CC: $(CC) -v:"
432 @echo "CXX: $(CXX) -v:"
435 @echo "HOST_CC: $(HOST_CC) -v:"
436 @$(HOST_CC) -v || true
438 @echo "HOST_CXX: $(HOST_CXX) -v:"
439 @$(HOST_CXX) -v || true
441 @echo -n "ld: $(LD) -v: "
447 @echo -n "python -V: "
450 @echo "svn --version: "
451 @svn --version || true
454 @ls -la /bin/sh || true
456 @echo "uname -a: "; uname -a
459 @if [ -e "/etc/debian_version" ]; then \
460 if grep -qi ubuntu /etc/issue; then \
461 echo -n "Ubuntu: "; \
464 echo -n "Debian: "; \
466 cat /etc/debian_version; \
467 elif [ -e /etc/gentoo-release ]; then \
468 echo -n "Gentoo: "; \
469 cat /etc/gentoo-release; \
470 elif [ -e /etc/SuSE-release ]; then \
472 cat /etc/SuSE-release; \
473 elif [ -e /etc/fedora-release ]; then \
474 echo -n "Fedora: "; \
475 cat /etc/fedora-release; \
476 elif [ -e /etc/redhat-release ]; then \
477 echo -n "Redhat: "; \
478 cat /etc/redhat-release; \
479 [ -e /etc/redhat_version ] \
480 && echo " Version: `cat /etc/redhat_version`"; \
481 elif [ -e /etc/slackware-release ]; then \
482 echo -n "Slackware: "; \
483 cat /etc/slackware-release; \
484 [ -e /etc/slackware-version ] \
485 && echo " Version: `cat /etc/slackware-version`"; \
486 elif [ -e /etc/mandrake-release ]; then \
487 echo -n "Mandrake: "; \
488 cat /etc/mandrake-release; \
490 echo "Unknown distribution"; \
492 @lsb_release -a || true
494 @echo "Running as PID"
497 @echo "Archive information:"
502 @echo "HOST_CC = $(HOST_CC)"
503 @echo "HOST_CXX = $(HOST_CXX)"
506 @echo "Current: $$(pwd)"
507 @echo "L4DIR: $(L4DIR)"
508 @echo "L4DIR_ABS: $(L4DIR_ABS)"
509 @echo "OBJ_BASE: $(OBJ_BASE)"
510 @echo "OBJ_DIR: $(OBJ_DIR)"
513 ../kernel/fiasco/src/kern/ia32 \
514 ../tools/preprocess/src/preprocess; do \
515 if [ -e $$i ]; then \
516 echo Path $$i found ; \
518 echo PATH $$i IS NOT AVAILABLE; \
523 @for i in $(OBJ_DIR)/.config.all $(OBJ_DIR)/.kconfig \
524 $(OBJ_DIR)/Makeconf.local \
525 $(L4DIR_ABS)/Makeconf.local \
526 $(OBJ_DIR)/conf/Makeconf.boot \
527 $(L4DIR_ABS)/conf/Makeconf.boot; do \
528 if [ -e "$$i" ]; then \
529 echo "______start_______________________________:";\
532 echo "____________________________end___________"; \
534 echo "$$i not found"; \
537 @echo -e $(EMPHSTART)"============================================================="$(EMPHSTOP)
538 @echo -e $(EMPHSTART)" Note, this report might disclose private information"$(EMPHSTOP)
539 @echo -e $(EMPHSTART)" Please review (and edit) before sending it to public lists"$(EMPHSTOP)
540 @echo -e $(EMPHSTART)"============================================================="$(EMPHSTOP)
544 @echo "Miscellaneous targets:"
545 @echo " switch_ram_base RAM_BASE=0xaddr"
546 @echo " - Switch physical RAM base of build to 'addr'."
547 @echo " update - Update working copy by using SVN."
548 @echo " cont - Continue building after fixing a build error."
549 @echo " clean - Call 'clean' target recursively."
550 @echo " cleanfast - Delete all directories created during build."
551 @echo " report - Print out host configuration information."
552 @echo " help - Print this help text."