update busybox, too
[buildroot.git] / package / busybox / initramfs.mk
blob47bbce59457899b0492966549e25d1db4eaf7af7
1 #############################################################
3 # busybox image for initramfs
5 #############################################################
6 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
8 BUSYBOX_INITRAMFS_DIR:=$(BUSYBOX_DIR)-initramfs
9 BR2_INITRAMFS_DIR:=$(PROJECT_BUILD_DIR)/initramfs
10 BB_INITRAMFS_TARGET:=$(IMAGE).initramfs_lst
12 $(BUSYBOX_INITRAMFS_DIR)/.unpacked: $(DL_DIR)/$(BUSYBOX_SOURCE)
13 rm -rf $(BUILD_DIR)/tmp $(BUSYBOX_INITRAMFS_DIR)
14 mkdir -p $(BUILD_DIR)/tmp
15 $(BUSYBOX_UNZIP) $(DL_DIR)/$(BUSYBOX_SOURCE) | tar -C $(BUILD_DIR)/tmp $(TAR_OPTIONS) -
16 ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y)
17 mv $(BUILD_DIR)/tmp/busybox $(BUSYBOX_INITRAMFS_DIR)
18 else
19 mv $(BUILD_DIR)/tmp/busybox-$(BUSYBOX_VERSION) $(BUSYBOX_INITRAMFS_DIR)
20 endif
21 ifeq ($(BR2_USE_UPDATES),y)
22 (cd $(@D) && $(SVN_UP))
23 endif
24 touch $@
26 $(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.configured: $(BUSYBOX_INITRAMFS_DIR)/.unpacked
27 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
28 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
29 CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \
30 allnoconfig
31 mv $(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.config.no
32 (echo CONFIG_PREFIX=\"$(BR2_INITRAMFS_DIR)\"; \
33 echo CONFIG_NITPICK=y; \
34 echo CONFIG_FEATURE_BUFFERS_USE_MALLOC=y; \
35 echo CONFIG_INCLUDE_SUSv2=n; \
36 echo CONFIG_CAT=y; \
37 echo CONFIG_CHROOT=y; \
38 echo CONFIG_DD=y; \
39 echo CONFIG_FEATURE_DD_IBS_OBS=y; \
40 echo CONFIG_FALSE=y; \
41 echo CONFIG_GUNZIP=y; \
42 echo CONFIG_HALT=y; \
43 echo CONFIG_INIT=y; \
44 echo CONFIG_INSMOD=y; \
45 echo CONFIG_KILL=y; \
46 echo CONFIG_LN=y; \
47 echo CONFIG_MDEV=y; \
48 echo CONFIG_MKDIR=y; \
49 echo CONFIG_MKFIFO=y; \
50 echo CONFIG_MKNOD=y; \
51 echo CONFIG_MODPROBE=y; \
52 echo CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y; \
53 echo CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y; \
54 echo CONFIG_FEATURE_CHECK_TAINTED_MODULE=n; \
55 echo CONFIG_FEATURE_2_4_MODULES=n; \
56 echo CONFIG_MOUNT=y; \
57 echo CONFIG_MSH=y; \
58 echo CONFIG_FEATURE_SH_IS_MSH=y; \
59 echo CONFIG_PS=y; \
60 echo CONFIG_READLINK=y; \
61 echo CONFIG_RMMOD=y; \
62 echo CONFIG_STATIC=y; \
63 echo CONFIG_SWITCH_ROOT=y; \
64 echo CONFIG_SYNC=y; \
65 echo CONFIG_TFTP=y; \
66 echo CONFIG_FEATURE_TFTP_GET=y; \
67 echo CONFIG_FEATURE_TFTP_PUT=y; \
68 echo CONFIG_TRUE=y; \
69 echo CONFIG_UMOUNT=y; \
70 echo CONFIG_FEATURE_UMOUNT_ALL=y; \
71 echo CONFIG_UNAME=y; \
72 ) > $(BUSYBOX_INITRAMFS_DIR)/.config
73 cp -f $(BUSYBOX_INITRAMFS_DIR)/.config \
74 $(BUSYBOX_INITRAMFS_DIR)/.config.prune
75 $(SED) 's|\([^=]*\)=.*|/\1[^_]*/d|g' \
76 $(BUSYBOX_INITRAMFS_DIR)/.config.prune
77 $(SED) '' -f $(BUSYBOX_INITRAMFS_DIR)/.config.prune \
78 $(BUSYBOX_INITRAMFS_DIR)/.config.no
79 cat $(BUSYBOX_INITRAMFS_DIR)/.config.no >> \
80 $(BUSYBOX_INITRAMFS_DIR)/.config
81 yes "" | $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
82 HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
83 CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \
84 oldconfig
85 touch $@
88 $(BUSYBOX_INITRAMFS_DIR)/busybox: $(BUSYBOX_INITRAMFS_DIR)/.configured
89 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
90 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
91 CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
92 ARCH=$(KERNEL_ARCH) \
93 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
94 busybox.links busybox
95 ifeq ($(BR2_PREFER_IMA)$(BR2_PACKAGE_BUSYBOX_SNAPSHOT),yy)
96 rm -f $@
97 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
98 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
99 CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \
100 ARCH=$(KERNEL_ARCH) STRIP="$(STRIPCMD)" \
101 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
102 -f scripts/Makefile.IMA
103 endif
105 $(BR2_INITRAMFS_DIR)/bin/busybox: $(BUSYBOX_INITRAMFS_DIR)/busybox
106 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" \
107 CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \
108 CROSS="$(TARGET_CROSS)" \
109 ARCH=$(KERNEL_ARCH) STRIP="$(STRIPCMD)" \
110 EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \
111 install
112 $(STRIPCMD) $(STRIP_STRIP_ALL) $@
115 $(BB_INITRAMFS_TARGET): host-fakeroot $(BR2_INITRAMFS_DIR)/bin/busybox
116 ln -fs bin/busybox $(PROJECT_BUILD_DIR)/initramfs/init
117 mkdir -p $(PROJECT_BUILD_DIR)/initramfs/etc
118 cat target/generic/target_busybox_skeleton/etc/inittab > \
119 $(PROJECT_BUILD_DIR)/initramfs/etc/inittab
120 rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
121 (echo "chown -R 0:0 $(PROJECT_BUILD_DIR)/initramfs"; \
122 echo "$(STAGING_DIR)/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(PROJECT_BUILD_DIR)/initramfs"; \
123 echo "$(CONFIG_SHELL) target/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(PROJECT_BUILD_DIR)/initramfs > $(BB_INITRAMFS_TARGET)"; \
124 ) > $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
125 chmod +x $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
126 $(STAGING_DIR)/usr/bin/fakeroot -- \
127 $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
128 rm -f $(PROJECT_BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET))
129 touch -c $@
131 $(PROJECT_BUILD_DIR)/.initramfs_done: $(BR2_INITRAMFS_DIR)/bin/busybox \
132 $(BB_INITRAMFS_TARGET)
133 touch $@
135 busybox-initramfs-source:
136 busybox-initramfs: uclibc $(PROJECT_BUILD_DIR)/.initramfs_done
138 busybox-initramfs-menuconfig: host-sed $(BUILD_DIR) busybox-source $(BUSYBOX_INITRAMFS_DIR)/.configured
139 $(MAKE) HOSTCC="$(HOSTCC) $(HOST_CFLAGS)" __TARGET_ARCH=$(ARCH) \
140 -C $(BUSYBOX_INITRAMFS_DIR) menuconfig
142 busybox-initramfs-clean:
143 rm -f $(BUSYBOX_INITRAMFS_DIR)/busybox $(PROJECT_BUILD_DIR)/.initramfs_*
144 rm -rf $(BR2_INITRAMFS_DIR) $(BB_INITRAMFS_TARGET)
145 -$(MAKE) -C $(BUSYBOX_INITRAMFS_DIR) clean
147 busybox-initramfs-dirclean:
148 rm -rf $(BUSYBOX_INITRAMFS_DIR) $(BR2_INITRAMFS_DIR) \
149 $(PROJECT_BUILD_DIR)/.initramfs_*
150 endif
151 #############################################################
153 # Toplevel Makefile options
155 #############################################################
156 ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y)
157 TARGETS+=busybox-initramfs
158 endif