浏览代码

use target-libc combination for all builddirs

IMPORTANT: do a make distclean before compiling after
this commit.

The directories for all build and bin directories changed, so
that toolchains for different target-libc combinations can coexist.
This might be usefule in the future for continous compiling after
git commit, without rebuilding the toolchain.
Rework busybox rebuild, when config changes. Not optimal, but at least
working after this change to the directory structure.
Waldemar Brodkorb 14 年之前
父节点
当前提交
5df306b0c9
共有 7 个文件被更改,包括 38 次插入33 次删除
  1. 2 1
      .gitignore
  2. 0 1
      TODO
  3. 7 12
      mk/build.mk
  4. 6 6
      mk/vars.mk
  5. 2 4
      package/Makefile
  6. 16 9
      package/busybox/Makefile
  7. 5 0
      scripts/cpio

+ 2 - 1
.gitignore

@@ -15,13 +15,14 @@ toolchain_build_*/
 .tmpconfig.h
 .prereq_done
 .config*
+.busyboxcfg
 .defconfig
 all.config
 .cfg/
 .cfg.*/
 cross_*/
 root_*/
-bin_*/
+bin/
 build_*/
 config/*.o
 config/lxdialog/*.o

+ 0 - 1
TODO

@@ -12,7 +12,6 @@
 - use LZMA kernels for MIPS targets
 - package drbd
 - new packages for openais and pacemaker
-- realize parallel build for target-libc combinations
 - continuos build via hudson or sth. like that
 - implement rpm package backend 
 - implement dpkg package backend 

+ 7 - 12
mk/build.mk

@@ -57,10 +57,7 @@ noconfig_targets:=	menuconfig \
 			distclean \
 			tags
 
-MAKECLEANDIR_SYMBOLS=	ADK_TARGET_LIB_UCLIBC \
-			ADK_TARGET_LIB_GLIBC \
-			ADK_TARGET_LIB_ECLIBC \
-			ADK_DEBUG
+MAKECLEANDIR_SYMBOLS=	ADK_DEBUG
 
 MAKECLEAN_SYMBOLS=	ADK_TARGET_PACKAGE_IPKG \
 			ADK_TARGET_PACKAGE_RPM \
@@ -89,11 +86,7 @@ POSTCONFIG=		-@ \
 		    "$$what' might be required!"; \
 		break; \
 	done; \
-	fi; \
-	if [ "$$(grep ^BUSYBOX .config|md5sum)" != "$$(grep ^BUSYBOX .config.old|md5sum)" ];then \
-		if [ -f build_*/w-busybox*/busybox*/.configure_done ];then \
-			rm build_*/w-busybox*/busybox*/.configure_done; \
-		fi; \
+	if [ -f .busyboxcfg ];then rm .busyboxcfg;fi; \
 	fi; \
 	fi
 
@@ -238,14 +231,15 @@ cleandir:
 	rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) \
 	    $(TOOLS_BUILD_DIR)
 	rm -f .menu .tmpconfig.h ${TOPDIR}/package/*/info.mk \
-	    ${TOPDIR}/package/Depends.mk ${TOPDIR}/prereq.mk
+	    ${TOPDIR}/package/Depends.mk ${TOPDIR}/prereq.mk \
+	    .busyboxcfg
 
 cleantarget:
 	@$(TRACE) cleantarget
 	@$(MAKE) -C $(CONFIG) clean $(MAKE_TRACE)
 	rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg
 	rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT) all.config .defconfig
-	rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk
+	rm -f .tmpconfig.h ${TOPDIR}/package/*/info.mk .busyboxcfg
 
 distclean:
 	@$(TRACE) distclean
@@ -254,7 +248,8 @@ distclean:
 	    ${TOPDIR}/.cfg* ${TOPDIR}/package/pkglist.d $(TOPDIR)/bulkdir
 	@rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR)
 	@rm -f .config* .defconfig .tmpconfig.h all.config ${TOPDIR}/prereq.mk \
-	    .menu ${TOPDIR}/package/*/info.mk ${TOPDIR}/package/Depends.mk
+	    .menu ${TOPDIR}/package/*/info.mk ${TOPDIR}/package/Depends.mk \
+	    .busyboxcfg
 
 else # ! ifeq ($(strip $(ADK_HAVE_DOT_CONFIG)),y)
 

+ 6 - 6
mk/vars.mk

