9 include $(TOPDIR
)/..
/toolchain
/vars.mk
11 TARGET
= arm-crux-linux-gnueabihf
14 CLFS
= $(TOPDIR
)/..
/toolchain
/clfs
15 CROSSTOOLS
= $(TOPDIR
)/..
/toolchain
/crosstools
17 BUSYBOX_VERSION
= 1.26.2
18 BUSYBOX_SOURCE
= http
://busybox.net
/downloads
/busybox-
$(BUSYBOX_VERSION
).
tar.bz2
20 E2FSPROGS_VERSION
= 1.43.4
21 E2FSPROGS_SOURCE
= http
://downloads.sourceforge.net
/project
/e2fsprogs
/e2fsprogs
/v
$(E2FSPROGS_VERSION
)/e2fsprogs-
$(E2FSPROGS_VERSION
).
tar.gz
23 DIALOG_VERSION
= 1.3-20160828
24 DIALOG_SOURCE
= ftp
://invisible-island.net
/dialog
/dialog-
$(DIALOG_VERSION
).tgz
26 NCURSES_HEADER
= $(CLFS
)/usr
/include/ncurses.h
28 .PHONY
: all check-root busybox e2fsprogs dialog initrd
clean distclean
32 clean: busybox-clean e2fsprogs-clean dialog-clean initrd-clean
34 distclean: busybox-distclean e2fsprogs-clean dialog-distclean initrd-distclean
37 @if
[ "$$UID" != "0" ]; then \
38 echo
"You need to be root to do this."; \
39 echo
"Now you should run 'make initrd' as root to finish compilation or 'sudo make initrd'."; \
43 $(WORK
)/busybox-
$(BUSYBOX_VERSION
).
tar.bz2
:
44 wget
-P
$(WORK
) -c
$(BUSYBOX_SOURCE
)
46 $(WORK
)/busybox-
$(BUSYBOX_VERSION
): $(WORK
)/busybox-
$(BUSYBOX_VERSION
).
tar.bz2
$(TOPDIR
)/busybox-
$(BUSYBOX_VERSION
).config
$(WORK
)/fix-resource_header.patch
47 tar -C
$(WORK
) -xvjf
$(WORK
)/busybox-
$(BUSYBOX_VERSION
).
tar.bz2
48 cd
$(WORK
)/busybox-
$(BUSYBOX_VERSION
) && \
49 patch
-p1
-i
$(WORK
)/fix-resource_header.patch
50 cp
-v
$(TOPDIR
)/busybox-
$(BUSYBOX_VERSION
).config
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)/.config
51 touch
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)
53 $(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/bin
/busybox
: $(WORK
)/busybox-
$(BUSYBOX_VERSION
)
54 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
55 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
56 make
-j1
-C
$(WORK
)/busybox-
$(BUSYBOX_VERSION
) ARCH
=arm CROSS_COMPILE
=$(TARGET
)- install && \
57 install -D
-m
0755 $(WORK
)/busybox-
$(BUSYBOX_VERSION
)/examples
/udhcp
/simple.script
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/usr
/share
/udhcpc
/default.script
&& \
58 $(TARGET
)-strip $(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/bin
/busybox
&& \
59 touch
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/bin
/busybox
61 busybox
: $(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/bin
/busybox
64 rm -vrf
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)
66 busybox-distclean
: busybox-clean
67 rm -vf
$(WORK
)/busybox-
$(BUSYBOX_VERSION
).
tar.bz2
69 $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
).
tar.gz
:
70 wget
-P
$(WORK
) -c
$(E2FSPROGS_SOURCE
)
72 $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
): $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
).
tar.gz
73 tar -C
$(WORK
) -xvzf
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
).
tar.gz
74 touch
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)
76 $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)/misc
/mke2fs
: $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)
77 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
78 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
79 cd
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
) && \
80 .
/configure
--build
=$(BUILD
) --host
=$(TARGET
) --prefix=/usr
--with-root-prefix
= \
81 --mandir=/usr
/man
--disable-symlink-install
--disable-nls
--disable-compression \
82 --disable-htree
--disable-elf-shlibs
--disable-bsd-shlibs
--disable-profile \
83 --disable-checker
--disable-jbd-debug
--disable-blkid-debug
--disable-testio-debug \
84 --enable-libuuid
--enable-libblkid
--disable-libquota
--disable-debugfs
--disable-imager \
85 --disable-resizer
--disable-defrag
--disable-fsck
--disable-e2initrd-helper \
86 --disable-tls
--disable-rpath
&& \
87 make V
=1 CFLAGS
="$(CFLAGS) -static" LDFLAGS
="$(LDFLAGS) -static" && \
88 $(TARGET
)-strip $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)/misc
/mke2fs
&& \
89 touch
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)/misc
/mke2fs
91 e2fsprogs
: $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)/misc
/mke2fs
94 rm -vrf
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)
97 rm -vf
$(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
).
tar.bz2
99 $(WORK
)/dialog-
$(DIALOG_VERSION
).tgz
:
100 wget
-P
$(WORK
) -c
$(DIALOG_SOURCE
)
102 $(WORK
)/dialog-
$(DIALOG_VERSION
): $(WORK
)/dialog-
$(DIALOG_VERSION
).tgz
103 tar -C
$(WORK
) -xvzf
$(WORK
)/dialog-
$(DIALOG_VERSION
).tgz
104 touch
$(WORK
)/dialog-
$(DIALOG_VERSION
)
106 $(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
/usr
/bin
/dialog
: $(WORK
)/dialog-
$(DIALOG_VERSION
)
107 export PATH
=$(CROSSTOOLS
)/bin
:$$PATH && \
108 export LD_LIBRARY_PATH
=$(CROSSTOOLS
)/lib
:$$LD_LIBRARY_PATH && \
109 cd
$(WORK
)/dialog-
$(DIALOG_VERSION
) && \
110 .
/configure
--build
=$(BUILD
) --host
=$(TARGET
) --prefix=/usr
--with-ncursesw
&& \
111 find
-type f
-name
'makefile' \
112 -exec sed
-e
"s|-I/usr|-I$(CLFS)/usr|g" -e
"s|-L/usr|-L$(CLFS)/usr|g" -i
{} \
; && \
113 make CC
="$(TARGET)-gcc -static" && \
114 make DESTDIR
=$(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
install && \
115 $(TARGET
)-strip $(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
/usr
/bin
/dialog
&& \
116 touch
$(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
/usr
/bin
/dialog
118 dialog
: $(NCURSES_HEADER
) $(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
/usr
/bin
/dialog
121 rm -vrf
$(WORK
)/dialog-
$(DIALOG_VERSION
)
123 dialog-distclean
: dialog-clean
124 rm -vf
$(WORK
)/dialog-
$(DIALOG_VERSION
).tgz
129 $(WORK
)/initrd.gz
: check-root busybox e2fsprogs dialog
$(WORK
)/mnt
$(TOPDIR
)/filesystem
$(TOPDIR
)/mkinitrd.sh
130 .
/mkinitrd.sh
--name
=$(WORK
)/initrd.gz
--size
=4096
131 cd
$(WORK
) && gunzip
-v initrd.gz
132 mount
-v
-t ext2
-o loop
,rw
$(WORK
)/initrd
$(WORK
)/mnt
133 cp
-dRv
$(WORK
)/busybox-
$(BUSYBOX_VERSION
)/_install
/* $(WORK
)/mnt
134 install -v
-m
0755 $(WORK
)/e2fsprogs-
$(E2FSPROGS_VERSION
)/misc
/mke2fs
$(WORK
)/mnt
/sbin
135 for i in
2 3 4 4dev
; do \
136 ln
-s mke2fs
$(WORK
)/mnt
/sbin
/mkfs.ext
$$i; \
138 install -v
-m
0755 $(WORK
)/dialog-
$(DIALOG_VERSION
)/_install
/usr
/bin
/dialog
$(WORK
)/mnt
/usr
/bin
139 cp
-dRv
$(CLFS
)/lib
/libnss_
{files
*,dns
*} $(CLFS
)/lib
/libresolv
* $(WORK
)/mnt
/lib
140 install -d
$(WORK
)/mnt
/usr
/share
/terminfo
141 cp
-dRv
$(CLFS
)/usr
/share
/terminfo
/v
$(WORK
)/mnt
/usr
/share
/terminfo
142 install -v
-m
0644 $(TOPDIR
)/filesystem
/{fstab
,inittab
,profile
,protocols
,*.conf
} $(WORK
)/mnt
/etc
143 install -v
-m
0664 $(TOPDIR
)/filesystem
/group
$(WORK
)/mnt
/etc
144 install -v
-m
0600 $(TOPDIR
)/filesystem
/passwd
$(WORK
)/mnt
/etc
145 install -v
-m
0400 $(TOPDIR
)/filesystem
/shadow
$(WORK
)/mnt
/etc
146 install -v
-m
0755 $(TOPDIR
)/filesystem
/rc
$(WORK
)/mnt
/etc
&& \
147 install -v
-m
0755 $(TOPDIR
)/filesystem
/{setup
,setup-chroot
,crux
} $(WORK
)/mnt
/usr
/bin
&& \
148 ln
-s bin
/busybox
$(WORK
)/mnt
/init
149 /sbin
/ldconfig
-r
$(WORK
)/mnt
150 umount
-v
$(WORK
)/mnt
151 cd
$(WORK
) && gzip
-v initrd
152 touch
$(WORK
)/initrd.gz
154 initrd
: $(WORK
)/initrd.gz
156 initrd-clean
: check-root
157 rm -rvf
$(WORK
)/initrd.gz
$(WORK
)/mnt
159 initrd-distclean
: initrd-clean