blob: ff711530536f3cab11aa0702b0b39482b2d00d42 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#! /usr/bin/make -f
CFLAGS = -g -O2
configure.stamp:
for target in $(PKG_TARGETS); do \
mkdir -p "build-$${target}"; \
done
# Generate the main makefile.
# Use shared BFD and opcodes libraries for all utilities.
# Don't enable multilib (multiarch is better).
# Enable plugins.
# Don't expect to find Gettext.
for target in $(PKG_TARGETS); do \
cd "build-$${target}" && \
target_arch_gnu=$$(oh-getarchitecture -t gnu "$${target}") && \
CFLAGS='$(CFLAGS)' ../src/configure \
--prefix=/usr --with-sysroot=/ \
--program-transform-name="s&^&$${target}-&" \
--enable-shared --disable-multilib \
--enable-plugins --disable-nls \
--build=$(OH_BUILD_ARCH_GNU) --host=$(OH_HOST_ARCH_GNU) \
--target="$${target_arch_gnu}" \
--with-pkgversion='GNU Binutils for embedded distro' && \
cd ..; \
done
# Generate all the individual program makefiles.
for target in $(PKG_TARGETS); do \
cd "build-$${target}" && make configure-host && cd ..; \
done
touch $@
build.stamp: configure.stamp
# Build BFD header files.
for target in $(PKG_TARGETS); do \
cd "build-$${target}/bfd" && make headers && cd ../..; \
done
# Build ALL the things!
for target in $(PKG_TARGETS); do \
cd "build-$${target}" && make CFLAGS='$(CFLAGS)' && cd ..; \
done
touch $@
install.stamp: build.stamp
# Install everything.
for target in $(PKG_TARGETS); do \
cd "build-$${target}" && \
make CFLAGS='$(CFLAGS)' \
prefix="$${PWD}/../dest/usr" tooldir="$${PWD}/../dest/usr/tool" \
bindir="$${PWD}/../dest/usr/bin/$(OH_HOST_ARCH)" \
libdir="$${PWD}/../dest/usr/lib/$(OH_HOST_ARCH)" \
install && \
cd ..; \
done
# tooldir contains target ldscripts and hard links to tools.
# Move ldscripts to where they belong and delete everything else.
# ldscripts should be independent of the host architecture and therefore
# coinstallable with themselves across host architectures.
for target in $(PKG_TARGETS); do \
mv dest/usr/tool/lib/ldscripts "dest/usr/lib/$${target}" && \
rm -Rf dest/usr/tool; \
done
# This is a kludge to put libiberty.a in the right place.
# The problem is that libiberty's makefile asks GCC for a multilib
# directory.
for target in $(PKG_TARGETS); do \
liberty="$$(find dest/usr/lib -name libiberty.a)" && \
mv "$${liberty}" dest/usr/lib/$(OH_HOST_ARCH) && \
rmdir "$${liberty%/libiberty.a}"; \
done
# Move BFD libraries and headers into multiarch locations.
# This can't be done with *dir options; these paths are hardcoded in
# bfd/configure.
for target in $(PKG_TARGETS); do \
target_arch_gnu=$$(oh-getarchitecture -t gnu "$${target}") && \
mkdir dest/usr/include && \
mkdir dest/usr/include/$(OH_HOST_ARCH) && \
mv "dest/usr/$(OH_HOST_ARCH_GNU)/$${target_arch_gnu}/include" \
"dest/usr/include/$(OH_HOST_ARCH)/$${target}" && \
mv "dest/usr/$(OH_HOST_ARCH_GNU)/$${target_arch_gnu}/lib" \
"dest/usr/lib/$(OH_HOST_ARCH)/$${target}" && \
rmdir "dest/usr/$(OH_HOST_ARCH_GNU)/$${target_arch_gnu}" && \
rmdir "dest/usr/$(OH_HOST_ARCH_GNU)"; \
done
# Remove static library dependency metadata generated by libtool.
rm -f dest/usr/lib/$(OH_HOST_ARCH)/*/*.la
# Make symbolic links to native utilities.
for target in $(PKG_TARGETS); do \
if [ '$(OH_HOST_ARCH)' = "$${target}" ]; then \
for util in "../dest/usr/bin/$${target}-"*; do \
ln -sf "$${util##*/}" "$${util%/*}/$${util##*/$${target}}"; \
done \
fi; \
done
touch $@
binary-arch: install.stamp
oh-strip
oh-installfiles
oh-installdocs binutils
oh-gencontrol
oh-buildopk
binary-indep: install.stamp
oh-installfiles
oh-installdocs binutils
oh-gencontrol
oh-buildopk
binary: binary-arch binary-indep
|