mknative-gcc revision 1.9
1#!/bin/sh
2#	$NetBSD: mknative-gcc,v 1.9 2003/11/27 01:05:45 mrg Exp $
3#
4# Shell script for generating all the constants needed for a native
5# platform build of src/gnu/dist/toolchain.
6#
7
8# initialise
9
10_TMPDIR=$2
11_TOP=$3
12_PLATFORM=$4
13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*= ,,'`
14_GNU_DIST=`cd ${_VPATH}; pwd`
15
16. $_TOP/tools/gcc/mknative.common
17
18##### gnu/lib/libg2c #####
19
20get_libg2c () {
21	mkdir -p $_TOP/gnu/lib/libg2c3/arch/$MACHINE_ARCH
22
23	write_c gnu/lib/libg2c3/arch/$MACHINE_ARCH/config.h <$_TMPDIR/$_PLATFORM/libf2c/libU77/config.h
24	write_c gnu/lib/libg2c3/arch/$MACHINE_ARCH/g2c.h <$_TMPDIR/$_PLATFORM/libf2c/g2c.h
25
26	{
27		getvars $_PLATFORM/libf2c/Makefile \
28			F2CEXT
29		getvars $_PLATFORM/libf2c/libF77/Makefile \
30			ALL_CFLAGS OBJS
31		getvars $_PLATFORM/libf2c/libI77/Makefile \
32			ALL_CFLAGS OBJS | sed 's,=,+=,'
33		getvars $_PLATFORM/libf2c/libU77/Makefile \
34			ALL_CFLAGS OBJS | sed 's,=,+=,'
35	} | write_mk gnu/lib/libg2c3/arch/$MACHINE_ARCH/defs.mk
36}
37
38##### gnu/lib/libgcc #####
39
40get_libgcc () {
41	mkdir -p $_TOP/gnu/lib/libgcc3
42
43	# DPBIT, FPBIT only used on mn10[23]00, we don't need them.
44	# XXX we should probably grab everything Just In Case for
45	# the future.
46	getvars gcc/Makefile \
47		CXX_EXTRA_HEADERS CXX_LIB2FUNCS CXX_LIB2SRCS \
48		INCLUDES LIB2ADD LIB2ADDEH LIB2FUNCS_1 LIB2FUNCS_2 \
49		LIB2FUNCS_EXTRA \
50		LIB2_DIVMOD_FUNCS LIB2FUNCS_ST \
51		LIBGCC2_CFLAGS MAYBE_USE_COLLECT2 \
52		tm_defines xm_file xm_defines \
53		| write_mk gnu/lib/libgcc3/$MACHINE_ARCH.mk
54}
55
56##### gnu/usr.bin/gcc3/libiberty #####
57
58get_gcc3_libiberty () {
59	mkdir -p $_TOP/gnu/usr.bin/gcc3/libiberty/arch/$MACHINE_ARCH
60
61	getvars libiberty/Makefile \
62		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
63		| write_mk gnu/usr.bin/gcc3/libiberty/defs.mk
64
65	write_c gnu/usr.bin/gcc3/libiberty/arch/$MACHINE_ARCH/config.h \
66		<$_TMPDIR/libiberty/config.h
67}
68
69##### gnu/lib/libobjc #####
70
71get_libobjc () {
72	mkdir -p $_TOP/gnu/lib/libobjc3
73
74	getvars $_PLATFORM/libobjc/Makefile \
75		ALL_CFLAGS INCLUDES OBJS OBJC_H \
76		| sed "s,$_GNU_DIST,\${GNUHOSTDIST},g" \
77		| write_mk gnu/lib/libobjc3/defs.mk
78}
79
80##### gnu/lib/libstdc++-v3 #####
81
82get_libstdcxx_v3 () {
83	mkdir -p $_TOP/gnu/lib/libstdc++-v3/arch/$MACHINE_ARCH
84
85	# build files
86	for h in gthr.h gthr-single.h gthr-posix.h gthr-default.h c++config.h; do
87		write_c gnu/lib/libstdc++-v3/arch/$MACHINE_ARCH/$h \
88			<$_TMPDIR/$_PLATFORM/libstdc++-v3/include/$_PLATFORM/bits/$h
89	done
90
91	write_c gnu/lib/libstdc++-v3/arch/$MACHINE_ARCH/config.h \
92		<$_TMPDIR/$_PLATFORM/libstdc++-v3/config.h
93
94	{
95		# libmath
96		getvars $_PLATFORM/libstdc++-v3/libmath/Makefile \
97			libmath_la_SOURCES libmath_la_LIBADD
98
99		# libsupc++
100		getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \
101			sources | sed 's/^G_sources=/G_LIBSUPCXX_SOURCES=/'
102		getvars $_PLATFORM/libstdc++-v3/libsupc++/Makefile \
103			c_sources | sed 's/^G_c_sources=/G_LIBSUPCXX_C_SOURCES=/'
104
105		# src
106		getvars $_PLATFORM/libstdc++-v3/src/Makefile \
107			sources SECTION_FLAGS | sed 's/^G_sources=/G_SRC_SOURCES=/'
108
109		# include
110		getvars $_PLATFORM/libstdc++-v3/include/Makefile \
111			c_base_headers_rename std_headers_rename
112		getvars $_PLATFORM/libstdc++-v3/include/Makefile \
113			bits_headers backward_headers ext_headers c_base_headers_extra \
114			target_headers | sed 's#/[^ 	][^ 	]*/##g'
115		getvars $_PLATFORM/libstdc++-v3/include/Makefile \
116			thread_target_headers target_headers_extra | sed 's#\./[^ 	][^ 	]*/##g'
117	} | write_mk gnu/lib/libstdc++-v3/arch/$MACHINE_ARCH/defs.mk
118}
119
120##### gnu/usr.bin/gcc3 #####
121
122get_gcc () {
123	mkdir -p $_TOP/gnu/usr.bin/gcc3/arch/$MACHINE_ARCH
124
125	{
126		getvars gcc/Makefile \
127			ALL_CFLAGS ALL_CPPFLAGS C_AND_OBJC_OBJS C_OBJS CCCP_OBJS \
128			GCOV_OBJS PROTO_OBJS HOST_PRINT HOST_RTL HOST_RTLANAL \
129			HOST_SUPPORT HOST_EARLY_SUPPORT HOST_ERRORS HOST_VARRAY \
130			INCLUDES md_file OBJC_OBJS OBJS out_file version \
131			BUILD_PREFIX RTL_H TREE_H HCONFIG_H BASIC_BLOCK_H GCC_H \
132			GTFILES_SRCDIR GTFILES_FILES_FILES GTFILES_FILES_LANGS \
133			GTFILES GTFILES_LANG_DIR_NAMES \
134			tm_defines host_xm_file host_xm_defines tm_p_file \
135			target_cpu_default \
136			LIBCPP_OBJS LIBCPP_H \
137			lang_specs_files
138		getvars gcc/Makefile \
139			LIB2ADDEHDEP | sed 's/unwind.inc//'
140		getvars gcc/Makefile \
141			CXX_OBJS CXX_C_OBJS | sed 's/cp\///g'
142		getvars gcc/Makefile \
143			F77_OBJS | sed 's/f\///g'
144	} | write_mk gnu/usr.bin/gcc3/arch/$MACHINE_ARCH/defs.mk
145
146	for f in auto-host configargs cs-hconfig gencheck hconfig gthr-default; do
147		write_c gnu/usr.bin/gcc3/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gcc/$f.h
148	done
149}
150
151##### main #####
152
153case $1 in
154libgcc)	# .mk and .h files for libgcc bootstrap (from host build)
155	get_libgcc
156	exit 0
157	;;
158
159gcc3)
160	get_gcc
161	get_libg2c
162	get_libgcc
163	get_gcc3_libiberty
164	get_libobjc
165	get_libstdcxx_v3
166	exit 0
167	;;
168
169*)	echo invalid arguments; exit 1;;
170esac
171