]> wimlib.net Git - wimlib/blobdiff - README.WINDOWS
encoding.c: avoid UBSAN warning in convert_string()
[wimlib] / README.WINDOWS
index 5a9bd3b17369a4775d24a273f27828808346f6c5..14fc0d284e05e0de52ae92a3534de72c2e060892 100644 (file)
@@ -22,14 +22,14 @@ The Windows distribution of wimlib is a ZIP file containing the following items:
     requires this to run.
 
   * The documentation, including this file, the generic README.txt, and
     requires this to run.
 
   * The documentation, including this file, the generic README.txt, and
-    PDF documentation for wimlib-imagex in the 'doc' directory.
+    PDF documentation for wimlib-imagex in the 'doc' folder.
 
   * License files for all software included.  These are all free software
     licenses.  COPYING.txt is the main license, and it refers to
     COPYING.GPLv3.txt and COPYING.LGPLv3.txt.  The other licenses are for
     third-party software included in the library.
 
 
   * License files for all software included.  These are all free software
     licenses.  COPYING.txt is the main license, and it refers to
     COPYING.GPLv3.txt and COPYING.LGPLv3.txt.  The other licenses are for
     third-party software included in the library.
 
-  * Development files in the 'devel' directory.  These are only needed if you
+  * Development files in the 'devel' folder.  These are only needed if you
     are developing C or C++ applications that use wimlib.
 
 Note that there are separate ZIP files for 32-bit (i686) and 64-bit (x86_64)
     are developing C or C++ applications that use wimlib.
 
 Note that there are separate ZIP files for 32-bit (i686) and 64-bit (x86_64)
@@ -82,7 +82,7 @@ It's recommended to use wimlib-imagex in scripts to avoid having to
 interactively enter commands.  However, note that wimlib-imagex is largely just
 a command-line front-end for wimlib, and it's possible to use wimlib's API in
 other front-ends or applications.  Currently there is no official graphical user
 interactively enter commands.  However, note that wimlib-imagex is largely just
 a command-line front-end for wimlib, and it's possible to use wimlib's API in
 other front-ends or applications.  Currently there is no official graphical user
-interface available for wimlib or wimlib-imagex.  However, an unofficial, beta,
+interface available for wimlib or wimlib-imagex.  However, an unofficial
 Windows-only graphical user interface that provides a thin wrapper around
 wimlib-imagex can be downloaded at
 http://reboot.pro/files/file/485-wimlib-imagex-command-line-compiler/.
 Windows-only graphical user interface that provides a thin wrapper around
 wimlib-imagex can be downloaded at
 http://reboot.pro/files/file/485-wimlib-imagex-command-line-compiler/.
@@ -90,83 +90,47 @@ http://reboot.pro/files/file/485-wimlib-imagex-command-line-compiler/.
                               BUILDING FROM SOURCE
 
 As with other open source software, advanced users may choose to build wimlib
                               BUILDING FROM SOURCE
 
 As with other open source software, advanced users may choose to build wimlib
