xref: /netbsd-src/tools/binutils/mknative-binutils (revision 0fcc88b5a2d2c63eba9ea26acd96e4c60cb3e76c)
1#!/bin/sh
2#	$NetBSD: mknative-binutils,v 1.1 2003/11/27 10:12:02 mrg Exp $
3#
4# Shell script for generating all the constants needed for a native
5# platform build of src/gnu/dist/binutils.
6#
7
8# initialise
9
10_TMPDIR=$2
11_TOP=$3
12_PLATFORM=$4
13_VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*= ,,'`
14
15. $_TOP/tools/gcc/mknative.common
16
17##### gnu/lib/libbfd #####
18
19get_libbfd () {
20	mkdir -p $_TOP/gnu/lib/libbfd/arch/$MACHINE_ARCH
21
22	{
23		getvars bfd/Makefile \
24			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
25			INCLUDES TDEFAULTS
26	} | write_mk gnu/lib/libbfd/arch/$MACHINE_ARCH/defs.mk
27
28	write_c gnu/lib/libbfd/arch/$MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
29
30	{
31		cat $_TMPDIR/bfd/config.h
32	} | write_c gnu/lib/libbfd/arch/$MACHINE_ARCH/config.h
33}
34
35##### gnu/lib/libopcodes #####
36
37get_libopcodes () {
38	mkdir -p $_TOP/gnu/lib/libopcodes/arch/$MACHINE_ARCH
39
40	{
41		getvars opcodes/Makefile \
42			archdefs BFD_MACHINES libopcodes_la_SOURCES
43	} | write_mk gnu/lib/libopcodes/arch/$MACHINE_ARCH/defs.mk
44
45	{
46		cat $_TMPDIR/opcodes/config.h
47	} | write_c gnu/lib/libopcodes/arch/$MACHINE_ARCH/config.h
48}
49
50##### gnu/lib/libiberty #####
51
52get_libiberty () {
53	mkdir -p $_TOP/gnu/lib/libiberty
54
55	getvars libiberty/Makefile \
56		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
57		| write_mk gnu/lib/libiberty/defs.mk
58
59	write_c gnu/lib/libiberty/config.h \
60		<$_TMPDIR/libiberty/config.h
61}
62
63##### gnu/usr.bin/binutils #####
64
65get_binutils () {
66	### common
67
68	mkdir -p $_TOP/gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH
69
70	{
71		getvars binutils/Makefile \
72			VERSION DEFS INCLUDES PROGRAMS
73		getvars binutils/doc/Makefile \
74			man_MANS TEXINFOS
75
76		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
77			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
78		done
79	} | write_mk gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH/defs.mk
80
81	write_c gnu/usr.bin/binutils/common/arch/$MACHINE_ARCH/config.h \
82		<$_TMPDIR/binutils/config.h
83
84	### gas
85
86	mkdir -p $_TOP/gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH
87
88	getvars gas/Makefile \
89		DEFS INCLUDES OBJS \
90		| write_mk gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH/defs.mk
91
92	for f in config itbl-cpu obj-format targ-cpu targ-env; do
93		write_c gnu/usr.bin/binutils/gas/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
94	done
95
96	### gprof
97
98	mkdir -p $_TOP/gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH
99
100	getvars gprof/Makefile \
101		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
102		| write_mk gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH/defs.mk
103
104	write_c gnu/usr.bin/binutils/gprof/arch/$MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
105
106	### ld
107
108	mkdir -p $_TOP/gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH
109
110	{
111		getvars ld/Makefile \
112			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
113		getvars ld/Makefile \
114			target_alias | sed 's,[\._0-9A-Z]*$,,'
115	} | write_mk gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH/defs.mk
116
117	for f in config ldemul-list; do
118		write_c gnu/usr.bin/binutils/ld/arch/$MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
119	done
120}
121
122##### main #####
123
124case $1 in
125all)	# everything (uses "canadian cross" temp environment)
126	get_binutils
127	get_libbfd
128	get_libopcodes
129	get_libiberty
130	exit 0
131	;;
132
133binutils)
134	get_binutils
135	get_libbfd
136	get_libopcodes
137	exit 0
138	;;
139
140*)	echo invalid arguments; exit 1;;
141esac
142