Module Name:    src
Committed By:   uebayasi
Date:           Mon Nov 30 09:50:59 UTC 2009

Modified Files:
        src/tools/gcc: mknative-gcc

Log Message:
Now that we know what sources are needed to build a given library, we need
the rules how to build those sources.  Generate makefiles defining ${COPTS},
${CPPFLAGS}, and ${SRCS} (== template).

Note that ${CPPFLAGS} is actually dfined as _CPPFLAGS like
        _CPPFLAGS.tmp___gcc_bcmp.c=-DL__gcc_bcmp
and used to generate wrapper files (e.g. tmp___gcc_bcmp.c).  Otherwise it's
automagically passed to ${CC} by bsd.*.mk.


To generate a diff of this commit:
cvs rdiff -u -r1.37 -r1.38 src/tools/gcc/mknative-gcc

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tools/gcc/mknative-gcc
diff -u src/tools/gcc/mknative-gcc:1.37 src/tools/gcc/mknative-gcc:1.38
--- src/tools/gcc/mknative-gcc:1.37	Mon Nov 30 09:33:36 2009
+++ src/tools/gcc/mknative-gcc	Mon Nov 30 09:50:59 2009
@@ -1,5 +1,5 @@
 #!/bin/sh
-#	$NetBSD: mknative-gcc,v 1.37 2009/11/30 09:33:36 uebayasi Exp $
+#	$NetBSD: mknative-gcc,v 1.38 2009/11/30 09:50:59 uebayasi Exp $
 #
 # Shell script for generating all the constants needed for a native
 # platform build of src/gnu/dist/gcc.
@@ -236,6 +236,40 @@
 	sed -e 's,^,	,; s,$, \\,'
 }
 
+_lookup_objs () {
+	local _obj=$1; local _key=$2
+
+	eval grep \^$_obj\\\	 \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2
+}
+
+get_libgcc_gen_srcs_tmpsrcs () {
+	cut -f1 $_TOP/${libgcc_db_objs_libs} | \
+	while read _obj; do
+		printf 'SRCS.tmp_%s=%s\n' \
+			"$( _lookup_objs $_obj srcs )" \
+			"$( _lookup_objs $_obj tmpsrcs )"
+	done | \
+	sed -e 's,\$(\(.*\)),${G_\1},'
+}
+
+get_libgcc_gen_srcs_cppflags () {
+	cut -f1 $_TOP/${libgcc_db_objs_libs} | \
+	while read _obj; do
+		printf '_CPPFLAGS.tmp_%s=%s\n' \
+			"$( _lookup_objs $_obj srcs )" \
+			"$( _lookup_objs $_obj cppflags | xargs )"
+	done
+}
+
+get_libgcc_gen_srcs_copts () {
+	cut -f1 $_TOP/${libgcc_db_objs_libs} | \
+	while read _obj; do
+		printf 'COPTS.tmp_%s=%s\n' \
+			"$( _lookup_objs $_obj srcs )" \
+			"$( _lookup_objs $_obj copts | xargs )"
+	done
+}
+
 get_libgcc_new_generate () {
 	for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
 		for _tmp in tmpsrcs tmpfpsrcs tmpasmsrcs; do
@@ -246,6 +280,11 @@
 		get_libgcc_gen_srcs $_lib | \
 		write_mk ${_machine_arch_subdir}/${_lib%.*}.srcs.mk
 	done
+
+	for _arg in tmpsrcs cppflags copts; do
+		eval get_libgcc_gen_srcs_${_arg} | \
+		eval writefile \$libgcc_srcs_mk_${_arg}
+	done
 }
 
 #####
@@ -268,7 +307,7 @@
 	get_libgcc_new_analyze
 
 	libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk
-	libgcc_srcs_mk_tmpsrc=${_machine_arch_subdir}/srcs.tmpsrc.mk
+	libgcc_srcs_mk_tmpsrcs=${_machine_arch_subdir}/srcs.tmpsrcs.mk
 	libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk
 	libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk
 

Reply via email to