@@ -18,20 +18,20 @@ TARGET_CFLAGS:=		$(TARGET_OPTIMIZATION) $(TARGET_CFLAGS_ARCH) $(TARGET_DEBUGGING
 
 BASE_DIR:=		$(TOPDIR)
 DISTDIR?=		${BASE_DIR}/dl
-BUILD_DIR:=		${BASE_DIR}/build_${CPU_ARCH}
+BUILD_DIR:=		${BASE_DIR}/build_${ADK_TARGET}_${ADK_LIBC}
 BUILD_DIR_PFX:=		$(BASE_DIR)/build_*
-STAGING_PARENT:=	${BASE_DIR}/cross_${CPU_ARCH}
+STAGING_PARENT:=	${BASE_DIR}/cross_${ADK_TARGET}_${ADK_LIBC}
 STAGING_PARENT_PFX:=	${BASE_DIR}/cross_*
 STAGING_TOOLS:=		${STAGING_PARENT}/host
 STAGING_DIR:=		${STAGING_PARENT}/target
-TOOLCHAIN_BUILD_DIR=	$(BASE_DIR)/toolchain_build_${CPU_ARCH}
+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
-BIN_DIR:=		$(BASE_DIR)/bin_${ADK_TARGET}
-BIN_DIR_PFX:=		$(BASE_DIR)/bin_*
+BIN_DIR:=		$(BASE_DIR)/bin/${ADK_TARGET}_${ADK_LIBC}
+BIN_DIR_PFX:=		$(BASE_DIR)/bin
 PACKAGE_DIR:=		$(BIN_DIR)/packages
-TARGET_DIR:=		$(BASE_DIR)/root_${ADK_TARGET}
+TARGET_DIR:=		$(BASE_DIR)/root_${ADK_TARGET}_${ADK_LIBC}
 TARGET_DIR_PFX:=	$(BASE_DIR)/root_*
 TARGET_PATH=		${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
 REAL_GNU_TARGET_NAME=	$(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)

+ 2 - 4
package/Makefile

@@ -41,9 +41,6 @@ compile: base-files-compile $(COMPILE_PACKAGES)
 install: base-files-install $(INSTALL_PACKAGES)
 endif
 
-#$(COMPILE_PACKAGES): base-files-compile
-#$(INSTALL_PACKAGES): base-files-install
-
 $(TARGET_DIR):
 	mkdir -p $(TARGET_DIR)
 
@@ -59,7 +56,8 @@ $(TARGET_DIR):
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 
-%-install: %-compile
+#%-install: %-compile
+%-install:
 	@$(START_TRACE) "package/$(patsubst %-install,%,$@)-install: "
 	@$(MAKE) -C $(patsubst %-install,%,$@) install
 	@$(CMD_TRACE) " done"

+ 16 - 9
package/busybox/Makefile

@@ -18,23 +18,28 @@ include $(TOPDIR)/mk/package.mk
 
 $(eval $(call PKG_template,BUSYBOX,${PKG_NAME},${PKG_VERSION}-${PKG_RELEASE},${PKG_DEPENDS},${PKG_DESCR},${PKG_SECTION}))
 
-do-configure:
+${TOPDIR}/.busyboxcfg: ${TOPDIR}/.config
 	grep BUSYBOX_ $(TOPDIR)/.config|sed -e 's/BUSYBOX_/CONFIG_/' > \
-		${WRKBUILD}/.config
-	$(SED) 's@IDIR@${WRKINST}' ${WRKBUILD}/.config
+		${TOPDIR}/.busyboxcfg
+
+${WRKBUILD}/.config: ${TOPDIR}/.busyboxcfg
+	cp $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
+	$(SED) 's;@IDIR@;${WRKINST};' ${WRKBUILD}/.config
+	
+do-configure: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
 ifeq ($(ADK_NATIVE),y)
 	yes '' | \
 	$(MAKE) V=1 \
 	    IPKG_ARCH="$(ARCH)" \
-	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig
+	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig $(MAKE_TRACE)
 else
 	yes '' | \
 	$(MAKE) V=1 CROSS_COMPILE="$(TARGET_CROSS)" \
 	    EXTRA_CFLAGS="$(TARGET_CFLAGS)" IPKG_ARCH="$(ARCH)" \
-	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig
+	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig $(MAKE_TRACE)
 endif
 
-do-build:
+do-build: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
 ifeq ($(ADK_NATIVE),y)
 	$(MAKE) V=1 \
 	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
@@ -43,13 +48,13 @@ else
 	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
 endif
 
-do-install: ${TOPDIR}/.config
+do-install: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
 ifeq ($(ADK_NATIVE),y)
 	$(MAKE) V=1 \
-	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install
+	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install $(MAKE_TRACE)
 else
 	$(MAKE) V=1 CROSS_COMPILE="$(TARGET_CROSS)" \
-	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install
+	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) install $(MAKE_TRACE)
 endif
 ifeq ($(ADK_DEBUG),y)
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
@@ -57,4 +62,6 @@ ifeq ($(ADK_DEBUG),y)
 endif
 	$(CP) $(WRKINST)/* $(IDIR_BUSYBOX)/
 
+fake:	$(TOPDIR)/.busyboxcfg do-configure do-install
+
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 5 - 0
scripts/cpio

@@ -0,0 +1,5 @@
+#!/usr/bin/env bash
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+/bin/cpio --quiet "$@"