From 69a1b10dd38c06f34747e7a55d62fdfcec2883cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Mon, 5 Sep 2005 17:02:56 +0000 Subject: *BUGFIX* Build improvements and WIN32 port updates: - add --with-pthread-pefix and --with-zlib-pefix options - prepare for removing internal zlib and pthreads-win32 relics, updated documentation for possible WIN32 developers (only for me? :->) - fixed bug in unimportant part of configure.ac for MinGW due to xine paths - fixed my bug in cdda (but it compiled fine anyway) - fixed unimportant bug in planar Makefile.am - next MSVC update due to external zlib, pthreads and latest changes, removed relic includes - checked distcheck CVS patchset: 7719 CVS date: 2005/09/05 17:02:56 --- doc/README.MINGWCROSS | 97 ++++++++++++++++++++++++++++++++++---------- doc/README.WIN32 | 17 ++++++-- doc/hackersguide/Makefile.am | 2 +- 3 files changed, 91 insertions(+), 25 deletions(-) (limited to 'doc') diff --git a/doc/README.MINGWCROSS b/doc/README.MINGWCROSS index c238d665e..a840172a6 100644 --- a/doc/README.MINGWCROSS +++ b/doc/README.MINGWCROSS @@ -30,14 +30,22 @@ Download http://www.google.com/search?hl=cs&q=win32-dx7headers.tgz http://www.google.com/search?q=dx7adxf.exe + Pthread Win32: + + ftp://sources.redhat.com/pub/pthreads-win32/ + + zlib: + + http://www.zlib.net + Build ----- -In following text are used symbols PREFIX and USER with this meaning: +In following text are used symbols $PREFIX and $USER with this meaning: - PREFIX .... directory of the mingw cross environtment - USER ...... current user + $PREFIX .... directory of the mingw cross environtment + $USER ...... current user 1. compile binutils @@ -47,14 +55,14 @@ In following text are used symbols PREFIX and USER with this meaning: cd bin ../binutils-2.13.90-20030111-1-src/configure \ --target=i386-mingw32 \ - --prefix=PREFIX + --prefix=$PREFIX make su make install exit -2. add PREFIX/bin into PATH +2. add $PREFIX/bin into PATH ... @@ -66,8 +74,8 @@ In following text are used symbols PREFIX and USER with this meaning: # this commands ensure write permission to target # su - chmod g+w PREFIX{/lib,/i386-mingw32{/,/lib}} - chown root:USER PREFIX{/lib,/i386-mingw32{/,/lib}} + chmod g+w $PREFIX{/lib,/i386-mingw32{/,/lib}} + chown root:$USER $PREFIX{/lib,/i386-mingw32{/,/lib}} exit # @@ -83,7 +91,7 @@ In following text are used symbols PREFIX and USER with this meaning: # compile and install the compiler # # if you'll want rerun this step, I recommend delete - # PREFIX/i386-mingw32/sys-include + # $PREFIX/i386-mingw32/sys-include # tar xzf gcc-core-3.3.1-20030804-1-src.tar.gz tar xzf gcc-g++-3.3.1-20030804-1-src.tar.gz @@ -96,7 +104,7 @@ In following text are used symbols PREFIX and USER with this meaning: --target=i386-mingw32 \ --with-headers=../runtime/include \ --with-libs=../runtime/lib \ - --prefix=PREFIX + --prefix=$PREFIX make #or recommended: make CFLAGS=-O2 LDFLAGS=-s su @@ -107,26 +115,26 @@ In following text are used symbols PREFIX and USER with this meaning: # set the permissions back # su - chmod -R g-w PREFIX - chown -R root:root PREFIX + chmod -R g-w $PREFIX + chown -R root:root $PREFIX exit 4. recompile w32api and mingw-runtime from sources (optional) # - # installing must be into PREFIX/i386-mingw32 + # installing must be into $PREFIX/i386-mingw32 # tar xzf w32api-2.5-src.tar.gz cd w32api-2.5 - ./configure --prefix=PREFIX/i386-mingw32 --host=i386-mingw32 + ./configure --prefix=$PREFIX/i386-mingw32 --host=i386-mingw32 make su make install exit # - # installing must be into PREFIX/i386-mingw32 + # installing must be into $PREFIX/i386-mingw32 # tar xzf mingw-runtime-3.3-src.tar.gz cd mingw-runtime-3.3 @@ -139,7 +147,7 @@ In following text are used symbols PREFIX and USER with this meaning: AR=i386-mingw32-ar \ AS=i386-mingw32-as \ RANLIB=i386-mingw32-ranlib \ - ./configure --prefix=PREFIX/i386-mingw32 --target=i386-mingw32 + ./configure --prefix=$PREFIX/i386-mingw32 --target=i386-mingw32 make su make install @@ -147,17 +155,62 @@ In following text are used symbols PREFIX and USER with this meaning: 5. install DirectX headers and other libraries + su - cd PREFIX/include + cd $PREFIX/include # untar dx7headers.tar.gz (maybe to a subdirectory) ... exit +6. compile and install pthreads-win32 + + tar xzf pthreads-w32-2-7-0-release.tar.gz + cd pthreads-w32-2-7-0-release/ + make CROSS=i386-mingw32- PTHREAD_DEF=pthreadGC2.def clean GC + # + # possibility to use pthread library in M$ Visual C (optional) + # + mv pthread.def pthreadGC2.def + wine LIB.EXE /machine:i386 /def:pthreadGC2.def + su + mkdir -p $PREFIX/pthreads-win32/bin + mkdir -p $PREFIX/pthreads-win32/include + mkdir -p $PREFIX/pthreads-win32/lib + cp pthreadGC2.dll $PREFIX/pthreads-win32/bin/ + cp libpthreadGC2.a pthreadGC2.lib $PREFIX/pthreads-win32/lib/ + ln -s libpthreadGC2.a $PREFIX/pthreads-win32/lib/libpthread.a + ln -s pthreadGC2.lib $PREFIX/pthreads-win32/lib/pthread.lib + cp pthread.h semaphore.h sched.h $PREFIX/pthreads-win32/include/ + exit + + +7. compile and install zlib + + tar xjf zlib-1.2.3.tar.bz2 + cd zlib-1.2.3 + # + # small workaround in Makefile: + # + sed -e 's/dllwrap /i386-mingw32-dllwrap /g' win32/Makefile.gcc > Makefile + make CC=i386-mingw32-gcc AR=i386-mingw32-ar RC=i386-mingw32-windres STATICLIB=libz-static.a IMPLIB=libz.a + # + # possibility to use zlib library in M$ Visual C (optional) + # + cp win32/zlib.def zlib1.def + wine LIB.EXE /machine:i386 /def:zlib1.def + su + mkdir -p $PREFIX/zlib/{include,lib,bin} + cp zconf.h zlib.h $PREFIX/zlib/include/ + cp libz.a libz-static.a zlib1.lib $PREFIX/zlib/lib/ + cp zlib1.dll $PREFIX/zlib/bin/ + exit + + Using MinGW cross development tools ----------------------------------- -We can build xine library for Windows by this way: +Now we can build xine library for Windows by this way: # # configure for mingw cross compiling @@ -168,7 +221,9 @@ We can build xine library for Windows by this way: --build=i686-debian-linux \ --disable-freetype \ --disable-vcd \ - --with-dxheaders=/mingw32/include/dx7headers + --with-dxheaders=$PREFIX/include/dx7headers \ + --with-zlib-prefix=$PREFIX/zlib \ + --with-pthread-prefix=$PREFIX/pthreads-win32 # # build system isn't fully prepared for cross compiling, so it's needed @@ -186,11 +241,11 @@ We can build xine library for Windows by this way: # install # make install DESTDIR=/tmp/xine-lib-mingwcross - rm /tmp/xine-lib-mingwcross/bin/plugins{/,/post}/*.a + rm /tmp/xine-lib-mingwcross/lib/xine/plugins/1.1.0{/,/post}/*.a # - # if we want to use xine library in M$ compilers, we will need some tools from - # M$ Visual C: LIB.EXE, LINK.EXE, MSPDB60.DLL and wine + # if we want to use xine library in M$ compilers, we will need wine and some + # tools from M$ Visual C: LIB.EXE, LINK.EXE, MSPDB60.DLL # # create libxine-1.lib file # diff --git a/doc/README.WIN32 b/doc/README.WIN32 index 0dd7b1a8e..bff456ce7 100644 --- a/doc/README.WIN32 +++ b/doc/README.WIN32 @@ -88,7 +88,7 @@ Reasons, why not to use this port: - can't compile included ffmpeg (important multi-decoder in xine) - can't compile new assembler code (it means degradation of power) - never 100% up to date - - somebody must buy the OS and compiler + - somebody must own the OS and compiler Reasons, why to use this port: - obtaining cute backtrace after crash, debugging @@ -96,6 +96,18 @@ Reasons, why to use this port: How to build xine in M$ Visual C: - Set up MSVC to look for DirectX headers. + - Download Pthreads Win32 + (ftp://sources.redhat.com/pub/pthreads-win32/), from prebuild directory + install include/*.h, lib/pthreadVC2.lib and lib/pthreadVC2.dll, + rename pthreadVC2.lib to pthread.lib + set up MSVC - libraries and headers. + + - Download zlib (http://www.zlib.net), instal all in include and lib, + set up MSVC - libraries and headers. + + - Copy include/xine.h.in to include/xine.h, replace @text@ by right values + (eg. XINE_MAJOR 1, XINE_MINOR 1, XINE_SUB 0, XINE_VERSION "1.1.0") + - Open up the xine.dsw workspace/project in MSVC. - Click on the FileView tab. @@ -150,9 +162,7 @@ Status There remains many of work yet on Windows port. Limitations: - - doesn't work under Win95/98 (DirectX? win32-pthreads?) - file > 1GB doesn't work (MinGW problem?) - - missing full Win32 frontend - build system isn't fully tuned for cross-compiling - seeking doesn't work with testing frontend, but it should be OK in library @@ -160,3 +170,4 @@ Bugs: - random crashes and random locks in stress tests - non-seekable input plugins crash - ffmpeg bug visible for some video sizes + - pause doesn't work (asserts) diff --git a/doc/hackersguide/Makefile.am b/doc/hackersguide/Makefile.am index 915adbef6..7fdc77706 100644 --- a/doc/hackersguide/Makefile.am +++ b/doc/hackersguide/Makefile.am @@ -29,7 +29,7 @@ docs-prepare: $(addprefix $(srcdir)/, $(hackersguide_sgml) $(wildcard *.fig)) clean-docs: rm -f $(docs_DATA) - test "x$(srcdir)" = x. || rm -f $(hackersguide_sgml) + test "x$(srcdir)" = x. || rm -f $(hackersguide_sgml) *.fig dist-hook: @if test x"$(distcheck_lax)" = x ; then \ -- cgit v1.2.3