Nonrecursive build within gcc directory (revised)

Zack Weinberg zackw@Stanford.EDU
Fri Oct 27 14:24:00 GMT 2000


On Fri, Oct 27, 2000 at 12:14:58AM -0700, Mark Mitchell wrote:
>
> Zack --
>
>   That's a lot of gobbledygook, but it looks OK to me.

That's Make for you :)

>   You should also try a parallel build -- but that should actually
> work better since you're exposing more of the dependencies -- that's
> the whole point of the "Recursive Make Considered Harmful" paper.

I have in fact done a parallel build.  I don't have a multiprocessor,
so it probably didn't hit all the possible races, but I'm confident
HJ Lu will tell us about them.

>   Go ahead and check it in.  We'll work out the kinks over the next
> few days.

Done.  Here's the final changelog.

zw

	* configure.in: If not NO_MINUS_C_MINUS_O, substitute
	OUTPUT_OPTION with '-o $@'.  Make zlibdir, zlibinc relative to
	top level.  Kill oldstyle_subdirs.  Do not include
	$srcdir/$s/Makefile.in in all_lang_makefiles, but do include
	$outputs.  Do not run configure.lang from config.status.
	Rearrange warning-flag logic to correspond to what the
	makefile wants.  Put special vax stage1 options in
	@stage1_flags@ not @stage1_warn_cflags@.  Don't do anything
	with extra_c_objs, extra_cxx_objs, or extra_cpp_objs.
	(--enable-c-cpplib): AC_SUBST(maybe_cpplib) with "libcpp.a" if
	switch is given, nothing otherwise.
	* configure.lang: Delete.

	* Makefile.in: Expunge all traces of extra_c_objs,
	extra_cxx_objs, and extra_cpp_objs.  Set MAYBE_CPPLIB from
	@maybe_cpplib@. Add $(MAYBE_CPPLIB) to C_AND_OBJC_OBJS.  Set
	warning options via a three level scheme so that -pedantic and
	-Wtraditional are not used for non-C front ends: LOOSE_WARN,
	STRICT1_WARN, STRICT2_WARN -> $(@D)-warn, GCC_WARN_CFLAGS ->
	WARN_CFLAGS.  Distinguish STAGE1_CFLAGS from BOOT_CFLAGS.
	Add -I$(@D) and -I$(srcdir)/$(@D) to INCLUDES.
	Set OUTPUT_OPTION, ZLIB, ZLIBINC.  Do not set P,
	LANG_FLAGS_TO_PASS.  Add OUTPUT_OPTION to all object-file
	generation rules.  Wrap all rules that change the current
	directory in parentheses; pmake doesn't spawn a new shell for
	each command.  Expunge all references to $(P).  When one
	command depends on another and they're run all at once, use &&
	to separate them, not ;.  Add libgcc_s$(SHLIB_EXT) to files
	deleted on make clean.  Force OUTPUT_OPTION='-o $@' in stage2
	and beyond.

	* cp/Make-lang.in, f/Make-lang.in, java/Make-lang.in,
	objc/Make-lang.in: Wrap all rules that change the current
	directory in parentheses.  Expunge all references to $(P).
	When one command depends on another and they're run all at
	once, use && to separate them, not ;.  Add OUTPUT_OPTION to
	all object-file generation rules.  Delete obsolete variables.
	Move all build rules here from the corresponding Makefile.in and
	adapt to the new environment.

	* cp/Makefile.in, f/Makefile.in, java/Makefile.in, objc/Makefile.in:
	Delete.

	* cp/config-lang.in, f/config-lang.in, java/config-lang.in:
	Delete outputs= line.


More information about the Gcc-patches mailing list