
Building XZ Utils with Microsoft Visual Studio
==============================================

Introduction
------------

    MSVC 2013 update 2 and later have enough C99 support to build
    liblzma from XZ Utils 5.2.0 and later without modifications.
    Older MSVC versions would require a large number of changes to
    the XZ Utils code and thus the old MSVC versions aren't supported.

    As of 2015-06-19, some work has been done to get xz.exe and other
    command line tools built with MSVC, but it's not complete enough
    to be included in XZ Utils.


Building
--------

    The following files in this directory are for MSVC:

        config.h              liblzma configuration #defines for MSVC.
        liblzma.vcxproj       This builds static liblzma.
        liblzma_dll.vcxproj   This builds liblzma.dll.
        xz_win.sln            Solution using the above project files.

    The projects have x86 and x86-64 platform configurations, as well
    as a Debug, Release, and ReleaseMT configuration -- MT is the
    compiler switch to link to the CRT statically, so it will not
    have any other DLL dependencies.

    Currently no test programs are built or run under MSVC.

    MSVC gives a bunch of compiler warnings. Some warnings are specific
    to 32-bit or 64-bit build and some appear for both builds. These
    are known and shouldn't be a problem. Some of them will probably
    be fixed in the future.


Notes
-----

    liblzma API headers declare the functions with __declspec(dllimport)
    by default. To avoid this when using static liblzma from your code,
    #define LZMA_API_STATIC before #including <lzma.h>.

