This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Do more stuff in gcc's config.status


This patch is a small modernization of gcc's configure script so that:

1) files are generated using AC_CONFIG_COMMANDS instead of doing
it in the Makefile, and

2) filenames are passed to config.status instead of using CONFIG_*
variables.

Bootstrapped/regtested i686-pc-linux-gnu, ok for mainline?

Paolo

2004-08-15  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (tm_include_list, tm_defines,
	build_xm_include_list, build_xm_defines,
	host_xm_include_list, host_xm_defines,
	xm_include_list, xm_defines, tm_p_include_list,
	language_hooks): Remove substitutions.
	(Makefile): Remove dependency on $(LANG_MAKEFRAGS), do not pass
	variables to config.status.
	(cs-config.h, cs-bconfig.h, cs-tconfig.h,
	cs-tm.h, cs-tm_p.h, cs-gthr-default.h): Invoke config.status.
	(cstamp-h, gccbug, .gdbinit, mklibgcc, mkheaders): Do not pass
	variables to config.status.
	(config.status): Do not pass LANGUAGES.
	* configure.ac (sizeof checks, bigendian checks): Use standard
	Autoconf macros.
	(.gdbinit, gthr-default.h): Create within AC_CONFIG_COMMANDS.
	(auto-host.h): Create stamp file using AC_CONFIG_HEADERS.
	(Makefile): Add language hooks using AC_CONFIG_FILES.
	(config.h, bconfig.h, tconfig.h tm.h, tm_p.h): New AC_CONFIG_COMMANDS.
	(default AC_CONFIG_COMMANDS): Do not create stamp file cstamp-h.
	(tm_include_list, tm_defines, build_xm_include_list,
	build_xm_defines, host_xm_include_list, host_xm_defines,
	xm_include_list, xm_defines, tm_p_include_list,
	language_hooks): Remove substitutions.
	* fixinc/Makefile.in (Makefile): Do not pass variables to
	config.status.
 
diff -u gcc-old/gcc/Makefile.in gcc/gcc/Makefile.in
--- gcc-old/gcc/Makefile.in	2004-08-15 14:05:09.000000000 +0200
+++ gcc/gcc/Makefile.in	2004-08-15 14:17:22.000000000 +0200
@@ -395,19 +395,10 @@
 out_object_file=@out_object_file@
 md_file=$(srcdir)/config/@md_file@
 tm_file_list=@tm_file_list@
-tm_include_list=@tm_include_list@
-tm_defines=@tm_defines@
 tm_p_file_list=@tm_p_file_list@
-tm_p_include_list=@tm_p_include_list@
 build_xm_file_list=@build_xm_file_list@
-build_xm_include_list=@build_xm_include_list@
-build_xm_defines=@build_xm_defines@
 host_xm_file_list=@host_xm_file_list@
-host_xm_include_list=@host_xm_include_list@
-host_xm_defines=@host_xm_defines@
 xm_file_list=@xm_file_list@
-xm_include_list=@xm_include_list@
-xm_defines=@xm_defines@
 lang_checks=check-gcc
 lang_opt_files=@lang_opt_files@ $(srcdir)/c.opt $(srcdir)/common.opt
 lang_specs_files=@lang_specs_files@
@@ -1000,9 +991,6 @@
 # and adds these here.  We use double-colon rules for some of the hooks;
 # double-colon rules should be preferred for any new hooks.
 
-# language hooks, generated by configure
-@language_hooks@
-
 # per-language makefile fragments
 ifneq ($(LANG_MAKEFRAGS),)
 include $(LANG_MAKEFRAGS)
@@ -1028,41 +1016,35 @@
 # -----------------------------
 
 Makefile: config.status $(srcdir)/Makefile.in $(srcdir)/version.c $(LANG_MAKEFRAGS)
