1 # Makefile for to build a gcc/uClibc toolchain
3 # Copyright (C) 2002-2003 Erik Andersen <andersen@uclibc.org>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 # General Public License for more details.
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 ifneq ($(GCC_2_95_TOOLCHAIN
),true
)
22 #GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/
23 #GCC_SOURCE:=gcc-3.3.tar.gz
24 #GCC_DIR:=$(TOOL_BUILD_DIR)/gcc-3.3
29 #GCC_SITE:=ftp://ftp.gnu.org/gnu/gcc/gcc-$(GCC_VERSION)
30 #GCC_SITE:=http://www.binarycode.org/gcc/releases/gcc-$(GCC_VERSION)
31 GCC_SITE
:=http
://gcc.get-software.com
/releases
/gcc-
$(GCC_VERSION
)
35 #GCC_VERSION:=3.3-20031013
36 #GCC_SITE:=http://gcc.get-software.com/snapshots/$(GCC_VERSION)
38 GCC_SOURCE
:=gcc-
$(GCC_VERSION
).
tar.gz
39 GCC_DIR
:=$(TOOL_BUILD_DIR
)/gcc-
$(GCC_VERSION
)
42 #############################################################
44 # Setup some initial stuff
46 #############################################################
48 ifeq ($(INSTALL_LIBSTDCPP
),true
)
49 TARGET_LANGUAGES
:=c
,c
++
54 #############################################################
56 # build the first pass gcc compiler
58 #############################################################
59 GCC_BUILD_DIR1
:=$(TOOL_BUILD_DIR
)/gcc-3.3
-initial
61 $(DL_DIR
)/$(GCC_SOURCE
):
62 # $(WGET) -P $(DL_DIR) $(GCC_SITE)/$(GCC_SOURCE)
64 $(GCC_DIR
)/.unpacked
: $(DL_DIR
)/$(GCC_SOURCE
)
65 $(GCC_CAT
) $(DL_DIR
)/$(GCC_SOURCE
) |
tar -C
$(TOOL_BUILD_DIR
) -xvf
-
66 touch
$(GCC_DIR
)/.unpacked
68 $(GCC_DIR
)/.patched
: $(GCC_DIR
)/.unpacked
69 # Apply any files named gcc-*.patch from the source directory to gcc
70 $(SOURCE_DIR
)/patch-kernel.sh
$(GCC_DIR
) $(SOURCE_DIR
) gcc-
*.patch
71 ifeq ($(SOFT_FLOAT
),true
)
72 ifeq ("$(strip $(ARCH))","i386")
73 $(SOURCE_DIR
)/patch-kernel.sh
$(GCC_DIR
) $(SOURCE_DIR
) i386-gcc-soft-float.patch
76 touch
$(GCC_DIR
)/.patched
78 $(GCC_DIR
)/.gcc3_3_build_hacks
: $(GCC_DIR
)/.patched
80 # Hack things to use the correct shared lib loader
82 (cd
$(GCC_DIR
); set
-e
; export LIST
=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *`;\
83 if
[ -n
"$$LIST" ] ; then \
84 $(SED
) "s,-dynamic-linker.*\.so[\.0-9]*},\
85 -dynamic-linker /lib/ld-uClibc.so.0},;" $$LIST; fi
);
87 # Prevent gcc from using the unwind-dw2-fde-glibc code used for
88 # unwinding stack frames for C++ exception handling. The
89 # unwind-dw2-fde-glibc code depends on glibc's ldso, we want to
90 # use the generic version instead.
92 $(SED
) "s,^#ifndef inhibit_libc,#define inhibit_libc\n\
93 #ifndef inhibit_libc,g;" $(GCC_DIR
)/gcc
/unwind-dw2-fde-glibc.c
;
95 # Prevent system glibc start files from leaking in uninvited...
97 $(SED
) "s,standard_startfile_prefix_1 = \".*,standard_startfile_prefix_1 =\
98 \"$(STAGING_DIR)/lib/\";,;" $(GCC_DIR
)/gcc
/gcc.c
;
99 $(SED
) "s,standard_startfile_prefix_2 = \".*,standard_startfile_prefix_2 =\
100 \"$(STAGING_DIR)/usr/lib/\";,;" $(GCC_DIR
)/gcc
/gcc.c
;
102 # Prevent system glibc include files from leaking in uninvited...
104 $(SED
) "s,^NATIVE_SYSTEM_HEADER_DIR.*,NATIVE_SYSTEM_HEADER_DIR=\
105 $(STAGING_DIR)/include,;" $(GCC_DIR
)/gcc
/Makefile.in
;
106 $(SED
) "s,^CROSS_SYSTEM_HEADER_DIR.*,CROSS_SYSTEM_HEADER_DIR=\
107 $(STAGING_DIR)/include,;" $(GCC_DIR
)/gcc
/Makefile.in
;
108 $(SED
) "s,^#define.*STANDARD_INCLUDE_DIR.*,#define STANDARD_INCLUDE_DIR \
109 \"$(STAGING_DIR)/include\",;" $(GCC_DIR
)/gcc
/cppdefault.h
;
111 # Prevent system glibc libraries from being found by collect2
112 # when it calls locatelib() and rummages about the system looking
113 # for libraries with the correct name...
115 $(SED
) "s,\"/lib,\"$(STAGING_DIR)/lib,g;" $(GCC_DIR
)/gcc
/collect2.c
116 $(SED
) "s,\"/usr/,\"$(STAGING_DIR)/usr/,g;" $(GCC_DIR
)/gcc
/collect2.c
117 touch
$(GCC_DIR
)/.gcc3_3_build_hacks
119 # The --without-headers option stopped working with gcc 3.0 and has never been
120 # # fixed, so we need to actually have working C library header files prior to
121 # # the step or libgcc will not build...
122 $(GCC_BUILD_DIR1
)/.configured
: $(GCC_DIR
)/.gcc3_3_build_hacks
123 mkdir
-p
$(GCC_BUILD_DIR1
)
124 echo
-e
"#!/bin/sh\nexec $(GCC_BUILD_DIR1)/gcc/xgcc -B$(GCC_BUILD_DIR1)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR1
)/target_gcc
125 chmod a
+x
$(GCC_BUILD_DIR1
)/target_gcc
126 (cd
$(GCC_BUILD_DIR1
); PATH
=$(TARGET_PATH
) AR
=$(TARGET_CROSS
)ar \
127 RANLIB
=$(TARGET_CROSS
)ranlib \
129 LDFLAGS
="$(HOSTLDFLAGS)" \
130 gcc_cv_as_hidden
=no \
131 $(GCC_DIR
)/configure \
132 --target
=$(GNU_TARGET_NAME
) \
133 --host
=$(GNU_HOST_NAME
) \
134 --build
=$(GNU_HOST_NAME
) \
135 --prefix=$(STAGING_DIR
) \
136 --exec-prefix
=$(STAGING_DIR
) \
137 --bindir=$(STAGING_DIR
)/bin \
138 --sbindir
=$(STAGING_DIR
)/sbin \
139 --sysconfdir
=$(STAGING_DIR
)/etc \
140 --datadir=$(STAGING_DIR
)/share \
141 --includedir=$(STAGING_DIR
)/include \
142 --libdir=$(STAGING_DIR
)/lib \
143 --localstatedir
=$(STAGING_DIR
)/var \
144 --mandir=$(STAGING_DIR
)/man \
145 --infodir=$(STAGING_DIR
)/info \
146 --with-local-prefix
=$(STAGING_DIR
)/usr
/local \
147 --oldincludedir=$(STAGING_DIR
)/include $(MULTILIB
) \
148 --enable-target-optspace
$(DISABLE_NLS
) --with-gnu-ld \
149 --disable-shared
--enable-languages
=c
--disable-__cxa_atexit \
150 $(SOFT_FLOAT_CONFIG_OPTION
) \
151 $(EXTRA_GCC_CONFIG_OPTIONS
) --program-prefix
=$(ARCH
)-linux-
);
152 touch
$(GCC_BUILD_DIR1
)/.configured
154 $(GCC_BUILD_DIR1
)/.compiled
: $(GCC_BUILD_DIR1
)/.configured
155 PATH
=$(TARGET_PATH
) $(MAKE
) $(JLEVEL
) -C
$(GCC_BUILD_DIR1
) \
157 LDFLAGS
="$(HOSTLDFLAGS)" \
158 AR_FOR_TARGET
=$(STAGING_DIR
)/bin
/$(ARCH
)-linux-ar \
159 RANLIB_FOR_TARGET
=$(STAGING_DIR
)/bin
/$(ARCH
)-linux-ranlib \
160 CC_FOR_TARGET
=$(GCC_BUILD_DIR1
)/target_gcc \
161 GCC_FOR_TARGET
=$(GCC_BUILD_DIR1
)/target_gcc
162 touch
$(GCC_BUILD_DIR1
)/.compiled
164 $(STAGING_DIR
)/bin
/$(ARCH
)-linux-gcc
: $(GCC_BUILD_DIR1
)/.compiled
165 PATH
=$(TARGET_PATH
) $(MAKE
) $(JLEVEL
) \
167 LDFLAGS
="$(HOSTLDFLAGS)" \
168 -C
$(GCC_BUILD_DIR1
) install;
169 #Cleanup then mess when --program-prefix mysteriously fails
170 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-cpp $(STAGING_DIR
)/bin
/$(ARCH
)-linux-cpp
171 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-gcc
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-gcc
172 if
[ -n
"$(strip $(TARGET_SOFT_FLOAT))" ] ; then \
173 for app in gcc c
++ g
++ ; do \
174 if
[ -x
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-
$${app} ] ; then \
175 (cd
$(STAGING_DIR
)/bin
; \
176 rm -f
$(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
177 echo
-e
"#!/bin/sh\nexec $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} -msoft-float \$$@" > $(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
178 chmod a
+x
$(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
183 rm -f
$(STAGING_DIR
)/bin
/gccbug
$(STAGING_DIR
)/bin
/gcov
184 rm -rf
$(STAGING_DIR
)/info $(STAGING_DIR
)/man
$(STAGING_DIR
)/share
/doc \
185 $(STAGING_DIR
)/share
/locale
187 gcc3_3_initial
: binutils uclibc-configured
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-gcc
189 gcc3_3_initial-clean
:
190 rm -rf
$(GCC_BUILD_DIR1
)
191 rm -f
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)*
193 gcc3_3_initial-dirclean
:
194 rm -rf
$(GCC_BUILD_DIR1
)
196 #############################################################
198 # second pass compiler build. Build the compiler targeting
199 # the newly built shared uClibc library.
201 #############################################################
202 GCC_BUILD_DIR2
:=$(TOOL_BUILD_DIR
)/gcc-3.3
-final
203 $(GCC_BUILD_DIR2
)/.configured
: $(GCC_DIR
)/.patched
204 mkdir
-p
$(GCC_BUILD_DIR2
)
205 echo
-e
"#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2
)/target_g
++
206 chmod a
+x
$(GCC_BUILD_DIR2
)/target_g
++
207 echo
-e
"#!/bin/sh\nexec $(GCC_BUILD_DIR2)/gcc/xgcc -B$(GCC_BUILD_DIR2)/gcc/ -B$(STAGING_DIR)/$(ARCH)-linux/bin/ -B$(STAGING_DIR)/$(ARCH)-linux/lib/ -isystem $(STAGING_DIR)/$(ARCH)-linux/include $(TARGET_SOFT_FLOAT) \$$@" > $(GCC_BUILD_DIR2
)/target_gcc
208 chmod a
+x
$(GCC_BUILD_DIR2
)/target_gcc
209 (cd
$(GCC_BUILD_DIR2
); PATH
=$(TARGET_PATH
) AR
=$(TARGET_CROSS
)ar \
210 RANLIB
=$(TARGET_CROSS
)ranlib LD
=$(TARGET_CROSS
)ld \
211 NM
=$(TARGET_CROSS
)nm \
213 LDFLAGS
="$(HOSTLDFLAGS)" \
214 gcc_cv_as_hidden
=no \
215 $(GCC_DIR
)/configure \
216 --target
=$(GNU_TARGET_NAME
) \
217 --host
=$(GNU_HOST_NAME
) \
218 --build
=$(GNU_HOST_NAME
) \
219 --prefix=$(STAGING_DIR
) \
220 --exec-prefix
=$(STAGING_DIR
) \
221 --bindir=$(STAGING_DIR
)/bin \
222 --sbindir
=$(STAGING_DIR
)/sbin \
223 --sysconfdir
=$(STAGING_DIR
)/etc \
224 --datadir=$(STAGING_DIR
)/share \
225 --localstatedir
=$(STAGING_DIR
)/var \
226 --mandir=$(STAGING_DIR
)/man \
227 --infodir=$(STAGING_DIR
)/info \
228 --with-local-prefix
=$(STAGING_DIR
)/usr
/local \
229 --libdir=$(STAGING_DIR
)/lib \
230 --includedir=$(STAGING_DIR
)/include \
231 --with-gxx-include-dir
=$(STAGING_DIR
)/include/c
++ \
232 --oldincludedir=$(STAGING_DIR
)/include \
233 --enable-shared
$(MULTILIB
) \
234 --enable-target-optspace
$(DISABLE_NLS
) \
235 --with-gnu-ld
--disable-__cxa_atexit \
236 --enable-languages
=$(TARGET_LANGUAGES
) \
237 $(EXTRA_GCC_CONFIG_OPTIONS
) \
238 --program-prefix
=$(ARCH
)-linux- \
240 touch
$(GCC_BUILD_DIR2
)/.configured
242 $(GCC_BUILD_DIR2
)/.compiled
: $(GCC_BUILD_DIR2
)/.configured
243 $(SED
) 's/\-lc//' $(GCC_BUILD_DIR2
)/gcc
/Makefile
244 PATH
=$(TARGET_PATH
) $(MAKE
) $(JLEVEL
) \
246 LDFLAGS
="$(HOSTLDFLAGS)" \
247 AR_FOR_TARGET
=$(TARGET_CROSS
)ar RANLIB_FOR_TARGET
=$(TARGET_CROSS
)ranlib \
248 LD_FOR_TARGET
=$(TARGET_CROSS
)ld NM_FOR_TARGET
=$(TARGET_CROSS
)nm \
249 CC_FOR_TARGET
=$(GCC_BUILD_DIR2
)/target_gcc \
250 GCC_FOR_TARGET
=$(GCC_BUILD_DIR2
)/target_gcc \
251 CXX_FOR_TARGET
=$(GCC_BUILD_DIR2
)/target_g
++ \
253 touch
$(GCC_BUILD_DIR2
)/.compiled
255 $(GCC_BUILD_DIR2
)/.installed
: $(GCC_BUILD_DIR2
)/.compiled
$(STAGING_DIR
)/lib
/libc.a
256 PATH
=$(TARGET_PATH
) $(MAKE
) $(JLEVEL
) \
258 LDFLAGS
="$(HOSTLDFLAGS)" \
259 -C
$(GCC_BUILD_DIR2
) install;
260 -mv
$(STAGING_DIR
)/bin
/gcc
$(STAGING_DIR
)/usr
/bin
;
261 -mv
$(STAGING_DIR
)/bin
/protoize
$(STAGING_DIR
)/usr
/bin
;
262 -mv
$(STAGING_DIR
)/bin
/unprotoize
$(STAGING_DIR
)/usr
/bin
;
263 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-cpp $(STAGING_DIR
)/bin
/$(ARCH
)-linux-cpp
264 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-gcc
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-gcc
265 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-c
++ $(STAGING_DIR
)/bin
/$(ARCH
)-linux-c
++
266 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-g
++ $(STAGING_DIR
)/bin
/$(ARCH
)-linux-g
++
267 -mv
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-c
++filt
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-c
++filt
268 rm -f
$(STAGING_DIR
)/bin
/cpp $(STAGING_DIR
)/bin
/gcov
$(STAGING_DIR
)/bin
/*gccbug
269 rm -f
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)-$(ARCH
)-linux-
*
270 rm -rf
$(STAGING_DIR
)/info $(STAGING_DIR
)/man
$(STAGING_DIR
)/share
/doc \
271 $(STAGING_DIR
)/share
/locale
272 # Strip the host binaries
273 -strip --strip-all
-R .note
-R .comment
$(STAGING_DIR
)/bin
/*
274 if
[ -n
"$(strip $(TARGET_SOFT_FLOAT))" ] ; then \
275 for app in gcc c
++ g
++ ; do \
276 if
[ -x
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-
$${app} ] ; then \
277 (cd
$(STAGING_DIR
)/bin
; \
278 rm -f
$(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
279 echo
-e
"#!/bin/sh\nexec $(STAGING_DIR)/bin/$(ARCH)-linux-$${app} -msoft-float \$$@" > $(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
280 chmod a
+x
$(ARCH
)-linux-
$${app}$(TARGET_SOFT_FLOAT
); \
286 for app in
cc gcc c89
cpp c
++ g
++ ; do \
287 if
[ -x
$(STAGING_DIR
)/bin
/$(ARCH
)-linux-
$${app} ] ; then \
288 (cd
$(STAGING_DIR
)/usr
/bin
; \
289 ln
-fs ..
/..
/bin
/$(ARCH
)-linux-
$${app} $${app}; \
293 (cd
$(STAGING_DIR
)/usr
/bin
; \
296 touch
$(GCC_BUILD_DIR2
)/.installed
298 ifneq ($(TARGET_DIR
),)
299 $(TARGET_DIR
)/lib
/libstdc
++.so
.5.0.5: $(GCC_BUILD_DIR2
)/.installed
300 cp
-a
$(STAGING_DIR
)/lib
/libstdc
++.so
* $(TARGET_DIR
)/lib
/
302 $(GCC_BUILD_DIR2
)/.shared_libgcc
: $(GCC_BUILD_DIR2
)/.installed
303 # Make sure a copy of libgcc_s is in the target's /lib.
304 if
[ -f
$(STAGING_DIR
)/lib
/libgcc_s.so
.0.9.9 ] ; then \
305 cp
-a
$(STAGING_DIR
)/lib
/libgcc_s.so
* $(TARGET_DIR
)/lib
/ ; \
307 touch
$(GCC_BUILD_DIR2
)/.shared_libgcc
309 GCC_TARGETS
:=$(GCC_BUILD_DIR2
)/.shared_libgcc
310 ifeq ($(INSTALL_LIBSTDCPP
),true
)
311 GCC_TARGETS
+=$(TARGET_DIR
)/lib
/libstdc
++.so
.5.0.5
316 gcc3_3
: binutils uclibc-configured gcc3_3_initial
$(LIBFLOAT_TARGET
) uclibc \
317 $(GCC_BUILD_DIR2
)/.installed
$(GCC_TARGETS
)
319 gcc3_3-source
: $(DL_DIR
)/$(GCC_SOURCE
)
322 rm -rf
$(GCC_BUILD_DIR2
)
323 rm -f
$(STAGING_DIR
)/bin
/$(GNU_TARGET_NAME
)*
326 rm -rf
$(GCC_BUILD_DIR2
)
328 #############################################################
330 # Next build target gcc compiler
332 #############################################################
333 GCC_BUILD_DIR3
:=$(BUILD_DIR
)/gcc-3.3
-target
335 TARGET_GCC_ARGS
= $(TARGET_CONFIGURE_OPTS
) \
340 RANLIB_FOR_BUILD
=ranlib \
342 LDFLAGS
="$(HOSTLDFLAGS)" \
343 CC_FOR_BUILD
="$(HOSTCC)" \
344 GCC_FOR_BUILD
="$(HOSTCC)" \
345 CXX_FOR_BUILD
="$(HOSTCC)" \
346 AR_FOR_TARGET
=$(TARGET_CROSS
)ar \
347 AS_FOR_TARGET
=$(TARGET_CROSS
)as \
348 LD_FOR_TARGET
=$(TARGET_CROSS
)ld \
349 NM_FOR_TARGET
=$(TARGET_CROSS
)nm \
350 CC
="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
351 GCC
="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
352 CXX
="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
353 CC_FOR_TARGET
="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
354 GCC_FOR_TARGET
="$(TARGET_CROSS)gcc$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
355 CXX_FOR_TARGET
="$(TARGET_CROSS)g++$(TARGET_SOFT_FLOAT) -isystem $(STAGING_DIR)/include" \
356 RANLIB_FOR_TARGET
=$(TARGET_CROSS
)ranlib
358 # We need to unpack a pristine source tree to avoid some of
359 # the previously applied hacks, which do not apply here...
360 $(GCC_BUILD_DIR3
)/.unpacked
: $(DL_DIR
)/$(GCC_SOURCE
)
361 $(GCC_CAT
) $(DL_DIR
)/$(GCC_SOURCE
) |
tar -C
$(BUILD_DIR
) -xvf
-
362 mv
$(BUILD_DIR
)/gcc-
$(GCC_VERSION
) $(GCC_BUILD_DIR3
)
363 touch
$(GCC_BUILD_DIR3
)/.unpacked
365 $(GCC_BUILD_DIR3
)/.patched
: $(GCC_BUILD_DIR3
)/.unpacked
366 # Apply any files named gcc-*.patch from the source directory to gcc
367 $(SOURCE_DIR
)/patch-kernel.sh
$(GCC_BUILD_DIR3
) $(SOURCE_DIR
) gcc-
*.patch
368 ifeq ("$(strip $(ARCH))","i386")
369 $(SOURCE_DIR
)/patch-kernel.sh
$(GCC_BUILD_DIR3
) $(SOURCE_DIR
) i386-gcc-
*.patch
371 touch
$(GCC_BUILD_DIR3
)/.patched
373 $(GCC_BUILD_DIR3
)/.gcc3_3_build_hacks
: $(GCC_BUILD_DIR3
)/.patched
375 # Hack things to use the correct shared lib loader
377 (cd
$(GCC_BUILD_DIR3
); set
-e
; export LIST
=`grep -lr -- "-dynamic-linker.*\.so[\.0-9]*" *`;\
378 if
[ -n
"$$LIST" ] ; then \
379 $(SED
) "s,-dynamic-linker.*\.so[\.0-9]*},\
380 -dynamic-linker /lib/ld-uClibc.so.0},;" $$LIST; fi
);
382 # Prevent gcc from using the unwind-dw2-fde-glibc code used for
383 # unwinding stack frames for C++ exception handling. The
384 # unwind-dw2-fde-glibc code depends on glibc's ldso, we want to
385 # use the generic version instead.
387 $(SED
) "s,^#ifndef inhibit_libc,#define inhibit_libc\n\
388 #ifndef inhibit_libc,g;" $(GCC_BUILD_DIR3
)/gcc
/unwind-dw2-fde-glibc.c
;
389 touch
$(GCC_BUILD_DIR3
)/.gcc3_3_build_hacks
391 $(GCC_BUILD_DIR3
)/.configured
: $(GCC_BUILD_DIR3
)/.gcc3_3_build_hacks
392 mkdir
-p
$(GCC_BUILD_DIR3
)
393 #(cd $(GCC_BUILD_DIR3); ln -fs $(ARCH)-linux build-$(GNU_TARGET_NAME))
394 (cd
$(GCC_BUILD_DIR3
); \
396 gcc_cv_as_hidden
=no \
399 --target
=$(GNU_TARGET_NAME
) \
400 --host
=$(GNU_TARGET_NAME
) \
401 --build
=`./config.guess` \
404 --infodir=/usr
/info \
405 --with-gxx-include-dir
=/usr
/include/c
++/3.3 \
406 --enable-target-optspace \
410 --with-gnu-ld
--disable-__cxa_atexit \
411 --enable-languages
=$(TARGET_LANGUAGES
) \
412 $(EXTRA_GCC_CONFIG_OPTIONS
) \
414 touch
$(GCC_BUILD_DIR3
)/.configured
416 $(GCC_BUILD_DIR3
)/.compiled
: $(GCC_BUILD_DIR3
)/.configured
417 $(MAKE
) $(JLEVEL
) $(TARGET_GCC_ARGS
) -C
$(GCC_BUILD_DIR3
)
418 touch
$(GCC_BUILD_DIR3
)/.compiled
420 $(TARGET_DIR
)/usr
/bin
/gcc
: $(GCC_BUILD_DIR3
)/.compiled
421 $(MAKE
) $(JLEVEL
) $(TARGET_GCC_ARGS
) DESTDIR
=$(TARGET_DIR
) \
422 -C
$(GCC_BUILD_DIR3
) install
423 (cd
$(TARGET_DIR
)/usr
/bin
; ln
-fs gcc
cc)
424 (cd
$(TARGET_DIR
)/lib
; ln
-fs
/usr
/bin
/cpp)
425 rm -rf
$(TARGET_DIR
)/usr
/$(GNU_TARGET_NAME
)/include
426 rm -rf
$(TARGET_DIR
)/usr
/$(GNU_TARGET_NAME
)/sys-include
427 rm -rf
$(TARGET_DIR
)/usr
/include/include $(TARGET_DIR
)/usr
/usr
428 -mv
$(TARGET_DIR
)/lib
/*.a
$(TARGET_DIR
)/usr
/lib
/
429 -mv
$(TARGET_DIR
)/lib
/*.la
$(TARGET_DIR
)/usr
/lib
/
430 rm -f
$(TARGET_DIR
)/lib
/libstdc
++.so
*
431 # Make sure gcc does not think we are cross compiling
432 $(SED
) "s/^1/0/;" $(TARGET_DIR
)/usr
/lib
/gcc-lib
/$(ARCH
)-linux
/$(GCC_VERSION
)/specs
433 -(cd
$(TARGET_DIR
)/bin
; find
-type f | xargs
$(STRIP
) > /dev
/null
2>&1)
434 -(cd
$(TARGET_DIR
)/usr
/bin
; find
-type f | xargs
$(STRIP
) > /dev
/null
2>&1)
435 -(cd
$(TARGET_DIR
)/usr
/lib
/gcc-lib
/$(ARCH
)-linux
/$(GCC_VERSION
); $(STRIP
) cc1 cc1plus collect2
> /dev
/null
2>&1)
436 -(cd
$(TARGET_DIR
)/usr
/lib
; $(STRIP
) libstdc
++.so.
*.
*.
* > /dev
/null
2>&1)
437 -(cd
$(TARGET_DIR
)/lib
; $(STRIP
) libgcc_s.so.
*.
*.
* > /dev
/null
2>&1)
439 rm -f
$(TARGET_DIR
)/usr
/lib
/*.la
*
440 rm -rf
$(TARGET_DIR
)/share
/locale
$(TARGET_DIR
)/usr
/info \
441 $(TARGET_DIR
)/usr
/man
$(TARGET_DIR
)/usr
/share
/doc
442 # Work around problem of missing syslimits.h
443 cp
-f
$(STAGING_DIR
)/usr
/lib
/gcc-lib
/$(ARCH
)-linux
/$(GCC_VERSION
)/include/syslimits.h
$(TARGET_DIR
)/usr
/lib
/gcc-lib
/$(ARCH
)-linux
/$(GCC_VERSION
)/include/
444 # These are in /lib, so...
445 rm -rf
$(TARGET_DIR
)/usr
/lib
/libgcc_s.so
*
446 touch
-c
$(TARGET_DIR
)/usr
/bin
/gcc
448 gcc3_3_target
: uclibc_target binutils_target
$(TARGET_DIR
)/usr
/bin
/gcc
451 rm -rf
$(GCC_BUILD_DIR3
)
452 rm -f
$(TARGET_DIR
)/bin
/$(GNU_TARGET_NAME
)*
454 gcc3_3_target-dirclean
:
455 rm -rf
$(GCC_BUILD_DIR3
)