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