summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
authorWaldemar Brodkorb <wbx@openadk.org>2010-11-26 15:18:01 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2010-11-26 15:18:01 +0100
commitdbfdeaeb46453d300b975dcfb6790f3b16f9e6b5 (patch)
treefbba8492efcb3536c1606a659308e9f0ca75ea20 /mk
parent4969392a108205efe43203a9df4a20c749554479 (diff)
implement the concept of target choice by embedded system or architecture
you can now choose between specific embedded systems like PC Engines ALIX boards, Foxboard, .. or between generic architecture support like x86, x86_64, mips, ... This does reduce the overhead of duplicate configuration files in target directory. Now qemu, toolchain and ibm x40 support is combined in one target directory target/x86. Distinguishing between hardware profiles happens via menu based configuration. (CPU choice for kernel, CFLAGS for package building, ..). We will see if this is the right direction.
Diffstat (limited to 'mk')
-rw-r--r--mk/build.mk51
-rw-r--r--mk/image.mk8
-rw-r--r--mk/kernel.mk2
-rw-r--r--mk/rootfs.mk6
-rw-r--r--mk/vars.mk12
5 files changed, 41 insertions, 38 deletions
diff --git a/mk/build.mk b/mk/build.mk
index 443441cda..5e3ef8173 100644
--- a/mk/build.mk
+++ b/mk/build.mk
@@ -74,7 +74,7 @@ POSTCONFIG= -@\
touch .rebuild.busybox;\
rebuild=1;\
fi; \
- for i in ADK_RUNTIME_PASSWORD ADK_RUNTIME_HOSTNAME ADK_TARGET_ROOTFS;do \
+ for i in ADK_RUNTIME_PASSWORD ADK_RUNTIME_HOSTNAME ADK_TARGET_ROOTFS ADK_RUNTIME_CONSOLE;do \
if [ "$$(grep ^$$i .config|md5sum)" != "$$(grep ^$$i .config.old|md5sum)" ];then \
touch .rebuild.base-files;\
rebuild=1;\
@@ -302,11 +302,11 @@ endif
ifneq (,$(filter CYGWIN%,${OStype}))
@echo ADK_HOST_CYGWIN=y > $(TOPDIR)/.defconfig
endif
-ifeq ($(ADKtype),ibmx40)
- @echo ADK_HARDWARE_IBMX40=y >> $(TOPDIR)/.defconfig
+ifeq ($(ADKtype),ibm-x40)
+ @echo ADK_HARDWARE_IBM_X40=y >> $(TOPDIR)/.defconfig
endif
-ifeq ($(ADKtype),lemote)
- @echo ADK_HARDWARE_YEELONG=y >> $(TOPDIR)/.defconfig
+ifeq ($(ADKtype),lemote-yeelong)
+ @echo ADK_HARDWARE_LEMOTE_YEELONG=y >> $(TOPDIR)/.defconfig
endif
@if [ ! -z "$(TARGET)" ];then \
grep "^config" target/Config.in \
@@ -336,17 +336,13 @@ endif
>> $(TOPDIR)/.defconfig; \
fi
@if [ ! -z "$(HW)" ];then \
+ hw=$$(echo "$(HW)" |sed -e "s/-/_/g"); \
grep -h "^config" target/Config.in.* \
- |grep -i "$(HW)" \
+ |grep -i "$$hw" \
|sed -e "s#^config \(.*\)#\1=y#" \
>> $(TOPDIR)/.defconfig; \
+ echo "ADK_ARCH_CHOICE=y" >> $(TOPDIR)/.defconfig; \
fi
-ifneq (,$(filter %_qemu,${TARGET}))
- @echo ADK_LINUX_QEMU=y >> $(TOPDIR)/.defconfig
-endif
-ifneq (,$(filter %_toolchain,${TARGET}))
- @echo ADK_LINUX_TOOLCHAIN=y >> $(TOPDIR)/.defconfig
-endif
ifneq (,$(filter rb%,${TARGET}))
@echo ADK_LINUX_MIKROTIK=y >> $(TOPDIR)/.defconfig
endif
@@ -379,11 +375,11 @@ endif
ifneq (,$(filter CYGWIN%,${OStype}))
@echo ADK_HOST_CYGWIN=y > $(TOPDIR)/all.config
endif
-ifeq ($(ADKtype),ibmx40)
- @echo ADK_HARDWARE_IBMX40=y >> $(TOPDIR)/all.config
+ifeq ($(ADKtype),ibmx-40)
+ @echo ADK_HARDWARE_IBM_X40=y >> $(TOPDIR)/all.config
endif
-ifeq ($(ADKtype),lemote)
- @echo ADK_HARDWARE_YEELONG=y >> $(TOPDIR)/all.config
+ifeq ($(ADKtype),lemote-yeelong)
+ @echo ADK_HARDWARE_LEMOTE_YEELONG=y >> $(TOPDIR)/all.config
endif
@if [ ! -z "$(TARGET)" ];then \
grep "^config" target/Config.in \
@@ -413,17 +409,13 @@ endif
>> $(TOPDIR)/all.config; \
fi
@if [ ! -z "$(HW)" ];then \
+ hw=$$(echo "$(HW)" |sed -e "s/-/_/g"); \
grep -h "^config" target/Config.in.* \
- |grep -i "$(HW)" \
+ |grep -i "$$hw" \
|sed -e "s#^config \(.*\)#\1=y#" \
>> $(TOPDIR)/all.config; \
+ echo "ADK_ARCH_CHOICE=y" >> $(TOPDIR)/all.config; \
fi
-ifneq (,$(filter %_qemu,${TARGET}))
- @echo ADK_LINUX_QEMU=y >> $(TOPDIR)/all.config
-endif
-ifneq (,$(filter %_toolchain,${TARGET}))
- @echo ADK_LINUX_TOOLCHAIN=y >> $(TOPDIR)/all.config
-endif
ifneq (,$(filter rb%,${TARGET}))
@echo ADK_LINUX_MIKROTIK=y >> $(TOPDIR)/all.config
endif
@@ -480,19 +472,6 @@ bulk:
if [ -f .exit ];then echo "Bulk build failed!"; rm .exit; exit 1;fi \
done <${TOPDIR}/target/bulkdef.lst
-bulktoolchain:
- @while read target libc; do \
- mkdir -p $(TOPDIR)/bin/$${target}_$$libc; \
- ( \
- echo === building $$target $$libc on $$(date); \
- $(GMAKE) prereq && \
- $(GMAKE) TARGET=$$target LIBC=$$libc defconfig; \
- $(GMAKE) VERBOSE=1 all; if [ $$? -ne 0 ]; then touch .exit;fi; \
- rm .config; \
- ) 2>&1 | tee $(TOPDIR)/bin/$${target}_$$libc/$$target-$$libc.log; \
- if [ -f .exit ];then echo "Bulk build failed!"; rm .exit; exit 1;fi \
- done <${TOPDIR}/target/bulktool.lst
-
bulkall:
@while read target libc fs; do \
mkdir -p $(TOPDIR)/bin/$${target}_$$libc; \
diff --git a/mk/image.mk b/mk/image.mk
index 5858b9511..be1d9f970 100644
--- a/mk/image.mk
+++ b/mk/image.mk
@@ -35,11 +35,19 @@ kernel-package: $(LINUX_DIR)/vmlinux
$(TRACE) target/$(ADK_TARGET)-install-kernel-package
$(PKG_INSTALL) $(KERNEL_PKG) $(MAKE_TRACE)
+ifeq ($(ADK_HW),)
INITRAMFS= ${ADK_TARGET}-${ADK_LIBC}-${FS}
ROOTFSSQUASHFS= ${ADK_TARGET}-${ADK_LIBC}-${FS}.img
ROOTFSTARBALL= ${ADK_TARGET}-${ADK_LIBC}-${FS}+kernel.tar.gz
ROOTFSUSERTARBALL= ${ADK_TARGET}-${ADK_LIBC}-${FS}.tar.gz
INITRAMFS_PIGGYBACK= ${ADK_TARGET}-${ADK_LIBC}-${FS}.cpio
+else
+INITRAMFS= ${ADK_HW}-${ADK_TARGET}-${ADK_LIBC}-${FS}
+ROOTFSSQUASHFS= ${ADK_HW}-${ADK_TARGET}-${ADK_LIBC}-${FS}.img
+ROOTFSTARBALL= ${ADK_HW}-${ADK_TARGET}-${ADK_LIBC}-${FS}+kernel.tar.gz
+ROOTFSUSERTARBALL= ${ADK_HW}-${ADK_TARGET}-${ADK_LIBC}-${FS}.tar.gz
+INITRAMFS_PIGGYBACK= ${ADK_HW}-${ADK_TARGET}-${ADK_LIBC}-${FS}.cpio
+endif
${BIN_DIR}/${ROOTFSTARBALL}: ${TARGET_DIR} kernel-package
cd ${TARGET_DIR}; tar -cf - --owner=0 --group=0 . | gzip -n9 >$@
diff --git a/mk/kernel.mk b/mk/kernel.mk
index eb4e52a33..5d2f9dbe0 100644
--- a/mk/kernel.mk
+++ b/mk/kernel.mk
@@ -3,7 +3,7 @@
LINUX_KMOD_SUFFIX=ko
MODULES_SUBDIR := lib/modules/$(KERNEL_VERSION)
-LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(ARCH)-$(ADK_TARGET)
+LINUX_BUILD_DIR := $(BUILD_DIR)/linux-$(ADK_TARGET)
KMOD_BUILD_DIR := $(LINUX_BUILD_DIR)/linux-modules
MODULES_DIR := $(LINUX_BUILD_DIR)/modules/$(MODULES_SUBDIR)
TARGET_MODULES_DIR := $(LINUX_TARGET_DIR)/$(MODULES_SUBDIR)
diff --git a/mk/rootfs.mk b/mk/rootfs.mk
index 30802e092..aab7d4ab1 100644
--- a/mk/rootfs.mk
+++ b/mk/rootfs.mk
@@ -8,6 +8,10 @@ FS_CMDLINE:=$(3)
endif
endef
+ifeq ($(ADK_HARDWARE_QEMU_X86),y)
+ROOTFS:= root=/dev/sda1
+endif
+
ifeq ($(ADK_LINUX_MIPS_RB532),y)
ROOTFS:= root=/dev/sda2
MTDDEV:= root=/dev/mtdblock1
@@ -23,7 +27,7 @@ endif
$(eval $(call rootfs_template,ext2-block,EXT2_BLOCK,$(ROOTFS)))
$(eval $(call rootfs_template,usb,USB,rootdelay=3))
-$(eval $(call rootfs_template,archive,ARCHIVE))
+$(eval $(call rootfs_template,archive,ARCHIVE,$(ROOTFS)))
$(eval $(call rootfs_template,initramfs,INITRAMFS))
$(eval $(call rootfs_template,initramfs-piggyback,INITRAMFS_PIGGYBACK))
$(eval $(call rootfs_template,squashfs,SQUASHFS))
diff --git a/mk/vars.mk b/mk/vars.mk
index 40226b254..4ebc1ebf6 100644
--- a/mk/vars.mk
+++ b/mk/vars.mk
@@ -21,7 +21,11 @@ endif
BASE_DIR:= $(TOPDIR)
DISTDIR?= ${BASE_DIR}/dl
+ifeq ($(ADK_HW),)
BUILD_DIR:= ${BASE_DIR}/build_${ADK_TARGET}_${ADK_LIBC}
+else
+BUILD_DIR:= ${BASE_DIR}/build_${ADK_HW}_${ADK_TARGET}_${ADK_LIBC}
+endif
BUILD_DIR_PFX:= $(BASE_DIR)/build_*
STAGING_PARENT:= ${BASE_DIR}/cross_${ADK_TARGET}_${ADK_LIBC}
STAGING_PARENT_PFX:= ${BASE_DIR}/cross_*
@@ -31,10 +35,18 @@ TOOLCHAIN_BUILD_DIR= $(BASE_DIR)/toolchain_build_${ADK_TARGET}_${ADK_LIBC}
TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_*
TOOLS_BUILD_DIR= $(BASE_DIR)/tools_build
SCRIPT_DIR:= $(BASE_DIR)/scripts
+ifeq ($(ADK_HW),)
BIN_DIR:= $(BASE_DIR)/bin/${ADK_TARGET}_${ADK_LIBC}
+else
+BIN_DIR:= $(BASE_DIR)/bin/${ADK_HW}_${ADK_TARGET}_${ADK_LIBC}
+endif
BIN_DIR_PFX:= $(BASE_DIR)/bin
PACKAGE_DIR:= $(BIN_DIR)/packages
+ifeq ($(ADK_HW),)
TARGET_DIR:= $(BASE_DIR)/root_${ADK_TARGET}_${ADK_LIBC}
+else
+TARGET_DIR:= $(BASE_DIR)/root_${ADK_HW}_${ADK_TARGET}_${ADK_LIBC}
+endif
TARGET_DIR_PFX:= $(BASE_DIR)/root_*
TARGET_PATH= ${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
REAL_GNU_TARGET_NAME= $(CPU_ARCH)-$(ADK_VENDOR)-linux-$(ADK_TARGET_SUFFIX)