1 #############################################################
3 # build binutils for use on the host system
5 #############################################################
6 #BINUTILS_SITE:=http://ftp.kernel.org/pub/linux/devel/binutils
7 BINUTILS_SOURCE
:=binutils-2.15
.90.0.3.
tar.bz2
8 BINUTILS_DIR
:=$(TOOL_BUILD_DIR
)/binutils-2.15
.90.0.3
11 BINUTILS_DIR1
:=$(TOOL_BUILD_DIR
)/binutils-build
13 $(DL_DIR
)/$(BINUTILS_SOURCE
):
14 # $(WGET) -P $(DL_DIR) $(BINUTILS_SITE)/$(BINUTILS_SOURCE)
16 $(BINUTILS_DIR
)/.unpacked
: $(DL_DIR
)/$(BINUTILS_SOURCE
)
17 mkdir
-p
$(TOOL_BUILD_DIR
)
19 mkdir
-p
$(STAGING_DIR
)
20 mkdir
-p
$(STAGING_DIR
)/lib
/gcc-lib
21 mkdir
-p
$(STAGING_DIR
)/usr
/bin
;
22 mkdir
-p
$(STAGING_DIR
)/$(GNU_TARGET_NAME
)/
23 (cd
$(STAGING_DIR
)/$(GNU_TARGET_NAME
); ln
-fs ..
/lib
)
24 (cd
$(STAGING_DIR
)/$(GNU_TARGET_NAME
); ln
-fs ..
/include)
25 (cd
$(STAGING_DIR
)/$(GNU_TARGET_NAME
); ln
-fs ..
/include sys-include
)
26 $(BINUTILS_CAT
) $(DL_DIR
)/$(BINUTILS_SOURCE
) |
tar -C
$(TOOL_BUILD_DIR
) -xvf
-
27 touch
$(BINUTILS_DIR
)/.unpacked
29 $(BINUTILS_DIR
)/.patched
: $(BINUTILS_DIR
)/.unpacked
30 # Apply any files named binutils-*.patch from the source directory to binutils
31 $(SOURCE_DIR
)/patch-kernel.sh
$(BINUTILS_DIR
) $(SOURCE_DIR
) binutils-
*.patch
32 touch
$(BINUTILS_DIR
)/.patched
34 $(BINUTILS_DIR1
)/.configured
: $(BINUTILS_DIR
)/.patched
35 mkdir
-p
$(BINUTILS_DIR1
)
36 (cd
$(BINUTILS_DIR1
); CC
="$(HOSTCC)" \
37 CC_FOR_HOST
="$(HOSTCC)" \
38 CXX_FOR_HOST
="$(HOSTCC)" \
39 LDFLAGS
="$(HOSTLDFLAGS)" \
40 $(BINUTILS_DIR
)/configure \
41 --target
=$(GNU_TARGET_NAME
) \
42 --host
=$(GNU_HOST_NAME
) \
43 --build
=$(GNU_HOST_NAME
) \
44 --prefix=$(STAGING_DIR
) \
45 --exec-prefix
=$(STAGING_DIR
) \
46 --bindir=$(STAGING_DIR
)/bin \
47 --sbindir
=$(STAGING_DIR
)/sbin \
48 --sysconfdir
=$(STAGING_DIR
)/etc \
49 --datadir=$(STAGING_DIR
)/share \
50 --includedir=$(STAGING_DIR
)/include \
51 --libdir=$(STAGING_DIR
)/lib \
52 --localstatedir
=$(STAGING_DIR
)/var \
53 --mandir=$(STAGING_DIR
)/man \
54 --infodir=$(STAGING_DIR
)/info \
55 --enable-targets
=$(GNU_TARGET_NAME
) \
56 --with-sysroot
=$(STAGING_DIR
) \
58 $(SOFT_FLOAT_CONFIG_OPTION
) \
59 --program-prefix
=$(ARCH
)-linux-
);
60 touch
$(BINUTILS_DIR1
)/.configured
62 $(BINUTILS_DIR1
)/binutils
/objdump
: $(BINUTILS_DIR1
)/.configured
63 $(MAKE
) $(JLEVEL
) CC_FOR_HOST
="$(HOSTCC)" \
64 CXX_FOR_HOST
="$(HOSTCC)" LDFLAGS
="$(HOSTLDFLAGS)" \
67 $(STAGING_DIR
)/$(GNU_TARGET_NAME
)/bin
/ld: $(BINUTILS_DIR1
)/binutils
/objdump
68 $(MAKE
) $(JLEVEL
) CC_FOR_HOST
="$(HOSTCC)" \
69 CXX_FOR_HOST
="$(HOSTCC)" LDFLAGS
="$(HOSTLDFLAGS)" \
70 -C
$(BINUTILS_DIR1
) install;
71 rm -rf
$(STAGING_DIR
)/info $(STAGING_DIR
)/man
$(STAGING_DIR
)/share
/doc \
72 $(STAGING_DIR
)/share
/locale
73 mkdir
-p
$(STAGING_DIR
)/usr
/bin
;
75 for app in addr2line
ar as c
++filt gprof
ld nm objcopy \
76 objdump ranlib readelf size strings
strip ; \
78 if
[ -x
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-
$${app} ] ; then \
79 (cd
$(STAGING_DIR
)/$(GNU_TARGET_NAME
)/bin
; \
80 ln
-fs ..
/..
/bin
/$(ARCH
)-linux-
$${app} $${app}; \
82 (cd
$(STAGING_DIR
)/usr
/bin
; \
83 ln
-fs ..
/..
/bin
/$(ARCH
)-linux-
$${app} $${app}; \
88 $(STAGING_DIR
)/lib
/libg.a
:
89 mkdir
-p
$(STAGING_DIR
)/$(GNU_TARGET_NAME
)/bin
90 mkdir
-p
$(STAGING_DIR
)/usr
/include/
91 mkdir
-p
$(STAGING_DIR
)/usr
/lib
/
92 $(TARGET_CROSS
)ar rv
$(STAGING_DIR
)/lib
/libg.a
;
93 cp
$(BINUTILS_DIR
)/include/ansidecl.h
$(STAGING_DIR
)/usr
/include/
94 cp
$(BINUTILS_DIR
)/include/bfdlink.h
$(STAGING_DIR
)/usr
/include/
95 cp
$(BINUTILS_DIR
)/include/dis-asm.h
$(STAGING_DIR
)/usr
/include/
96 cp
$(BINUTILS_DIR
)/include/libiberty.h
$(STAGING_DIR
)/usr
/include/
97 cp
$(BINUTILS_DIR
)/include/symcat.h
$(STAGING_DIR
)/usr
/include/
98 cp
$(BINUTILS_DIR1
)/bfd
/bfd.h
$(STAGING_DIR
)/usr
/include/
99 cp
-a
$(BINUTILS_DIR1
)/bfd
/.libs
/* $(STAGING_DIR
)/usr
/lib
/
100 cp
-a
$(BINUTILS_DIR1
)/opcodes
/.libs
/* $(STAGING_DIR
)/usr
/lib
/
101 cp
-a
$(BINUTILS_DIR1
)/libiberty
/libiberty.a
$(STAGING_DIR
)/usr
/lib
/
103 binutils
: $(STAGING_DIR
)/$(GNU_TARGET_NAME
)/bin
/ld $(STAGING_DIR
)/lib
/libg.a
105 binutils-source
: $(DL_DIR
)/$(BINUTILS_SOURCE
)
108 rm -f
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)*
109 -$(MAKE
) -C
$(BINUTILS_DIR1
) clean
112 rm -rf
$(BINUTILS_DIR1
)
116 #############################################################
118 # build binutils for use on the target system
120 #############################################################
121 BINUTILS_DIR2
:=$(BUILD_DIR
)/binutils-target
122 $(BINUTILS_DIR2
)/.configured
: $(BINUTILS_DIR
)/.patched
123 mkdir
-p
$(BINUTILS_DIR2
)
124 mkdir
-p
$(TARGET_DIR
)/usr
/include
125 mkdir
-p
$(TARGET_DIR
)/usr
/$(GNU_TARGET_NAME
)/
126 (cd
$(BINUTILS_DIR2
); \
127 $(TARGET_CONFIGURE_OPTS
) \
128 CFLAGS
="$(TARGET_CFLAGS)" \
129 CC_FOR_BUILD
="$(HOSTCC)" \
130 CXX_FOR_BUILD
="$(HOSTCC)" \
131 LDFLAGS
="$(HOSTLDFLAGS)" \
132 AR_FOR_TARGET
=$(TARGET_CROSS
)ar \
133 AS_FOR_TARGET
=$(TARGET_CROSS
)as \
134 LD_FOR_TARGET
=$(TARGET_CROSS
)ld \
135 NM_FOR_TARGET
=$(TARGET_CROSS
)nm \
136 CC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
137 GCC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
138 CXX_FOR_TARGET
=$(TARGET_CROSS
)g
++$(TARGET_SOFT_FLOAT
) \
139 RANLIB_FOR_TARGET
=$(TARGET_CROSS
)ranlib \
140 $(BINUTILS_DIR
)/configure \
141 --target
=$(GNU_TARGET_NAME
) \
142 --host
=$(GNU_TARGET_NAME
) \
143 --build
=$(ARCH
)-linux \
146 --infodir=/usr
/info \
148 $(SOFT_FLOAT_CONFIG_OPTION
) \
150 touch
$(BINUTILS_DIR2
)/.configured
152 $(BINUTILS_DIR2
)/binutils
/objdump
: $(BINUTILS_DIR2
)/.configured
153 $(MAKE
) $(JLEVEL
) -C
$(BINUTILS_DIR2
) \
154 CC_FOR_BUILD
="$(HOSTCC)" \
155 CXX_FOR_BUILD
="$(HOSTCC)" \
156 LDFLAGS
="$(HOSTLDFLAGS)" \
157 AR_FOR_TARGET
=$(TARGET_CROSS
)ar \
158 AS_FOR_TARGET
=$(TARGET_CROSS
)as \
159 LD_FOR_TARGET
=$(TARGET_CROSS
)ld \
160 NM_FOR_TARGET
=$(TARGET_CROSS
)nm \
161 CC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
162 GCC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
163 CXX_FOR_TARGET
=$(TARGET_CROSS
)g
++$(TARGET_SOFT_FLOAT
) \
164 RANLIB_FOR_TARGET
=$(TARGET_CROSS
)ranlib
165 touch
-c
$(BINUTILS_DIR2
)/binutils
/objdump
167 $(TARGET_DIR
)/usr
/bin
/ld: $(BINUTILS_DIR2
)/binutils
/objdump
168 $(MAKE
) $(JLEVEL
) -C
$(BINUTILS_DIR2
) \
169 CC_FOR_BUILD
="$(HOSTCC)" \
170 CXX_FOR_BUILD
="$(HOSTCC)" \
171 LDFLAGS
="$(HOSTLDFLAGS)" \
172 AR_FOR_TARGET
=$(TARGET_CROSS
)ar \
173 AS_FOR_TARGET
=$(TARGET_CROSS
)as \
174 LD_FOR_TARGET
=$(TARGET_CROSS
)ld \
175 NM_FOR_TARGET
=$(TARGET_CROSS
)nm \
176 CC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
177 GCC_FOR_TARGET
=$(TARGET_CROSS
)gcc
$(TARGET_SOFT_FLOAT
) \
178 CXX_FOR_TARGET
=$(TARGET_CROSS
)g
++$(TARGET_SOFT_FLOAT
) \
179 RANLIB_FOR_TARGET
=$(TARGET_CROSS
)ranlib \
183 DESTDIR
=$(TARGET_DIR
) install
184 rm -rf
$(TARGET_DIR
)/share
/locale
$(TARGET_DIR
)/usr
/info \
185 $(TARGET_DIR
)/usr
/man
$(TARGET_DIR
)/usr
/share
/doc
186 -$(STRIP
) $(TARGET_DIR
)/usr
/$(GNU_TARGET_NAME
)/bin
/* > /dev
/null
2>&1
187 -$(STRIP
) $(TARGET_DIR
)/usr
/bin
/* > /dev
/null
2>&1
189 $(TARGET_DIR
)/usr
/lib
/libg.a
:
190 $(TARGET_CROSS
)ar rv
$(TARGET_DIR
)/usr
/lib
/libg.a
;
191 cp
$(BINUTILS_DIR
)/include/ansidecl.h
$(TARGET_DIR
)/usr
/include/
192 cp
$(BINUTILS_DIR
)/include/bfdlink.h
$(TARGET_DIR
)/usr
/include/
193 cp
$(BINUTILS_DIR
)/include/dis-asm.h
$(TARGET_DIR
)/usr
/include/
194 cp
$(BINUTILS_DIR
)/include/libiberty.h
$(TARGET_DIR
)/usr
/include/
195 cp
$(BINUTILS_DIR
)/include/symcat.h
$(TARGET_DIR
)/usr
/include/
196 cp
$(BINUTILS_DIR2
)/bfd
/bfd.h
$(TARGET_DIR
)/usr
/include/
197 cp
-a
$(BINUTILS_DIR2
)/bfd
/.libs
/* $(TARGET_DIR
)/usr
/lib
/
198 cp
-a
$(BINUTILS_DIR2
)/opcodes
/.libs
/* $(TARGET_DIR
)/usr
/lib
/
199 cp
-a
$(BINUTILS_DIR2
)/libiberty
/libiberty.a
$(TARGET_DIR
)/usr
/lib
/
201 binutils_target
: $(GCC_DEPENDANCY
) $(TARGET_DIR
)/usr
/bin
/ld $(TARGET_DIR
)/usr
/lib
/libg.a
203 binutils_target-clean
:
204 rm -f
$(TARGET_DIR
)/bin
/$(GNU_TARGET_NAME
)*
205 -$(MAKE
) -C
$(BINUTILS_DIR2
) clean
207 binutils_target-dirclean
:
208 rm -rf
$(BINUTILS_DIR2
)