aboutsummaryrefslogtreecommitdiff
path: root/windows/README
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2010-01-31 23:28:51 +0200
committerLasse Collin <lasse.collin@tukaani.org>2010-01-31 23:28:51 +0200
commit8884e16864ba53fb4b58623d7537d7ef30c28e11 (patch)
tree4b4b670641cfeb4eed71458fe743ef1d728c8677 /windows/README
parentSelect the default integrity check type at runtime. (diff)
downloadxz-8884e16864ba53fb4b58623d7537d7ef30c28e11.tar.xz
Revise the Windows build files.
The old Makefile + config.h was deleted, because it becomes outdated too easily and building with the Autotools based build system works fine even on Windows. windows/build.sh hasn't got much testing, but it should work to build 32-bit x86 and x86-64 versions of XZ Utils using MSYS, MinGW or MinGW-w32, and MinGW-w64. windows/INSTALL-Windows.txt describes what packages are needed and how to install them. windows/README-Windows.txt is a readme file for the binary package that build.sh hopefully builds. There are no instructions about using Autotools for now, so those using a git snapshot may want to run "autoreconf -fi && ./configure && make mydist" on a UN*X box and then copy the resulting .tar.gz to a Windows.
Diffstat (limited to 'windows/README')
-rw-r--r--windows/README155
1 files changed, 0 insertions, 155 deletions
diff --git a/windows/README b/windows/README
deleted file mode 100644
index 0e529de9..00000000
--- a/windows/README
+++ /dev/null
@@ -1,155 +0,0 @@
-
-XZ Utils on Windows
-===================
-
-Introduction
-
- This document explains how to build XZ Utils for Microsoft Windows
- using MinGW (Minimalist GNU for Windows).
-
- This is currently experimental and has got very little testing.
- No ABI stability is promised for liblzma.dll.
-
-
-Why MinGW
-
- XZ Utils code is C99. It should be possible to compile at least
- liblzma using any C99 compiler. Compiling the command line tools may
- need a little extra work to get them built on new systems, because
- they use some features that aren't standardized in POSIX.
-
- MinGW is free software. MinGW runtime provides some functions that
- made porting the command line tools easier. Most(?) of the MinGW
- runtime, which gets linked into the resulting binaries, is in the
- public domain.
-
- While most C compilers nowadays support C99 well enough (including
- most compilers for Windows), MSVC doesn't. It seems that Microsoft
- has no plans to ever support C99. Thus, it is not possible to build
- XZ Utils using MSVC without doing a lot of work to convert the code.
- Using prebuilt liblzma from MSVC is possible though, since the
- liblzma API headers are in C89 and contain some non-standard extra
- hacks required by MSVC.
-
-
-Getting and Installing MinGW
-
- You can download MinGW for 32-bit Windows from Sourceforge:
-
- http://sourceforge.net/project/showfiles.php?group_id=2435
-
- It is enough to pick Automated MinGW Installer and MSYS Base System.
- Using the automated installer, select at least runtime, w32api,
- core compiler, and MinGW make. From MSYS you actually need only
- certain tools, but it is easiest to just install the whole MSYS.
-
- To build for x86-64 version of Windows, you can download a snapshot
- of MinGW targeting for 64-bit Windows:
-
- http://sourceforge.net/project/showfiles.php?group_id=202880
-
- You can use the 32-bit MSYS also for 64-bit build, since we don't
- link against anything in MSYS, just use the tools from it. You may
- use the make tool from 32-bit MinGW (mingw32-make.exe) although
- probably the make.exe from MSYS works too.
-
- Naturally you can pick the components manually, for example to try
- the latest available GCC. It is also possible to use a cross-compiler
- to build Windows binaries for example on GNU/Linux, or use Wine to
- run the Windows binaries. However, these instructions focus on
- building on Windows.
-
-
-Building for 32-bit Windows
-
- Add MinGW and MSYS to PATH (adjust if you installed to non-default
- location):
-
- set PATH=C:\MinGW\bin;C:\MSYS\1.0\bin;%PATH%
-
- Then it should be enough to just run mingw32-make in this directory
- (the directory containing this README):
-
- mingw32-make
-
-
-Building for 64-bit Windows
-
- For 64-bit build the PATH has to point to 64-bit MinGW:
-
- set PATH=C:\MinGW64\bin;C:\MSYS\1.0\bin;%PATH%
-
- You need to pass W64=1 to mingw32-make (or make if you don't have
- mingw32-make):
-
- mingw32-make W64=1
-
-
-Additional Make Flags and Targets
-
- You may want to try some additional optimizations, which may or
- may not make the code faster (and may or may not hit possible
- compiler bugs more easily):
-
- mingw32-make CFLAGS="-O3 -fomit-frame-pointer -funroll-loops"
-
- If you want to enable assertions (the assert() macro), use DEBUG=1.
- You may want to disable optimizations too if you plan to actually
- debug the code. Never use DEBUG=1 for production builds!
-
- mingw32-make DEBUG=1 CFLAGS="-g -O0"
-
- To copy the built binaries and required headers into a clean
- directory, use the pkg target:
-
- mingw32-make pkg
-
- It first removes a possibly existing pkg directory, and then
- recreates it with the required files.
-
- TODO: The pkg target doesn't copy any license or other copyright
- related information into the pkg directory.
-
-
-Creating an Import Library for MSVC
-
- The included Makefile creates import library liblzma.a which works
- only(?) with MinGW. To use liblzma.dll for MSVC, you need to create
- liblzma.lib using the lib command from MSVC:
-
- lib /def:liblzma.def /out:liblzma.lib /machine:ix86
-
- On x86-64, the /machine argument has to naturally be changed:
-
- lib /def:liblzma.def /out:liblzma.lib /machine:x64
-
-
-To Do
-
- - Test Win64 support and add instructions about getting x86-64
- version of MinGW.
-
- - Creating the import library for other compilers/linkers
-
- - Building with other compilers for Windows
-
- - liblzma currently uses cdecl. Would stdcall be more compatible?
-
- - Support building more size-optimized liblzma (the HAVE_SMALL
- define and other things that are needed)
-
- - Support selecting which parts of liblzma to build to make the
- library even smaller.
-
- - Use the configure script on Windows just like it is used on all
- the other systems?
-
-
-Bugs
-
- Report bugs to <lasse.collin@tukaani.org> (in English or Finnish).
-
- Take into account that I don't have MSVC and I cannot very easily
- test anything on Windows. As of writing, I have tried MinGW and the
- resulting binaries only under 32-bit Wine.
-