summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2021-10-07 14:41:58 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2021-10-07 14:41:58 +0200
commitac68239d18f227e56933773a68e2edbe92c6aac7 (patch)
tree716487b48ff8b453f9d84996036763375bac3ac8
parentaa54b4be0a467d6180d4113fc5dbba453202ac6b (diff)
parent1c1198a3f252a9af91a128263c9ee25682cf7160 (diff)
downloadbarebox-ac68239d18f227e56933773a68e2edbe92c6aac7.tar.gz
barebox-ac68239d18f227e56933773a68e2edbe92c6aac7.tar.xz
Merge branch 'for-next/targettools'
-rw-r--r--Documentation/user/barebox.rst45
-rw-r--r--Makefile9
-rw-r--r--arch/sandbox/configs/targettools_defconfig9
-rw-r--r--common/Kconfig29
-rw-r--r--scripts/.gitignore3
-rw-r--r--scripts/Kconfig65
-rw-r--r--scripts/Makefile10
-rw-r--r--scripts/imx/.gitignore1
-rw-r--r--scripts/imx/Makefile10
-rw-r--r--scripts/imx/imx-target.c1
-rw-r--r--scripts/imx/imx-usb-loader-target.c1
-rw-r--r--scripts/kwboot-target.c1
-rw-r--r--scripts/omap3-usb-loader-target.c1
-rw-r--r--scripts/omap3-usb-loader.c2
-rw-r--r--scripts/omap4_usbboot-target.c1
15 files changed, 156 insertions, 32 deletions
diff --git a/Documentation/user/barebox.rst b/Documentation/user/barebox.rst
index 503f0b9797..b6b7a57af3 100644
--- a/Documentation/user/barebox.rst
+++ b/Documentation/user/barebox.rst
@@ -262,3 +262,48 @@ the usage for a particular command. barebox has tab completion which will comple
your command. Arguments to commands are also completed depending on the command. If
a command expects a file argument only files will be offered as completion. Other
commands will only complete devices or devicetree nodes.
+
+Building barebox tools
+----------------------
+
+The normal barebox build results in one or more barebox images (cf. :ref:`multi_image`)
+and a number of tools built from its ``scripts/`` directory.
+
+Most tools are used for the barebox build itself: e.g. the device tree compiler,
+the Kconfig machinery and the different image formatting tools that wrap barebox,
+so it may be loaded by the boot ROM of the relevant SoCs.
+
+In addition to these barebox also builds host and target tools that are useful
+outside of barebox build: e.g. to manipulate the environment or to load an
+image over a boot ROM's USB recovery protocol.
+
+There are two ``ARCH=sandbox`` to make this more straight forward:
+
+Host Tools
+^^^^^^^^^^
+
+The ``hosttools_defconfig`` will compile standalone host tools for the
+host (build) system. To build the USB loaders, ``pkg-config`` needs to know
+about ``libusb-1.0``.
+
+.. code-block:: console
+
+ export ARCH=sandbox
+ make hosttools_defconfig
+ make scripts
+
+Target Tools
+^^^^^^^^^^^^
+
+The ``targettools_defconfig`` will cross-compile standalone target tools for the
+target system. To build the USB loaders, ``CROSS_PKG_CONFIG`` needs to know
+about ``libusb-1.0``. This config won't built any host tools, so it's ok to
+set ``CROSS_PKG_CONFIG=pkg-config`` if ``pkg-config`` is primed for target
+use. The default is ``CROSS_PKG_CONFIG=$(CROSS_COMPILE)pkg-config``. Example:
+
+.. code-block:: console
+
+ export ARCH=sandbox CROSS_COMPILE=aarch64-linux-gnu-
+ export CROSS_PKG_CONFIG=pkg-config
+ make targettools_defconfig
+ make scripts
diff --git a/Makefile b/Makefile
index b9c58d7907..dde5ed3141 100644
--- a/Makefile
+++ b/Makefile
@@ -362,6 +362,8 @@ endif
KCONFIG_CONFIG ?= .config
+CROSS_PKG_CONFIG ?= $(CROSS_COMPILE)pkg-config
+
export KCONFIG_CONFIG
# SHELL used by kbuild
@@ -1126,11 +1128,16 @@ CLEAN_DIRS += $(MODVERDIR)
CLEAN_FILES += barebox System.map stickypage.bin include/generated/barebox_default_env.h \
.tmp_version .tmp_barebox* barebox.bin barebox.map \
.tmp_kallsyms* barebox.ldr compile_commands.json \
- scripts/bareboxenv-target barebox-flash-image \
+ barebox-flash-image \
barebox.srec barebox.s5p barebox.ubl barebox.zynq \
barebox.uimage barebox.spi barebox.kwb barebox.kwbuart \
barebox.efi barebox.canon-a1100.bin
+CLEAN_FILES += scripts/bareboxenv-target scripts/kernel-install-target \
+ scripts/bareboxcrc32-target scripts/bareboximd-target \
+ scripts/omap3-usb-loader-target scripts/omap4_usbboot-target \
+ scripts/imx-usb-loader-target scripts/kwboot-target
+
# Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config usr/include include/generated Documentation/commands
MRPROPER_FILES += .config .config.old .version .old_version \
diff --git a/arch/sandbox/configs/targettools_defconfig b/arch/sandbox/configs/targettools_defconfig
new file mode 100644
index 0000000000..d06074790c
--- /dev/null
+++ b/arch/sandbox/configs/targettools_defconfig
@@ -0,0 +1,9 @@
+CONFIG_IMD=y
+CONFIG_IMD_TARGET=y
+CONFIG_KERNEL_INSTALL_TARGET=y
+CONFIG_BAREBOXENV_TARGET=y
+CONFIG_BAREBOXCRC32_TARGET=y
+CONFIG_MVEBU_KWBOOT_TARGET=y
+CONFIG_ARCH_IMX_USBLOADER_TARGET=y
+CONFIG_OMAP3_USB_LOADER_TARGET=y
+CONFIG_OMAP4_USBBOOT_TARGET=y
diff --git a/common/Kconfig b/common/Kconfig
index 85fb63fb2c..4239ddfb19 100644
--- a/common/Kconfig
+++ b/common/Kconfig
@@ -734,19 +734,6 @@ config IMD
select CRC32
bool "barebox metadata support"
-config IMD_TARGET
- bool "build bareboximd target tool"
- depends on IMD
-
-config KERNEL_INSTALL_TARGET
- bool
- depends on !SANDBOX
- prompt "Build kernel-install utility for the target"
- help
- Enable this to compile the kernel-install script using the cross
- compiler. The utility for the target will be under
- scripts/kernel-install-target
-
choice
prompt "console support"
default CONSOLE_FULL
@@ -993,22 +980,6 @@ config DEFAULT_ENVIRONMENT_PATH
be taken. Relative paths will be relative to the barebox top-level
directory, but absolute paths are fine as well.
-config BAREBOXENV_TARGET
- bool
- depends on !SANDBOX
- prompt "build bareboxenv tool for target"
- help
- 'bareboxenv' is a tool to access the barebox environment from a running Linux
- system. Say yes here to build it for the target.
-
-config BAREBOXCRC32_TARGET
- bool
- prompt "build bareboxcrc32 tool for target"
- depends on !SANDBOX
- help
- 'bareboxcrc32' is a userspacetool to generate the crc32 checksums the same way
- barebox does. Say yes here to build it for the target.
-
config HAS_SCHED
bool
diff --git a/scripts/.gitignore b/scripts/.gitignore
index 9577d568ed..cf645ec746 100644
--- a/scripts/.gitignore
+++ b/scripts/.gitignore
@@ -8,6 +8,7 @@ bareboximd
kallsyms
kwbimage
kwboot
+kwboot-target
gen_netx_image
omap_signGP
mk-omap-image
@@ -27,7 +28,9 @@ mxsboot
mxs-usb-loader
/omap3-usb-loader
omap4_usbboot
+omap4_usbboot-target
omap3-usb-loader
+omap3-usb-loader-target
mips-relocs
rsatoc
stm32image
diff --git a/scripts/Kconfig b/scripts/Kconfig
index b903486ecd..a490aaa44e 100644
--- a/scripts/Kconfig
+++ b/scripts/Kconfig
@@ -40,3 +40,68 @@ config OMAP4_HOSTTOOL_USBBOOT
You need libusb-1.0 to compile this tool.
endmenu
+
+menu "Target Tools"
+
+config IMD_TARGET
+ bool "build bareboximd target tool"
+ depends on IMD
+
+config KERNEL_INSTALL_TARGET
+ bool
+ prompt "Build kernel-install utility for the target"
+ help
+ Enable this to compile the kernel-install script using the cross
+ compiler. The utility for the target will be under
+ scripts/kernel-install-target
+
+config BAREBOXENV_TARGET
+ bool
+ prompt "build bareboxenv tool for target"
+ help
+ 'bareboxenv' is a tool to access the barebox environment from a running Linux
+ system. Say yes here to build it for the target.
+
+config BAREBOXCRC32_TARGET
+ bool
+ prompt "build bareboxcrc32 tool for target"
+ help
+ 'bareboxcrc32' is a userspacetool to generate the crc32 checksums the same way
+ barebox does. Say yes here to build it for the target.
+
+config HAS_TARGET_LIBUSB_1_0
+ def_bool $(success,$(CROSS_PKG_CONFIG) --exists libusb-1.0)
+ help
+ Ensure $(CROSS_PKG_CONFIG) is set to a valid pkg-config
+ binary that knows about libusb-1.0 compiled for the
+ target architecture.
+
+config MVEBU_KWBOOT_TARGET
+ bool "kwboot target tool"
+ help
+ Say Y here to build the kwboot tool for the target
+ to bootstrap over UART.
+
+config ARCH_IMX_USBLOADER_TARGET
+ depends on HAS_TARGET_LIBUSB_1_0
+ bool "imx-usb-loader for target"
+ help
+ Say Y here to build the imx-usb-loader tool for the target.
+ The cross toolchain needs libusb-1.0 to compile this tool.
+
+config OMAP3_USB_LOADER_TARGET
+ bool "omap3 USB loader for target"
+ depends on HAS_TARGET_LIBUSB_1_0
+ help
+ Say Y here to build the omap3 usb loader tool for the target.
+ The cross toolchain needs libusb-1.0 to compile this tool.
+
+
+config OMAP4_USBBOOT_TARGET
+ bool "omap4 usbboot for target"
+ depends on HAS_TARGET_LIBUSB_1_0
+ help
+ Say Y here to build the omap4 usb loader tool for the target.
+ The cross toolchain needs libusb-1.0 to compile this tool.
+
+endmenu
diff --git a/scripts/Makefile b/scripts/Makefile
index eb0f5c5805..1527b07d47 100644
--- a/scripts/Makefile
+++ b/scripts/Makefile
@@ -41,8 +41,16 @@ userprogs-always-$(CONFIG_BAREBOXENV_TARGET) += bareboxenv-target
userprogs-always-$(CONFIG_KERNEL_INSTALL_TARGET) += kernel-install-target
userprogs-always-$(CONFIG_BAREBOXCRC32_TARGET) += bareboxcrc32-target
userprogs-always-$(CONFIG_IMD_TARGET) += bareboximd-target
+userprogs-always-$(CONFIG_OMAP3_USB_LOADER_TARGET) += omap3-usb-loader-target
+userprogs-always-$(CONFIG_OMAP4_USBBOOT_TARGET) += omap4_usbboot-target
+userprogs-always-$(CONFIG_MVEBU_KWBOOT_TARGET) += kwboot-target
-userccflags += -I $(srctree)/$(src)/include
+omap3-usb-loader-target-userccflags += `$(CROSS_PKG_CONFIG) --cflags libusb-1.0`
+omap3-usb-loader-target-userldlibs += `$(CROSS_PKG_CONFIG) --libs libusb-1.0`
+omap4_usbboot-target-userccflags += `$(CROSS_PKG_CONFIG) --cflags libusb-1.0`
+omap4_usbboot-target-userldlibs += -lpthread `$(CROSS_PKG_CONFIG) --libs libusb-1.0`
+
+userccflags += -I $(srctree)/$(src)/include -isystem $(srctree)/scripts/include
subdir-y += mod
subdir-y += imx
diff --git a/scripts/imx/.gitignore b/scripts/imx/.gitignore
index 84e6f2b406..341aec9ee4 100644
--- a/scripts/imx/.gitignore
+++ b/scripts/imx/.gitignore
@@ -1,2 +1,3 @@
imx-usb-loader
+imx-usb-loader-target
imx-image
diff --git a/scripts/imx/Makefile b/scripts/imx/Makefile
index 029f9ca9f8..a7f487a045 100644
--- a/scripts/imx/Makefile
+++ b/scripts/imx/Makefile
@@ -4,13 +4,23 @@ hostprogs-always-$(CONFIG_ARCH_IMX_USBLOADER) += imx-usb-loader
HOSTCFLAGS_imx-usb-loader.o = `pkg-config --cflags libusb-1.0`
HOSTLDLIBS_imx-usb-loader = `pkg-config --libs libusb-1.0`
+imx-usb-loader-target-userccflags += `$(CROSS_PKG_CONFIG) --cflags libusb-1.0`
+imx-usb-loader-target-userldlibs += `$(CROSS_PKG_CONFIG) --libs libusb-1.0`
+
HOSTCFLAGS_imx.o = -I$(srctree)/arch/arm/mach-imx/include
+imx-target-userccflags += -I$(srctree)/arch/arm/mach-imx/include
HOSTCFLAGS_imx-image.o = -I$(srctree) -I$(srctree)/arch/arm/mach-imx/include
HOSTCFLAGS_imx-usb-loader.o += -I$(srctree) -I$(srctree)/arch/arm/mach-imx/include
+imx-usb-loader-target-userccflags += -I$(srctree) -I$(srctree)/arch/arm/mach-imx/include
ifdef CONFIG_ARCH_IMX_IMXIMAGE_SSL_SUPPORT
HOSTCFLAGS_imx-image.o += -DIMXIMAGE_SSL_SUPPORT
HOSTLDLIBS_imx-image = `pkg-config --libs openssl`
endif
imx-usb-loader-objs := imx-usb-loader.o imx.o
+imx-usb-loader-target-objs := imx-usb-loader-target.o imx-target.o
imx-image-objs := imx-image.o imx.o
+
+userprogs-always-$(CONFIG_ARCH_IMX_USBLOADER_TARGET) += imx-usb-loader-target
+
+userccflags += -I $(srctree)/$(src)/include -isystem $(srctree)/scripts/include
diff --git a/scripts/imx/imx-target.c b/scripts/imx/imx-target.c
new file mode 100644
index 0000000000..4062eed6f6
--- /dev/null
+++ b/scripts/imx/imx-target.c
@@ -0,0 +1 @@
+#include "imx.c"
diff --git a/scripts/imx/imx-usb-loader-target.c b/scripts/imx/imx-usb-loader-target.c
new file mode 100644
index 0000000000..f2050aec17
--- /dev/null
+++ b/scripts/imx/imx-usb-loader-target.c
@@ -0,0 +1 @@
+#include "imx-usb-loader.c"
diff --git a/scripts/kwboot-target.c b/scripts/kwboot-target.c
new file mode 100644
index 0000000000..68cde2d24c
--- /dev/null
+++ b/scripts/kwboot-target.c
@@ -0,0 +1 @@
+#include "kwboot.c"
diff --git a/scripts/omap3-usb-loader-target.c b/scripts/omap3-usb-loader-target.c
new file mode 100644
index 0000000000..c99c261a02
--- /dev/null
+++ b/scripts/omap3-usb-loader-target.c
@@ -0,0 +1 @@
+#include "omap3-usb-loader.c"
diff --git a/scripts/omap3-usb-loader.c b/scripts/omap3-usb-loader.c
index 599a93856a..0f352c8453 100644
--- a/scripts/omap3-usb-loader.c
+++ b/scripts/omap3-usb-loader.c
@@ -28,7 +28,7 @@
#include <errno.h>
#include <libgen.h> /* for basename */
-#include <libusb-1.0/libusb.h> /* the main event */
+#include <libusb.h> /* the main event */
/* Device specific defines (OMAP)
* Primary source: http://www.ti.com/lit/pdf/sprugn4
diff --git a/scripts/omap4_usbboot-target.c b/scripts/omap4_usbboot-target.c
new file mode 100644
index 0000000000..3dd6065337
--- /dev/null
+++ b/scripts/omap4_usbboot-target.c
@@ -0,0 +1 @@
+#include "omap4_usbboot.c"