Browse Source

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 years ago
parent
commit
5df306b0c9
7 changed files with 38 additions and 33 deletions
  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 "$@"