From 2e3a8c064b0bbe7cccec85b4a2bb9082ef7d8433 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Wed, 11 Aug 2010 12:55:00 +0200 Subject: [PATCH] Contribs: port libupnp to mingw and make it compile This is untested for the VLC module --- extras/contrib/src/Makefile | 11 +- .../src/Patches/libupnp-configure.patch | 100 ++++++++++++++++++ .../contrib/src/Patches/libupnp-mingw.patch | 40 +++++++ 3 files changed, 150 insertions(+), 1 deletion(-) create mode 100644 extras/contrib/src/Patches/libupnp-configure.patch create mode 100644 extras/contrib/src/Patches/libupnp-mingw.patch diff --git a/extras/contrib/src/Makefile b/extras/contrib/src/Makefile index 04608aa81b..6d6fcd04b5 100644 --- a/extras/contrib/src/Makefile +++ b/extras/contrib/src/Makefile @@ -2407,9 +2407,18 @@ libupnp-$(UPNP_VERSION).tar.bz2: libupnp: libupnp-$(UPNP_VERSION).tar.bz2 $(EXTRACT_BZ2) + patch -p0 < Patches/libupnp-mingw.patch +ifdef HAVE_WIN32 + patch -p0 < Patches/libupnp-configure.patch + cd $@; libtoolize&& autoreconf +endif + +ifdef HAVE_WIN32 +LIBUPNP_ECFLAGS=-DPTW32_STATIC_LIB +endif .libupnp: libupnp - (cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-samples --without-documentation --disable-webserver CFLAGS="$(CFLAGS) -O3" && make && make install) + (cd $<; $(HOSTCC) ./configure $(HOSTCONF) --prefix=$(PREFIX) --disable-samples --without-documentation --enable-static --disable-webserver CFLAGS="$(CFLAGS) -O3 -DUPNP_STATIC_LIB $(LIBUPNP_ECFLAGS)" && make && make install) touch $@ CLEAN_FILE += .libupnp diff --git a/extras/contrib/src/Patches/libupnp-configure.patch b/extras/contrib/src/Patches/libupnp-configure.patch new file mode 100644 index 0000000000..3d35558da1 --- /dev/null +++ b/extras/contrib/src/Patches/libupnp-configure.patch @@ -0,0 +1,100 @@ +--- libupnp.old/configure.ac 2008-04-25 13:41:16.000000000 +0200 ++++ libupnp/configure.ac 2010-08-11 00:41:04.000000000 +0200 +@@ -332,19 +332,13 @@ + # so just abort if a header file is not found. + AC_CHECK_HEADERS( + [ \ +- arpa/inet.h \ + fcntl.h \ + inttypes.h \ + limits.h \ +- netdb.h \ +- netinet/in.h \ + stdlib.h \ + string.h \ +- sys/ioctl.h \ +- sys/socket.h \ + sys/time.h \ + sys/timeb.h \ +- syslog.h \ + unistd.h \ + ], + [], +@@ -370,39 +364,39 @@ + # Checks for POSIX Threads + # + echo "--------------------------- pthread stuff -------------------------------------" +-ACX_PTHREAD( +- [], +- [AC_MSG_ERROR([POSIX threads are required to build this program])]) ++#ACX_PTHREAD( ++# [], ++# [AC_MSG_ERROR([POSIX threads are required to build this program])]) + # + # Update environment variables for pthreads + # +-CC="$PTHREAD_CC" +-CFLAGS="$PTHREAD_CFLAGS $CFLAGS" +-LIBS="$PTHREAD_LIBS $LIBS" ++#CC="$PTHREAD_CC" ++#CFLAGS="$PTHREAD_CFLAGS $CFLAGS" ++#LIBS="$PTHREAD_LIBS $LIBS" + # + # Determine if pthread_rwlock_t is available + # +-echo "----------------------- pthread_rwlock_t stuff --------------------------------" +-AC_MSG_CHECKING([if pthread_rwlock_t is available]) +-AC_LANG([C]) +-AC_COMPILE_IFELSE( +- [AC_LANG_PROGRAM( +- [#include ], +- [pthread_rwlock_t *x;])], +- [AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t]) +- AC_MSG_RESULT([yes, supported without any options])], +- [AC_COMPILE_IFELSE( +- [AC_LANG_PROGRAM( +- [#define _GNU_SOURCE +- #include ], +- [pthread_rwlock_t *x;])], +- [AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t]) +- CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" +- AC_MSG_RESULT([yes, definition of _GNU_SOURCE required])], +- [AC_DEFINE([UPNP_USE_RWLOCK], [0], [Do not use pthread_rwlock_t]) +- AC_MSG_RESULT([no, needs to fallback to pthread_mutex]) +- AC_MSG_ERROR([pthread_rwlock_t not available])])]) +-echo "-------------------------------------------------------------------------------" ++#echo "----------------------- pthread_rwlock_t stuff --------------------------------" ++#AC_MSG_CHECKING([if pthread_rwlock_t is available]) ++#AC_LANG([C]) ++#AC_COMPILE_IFELSE( ++# [AC_LANG_PROGRAM( ++# [#include ], ++# [pthread_rwlock_t *x;])], ++# [AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t]) ++# AC_MSG_RESULT([yes, supported without any options])], ++# [AC_COMPILE_IFELSE( ++# [AC_LANG_PROGRAM( ++# [#define _GNU_SOURCE ++# #include ], ++# [pthread_rwlock_t *x;])], ++# [AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t]) ++# CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" ++# AC_MSG_RESULT([yes, definition of _GNU_SOURCE required])], ++# [AC_DEFINE([UPNP_USE_RWLOCK], [0], [Do not use pthread_rwlock_t]) ++# AC_MSG_RESULT([no, needs to fallback to pthread_mutex]) ++# AC_MSG_ERROR([pthread_rwlock_t not available])])]) ++#echo "-------------------------------------------------------------------------------" + + + AC_CONFIG_FILES([ +--- libupnp.old/configure.ac 2010-08-11 00:41:04.000000000 +0200 ++++ libupnp/configure.ac 2010-08-11 12:32:48.000000000 +0200 +@@ -349,7 +349,7 @@ + # Checks for typedefs, structures, and compiler characteristics + # + AC_C_CONST +-TYPE_SOCKLEN_T ++#TYPE_SOCKLEN_T + + + # diff --git a/extras/contrib/src/Patches/libupnp-mingw.patch b/extras/contrib/src/Patches/libupnp-mingw.patch new file mode 100644 index 0000000000..a92802674a --- /dev/null +++ b/extras/contrib/src/Patches/libupnp-mingw.patch @@ -0,0 +1,40 @@ +--- libupnp.old/upnp/inc/upnp.h 2008-03-09 01:54:58.000000000 +0100 ++++ libupnp/upnp/inc/upnp.h 2010-08-11 12:40:37.000000000 +0200 +@@ -74,14 +74,16 @@ + typedef __int64 int64_t; + #define PRId64 "I64d" + #define PRIzu "lu" +- #endif +- #ifdef UPNP_USE_BCBPP ++ #elif defined UPNP_USE_BCBPP + /* define some things Borland Builder doesn't know */ + #define UPNP_INLINE inline + typedef __int64 int64_t; + #warning The Borland C compiler is probably broken on PRId64, please someone provide a proper fix here + #define PRId64 "I64d" + #define PRIzu "zu" ++ #else ++ #define UPNP_INLINE inline ++ #define PRIzu "zu" + #endif + #else + #define EXPORT_SPEC +--- libupnp.old/upnp/src/inc/unixutil.h 2008-02-10 02:55:34.000000000 +0100 ++++ libupnp/upnp/src/inc/unixutil.h 2010-08-11 12:48:37.000000000 +0200 +@@ -38,7 +38,15 @@ + #ifndef WIN32 + #include + #else +- typedef int socklen_t; ++ //typedef int socklen_t; ++ #if !defined(UNDER_CE) ++ # define _NO_OLDNAMES 1 ++ # include ++ #endif ++ #include ++ #include ++ #define ENETUNREACH WSAENETUNREACH ++ #define net_errno (WSAGetLastError()) + #define EAFNOSUPPORT 97 + #endif + -- 2.39.2