summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Samuelsson2007-09-12 06:34:16 +0200
committerUlf Samuelsson2007-09-12 06:34:16 +0200
commit7521f37372839210e18207223ef54ed768422726 (patch)
treeb83665b04f7a60ca456d331cfd19631147cc41b2
parentUnbreak multiple boards, add Ingo's rt patch (diff)
downloadbuildroot-7521f37372839210e18207223ef54ed768422726.tar.gz
buildroot-7521f37372839210e18207223ef54ed768422726.tar.xz
buildroot-7521f37372839210e18207223ef54ed768422726.zip
Add hooks for creating your own board support package
-rw-r--r--Makefile9
-rw-r--r--docs/buildroot.html38
-rw-r--r--project/project.mk29
3 files changed, 75 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index f37b9ede7..5414644d3 100644
--- a/Makefile
+++ b/Makefile
@@ -35,11 +35,20 @@ noconfig_targets:=menuconfig config oldconfig randconfig \
# Pull in the user's configuration file
ifeq ($(filter $(noconfig_targets),$(MAKECMDGOALS)),)
+ifeq ($(BOARD),)
-include $(TOPDIR).config
+else
+-include $(TOPDIR)/local/$(BOARD)/$(BOARD).config
+endif
endif
ifneq ($(BUILDROOT_DL_DIR),)
BR2_DL_DIR:=$(BUILDROOT_DL_DIR)
endif
+ifneq ($(BUILDROOT_LOCAL),)
+LOCAL:=$(BUILDROOT_LOCAL)
+else
+LOCAL:=local
+endif
# To put more focus on warnings, be less verbose as default
# Use 'make V=1' to see the full commands
diff --git a/docs/buildroot.html b/docs/buildroot.html
index f7871184b..d751250f2 100644
--- a/docs/buildroot.html
+++ b/docs/buildroot.html
@@ -170,6 +170,44 @@
tool.
The file is stored in the "binaries/<code>$(PROJECT)</code>/" directory</p>
+ <h3><a name="local_board_support" id="local_board_support"></a>
+ Creating your own board support</h3>
+
+ <p>Once a package has been unpacked, it is possible to manually update
+ configuration files. Buildroot can automatically save the configuration
+ of buildroot, linux, busybox, uclibc and u-boot in "local/$(PROJECT) by
+ using the command:
+ </p>
+
+<pre>
+ $ make saveconfig
+</pre>
+
+ <p>Once a buildroot configuration has been created by saveconfig,
+ the default "$(TOPDIR)/.config" file can be overridden by</p>
+
+<pre>
+ $ make BOARD=&lt;project&gt;
+</pre>
+
+ <p>Buildroot will then use "local/&lt;project&gt;/&lt;project&gt;.config"
+ instead of ".config". </p>
+
+ <p>If you want to modify your board, you can copy the project configuration
+ file to ".config" by using the command:</p>
+
+<pre>
+ $ make BOARD=&lt;project&gt; getconfig
+</pre>
+
+ <p>You can share your custom board support directory between several buildroot trees
+ by setting the environment variable <code>BUILDROOT_LOCAL</code> to this directory,
+ </p>
+
+
+ <h3><a name="offline_builds" id="offline_builds"></a>
+ Offline builds</h3>
+
<p>If you intend to do an offline-build and just want to download all
sources that you previously selected in &quot;make menuconfig&quot; then
issue:</p>
diff --git a/project/project.mk b/project/project.mk
index 847cde99e..62645850b 100644
--- a/project/project.mk
+++ b/project/project.mk
@@ -1,5 +1,7 @@
+PROJECT_FILE:=$(LOCAL)/$(PROJECT)/$(PROJECT).config
-.PHONY: target-host-info
+
+.PHONY: target-host-info saveconfig getconfig
target-host-info: $(TARGET_DIR)/etc/issue $(TARGET_DIR)/etc/hostname
@@ -12,3 +14,28 @@ $(TARGET_DIR)/etc/issue: .config
$(TARGET_DIR)/etc/hostname: .config
mkdir -p $(TARGET_DIR)/etc
echo "$(TARGET_HOSTNAME)" > $(TARGET_DIR)/etc/hostname
+
+saveconfig: $(CONFIG)/conf
+ mkdir -p $(LOCAL)/$(PROJECT)
+ -cp .config $(PROJECT_FILE)
+ if [ -f $(LINUX26_DIR)/.config ] ; then \
+ cp $(LINUX26_DIR)/.config $(LOCAL)/$(PROJECT)/linux-$(LINUX26_VERSION).config ; \
+ $(SED) '/BR2_PACKAGE_LINUX_KCONFIG/d' $(PROJECT_FILE) ; \
+ echo "BR2_PACKAGE_LINUX_KCONFIG:=$(LOCAL)/$(PROJECT)/linux-$(LINUX26_VERSION).config" >> $(PROJECT_FILE) ; \
+ fi
+ if [ -f $(BUSYBOX_DIR)/.config ] ; then \
+ cp $(BUSYBOX_DIR)/.config $(LOCAL)/$(PROJECT)/busybox-$(BUSYBOX_VERSION).config ; \
+ $(SED) '/BR2_PACKAGE_BUSYBOX_CONFIG/d' $(PROJECT_FILE) ; \
+ echo "BR2_PACKAGE_BUSYBOX_CONFIG:=$(LOCAL)/$(PROJECT)/busybox-$(BUSYBOX_VERSION).config" >> $(PROJECT_FILE) ; \
+ fi
+ if [ -f $(UCLIBC_DIR)/.config ] ; then \
+ cp $(UCLIBC_DIR)/.config $(LOCAL)/$(PROJECT)/uclibc-$(UCLIBC_VER).config ; \
+ $(SED) '/BR2_UCLIBC_CONFIG/d' $(PROJECT_FILE) ; \
+ echo "BR2_UCLIBC_CONFIG:=$(LOCAL)/$(PROJECT)/uclibc-$(UCLIBC_VER).config" >> $(PROJECT_FILE) ; \
+ fi
+ if [ -f $(UBOOT_DIR)/include/configs/$(PROJECT).h ] ; then \
+ cp $(UBOOT_DIR)/include/configs/$(PROJECT).h $(LOCAL)/$(PROJECT)/u-boot/$(PROJECT).h ; \
+ fi
+
+getconfig: $(CONFIG)/conf
+ -cp $(LOCAL)/$(PROJECT)/$(PROJECT).config .config