Mon Nov 30 09:50:59 2009 UTC ()
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.


(uebayasi)
diff -r1.37 -r1.38 src/tools/gcc/mknative-gcc

cvs diff -r1.37 -r1.38 src/tools/gcc/mknative-gcc (expand / switch to unified diff)

--- src/tools/gcc/mknative-gcc 2009/11/30 09:33:36 1.37
+++ src/tools/gcc/mknative-gcc 2009/11/30 09:50:59 1.38
@@ -1,15 +1,15 @@ @@ -1,15 +1,15 @@
1#!/bin/sh 1#!/bin/sh
2# $NetBSD: mknative-gcc,v 1.37 2009/11/30 09:33:36 uebayasi Exp $ 2# $NetBSD: mknative-gcc,v 1.38 2009/11/30 09:50:59 uebayasi Exp $
3# 3#
4# Shell script for generating all the constants needed for a native 4# Shell script for generating all the constants needed for a native
5# platform build of src/gnu/dist/gcc. 5# platform build of src/gnu/dist/gcc.
6# 6#
7 7
8# initialise 8# initialise
9 9
10_TMPDIR=$2 10_TMPDIR=$2
11_TOP=$3 11_TOP=$3
12_PLATFORM=$4 12_PLATFORM=$4
13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` 13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'`
14_GNU_DIST=`cd ${_VPATH}; pwd` 14_GNU_DIST=`cd ${_VPATH}; pwd`
15 15
@@ -226,59 +226,98 @@ get_libgcc_gen_srcs () { @@ -226,59 +226,98 @@ get_libgcc_gen_srcs () {
226 local _lib=$1 226 local _lib=$1
227 227
228 printf '\n' 228 printf '\n'
229 printf 'SRCS.%s = \\\n' $_lib 229 printf 'SRCS.%s = \\\n' $_lib
230 { 230 {
231 comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 231 comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
232 sed -e 's,$,.c,; s,^,tmp_,' 232 sed -e 's,$,.c,; s,^,tmp_,'
233 comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 233 comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
234 sed -e 's,$,.S,; s,^,tmp_,' 234 sed -e 's,$,.S,; s,^,tmp_,'
235 } | sort | \ 235 } | sort | \
236 sed -e 's,^, ,; s,$, \\,' 236 sed -e 's,^, ,; s,$, \\,'
237} 237}
238 238
 239_lookup_objs () {
 240 local _obj=$1; local _key=$2
 241
 242 eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2
 243}
 244
 245get_libgcc_gen_srcs_tmpsrcs () {
 246 cut -f1 $_TOP/${libgcc_db_objs_libs} | \
 247 while read _obj; do
 248 printf 'SRCS.tmp_%s=%s\n' \
 249 "$( _lookup_objs $_obj srcs )" \
 250 "$( _lookup_objs $_obj tmpsrcs )"
 251 done | \
 252 sed -e 's,\$(\(.*\)),${G_\1},'
 253}
 254
 255get_libgcc_gen_srcs_cppflags () {
 256 cut -f1 $_TOP/${libgcc_db_objs_libs} | \
 257 while read _obj; do
 258 printf '_CPPFLAGS.tmp_%s=%s\n' \
 259 "$( _lookup_objs $_obj srcs )" \
 260 "$( _lookup_objs $_obj cppflags | xargs )"
 261 done
 262}
 263
 264get_libgcc_gen_srcs_copts () {
 265 cut -f1 $_TOP/${libgcc_db_objs_libs} | \
 266 while read _obj; do
 267 printf 'COPTS.tmp_%s=%s\n' \
 268 "$( _lookup_objs $_obj srcs )" \
 269 "$( _lookup_objs $_obj copts | xargs )"
 270 done
 271}
 272
239get_libgcc_new_generate () { 273get_libgcc_new_generate () {
240 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 274 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
241 for _tmp in tmpsrcs tmpfpsrcs tmpasmsrcs; do 275 for _tmp in tmpsrcs tmpfpsrcs tmpasmsrcs; do
242 eval get_libgcc_gen_tmpsrcs_${_tmp} $_lib | \ 276 eval get_libgcc_gen_tmpsrcs_${_tmp} $_lib | \
243 write_mk ${_machine_arch_subdir}/${_lib%.*}.tmpsrcs.${_tmp}.mk 277 write_mk ${_machine_arch_subdir}/${_lib%.*}.tmpsrcs.${_tmp}.mk
244 done 278 done
245 279
246 get_libgcc_gen_srcs $_lib | \ 280 get_libgcc_gen_srcs $_lib | \
247 write_mk ${_machine_arch_subdir}/${_lib%.*}.srcs.mk 281 write_mk ${_machine_arch_subdir}/${_lib%.*}.srcs.mk
248 done 282 done
 283
 284 for _arg in tmpsrcs cppflags copts; do
 285 eval get_libgcc_gen_srcs_${_arg} | \
 286 eval writefile \$libgcc_srcs_mk_${_arg}
 287 done
249} 288}
250 289
251##### 290#####
252 291
253get_libgcc_new () { 292get_libgcc_new () {
254 _subdir="$1" 293 _subdir="$1"
255 294
256 # List of generated files. 295 # List of generated files.
257 296
258 _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH 297 _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH
259 298
260 libgcc_db_funcs=${_machine_arch_subdir}/funcs 299 libgcc_db_funcs=${_machine_arch_subdir}/funcs
261 libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs 300 libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs
262 libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs 301 libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs
263 libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs 302 libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs
264 libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs 303 libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs
265 libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags 304 libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags
266 libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts 305 libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts
267 306
268 get_libgcc_new_analyze 307 get_libgcc_new_analyze
269 308
270 libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk 309 libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk
271 libgcc_srcs_mk_tmpsrc=${_machine_arch_subdir}/srcs.tmpsrc.mk 310 libgcc_srcs_mk_tmpsrcs=${_machine_arch_subdir}/srcs.tmpsrcs.mk
272 libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk 311 libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk
273 libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk 312 libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk
274 313
275 get_libgcc_new_generate 314 get_libgcc_new_generate
276} 315}
277 316
278get_libgcc () { 317get_libgcc () {
279 _subdir="$1" 318 _subdir="$1"
280 mkdir -p $_TOP/gnu/lib/lib$_subdir/arch 319 mkdir -p $_TOP/gnu/lib/lib$_subdir/arch
281 320
282 case "$_subdir" in 321 case "$_subdir" in
283 gcc3) 322 gcc3)
284 _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file" 323 _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file"