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