-	LANGUAGES="$(CONFIG_LANGUAGES)" \
-	CONFIG_HEADERS= \
-	CONFIG_SHELL="$(SHELL)" \
-	CONFIG_FILES=$@ $(SHELL) config.status
+	$(SHELL) config.status Makefile
 
 config.h: cs-config.h ; @true
+cs-config.h: config.status mkconfig.sh
+	$(SHELL) config.status config.h
+
 bconfig.h: cs-bconfig.h ; @true
+cs-bconfig.h: config.status mkconfig.sh
+	$(SHELL) config.status bconfig.h
+
 tconfig.h: cs-tconfig.h ; @true
+cs-tconfig.h: config.status mkconfig.sh
+	$(SHELL) config.status tconfig.h
+
 tm.h: cs-tm.h ; @true
+cs-tm.h: config.status mkconfig.sh
+	$(SHELL) config.status tm.h
+
 tm_p.h: cs-tm_p.h ; @true
+cs-tm_p.h: config.status mkconfig.sh
+	$(SHELL) config.status tm_p.h
 
-cs-config.h: Makefile
-	TARGET_CPU_DEFAULT="" \
-	HEADERS="$(host_xm_include_list)" DEFINES="$(host_xm_defines)" \
-	$(SHELL) $(srcdir)/mkconfig.sh config.h
-
-cs-bconfig.h: Makefile
-	TARGET_CPU_DEFAULT="" \
-	HEADERS="$(build_xm_include_list)" DEFINES="$(build_xm_defines)" \
-	$(SHELL) $(srcdir)/mkconfig.sh bconfig.h
-
-cs-tconfig.h: Makefile
-	TARGET_CPU_DEFAULT="" \
-	HEADERS="$(xm_include_list)" DEFINES="$(xm_defines)" \
-	$(SHELL) $(srcdir)/mkconfig.sh tconfig.h
-
-cs-tm.h: Makefile
-	TARGET_CPU_DEFAULT="$(target_cpu_default)" \
-	HEADERS="$(tm_include_list)" DEFINES="$(tm_defines)" \
-	$(SHELL) $(srcdir)/mkconfig.sh tm.h
-
-cs-tm_p.h: Makefile
-	TARGET_CPU_DEFAULT="" \
-	HEADERS="$(tm_p_include_list)" DEFINES="" \
-	$(SHELL) $(srcdir)/mkconfig.sh tm_p.h
+gthr-default.h: cs-gthr-default.h ; @true
+cs-gthr-default.h: config.status
+	$(SHELL) config.status gthr-default.h
+
+auto-host.h: cstamp-h ; @true
+cstamp-h: config.in config.status
+	$(SHELL) config.status auto-host.h
 
 # Don't automatically run autoconf, since configure.ac might be accidentally
 # newer than configure.  Also, this writes into the source directory which
@@ -1072,14 +1054,17 @@
 $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac
 	(cd $(srcdir) && autoconf)
 
-gccbug:	$(srcdir)/gccbug.in
-	CONFIG_FILES=gccbug CONFIG_HEADERS= ./config.status
+.gdbinit: config.status
+	$(SHELL) config.status tm_p.h
+
+gccbug: config.status $(srcdir)/gccbug.in
+	$(SHELL) config.status gccbug
 
-mklibgcc: $(srcdir)/mklibgcc.in
-	CONFIG_FILES=mklibgcc CONFIG_HEADERS= ./config.status
+mklibgcc: config.status $(srcdir)/mklibgcc.in
+	$(SHELL) config.status mklibgcc
 
-mkheaders: $(srcdir)/mkheaders.in
-	CONFIG_FILES=mkheaders CONFIG_HEADERS= ./config.status
+mkheaders: config.status $(srcdir)/mkheaders.in
+	$(SHELL) config.status mkheaders
 
 # cstamp-h.in controls rebuilding of config.in.
 # It is named cstamp-h.in and not stamp-h.in so the mostlyclean rule doesn't
@@ -1098,11 +1083,6 @@
 @MAINT@	(cd $(srcdir) && autoheader)
 @MAINT@	@rm -f $(srcdir)/cstamp-h.in
 @MAINT@	echo timestamp > $(srcdir)/cstamp-h.in
