Commit | Line | Data |
---|---|---|
be3fa5e6 JB |
1 | # |
2 | # initramfs/Makefile | |
3 | # | |
4 | ||
5 | TARGET = arm-crux-linux-gnueabi | |
6 | DEVICE = versatile | |
7 | ||
8 | PWD = $(shell pwd) | |
9 | WORK = $(PWD)/work | |
10 | CLFS = $(PWD)/../toolchain/clfs | |
11 | CROSSTOOLS = $(PWD)/../toolchain/crosstools | |
12 | ||
13 | ||
14 | KERNEL_PATH = $(PWD)/../kernel/$(DEVICE) | |
15 | KERNEL_VERSION = $(shell grep '^KERNEL_VERSION = ' $(KERNEL_PATH)/Makefile | sed 's|KERNEL_VERSION = ||') | |
16 | ||
17 | BUSYBOX_SOURCE = http://busybox.net/downloads/busybox-$(BUSYBOX_VERSION).tar.bz2 | |
18 | BUSYBOX_VERSION = 1.18.4 | |
19 | ||
20 | .PHONY: all check-root busybox initramfs clean distclean | |
21 | ||
22 | all: busybox initramfs | |
23 | ||
24 | clean: busybox-clean initramfs-clean | |
25 | ||
26 | dist-clean: busybox-distclean gen_init_cpio-distclean initramfs-distclean | |
27 | ||
28 | check-root: | |
29 | @if [ "$$UID" != "0" ]; then \ | |
30 | echo "You need to be root to do this."; \ | |
31 | echo "Now you should run 'make initramfs' as root to finish compilation or 'sudo make initramfs'."; \ | |
32 | exit 1; \ | |
33 | fi | |
34 | ||
35 | $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2: | |
36 | wget -P $(WORK) -c http://busybox.net/downloads/busybox-$(BUSYBOX_VERSION).tar.bz2 | |
37 | ||
38 | $(WORK)/busybox-$(BUSYBOX_VERSION): $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2 $(PWD)/busybox-$(BUSYBOX_VERSION).config | |
39 | tar -C $(WORK) -xvjf $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2 | |
40 | cp -v $(PWD)/busybox-$(BUSYBOX_VERSION).config $(WORK)/busybox-$(BUSYBOX_VERSION)/.config | |
41 | touch $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2 | |
42 | ||
43 | $(WORK)/busybox-$(BUSYBOX_VERSION)/_install: $(WORK)/busybox-$(BUSYBOX_VERSION) | |
44 | export PATH=$(CROSSTOOLS)/bin:$$PATH && \ | |
45 | export LD_LIBRARY_PATH=$(CROSSTOOLS)/lib:$$LD_LIBRARY_PATH && \ | |
46 | make -C $(WORK)/busybox-$(BUSYBOX_VERSION) ARCH=arm CROSS_COMPILE=$(TARGET)- install | |
47 | touch $(WORK)/busybox-$(BUSYBOX_VERSION)/_install | |
48 | ||
49 | busybox: $(WORK)/busybox-$(BUSYBOX_VERSION)/_install | |
50 | ||
51 | busybox-clean: | |
52 | rm -vrf $(WORK)/busybox-$(BUSYBOX_VERSION) | |
53 | ||
54 | busybox-distclean: busybox-clean | |
55 | rm -vf $(WORK)/busybox-$(BUSYBOX_VERSION).tar.bz2 | |
56 | ||
57 | $(WORK)/gen_init_cpio: $(WORK)/gen_init_cpio.c | |
58 | cd $(WORK) && \ | |
59 | $(CC) $(CFLAGS) -Wall -o gen_init_cpio gen_init_cpio.c | |
60 | ||
61 | gen_init_cpio: $(WORK)/gen_init_cpio | |
62 | ||
63 | gen_init_cpio-clean: | |
64 | rm -rf $(WORK)/gen_init_cpio | |
65 | ||
66 | gen_init_cpio-distclean: gen_init_cpio-clean | |
67 | ||
68 | $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION): check-root $(WORK)/busybox-$(BUSYBOX_VERSION)/_install $(KERNEL_PATH) $(WORK)/gen_init_cpio $(WORK)/initramfs.lst | |
69 | mkdir -p $(WORK)/mnt | |
70 | cp -drv $(PWD)/filesystem/* $(WORK)/busybox-$(BUSYBOX_VERSION)/_install/* $(WORK)/mnt | |
71 | ln -s /bin/busybox $(WORK)/mnt/init | |
72 | cd $(WORK)/mnt && \ | |
73 | $(WORK)/gen_init_cpio $(WORK)/initramfs.lst | cpio -id && \ | |
74 | find * | cpio -H newc -o > $(WORK)/initramfs.cpio && \ | |
75 | gzip -v9 $(WORK)/initramfs.cpio | |
76 | mv $(WORK)/initramfs.cpio.gz{,-$(KERNEL_VERSION)} | |
77 | rm -rf $(WORK)/mnt | |
78 | ||
79 | initramfs: $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION) | |
80 | ||
81 | initramfs-clean: | |
82 | rm -rf $(WORK)/initramfs-$(KERNEL_VERSION) $(WORK)/mnt $(WORK)/initramfs.cpio.gz-$(KERNEL_VERSION) | |
83 | ||
84 | initramfs-distclean: initramfs-clean | |
85 | ||
86 | # End of file |