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