From 412ca2a4d4072b5d4d2fa819d62f6a8848ff7fda Mon Sep 17 00:00:00 2001 From: Ulf Samuelsson Date: Thu, 12 Jul 2007 13:11:03 +0000 Subject: BSP Patch: ========================================================= The purpose of the BSP patch is to allow building several boards inside the same buildroot tree. For this to work, each board has to have its own "$(TARGET_DIR)" and all *configurable* packages must be rebuilt for each board. They are now built in the "$(PROJECT_BUILD_DIR)" All non configurable packages can and should still be built in the "$(BUILD_DIR)". If a package is built for one board, then when you build for a second board of the same architecture the build becomes a simple copy of the resulting binaries. ----- Define BR2_PROJECT which will be used as the selector between different boards. Note that BR2_PROJECT allow you to build multiple root file systems for a single board, and should not be confused with BR2_BOARD_NAME which relates to the H/W. ----- Define PROJECT_BUILD_DIR as "PROJECT_BUILD_DIR/$(PROJECT)" Define BINARIES_DIR as "binaries/$(PROJECT)" Define TARGET_DIR as "$(PROJECT_BUILD_DIR)/root" (some prefix/postfix may apply) Resulting images are stored in "$(BINARIES_DIR)" ----- Define a few new environment variables in Makefile PROJECT: Stripped BR2_PROJECT DATE: Date of build in YYYY-MM-DD format HOSTNAME: Stripped BR2_HOSTNAME => /etc/hostname BANNER: Stripped BR2_BANNER => /etc/issue Linux and Busybox will be built in $(PROJECT_BUILD_DIR) More patches will be needed later to ensure all configurable packages are built in this directory. --- Makefile | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index d2c4b7183..d32807265 100644 --- a/Makefile +++ b/Makefile @@ -155,6 +155,12 @@ TARGETS:=uclibc-configured binutils gcc uclibc-target-utils else TARGETS:=uclibc endif + +PROJECT:=$(strip $(subst ",, $(BR2_PROJECT))) +HOSTNAME:=$(strip $(subst ",, $(BR2_HOSTNAME))) +BANNER:=$(strip $(subst ",, $(BR2_BANNER))) + + include toolchain/Makefile.in include package/Makefile.in @@ -183,12 +189,14 @@ TARGETS_CLEAN:=$(patsubst %,%-clean,$(TARGETS)) TARGETS_SOURCE:=$(patsubst %,%-source,$(TARGETS)) TARGETS_DIRCLEAN:=$(patsubst %,%-dirclean,$(TARGETS)) -world: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) $(TARGETS) -dirs: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) +world: $(DL_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) \ + $(BINARIES_DIR) $(STAGING_DIR) $(TARGET_DIR) bsp $(TARGETS) +dirs: $(DL_DIR) $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(STAGING_DIR) -.PHONY: all world dirs clean dirclean distclean source $(TARGETS) \ +.PHONY: all world dirs clean dirclean distclean source bsp $(TARGETS) \ $(TARGETS_CLEAN) $(TARGETS_DIRCLEAN) $(TARGETS_SOURCE) \ - $(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) $(STAGING_DIR) + $(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) $(STAGING_DIR) \ + $(PROJECT_BUILD_DIR) $(BINARIES_DIR) ############################################################# # @@ -196,7 +204,8 @@ dirs: $(DL_DIR) $(BUILD_DIR) $(STAGING_DIR) # dependencies anywhere else # ############################################################# -$(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR): +$(DL_DIR) $(BUILD_DIR) $(TOOL_BUILD_DIR) \ + $(PROJECT_BUILD_DIR) $(BINARIES_DIR) : @mkdir -p $@ $(STAGING_DIR): @@ -221,6 +230,16 @@ $(TARGET_DIR): -find $(TARGET_DIR) -type d -name CVS | xargs rm -rf -find $(TARGET_DIR) -type d -name .svn | xargs rm -rf +bsp: $(TARGET_DIR)/etc/issue $(TARGET_DIR)/etc/hostname + +$(TARGET_DIR)/etc/issue: $(TARGET_DIR) .config + echo "" > $(TARGET_DIR)/etc/issue + echo "" >> $(TARGET_DIR)/etc/issue + echo "$(BANNER)" >> $(TARGET_DIR)/etc/issue + +$(TARGET_DIR)/etc/hostname: $(TARGET_DIR) .config + echo "$(HOSTNAME)" > $(TARGET_DIR)/etc/hostname + source: $(TARGETS_SOURCE) $(HOST_SOURCE) .config.check: dependencies @@ -245,12 +264,13 @@ distclean: ifeq ($(DL_DIR),$(BASE_DIR)/dl) rm -rf $(DL_DIR) endif - rm -rf $(BUILD_DIR) $(LINUX_KERNEL) $(IMAGE) $(BASE_DIR)/include \ + rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) \ + $(LINUX_KERNEL) $(IMAGE) $(BASE_DIR)/include \ .config.cmd $(MAKE) -C $(CONFIG) clean sourceball: - rm -rf $(BUILD_DIR) + rm -rf $(BUILD_DIR) $(PROJECT_BUILD_DIR) $(BINARIES_DIR) set -e; \ cd ..; \ rm -f buildroot.tar.bz2; \ -- cgit v1.2.3