* [Buildroot] [PATCH v3] package/cryptopp: add a target build configuration
@ 2020-07-28 9:53 Kamel Bouhara
2022-01-07 23:10 ` Thomas Petazzoni
0 siblings, 1 reply; 2+ messages in thread
From: Kamel Bouhara @ 2020-07-28 9:53 UTC (permalink / raw)
To: buildroot
Currently only a host build is supported for cryptopp, this add a new
configuration and build support for the make target.
Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
---
Changes in v3:
- Added explicit configuration with LDCONF=/bin/true to make sure
symlink will exist on both target and host.
- Improved patch commit description
Changes in v2:
- Fixed indentations issue
- Removed unrequired Config.in.host
- Added a depends on !BR2_STATIC_LIBS to build only in dynamic
configuration.
- Fixed inconsistency between TARGET_INSTALL and STAGING_INSTALL
---
package/Config.in | 1 +
...ied-SONAME-to-shared-object-for-Linu.patch | 30 +++++++++++++++++++
package/cryptopp/Config.in | 8 +++++
package/cryptopp/cryptopp.mk | 26 +++++++++++++++-
4 files changed, 64 insertions(+), 1 deletion(-)
create mode 100644 package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch
create mode 100644 package/cryptopp/Config.in
diff --git a/package/Config.in b/package/Config.in
index 9c4843be07..014f57a54a 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1279,6 +1279,7 @@ menu "Crypto"
source "package/botan/Config.in"
source "package/ca-certificates/Config.in"
source "package/cryptodev/Config.in"
+ source "package/cryptopp/Config.in"
source "package/gcr/Config.in"
source "package/gnutls/Config.in"
source "package/libargon2/Config.in"
diff --git a/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch b/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch
new file mode 100644
index 0000000000..11f3090767
--- /dev/null
+++ b/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch
@@ -0,0 +1,30 @@
+From 78eb43f50978ffd780cf31b1cea6736dadc6b155 Mon Sep 17 00:00:00 2001
+From: Kamel Bouhara <kamel.bouhara@bootlin.com>
+Date: Mon, 6 Jul 2020 17:10:55 +0200
+Subject: [PATCH] Add fully-qualified SONAME to shared object for Linux
+
+From: http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
+
+Add SONAME libcryptopp.so.8 required for library runtime and application
+linking.
+
+Signed-off-by: Kamel Bouhara <kamel.bouhara@bootlin.com>
+---
+ GNUmakefile | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/GNUmakefile b/GNUmakefile
+index e7b7b3a6..730e2a6f 100755
+--- a/GNUmakefile
++++ b/GNUmakefile
+@@ -1256,6 +1256,7 @@ ifneq ($(wildcard libcryptopp.so$(SOLIB_VERSION_SUFFIX)),)
+ $(CHMOD) 0755 $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_VERSION_SUFFIX)
+ ifeq ($(HAS_SOLIB_VERSION),1)
+ -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so
++ -$(LN) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_COMPAT_SUFFIX)
+ $(LDCONF) $(DESTDIR)$(LIBDIR)
+ endif
+ endif
+--
+2.26.2
+
diff --git a/package/cryptopp/Config.in b/package/cryptopp/Config.in
new file mode 100644
index 0000000000..4ead5339ab
--- /dev/null
+++ b/package/cryptopp/Config.in
@@ -0,0 +1,8 @@
+config BR2_PACKAGE_CRYPTOPP
+ bool "cryptopp"
+ depends on !BR2_STATIC_LIBS
+ help
+ A free C++ class library of cryptographic schemes
+
+comment "cryptopp needs a toolchain w/ dynamic library"
+ depends on BR2_STATIC_LIBS
diff --git a/package/cryptopp/cryptopp.mk b/package/cryptopp/cryptopp.mk
index f1d19386ab..e77287467d 100644
--- a/package/cryptopp/cryptopp.mk
+++ b/package/cryptopp/cryptopp.mk
@@ -31,7 +31,31 @@ define HOST_CRYPTOPP_BUILD_CMDS
endef
define HOST_CRYPTOPP_INSTALL_CMDS
- $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-lib
+ $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(HOST_DIR)" LDCONFIG=/bin/true install-lib
endef
+define CRYPTOPP_EXTRACT_CMDS
+ $(UNZIP) $(CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D)
+endef
+
+CRYPTOPP_CXXFLAGS = $(TARGET_CFLAGS) -fPIC
+
+CRYPTOPP_MAKE_OPTS = \
+ $(TARGET_CONFIGURE_OPTS) \
+ CXXFLAGS="$(CRYPTOPP_CXXFLAGS)"
+
+define CRYPTOPP_BUILD_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CRYPTOPP_MAKE_OPTS) shared
+endef
+
+define CRYPTOPP_INSTALL_TARGET_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" LDCONFIG=/bin/true install-lib
+endef
+
+define CRYPTOPP_INSTALL_STAGING_CMDS
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" libcryptopp.pc
+ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true install-lib
+endef
+
+$(eval $(generic-package))
$(eval $(host-generic-package))
--
2.27.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [Buildroot] [PATCH v3] package/cryptopp: add a target build configuration
2020-07-28 9:53 [Buildroot] [PATCH v3] package/cryptopp: add a target build configuration Kamel Bouhara
@ 2022-01-07 23:10 ` Thomas Petazzoni
0 siblings, 0 replies; 2+ messages in thread
From: Thomas Petazzoni @ 2022-01-07 23:10 UTC (permalink / raw)
To: Kamel Bouhara; +Cc: buildroot
Hello Kamel,
I finally applied, but with a good number of changes, see below.
On Tue, 28 Jul 2020 11:53:46 +0200
Kamel Bouhara <kamel.bouhara@bootlin.com> wrote:
> diff --git a/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch b/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch
> new file mode 100644
> index 0000000000..11f3090767
> --- /dev/null
> +++ b/package/cryptopp/0001-Add-fully-qualified-SONAME-to-shared-object-for-Linu.patch
> @@ -0,0 +1,30 @@
> +From 78eb43f50978ffd780cf31b1cea6736dadc6b155 Mon Sep 17 00:00:00 2001
> +From: Kamel Bouhara <kamel.bouhara@bootlin.com>
> +Date: Mon, 6 Jul 2020 17:10:55 +0200
> +Subject: [PATCH] Add fully-qualified SONAME to shared object for Linux
That's not really what the patch does. What it does is create a symlink
that matches with the SONAME of the library. The question is: how was
it working before. Answer: because of the ldconfig call that creates
such symlinks. But of course, we don't call ldconfig when
cross-compiling, hence the need for your change.
So, I improved the commit log, also changed the GNUmakefile-cross file,
and submitted that upstream:
https://github.com/weidai11/cryptopp/pull/1101
> define HOST_CRYPTOPP_INSTALL_CMDS
> - $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX=$(HOST_DIR) install-lib
> + $(HOST_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(HOST_DIR)" LDCONFIG=/bin/true install-lib
These are unrelated changes, so I dropped them.
> endef
>
> +define CRYPTOPP_EXTRACT_CMDS
> + $(UNZIP) $(CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D)
> +endef
> +
> +CRYPTOPP_CXXFLAGS = $(TARGET_CFLAGS) -fPIC
> +
> +CRYPTOPP_MAKE_OPTS = \
> + $(TARGET_CONFIGURE_OPTS) \
> + CXXFLAGS="$(CRYPTOPP_CXXFLAGS)"
You were missing the logic to handle gcc < 4.9 that exists for the host
package, and that we also need for the target package.
> +
> +define CRYPTOPP_BUILD_CMDS
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(CRYPTOPP_MAKE_OPTS) shared
> +endef
> +
> +define CRYPTOPP_INSTALL_TARGET_CMDS
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(TARGET_DIR)" LDCONFIG=/bin/true install-lib
PREFIX=$(TARGET_DIR) is wrong. It should have been PREFIX=/usr DESTDIR=$(TARGET_DIR)
> +endef
> +
> +define CRYPTOPP_INSTALL_STAGING_CMDS
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" libcryptopp.pc
Building the libcryptopp.pc file is really a build step, so I moved
this to the build step.
> + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) PREFIX="$(STAGING_DIR)" LDCONFIG=/bin/true install-lib
Same as above, PREFIX=$(STAGING_DIR) is wrong, it should be PREFIX=/usr
DESTDIR=$(STAGING_DIR)
Applied with those changes. Thanks!
Thomas
--
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-01-07 23:11 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-28 9:53 [Buildroot] [PATCH v3] package/cryptopp: add a target build configuration Kamel Bouhara
2022-01-07 23:10 ` Thomas Petazzoni
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox