uboot-tools: fix static linking with OpenSSL
PATCH 1/1 uboot-tools: fix static linking with OpenSSL
Had a patch to U-Boot to use pkg-config to get the OpenSSL link flags when pkg-config is available. This allows to make sure that static linking works properly. The patch requires adding $(TARGET_MAKE_ENV) so that the Buildroot provided pkg-config is used instead of the host one.
The U-Boot patch has been submitted upstream.
Fixes:
http://autobuild.buildroot.org/results/a9f/a9f316cd076a74b8730ce4cdcdb8176da4ed9eb3/
--- ...kg-config-when-available-to-get-SSL-flags.patch | 39 ++++++++++++++++++++++ package/uboot-tools/uboot-tools.mk | 6 ++-- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 package/uboot-tools/0004-tools-use-pkg-config-when-available-to-get-SSL-flags.patch
package/uboot-tools/0004-tools-use-pkg-config-when-available-to-get-SSL-flags.patch new file +39 -0
@@ -0,0 +1,39 @@ +From 7f47f7f8c1a0d634e9febad61504f095476fccc0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <[email protected]> +Date: Tue, 12 May 2015 22:54:29 +0200 +Subject: [PATCH] tools: use pkg-config when available to get SSL flags + +Instead of hardcoding -lssl -lcrypto as the flags needed to build +mkimage with FIT signature enabled, use pkg-config when +available. This allows to properly support cases where static linking +is used, which requires linking with -lz, since OpenSSL uses zlib +internally. + +We gracefully fallback on the previous behavior of hardcoding -lssl +-lcrypto if pkg-config is not available or fails with an error. + +Patch submitted upstream at +http://lists.denx.de/pipermail/u-boot/2015-May/214068.html. + +Signed-off-by: Thomas Petazzoni <[email protected]> +--- + tools/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/Makefile b/tools/Makefile +index 4bbb153..e1bcd59 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -122,7 +122,8 @@ endif + + # MXSImage needs LibSSL + ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) +-HOSTLOADLIBES_mkimage += -lssl -lcrypto ++HOSTLOADLIBES_mkimage += \ ++ $(shell pkg-config --libs libssl 2> /dev/null || echo "-lssl -lcrypto") + endif + + HOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage) +-- +2.1.0 +
package/uboot-tools/uboot-tools.mk +3 -3
@@ -16,14 +16,14 @@ define UBOOT_TOOLS_CONFIGURE_CMDS endef define UBOOT_TOOLS_BUILD_CMDS - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ CROSS_COMPILE="$(TARGET_CROSS)" \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ CROSS_BUILD_TOOLS=y \ CONFIG_FIT_SIGNATURE=$(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT) \ tools-only - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ CROSS_COMPILE="$(TARGET_CROSS)" \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \
@@ -35,7 +35,7 @@ define UBOOT_TOOLS_INSTALL_MKIMAGE $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage endef ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT),y) -UBOOT_TOOLS_DEPENDENCIES += openssl +UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE
Signature · 1 line
2.1.0
PATCH 1/1 uboot-tools: fix static linking with OpenSSL
Quoted 6 lines · Thomas Petazzoni
Had a patch to U-Boot to use pkg-config to get the OpenSSL link flags when pkg-config is available. This allows to make sure that static linking works properly. The patch requires adding $(TARGET_MAKE_ENV) so that the Buildroot provided pkg-config is used instead of the host one.
Quoted 7 lines
The U-Boot patch has been submitted upstream.
Fixes:
http://autobuild.buildroot.org/results/a9f/a9f316cd076a74b8730ce4cdcdb8176da4ed9eb3/
Signed-off-by Thomas Petazzoni <[email protected]>
by running make uboot-tools on the failed build settings & with
the patch applied
Quoted 88 lines
--- ...kg-config-when-available-to-get-SSL-flags.patch | 39 ++++++++++++++++++++++ package/uboot-tools/uboot-tools.mk | 6 ++-- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 package/uboot-tools/0004-tools-use-pkg-config-when-available-to-get-SSL-flags.patchpackage/uboot-tools/0004-tools-use-pkg-config-when-available-to-get-SSL-flags.patch new file +39
-0@@ -0,0 +1,39 @@ +From 7f47f7f8c1a0d634e9febad61504f095476fccc0 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <[email protected]> +Date: Tue, 12 May 2015 22:54:29 +0200 +Subject: [PATCH] tools: use pkg-config when available to get SSL flags + +Instead of hardcoding -lssl -lcrypto as the flags needed to build +mkimage with FIT signature enabled, use pkg-config when +available. This allows to properly support cases where static linking +is used, which requires linking with -lz, since OpenSSL uses zlib +internally. + +We gracefully fallback on the previous behavior of hardcoding -lssl +-lcrypto if pkg-config is not available or fails with an error. + +Patch submitted upstream at +http://lists.denx.de/pipermail/u-boot/2015-May/214068.html. + +Signed-off-by: Thomas Petazzoni <[email protected]> +--- + tools/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tools/Makefile b/tools/Makefile +index 4bbb153..e1bcd59 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -122,7 +122,8 @@ endif + + # MXSImage needs LibSSL + ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) +-HOSTLOADLIBES_mkimage += -lssl -lcrypto ++HOSTLOADLIBES_mkimage += \ ++ $(shell pkg-config --libs libssl 2> /dev/null || echo "-lssl -lcrypto") + endif + + HOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage) +-- +2.1.0 +package/uboot-tools/uboot-tools.mk +3
-4@@ -16,14 +16,14 @@ define UBOOT_TOOLS_CONFIGURE_CMDS endef define UBOOT_TOOLS_BUILD_CMDS - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ CROSS_COMPILE="$(TARGET_CROSS)" \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ CROSS_BUILD_TOOLS=y \ CONFIG_FIT_SIGNATURE=$(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT) \ tools-only - $(MAKE) -C $(@D) \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ CROSS_COMPILE="$(TARGET_CROSS)" \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \@@ -35,7 +35,7 @@ define UBOOT_TOOLS_INSTALL_MKIMAGE $(INSTALL) -m 0755 -D $(@D)/tools/mkimage $(TARGET_DIR)/usr/bin/mkimage endef ifeq ($(BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT),y) -UBOOT_TOOLS_DEPENDENCIES += openssl +UBOOT_TOOLS_DEPENDENCIES += openssl host-pkgconf endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT endif # BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE --2.1.0
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot
PATCH 1/1 uboot-tools: fix static linking with OpenSSL
In reply to Thomas PetazzoniQuoted 3 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Had a patch to U-Boot to use pkg-config to get the OpenSSL link flags
s/Had/Add/
Quoted 6 lines
when pkg-config is available. This allows to make sure that static linking works properly. The patch requires adding $(TARGET_MAKE_ENV) so that the Buildroot provided pkg-config is used instead of the host one.
The U-Boot patch has been submitted upstream.
Thanks!
Quoted 4 lines
Fixes:
http://autobuild.buildroot.org/results/a9f/a9f316cd076a74b8730ce4cdcdb8176da4ed9eb3/
Quoted 8 lines
Signed-off-by Thomas Petazzoni <[email protected]>+ # MXSImage needs LibSSL
+ ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) +-HOSTLOADLIBES_mkimage += -lssl -lcrypto ++HOSTLOADLIBES_mkimage += \
++ $(shell pkg-config --libs libssl 2>/dev/null|| echo "-lssl -lcrypto")
+ endif
This only works because we have a pkg-config wrapper adding --static to the real pkg-config. For people directly using pkg-config this won't fix anything.
But yeah, in the context of Buildroot it does, so committed - Thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 1/1 uboot-tools: fix static linking with OpenSSL
Hi Thomas,
Le 13/05/2015 10:02, Peter Korsgaard a ?crit :
Quoted 6 lines
Quoted 3 lines
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Thomas" == Thomas Petazzoni <[email protected]> writes:
Had a patch to U-Boot to use pkg-config to get the OpenSSL link flags
s/Had/Add/
Quoted 20 lines
Quoted 6 lines
when pkg-config is available. This allows to make sure that static linking works properly. The patch requires adding $(TARGET_MAKE_ENV) so that the Buildroot provided pkg-config is used instead of the host one.
The U-Boot patch has been submitted upstream.
Thanks!
Quoted 11 lines
Fixes:
http://autobuild.buildroot.org/results/a9f/a9f316cd076a74b8730ce4cdcdb8176da4ed9eb3/
Signed-off-by Thomas Petazzoni <[email protected]>+ # MXSImage needs LibSSL
+ ifneq ($(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_FIT_SIGNATURE),) +-HOSTLOADLIBES_mkimage += -lssl -lcrypto ++HOSTLOADLIBES_mkimage += \
++ $(shell pkg-config --libs libssl 2>/dev/null|| echo "-lssl -lcrypto")
It doesn't work for BR2_SHARED_LIBS only:
http://autobuild.buildroot.net/results/483/48345d936c7972dc27ea12bdccfe0d02bbc4112b/build-end.log
-lcrypto is required for PEM_read_X509 and X509_free symbols.
What's about using 'pkg-config --libs openssl' instead ?
Best regards,
Romain
Quoted 10 lines
Quoted 1 line
+ endif
This only works because we have a pkg-config wrapper adding --static to the real pkg-config. For people directly using pkg-config this won't fix anything.
But yeah, in the context of Buildroot it does, so committed - Thanks.
PATCH 1/1 uboot-tools: fix static linking with OpenSSL
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Romain" == Romain Naour <[email protected]> writes:
Hi,
Quoted 7 lines
It doesn't work for
BR2_SHARED_LIBSonly:http://autobuild.buildroot.net/results/483/48345d936c7972dc27ea12bdccfe0d02bbc4112b/build-end.log
-lcrypto is required for
PEM_read_X509andX509_freesymbols.What's about using 'pkg-config --libs openssl' instead ?
Or pkg-config --libs libssl libcrypto like I did for vsftpd in 205f07755661b64da215.
Signature · 2 lines
Venlig hilsen, Peter Korsgaard