ports/170045: [PATCH] security/cryptopp: Optional build of shared library version
Michael Gmelin
freebsd at grem.de
Sat Jul 21 02:30:18 UTC 2012
>Number: 170045
>Category: ports
>Synopsis: [PATCH] security/cryptopp: Optional build of shared library version
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Sat Jul 21 02:30:14 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator: Michael Gmelin
>Release: FreeBSD 8.2-RELEASE-p1 amd64
>Organization:
Grem Equity GmbH
>Environment:
System: FreeBSD srv06 8.2-RELEASE-p1 FreeBSD 8.2-RELEASE-p1 #0 r221593: Sat May 7 15:12:25
>Description:
Crypto++ includes a shared library target, which is helpful for certain use
cases (including dlopen/dlclose and RTLD_GLOBAL). The FreeBSD port should
allow to facilitate this.
See also:
http://www.cryptopp.com/wiki/Linux#Shared_objects
Port maintainer (delphij at FreeBSD.org) is cc'd.
Generated with FreeBSD Port Tools 0.99_6 (mode: change, diff: suffix)
>How-To-Repeat:
>Fix:
This patch adds a STATIC option, which is enabled by default; future
versions of the port might change the default to disabled, for the time
being it seems more reasonable this way, so current users of cryptopp won't
experience unpleasant surprises on update.
In absence of an official dynamic library versioning scheme upstream the
shared library interface version starts at 0 (so the shared libraries are
installed as libcryptopp.so -> libcryptopp.so.0 -> libcryptopp.so.5.6.1).
Building the dynamic library version adds -fPIC to CXXFLAGS.
The port now uses new-style options and a new option THREADS has been added
to allow thread-safe compilation. This is enabled by default, which - in
practice - only affects the dynamic library version. The change to the
patch to GNUMakefile allows passing of linker options to the shared library
target.
--- cryptopp-5.6.1_2.patch begins here ---
diff -ruN --exclude=CVS ../cryptopp.orig/Makefile ./Makefile
--- ../cryptopp.orig/Makefile 2011-11-10 05:38:32.000000000 +0000
+++ ./Makefile 2012-07-21 01:45:34.103056664 +0000
@@ -7,7 +7,7 @@
PORTNAME= cryptopp
PORTVERSION= 5.6.1
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= security
MASTER_SITES= SF \
http://www.cryptopp.com/
@@ -16,6 +16,12 @@
MAINTAINER= delphij at FreeBSD.org
COMMENT= A free C++ class library of Cryptographic Primitives
+OPTIONS_DEFINE= DEBUG DOCS STATIC THREADS
+OPTIONS_DEFAULT= STATIC THREADS
+STATIC_DESC= Build static version only (no shared libs)
+
+.include <bsd.port.options.mk>
+
NO_WRKSUBDIR= yes
USE_ZIP= yes
EXTRACT_BEFORE_ARGS= -aq
@@ -23,8 +29,26 @@
MAKE_JOBS_SAFE= yes
MAKEFILE= GNUmakefile
-.if !defined(WITH_DEBUG)
-CXXFLAGS+= -DNDEBUG
+LIBVERSION= 0
+PLIST_SUB+= LIBVERSION=${LIBVERSION}
+PLIST_SUB+= PORTVERSION=${PORTVERSION}
+
+.if ${PORT_OPTIONS:MDEBUG}
+CXXFLAGS+= -DNDEBUG
+.endif
+
+.if ${PORT_OPTIONS:MSTATIC}
+PLIST_SUB+= DYNAMIC_ENABLED="@comment "
+.else
+PLIST_SUB+= DYNAMIC_ENABLED=""
+MAKE_ARGS= all libcryptopp.so
+CXXFLAGS+= -fPIC
+USE_LDCONFIG= yes
+.endif
+
+.if ${PORT_OPTIONS:MTHREADS}
+CXXFLAGS+= ${PTHREAD_CFLAGS}
+LDFLAGS+= ${PTHREAD_LIBS}
.endif
do-install:
@@ -36,7 +60,12 @@
-and -not -name 'resource.h'`; do \
${INSTALL_DATA} $$i ${PREFIX}/include/cryptopp; \
done)
-.if !defined(NOPORTDOCS)
+.if !${PORT_OPTIONS:MSTATIC}
+ ${INSTALL_LIB} ${WRKSRC}/libcryptopp.so ${PREFIX}/lib/libcryptopp.so.${PORTVERSION}
+ ${LN} -fs libcryptopp.so.${PORTVERSION} ${PREFIX}/lib/libcryptopp.so.${LIBVERSION}
+ ${LN} -fs libcryptopp.so.${LIBVERSION} ${PREFIX}/lib/libcryptopp.so
+.endif
+.if ${PORT_OPTIONS:MDOCS}
${MKDIR} ${PREFIX}/share/doc/cryptopp
${CP} ${WRKSRC}/Readme.txt ${PREFIX}/share/doc/cryptopp/README
${CP} ${WRKSRC}/License.txt ${PREFIX}/share/doc/cryptopp/License
diff -ruN --exclude=CVS ../cryptopp.orig/files/patch-GNUmakefile ./files/patch-GNUmakefile
--- ../cryptopp.orig/files/patch-GNUmakefile 2011-01-27 20:47:30.000000000 +0000
+++ ./files/patch-GNUmakefile 2012-07-21 01:35:28.726776901 +0000
@@ -1,5 +1,5 @@
--- ./GNUmakefile.orig 2010-08-09 14:22:42.000000000 -0700
-+++ ./GNUmakefile 2011-01-27 12:43:08.905856979 -0800
++++ ./GNUmakefile 2012-07-21 03:14:01.000000000 +0200
@@ -1,4 +1,4 @@
-CXXFLAGS = -DNDEBUG -g -O2
+#CXXFLAGS = -DNDEBUG -g -O2
@@ -19,3 +19,12 @@
ISMINGW = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "mingw")
ifneq ($(GCC42_OR_LATER),0)
+@@ -151,7 +151,7 @@
+ $(RANLIB) $@
+
+ libcryptopp.so: $(LIBOBJS)
+- $(CXX) -shared -o $@ $(LIBOBJS)
++ $(CXX) -shared -o $@ $(CXXFLAGS) $(LDFLAGS) $(LIBOBJS)
+
+ cryptest.exe: libcryptopp.a $(TESTOBJS)
+ $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) -L. -lcryptopp $(LDFLAGS) $(LDLIBS)
diff -ruN --exclude=CVS ../cryptopp.orig/pkg-plist ./pkg-plist
--- ../cryptopp.orig/pkg-plist 2009-03-27 00:02:32.000000000 +0000
+++ ./pkg-plist 2012-07-21 01:45:34.102055960 +0000
@@ -132,6 +132,9 @@
include/cryptopp/zinflate.h
include/cryptopp/zlib.h
lib/libcryptopp.a
+%%DYNAMIC_ENABLED%%lib/libcryptopp.so
+%%DYNAMIC_ENABLED%%lib/libcryptopp.so.%%LIBVERSION%%
+%%DYNAMIC_ENABLED%%lib/libcryptopp.so.%%PORTVERSION%%
@dirrm include/cryptopp
%%PORTDOCS%%%%DOCSDIR%%/README
%%PORTDOCS%%%%DOCSDIR%%/License
--- cryptopp-5.6.1_2.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list