-auto-host.h: cstamp-h ; @true
-cstamp-h: config.in config.status
-	CONFIG_HEADERS=auto-host.h:config.in \
-	CONFIG_FILES= \
-	LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status
 
 # Really, really stupid make features, such as SUN's KEEP_STATE, may force
 # a target to build even if it is up-to-date.  So we must verify that
@@ -1112,7 +1092,7 @@
 	  echo You must configure gcc.  Look at http://gcc.gnu.org/install/ for details.; \
 	  false; \
 	else \
-	  LANGUAGES="$(CONFIG_LANGUAGES)" $(SHELL) config.status --recheck; \
+	  $(SHELL) config.status --recheck; \
 	fi
 
 # --------
diff -u gcc-old/gcc/configure.ac gcc/gcc/configure.ac
--- gcc-old/gcc/configure.ac	2004-08-07 14:33:50.000000000 +0200
+++ gcc/gcc/configure.ac	2004-08-15 14:15:53.000000000 +0200
@@ -286,15 +285,15 @@
 gcc_AC_C_LONG_LONG
 
 # sizeof(char) is 1 by definition.
-AC_COMPILE_CHECK_SIZEOF(void *)
-AC_COMPILE_CHECK_SIZEOF(short)
-AC_COMPILE_CHECK_SIZEOF(int)
-AC_COMPILE_CHECK_SIZEOF(long)
+AC_CHECK_SIZEOF(void *)
+AC_CHECK_SIZEOF(short)
+AC_CHECK_SIZEOF(int)
+AC_CHECK_SIZEOF(long)
 if test $ac_cv_c_long_long = yes; then
-  AC_COMPILE_CHECK_SIZEOF(long long)
+  AC_CHECK_SIZEOF(long long)
 fi
 if test $ac_cv_c___int64 = yes; then
-  AC_COMPILE_CHECK_SIZEOF(__int64)
+  AC_CHECK_SIZEOF(__int64)
 fi
 
 # ---------------------
@@ -857,7 +856,7 @@
 
 # These tests can't be done till we know if we have limits.h.
 gcc_AC_C_CHAR_BIT
-AC_C_BIGENDIAN_CROSS
+AC_C_BIGENDIAN
 
 # --------
 # UNSORTED
@@ -1267,12 +1266,10 @@
   thread_file=${target_thread_file}
 fi
 
-# Make gthr-default.h if we have a thread file.
-gthread_flags=
 if test $thread_file != single; then
-  rm -f gthr-default.h
-  echo "#include \"gthr-${thread_file}.h\"" > gthr-default.h
   gthread_flags=-DHAVE_GTHR_DEFAULT
+else
+  gthread_flags=
 fi
 AC_SUBST(gthread_flags)
 
@@ -2961,7 +2958,6 @@
 all_boot_languages=
 all_compilers=
 all_stagestuff=
-all_outputs='Makefile fixinc/Makefile gccbug mklibgcc mkheaders libada-mk'
+all_outputs=
 # List of language makefile fragments.
 all_lang_makefrags=
 # List of language subdirectory makefiles.  Deprecated.
@@ -2979,8 +2976,6 @@
 # The other mechanism is a set of hooks for each of the main targets
 # like `clean', `install', etc.
 
-language_hooks="Make-hooks"
-
 for s in $subdirs
 do
 		language=
@@ -3032,46 +3027,10 @@
 		check_languages="$check_languages check-$language"
 done
 
-# We link each language in with a set of hooks, reached indirectly via
-# lang.${target}.
-
-rm -f Make-hooks
-touch Make-hooks
-target_list="all.build all.cross start.encap rest.encap tags \
-	install-normal install-common install-man \
-	uninstall info man srcextra srcman srcinfo \
-	mostlyclean clean distclean maintainer-clean \
-	stage1 stage2 stage3 stage4 stageprofile stagefeedback"
-for t in $target_list
-do
-	x=
-	for lang in $all_languages
-	do
-			x="$x $lang.$t"
-	done
-	echo "lang.$t: $x" >> Make-hooks
-done
-
 # --------
 # UNSORTED
 # --------
 
