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 15 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
 .tmpconfig.h
 .prereq_done
 .prereq_done
 .config*
 .config*
+.busyboxcfg
 .defconfig
 .defconfig
 all.config
 all.config
 .cfg/
 .cfg/
 .cfg.*/
 .cfg.*/
 cross_*/
 cross_*/
 root_*/
 root_*/
-bin_*/
+bin/
 build_*/
 build_*/
 config/*.o
 config/*.o
 config/lxdialog/*.o
 config/lxdialog/*.o

+ 0 - 1
TODO

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

+ 7 - 12
mk/build.mk

@@ -57,10 +57,7 @@ noconfig_targets:=	menuconfig \
 			distclean \
 			distclean \
 			tags
 			tags
 
 
-MAKECLEANDIR_SYMBOLS=	ADK_TARGET_LIB_UCLIBC \
+MAKECLEANDIR_SYMBOLS=	ADK_DEBUG
-			ADK_TARGET_LIB_GLIBC \
-			ADK_TARGET_LIB_ECLIBC \
-			ADK_DEBUG
 
 
 MAKECLEAN_SYMBOLS=	ADK_TARGET_PACKAGE_IPKG \
 MAKECLEAN_SYMBOLS=	ADK_TARGET_PACKAGE_IPKG \
 			ADK_TARGET_PACKAGE_RPM \
 			ADK_TARGET_PACKAGE_RPM \
@@ -89,11 +86,7 @@ POSTCONFIG=		-@ \
 		    "$$what' might be required!"; \
 		    "$$what' might be required!"; \
 		break; \
 		break; \
 	done; \
 	done; \
-	fi; \
+	if [ -f .busyboxcfg ];then rm .busyboxcfg;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; \
 	fi; \
 	fi; \
 	fi
 	fi
 
 
@@ -238,14 +231,15 @@ cleandir:
 	rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) \
 	rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) \
 	    $(TOOLS_BUILD_DIR)
 	    $(TOOLS_BUILD_DIR)
 	rm -f .menu .tmpconfig.h ${TOPDIR}/package/*/info.mk \
 	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:
 cleantarget:
 	@$(TRACE) cleantarget
 	@$(TRACE) cleantarget
 	@$(MAKE) -C $(CONFIG) clean $(MAKE_TRACE)
 	@$(MAKE) -C $(CONFIG) clean $(MAKE_TRACE)
 	rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg
 	rm -rf $(BUILD_DIR) $(BIN_DIR) $(TARGET_DIR) ${TOPDIR}/.cfg
 	rm -rf $(TOOLCHAIN_BUILD_DIR) $(STAGING_PARENT) all.config .defconfig
 	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:
 distclean:
 	@$(TRACE) distclean
 	@$(TRACE) distclean
@@ -254,7 +248,8 @@ distclean:
 	    ${TOPDIR}/.cfg* ${TOPDIR}/package/pkglist.d $(TOPDIR)/bulkdir
 	    ${TOPDIR}/.cfg* ${TOPDIR}/package/pkglist.d $(TOPDIR)/bulkdir
 	@rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR)
 	@rm -rf $(TOOLCHAIN_BUILD_DIR_PFX) $(STAGING_PARENT_PFX) $(TOOLS_BUILD_DIR)
 	@rm -f .config* .defconfig .tmpconfig.h all.config ${TOPDIR}/prereq.mk \
 	@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)
 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)
 BASE_DIR:=		$(TOPDIR)
 DISTDIR?=		${BASE_DIR}/dl
 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_*
 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_PARENT_PFX:=	${BASE_DIR}/cross_*
 STAGING_TOOLS:=		${STAGING_PARENT}/host
 STAGING_TOOLS:=		${STAGING_PARENT}/host
 STAGING_DIR:=		${STAGING_PARENT}/target
 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_*
 TOOLCHAIN_BUILD_DIR_PFX=$(BASE_DIR)/toolchain_build_*
 TOOLS_BUILD_DIR=	$(BASE_DIR)/tools_build
 TOOLS_BUILD_DIR=	$(BASE_DIR)/tools_build
 SCRIPT_DIR:=		$(BASE_DIR)/scripts
 SCRIPT_DIR:=		$(BASE_DIR)/scripts
