]> git.sesse.net Git - vlc/commitdiff
Contribs: port libupnp to mingw and make it compile
authorJean-Baptiste Kempf <jb@videolan.org>
Wed, 11 Aug 2010 10:55:00 +0000 (12:55 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Wed, 11 Aug 2010 10:55:00 +0000 (12:55 +0200)
This is untested for the VLC module

extras/contrib/src/Makefile
extras/contrib/src/Patches/libupnp-configure.patch [new file with mode: 0644]
extras/contrib/src/Patches/libupnp-mingw.patch [new file with mode: 0644]

index 04608aa81b37918005f6eda25d3ce4626001a52d..6d6fcd04b57757ad5ed97e352ee8bd675c71034a 100644 (file)
@@ -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 (file)
index 0000000..3d35558
--- /dev/null
@@ -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.h>],
+-              [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.h>],
+-                      [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.h>],
++#             [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.h>],
++#                     [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 (file)
index 0000000..a928026
--- /dev/null
@@ -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 <sys/socket.h>
+ #else
+-      typedef int socklen_t;
++      //typedef int socklen_t;
++      #if !defined(UNDER_CE)
++      #    define _NO_OLDNAMES 1
++      #    include <io.h>
++      #endif
++      #include <winsock2.h>
++      #include <ws2tcpip.h>
++      #define ENETUNREACH WSAENETUNREACH
++      #define net_errno (WSAGetLastError())
+       #define EAFNOSUPPORT 97
+ #endif