1#!/bin/sh
2#	$NetBSD: mknative-binutils.old,v 1.3 2024/07/01 01:56:52 christos Exp $
3#
4# Shell script for generating all the constants needed for a native
5# platform build of src/external/gpl3/binutils.old
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
17BFD_MACHINE_ARCH=$(echo ${MACHINE_ARCH} | sed -e 's/armv[4-7]/arm/')
18
19
20##### external/gpl3/binutils.old/lib/libbfd #####
21
22get_libbfd () {
23	mkdir -p $_TOP/external/gpl3/binutils.old/lib/libbfd/arch/$BFD_MACHINE_ARCH
24
25	{
26		getvars bfd/Makefile \
27			libbfd_la_DEPENDENCIES libbfd_la_OBJECTS DEFS \
28			INCLUDES TDEFAULTS HAVEVECS
29	} | write_mk external/gpl3/binutils.old/lib/libbfd/arch/$BFD_MACHINE_ARCH/defs.mk
30
31	write_c external/gpl3/binutils.old/lib/libbfd/arch/$BFD_MACHINE_ARCH/bfd.h <$_TMPDIR/bfd/bfd.h
32	write_c external/gpl3/binutils.old/lib/libbfd/arch/$BFD_MACHINE_ARCH/bfdver.h <$_TMPDIR/bfd/bfdver.h
33
34	{
35		cat $_TMPDIR/bfd/config.h
36	} | write_c external/gpl3/binutils.old/lib/libbfd/arch/$BFD_MACHINE_ARCH/config.h
37}
38
39##### external/gpl3/binutils.old/lib/libopcodes #####
40
41get_libopcodes () {
42	mkdir -p $_TOP/external/gpl3/binutils.old/lib/libopcodes/arch/$BFD_MACHINE_ARCH
43
44	{
45		getvars opcodes/Makefile \
46			archdefs BFD_MACHINES libopcodes_la_SOURCES
47	} | write_mk external/gpl3/binutils.old/lib/libopcodes/arch/$BFD_MACHINE_ARCH/defs.mk
48
49	{
50		cat $_TMPDIR/opcodes/config.h
51	} | write_c external/gpl3/binutils.old/lib/libopcodes/arch/$BFD_MACHINE_ARCH/config.h
52}
53
54get_libgnuctf () {
55	mkdir -p $_TOP/external/gpl3/binutils.old/lib/libgnuctf/arch/$BFD_MACHINE_ARCH
56
57	{
58		getvars libctf/Makefile libctf_la_SOURCES
59	} | write_mk external/gpl3/binutils.old/lib/libgnuctf/arch/$BFD_MACHINE_ARCH/defs.mk
60
61	{
62		cat $_TMPDIR/libctf/config.h
63	} | write_c external/gpl3/binutils.old/lib/libgnuctf/arch/$BFD_MACHINE_ARCH/config.h
64}
65
66##### external/gpl3/binutils.old/lib/libiberty #####
67
68get_libiberty () {
69	mkdir -p $_TOP/external/gpl3/binutils.old/lib/libiberty/arch/$BFD_MACHINE_ARCH
70
71	getvars libiberty/Makefile \
72		ALLOCA EXTRA_OFILES LIBOBJS REQUIRED_OFILES \
73		| write_mk external/gpl3/binutils.old/lib/libiberty/arch/$BFD_MACHINE_ARCH/defs.mk
74
75	write_c external/gpl3/binutils.old/lib/libiberty/arch/$BFD_MACHINE_ARCH/config.h \
76		<$_TMPDIR/libiberty/config.h
77}
78
79##### external/gpl3/binutils.old/usr.bin #####
80
81get_binutils () {
82	### common
83
84	mkdir -p $_TOP/external/gpl3/binutils.old/usr.bin/common/arch/$BFD_MACHINE_ARCH
85
86	{
87		getvars binutils/Makefile \
88			VERSION DEFS INCLUDES PROGRAMS
89		getvars binutils/Makefile \
90			man_MANS TEXINFOS
91		getvars bfd/Makefile \
92			PKGVERSION | sed 's,\\\(.\),\1,'
93		getvars bfd/Makefile \
94			REPORT_BUGS_TEXI
95
96		for f in `getvars binutils/Makefile PROGRAMS | sed 'y,-,_,;s,^[^=]*=,,'`; do
97			getvars binutils/Makefile ${f}_OBJECTS ${f}_DEPENDENCIES
98		done
99	} | write_mk external/gpl3/binutils.old/usr.bin/common/arch/$BFD_MACHINE_ARCH/defs.mk
100
101	write_c external/gpl3/binutils.old/usr.bin/common/arch/$BFD_MACHINE_ARCH/config.h \
102		<$_TMPDIR/binutils.old/config.h
103
104	### gas
105
106	mkdir -p $_TOP/external/gpl3/binutils.old/usr.bin/gas/arch/$BFD_MACHINE_ARCH
107
108	grep -v DEPDIR "$_TMPDIR/gas/Makefile" > "$_TMPDIR/gas/Makefile.nodeps"
109	getvars gas/Makefile.nodeps \
110                DEFS INCLUDES as_new_OBJECTS as_new_LDADD | 
111	sed	-e s/G_as_new_OBJECTS/G_OBJS/ \
112		-e s/G_as_new_LDADD=/G_OBJS+=/ \
113		-e s@config/@@g \
114		-e 's/\.\..*a//' |
115	write_mk external/gpl3/binutils.old/usr.bin/gas/arch/$BFD_MACHINE_ARCH/defs.mk
116
117	for f in config itbl-cpu obj-format targ-cpu targ-env; do
118		write_c external/gpl3/binutils.old/usr.bin/gas/arch/$BFD_MACHINE_ARCH/$f.h <$_TMPDIR/gas/$f.h
119	done
120
121	### gprof
122
123	mkdir -p $_TOP/external/gpl3/binutils.old/usr.bin/gprof/arch/$BFD_MACHINE_ARCH
124
125	getvars gprof/Makefile \
126		DEFS gprof_OBJECTS INCLUDES TEXINFOS \
127		| write_mk external/gpl3/binutils.old/usr.bin/gprof/arch/$BFD_MACHINE_ARCH/defs.mk
128
129	write_c external/gpl3/binutils.old/usr.bin/gprof/arch/$BFD_MACHINE_ARCH/gconfig.h <$_TMPDIR/gprof/gconfig.h
130
131	### ld
132
133	mkdir -p $_TOP/external/gpl3/binutils.old/usr.bin/ld/arch/$BFD_MACHINE_ARCH
134
135	{
136		getvars ld/Makefile \
137			DEFS EMUL EMULATION_OFILES INCLUDES OFILES STRINGIFY TEXINFOS
138		getvars ld/Makefile \
139			target_alias | sed 's,[\._0-9A-Z]*$,,'
140		getvars	ld/Makefile \
141			enable_initfini_array
142	} | write_mk external/gpl3/binutils.old/usr.bin/ld/arch/$BFD_MACHINE_ARCH/defs.mk
143
144	for f in config ldemul-list; do
145		write_c external/gpl3/binutils.old/usr.bin/ld/arch/$BFD_MACHINE_ARCH/$f.h <$_TMPDIR/ld/$f.h
146	done
147}
148
149##### main #####
150
151case $1 in
152all|binutils)	# everything (uses "canadian cross" temp environment)
153	get_binutils
154	get_libbfd
155	get_libgnuctf
156	get_libopcodes
157	get_libiberty
158	exit 0
159	;;
160
161*)	echo invalid arguments; exit 1;;
162esac
163