-from source, potentially with customizations.  Although wimlib's build system is
-designed for UNIX-like systems and is easiest to use on Linux, it's possible to
-build Windows binaries on Windows using Cygwin with MinGW.  To do this, follow
-the instructions below.  For the sake of example, I'll assume you are building a
-64-bit version of wimlib v1.13.6.
-
-Run the Cygwin installer, available from https://www.cygwin.com/setup-x86.exe.
-When you get to the package selection screen, choose the following additional
-packages from category "Devel":
-
-    - make
-    - mingw64-x86_64-binutils
-    - mingw64-x86_64-gcc-g++
-    - mingw64-x86_64-libxml2
-    - mingw64-x86_64-winpthreads
-    - pkg-config
-
-Download wimlib's source code from https://wimlib.net/downloads/wimlib-1.13.6.tar.gz.
-
-Start a Cygwin terminal and run the following commands:
-
-    cd /cygdrive/c/Users/example/Downloads # (or wherever you downloaded the source to)
-    tar xf wimlib-1.13.6.tar.gz
-    cd wimlib-1.13.6
-    ./configure --host=x86_64-w64-mingw32
-    make
-
-If successful, the new binaries "libwim-15.dll" and "wimlib-imagex.exe" will
-have been produced in the .libs directory.
-
-By default the binaries are built with debug symbols.  If desired, you can use
-x86_64-w64-mingw32-strip to strip them.
-
-libwim-15.dll will be linked to several other DLLs which you will need as well:
-
-    - libwinpthread-1.dll
-    - libxml2-2.dll, which also requires:
-        - iconv.dll
-        - liblzma-5.dll
-        - zlib1.dll
-
-These DLLs can be found in "C:\cygwin\usr\x86_64-w64-mingw32\sys-root\mingw\bin"
-and must be placed alongside libwim-15.dll for it to run portably.  But see
-below for an alternative.
-
-Building 32-bit binaries is very similar, but you'll need to replace "x86_64"
-with "i686" everywhere in the above instructions, and libwim-15.dll will also
-depend on libgcc_s_sjlj-1.dll.  Note that you can build both 32-bit and 64-bit
-binaries from the same Cygwin installation, provided that you install both the
-mingw64-i686-* and mingw64-x86_64-* packages; and you can run the Cygwin setup
-program to install more packages at any time.
-
-In the official binary releases from wimlib.net, libwim-15.dll's dependent
-libraries are linked in statically rather than dynamically, so it does not
-depend on any DLLs other than standard Windows DLLs.  If you want to do this,
-install the following additional Cygwin packages:
-
-    - p7zip         (category "Archive")
-    - autoconf      (category "Devel")
-    - automake      (category "Devel")
-    - git           (category "Devel")
-    - libtool       (category "Devel")
-    - ghostscript   (category "Graphics")
-    - wget          (category "Web")
-
-Then, in a Cygwin terminal, clone the git repository, checkout the wimlib
-version you want (if you don't want to build the latest master branch),
-bootstrap the repository, and run the Windows release script:
+from source, potentially with customizations.  Currently, wimlib depends on
+MinGW-w64 for its Windows support; Visual Studio is not supported.  The Windows
+binaries can be cross-compiled on Linux, or built on Windows using MSYS2 or
+Cygwin.  The following instructions show the MSYS2 method.
 
 
+First, install MSYS2 by running the installer from https://www.msys2.org/.
+
+Then, open any MSYS2 shell and run the following command:
+
+    pacman -Syu --noconfirm
+
+After that, open any MSYS2 shell again and run the following commands:
+
+    pacman -Syu --noconfirm git
     git clone git://wimlib.net/wimlib
     git clone git://wimlib.net/wimlib
+
+Note: By default the git repository will be on the "master" branch, which is the
+latest development snapshot.  Optionally, you can check out a specific version,
+e.g. 'cd wimlib && git checkout v1.14.0'.  For old versions, please refer to the
+documentation for that version, as things may have changed.  Also, it is
+possible to use a release tarball (e.g. wimlib-1.14.0.tar.gz) instead of the git
+repository; however, the make-windows-release script will not be available in
+that case and you will need to handle more things yourself.
+
+Finally, to actually do a build, close the MSYS2 shell you have open, then open
+one of the following from the Start menu:
+
+  * "MSYS2 MINGW64" - for x86_64 binaries, built with gcc
+  * "MSYS2 CLANG64" - for x86_64 binaries, built with clang
+  * "MSYS2 MINGW32" - for i686 binaries, built with gcc
+  * "MSYS2 CLANG32" - for i686 binaries, built with clang
+  * "MSYS2 CLANGARM64" - for ARM64 binaries (EXPERIMENTAL, needs Windows ARM64)
+
+(If unsure, use "MSYS2 MINGW64".)  Then run the following commands:
+
     cd wimlib
     cd wimlib
-    git checkout v1.13.6  # example only; omit if building the master branch
-    ./bootstrap
-    ./tools/make-windows-release x86_64
-
-The release script will download and build libxml2 and winpthreads as static
-libraries, then build wimlib, then do some final tasks and bundle the resulting
-files up into a ZIP archive.  If successful you'll end up with a file like
-"wimlib-1.13.6-windows-x86_64-bin.zip", just like the official releases.  For
-32-bit binaries just use "i686" instead of "x86_64".
+    tools/make-windows-release --install-msys2-packages
+
+The script will automatically download and install the MSYS2 packages needed to
+build wimlib in the chosen MSYS2 environment, then build wimlib.  The output
+will be in a folder named similarly to "wimlib-1.14.0-windows-x86_64-bin".  Note
+that your "home" folder within MSYS2 is C:\msys64\home\%USERNAME% by default.
+Therefore, the full path to the output folder will be similar to
+C:\msys64\home\%USERNAME%\wimlib\wimlib-1.14.0-windows-x86_64-bin.