From: Ulf Samuelsson Date: Wed, 12 Sep 2007 04:34:16 +0000 (-0000) Subject: Add hooks for creating your own board support package X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7521f37372839210e18207223ef54ed768422726;p=buildroot.git Add hooks for creating your own board support package --- diff --git a/Makefile b/Makefile index f37b9ede70..5414644d37 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 f7871184b5..d751250f2a 100644 --- a/docs/buildroot.html +++ b/docs/buildroot.html @@ -170,6 +170,44 @@ tool. The file is stored in the "binaries/$(PROJECT)/" directory

+

+ Creating your own board support

+ +

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: +

+ +
+ $ make saveconfig
+
+ +

Once a buildroot configuration has been created by saveconfig, + the default "$(TOPDIR)/.config" file can be overridden by

+ +
+ $ make BOARD=<project>
+
+ +

Buildroot will then use "local/<project>/<project>.config" + instead of ".config".

+ +

If you want to modify your board, you can copy the project configuration + file to ".config" by using the command:

+ +
+ $ make BOARD=<project> getconfig
+
+ +

You can share your custom board support directory between several buildroot trees + by setting the environment variable BUILDROOT_LOCAL to this directory, +

+ + +

+ Offline builds

+

If you intend to do an offline-build and just want to download all sources that you previously selected in "make menuconfig" then issue:

diff --git a/project/project.mk b/project/project.mk index 847cde99e2..62645850b7 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