7 .PHONY
: all clean distclean
9 all: filesystem 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 filesystem-clean linux-headers-distclean libgmp-distclean libmpfr-distclean libmpc-distclean binutils-distclean gcc-static-distclean glibc-distclean gcc-final-distclean test-distclean
17 # Prepare the filessytem
19 install -d
$(CLFS
)/lib
20 ln
-s lib
$(CLFS
)/lib64
21 install -d
$(CLFS
)/usr
/lib
22 ln
-s lib
$(CLFS
)/usr
/lib64
25 filesystem
: $(CLFS
)/lib
28 rm -rf
$(CLFS
)/lib
* $(CLFS
)/usr
/lib
*
32 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
:
33 wget
-P
$(WORK
) -c https
://www.kernel.org
/pub
/linux
/kernel
/v4.x
/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
35 $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
): $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
36 tar -C
$(WORK
) -xf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
37 touch
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
39 $(CLFS
)/usr
/include/asm
: $(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
40 mkdir
-p
$(CLFS
)/usr
/include
41 cd
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
) && \
43 make ARCH
=arm64 headers_check
&& \
44 make ARCH
=arm64 INSTALL_HDR_PATH
=$(CLFS
)/usr headers_install
45 touch
$(CLFS
)/usr
/include/asm
47 linux-headers
: $(CLFS
)/usr
/include/asm
50 rm -rf
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
)
52 linux-headers-distclean
: linux-headers-clean
53 rm -f
$(WORK
)/linux-
$(KERNEL_HEADERS_VERSION
).
tar.xz
57 $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
:
58 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/gmp
/gmp-
$(LIBGMP_VERSION
).
tar.bz2
60 $(WORK
)/gmp-
$(LIBGMP_VERSION
): $(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
61 tar -C
$(WORK
) -xjf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
62 touch
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
64 $(WORK
)/build-libgmp
: $(WORK
)/gmp-
$(LIBGMP_VERSION
)
65 mkdir
-p
$(WORK
)/build-libgmp
66 touch
$(WORK
)/build-libgmp
68 $(CROSSTOOLS
)/lib
/libgmp.so
: $(WORK
)/build-libgmp
69 cd
$(WORK
)/build-libgmp
&& \
70 unset CFLAGS
&& unset CXXFLAGS
&& \
71 CPPFLAGS
=-fexceptions \
72 $(WORK
)/gmp-
$(LIBGMP_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-cxx
&& \
73 make
$(MJ
) && make
install || exit
1
74 touch
$(CROSSTOOLS
)/lib
/libgmp.so
76 libgmp
: $(CROSSTOOLS
)/lib
/libgmp.so
79 rm -rf
$(WORK
)/build-libgmp
$(WORK
)/gmp-
$(LIBGMP_VERSION
)
81 libgmp-distclean
: libgmp-clean
82 rm -rf
$(WORK
)/gmp-
$(LIBGMP_VERSION
).
tar.bz2
86 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
:
87 wget
-P
$(WORK
) -c http
://ftp.gnu.org
/gnu
/mpfr
/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
89 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
): $(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
90 tar -C
$(WORK
) -xjf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
91 touch
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
93 $(WORK
)/build-libmpfr
: $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
94 mkdir
-p
$(WORK
)/build-libmpfr
95 touch
$(WORK
)/build-libmpfr
97 $(CROSSTOOLS
)/lib
/libmpfr.so
: $(WORK
)/build-libmpfr
98 cd
$(WORK
)/build-libmpfr
&& \
99 unset CFLAGS
&& unset CXXFLAGS
&& \
100 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
101 $(WORK
)/mpfr-
$(LIBMPFR_VERSION
)/configure
--prefix=$(CROSSTOOLS
) --enable-shared
--with-gmp
=$(CROSSTOOLS
) && \
102 make
$(MJ
) && make
install || exit
1
103 touch
$(CROSSTOOLS
)/lib
/libmpfr.so
105 libmpfr
: $(CROSSTOOLS
)/lib
/libmpfr.so
108 rm -rf
$(WORK
)/build-libmpfr
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
)
110 libmpfr-distclean
: libmpfr-clean
111 rm -rf
$(WORK
)/mpfr-
$(LIBMPFR_VERSION
).
tar.bz2
115 $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
:
116 wget
-P
$(WORK
) -c https
://ftp.gnu.org
/gnu
/mpc
/mpc-
$(LIBMPC_VERSION
).
tar.gz
118 $(WORK
)/mpc-
$(LIBMPC_VERSION
): $(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
119 tar -C
$(WORK
) -xzf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.gz
120 touch
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
122 $(WORK
)/build-libmpc
: $(WORK
)/mpc-
$(LIBMPC_VERSION
)
123 mkdir
-p
$(WORK
)/build-libmpc
124 touch
$(WORK
)/build-libmpc
126 $(CROSSTOOLS
)/lib
/libmpc.so
: $(WORK
)/build-libmpc
127 cd
$(WORK
)/build-libmpc
&& \
128 unset CFLAGS
&& unset CXXFLAGS
&& \
129 LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" && \
130 $(WORK
)/mpc-
$(LIBMPC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
131 --enable-shared
--with-gmp
=$(CROSSTOOLS
) --with-mpfr
=$(CROSSTOOLS
) && \
132 make
$(MJ
) && make
install || exit
1
133 touch
$(CROSSTOOLS
)/lib
/libmpc.so
135 libmpc
: $(CROSSTOOLS
)/lib
/libmpc.so
138 rm -rf
$(WORK
)/build-libmpc
$(WORK
)/mpc-
$(LIBMPC_VERSION
)
140 libmpc-distclean
: libmpc-clean
141 rm -rf
$(WORK
)/mpc-
$(LIBMPC_VERSION
).
tar.bz2
145 $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
:
146 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/binutils
/binutils-
$(BINUTILS_VERSION
).
tar.bz2
148 $(WORK
)/binutils-
$(BINUTILS_VERSION
): $(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
149 tar -C
$(WORK
) -xf
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
150 sed
-i
'/^SUBDIRS/s/doc//' $(WORK
)/binutils-
$(BINUTILS_VERSION
)/*/Makefile.in
151 touch
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
153 $(WORK
)/build-binutils
: $(WORK
)/binutils-
$(BINUTILS_VERSION
)
154 mkdir
-p
$(WORK
)/build-binutils
155 touch
$(WORK
)/build-binutils
157 $(CLFS
)/usr
/include/libiberty.h
: $(WORK
)/build-binutils
158 cd
$(WORK
)/build-binutils
&& \
159 unset CFLAGS
&& unset CXXFLAGS
&& \
161 $(WORK
)/binutils-
$(BINUTILS_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
162 --host
=$(HOST
) --target
=$(TARGET
) --with-sysroot
=$(CLFS
) \
163 --disable-nls
--enable-shared
--disable-multilib
--enable-interwork
&& \
164 make configure-host
&& make
$(MJ
) && make
install || exit
1
165 cp
-va
$(WORK
)/binutils-
$(BINUTILS_VERSION
)/include/libiberty.h
$(CLFS
)/usr
/include
166 touch
$(CLFS
)/usr
/include/libiberty.h
168 binutils
: linux-headers
$(CLFS
)/usr
/include/libiberty.h
171 rm -rf
$(WORK
)/build-binutils
$(WORK
)/binutils-
$(BINUTILS_VERSION
)
173 binutils-distclean
: binutils-clean
174 rm -f
$(WORK
)/binutils-
$(BINUTILS_VERSION
).
tar.bz2
178 $(WORK
)/gcc-
$(GCC_VERSION
).
tar.xz
:
179 wget
-P
$(WORK
) -c ftp
://gcc.gnu.org
/pub
/gcc
/releases
/gcc-
$(GCC_VERSION
)/gcc-
$(GCC_VERSION
).
tar.xz
181 $(WORK
)/gcc-
$(GCC_VERSION
): $(WORK
)/gcc-
$(GCC_VERSION
).
tar.xz
182 tar -C
$(WORK
) -xf
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.xz
183 touch
$(WORK
)/gcc-
$(GCC_VERSION
)
185 $(WORK
)/build-gcc-static
: $(WORK
)/gcc-
$(GCC_VERSION
)
186 mkdir
-p
$(WORK
)/build-gcc-static
187 touch
$(WORK
)/build-gcc-static
189 $(CROSSTOOLS
)/lib
/gcc
: $(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
190 cd
$(WORK
)/build-gcc-static
&& \
191 unset CFLAGS
&& unset CXXFLAGS
&& \
192 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
193 $(WORK
)/gcc-
$(GCC_VERSION
)/configure
--prefix=$(CROSSTOOLS
) \
194 --build
=$(HOST
) --host
=$(HOST
) --target
=$(TARGET
) \
195 --disable-multilib
--disable-nls \
196 --without-headers
--enable-__cxa_atexit
--enable-symvers
=gnu
--disable-decimal-float \
197 --disable-libgomp
--disable-libmudflap
--disable-libssp \
198 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) \
199 --disable-shared
--disable-threads
--enable-languages
=c
--disable-libquadmath
&& \
200 make
$(MJ
) all-gcc all-target-libgcc
&& make install-gcc install-target-libgcc || exit
1
201 touch
$(CROSSTOOLS
)/lib
/gcc
203 gcc-static
: linux-headers libgmp libmpfr binutils
$(CROSSTOOLS
)/lib
/gcc
206 rm -rf
$(WORK
)/build-gcc-static
$(WORK
)/gcc-
$(GCC_VERSION
)
208 gcc-static-distclean
: gcc-static-clean
209 rm -f
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.xz
213 $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
:
214 wget
-P
$(WORK
) -c ftp
://ftp.gnu.org
/gnu
/glibc
/glibc-
$(GLIBC_VERSION
).
tar.bz2
216 $(WORK
)/glibc-
$(GLIBC_VERSION
): $(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
217 tar -C
$(WORK
) -xjf
$(WORK
)/glibc-
$(GLIBC_VERSION
).
tar.bz2
218 touch
$(WORK
)/glibc-
$(GLIBC_VERSION
)
220 $(WORK
)/build-glibc
: $(WORK
)/glibc-
$(GLIBC_VERSION
)
221 mkdir
-p
$(WORK
)/build-glibc
222 touch
$(WORK
)/build-glibc
224 $(CLFS
)/usr
/lib64
/libc.so
: $(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
225 cd
$(WORK
)/build-glibc
&& \
226 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
227 echo
"libc_cv_forced_unwind=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
--host
=$(TARGET
) --build
=$(HOST
) \
234 --enable-multi-arch
--disable-profile
--enable-add-ons
--with-tls
--enable-kernel
=2.6.0 \
235 --with-__thread
--with-binutils
=$(CROSSTOOLS
)/bin
--with-fp
=yes
--enable-obsolete-rpc \
236 --with-headers
=$(CLFS
)/usr
/include --cache-file
=config.cache
&& \
237 make
$(MJ
) && make
install install_root
=${CLFS} || exit
1
238 touch
$(CLFS
)/usr
/lib64
/libc.so
240 glibc
: binutils gcc-static
$(CLFS
)/usr
/lib64
/libc.so
243 rm -rf
$(WORK
)/build-glibc
$(WORK
)/glibc-
$(GLIBC_VERSION
)
245 glibc-distclean
: glibc-clean
246 rm -f
$(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 \
265 --disable-libgomp
--disable-libssp
--disable-libmudflap \
266 --with-mpfr
=$(CROSSTOOLS
) --with-gmp
=$(CROSSTOOLS
) --with-mpc
=$(CROSSTOOLS
) && \
267 make
$(MJ
) AS_FOR_TARGET
="$(TARGET)-as" LD_FOR_TARGET
="$(TARGET)-ld" && \
268 make
install || exit
1
269 cp
-va
$(WORK
)/build-gcc-final
/$(TARGET
)/libstdc
++-v3
/src
/.libs
/libstdc
++.so
* $(CLFS
)/usr
/lib
270 cp
-va
$(WORK
)/build-gcc-final
/$(TARGET
)/libgcc
/libgcc_s.so
* $(CLFS
)/usr
/lib
271 touch
$(CLFS
)/lib
/gcc
273 gcc-final
: libgmp libmpfr glibc
$(CLFS
)/lib
/gcc
276 rm -rf
$(WORK
)/build-gcc-final
$(WORK
)/gcc-
$(GCC_VERSION
)
278 gcc-final-distclean
: gcc-final-clean
279 rm -f
$(WORK
)/gcc-
$(GCC_VERSION
).
tar.bz2
282 # SETUP FOR PKGUTILS-CROSS
283 $(CLFS
)/var
/lib
/pkg
/db
:
284 install -d
-m
0755 $(CLFS
)/var
/lib
/pkg
285 touch
$(CLFS
)/var
/lib
/pkg
/db
287 setup
: $(CLFS
)/var
/lib
/pkg
/db
291 $(WORK
)/test: $(WORK
)/test.c
292 export PATH
=$$PATH:$(CROSSTOOLS
)/bin
&& \
293 unset CFLAGS
&& unset CXXFLAGS
&& unset CC
&& \
294 AR
=ar LDFLAGS
="-Wl,-rpath,$(CROSSTOOLS)/lib" \
295 $(TARGET
)-gcc
-Wall
-o
$(WORK
)/test $(WORK
)/test.c
298 test: gcc-final
$(WORK
)/test
303 test-distclean
: test-clean