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