-BIN_DIR:=		$(BASE_DIR)/bin_${ADK_TARGET}
+BIN_DIR:=		$(BASE_DIR)/bin/${ADK_TARGET}_${ADK_LIBC}
-BIN_DIR_PFX:=		$(BASE_DIR)/bin_*
+BIN_DIR_PFX:=		$(BASE_DIR)/bin
 PACKAGE_DIR:=		$(BIN_DIR)/packages
 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_DIR_PFX:=	$(BASE_DIR)/root_*
 TARGET_PATH=		${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
 TARGET_PATH=		${SCRIPT_DIR}:${STAGING_TOOLS}/bin:${STAGING_DIR}/scripts:${_PATH}
 REAL_GNU_TARGET_NAME=	$(CPU_ARCH)-linux-$(ADK_TARGET_SUFFIX)
 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)
 install: base-files-install $(INSTALL_PACKAGES)
 endif
 endif
 
 
-#$(COMPILE_PACKAGES): base-files-compile
-#$(INSTALL_PACKAGES): base-files-install
-
 $(TARGET_DIR):
 $(TARGET_DIR):
 	mkdir -p $(TARGET_DIR)
 	mkdir -p $(TARGET_DIR)
 
 
@@ -59,7 +56,8 @@ $(TARGET_DIR):
 	$(CMD_TRACE) " done"
 	$(CMD_TRACE) " done"
 	$(END_TRACE)
 	$(END_TRACE)
 
 
-%-install: %-compile
+#%-install: %-compile
+%-install:
 	@$(START_TRACE) "package/$(patsubst %-install,%,$@)-install: "
 	@$(START_TRACE) "package/$(patsubst %-install,%,$@)-install: "
 	@$(MAKE) -C $(patsubst %-install,%,$@) install
 	@$(MAKE) -C $(patsubst %-install,%,$@) install
 	@$(CMD_TRACE) " done"
 	@$(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}))
 $(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_/' > \
 	grep BUSYBOX_ $(TOPDIR)/.config|sed -e 's/BUSYBOX_/CONFIG_/' > \
-		${WRKBUILD}/.config
+		${TOPDIR}/.busyboxcfg
-	$(SED) 's@IDIR@${WRKINST}' ${WRKBUILD}/.config
+
+${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)
 ifeq ($(ADK_NATIVE),y)
 	yes '' | \
 	yes '' | \
 	$(MAKE) V=1 \
 	$(MAKE) V=1 \
 	    IPKG_ARCH="$(ARCH)" \
 	    IPKG_ARCH="$(ARCH)" \
-	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig
+	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig $(MAKE_TRACE)
 else
 else
 	yes '' | \
 	yes '' | \
 	$(MAKE) V=1 CROSS_COMPILE="$(TARGET_CROSS)" \
 	$(MAKE) V=1 CROSS_COMPILE="$(TARGET_CROSS)" \
 	    EXTRA_CFLAGS="$(TARGET_CFLAGS)" IPKG_ARCH="$(ARCH)" \
 	    EXTRA_CFLAGS="$(TARGET_CFLAGS)" IPKG_ARCH="$(ARCH)" \
-	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig
+	    ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) oldconfig $(MAKE_TRACE)
 endif
 endif
 
 
-do-build:
+do-build: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
 ifeq ($(ADK_NATIVE),y)
 ifeq ($(ADK_NATIVE),y)
 	$(MAKE) V=1 \
 	$(MAKE) V=1 \
 	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
 	    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
 	    IPKG_ARCH="$(ARCH)" ARCH="$(ARCH)" HOSTCC="$(HOSTCC)" -C $(WRKBUILD) busybox
 endif
 endif
 
 
-do-install: ${TOPDIR}/.config
+do-install: $(TOPDIR)/.busyboxcfg ${WRKBUILD}/.config
 ifeq ($(ADK_NATIVE),y)
 ifeq ($(ADK_NATIVE),y)
 	$(MAKE) V=1 \
 	$(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
 else
 	$(MAKE) V=1 CROSS_COMPILE="$(TARGET_CROSS)" \
 	$(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
 endif
 ifeq ($(ADK_DEBUG),y)
 ifeq ($(ADK_DEBUG),y)
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
 	${INSTALL_BIN} $(WRKBUILD)/busybox_unstripped \
@@ -57,4 +62,6 @@ ifeq ($(ADK_DEBUG),y)
 endif
 endif
 	$(CP) $(WRKINST)/* $(IDIR_BUSYBOX)/
 	$(CP) $(WRKINST)/* $(IDIR_BUSYBOX)/
 
 
+fake:	$(TOPDIR)/.busyboxcfg do-configure do-install
+
 include ${TOPDIR}/mk/pkg-bottom.mk
 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 "$@"