path: root/Makefile
diff options
authorGravatar Wolfgang Grandegger <wg@grandegger.com>2017-07-22 13:15:40 +0200
committerGravatar Thomas Petazzoni <thomas.petazzoni@free-electrons.com>2017-07-22 14:35:13 +0200
commit994301a26f977953549a7330aa6dca239dc2f4d3 (patch)
treefea9e5c9e63d33919cf6c9cdd72b3943b3dfbff6 /Makefile
parent49a2bb396c95ba9ae66cd11fc175bb687449364c (diff)
core: introduce "sdk" target to make a relocatable SDK
We use a separate make target to build a relocatable SDK. We first sanitize the RPATH in host tree. Next we also sanitize the staging tree. Therefore "sdk" must depend on world. Sanitizing staging is not really needed, in the sense that any rpath in there is simply not going to be used. We want to sanitize staging for the following reasons: - To avoid leaking references to the original output directory. This way, we can validate that the SDK is relocatable by running a simple "grep -r ${BASE_DIR} ${HOST_DIR}". Obviously RPATH sanitization is not sufficient (e.g. also the references to source files have to be stripped), but it's a step in the right direction. This reason is obviously only relevant for the SDK. - To make sure that when an executable is copied to target that it actually executes correctly. Since within Buildroot we never copy stuff from staging to target, this is clearly only relevant for the SDK. Finally we install the script "relocate-sdk.sh" into the top directory of the SDK (HOST_DIR) and the SDK location path is stored in the file "HOST_DIR/share/buildroot/sdk-location"- Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'Makefile')
1 files changed, 9 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index d4faa021cd..fc86a7071b 100644
--- a/Makefile
+++ b/Makefile
@@ -552,6 +552,14 @@ prepare: $(BUILD_DIR)/buildroot-config/auto.conf
.PHONY: world
world: target-post-image
+.PHONY: sdk
+sdk: world
+ @$(call MESSAGE,"Rendering the SDK relocatable")
+ $(TOPDIR)/support/scripts/fix-rpath host
+ $(TOPDIR)/support/scripts/fix-rpath staging
+ $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh
+ echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location
# Compatibility symlink in case a post-build script still uses $(HOST_DIR)/usr
$(HOST_DIR)/usr: $(HOST_DIR)
@ln -snf . $@
@@ -1001,6 +1009,7 @@ help:
@echo 'Build:'
@echo ' all - make world'
@echo ' toolchain - build toolchain'
+ @echo ' sdk - build relocatable SDK'
@echo 'Configuration:'
@echo ' menuconfig - interactive curses-based configurator'