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
12 rm -rf
$(CROSSTOOLS
) $(CLFS
)
14 distclean: clean linux-headers-distclean libgmp-distclean libmpfr-distclean libmpc-distclean binutils-distclean gcc-static-distclean glibc-distclean gcc-final-distclean test-distclean
18 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
:
19 wget
-P
$(WORK
) -c https
://www.kernel.org
/pub
/linux
/kernel
/v4.x
/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
21 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
): $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
22 tar -C
$(WORK
) -xf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
23 touch
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
25 $(CLFS
)/usr
/include/asm
: $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
26 mkdir
-p
$(CLFS
)/usr
/include
27 cd
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
) && \
29 make ARCH
=arm headers_check
&& \
30 make ARCH
=arm INSTALL_HDR_PATH
=$(CLFS
)/usr headers_install
31 touch
$(CLFS
)/usr
/include/asm
33 linux-headers
: $(CLFS
)/usr
/include/asm
36 rm -rf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
38 linux-headers-distclean
: linux-headers-clean
39 rm -f
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
43 $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
:
44 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/gmp
/gmp-
$(LIBGMP_VERSION
).
tar.bz2
46 $(WORK
)/gmp-
$(LIBGMP_VERSION
): $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
47 tar -C
$(WORK
) -xjf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
48 touch
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
50 $(WORK
)/build-libgmp
: $(WORK
)/gmp-
$(LIBGMP_VERSION
)
51 mkdir
-p
$(WORK
)/build-libgmp
52 touch
$(WORK
)/build-libgmp
54 $(CROSSTOOLS
)/lib
/libgmp.so
: $(WORK
)/build-libgmp
55 cd
$(WORK
)/build-libgmp
&& \
56 unset CFLAGS
&& unset CXXFLAGS
&& \
57 CPPFLAGS
=-fexceptions \
58 $(WORK
)/gmp-
$(LIBGMP_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-cxx
&& \
59 make
$(MJ
) && make
install || exit
1
60 touch
$(CROSSTOOLS
)/lib
/libgmp.so
62 libgmp
: $(CROSSTOOLS
)/lib
/libgmp.so
65 rm -rf
$(WORK
)/build-libgmp
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
67 libgmp-distclean
: libgmp-clean
68 rm -rf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
72 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
:
73 wget
-P
$(WORK
) -c http
://ftp.gnu.org
/gnu
/mpfr
/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
75 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
): $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
76 tar -C
$(WORK
) -xjf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
77 touch
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
79 $(WORK
)/build-libmpfr
: $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
80 mkdir
-p
$(WORK
)/build-libmpfr
81 touch
$(WORK
)/build-libmpfr
83 $(CROSSTOOLS
)/lib
/libmpfr.so
: $(WORK
)/build-libmpfr
84 cd
$(WORK
)/build-libmpfr
&& \
85 unset CFLAGS
&& unset CXXFLAGS
&& \
86 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
87 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-shared
--with-gmp
=$(CROSSTOOLS
) && \
88 make
$(MJ
) && make
install || exit
1
89 touch
$(CROSSTOOLS
)/lib
/libmpfr.so
91 libmpfr
: $(CROSSTOOLS
)/lib
/libmpfr.so
94 rm -rf
$(WORK
)/build-libmpfr
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
96 libmpfr-distclean
: libmpfr-clean
97 rm -rf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
101 $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
:
102 wget
-P
$(WORK
) -c http
://www.multiprecision.org
/mpc
/download
/mpc-
$(LIBMPC_VERSION
).
tar.gz
104 $(WORK
)/mpc-
$(LIBMPC_VERSION
): $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
105 tar -C
$(WORK
) -xzf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
106 touch
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
108 $(WORK
)/build-libmpc
: $(WORK
)/mpc-
$(LIBMPC_VERSION
)
109 mkdir
-p
$(WORK
)/build-libmpc
110 touch
$(WORK
)/build-libmpc
112 $(CROSSTOOLS
)/lib
/libmpc.so
: $(WORK
)/build-libmpc
113 cd
$(WORK
)/build-libmpc
&& \
114 unset CFLAGS
&& unset CXXFLAGS
&& \
115 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
116 $(WORK
)/mpc-
$(LIBMPC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
117 --enable-shared
--with-gmp
=$(CROSSTOOLS
) --with-mpfr
=$(CROSSTOOLS
) && \
118 make
$(MJ
) && make
install || exit
1
119 touch
$(CROSSTOOLS
)/lib
/libmpc.so
121 libmpc
: $(CROSSTOOLS
)/lib
/libmpc.so
124 rm -rf
$(WORK
)/build-libmpc
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
126 libmpc-distclean
: libmpc-clean
127 rm -rf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.bz2
131 $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
:
132 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/binutils
/binutils-
$(BINUTILS_VERSION
).
tar.bz2
134 $(WORK
)/binutils-
$(BINUTILS_VERSION
): $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
135 tar -C
$(WORK
) -xf
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
136 sed
-i
'/^SUBDIRS/s/doc//' $(WORK
)/binutils-
$(BINUTILS_VERSION
)/*/Makefile.in
137 touch
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
139 $(WORK
)/build-binutils
: $(WORK
)/binutils-
$(BINUTILS_VERSION
)
140 mkdir
-p
$(WORK
)/build-binutils
141 touch
$(WORK
)/build-binutils
143 $(CLFS
)/usr
/include/libiberty.h
: $(WORK
)/build-binutils
144 cd
$(WORK
)/build-binutils
&& \
145 unset CFLAGS
&& unset CXXFLAGS
&& \
147 $(WORK
)/binutils-
$(BINUTILS_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
148 --host
=$(HOST
) --target
=$(TARGET
) --with-sysroot
=$(CLFS
) \
149 --disable-nls
--enable-shared
--disable-multilib
--enable-interwork
&& \
150 make configure-host
&& make
$(MJ
) && make
install || exit
1
151 cp
-va
$(WORK
)/binutils-
$(BINUTILS_VERSION
)/include/libiberty.h
$(CLFS
)/usr
/include
152 touch
$(CLFS
)/usr
/include/libiberty.h
154 binutils
: linux-headers
$(CLFS
)/usr
/include/libiberty.h
157 rm -rf
$(WORK
)/build-binutils
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
159 binutils-distclean
: binutils-clean
160 rm -f
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
164 $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
:
165 wget
-P
$(WORK
) -c ftp
://gcc.gnu.org
/pub
/gcc
/releases
/gcc-
$(GCC_VERSION
)/gcc-
$(GCC_VERSION
).
tar.bz2
167 $(WORK
)/gcc-
$(GCC_VERSION
): $(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
168 tar -C
$(WORK
) -xjf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
169 touch
$(WORK
)/gcc-
$(GCC_VERSION
)
171 $(WORK
)/build-gcc-static
: $(WORK
)/gcc-
$(GCC_VERSION
)
172 mkdir
-p
$(WORK
)/build-gcc-static
173 touch
$(WORK
)/build-gcc-static
175 $(CROSSTOOLS
)/lib
/gcc
: $(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
176 cd
$(WORK
)/build-gcc-static
&& \
177 unset CFLAGS
&& unset CXXFLAGS
&& \
178 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
179 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
180 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
181 --disable-multilib
--disable-nls \
182 --without-headers
--enable-__cxa_atexit
--enable-symvers
=gnu
--disable-decimal-float \
183 --disable-libgomp
--disable-libmudflap
--disable-libssp \
184 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) \
185 --disable-shared
--disable-threads
--enable-languages
=c
--disable-libquadmath \
186 --with-abi
=$(ABI
) --with-mode
=$(MODE
) --with-float
=$(FLOAT
) && \
187 make
$(MJ
) all-gcc all-target-libgcc
&& make install-gcc install-target-libgcc || exit
1
188 touch
$(CROSSTOOLS
)/lib
/gcc
190 gcc-static
: linux-headers libgmp libmpfr binutils
$(CROSSTOOLS
)/lib
/gcc
193 rm -rf
$(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
195 gcc-static-distclean
: gcc-static-clean
196 rm -f
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
200 $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
:
201 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/glibc
/glibc-
$(GLIBC_VERSION
).
tar.bz2
203 $(WORK
)/glibc-
$(GLIBC_VERSION
): $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
204 tar -C
$(WORK
) -xvjf
$(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
205 touch
$(WORK
)/glibc-
$(GLIBC_VERSION
)
207 $(WORK
)/build-glibc
: $(WORK
)/glibc-
$(GLIBC_VERSION
)
208 mkdir
-p
$(WORK
)/build-glibc
209 touch
$(WORK
)/build-glibc
211 $(CLFS
)/usr
/lib
/libc.so
: $(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
212 cd
$(WORK
)/build-glibc
&& \
213 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
214 echo
"libc_cv_forced_unwind=yes" > config.cache
&& \
215 echo
"install_root=$(CLFS)" > configparms
&& \
216 unset CFLAGS
&& unset CXXFLAGS
&& \
217 BUILD_CC
="gcc" CC
="$(TARGET)-gcc" AR
="$(TARGET)-ar" \
218 RANLIB
="$(TARGET)-ranlib" \
219 $(WORK
)/glibc-
$(GLIBC_VERSION
)/configure
--prefix=/usr \
220 --libexecdir
=/usr
/lib
/glibc
--host
=$(TARGET
) --build
=$(HOST
) \
221 --disable-profile
--enable-add-ons
--with-tls
--enable-kernel
=2.6.0 \
222 --with-__thread
--with-binutils
=$(CROSSTOOLS
)/bin
--with-fp
=yes
--enable-obsolete-rpc \
223 --with-headers
=$(CLFS
)/usr
/include --cache-file
=config.cache
&& \
224 make
$(MJ
) && make
install || exit
1
225 touch
$(CLFS
)/usr
/lib
/libc.so
227 glibc
: binutils gcc-static
$(CLFS
)/usr
/lib
/libc.so
230 rm -rf
$(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
232 glibc-distclean
: glibc-clean
233 rm -f
$(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
$(WORK
)/glibc-ports-
$(GLIBC_VERSION
).
tar.bz2
237 $(WORK
)/build-gcc-final
: $(WORK
)/gcc-
$(GCC_VERSION
)
238 mkdir
-p
$(WORK
)/build-gcc-final
239 touch
$(WORK
)/build-gcc-final
241 $(CLFS
)/lib
/gcc
: $(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
242 cd
$(WORK
)/build-gcc-final
&& \
243 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
244 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
245 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
246 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
247 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
248 --with-headers
=$(CLFS
)/usr
/include --enable-shared \
249 --disable-multilib
--with-sysroot
=$(CLFS
) --disable-nls \
250 --enable-languages
=c
,c
++ --enable-__cxa_atexit \
251 --enable-threads
=posix
--disable-libstdcxx-pch
--disable-bootstrap \
252 --disable-libgomp
--disable-libssp
--disable-libmudflap \
253 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) \
254 --with-abi
=$(ABI
) --with-mode
=$(MODE
) --with-float
=$(FLOAT
) && \
255 make
$(MJ
) AS_FOR_TARGET
="$(TARGET)-as" LD_FOR_TARGET
="$(TARGET)-ld" && \
256 make
install || exit
1
257 cp
-va
$(WORK
)/build-gcc-final
/$(TARGET
)/libstdc
++-v3
/src
/.libs
/libstdc
++.so
* $(CLFS
)/usr
/lib
258 cp
-va
$(WORK
)/build-gcc-final
/$(TARGET
)/libgcc
/libgcc_s.so
* $(CLFS
)/usr
/lib
259 touch
$(CLFS
)/lib
/gcc
261 gcc-final
: libgmp libmpfr glibc
$(CLFS
)/lib
/gcc
264 rm -rf
$(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
266 gcc-final-distclean
: gcc-final-clean
267 rm -f
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
270 # SETUP FOR PKGUTILS-CROSS
271 $(CLFS
)/var
/lib
/pkg
/db
:
272 install -d
-m
0755 $(CLFS
)/var
/lib
/pkg
273 touch
$(CLFS
)/var
/lib
/pkg
/db
275 setup
: $(CLFS
)/var
/lib
/pkg
/db
279 $(WORK
)/test: $(WORK
)/test.c
280 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
281 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
282 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
283 $(TARGET
)-gcc
-Wall
-o
$(WORK
)/test $(WORK
)/test.c
284 [ "`file -b $(WORK)/test | cut -d',' -f2 | sed 's| ||g'`" = "ARM" ] || exit
1
287 test: gcc-final
$(WORK
)/test
292 test-distclean
: test-clean