summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rw-r--r--contrib/bzip2/module.defs1
-rw-r--r--contrib/faad2/P00-mingw-types.patch25
-rw-r--r--contrib/ffmpeg/module.defs24
-rw-r--r--contrib/libdvdread/P02-mingw-ssize_t.patch26
-rw-r--r--contrib/libdvdread/P03-mingw-disable-dlopen.patch134
-rw-r--r--contrib/libdvdread/P04-mingw-endian-macros.patch29
-rw-r--r--contrib/libdvdread/P05-mingw-large-file.patch28
-rw-r--r--contrib/libmkv/P00-mingw-large-file.patch24
-rw-r--r--contrib/libmp4v2/P00-mingw-static.patch16
-rw-r--r--contrib/libmp4v2/P01-mingw-msvcrt-lower.patch31
-rw-r--r--contrib/libmp4v2/P02-mingw-configure.patch26
-rw-r--r--contrib/libmp4v2/module.defs12
-rw-r--r--contrib/pthreadw32/module.defs25
-rw-r--r--contrib/pthreadw32/module.rules2
-rw-r--r--contrib/x264/module.defs12
-rw-r--r--contrib/xvidcore/A00-nasm.patch13
-rw-r--r--contrib/xvidcore/A01-fdct.patch8
-rw-r--r--contrib/xvidcore/P00-darwin.patch56
-rw-r--r--contrib/xvidcore/P01-cygwin.patch25
-rw-r--r--contrib/xvidcore/module.defs10
-rw-r--r--contrib/zlib/module.defs6
21 files changed, 449 insertions, 84 deletions
diff --git a/contrib/bzip2/module.defs b/contrib/bzip2/module.defs
index 7c9c5528b..76eacbe90 100644
--- a/contrib/bzip2/module.defs
+++ b/contrib/bzip2/module.defs
@@ -8,6 +8,7 @@ BZIP2.CONFIGURE = $(TOUCH.exe) $@
BZIP2.BUILD.extra = \
CC=$(BZIP2.GCC.gcc) \
CFLAGS="$(call fn.ARGS,BZIP2.GCC,*archs)" \
+ RANLIB="$(RANLIB.exe)"
PREFIX=$(call fn.ABSOLUTE,$(CONTRIB.build/))
BZIP2.BUILD.ntargets = libbz2.a
diff --git a/contrib/faad2/P00-mingw-types.patch b/contrib/faad2/P00-mingw-types.patch
new file mode 100644
index 000000000..3e5bba531
--- /dev/null
+++ b/contrib/faad2/P00-mingw-types.patch
@@ -0,0 +1,25 @@
+diff -Naur faad2.orig/common/mp4ff/mp4ff_int_types.h faad2/common/mp4ff/mp4ff_int_types.h
+--- faad2.orig/common/mp4ff/mp4ff_int_types.h 2005-02-01 08:15:55.000000000 -0500
++++ faad2/common/mp4ff/mp4ff_int_types.h 2008-10-07 16:43:06.000000000 -0400
+@@ -1,7 +1,7 @@
+ #ifndef _MP4FF_INT_TYPES_H_
+ #define _MP4FF_INT_TYPES_H_
+
+-#if defined (_WIN32)
++#if defined(_WIN32) && !defined(__MINGW32__)
+
+ typedef char int8_t;
+ typedef unsigned char uint8_t;
+diff -Naur faad2.orig/frontend/main.c faad2/frontend/main.c
+--- faad2.orig/frontend/main.c 2007-11-01 08:33:29.000000000 -0400
++++ faad2/frontend/main.c 2008-10-07 16:55:49.000000000 -0400
+@@ -31,7 +31,9 @@
+ #ifdef _WIN32
+ #define WIN32_LEAN_AND_MEAN
+ #include <windows.h>
++#ifndef __MINGW32__
+ #define off_t __int64
++#endif
+ #else
+ #include <time.h>
+ #endif
diff --git a/contrib/ffmpeg/module.defs b/contrib/ffmpeg/module.defs
index 63ae39f44..af34b3a92 100644
--- a/contrib/ffmpeg/module.defs
+++ b/contrib/ffmpeg/module.defs
@@ -7,6 +7,8 @@ FFMPEG.EXTRACT.tarbase = ffmpeg-0.5
FFMPEG.CONFIGURE.deps =
FFMPEG.CONFIGURE.env =
FFMPEG.CONFIGURE.host =
+#FFMPEG.CONFIGURE.shared =
+#FFMPEG.CONFIGURE.static =
FFMPEG.CONFIGURE.extra = \
--disable-bsfs \
@@ -21,19 +23,27 @@ FFMPEG.CONFIGURE.extra = \
--enable-gpl \
--enable-libfaad \
--enable-muxer=ipod \
- --enable-pthreads \
--enable-swscale \
--cc="$(GCC.gcc)" \
--extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include)" \
--extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)"
-ifeq ($(BUILD.cross),1)
- FFMPEG.CONFIGURE.extra += --enable-cross-compile --arch=$(BUILD.machine)
-endif
-
-ifeq (cygwin,$(BUILD.system))
- FFMPEG.CONFIGURE.extra += --enable-memalign-hack
+## check against tuple: B-SYSTEM where B is { 0 | 1 } for cross-compiling flag
+ifeq (0-cygwin,$(BUILD.cross)-$(BUILD.system))
+ FFMPEG.CONFIGURE.extra += --enable-pthreads --enable-memalign-hack
FFMPEG.GCC.args.extra = -fno-common
+else ifeq (1-darwin,$(BUILD.cross)-$(BUILD.system))
+ ## section for darwin-archs
+ FFMPEG.CONFIGURE.extra += --enable-pthreads --enable-cross-compile --arch=$(BUILD.machine)
+else ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system))
+ FFMPEG.CONFIGURE.extra += \
+ --enable-w32threads \
+ --enable-memalign-hack \
+ --target-os=mingw32 \
+ --enable-cross-compile --cross-prefix=$(BUILD.cross.prefix)
+ FFMPEG.GCC.args.extra += -fno-common
+else
+ FFMPEG.CONFIGURE.extra += --enable-pthreads
endif
#
diff --git a/contrib/libdvdread/P02-mingw-ssize_t.patch b/contrib/libdvdread/P02-mingw-ssize_t.patch
new file mode 100644
index 000000000..a4dc5eda7
--- /dev/null
+++ b/contrib/libdvdread/P02-mingw-ssize_t.patch
@@ -0,0 +1,26 @@
+diff -Naur libdvdread.orig/configure libdvdread/configure
+--- libdvdread.orig/configure 2006-10-06 04:14:24.000000000 -0400
++++ libdvdread/configure 2009-03-10 17:45:06.000000000 -0400
+@@ -3550,9 +3550,6 @@
+ _ACEOF
+
+ ;;
+- x*mingw32* | x*cygwin*)
+- CFLAGS="${CFLAGS} -Dssize_t=long"
+- ;;
+ x*)
+ ;;
+ esac
+diff -Naur libdvdread.orig/configure.in libdvdread/configure.in
+--- libdvdread.orig/configure.in 2006-10-06 04:12:31.000000000 -0400
++++ libdvdread/configure.in 2009-03-10 17:45:06.000000000 -0400
+@@ -15,9 +15,6 @@
+ CFLAGS="${CFLAGS} -no-cpp-precomp"
+ AC_DEFINE(__DARWIN__, 1, Have a Mac OS X system)
+ ;;
+- x*mingw32* | x*cygwin*)
+- CFLAGS="${CFLAGS} -Dssize_t=long"
+- ;;
+ x*)
+ ;;
+ esac
diff --git a/contrib/libdvdread/P03-mingw-disable-dlopen.patch b/contrib/libdvdread/P03-mingw-disable-dlopen.patch
new file mode 100644
index 000000000..515526289
--- /dev/null
+++ b/contrib/libdvdread/P03-mingw-disable-dlopen.patch
@@ -0,0 +1,134 @@
+diff -Naur libdvdread.orig/configure libdvdread/configure
+--- libdvdread.orig/configure 2006-10-06 04:14:24.000000000 -0400
++++ libdvdread/configure 2009-03-10 17:48:56.000000000 -0400
+@@ -18889,11 +18889,6 @@
+ echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
+ if test $ac_cv_lib_dl_dlopen = yes; then
+ DL_LIBS=-ldl
+-else
+- { { echo "$as_me:$LINENO: error: You need libdl (dlopen)" >&5
+-echo "$as_me: error: You need libdl (dlopen)" >&2;}
+- { (exit 1); exit 1; }; }
+-
+ fi
+
+
+diff -Naur libdvdread.orig/dvdread/dvd_input.c libdvdread/dvdread/dvd_input.c
+--- libdvdread.orig/dvdread/dvd_input.c 2005-09-19 09:43:08.000000000 -0400
++++ libdvdread/dvdread/dvd_input.c 2009-03-10 18:01:43.000000000 -0400
+@@ -44,18 +44,6 @@
+
+ char * (*dvdinput_error) (dvd_input_t);
+
+-#ifdef HAVE_DVDCSS_DVDCSS_H
+-/* linking to libdvdcss */
+-#include <dvdcss/dvdcss.h>
+-#define DVDcss_open(a) dvdcss_open((char*)(a))
+-#define DVDcss_close dvdcss_close
+-#define DVDcss_seek dvdcss_seek
+-#define DVDcss_title dvdcss_title
+-#define DVDcss_read dvdcss_read
+-#define DVDcss_error dvdcss_error
+-#else
+-/* dlopening libdvdcss */
+-#include <dlfcn.h>
+ typedef struct dvdcss_s *dvdcss_handle;
+ static dvdcss_handle (*DVDcss_open) (const char *);
+ static int (*DVDcss_close) (dvdcss_handle);
+@@ -63,7 +51,6 @@
+ static int (*DVDcss_title) (dvdcss_handle, int);
+ static int (*DVDcss_read) (dvdcss_handle, void *, int, int);
+ static char * (*DVDcss_error) (dvdcss_handle);
+-#endif
+
+ /* The DVDinput handle, add stuff here for new input methods. */
+ struct dvd_input_s {
+@@ -290,17 +277,7 @@
+ */
+ void dvdinput_free(void)
+ {
+-#ifdef HAVE_DVDCSS_DVDCSS_H
+- /* linked statically, nothing to free */
+ return;
+-#else
+- if(dvdcss_library) {
+- dlclose(dvdcss_library);
+- dvdcss_library = NULL;
+- }
+- dvdcss_library_init = 0;
+- return;
+-#endif
+ }
+
+
+@@ -324,58 +301,6 @@
+
+ verbose = get_verbose();
+
+-#ifdef HAVE_DVDCSS_DVDCSS_H
+- /* linking to libdvdcss */
+- dvdcss_library = &dvdcss_library; /* Give it some value != NULL */
+- /* the DVDcss_* functions have been #defined at the top */
+- dvdcss_version = &dvdcss_interface_2;
+-
+-#else
+-
+- dvdcss_library = dlopen("libdvdcss.so.2", RTLD_LAZY);
+-
+- if(dvdcss_library != NULL) {
+-#if defined(__OpenBSD__) && !defined(__ELF__)
+-#define U_S "_"
+-#else
+-#define U_S
+-#endif
+- DVDcss_open = (dvdcss_handle (*)(const char*))
+- dlsym(dvdcss_library, U_S "dvdcss_open");
+- DVDcss_close = (int (*)(dvdcss_handle))
+- dlsym(dvdcss_library, U_S "dvdcss_close");
+- DVDcss_title = (int (*)(dvdcss_handle, int))
+- dlsym(dvdcss_library, U_S "dvdcss_title");
+- DVDcss_seek = (int (*)(dvdcss_handle, int, int))
+- dlsym(dvdcss_library, U_S "dvdcss_seek");
+- DVDcss_read = (int (*)(dvdcss_handle, void*, int, int))
+- dlsym(dvdcss_library, U_S "dvdcss_read");
+- DVDcss_error = (char* (*)(dvdcss_handle))
+- dlsym(dvdcss_library, U_S "dvdcss_error");
+-
+- dvdcss_version = (char **)dlsym(dvdcss_library, U_S "dvdcss_interface_2");
+-
+- if(dlsym(dvdcss_library, U_S "dvdcss_crack")) {
+- if(verbose >= 0) {
+- fprintf(stderr,
+- "libdvdread: Old (pre-0.0.2) version of libdvdcss found.\n"
+- "libdvdread: You should get the latest version from "
+- "http://www.videolan.org/\n" );
+- }
+- dlclose(dvdcss_library);
+- dvdcss_library = NULL;
+- } else if(!DVDcss_open || !DVDcss_close || !DVDcss_title || !DVDcss_seek
+- || !DVDcss_read || !DVDcss_error || !dvdcss_version) {
+- if(verbose >= 0) {
+- fprintf(stderr, "libdvdread: Missing symbols in libdvdcss.so.2, "
+- "this shouldn't happen !\n");
+- }
+- dlclose(dvdcss_library);
+- dvdcss_library = NULL;
+- }
+- }
+-#endif /* HAVE_DVDCSS_DVDCSS_H */
+-
+ dvdcss_library_init = 1;
+
+ if(dvdcss_library) {
+diff -Naur libdvdread.orig/dvdread/dvd_reader.c libdvdread/dvdread/dvd_reader.c
+--- libdvdread.orig/dvdread/dvd_reader.c 2006-10-06 03:58:03.000000000 -0400
++++ libdvdread/dvdread/dvd_reader.c 2009-03-10 17:51:22.000000000 -0400
+@@ -183,7 +183,7 @@
+ dev->align = align;
+ }
+
+-#ifdef WIN32 /* replacement gettimeofday implementation */
++#if defined(WIN32) && !defined(__MINGW32__) /* replacement gettimeofday implementation */
+ #include <sys/timeb.h>
+ static int gettimeofday( struct timeval *tv, void *tz )
+ {
diff --git a/contrib/libdvdread/P04-mingw-endian-macros.patch b/contrib/libdvdread/P04-mingw-endian-macros.patch
new file mode 100644
index 000000000..872b8518d
--- /dev/null
+++ b/contrib/libdvdread/P04-mingw-endian-macros.patch
@@ -0,0 +1,29 @@
+diff -Naur libdvdread.orig/dvdread/bswap.h libdvdread/dvdread/bswap.h
+--- libdvdread.orig/dvdread/bswap.h 2006-06-06 16:03:37.000000000 -0400
++++ libdvdread/dvdread/bswap.h 2009-03-13 21:05:23.000000000 -0400
+@@ -83,6 +83,25 @@
+ #define B2N_32(x) x = OSSwapBigToHostConstInt32(x)
+ #define B2N_64(x) x = OSSwapBigToHostConstInt64(x)
+
++#elif defined(__MINGW32__)
++#define B2N_16(x) \
++ x = ((((x) & 0xff00) >> 8) | \
++ (((x) & 0x00ff) << 8))
++#define B2N_32(x) \
++ x = ((((x) & 0xff000000) >> 24) | \
++ (((x) & 0x00ff0000) >> 8) | \
++ (((x) & 0x0000ff00) << 8) | \
++ (((x) & 0x000000ff) << 24))
++#define B2N_64(x) \
++ x = ((((x) & 0xff00000000000000ULL) >> 56) | \
++ (((x) & 0x00ff000000000000ULL) >> 40) | \
++ (((x) & 0x0000ff0000000000ULL) >> 24) | \
++ (((x) & 0x000000ff00000000ULL) >> 8) | \
++ (((x) & 0x00000000ff000000ULL) << 8) | \
++ (((x) & 0x0000000000ff0000ULL) << 24) | \
++ (((x) & 0x000000000000ff00ULL) << 40) | \
++ (((x) & 0x00000000000000ffULL) << 56))
++
+ #else
+ #if defined(__FreeBSD__) || defined(__sun) || defined(__bsdi__) || defined(WIN32) || defined(__BEOS__) || defined(__INTERIX)
+ /* These systems don't have swap macros */
diff --git a/contrib/libdvdread/P05-mingw-large-file.patch b/contrib/libdvdread/P05-mingw-large-file.patch
new file mode 100644
index 000000000..7ed9b6540
--- /dev/null
+++ b/contrib/libdvdread/P05-mingw-large-file.patch
@@ -0,0 +1,28 @@
+--- libdvdread.orig/dvdread/dvd_input.h 2005-09-06 12:23:00.000000000 -0700
++++ libdvdread/dvdread/dvd_input.h 2009-03-25 15:01:39.000000000 -0700
+@@ -28,6 +28,24 @@
+
+ #define DVDINPUT_READ_DECRYPT (1 << 0)
+
++#if defined( __MINGW32__ )
++# undef lseek
++# define lseek _lseeki64
++# undef fseeko
++# define fseeko fseeko64
++# undef ftello
++# define ftello ftello64
++# define flockfile(...)
++# define funlockfile(...)
++# define getc_unlocked getc
++# undef off_t
++# define off_t off64_t
++# undef stat
++# define stat _stati64
++# define fstat _fstati64
++# define wstat _wstati64
++#endif
++
+ typedef struct dvd_input_s *dvd_input_t;
+
+ /**
+
diff --git a/contrib/libmkv/P00-mingw-large-file.patch b/contrib/libmkv/P00-mingw-large-file.patch
new file mode 100644
index 000000000..6a83eacca
--- /dev/null
+++ b/contrib/libmkv/P00-mingw-large-file.patch
@@ -0,0 +1,24 @@
+--- libmkv.orig/src/matroska.c 2009-01-12 23:14:26.000000000 -0800
++++ libmkv/src/matroska.c 2009-03-25 15:22:30.000000000 -0700
+@@ -27,6 +27,11 @@
+
+ #include <sys/time.h>
+
++#if defined( __MINGW32__ )
++#undef fseeko
++#define fseeko fseeko64
++#endif
++
+ #define RESERVED_SEEKHEAD 0x100
+ /* 256 bytes should be enough room for our Seek entries. */
+ #define RESERVED_CHAPTERS 0x800
+@@ -34,7 +39,7 @@
+
+ int mk_seekFile(mk_Writer *w, uint64_t pos)
+ {
+- if (fseek(w->fp, pos, SEEK_SET))
++ if (fseeko(w->fp, pos, SEEK_SET))
+ return -1;
+
+ w->f_pos = pos;
+
diff --git a/contrib/libmp4v2/P00-mingw-static.patch b/contrib/libmp4v2/P00-mingw-static.patch
new file mode 100644
index 000000000..268ff7689
--- /dev/null
+++ b/contrib/libmp4v2/P00-mingw-static.patch
@@ -0,0 +1,16 @@
+Index: mp4v2/include/mp4v2/platform.h
+===================================================================
+--- mp4v2/include/mp4v2/platform.h (revision 272)
++++ mp4v2/include/mp4v2/platform.h (working copy)
+@@ -24,8 +24,10 @@
+ #if defined( _WIN32 ) || defined( __MINGW32__ )
+ # if defined( _WINDLL ) || defined( DLL_EXPORT )
+ # define MP4V2_EXPORT __declspec(dllexport)
++# elif defined( _DLL ) || defined( DLL_IMPORT )
++# define MP4V2_EXPORT __declspec(dllimport)
+ # else
+-# define MP4V2_EXPORT __declspec(dllimport)
++# define MP4V2_EXPORT
+ # endif
+ #else
+ # define MP4V2_EXPORT __attribute__((visibility("default")))
diff --git a/contrib/libmp4v2/P01-mingw-msvcrt-lower.patch b/contrib/libmp4v2/P01-mingw-msvcrt-lower.patch
new file mode 100644
index 000000000..384542b06
--- /dev/null
+++ b/contrib/libmp4v2/P01-mingw-msvcrt-lower.patch
@@ -0,0 +1,31 @@
+diff -Naur libmp4v2.orig/libplatform/io/File_win32.cpp libmp4v2/libplatform/io/File_win32.cpp
+--- libmp4v2.orig/libplatform/io/File_win32.cpp 2008-11-16 02:50:26.000000000 -0500
++++ libmp4v2/libplatform/io/File_win32.cpp 2009-03-13 02:00:09.000000000 -0400
+@@ -8,7 +8,8 @@
+ bool
+ StdioFile::getPosition( Size& pos_ )
+ {
+- pos_ = _ftelli64( _handle );
++ fflush( _handle ); // must flush because we're using _fileno routines
++ pos_ = _telli64( _fileno( _handle ));
+ return pos_ == -1;
+ }
+
+@@ -17,6 +18,7 @@
+ bool
+ StdioFile::getSize( Size& size_ )
+ {
++ fflush( _handle ); // must flush because we're using _fileno routines
+ LARGE_INTEGER n;
+ if( !GetFileSizeEx( (HANDLE)_get_osfhandle( _fileno( _handle )), &n ))
+ return true;
+@@ -29,7 +31,8 @@
+ bool
+ StdioFile::setPosition( Size pos_ )
+ {
+- return _fseeki64( _handle, pos_, SEEK_SET ) != 0;
++ fflush( _handle ); // must flush because we're using _fileno routines
++ return _lseeki64( _fileno( _handle ), pos_, SEEK_SET ) == -1;
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////
diff --git a/contrib/libmp4v2/P02-mingw-configure.patch b/contrib/libmp4v2/P02-mingw-configure.patch
new file mode 100644
index 000000000..ba749201d
--- /dev/null
+++ b/contrib/libmp4v2/P02-mingw-configure.patch
@@ -0,0 +1,26 @@
+diff -Naur libmp4v2.orig/configure.ac libmp4v2/configure.ac
+--- libmp4v2.orig/configure.ac 2009-01-10 12:44:40.000000000 -0500
++++ libmp4v2/configure.ac 2009-03-13 18:18:38.000000000 -0400
+@@ -103,11 +103,11 @@
+ X_CXX_ARCH="$X_CXX_ARCH -mwin32"
+ fi
+ ;;
+-*-*-mingw32)
++*-*-mingw*)
+ # do not support shared
+ enable_shared=no
+ X_PLATFORM=win32
+- X_MINGW_LIBS="$X_MINGW_LIBS -lmsvcr80"
++ X_MINGW_LIBS="$X_MINGW_LIBS"
+ X_CXX_W="$X_CXX_W -Wno-format"
+ if test "$enable_mingw_threads" = "yes"; then
+ X_CXX_ARCH="$X_CXX_ARCH -mthreads"
+@@ -197,7 +197,7 @@
+ case ${host} in
+ *-*-cygwin)
+ ;;
+- *-*-mingw32)
++ *-*-mingw*)
+ ;;
+ *)
+ AC_LANG(C++)
diff --git a/contrib/libmp4v2/module.defs b/contrib/libmp4v2/module.defs
index 4f950a2d5..ede60253e 100644
--- a/contrib/libmp4v2/module.defs
+++ b/contrib/libmp4v2/module.defs
@@ -5,5 +5,13 @@ LIBMP4V2.FETCH.url = http://download.m0k.org/handbrake/contrib/libmp4v2-2.0-r224
LIBMP4V2.EXTRACT.tarbase = libmp4v2
## propagate more flags
-LIBMP4V2.CONFIGURE.env.CFLAGS = CFLAGS="$(call fn.ARGS,LIBMP4V2.GCC,*archs .g .O)"
-LIBMP4V2.CONFIGURE.env.CXXFLAGS = CXXFLAGS="$(call fn.ARGS,LIBMP4V2.GCC,*archs .g .O)"
+LIBMP4V2.CONFIGURE.env.CFLAGS = CFLAGS="$(call fn.ARGS,LIBMP4V2.GCC,*archs *D .g .O)"
+LIBMP4V2.CONFIGURE.env.CXXFLAGS = CXXFLAGS="$(call fn.ARGS,LIBMP4V2.GCC,*archs *D .g .O)"
+
+## save some build-time by disabling utils
+LIBMP4V2.CONFIGURE.extra += --disable-util
+
+ifeq ($(BUILD.system),mingw)
+ ## mingw platform patches configure.ac and requires bootstrap
+ LIBMP4V2.CONFIGURE.bootstrap = autoreconf -fiv;
+endif
diff --git a/contrib/pthreadw32/module.defs b/contrib/pthreadw32/module.defs
new file mode 100644
index 000000000..0768da6cb
--- /dev/null
+++ b/contrib/pthreadw32/module.defs
@@ -0,0 +1,25 @@
+$(eval $(call import.MODULE.defs,PTHREADW32,pthreadw32))
+$(eval $(call import.CONTRIB.defs,PTHREADW32))
+
+PTHREADW32.FETCH.url = http://download.m0k.org/handbrake/contrib/pthreads-w32-2-8-0-release.tar.gz
+
+PTHREADW32.CONFIGURE = $(TOUCH.exe) $@
+
+PTHREADW32.BUILD.extra = CROSS=$(BUILD.cross.prefix) clean GC-static
+PTHREADW32.BUILD.ntargets = clean GC-static
+
+define PTHREADW32.INSTALL
+ $(CP.exe) $(PTHREADW32.EXTRACT.dir/)libpthreadGC2.a $(CONTRIB.build/)lib/
+ $(CP.exe) $(PTHREADW32.EXTRACT.dir/)pthread.h $(CONTRIB.build/)include/
+ $(CP.exe) $(PTHREADW32.EXTRACT.dir/)sched.h $(CONTRIB.build/)include/
+ $(CP.exe) $(PTHREADW32.EXTRACT.dir/)semaphore.h $(CONTRIB.build/)include/
+ $(TOUCH.exe) $@
+endef
+
+define PTHREADW32.UNINSTALL
+ $(RM.exe) -f $(CONTRIB.build/)lib/libpthreadGC2.a
+ $(RM.exe) -f $(CONTRIB.build/)include/pthread.h
+ $(RM.exe) -f $(CONTRIB.build/)include/sched.h
+ $(RM.exe) -f $(CONTRIB.build/)include/semaphore.h
+ $(RM.exe) -f $(PTHREADW32.INSTALL.target)
+endef
diff --git a/contrib/pthreadw32/module.rules b/contrib/pthreadw32/module.rules
new file mode 100644
index 000000000..78448835e
--- /dev/null
+++ b/contrib/pthreadw32/module.rules
@@ -0,0 +1,2 @@
+$(eval $(call import.MODULE.rules,PTHREADW32))
+$(eval $(call import.CONTRIB.rules,PTHREADW32))
diff --git a/contrib/x264/module.defs b/contrib/x264/module.defs
index 93430a4e1..c1009d938 100644
--- a/contrib/x264/module.defs
+++ b/contrib/x264/module.defs
@@ -1,4 +1,4 @@
-$(eval $(call import.MODULE.defs,X264,x264))
+$(eval $(call import.MODULE.defs,X264,x264,PTHREADW32))
$(eval $(call import.CONTRIB.defs,X264))
X264.FETCH.url = http://download.m0k.org/handbrake/contrib/x264-r1130-8475977.tar.gz
@@ -8,4 +8,12 @@ X264.CONFIGURE.deps =
X264.CONFIGURE.shared =
X264.CONFIGURE.static =
-X264.CONFIGURE.extra = --disable-mp4-output --enable-pthread
+X264.CONFIGURE.extra = --disable-mp4-output
+
+ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system))
+ X264.CONFIGURE.extra += --enable-pthread --cross-prefix=$(BUILD.spec)-
+ X264.CONFIGURE.env.CFLAGS = CFLAGS="-I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) $(call fn.ARGS,X264.GCC,*archs ?extra)"
+ X264.CONFIGURE.env.LDFLAGS = LDFLAGS=-L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)
+else
+ X264.CONFIGURE.extra += --enable-pthread
+endif
diff --git a/contrib/xvidcore/A00-nasm.patch b/contrib/xvidcore/A00-nasm.patch
deleted file mode 100644
index 44242ace4..000000000
--- a/contrib/xvidcore/A00-nasm.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -ruN xvidcore-orig/build/generic/configure xvidcore/build/generic/configure
---- xvidcore-orig/build/generic/configure 2006-11-01 03:39:36.000000000 -0700
-+++ xvidcore/build/generic/configure 2008-01-30 20:19:48.000000000 -0700
-@@ -4016,7 +4016,7 @@
- if test "$ac_nasm" = "yes" ; then
- echo "$as_me:$LINENO: checking for nasm patch version" >&5
- echo $ECHO_N "checking for nasm patch version... $ECHO_C" >&6
-- nasm_patch=`$nasm_prog -r | cut -d '.' -f 3 | cut -d ' ' -f 1`
-+ nasm_patch=`($nasm_prog -r || $nasm_prog -v) | cut -d '.' -f 3 | cut -d ' ' -f 1`
- if test -z $nasm_patch ; then
-- nasm_patch=-1
-+ nasm_patch=45
- fi
diff --git a/contrib/xvidcore/A01-fdct.patch b/contrib/xvidcore/A01-fdct.patch
deleted file mode 100644
index 1fc90b689..000000000
--- a/contrib/xvidcore/A01-fdct.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- xvidcore/src/dct/x86_asm/fdct_sse2_skal.asm.orig 2008-02-22 10:28:13.000000000 -0800
-+++ xvidcore/src/dct/x86_asm/fdct_sse2_skal.asm 2008-02-22 11:08:52.000000000 -0800
-@@ -620,3 +620,5 @@
- ret
- .endfunc
-
-+ALIGN 16
-+ times 8 dw 0
diff --git a/contrib/xvidcore/P00-darwin.patch b/contrib/xvidcore/P00-darwin.patch
index 51cb94c6d..12bc8dac0 100644
--- a/contrib/xvidcore/P00-darwin.patch
+++ b/contrib/xvidcore/P00-darwin.patch
@@ -1,31 +1,31 @@
-diff -ru xvidcore-1.1.0/build/generic/configure xvidcore-1.1.0-patched/build/generic/configure
---- xvidcore-1.1.0/build/generic/configure 2005-12-30 15:45:30.000000000 +0100
-+++ xvidcore-1.1.0-patched/build/generic/configure 2006-01-16 22:06:10.000000000 +0100
-@@ -4052,6 +4071,12 @@
- PREFIX="-DPREFIX"
+diff -Naur xvidcore-20090311.orig/build/generic/configure.in xvidcore-20090311/build/generic/configure.in
+--- xvidcore-20090311.orig/build/generic/configure.in 2008-12-05 05:18:52.000000000 -0500
++++ xvidcore-20090311/build/generic/configure.in 2009-04-14 11:30:04.000000000 -0400
+@@ -427,8 +427,13 @@
MARK_FUNCS=""
;;
-+ *darwin*)
-+ echo "$as_me:$LINENO: result: macho" >&5
-+echo "${ECHO_T}macho" >&6
-+ NASM_FORMAT="macho"
-+ PREFIX="-DPREFIX"
-+ MARK_FUNCS=""
- esac
-
- AS="$chosen_asm_prog"
-diff -ru xvidcore-1.1.0/build/generic/configure.in xvidcore-1.1.0-patched/build/generic/configure.in
---- xvidcore-1.1.0/build/generic/configure.in 2005-12-30 15:45:30.000000000 +0100
-+++ xvidcore-1.1.0-patched/build/generic/configure.in 2006-01-16 22:06:04.000000000 +0100
-@@ -397,6 +397,11 @@
- PREFIX="-DPREFIX"
- MARK_FUNCS=""
+ *darwin*)
+- AC_MSG_RESULT([macho])
+- NASM_FORMAT="macho"
++ if test "$ARCHITECTURE" = "X86_64" ; then
++ AC_MSG_RESULT([macho64])
++ NASM_FORMAT="macho64"
++ else
++ AC_MSG_RESULT([macho])
++ NASM_FORMAT="macho"
++ fi
+ PREFIX="-DPREFIX"
+ MARK_FUNCS=""
;;
-+ *darwin*)
-+ AC_MSG_RESULT([macho])
-+ NASM_FORMAT="macho"
-+ PREFIX="-DPREFIX"
-+ MARK_FUNCS=""
- esac
-
- AS="$chosen_asm_prog"
+diff -Naur xvidcore-20090311.orig/src/nasm.inc xvidcore-20090311/src/nasm.inc
+--- xvidcore-20090311.orig/src/nasm.inc 2008-12-05 05:15:02.000000000 -0500
++++ xvidcore-20090311/src/nasm.inc 2009-04-14 12:13:37.000000000 -0400
+@@ -177,6 +177,8 @@
+ %macro TEXT 0
+ %ifidn __OUTPUT_FORMAT__,macho
+ SECTION .text align=SECTION_ALIGN
++%elifidn __OUTPUT_FORMAT__,macho64
++ SECTION .text align=SECTION_ALIGN
+ %else
+ SECTION .rotext align=SECTION_ALIGN
+ %endif
diff --git a/contrib/xvidcore/P01-cygwin.patch b/contrib/xvidcore/P01-cygwin.patch
index 7b60510d0..20afce260 100644
--- a/contrib/xvidcore/P01-cygwin.patch
+++ b/contrib/xvidcore/P01-cygwin.patch
@@ -1,24 +1,7 @@
-diff -Naur xvidcore/build/generic/configure xvidcore-patched/build/generic/configure
---- xvidcore/build/generic/configure 2005-12-30 09:45:30.000000000 -0500
-+++ xvidcore-patched/build/generic/configure 2007-01-01 18:43:27.953125000 -0500
-@@ -3844,10 +3844,9 @@
- [cC][yY][gG][wW][iI][nN]*|mingw32*|mks*)
- echo "$as_me:$LINENO: result: ok" >&5
- echo "${ECHO_T}ok" >&6
-- STATIC_LIB="xvidcore.\$(STATIC_EXTENSION)"
-- SHARED_LIB="xvidcore.\$(SHARED_EXTENSION)"
-- SPECIFIC_LDFLAGS="-mno-cygwin -shared -Wl,--dll,--out-implib,\[email protected] libxvidcore.def"
-- SPECIFIC_CFLAGS="-mno-cygwin"
-+ STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)"
-+ SHARED_LIB="libxvidcore.\$(SHARED_EXTENSION)"
-+ SPECIFIC_LDFLAGS="-shared -Wl,--dll,--out-implib,\[email protected] libxvidcore.def"
- ;;
- darwin*|raphsody*)
- STATIC_LIB="libxvidcore.\$(STATIC_EXTENSION)"
-diff -Naur xvidcore/build/generic/configure.in xvidcore-patched/build/generic/configure.in
---- xvidcore/build/generic/configure.in 2005-12-30 09:45:30.000000000 -0500
-+++ xvidcore-patched/build/generic/configure.in 2007-01-01 18:43:11.453125000 -0500
-@@ -281,10 +281,9 @@
+diff -Naur xvidcore-20090311.orig/build/generic/configure.in xvidcore-20090311/build/generic/configure.in
+--- xvidcore-20090311.orig/build/generic/configure.in 2008-12-05 05:18:52.000000000 -0500
++++ xvidcore-20090311/build/generic/configure.in 2009-04-14 13:18:23.034051500 -0400
+@@ -282,10 +282,9 @@
;;
[[cC]][[yY]][[gG]][[wW]][[iI]][[nN]]*|mingw32*|mks*)
AC_MSG_RESULT([ok])
diff --git a/contrib/xvidcore/module.defs b/contrib/xvidcore/module.defs
index dee8b3e45..5a76e0911 100644
--- a/contrib/xvidcore/module.defs
+++ b/contrib/xvidcore/module.defs
@@ -1,15 +1,19 @@
$(eval $(call import.MODULE.defs,XVIDCORE,xvidcore))
$(eval $(call import.CONTRIB.defs,XVIDCORE))
-XVIDCORE.FETCH.url = http://download.m0k.org/handbrake/contrib/xvidcore-1.1.3.tar.gz
-XVIDCORE.EXTRACT.tarbase = xvidcore
+XVIDCORE.FETCH.url = http://download.m0k.org/handbrake/contrib/xvidcore-20090311.tar.gz
+XVIDCORE.CONFIGURE.static =
+XVIDCORE.CONFIGURE.shared =
+XVIDCORE.CONFIGURE.deps =
XVIDCORE.CONFIGURE.dir = $(XVIDCORE.EXTRACT.dir/)build/generic/
+XVIDCORE.CONFIGURE.bootstrap = ./bootstrap.sh;
XVIDCORE.BUILD.dir = $(XVIDCORE.EXTRACT.dir/)build/generic/
+XVIDCORE.BUILD.extra = STATIC_LIB=libxvidcore.a
XVIDCORE.BUILD.ntargets = libxvidcore.a
-XVIDCORE.CLEAN.dir = $(XVIDCORE.EXTRACT.dir/)build/generic/
+XVIDCORE.CLEAN.dir = $(XVIDCORE.EXTRACT.dir/)build/generic/
define XVIDCORE.INSTALL
$(CP.exe) $(XVIDCORE.EXTRACT.dir/)build/generic/=build/libxvidcore.a $(CONTRIB.build/)lib/
diff --git a/contrib/zlib/module.defs b/contrib/zlib/module.defs
index 66db2f491..55daf6d8e 100644
--- a/contrib/zlib/module.defs
+++ b/contrib/zlib/module.defs
@@ -4,3 +4,9 @@ $(eval $(call import.CONTRIB.defs,ZLIB))
ZLIB.FETCH.url = http://download.m0k.org/handbrake/contrib/zlib-1.2.3.tar.gz
ZLIB.EXTRACT.tarbase = zlib
ZLIB.CONFIGURE.args = !sete @dir !env !exe @prefix !extra
+
+ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system))
+ ZLIB.CONFIGURE.env.AR = AR="$(AR.exe) rc"
+ ZLIB.CONFIGURE.env.RANLIB = RANLIB="$(RANLIB.exe)"
+ ZLIB.CONFIGURE.env.args += !AR !RANLIB
+endif