-# Create .gdbinit.
-
-echo "dir ." > .gdbinit
-echo "dir ${srcdir}" >> .gdbinit
-if test x$gdb_needs_out_file_path = xyes
-then
-	echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
-fi
-if test "x$subdirs" != x; then
-	for s in $subdirs
-	do
-		echo "dir ${srcdir}/$s" >> .gdbinit
-	done
-fi
-echo "source ${srcdir}/gdbinit.in" >> .gdbinit
-
 # If $(exec_prefix) exists and is not the same as $(prefix), then compute an
 # absolute path for gcc_tooldir based on inserting the number of up-directory
 # movements required to get from $(exec_prefix) to $(prefix) into the basic
@@ -3148,8 +3107,6 @@
 AC_SUBST(build_exeext)
 AC_SUBST(build_install_headers_dir)
 AC_SUBST(build_xm_file_list)
-AC_SUBST(build_xm_include_list)
-AC_SUBST(build_xm_defines)
 AC_SUBST(check_languages)
 AC_SUBST(cc_set_by_configure)
 AC_SUBST(quoted_cc_set_by_configure)
@@ -3171,8 +3128,6 @@
 AC_SUBST(gcc_version_trigger)
 AC_SUBST(host_exeext)
 AC_SUBST(host_xm_file_list)
-AC_SUBST(host_xm_include_list)
-AC_SUBST(host_xm_defines)
 AC_SUBST(out_host_hook_obj)
 AC_SUBST(install)
 AC_SUBST(lang_opt_files)
@@ -3188,20 +3143,13 @@
 AC_SUBST(symbolic_link)
 AC_SUBST(thread_file)
 AC_SUBST(tm_file_list)
-AC_SUBST(tm_include_list)
-AC_SUBST(tm_defines)
 AC_SUBST(tm_p_file_list)
-AC_SUBST(tm_p_include_list)
 AC_SUBST(xm_file_list)
-AC_SUBST(xm_include_list)
-AC_SUBST(xm_defines)
 AC_SUBST(target_noncanonical)
 AC_SUBST(c_target_objs)
 AC_SUBST(cxx_target_objs)
 AC_SUBST(target_cpu_default)
 
-AC_SUBST_FILE(language_hooks)
-
 # If it doesn't already exist, create document directory
 echo "checking for the document directory." 1>&2
 if test -d doc ; then
@@ -3231,19 +3179,94 @@
 AC_ARG_VAR(GMPLIBS,[How to link GMP])
 AC_ARG_VAR(GMPINC,[How to find GMP include files])
 
-# Configure the subdirectories
-# AC_CONFIG_SUBDIRS($subdirs)
-
 # Create the Makefile
 # and configure language subdirectories
+AC_CONFIG_FILES(Makefile, [
+	# We link each language in with a set of hooks, reached indirectly via
+	# lang.${target}.
+
+	target_list="all.build all.cross start.encap rest.encap tags \
+		install-normal install-common install-man \
+		uninstall info man srcextra srcman srcinfo \
+		mostlyclean clean distclean maintainer-clean \
+		stage1 stage2 stage3 stage4 stageprofile stagefeedback"
+	for t in $target_list
+	do
+		x=
+		for lang in $all_languages
+		do
+			x="$x $lang.$t"
+		done
+		echo "lang.$t: $x" >> Makefile
+	done])
+
+AC_CONFIG_FILES(fixinc/Makefile gccbug mklibgcc mkheaders libada-mk)
 AC_CONFIG_FILES($all_outputs)
 
