7 .PHONY
: all clean distclean
9 all: linux-headers libgmp libmpfr libmpc binutils gcc-static glibc gcc-final setup
test
11 clean: linux-headers-clean libgmp-clean libmpfr-clean libmpc-clean binutils-clean gcc-static-clean glibc-clean gcc-final-clean test-clean
13 distclean: clean linux-headers-distclean libgmp-distclean libmpfr-distclean libmpc-distclean binutils-distclean gcc-static-distclean glibc-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
/v3.0
/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
$(WORK
)/libmpfr-3.1
.1-p2.patch.gz
75 tar -C
$(WORK
) -xvjf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
76 cd
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
) && \
77 gunzip
-c
$(WORK
)/libmpfr-
$(LIBMPFR_VERSION
)-p2.patch.gz | patch
-p1
78 touch
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
80 $(WORK
)/build-libmpfr
: $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
81 mkdir
-p
$(WORK
)/build-libmpfr
82 touch
$(WORK
)/build-libmpfr
84 $(CROSSTOOLS
)/lib
/libmpfr.so
: $(WORK
)/build-libmpfr
85 cd
$(WORK
)/build-libmpfr
&& \
86 unset CFLAGS
&& unset CXXFLAGS
&& \
87 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
88 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-shared
--with-gmp
=$(CROSSTOOLS
) && \
89 make
&& make
install || exit
1
90 touch
$(CROSSTOOLS
)/lib
/libmpfr.so
92 libmpfr
: $(CROSSTOOLS
)/lib
/libmpfr.so
95 rm -vrf
$(WORK
)/build-libmpfr
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
97 libmpfr-distclean
: libmpfr-clean
98 rm -vrf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
102 $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
:
103 wget
-P
$(WORK
) -c http
://www.multiprecision.org
/mpc
/download
/mpc-
$(LIBMPC_VERSION
).
tar.gz
105 $(WORK
)/mpc-
$(LIBMPC_VERSION
): $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
106 tar -C
$(WORK
) -xvzf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
107 touch
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
109 $(WORK
)/build-libmpc
: $(WORK
)/mpc-
$(LIBMPC_VERSION
)
110 mkdir
-p
$(WORK
)/build-libmpc
111 touch
$(WORK
)/build-libmpc
113 $(CROSSTOOLS
)/lib
/libmpc.so
: $(WORK
)/build-libmpc
114 cd
$(WORK
)/build-libmpc
&& \
115 unset CFLAGS
&& unset CXXFLAGS
&& \
116 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
117 $(WORK
)/mpc-
$(LIBMPC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
118 --enable-shared
--with-gmp
=$(CROSSTOOLS
) --with-mpfr
=$(CROSSTOOLS
) && \
119 make
&& make
install || exit
1
120 touch
$(CROSSTOOLS
)/lib
/libmpc.so
122 libmpc
: $(CROSSTOOLS
)/lib
/libmpc.so
125 rm -vrf
$(WORK
)/build-libmpc
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
127 libmpc-distclean
: libmpc-clean
128 rm -vrf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.bz2
132 $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
:
133 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/binutils
/binutils-
$(BINUTILS_VERSION
).
tar.bz2
135 $(WORK
)/binutils-
$(BINUTILS_VERSION
): $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
136 tar -C
$(WORK
) -xvjf
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
137 sed
-i
'/^SUBDIRS/s/doc//' $(WORK
)/binutils-
$(BINUTILS_VERSION
)/*/Makefile.in
138 touch
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
140 $(WORK
)/build-binutils
: $(WORK
)/binutils-
$(BINUTILS_VERSION
)
141 mkdir
-p
$(WORK
)/build-binutils
142 touch
$(WORK
)/build-binutils-build
144 $(CLFS
)/usr
/include/libiberty.h
: $(WORK
)/build-binutils
145 cd
$(WORK
)/build-binutils
&& \
146 unset CFLAGS
&& unset CXXFLAGS
&& \
148 $(WORK
)/binutils-
$(BINUTILS_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
149 --host
=$(HOST
) --target
=$(TARGET
) --with-sysroot
=$(CLFS
) \
150 --disable-nls
--enable-shared
--disable-multilib
--enable-interwork
&& \
151 make configure-host
&& make
&& make
install || exit
1
152 cp
-va
$(WORK
)/binutils-
$(BINUTILS_VERSION
)/include/libiberty.h
$(CLFS
)/usr
/include
153 touch
$(CLFS
)/usr
/include/libiberty.h
155 binutils
: linux-headers
$(CLFS
)/usr
/include/libiberty.h
158 rm -vrf
$(WORK
)/build-binutils
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
160 binutils-distclean
: binutils-clean
161 rm -f
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
165 $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
:
166 wget
-P
$(WORK
) -c ftp
://sources.redhat.com
/pub
/gcc
/releases
/gcc-
$(GCC_VERSION
)/gcc-
$(GCC_VERSION
).
tar.bz2
168 $(WORK
)/gcc-
$(GCC_VERSION
): $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
169 tar -C
$(WORK
) -xvjf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
170 cd
$(WORK
)/gcc-
$(GCC_VERSION
) && \
171 patch
-p1
-i
$(WORK
)/gcc-
$(GCC_VERSION
)-gnueabihf.patch
172 touch
$(WORK
)/gcc-
$(GCC_VERSION
)
174 $(WORK
)/build-gcc-static
: $(WORK
)/gcc-
$(GCC_VERSION
)
175 mkdir
-p
$(WORK
)/build-gcc-static
176 touch
$(WORK
)/build-gcc-static
178 $(CROSSTOOLS
)/lib
/gcc
: $(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
179 cd
$(WORK
)/build-gcc-static
&& \
180 unset CFLAGS
&& unset CXXFLAGS
&& \
181 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
182 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
183 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
184 --disable-multilib
--disable-nls \
185 --without-headers
--enable-__cxa_atexit
--enable-symvers
=gnu
--disable-decimal-float \
186 --disable-libgomp
--disable-libmudflap
--disable-libssp \
187 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) \
188 --disable-shared
--disable-threads
--enable-languages
=c
--disable-libquadmath \
189 --with-abi
=$(ABI
) --with-arch
=$(ARCH
) --with-mode
=$(MODE
) --with-float
=$(FLOAT
) --with-fpu
=$(FPU
) && \
190 make all-gcc all-target-libgcc
&& make install-gcc install-target-libgcc || exit
1
191 touch
$(CROSSTOOLS
)/lib
/gcc
193 gcc-static
: linux-headers libgmp libmpfr binutils
$(CROSSTOOLS
)/lib
/gcc
196 rm -vrf
$(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
198 gcc-static-distclean
: gcc-static-clean
199 rm -vf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
203 $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
:
204 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/glibc
/glibc-
$(GLIBC_VERSION
).
tar.bz2
206 $(WORK
)/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
:
207 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/glibc
/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
209 $(WORK
)/glibc-
$(GLIBC_VERSION
): $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
$(WORK
)/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
210 tar -C
$(WORK
) -xvjf
$(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
211 cd
$(WORK
)/glibc-
$(GLIBC_VERSION
) && \
212 tar xvjf
$(WORK
)/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
&& \
213 mv glibc-ports-
$(GLIBC_VERSION
) ports
&& \
214 sed
-e
's/-lgcc_eh//g' -e
's/-lgcc_s//g' -i Makeconfig
215 touch
$(WORK
)/glibc-
$(GLIBC_VERSION
)
217 $(WORK
)/build-glibc
: $(WORK
)/glibc-
$(GLIBC_VERSION
)
218 mkdir
-p
$(WORK
)/build-glibc
219 touch
$(WORK
)/build-glibc
221 $(CLFS
)/usr
/lib
/libc.so
: $(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
222 cd
$(WORK
)/build-glibc
&& \
223 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
224 echo
"libc_cv_forced_unwind=yes" > config.cache
&& \
225 echo
"libc_cv_c_cleanup=yes" >> config.cache
&& \
226 echo
"libc_cv_gnu89_inline=yes" >> config.cache
&& \
227 echo
"libc_cv_ctors_header=yes" >> config.cache
&& \
228 echo
"install_root=$(CLFS)" > configparms
&& \
229 unset CFLAGS
&& unset CXXFLAGS
&& \
230 BUILD_CC
="gcc" CC
="$(TARGET)-gcc" AR
="$(TARGET)-ar" \
231 RANLIB
="$(TARGET)-ranlib" \
232 $(WORK
)/glibc-
$(GLIBC_VERSION
)/configure
--prefix=/usr \
233 --libexecdir
=/usr
/lib
/glibc
--host
=$(TARGET
) --build
=$(HOST
) \
234 --disable-profile
--enable-add-ons
--with-tls
--enable-kernel
=2.6.0 \
235 --with-__thread
--with-binutils
=$(CROSSTOOLS
)/bin
--with-fp
=yes \
236 --with-headers
=$(CLFS
)/usr
/include --cache-file
=config.cache
&& \
237 make
&& make
install || exit
1
238 touch
$(CLFS
)/usr
/lib
/libc.so
240 glibc
: binutils gcc-static
$(CLFS
)/usr
/lib
/libc.so
243 rm -vrf
$(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
245 glibc-distclean
: glibc-clean
246 rm -vf
$(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
$(WORK
)/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
250 $(WORK
)/build-gcc-final
: $(WORK
)/gcc-
$(GCC_VERSION
)
251 mkdir
-p
$(WORK
)/build-gcc-final
252 touch
$(WORK
)/build-gcc-final
254 $(CLFS
)/lib
/gcc
: $(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
255 cd
$(WORK
)/build-gcc-final
&& \
256 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
257 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
258 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
259 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
260 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
261 --with-headers
=$(CLFS
)/usr
/include --enable-shared \
262 --disable-multilib
--with-sysroot
=$(CLFS
) --disable-nls \
263 --enable-languages
=c
,c
++ --enable-__cxa_atexit \
264 --enable-threads
=posix
--disable-libstdcxx-pch
--disable-bootstrap
--disable-libgomp \
265 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) \
266 --with-abi
=$(ABI
) --with-arch
=$(ARCH
) --with-mode
=$(MODE
) --with-float
=$(FLOAT
) --with-fpu
=$(FPU
) && \
267 make AS_FOR_TARGET
="$(TARGET)-as" LD_FOR_TARGET
="$(TARGET)-ld" && \
268 make
install || exit
1
269 touch
$(CLFS
)/lib
/gcc
271 gcc-final
: libgmp libmpfr glibc
$(CLFS
)/lib
/gcc
274 rm -vrf
$(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
276 gcc-final-distclean
: gcc-final-clean
277 rm -vf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
281 $(CLFS
)/var
/lib
/pkg
/db
:
282 install -d
-m
0755 $(CLFS
)/var
/lib
/pkg
283 touch
$(CLFS
)/var
/lib
/pkg
/db
285 setup
: $(CLFS
)/var
/lib
/pkg
/db
288 $(WORK
)/test: $(WORK
)/test.c
289 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
290 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
291 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
292 $(TARGET
)-gcc
-Wall
-o
$(WORK
)/test $(WORK
)/test.c
293 [ "`file -b $(WORK)/test | cut -d',' -f2 | sed 's| ||g'`" = "ARM" ] || exit
1
296 test: gcc-final
$(WORK
)/test
301 test-distclean
: test-clean