@ -389,8 +389,9 @@ HOST_LIB_PATH_[+module+] = \
[ + E N D I F l i b _ p a t h + ] [ + E N D F O R h o s t _ m o d u l e s + ]
# Flags to pass down to all sub-makes.
BASE_FLAGS_TO_PASS = [ + FOR flags_to_pass +] \
" [+flag+]= $( [ +flag+] ) " [ + ENDFOR flags_to_pass +] \
BASE_FLAGS_TO_PASS = [ + FOR flags_to_pass +] [ + IF optional +] \
" `echo '[+flag+]= $( [ +flag+] ) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " [ + ELSE optional +] \
" [+flag+]= $( [ +flag+] ) " [ + ENDIF optional+] [ + ENDFOR flags_to_pass +] \
" CONFIG_SHELL= $( SHELL) " \
" MAKEINFO= $( MAKEINFO) $( MAKEINFOFLAGS) "
@ -457,16 +458,12 @@ TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)
# The BUILD_* variables are a special case, which are used for the gcc
# cross-building scheme.
EXTRA_GCC_FLAGS = \
'BUILD_PREFIX=$(BUILD_PREFIX)' \
'BUILD_PREFIX_1=$(BUILD_PREFIX_1)' \
" GCC_FOR_TARGET= $( GCC_FOR_TARGET) " \
" `echo 'LANGUAGES= $( LANGUAGES) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'STMP_FIXPROTO= $( STMP_FIXPROTO) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'LIMITS_H_TEST= $( LIMITS_H_TEST) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'LIBGCC2_CFLAGS= $( LIBGCC2_CFLAGS) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'LIBGCC2_DEBUG_CFLAGS= $( LIBGCC2_DEBUG_CFLAGS) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'LIBGCC2_INCLUDES= $( LIBGCC2_INCLUDES) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` " \
" `echo 'BOOT_ADAFLAGS= $( BOOT_ADAFLAGS) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` "
" `echo 'LIBGCC2_INCLUDES= $( LIBGCC2_INCLUDES) ' | sed -e s'/[^=][^=]*= $$ /XFOO=/'` "
GCC_FLAGS_TO_PASS = $( BASE_FLAGS_TO_PASS) $( EXTRA_HOST_FLAGS) $( EXTRA_GCC_FLAGS)
@ -500,20 +497,20 @@ all:
fi
.PHONY : all -build
all-build : [+
FOR build_modules +] \
maybe-all-build-[ +module+] [ +
ENDFOR build_modules +]
[ + F O R b u i l d _ m o d u l e s + ]
all-build : maybe -all -build -[+module +][+ ENDFOR build_modules +]
.PHONY : all -host
all-host : [+
FOR host_modules +] \
maybe-all-[ +module+] [ +
ENDFOR host_modules +]
[ + F O R h o s t _ m o d u l e s + ] [ + I F b o o t s t r a p + ]
@ i f [ + m o d u l e + ] - n o - b o o t s t r a p [ + E N D I F b o o t s t r a p + ]
all-host : maybe -all -[+module +][+ IF bootstrap +]
@ e n d i f [ + m o d u l e + ] - n o - b o o t s t r a p [ + E N D I F b o o t s t r a p + ] [ + E N D F O R h o s t _ m o d u l e s + ]
.PHONY : all -target
all-target : [+
FOR target_modules +] \
maybe-all-target-[ +module+] [ +
ENDFOR target_modules + ]
[ + F O R t a r g e t _ m o d u l e s + ] [ + I F b o o t s t r a p + ]
@ i f [ + m o d u l e + ] - n o - b o o t s t r a p [ + E N D I F b o o t s t r a p + ]
all-target : maybe -all -target -[+module +][+ IF bootstrap +]
@ e n d i f [ + m o d u l e + ] - n o - b o o t s t r a p [ + E N D I F b o o t s t r a p + ] [ + E N D F O R t a r g e t _ m o d u l e s + ]
# Do a target for all the subdirectories. A ``make do-X'' will do a
# ``make X'' in all subdirectories (because, in general, there is a
@ -530,16 +527,12 @@ do-[+make_target+]:
.PHONY : [+make_target +]-host
[+make_target+]-host : [+
FOR host_modules +] \
maybe-[ +make_target+] -[ +module+] [ +
ENDFOR host_modules +]
[ + F O R h o s t _ m o d u l e s + ]
[+make_target+]-host : maybe -[+make_target +]-[+module +][+ ENDFOR host_modules +]
.PHONY : [+make_target +]-target
[+make_target+]-target : [+
FOR target_modules +] \
maybe-[ +make_target+] -target-[ +module+] [ +
ENDFOR target_modules +]
[ + F O R t a r g e t _ m o d u l e s + ]
[+make_target+]-target : maybe -[+make_target +]-target -[+module +][+ ENDFOR target_modules +]
[ + E N D F O R r e c u r s i v e _ t a r g e t s + ]
# Here are the targets which correspond to the do-X targets.
@ -729,13 +722,17 @@ TAGS: do-TAGS
maybe-configure-[+prefix+][+module+] :
@ i f [ + p r e f i x + ] [ + m o d u l e + ]
maybe-configure-[+prefix+][+module+] : configure -[+prefix +][+module +]
configure-[+prefix+][+module+] :
@[ + IF bootstrap +] test -f stage_last && exit 0; \
[ + ELSE bootstrap +] : $( MAKE) ; $( unstage)
@[ + ENDIF bootstrap +] [ + IF check_multilibs
+] r = ` ${ PWD_COMMAND } ` ; export r; \
configure-[+prefix+][+module+] : [+ IF bootstrap +]
@ e n d i f [ + p r e f i x + ] [ + m o d u l e + ]
@ i f [ + p r e f i x + ] [ + m o d u l e + ] - b o o t s t r a p
@if test -f stage_last; then $( unstage) ; else $( MAKE) stage1-start; fi
@ e n d i f [ + p r e f i x + ] [ + m o d u l e + ] - b o o t s t r a p
@ i f [ + p r e f i x + ] [ + m o d u l e + ] [ + E L S E b o o t s t r a p + ]
@: $( MAKE) ; $( unstage) [ + ENDIF bootstrap +]
@r= ` ${ PWD_COMMAND } ` ; export r; \
s = ` cd $( srcdir) ; ${ PWD_COMMAND } ` ; export s; \
echo "Checking multilib configuration for [+module+]..." ; \
[ + IF check_multilibs
+] echo "Checking multilib configuration for [+module+]..." ; \
$( SHELL) $( srcdir) /mkinstalldirs [ +subdir+] /[ +module+] ; \
$( CC_FOR_TARGET) --print-multi-lib > [ +subdir+] /[ +module+] /multilib.tmp 2> /dev/null ; \
if test -r [ +subdir+] /[ +module+] /multilib.out; then \
@ -747,11 +744,9 @@ configure-[+prefix+][+module+]:
fi ; \
else \
mv [ +subdir+] /[ +module+] /multilib.tmp [ +subdir+] /[ +module+] /multilib.out; \
fi
@ [ + ENDIF check_multilibs +] test ! -f [ +subdir+] /[ +module+] /Makefile || exit 0; \
fi ; \
[ + ENDIF check_multilibs +] test ! -f [ +subdir+] /[ +module+] /Makefile || exit 0; \
$( SHELL) $( srcdir) /mkinstalldirs [ +subdir+] /[ +module+] ; \
r = ` ${ PWD_COMMAND } ` ; export r; \
s = ` cd $( srcdir) ; ${ PWD_COMMAND } ` ; export s; \
[ +exports+] \
echo Configuring in [ +subdir+] /[ +module+] ; \
cd "[+subdir+]/[+module+]" || exit 1; \
@ -775,12 +770,12 @@ maybe-configure-stage[+id+]-[+prefix+][+module+]:
@ i f [ + p r e f i x + ] [ + m o d u l e + ] - b o o t s t r a p
maybe-configure-stage[+id+]-[+prefix+][+module+] : configure -stage [+id +]-[+prefix +][+module +]
configure-stage[+id+]-[+prefix+][+module+] :
@[ ` cat stage_current` = stage[ +id+] ] || $( MAKE) stage[ +id+] -start
@[ $( current_stage) = stage[ +id+] ] || $( MAKE) stage[ +id+] -start
@$( SHELL) $( srcdir) /mkinstalldirs [ +subdir+] /[ +module+]
[ + IF check_multilibs
+] @r= ` ${ PWD_COMMAND } ` ; export r; \
@r= ` ${ PWD_COMMAND } ` ; export r; \
s = ` cd $( srcdir) ; ${ PWD_COMMAND } ` ; export s; \
echo "Checking multilib configuration for [+module+]..." ; \
[ + IF check_multilibs
+] echo "Checking multilib configuration for [+module+]..." ; \
$( CC_FOR_TARGET) --print-multi-lib > [ +subdir+] /[ +module+] /multilib.tmp 2> /dev/null ; \
if test -r [ +subdir+] /[ +module+] /multilib.out; then \
if cmp -s [ +subdir+] /[ +module+] /multilib.tmp [ +subdir+] /[ +module+] /multilib.out; then \
@ -791,8 +786,8 @@ configure-stage[+id+]-[+prefix+][+module+]:
fi ; \
else \
mv [ +subdir+] /[ +module+] /multilib.tmp [ +subdir+] /[ +module+] /multilib.out; \
fi
@ [ + ENDIF check_multilibs +] test ! -f [ +subdir+] /[ +module+] /Makefile || exit 0; \
fi ; \
[ + ENDIF check_multilibs +] test ! -f [ +subdir+] /[ +module+] /Makefile || exit 0; \
[ +exports+] [ + IF prev +] \
[ +poststage1_exports+] [ + ENDIF prev +] \
echo Configuring stage [ +id+] in [ +subdir+] /[ +module+] ; \
@ -820,10 +815,14 @@ maybe-all-[+prefix+][+module+]:
T A R G E T - [ + p r e f i x + ] [ + m o d u l e + ] = [ +
IF target +] [ +target+] [ + ELSE +] all[ + ENDIF target +]
maybe-all-[+prefix+][+module+] : all -[+prefix +][+module +]
all-[+prefix+][+module+] : configure -[+prefix +][+module +]
@[ + IF bootstrap +] test -f stage_last && exit 0; \
[ + ELSE bootstrap +] : $( MAKE) ; $( unstage)
@[ + ENDIF bootstrap +] r = ` ${ PWD_COMMAND } ` ; export r; \
all-[+prefix+][+module+] : configure -[+prefix +][+module +][+ IF bootstrap +]
@ e n d i f [ + p r e f i x + ] [ + m o d u l e + ]
@ i f [ + p r e f i x + ] [ + m o d u l e + ] - b o o t s t r a p
@if test -f stage_last; then $( unstage) ; else $( MAKE) stage1-start; fi
@ e n d i f [ + p r e f i x + ] [ + m o d u l e + ] - b o o t s t r a p
@ i f [ + p r e f i x + ] [ + m o d u l e + ] [ + E L S E b o o t s t r a p + ]
@: $( MAKE) ; $( unstage) [ + ENDIF bootstrap +]
@r= ` ${ PWD_COMMAND } ` ; export r; \
s = ` cd $( srcdir) ; ${ PWD_COMMAND } ` ; export s; \
[ +exports+] \
( cd [ +subdir+] /[ +module+] && \
@ -841,7 +840,7 @@ maybe-all-stage[+id+]-[+prefix+][+module+]: all-stage[+id+]-[+prefix+][+module+]
all-stage[+id+] : all -stage [+id +]-[+prefix +][+module +]
T A R G E T - s t a g e [ + i d + ] - [ + p r e f i x + ] [ + m o d u l e + ] = $( TARGET -[+prefix +][+module +])
all-stage[+id+]-[+prefix+][+module+] : configure -stage [+id +]-[+prefix +][+module +]
@[ ` cat stage_current` = stage[ +id+] ] || $( MAKE) stage[ +id+] -start
@[ $( current_stage) = stage[ +id+] ] || $( MAKE) stage[ +id+] -start
@r= ` ${ PWD_COMMAND } ` ; export r; \
s = ` cd $( srcdir) ; ${ PWD_COMMAND } ` ; export s; \
[ +exports+] [ + IF prev +] \
@ -857,7 +856,7 @@ clean-stage[+id+]: clean-stage[+id+]-[+prefix+][+module+]
clean-stage[+id+]-[+prefix+][+module+] :
@[ -f [ +subdir+] /[ +module+] /Makefile ] || [ -f [ +subdir+] /stage[ +id+] -[ +module+] /Makefile ] \
|| exit 0 ; \
[ ` cat stage_current` = stage[ +id+] ] || $( MAKE) stage[ +id+] -start
[ $( current_stage) = stage[ +id+] ] || $( MAKE) stage[ +id+] -start; \
cd [ +subdir+] /[ +module+] && \
$( MAKE) [ +args+] [ + IF prev +] \
[ +poststage1_args+] [ + ENDIF prev +] \
@ -1210,10 +1209,12 @@ gcc-no-fixedincludes:
unstage = :
stage = :
current_stage = ""
@ i f g c c - b o o t s t r a p
unstage = [ -f stage_current ] || $( MAKE) ` cat stage_last` -start
stage = if [ -f stage_current ] ; then $( MAKE) ` cat stage_current` -end || exit 1; else :; fi
current_stage = "`cat stage_current 2> /dev/null`"
@ e n d i f g c c - b o o t s t r a p
.PHONY : unstage stage
@ -1256,6 +1257,7 @@ POSTSTAGE1_FLAGS_TO_PASS = \
CC = " $$ {CC} " CC_FOR_BUILD = " $$ {CC_FOR_BUILD} " \
STAGE_PREFIX = $$ r/prev-gcc/ \
CFLAGS = " $( BOOT_CFLAGS) " \
LIBCFLAGS = " $( BOOT_CFLAGS) " \
LDFLAGS = " $( BOOT_LDFLAGS) " \
ADAC = " \$ $( CC) "
@ -1337,6 +1339,7 @@ do-clean: clean-stage[+id+]
fi ; \
: $( MAKE) ; $( stage) ; \
rm -f .bad_compare ; \
echo Comparing stages [ +prev+] and [ +id+] ; \
cd stage[ +id+] -gcc; \
files = ` find . -name " * $( objext) " -print` ; \
cd .. ; \
@ -1357,7 +1360,7 @@ do-clean: clean-stage[+id+]
cat .bad_compare; \
exit 1; \
else \
true ; \
echo Comparison successful.; \
fi ; \
$( STAMP) [ +compare-target+] [ + IF prev +]
if $( LEAN) ; then \
@ -1420,19 +1423,39 @@ stagefeedback-start::
@ i f g c c - b o o t s t r a p
do-distclean : distclean -stage 1
# Provide a GCC build when we're building target libraries. This does
# not work as a dependency, just as the minimum necessary to avoid errors.
stage_last :
$( MAKE) $( RECURSE_FLAGS_TO_PASS) stage1-bubble
@ e n d i f g c c - b o o t s t r a p
.PHONY : restrap
restrap :
@: $( MAKE) ; $( stage)
rm -rf stage1-$( TARGET_SUBDIR) [ + FOR bootstrap-stage +] [ + IF prev
+] stage[ +id+] [ + ENDIF prev +] [ + ENDFOR bootstrap-stage +]
$( MAKE) $( RECURSE_FLAGS_TO_PASS) all
# --------------------------------------
# Dependencies between different modules
# --------------------------------------
# Generic dependencies for target modules on host stuff, especially gcc
[ + F O R t a r g e t _ m o d u l e s + ] [ + I F b o o t s t r a p + ]
@ i f g c c - b o o t s t r a p [ + F O R b o o t s t r a p _ s t a g e + ]
configure-stage[+id+]-target-[+module+] : maybe -all -stage [+id +]-gcc [+ ENDFOR +]
@ e n d i f g c c - b o o t s t r a p [ + E N D I F b o o t s t r a p + ]
configure-target-[+module+] : maybe -all -gcc
[ + E N D F O R t a r g e t _ m o d u l e s + ]
@ i f g c c - b o o t s t r a p [ + F O R t a r g e t _ m o d u l e s + ] [ + I F b o o t s t r a p
+] [ + FOR bootstrap_stage +]
configure-stage[+id+]-target-[+module+] : maybe -all -stage [+id +]-gcc [+
ENDFOR +] [ + ELSE bootstrap +]
configure-target-[+module+] : stage_last [+
ENDIF bootstrap +] [ + ENDFOR target_modules +]
@ e n d i f g c c - b o o t s t r a p
@ i f g c c - n o - b o o t s t r a p [ + F O R t a r g e t _ m o d u l e s + ] [ + I F b o o t s t r a p
+] [ + ELSE +]
configure-target-[+module+] : maybe -all -gcc [+
ENDIF bootstrap +] [ + ENDFOR target_modules +]
@ e n d i f g c c - n o - b o o t s t r a p
[ + F O R l a n g _ e n v _ d e p e n d e n c i e s + ]
configure-target-[+module+] : maybe -all -target -newlib maybe -all -target -libgloss