]>
Commit | Line | Data |
---|---|---|
cd1a2927 MT |
1 | ############################################################# |
2 | # | |
3 | # build binutils for use on the host system | |
4 | # | |
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 | |
9 | BINUTILS_CAT:=bzcat | |
10 | ||
11 | BINUTILS_DIR1:=$(TOOL_BUILD_DIR)/binutils-build | |
12 | ||
13 | $(DL_DIR)/$(BINUTILS_SOURCE): | |
14 | # $(WGET) -P $(DL_DIR) $(BINUTILS_SITE)/$(BINUTILS_SOURCE) | |
15 | ||
16 | $(BINUTILS_DIR)/.unpacked: $(DL_DIR)/$(BINUTILS_SOURCE) | |
17 | mkdir -p $(TOOL_BUILD_DIR) | |
18 | mkdir -p $(DL_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 | |
28 | ||
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 | |
33 | ||
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) \ | |
57 | $(MULTILIB) \ | |
58 | $(SOFT_FLOAT_CONFIG_OPTION) \ | |
59 | --program-prefix=$(ARCH)-linux-); | |
60 | touch $(BINUTILS_DIR1)/.configured | |
61 | ||
62 | $(BINUTILS_DIR1)/binutils/objdump: $(BINUTILS_DIR1)/.configured | |
63 | $(MAKE) $(JLEVEL) CC_FOR_HOST="$(HOSTCC)" \ | |
64 | CXX_FOR_HOST="$(HOSTCC)" LDFLAGS="$(HOSTLDFLAGS)" \ | |
65 | -C $(BINUTILS_DIR1); | |
66 | ||
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; | |
74 | set -e; \ | |
75 | for app in addr2line ar as c++filt gprof ld nm objcopy \ | |
76 | objdump ranlib readelf size strings strip ; \ | |
77 | do \ | |
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}; \ | |
81 | ); \ | |
82 | (cd $(STAGING_DIR)/usr/bin; \ | |
83 | ln -fs ../../bin/$(ARCH)-linux-$${app} $${app}; \ | |
84 | ); \ | |
85 | fi; \ | |
86 | done; | |
87 | ||
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/ | |
102 | ||
103 | binutils: $(STAGING_DIR)/$(GNU_TARGET_NAME)/bin/ld $(STAGING_DIR)/lib/libg.a | |
104 | ||
105 | binutils-source: $(DL_DIR)/$(BINUTILS_SOURCE) | |
106 | ||
107 | binutils-clean: | |
108 | rm -f $(STAGING_DIR)/bin/$(GNU_TARGET_NAME)* | |
109 | -$(MAKE) -C $(BINUTILS_DIR1) clean | |
110 | ||
111 | binutils-dirclean: | |
112 | rm -rf $(BINUTILS_DIR1) | |
113 | ||
114 | ||
115 | ||
116 | ############################################################# | |
117 | # | |
118 | # build binutils for use on the target system | |
119 | # | |
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 \ | |
144 | --prefix=/usr \ | |
145 | --mandir=/usr/man \ | |
146 | --infodir=/usr/info \ | |
147 | $(MULTILIB) \ | |
148 | $(SOFT_FLOAT_CONFIG_OPTION) \ | |
149 | ); | |
150 | touch $(BINUTILS_DIR2)/.configured | |
151 | ||
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 | |
166 | ||
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 \ | |
180 | prefix=/usr \ | |
181 | infodir=/usr/info \ | |
182 | mandir=/usr/man \ | |
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 | |
188 | ||
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/ | |
200 | ||
201 | binutils_target: $(GCC_DEPENDANCY) $(TARGET_DIR)/usr/bin/ld $(TARGET_DIR)/usr/lib/libg.a | |
202 | ||
203 | binutils_target-clean: | |
204 | rm -f $(TARGET_DIR)/bin/$(GNU_TARGET_NAME)* | |
205 | -$(MAKE) -C $(BINUTILS_DIR2) clean | |
206 | ||
207 | binutils_target-dirclean: | |
208 | rm -rf $(BINUTILS_DIR2) | |
209 |