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