140 lines
4.6 KiB
Diff
140 lines
4.6 KiB
Diff
|
From 8e1dadbcb7ec6be1c568550e97a9e3ce565758bf Mon Sep 17 00:00:00 2001
|
||
|
From: Nirbheek Chauhan <nirbheek@centricular.com>
|
||
|
Date: Wed, 5 Nov 2014 18:35:14 +0530
|
||
|
Subject: [PATCH] Add support for building on/cross-compiling the shared
|
||
|
library for Windows and OS X
|
||
|
|
||
|
Also ensure that the shared library is versioned, and an implib is created on
|
||
|
Windows.
|
||
|
|
||
|
Commit backported from upstream.
|
||
|
|
||
|
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||
|
---
|
||
|
Makefile.in | 53 ++++++++++++++++++++++++++++++++++++++++-------------
|
||
|
1 file changed, 40 insertions(+), 13 deletions(-)
|
||
|
|
||
|
diff --git a/Makefile.in b/Makefile.in
|
||
|
index 5a7fc21..5ca4453 100644
|
||
|
--- a/Makefile.in
|
||
|
+++ b/Makefile.in
|
||
|
@@ -17,7 +17,7 @@
|
||
|
USE_OPENSSL = @USE_OPENSSL@
|
||
|
HAVE_PKG_CONFIG = @HAVE_PKG_CONFIG@
|
||
|
|
||
|
-.PHONY: all test build_table_apps
|
||
|
+.PHONY: all shared_library test build_table_apps
|
||
|
|
||
|
all: test
|
||
|
|
||
|
@@ -43,10 +43,10 @@ endif
|
||
|
CC = @CC@
|
||
|
INCDIR = -Icrypto/include -I$(srcdir)/include -I$(srcdir)/crypto/include
|
||
|
DEFS = @DEFS@
|
||
|
-CPPFLAGS= @CPPFLAGS@
|
||
|
+CPPFLAGS= -fPIC @CPPFLAGS@
|
||
|
CFLAGS = @CFLAGS@
|
||
|
LIBS = @LIBS@
|
||
|
-LDFLAGS = @LDFLAGS@ -L.
|
||
|
+LDFLAGS = -L. @LDFLAGS@
|
||
|
COMPILE = $(CC) $(DEFS) $(INCDIR) $(CPPFLAGS) $(CFLAGS)
|
||
|
SRTPLIB = -lsrtp
|
||
|
|
||
|
@@ -75,12 +75,33 @@ prefix = @prefix@
|
||
|
exec_prefix = @exec_prefix@
|
||
|
includedir = @includedir@
|
||
|
libdir = @libdir@
|
||
|
+bindir = @bindir@
|
||
|
|
||
|
ifeq (1, $(HAVE_PKG_CONFIG))
|
||
|
pkgconfigdir = $(libdir)/pkgconfig
|
||
|
pkgconfig_DATA = libsrtp.pc
|
||
|
endif
|
||
|
|
||
|
+SHAREDLIBVERSION = 1
|
||
|
+ifeq (linux,$(findstring linux,@host@))
|
||
|
+SHAREDLIB_DIR = $(libdir)
|
||
|
+SHAREDLIB_LDFLAGS = -shared -Wl,-soname,$@
|
||
|
+SHAREDLIBSUFFIXNOVER = so
|
||
|
+SHAREDLIBSUFFIX = $(SHAREDLIBSUFFIXNOVER).$(SHAREDLIBVERSION)
|
||
|
+else ifeq (mingw,$(findstring mingw,@host@))
|
||
|
+SHAREDLIB_DIR = $(bindir)
|
||
|
+SHAREDLIB_LDFLAGS = -shared -Wl,--out-implib,libsrtp.dll.a
|
||
|
+SHAREDLIBVERSION =
|
||
|
+SHAREDLIBSUFFIXNOVER = dll
|
||
|
+SHAREDLIBSUFFIX = $(SHAREDLIBSUFFIXNOVER)
|
||
|
+else ifeq (darwin,$(findstring darwin,@host@))
|
||
|
+SHAREDLIB_DIR = $(libdir)
|
||
|
+SHAREDLIB_LDFLAGS = -dynamiclib -twolevel_namespace -undefined dynamic_lookup \
|
||
|
+ -fno-common -headerpad_max_install_names -install_name $(libdir)/$@
|
||
|
+SHAREDLIBSUFFIXNOVER = dylib
|
||
|
+SHAREDLIBSUFFIX = $(SHAREDLIBVERSION).$(SHAREDLIBSUFFIXNOVER)
|
||
|
+endif
|
||
|
+
|
||
|
# implicit rules for object files and test apps
|
||
|
|
||
|
%.o: %.c
|
||
|
@@ -121,9 +142,14 @@ libsrtp.a: $(srtpobj) $(cryptobj) $(gdoi)
|
||
|
ar cr libsrtp.a $^
|
||
|
$(RANLIB) libsrtp.a
|
||
|
|
||
|
-libsrtp.so: $(srtpobj) $(cryptobj) $(gdoi)
|
||
|
- $(CC) -shared -Wl,-soname,libsrtp.so \
|
||
|
- -o libsrtp.so $^ $(LDFLAGS)
|
||
|
+libsrtp.$(SHAREDLIBSUFFIX): $(srtpobj) $(cryptobj) $(gdoi)
|
||
|
+ $(CC) -shared -o $@ $(SHAREDLIB_LDFLAGS) \
|
||
|
+ $^ $(LDFLAGS) $(LIBS)
|
||
|
+ if [ -n "$(SHAREDLIBVERSION)" ]; then \
|
||
|
+ ln -sfn $@ libsrtp.$(SHAREDLIBSUFFIXNOVER); \
|
||
|
+ fi
|
||
|
+
|
||
|
+shared_library: libsrtp.$(SHAREDLIBSUFFIX)
|
||
|
|
||
|
# libcryptomath.a contains general-purpose routines that are used to
|
||
|
# generate tables and verify cryptoalgorithm implementations - this
|
||
|
@@ -212,16 +238,18 @@ libsrtpdoc:
|
||
|
.PHONY: clean superclean distclean install
|
||
|
|
||
|
install:
|
||
|
- @if [ -r $(DESTDIR)$(includedir)/srtp/srtp.h ]; then \
|
||
|
- echo "you should run 'make uninstall' first"; exit 1; \
|
||
|
- fi
|
||
|
$(INSTALL) -d $(DESTDIR)$(includedir)/srtp
|
||
|
$(INSTALL) -d $(DESTDIR)$(libdir)
|
||
|
+ $(INSTALL) -d $(DESTDIR)$(bindir)
|
||
|
cp $(srcdir)/include/*.h $(DESTDIR)$(includedir)/srtp
|
||
|
cp $(srcdir)/crypto/include/*.h $(DESTDIR)$(includedir)/srtp
|
||
|
if [ "$(srcdir)" != "." ]; then cp crypto/include/*.h $(DESTDIR)$(includedir)/srtp; fi
|
||
|
if [ -f libsrtp.a ]; then cp libsrtp.a $(DESTDIR)$(libdir)/; fi
|
||
|
- if [ -f libsrtp.so ]; then cp libsrtp.so $(DESTDIR)$(libdir)/; fi
|
||
|
+ if [ -f libsrtp.dll.a ]; then cp libsrtp.dll.a $(DESTDIR)$(libdir)/; fi
|
||
|
+ if [ -f libsrtp.$(SHAREDLIBSUFFIX) ]; then \
|
||
|
+ cp libsrtp.$(SHAREDLIBSUFFIX) $(DESTDIR)$(SHAREDLIB_DIR)/; \
|
||
|
+ cp libsrtp.$(SHAREDLIBSUFFIXNOVER) $(DESTDIR)$(SHAREDLIB_DIR)/; \
|
||
|
+ fi
|
||
|
if [ "$(pkgconfig_DATA)" != "" ]; then \
|
||
|
$(INSTALL) -d $(DESTDIR)$(pkgconfigdir); \
|
||
|
cp $(srcdir)/$(pkgconfig_DATA) $(DESTDIR)$(pkgconfigdir)/; \
|
||
|
@@ -229,8 +257,7 @@ install:
|
||
|
|
||
|
uninstall:
|
||
|
rm -f $(DESTDIR)$(includedir)/srtp/*.h
|
||
|
- rm -f $(DESTDIR)$(libdir)/libsrtp.a
|
||
|
- rm -f $(DESTDIR)$(libdir)/libsrtp.so
|
||
|
+ rm -f $(DESTDIR)$(libdir)/libsrtp.*
|
||
|
-rmdir $(DESTDIR)$(includedir)/srtp
|
||
|
if [ "$(pkgconfig_DATA)" != "" ]; then \
|
||
|
rm -f $(DESTDIR)$(pkgconfigdir)/$(pkgconfig_DATA); \
|
||
|
@@ -238,7 +265,7 @@ uninstall:
|
||
|
|
||
|
clean:
|
||
|
rm -rf $(cryptobj) $(srtpobj) $(cryptomath) TAGS \
|
||
|
- libcryptomath.a libsrtp.a libsrtp.so core *.core test/core
|
||
|
+ libcryptomath.a libsrtp.* core *.core test/core
|
||
|
for a in * */* */*/*; do \
|
||
|
if [ -f "$$a~" ] ; then rm -f $$a~; fi; \
|
||
|
done;
|
||
|
--
|
||
|
2.1.0
|
||
|
|