7 .PHONY
: all clean distclean libc
9 all: linux-headers libgmp libmpfr binutils gcc-static uclibc gcc-final
test
11 clean: linux-headers-clean libgmp-clean libmpfr-clean binutils-clean gcc-static-clean uclibc-clean gcc-final-clean test-clean
13 distclean: clean linux-headers-distclean libgmp-distclean libmpfr-distclean binutils-distclean gcc-static-distclean uclibc-distclean gcc-final-distclean test-distclean
17 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.bz2
:
18 wget
-P
$(WORK
) -c ftp
://ftp.kernel.org
/pub
/linux
/kernel
/v2.6
/linux-
$(KERNEL_HEADERS_VERSION
).
tar.bz2
20 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
): $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.bz2
21 tar -C
$(WORK
) -xvjf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.bz2
22 touch
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
24 $(CLFS
)/usr
/include/asm
: $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
25 mkdir
-p
$(CLFS
)/usr
/include
26 cd
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
) && \
28 make ARCH
=arm headers_check
&& \
29 make ARCH
=arm INSTALL_HDR_PATH
=$(CLFS
)/usr headers_install
30 touch
$(CLFS
)/usr
/include/asm
32 linux-headers
: $(CLFS
)/usr
/include/asm
35 rm -vrf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
37 linux-headers-distclean
: linux-headers-clean
38 rm -vf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.bz2
42 $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
:
43 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/gmp
/gmp-
$(LIBGMP_VERSION
).
tar.bz2
45 $(WORK
)/gmp-
$(LIBGMP_VERSION
): $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
46 tar -C
$(WORK
) -xvjf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
47 touch
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
49 $(WORK
)/build-libgmp
: $(WORK
)/gmp-
$(LIBGMP_VERSION
)
50 mkdir
-p
$(WORK
)/build-libgmp
51 touch
$(WORK
)/build-libgmp
53 $(CROSSTOOLS
)/lib
/libgmp.so
: $(WORK
)/build-libgmp
54 cd
$(WORK
)/build-libgmp
&& \
55 unset CFLAGS
&& unset CXXFLAGS
&& \
56 CPPFLAGS
=-fexceptions \
57 $(WORK
)/gmp-
$(LIBGMP_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-cxx
&& \
58 make
&& make
install || exit
1
59 touch
$(CROSSTOOLS
)/lib
/libgmp.so
61 libgmp
: $(CROSSTOOLS
)/lib
/libgmp.so
64 rm -vrf
$(WORK
)/build-libgmp
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
66 libgmp-distclean
: libgmp-clean
67 rm -vrf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
71 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
:
72 wget
-P
$(WORK
) -c http
://ftp.gnu.org
/gnu
/mpfr
/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
74 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
): $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
75 tar -C
$(WORK
) -xvjf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
76 touch
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
78 $(WORK
)/build-libmpfr
: $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
79 mkdir
-p
$(WORK
)/build-libmpfr
80 touch
$(WORK
)/build-libmpfr
82 $(CROSSTOOLS
)/lib
/libmpfr.so
: $(WORK
)/build-libmpfr
83 cd
$(WORK
)/build-libmpfr
&& \
84 unset CFLAGS
&& unset CXXFLAGS
&& \
85 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
86 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-shared
--with-gmp
=$(CROSSTOOLS
) && \
87 make
&& make
install || exit
1
88 touch
$(CROSSTOOLS
)/lib
/libmpfr.so
90 libmpfr
: $(CROSSTOOLS
)/lib
/libmpfr.so
93 rm -vrf
$(WORK
)/build-libmpfr
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
95 libmpfr-distclean
: libmpfr-clean
96 rm -vrf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
100 $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
:
101 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/binutils
/binutils-
$(BINUTILS_VERSION
).
tar.bz2
103 $(WORK
)/binutils-
$(BINUTILS_VERSION
): $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
$(WORK
)/binutils-
$(BINUTILS_VERSION
)-branch_update-5.patch
104 tar -C
$(WORK
) -xvjf
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
105 cd
$(WORK
)/binutils-
$(BINUTILS_VERSION
) && \
106 patch
-p1
-i
$(WORK
)/binutils-
$(BINUTILS_VERSION
)-branch_update-5.patch
107 sed
-i
'/^SUBDIRS/s/doc//' $(WORK
)/binutils-
$(BINUTILS_VERSION
)/*/Makefile.in
108 touch
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
110 $(WORK
)/build-binutils
: $(WORK
)/binutils-
$(BINUTILS_VERSION
)
111 mkdir
-p
$(WORK
)/build-binutils
112 touch
$(WORK
)/build-binutils-build
114 $(CLFS
)/usr
/include/libiberty.h
: $(WORK
)/build-binutils
115 cd
$(WORK
)/build-binutils
&& \
116 unset CFLAGS
&& unset CXXFLAGS
&& \
118 $(WORK
)/binutils-
$(BINUTILS_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
119 --host
=$(HOST
) --target
=$(TARGET
) --with-sysroot
=$(CLFS
) \
120 --disable-nls
--enable-shared
--disable-multilib
--nfp
&& \
121 make configure-host
&& make
&& make
install || exit
1
122 cp
-va
$(WORK
)/binutils-
$(BINUTILS_VERSION
)/include/libiberty.h
$(CLFS
)/usr
/include
123 touch
$(CLFS
)/usr
/include/libiberty.h
125 binutils
: linux-headers
$(CLFS
)/usr
/include/libiberty.h
128 rm -vrf
$(WORK
)/build-binutils
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
130 binutils-distclean
: binutils-clean
131 rm -f
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
135 $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
:
136 wget
-P
$(WORK
) -c ftp
://sources.redhat.com
/pub
/gcc
/releases
/gcc-
$(GCC_VERSION
)/gcc-
$(GCC_VERSION
).
tar.bz2
138 $(WORK
)/gcc-
$(GCC_VERSION
): $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
139 tar -C
$(WORK
) -xvjf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
140 touch
$(WORK
)/gcc-
$(GCC_VERSION
)
142 $(WORK
)/build-gcc-static
: $(WORK
)/gcc-
$(GCC_VERSION
)
143 mkdir
-p
$(WORK
)/build-gcc-static
144 touch
$(WORK
)/build-gcc-static
146 $(CROSSTOOLS
)/lib
/gcc
: $(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
147 cd
$(WORK
)/build-gcc-static
&& \
148 unset CFLAGS
&& unset CXXFLAGS
&& \
149 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
150 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
151 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
152 --disable-multilib
--disable-nls \
153 --without-headers
--enable-__cxa_atexit
--enable-symvers
=gnu
--disable-decimal-float \
154 --nfp
--without-fp
--with-softfloat-support
=internal \
155 --disable-libgomp
--disable-libmudflap
--disable-libssp \
156 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) \
157 --disable-shared
--disable-threads
--enable-languages
=c
&& \
158 make
&& make
install || exit
1
159 touch
$(CROSSTOOLS
)/lib
/gcc
/
161 gcc-static
: linux-headers libgmp libmpfr binutils
$(CROSSTOOLS
)/lib
/gcc
164 rm -vrf
$(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
166 gcc-static-distclean
: gcc-static-clean
167 rm -vf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
170 $(WORK
)/uClibc-
$(UCLIBC_VERSION
).
tar.xz
:
171 wget
-P
$(WORK
) -c http
://www.uclibc.org
/downloads
/uClibc-
$(UCLIBC_VERSION
).
tar.xz
173 $(WORK
)/uClibc-
$(UCLIBC_VERSION
): $(WORK
)/uClibc-
$(UCLIBC_VERSION
).
tar.xz
174 tar -C
$(WORK
) -xvJf
$(WORK
)/uClibc-
$(UCLIBC_VERSION
).
tar.xz
175 touch
$(WORK
)/uClibc-
$(UCLIBC_VERSION
)
177 $(CLFS
)/usr
/include/bits
/uClibc_config.h
: $(WORK
)/uClibc-
$(UCLIBC_VERSION
)
178 mkdir
-p
$(WORK
)/build-uClibc
179 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
180 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& unset CXX
&& \
181 cd
$(WORK
)/uClibc-
$(UCLIBC_VERSION
) && \
182 cp
$(WORK
)/uclibc-
$(UCLIBC_VERSION
).config .config
&& \
184 make CC
="$(TARGET)-gcc" KERNEL_HEADERS
="$(CLFS)/usr/include" RANLIB
="$(TARGET)-ranlib" STRIPTOOL
="$(TARGET)-strip" LD
="$(TARGET)-ld" AR
="$(TARGET)-ar" AS
="$(TARGET)-as" && \
185 make DESTDIR
="$(CLFS)" CC
="$(TARGET)-gcc" KERNEL_HEADERS
="$(CLFS)/usr/include" RANLIB
="$(TARGET)-ranlib" STRIPTOOL
="$(TARGET)-strip" LD
="$(TARGET)-ld" AR
="$(TARGET)-ar" AS
="$(TARGET)-as" HOSTCC
="gcc" install && \
186 make DESTDIR
="$(CLFS)" CC
="$(TARGET)-gcc" KERNEL_HEADERS
="$(CLFS)/usr/include" RANLIB
="$(TARGET)-ranlib" STRIPTOOL
="$(TARGET)-strip" LD
="$(TARGET)-ld" AR
="$(TARGET)-ar" AS
="$(TARGET)-as" HOSTCC
="gcc" install_dev || exit
1
187 touch
$(CLFS
)/usr
/include/bits
/uClibc_config.h
189 uclibc
: binutils gcc-static
$(CLFS
)/usr
/include/bits
/uClibc_config.h
192 rm -vrf
$(WORK
)/build-uClibc
$(WORK
)/uClibc-
$(GLIBC_VERSION
)
194 uclibc-distclean
: uclibc-clean
195 rm -vf
$(WORK
)/uClibc-
$(UCLIBC_VERSION
).
tar.xz
199 $(WORK
)/build-gcc-final
: $(WORK
)/gcc-
$(GCC_VERSION
)
200 mkdir
-p
$(WORK
)/build-gcc-final
201 touch
$(WORK
)/build-gcc-final
203 $(CROSSTOOLS
)/$(TARGET
)/lib
/libgomp.a
: $(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
204 cd
$(WORK
)/build-gcc-final
&& \
205 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
206 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
207 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
208 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
209 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
210 --with-fp
=no
--with-headers
=$(CLFS
)/usr
/include \
211 --disable-multilib
--with-sysroot
=$(CLFS
) --disable-nls \
212 --enable-languages
=c
,c
++ --enable-__cxa_atexit \
213 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) \
214 --enable-c99
--enable-long-long
--enable-threads
=posix
&& \
215 make AS_FOR_TARGET
="$(TARGET)-as" LD_FOR_TARGET
="$(TARGET)-ld" && \
216 make
install || exit
1
217 touch
$(CLFS
)/lib
/gcc
$(CROSSTOOLS
)/lib
/gcc
/$(TARGET
)/$(GCC_VERSION
)/include/omp.h
219 gcc-final
: libgmp libmpfr uclibc
$(CROSSTOOLS
)/$(TARGET
)/lib
/libgomp.a
222 rm -vrf
$(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
224 gcc-final-distclean
: gcc-final-clean
225 rm -vf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
229 $(WORK
)/test: $(WORK
)/test.c
230 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
231 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
232 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
233 $(TARGET
)-gcc
-Wall
-o
$(WORK
)/test $(WORK
)/test.c
234 [ "`file -b $(WORK)/test | cut -d',' -f2 | sed 's| ||g'`" = "ARM" ] || exit
1
237 test: gcc-final
$(WORK
)/test
244 test-distclean
: test-clean