This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Do more stuff in gcc's config.status
- From: Paolo Bonzini <bonzini at gnu dot org>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, Nathanael Nerode <neroden at gcc dot gnu dot org>
- Date: Sat, 28 Aug 2004 13:52:56 +0200
- Subject: [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