+AC_CONFIG_HEADERS(auto-host.h:config.in, [
+	echo timestamp > cstamp-h])
+
+AC_CONFIG_COMMANDS([gthr-default.h], [
+	if test $thread_file != single; then
+	  rm -f gthr-default.h
+	  echo "#include \"gthr-${thread_file}.h\"" > gthr-default.hT
+	fi
+	$srcdir/../move-if-change gthr-default.hT gthr-default.h
+	echo timestamp > cs-gthr-default.h], [
+	thread_file="$thread_file"])
+
+AC_CONFIG_COMMANDS([config.h], [
+        TARGET_CPU_DEFAULT="" \
+        HEADERS="$host_xm_include_list" DEFINES="$host_xm_defines" \
+        $SHELL $srcdir/mkconfig.sh config.h], [
+	host_xm_include_list="$host_xm_include_list"
+	host_xm_defines="$host_xm_defines"])
+
+AC_CONFIG_COMMANDS([bconfig.h], [
+        TARGET_CPU_DEFAULT="" \
+        HEADERS="$build_xm_include_list" DEFINES="$build_xm_defines" \
+        $SHELL $srcdir/mkconfig.sh bconfig.h], [
+	build_xm_include_list="$build_xm_include_list"
+	build_xm_defines="$build_xm_defines"])
+
+AC_CONFIG_COMMANDS([tconfig.h], [
+        TARGET_CPU_DEFAULT="" \
+        HEADERS="$xm_include_list" DEFINES="$xm_defines" \
+        $SHELL $srcdir/mkconfig.sh tconfig.h], [
+	xm_include_list="$xm_include_list"
+	xm_defines="$xm_defines"])
+
+AC_CONFIG_COMMANDS([tm.h], [
+        TARGET_CPU_DEFAULT="$target_cpu_default" \
+        HEADERS="$tm_include_list" DEFINES="$tm_defines" \
+        $SHELL $srcdir/mkconfig.sh tm.h], [
+	tm_include_list="$tm_include_list"
+	tm_defines="$tm_defines"])
+
+AC_CONFIG_COMMANDS([tm_p.h], [
+        TARGET_CPU_DEFAULT="" \
+        HEADERS="$tm_p_include_list" DEFINES="" \
+        $SHELL $srcdir/mkconfig.sh tm_p.h], [
+	tm_p_include_list="$tm_p_include_list"])
+
+AC_CONFIG_COMMANDS([.gdbinit], [
+	echo "dir ." > .gdbinit
+	echo "dir ${srcdir}" >> .gdbinit
+	if test x$gdb_needs_out_file_path = xyes; then
+		echo "dir ${srcdir}/config/"`dirname ${out_file}` >> .gdbinit
+	fi
+	if test "x$subdirs" != x; then
+		for s in $subdirs
+		do
+			echo "dir ${srcdir}/$s" >> .gdbinit
+		done
+	fi
+	echo "source ${srcdir}/gdbinit.in" >> .gdbinit], [
+	gdb_needs_out_file_path="$gdb_needs_out_file_path"])
+
+
 AC_CONFIG_COMMANDS([default],
 [
-case ${CONFIG_HEADERS} in
-  *auto-host.h:config.in*)
-  echo > cstamp-h ;;
-esac
 # Make sure all the subdirs exist.
 for d in $subdirs
 do
diff -u gcc-old/gcc/fixinc/Makefile.in gcc/gcc/fixinc/Makefile.in
--- gcc-old/gcc/fixinc/Makefile.in	2004-08-28 09:49:17.000000000 +0200
+++ gcc/gcc/fixinc/Makefile.in	2004-08-28 10:39:23.000000000 +0200
@@ -128,9 +147,7 @@
 	chmod 755 ../fixinc.sh
 
 Makefile: Makefile.in ../config.status
-	cd .. \
-	  && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
-	  $(SHELL) ./config.status
+	cd .. && $(SHELL) ./config.status $(subdir)/$@
 
 check : $(TARGETS)
 	autogen -T $(srcdir)/check.tpl $(srcdir)/inclhack.def

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]