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.
This commit is contained in:
parent
34eb5e201d
commit
8884e16864
|
@ -0,0 +1,131 @@
|
||||||
|
|
||||||
|
Building XZ Utils on Windows
|
||||||
|
============================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
This document explains shortly where to get and how to install the
|
||||||
|
build tool that are needed to build XZ Utils on Windows. The final
|
||||||
|
binary package will be standalone in sense that it will depend only
|
||||||
|
on DLLs that are included in all Windows installations.
|
||||||
|
|
||||||
|
These instructions don't apply to Cygwin. XZ Utils can be built under
|
||||||
|
Cygwin in the same way as many other packages.
|
||||||
|
|
||||||
|
These instructions don't apply to MinGW and MSYS developers either,
|
||||||
|
who may want to package XZ Utils for MinGW or MSYS distributions.
|
||||||
|
You know who you are, and will probably use quite different configure
|
||||||
|
options etc. than what is described here.
|
||||||
|
|
||||||
|
|
||||||
|
Installing the toolchain(s)
|
||||||
|
---------------------------
|
||||||
|
|
||||||
|
Some of the following is needed:
|
||||||
|
- MSYS is always needed to use the GNU Autotools based build system.
|
||||||
|
- MinGW builds 32-bit x86 binaries.
|
||||||
|
- MingW-w32 builds 32-bit x86 executables too.
|
||||||
|
- MinGW-w64 builds 64-bit x86-64 binaries.
|
||||||
|
|
||||||
|
So you need to pick between MinGW and MinGW-w32 when building
|
||||||
|
32-bit version. You don't need both.
|
||||||
|
|
||||||
|
You might find 7-Zip <http://7-zip.org/> handy when extracting
|
||||||
|
some files (especially the .tar.lzma files). The ready-made
|
||||||
|
build script will also use 7-Zip to create the distributable
|
||||||
|
.zip and .7z files.
|
||||||
|
|
||||||
|
I used the following directory structure but you can use whatever
|
||||||
|
you want. Just note that I will use these in my examples. Each of
|
||||||
|
these should have a subdirectory "bin":
|
||||||
|
|
||||||
|
C:\devel\tools\msys
|
||||||
|
C:\devel\tools\mingw
|
||||||
|
C:\devel\tools\mingw-w32
|
||||||
|
C:\devel\tools\mingw-w64
|
||||||
|
|
||||||
|
|
||||||
|
Installing MSYS
|
||||||
|
|
||||||
|
You can download MSYS from MinGW's Sourceforge page:
|
||||||
|
|
||||||
|
http://sourceforge.net/projects/mingw/files/
|
||||||
|
|
||||||
|
It's under "MSYS Base System". I recommend using MSYS 1.0.11
|
||||||
|
(MSYS-1.0.11.exe or msysCORE-1.0.11-bin.tar.gz) because that
|
||||||
|
package includes all the required tools. At least some of the
|
||||||
|
later versions include only a subset and thus you would need to
|
||||||
|
download the rest separately. The old version will work fine for
|
||||||
|
building XZ Utils.
|
||||||
|
|
||||||
|
You can use either the .exe or .tar.gz package. I prefer .tar.gz,
|
||||||
|
because it can be extracted into any directory and later removed
|
||||||
|
without worrying about uninstallers.
|
||||||
|
|
||||||
|
|
||||||
|
Installing MinGW
|
||||||
|
|
||||||
|
You can download the required packages from MinGW's Sourceforge page:
|
||||||
|
|
||||||
|
http://sourceforge.net/projects/mingw/files/
|
||||||
|
|
||||||
|
These version numbers were the latest when I wrote this document, but
|
||||||
|
you probably should pick the latest versions:
|
||||||
|
|
||||||
|
MinGW Runtime -> mingwrt-3.17-mingw32-dev.tar.gz
|
||||||
|
MinGW API for MS-Windows -> w32api-3.14-mingw32-dev.tar.gz
|
||||||
|
GNU Binutils -> binutils-2.20-1-bin.tar.gz
|
||||||
|
GCC Version 4 -> gcc-full-4.4.0-mingw32-bin-2.tar.lzma
|
||||||
|
|
||||||
|
The full GCC package is quite big, but if you want a smaller
|
||||||
|
download, you will need to download more than one file, so I'm
|
||||||
|
using the full package in this document for simplicity.
|
||||||
|
|
||||||
|
Extract the packages in the above order, possibly overwriting files
|
||||||
|
from packages that were extracted earlier.
|
||||||
|
|
||||||
|
|
||||||
|
Installing MinGW-w32 or MinGW-w64
|
||||||
|
|
||||||
|
You can find the latest MinGW-w32 and MinGW-w64 builds here:
|
||||||
|
|
||||||
|
http://sourceforge.net/projects/mingw-w64/files/
|
||||||
|
|
||||||
|
Locate the appropriate files:
|
||||||
|
|
||||||
|
Toolchains targeting Win32 -> mingw-w32-*-mingw*.zip
|
||||||
|
Toolchains targeting Win64 -> mingw-w64-*-mingw*.zip
|
||||||
|
|
||||||
|
I don't know what is the most recommended one. I used sezero's
|
||||||
|
versions from "Personal Builds", since they seemed to have
|
||||||
|
a stable GCC (judging from the GCC version number only).
|
||||||
|
|
||||||
|
If you will install both MinGW-w32 and MinGW-w64, remember to
|
||||||
|
extract them into different directories.
|
||||||
|
|
||||||
|
|
||||||
|
Building XZ Utils
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
Start MSYS by going to the directory C:\devel\tools\msys and running
|
||||||
|
msys.bat there (double-click or use command prompt). It will start
|
||||||
|
at "home" directory, which is C:\devel\tools\msys\home\YourUserName.
|
||||||
|
|
||||||
|
If you have xz-5.x.x.tar.gz in C:\devel, you should be able to build
|
||||||
|
it now with the following commands:
|
||||||
|
|
||||||
|
cd /c/devel
|
||||||
|
tar xzf xz-5.x.x.tar.gz
|
||||||
|
cd xz-5.x.x
|
||||||
|
sh windows/build.sh
|
||||||
|
|
||||||
|
If you used some other directory than C:\devel\tools for the build
|
||||||
|
tools, edit the variables near the beginning of build.sh first.
|
||||||
|
|
||||||
|
If you want to build manually, read the buildit() function in
|
||||||
|
build.sh. Look especially at the latter configure invocation.
|
||||||
|
|
||||||
|
Be patient. Running configure and other scripts used by the build
|
||||||
|
system is (very) slow under Windows.
|
||||||
|
|
320
windows/Makefile
320
windows/Makefile
|
@ -1,320 +0,0 @@
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Makefile to build XZ Utils using MinGW
|
|
||||||
#
|
|
||||||
# Make flags to alter compilation:
|
|
||||||
#
|
|
||||||
# DEBUG=1 Enable assertions. Don't use this for production builds!
|
|
||||||
# You may also want to set CFLAGS="-g -O0" to disable
|
|
||||||
# optimizations.
|
|
||||||
#
|
|
||||||
# W64=1 Build for 64-bit Windows. Make sure that you have 64-bit
|
|
||||||
# MinGW in PATH.
|
|
||||||
#
|
|
||||||
# WINE=1 Shortcut to set CC, AR, and STRIP to use Wine to run Windows
|
|
||||||
# versions of MinGW binaries.
|
|
||||||
#
|
|
||||||
# The usual CPPFLAGS and CFLAGS are supported too.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#
|
|
||||||
# Author: Lasse Collin
|
|
||||||
#
|
|
||||||
# This file has been put into the public domain.
|
|
||||||
# You can do whatever you want with this file.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
ifdef W64
|
|
||||||
MING_PFX = x86_64-w64-mingw32-
|
|
||||||
CC = $(MING_PFX)gcc
|
|
||||||
WINDRES = $(MING_PFX)windres
|
|
||||||
AR = $(MING_PFX)ar
|
|
||||||
STRIP = $(MING_PFX)strip
|
|
||||||
PKG_DIR=pkg-x64
|
|
||||||
else
|
|
||||||
CC = mingw32-gcc
|
|
||||||
WINDRES = windres
|
|
||||||
AR = ar
|
|
||||||
STRIP = strip
|
|
||||||
PKG_DIR=pkg-x86
|
|
||||||
endif
|
|
||||||
|
|
||||||
SED = sed
|
|
||||||
MKDIR = mkdir
|
|
||||||
CP = cp
|
|
||||||
RM = rm -f
|
|
||||||
|
|
||||||
CFLAGS = -g -Wall -Wextra -O2
|
|
||||||
# CFLAGS = -Wall -Wextra -O3 -fomit-frame-pointer -funroll-loops
|
|
||||||
|
|
||||||
ALL_CFLAGS = -std=gnu99 -mms-bitfields
|
|
||||||
|
|
||||||
ALL_CPPFLAGS = \
|
|
||||||
-I. \
|
|
||||||
-I../src/common \
|
|
||||||
-I../src/liblzma/api \
|
|
||||||
-I../src/liblzma/common \
|
|
||||||
-I../src/liblzma/check \
|
|
||||||
-I../src/liblzma/rangecoder \
|
|
||||||
-I../src/liblzma/lz \
|
|
||||||
-I../src/liblzma/lzma \
|
|
||||||
-I../src/liblzma/delta \
|
|
||||||
-I../src/liblzma/simple \
|
|
||||||
-I../src/liblzma/subblock
|
|
||||||
|
|
||||||
ALL_CPPFLAGS += -DHAVE_CONFIG_H
|
|
||||||
|
|
||||||
# This works with Wine too while using native GNU make, sed, and rm.
|
|
||||||
ifdef WINE
|
|
||||||
ifdef W64
|
|
||||||
CC := wine c:/MinGW64/bin/x86_64-pc-mingw32-gcc
|
|
||||||
WINDRES := wine c:/MinGW64/bin/x86_64-pc-mingw32-windres
|
|
||||||
AR := wine c:/MinGW64/bin/x86_64-pc-mingw32-ar
|
|
||||||
STRIP := wine c:/MinGW64/bin/x86_64-pc-mingw32-strip
|
|
||||||
else
|
|
||||||
CC := wine c:/MinGW/bin/gcc
|
|
||||||
WINDRES := wine c:/MinGW/bin/windres
|
|
||||||
AR := wine c:/MinGW/bin/ar
|
|
||||||
STRIP := wine c:/MinGW/bin/strip
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifdef DEBUG
|
|
||||||
# Use echo since it works for this purpose on both Windows and POSIX.
|
|
||||||
STRIP := echo Skipping strip
|
|
||||||
else
|
|
||||||
ALL_CPPFLAGS += -DNDEBUG
|
|
||||||
endif
|
|
||||||
|
|
||||||
ALL_CPPFLAGS += $(CPPFLAGS)
|
|
||||||
ALL_CFLAGS += $(CFLAGS)
|
|
||||||
|
|
||||||
|
|
||||||
################
|
|
||||||
# Common rules #
|
|
||||||
################
|
|
||||||
|
|
||||||
.PHONY: all clean pkg
|
|
||||||
all: liblzma xzdec xz
|
|
||||||
clean: liblzma-clean xzdec-clean xz-clean
|
|
||||||
|
|
||||||
pkg: all
|
|
||||||
$(RM) -r $(PKG_DIR)
|
|
||||||
$(MKDIR) -p $(PKG_DIR)/lib $(PKG_DIR)/include/lzma
|
|
||||||
$(CP) liblzma.dll xz-dynamic.exe xz.exe xzdec-dynamic.exe xzdec.exe lzmadec-dynamic.exe lzmadec.exe $(PKG_DIR)
|
|
||||||
$(CP) liblzma.a liblzma.def liblzma_static.lib $(PKG_DIR)/lib
|
|
||||||
$(CP) ../src/liblzma/api/lzma.h $(PKG_DIR)/include
|
|
||||||
$(CP) ../src/liblzma/api/lzma/*.h $(PKG_DIR)/include/lzma
|
|
||||||
|
|
||||||
%.o: %.rc
|
|
||||||
$(WINDRES) $(ALL_CPPFLAGS) $< $@
|
|
||||||
|
|
||||||
|
|
||||||
###############
|
|
||||||
# liblzma.dll #
|
|
||||||
###############
|
|
||||||
|
|
||||||
.PHONY: liblzma
|
|
||||||
liblzma: liblzma.dll liblzma_static.lib
|
|
||||||
|
|
||||||
LIBLZMA_SRCS_C = \
|
|
||||||
../src/liblzma/common/alone_decoder.c \
|
|
||||||
../src/liblzma/common/alone_encoder.c \
|
|
||||||
../src/liblzma/common/auto_decoder.c \
|
|
||||||
../src/liblzma/common/block_buffer_decoder.c \
|
|
||||||
../src/liblzma/common/block_buffer_encoder.c \
|
|
||||||
../src/liblzma/common/block_decoder.c \
|
|
||||||
../src/liblzma/common/block_encoder.c \
|
|
||||||
../src/liblzma/common/block_header_decoder.c \
|
|
||||||
../src/liblzma/common/block_header_encoder.c \
|
|
||||||
../src/liblzma/common/block_util.c \
|
|
||||||
../src/liblzma/common/common.c \
|
|
||||||
../src/liblzma/common/easy_buffer_encoder.c \
|
|
||||||
../src/liblzma/common/easy_decoder_memusage.c \
|
|
||||||
../src/liblzma/common/easy_encoder.c \
|
|
||||||
../src/liblzma/common/easy_encoder_memusage.c \
|
|
||||||
../src/liblzma/common/easy_preset.c \
|
|
||||||
../src/liblzma/common/filter_buffer_decoder.c \
|
|
||||||
../src/liblzma/common/filter_buffer_encoder.c \
|
|
||||||
../src/liblzma/common/filter_common.c \
|
|
||||||
../src/liblzma/common/filter_decoder.c \
|
|
||||||
../src/liblzma/common/filter_encoder.c \
|
|
||||||
../src/liblzma/common/filter_flags_decoder.c \
|
|
||||||
../src/liblzma/common/filter_flags_encoder.c \
|
|
||||||
../src/liblzma/common/hardware_physmem.c \
|
|
||||||
../src/liblzma/common/index.c \
|
|
||||||
../src/liblzma/common/index_decoder.c \
|
|
||||||
../src/liblzma/common/index_encoder.c \
|
|
||||||
../src/liblzma/common/index_hash.c \
|
|
||||||
../src/liblzma/common/stream_buffer_decoder.c \
|
|
||||||
../src/liblzma/common/stream_buffer_encoder.c \
|
|
||||||
../src/liblzma/common/stream_decoder.c \
|
|
||||||
../src/liblzma/common/stream_encoder.c \
|
|
||||||
../src/liblzma/common/stream_flags_common.c \
|
|
||||||
../src/liblzma/common/stream_flags_decoder.c \
|
|
||||||
../src/liblzma/common/stream_flags_encoder.c \
|
|
||||||
../src/liblzma/common/vli_decoder.c \
|
|
||||||
../src/liblzma/common/vli_encoder.c \
|
|
||||||
../src/liblzma/common/vli_size.c \
|
|
||||||
../src/liblzma/check/check.c \
|
|
||||||
../src/liblzma/check/crc32_table.c \
|
|
||||||
../src/liblzma/check/crc64_table.c \
|
|
||||||
../src/liblzma/check/sha256.c \
|
|
||||||
../src/liblzma/rangecoder/price_table.c \
|
|
||||||
../src/liblzma/lz/lz_decoder.c \
|
|
||||||
../src/liblzma/lz/lz_encoder.c \
|
|
||||||
../src/liblzma/lz/lz_encoder_mf.c \
|
|
||||||
../src/liblzma/lzma/fastpos_table.c \
|
|
||||||
../src/liblzma/lzma/lzma2_decoder.c \
|
|
||||||
../src/liblzma/lzma/lzma2_encoder.c \
|
|
||||||
../src/liblzma/lzma/lzma_decoder.c \
|
|
||||||
../src/liblzma/lzma/lzma_encoder.c \
|
|
||||||
../src/liblzma/lzma/lzma_encoder_optimum_fast.c \
|
|
||||||
../src/liblzma/lzma/lzma_encoder_optimum_normal.c \
|
|
||||||
../src/liblzma/lzma/lzma_encoder_presets.c \
|
|
||||||
../src/liblzma/delta/delta_common.c \
|
|
||||||
../src/liblzma/delta/delta_decoder.c \
|
|
||||||
../src/liblzma/delta/delta_encoder.c \
|
|
||||||
../src/liblzma/simple/arm.c \
|
|
||||||
../src/liblzma/simple/armthumb.c \
|
|
||||||
../src/liblzma/simple/ia64.c \
|
|
||||||
../src/liblzma/simple/powerpc.c \
|
|
||||||
../src/liblzma/simple/simple_coder.c \
|
|
||||||
../src/liblzma/simple/simple_decoder.c \
|
|
||||||
../src/liblzma/simple/simple_encoder.c \
|
|
||||||
../src/liblzma/simple/sparc.c \
|
|
||||||
../src/liblzma/simple/x86.c \
|
|
||||||
../src/common/tuklib_physmem.c
|
|
||||||
|
|
||||||
LIBLZMA_SRCS_ASM =
|
|
||||||
|
|
||||||
ifdef W64
|
|
||||||
LIBLZMA_SRCS_C += \
|
|
||||||
../src/liblzma/check/crc32_fast.c \
|
|
||||||
../src/liblzma/check/crc64_fast.c
|
|
||||||
else
|
|
||||||
LIBLZMA_SRCS_ASM += \
|
|
||||||
../src/liblzma/check/crc32_x86.S \
|
|
||||||
../src/liblzma/check/crc64_x86.S
|
|
||||||
endif
|
|
||||||
|
|
||||||
LIBLZMA_OBJS_C = $(LIBLZMA_SRCS_C:.c=.o)
|
|
||||||
LIBLZMA_OBJS_ASM = $(LIBLZMA_SRCS_ASM:.S=.o)
|
|
||||||
LIBLZMA_OBJS = \
|
|
||||||
$(LIBLZMA_OBJS_C) \
|
|
||||||
$(LIBLZMA_OBJS_ASM) \
|
|
||||||
../src/liblzma/liblzma_w32res.o
|
|
||||||
|
|
||||||
LIBLZMA_OBJS_STATIC_C = $(LIBLZMA_SRCS_C:.c=-static.o)
|
|
||||||
LIBLZMA_OBJS_STATIC_ASM = $(LIBLZMA_SRCS_ASM:.S=-static.o)
|
|
||||||
LIBLZMA_OBJS_STATIC = $(LIBLZMA_OBJS_STATIC_C) $(LIBLZMA_OBJS_STATIC_ASM)
|
|
||||||
|
|
||||||
# The sed is needed to remove ordinals from the .def file. I'm not going
|
|
||||||
# to track the ordinal numbers, so people should link against liblzma.dll
|
|
||||||
# only by using symbol names.
|
|
||||||
liblzma.dll: $(LIBLZMA_OBJS)
|
|
||||||
$(CC) $(ALL_CFLAGS) -shared -o liblzma.dll $(LIBLZMA_OBJS) -Wl,--out-implib,liblzma.a,--output-def,liblzma.def.in
|
|
||||||
$(SED) 's/ \+@ *[0-9]\+//' liblzma.def.in > liblzma.def
|
|
||||||
$(RM) liblzma.def.in
|
|
||||||
$(STRIP) --strip-unneeded liblzma.a
|
|
||||||
$(STRIP) --strip-all liblzma.dll
|
|
||||||
|
|
||||||
$(LIBLZMA_OBJS_C): %.o: %.c
|
|
||||||
$(CC) -DDLL_EXPORT $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(LIBLZMA_OBJS_ASM): %.o: %.S
|
|
||||||
$(CC) -DDLL_EXPORT $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
liblzma_static.lib: $(LIBLZMA_OBJS_STATIC)
|
|
||||||
$(RM) $@
|
|
||||||
$(AR) rcs $@ $(LIBLZMA_OBJS_STATIC)
|
|
||||||
$(STRIP) --strip-unneeded $@
|
|
||||||
|
|
||||||
$(LIBLZMA_OBJS_STATIC_C): %-static.o: %.c
|
|
||||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
$(LIBLZMA_OBJS_STATIC_ASM): %-static.o: %.S
|
|
||||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
.PHONY: liblzma-clean
|
|
||||||
liblzma-clean:
|
|
||||||
-$(RM) $(LIBLZMA_OBJS) $(LIBLZMA_OBJS_STATIC) liblzma.def.in liblzma.def liblzma.a liblzma.dll liblzma_static.lib
|
|
||||||
|
|
||||||
|
|
||||||
###########################
|
|
||||||
# xzdec.exe & lzmadec.exe #
|
|
||||||
###########################
|
|
||||||
|
|
||||||
.PHONY: xzdec
|
|
||||||
xzdec: xzdec-dynamic.exe lzmadec-dynamic.exe xzdec.exe lzmadec.exe
|
|
||||||
|
|
||||||
XZDEC_SRCS = ../src/xzdec/xzdec.c \
|
|
||||||
../src/common/tuklib_progname.c \
|
|
||||||
../src/common/tuklib_exit.c
|
|
||||||
|
|
||||||
xzdec-dynamic.exe: liblzma.dll $(XZDEC_SRCS) ../src/xzdec/xzdec_w32res.o
|
|
||||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(XZDEC_SRCS) ../src/xzdec/xzdec_w32res.o -o $@ liblzma.a
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
lzmadec-dynamic.exe: liblzma.dll $(XZDEC_SRCS) ../src/xzdec/lzmadec_w32res.o
|
|
||||||
$(CC) $(ALL_CPPFLAGS) -DLZMADEC $(ALL_CFLAGS) $(XZDEC_SRCS) ../src/xzdec/lzmadec_w32res.o -o $@ liblzma.a
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
xzdec.exe: liblzma_static.lib $(XZDEC_SRCS) ../src/xzdec/xzdec_w32res.o
|
|
||||||
$(CC) -DLZMA_API_STATIC $(ALL_CPPFLAGS) $(ALL_CFLAGS) $(XZDEC_SRCS) ../src/xzdec/xzdec_w32res.o -o $@ liblzma_static.lib
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
lzmadec.exe: liblzma_static.lib $(XZDEC_SRCS) ../src/xzdec/lzmadec_w32res.o
|
|
||||||
$(CC) -DLZMA_API_STATIC $(ALL_CPPFLAGS) -DLZMADEC $(ALL_CFLAGS) $(XZDEC_SRCS) ../src/xzdec/lzmadec_w32res.o -o $@ liblzma_static.lib
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
.PHONY: xzdec-clean
|
|
||||||
xzdec-clean:
|
|
||||||
-$(RM) xzdec-dynamic.exe lzmadec-dynamic.exe xzdec.exe lzmadec.exe ../src/xzdec/xzdec_w32res.o ../src/xzdec/lzmadec_w32res.o
|
|
||||||
|
|
||||||
|
|
||||||
##########
|
|
||||||
# xz.exe #
|
|
||||||
##########
|
|
||||||
|
|
||||||
.PHONY: xz
|
|
||||||
xz: xz-dynamic.exe xz.exe
|
|
||||||
|
|
||||||
XZ_SRCS = \
|
|
||||||
../src/xz/args.c \
|
|
||||||
../src/xz/coder.c \
|
|
||||||
../src/xz/file_io.c \
|
|
||||||
../src/xz/hardware.c \
|
|
||||||
../src/xz/main.c \
|
|
||||||
../src/xz/message.c \
|
|
||||||
../src/xz/options.c \
|
|
||||||
../src/xz/signals.c \
|
|
||||||
../src/xz/suffix.c \
|
|
||||||
../src/xz/util.c \
|
|
||||||
../src/common/tuklib_open_stdxxx.c \
|
|
||||||
../src/common/tuklib_progname.c \
|
|
||||||
../src/common/tuklib_exit.c \
|
|
||||||
../src/common/tuklib_cpucores.c
|
|
||||||
|
|
||||||
|
|
||||||
XZ_OBJS = $(XZ_SRCS:.c=.o)
|
|
||||||
XZ_OBJS_STATIC = $(XZ_SRCS:.c=-static.o)
|
|
||||||
|
|
||||||
$(XZ_OBJS): %.o: %.c
|
|
||||||
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
xz-dynamic.exe: liblzma.dll $(XZ_OBJS) ../src/xz/xz_w32res.o
|
|
||||||
$(CC) $(ALL_CFLAGS) $(XZ_OBJS) ../src/xz/xz_w32res.o -o $@ liblzma.a
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
$(XZ_OBJS_STATIC): %-static.o: %.c
|
|
||||||
$(CC) -DLZMA_API_STATIC $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
|
|
||||||
|
|
||||||
xz.exe: liblzma_static.lib $(XZ_OBJS_STATIC) ../src/xz/xz_w32res.o
|
|
||||||
$(CC) $(ALL_CFLAGS) $(XZ_OBJS_STATIC) ../src/xz/xz_w32res.o -o $@ liblzma_static.lib
|
|
||||||
$(STRIP) --strip-all $@
|
|
||||||
|
|
||||||
.PHONY: xz-clean
|
|
||||||
xz-clean:
|
|
||||||
-$(RM) $(XZ_OBJS) $(XZ_OBJS_STATIC) ../src/xz/xz_w32res.o xz-dynamic.exe xz.exe
|
|
155
windows/README
155
windows/README
|
@ -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.
|
|
||||||
|
|
|
@ -0,0 +1,115 @@
|
||||||
|
|
||||||
|
XZ Utils for Windows
|
||||||
|
====================
|
||||||
|
|
||||||
|
Introduction
|
||||||
|
------------
|
||||||
|
|
||||||
|
This package includes command line tools (xz.exe and a few others)
|
||||||
|
and the liblzma compression library from XZ Utils. You can find the
|
||||||
|
latest version and full source code from <http://tukaani.org/xz/>.
|
||||||
|
|
||||||
|
The parts of the XZ Utils source code, that are relevant to this
|
||||||
|
binary package, are in the public domain. XZ Utils have been built
|
||||||
|
for this package with MinGW and linked statically against the MinGW
|
||||||
|
runtime and w32api packages.
|
||||||
|
|
||||||
|
FIXME: Add license info about MinGW runtime and w32api.
|
||||||
|
|
||||||
|
|
||||||
|
Package contents
|
||||||
|
----------------
|
||||||
|
|
||||||
|
All executables and libraries in this package require msvcrt.dll.
|
||||||
|
It's included in all recent Windows versions. On Windows 95 it
|
||||||
|
might be missing, but once you get it somewhere, XZ Utils should
|
||||||
|
run even on Windows 95.
|
||||||
|
|
||||||
|
There are two different versions of the executable and library files.
|
||||||
|
There is one directory for each type of binaries:
|
||||||
|
|
||||||
|
bin_i486 32-bit x86 (i486 and up), Windows 95 and later
|
||||||
|
bin_x86-64 64-bit x86-64, Windows XP and later
|
||||||
|
|
||||||
|
Each of the above directories have the following files:
|
||||||
|
|
||||||
|
*.exe Command line tools. (It's useless to double-click
|
||||||
|
these; use the command prompt instead.) These have
|
||||||
|
been linked statically against liblzma, so they
|
||||||
|
don't require liblzma.dll. Thus, you can copy e.g.
|
||||||
|
xz.exe to a directory that is in PATH without copying
|
||||||
|
any other files from this package.
|
||||||
|
|
||||||
|
liblzma.dll Shared version of the liblzma compression library.
|
||||||
|
This file is mostly useful to developers, although
|
||||||
|
some non-developers might use it to upgrade their
|
||||||
|
copy of liblzma.
|
||||||
|
|
||||||
|
liblzma.a Static version of the liblzma compression library.
|
||||||
|
This file is useful only for developers.
|
||||||
|
|
||||||
|
The rest of the directories contain architecture-independent files:
|
||||||
|
|
||||||
|
doc Documentation in the plain text (TXT) format. The
|
||||||
|
manuals of the command line tools are provided also
|
||||||
|
in the PDF format. liblzma.def is in this directory
|
||||||
|
too.
|
||||||
|
|
||||||
|
include C header files for liblzma. These should be
|
||||||
|
compatible with most C and C++ compilers. If you
|
||||||
|
have problems, try to fix it and send your fixes
|
||||||
|
upstream, or at least report a bug, thanks.
|
||||||
|
|
||||||
|
|
||||||
|
Linking against liblzma
|
||||||
|
-----------------------
|
||||||
|
|
||||||
|
MinGW
|
||||||
|
|
||||||
|
If you use MinGW, linking against liblzma.dll or liblzma.a should
|
||||||
|
be straightforward. You don't need an import library to link
|
||||||
|
against liblzma.dll, and for static linking, you don't need to
|
||||||
|
worry about the LZMA_API_STATIC macro.
|
||||||
|
|
||||||
|
Note that the MinGW distribution includes liblzma. If you are
|
||||||
|
building packages that will be part of the MinGW distribution, you
|
||||||
|
probably should use the version of liblzma shipped in MinGW instead
|
||||||
|
of this package.
|
||||||
|
|
||||||
|
|
||||||
|
Microsoft Visual C++
|
||||||
|
|
||||||
|
To link against liblzma.dll, you need to create an import library
|
||||||
|
first. You need the "lib" command from MSVC and liblzma.def from
|
||||||
|
the "doc" directory of this package. Here is the command that works
|
||||||
|
on 32-bit x86:
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Linking against static liblzma should work too. Rename liblzma.a
|
||||||
|
to e.g. liblzma_static.lib and tell MSVC to link against it. You
|
||||||
|
also need to tell lzma.h to not use __declspec(dllimport) by defining
|
||||||
|
the macro LZMA_API_STATIC. You can do it either in the C/C++ code
|
||||||
|
|
||||||
|
#define LZMA_API_STATIC
|
||||||
|
#include <lzma.h>
|
||||||
|
|
||||||
|
or by adding it to compiler options.
|
||||||
|
|
||||||
|
|
||||||
|
Other compilers
|
||||||
|
|
||||||
|
If you are using some other compiler, see its documentation how to
|
||||||
|
create an import library (if it is needed). If it is simple, I
|
||||||
|
might consider including the instructions here.
|
||||||
|
|
||||||
|
|
||||||
|
Reporting bugs
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Report bugs to <lasse.collin@tukaani.org> (in English or Finnish).
|
||||||
|
|
|
@ -0,0 +1,189 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Build a binary package on Windows with MinGW and MSYS
|
||||||
|
#
|
||||||
|
# Set the paths where MinGW, Mingw-w32, or MinGW-w64 are installed. If both
|
||||||
|
# MinGW and MinGW-w32 are specified, MinGW will be used. If there is no
|
||||||
|
# 32-bit or 64-bit compiler at all, it is simply skipped.
|
||||||
|
#
|
||||||
|
# Optionally, 7-Zip is used to create the final .zip and .7z packages.
|
||||||
|
# If you have installed it in the default directory, this script should
|
||||||
|
# find it automatically. Otherwise adjust the path manually.
|
||||||
|
#
|
||||||
|
# If you want to use a cross-compiler e.g. on GNU/Linux, this script won't
|
||||||
|
# work out of the box. You need to omit "make check" commands and replace
|
||||||
|
# u2d with some other tool to convert newlines from LF to CR+LF. You will
|
||||||
|
# also need to pass the --host option to configure.
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Author: Lasse Collin
|
||||||
|
#
|
||||||
|
# This file has been put into the public domain.
|
||||||
|
# You can do whatever you want with this file.
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
MINGW_DIR=/c/devel/tools/mingw
|
||||||
|
MINGW_W32_DIR=/c/devel/tools/mingw-w32
|
||||||
|
MINGW_W64_DIR=/c/devel/tools/mingw-w64
|
||||||
|
|
||||||
|
for SEVENZ_EXE in "$PROGRAMW6432/7-Zip/7z.exe" "$PROGRAMFILES/7-Zip/7z.exe" \
|
||||||
|
"/c/Program Files/7-Zip/7z.exe"
|
||||||
|
do
|
||||||
|
[ -x "$SEVENZ_EXE" ] && break
|
||||||
|
done
|
||||||
|
|
||||||
|
|
||||||
|
# Abort immediatelly if something goes wrong.
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# White spaces in directory names may break things so catch them immediatelly.
|
||||||
|
case $(pwd) in
|
||||||
|
' ' | ' ' | '
|
||||||
|
') echo "Error: White space in the directory name" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# This sciprt can be run either at the top-level directory of the package
|
||||||
|
# or in the same directory containing this script.
|
||||||
|
if [ ! -f windows/build.sh ]; then
|
||||||
|
cd ..
|
||||||
|
if [ ! -f windows/build.sh ]; then
|
||||||
|
echo "You are in a wrong directory." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run configure and copy the binaries to the given directory.
|
||||||
|
#
|
||||||
|
# The first argument is the directory where to copy the binaries.
|
||||||
|
# The rest of the arguments are passed to configure.
|
||||||
|
buildit()
|
||||||
|
{
|
||||||
|
DESTDIR=$1
|
||||||
|
BUILD=$2
|
||||||
|
CFLAGS=$3
|
||||||
|
|
||||||
|
# Clean up if it was already configured.
|
||||||
|
[ -f Makefile ] && make distclean
|
||||||
|
|
||||||
|
# Build the size-optimized binaries. Note that I don't want to
|
||||||
|
# provide size-optimized liblzma (shared nor static), because
|
||||||
|
# that isn't thread-safe now, and depending on bunch of things,
|
||||||
|
# maybe it will never be on Windows (pthreads-win32 helps but
|
||||||
|
# static liblzma might bit a bit tricky with it).
|
||||||
|
./configure \
|
||||||
|
--prefix= \
|
||||||
|
--disable-nls \
|
||||||
|
--disable-threads \
|
||||||
|
--disable-shared \
|
||||||
|
--enable-small \
|
||||||
|
--build="$BUILD" \
|
||||||
|
CFLAGS="$CFLAGS -Os"
|
||||||
|
make check
|
||||||
|
|
||||||
|
mkdir -pv "$DESTDIR"
|
||||||
|
cp -v src/xzdec/{xz,lzma}dec.exe src/lzmainfo/lzmainfo.exe "$DESTDIR"
|
||||||
|
|
||||||
|
make distclean
|
||||||
|
|
||||||
|
# Build the normal speed-optimized binaries. Note that while
|
||||||
|
# --disable-threads has been documented to make some things
|
||||||
|
# thread-unsafe, it's not actually true with this combination
|
||||||
|
# of configure flags in XZ Utils 5.0.x. Things can (and probably
|
||||||
|
# will) change after 5.0.x, and this script will be updated too.
|
||||||
|
./configure \
|
||||||
|
--prefix= \
|
||||||
|
--disable-nls \
|
||||||
|
--disable-threads \
|
||||||
|
--enable-dynamic=no \
|
||||||
|
--build="$BUILD" \
|
||||||
|
CFLAGS="$CFLAGS -O2"
|
||||||
|
make check
|
||||||
|
|
||||||
|
cp -v src/xz/xz.exe src/liblzma/.libs/liblzma.a "$DESTDIR"
|
||||||
|
cp -v src/liblzma/.libs/liblzma-*.dll "$DESTDIR/liblzma.dll"
|
||||||
|
|
||||||
|
strip -v "$DESTDIR/"*
|
||||||
|
}
|
||||||
|
|
||||||
|
# Copy files and convert newlines from LF to CR+LF. Optinally add a suffix
|
||||||
|
# to the destination filename.
|
||||||
|
#
|
||||||
|
# The first argument is the destination directory. The second argument is
|
||||||
|
# the suffix to append to the filenames; use empty string if no extra suffix
|
||||||
|
# is wanted. The rest of the arguments are actual the filenames.
|
||||||
|
txtcp()
|
||||||
|
{
|
||||||
|
DESTDIR=$1
|
||||||
|
SUFFIX=$2
|
||||||
|
shift 2
|
||||||
|
for SRCFILE; do
|
||||||
|
DESTFILE="$DESTDIR/${SRCFILE##*/}$SUFFIX"
|
||||||
|
echo "Converting \`$SRCFILE' -> \`$DESTFILE'"
|
||||||
|
u2d < "$SRCFILE" > "$DESTFILE"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# FIXME: Make sure that we don't get i686 or i586 code from the runtime.
|
||||||
|
# Actually i586 would be fine, but i686 probably not if the idea is to
|
||||||
|
# support even Win95.
|
||||||
|
#
|
||||||
|
# FIXME: Using i486 in the configure triplet may be wrong.
|
||||||
|
if [ -d "$MINGW_DIR" ]; then
|
||||||
|
# 32-bit x86, Win95 or later, using MinGW
|
||||||
|
PATH=$MINGW_DIR/bin:$PATH \
|
||||||
|
buildit \
|
||||||
|
pkg/bin_i486 \
|
||||||
|
i486-pc-mingw32 \
|
||||||
|
'-march=i486 -mtune=generic'
|
||||||
|
elif [ -d "$MINGW_W32_DIR" ]; then
|
||||||
|
# 32-bit x86, Win95 or later, using MinGW-w32
|
||||||
|
PATH=$MINGW_W32_DIR/bin:$MINGW_W32_DIR/i686-w64-mingw32/bin:$PATH \
|
||||||
|
buildit \
|
||||||
|
pkg/bin_i486 \
|
||||||
|
i486-w64-mingw32 \
|
||||||
|
'-march=i486 -mtune=generic'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d "$MINGW_W64_DIR" ]; then
|
||||||
|
# 64-bit x86, WinXP or later, using MinGW-w64
|
||||||
|
PATH=$MINGW_W64_DIR/bin:$MINGW_W64_DIR/x86_64-w64-mingw32/bin:$PATH \
|
||||||
|
buildit \
|
||||||
|
pkg/bin_x86-64 \
|
||||||
|
x86_64-w64-mingw32 \
|
||||||
|
'-march=x86-64 -mtune=generic'
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Copy the headers, the .def file, and the docs.
|
||||||
|
# They are the same for all architectures and builds.
|
||||||
|
mkdir -pv pkg/{include/lzma,doc/manuals}
|
||||||
|
txtcp pkg/include "" src/liblzma/api/lzma.h
|
||||||
|
txtcp pkg/include/lzma "" src/liblzma/api/lzma/*.h
|
||||||
|
txtcp pkg/doc "" src/liblzma/liblzma.def
|
||||||
|
txtcp pkg/doc .txt AUTHORS COPYING NEWS README THANKS TODO
|
||||||
|
txtcp pkg/doc "" doc/*.txt
|
||||||
|
txtcp pkg/doc/manuals "" doc/man/txt/{xz,xzdec,lzmainfo}.txt
|
||||||
|
cp -v doc/man/pdf-*/{xz,xzdec,lzmainfo}-*.pdf pkg/doc/manuals
|
||||||
|
txtcp pkg "" windows/README-Windows.txt
|
||||||
|
|
||||||
|
# Create the package. This requires either 7z.exe from 7-Zip or zip.exe
|
||||||
|
# from Info-ZIP. If neither are found, this is skipped and you have to
|
||||||
|
# zip it yourself. 7-Zip tends to easily give the best compression ratio.
|
||||||
|
VER=$(sh version.sh)
|
||||||
|
cd pkg
|
||||||
|
if [ -x "$SEVENZ_EXE" ]; then
|
||||||
|
"$SEVENZ_EXE" a -tzip ../xz-$VER-windows.zip *
|
||||||
|
"$SEVENZ_EXE" a ../xz-$VER-windows.7z *
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
echo "NOTE: 7z.exe was not found. xz-$VER-windows.zip"
|
||||||
|
echo " and xz-$VER-windows.7z were not created."
|
||||||
|
echo " You can create them yourself from the pkg directory."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "Build completed successfully."
|
||||||
|
echo
|
170
windows/config.h
170
windows/config.h
|
@ -1,170 +0,0 @@
|
||||||
/* Define to 1 if using x86 assembler optimizations. */
|
|
||||||
/* #undef HAVE_ASM_X86 */
|
|
||||||
|
|
||||||
/* Define to 1 if using x86_64 assembler optimizations. */
|
|
||||||
/* #undef HAVE_ASM_X86_64 */
|
|
||||||
|
|
||||||
/* Define to 1 if crc32 integrity check is enabled. */
|
|
||||||
#define HAVE_CHECK_CRC32 1
|
|
||||||
|
|
||||||
/* Define to 1 if crc64 integrity check is enabled. */
|
|
||||||
#define HAVE_CHECK_CRC64 1
|
|
||||||
|
|
||||||
/* Define to 1 if sha256 integrity check is enabled. */
|
|
||||||
#define HAVE_CHECK_SHA256 1
|
|
||||||
|
|
||||||
/* Define to 1 if decoder components are enabled. */
|
|
||||||
#define HAVE_DECODER 1
|
|
||||||
|
|
||||||
/* Define to 1 if arm decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_ARM 1
|
|
||||||
|
|
||||||
/* Define to 1 if armthumb decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_ARMTHUMB 1
|
|
||||||
|
|
||||||
/* Define to 1 if delta decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_DELTA 1
|
|
||||||
|
|
||||||
/* Define to 1 if ia64 decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_IA64 1
|
|
||||||
|
|
||||||
/* Define to 1 if lzma1 decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_LZMA1 1
|
|
||||||
|
|
||||||
/* Define to 1 if lzma2 decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_LZMA2 1
|
|
||||||
|
|
||||||
/* Define to 1 if powerpc decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_POWERPC 1
|
|
||||||
|
|
||||||
/* Define to 1 if sparc decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_SPARC 1
|
|
||||||
|
|
||||||
/* Define to 1 if subblock decoder is enabled. */
|
|
||||||
/* #undef HAVE_DECODER_SUBBLOCK */
|
|
||||||
|
|
||||||
/* Define to 1 if x86 decoder is enabled. */
|
|
||||||
#define HAVE_DECODER_X86 1
|
|
||||||
|
|
||||||
/* Define to 1 if encoder components are enabled. */
|
|
||||||
#define HAVE_ENCODER 1
|
|
||||||
|
|
||||||
/* Define to 1 if arm encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_ARM 1
|
|
||||||
|
|
||||||
/* Define to 1 if armthumb encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_ARMTHUMB 1
|
|
||||||
|
|
||||||
/* Define to 1 if delta encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_DELTA 1
|
|
||||||
|
|
||||||
/* Define to 1 if ia64 encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_IA64 1
|
|
||||||
|
|
||||||
/* Define to 1 if lzma1 encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_LZMA1 1
|
|
||||||
|
|
||||||
/* Define to 1 if lzma2 encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_LZMA2 1
|
|
||||||
|
|
||||||
/* Define to 1 if powerpc encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_POWERPC 1
|
|
||||||
|
|
||||||
/* Define to 1 if sparc encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_SPARC 1
|
|
||||||
|
|
||||||
/* Define to 1 if subblock encoder is enabled. */
|
|
||||||
/* #undef HAVE_ENCODER_SUBBLOCK */
|
|
||||||
|
|
||||||
/* Define to 1 if x86 encoder is enabled. */
|
|
||||||
#define HAVE_ENCODER_X86 1
|
|
||||||
|
|
||||||
/* Define to 1 if the system supports fast unaligned memory access. */
|
|
||||||
#define HAVE_FAST_UNALIGNED_ACCESS 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
|
||||||
#define HAVE_INTTYPES_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <limits.h> header file. */
|
|
||||||
#define HAVE_LIMITS_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
|
||||||
#define HAVE_MEMORY_H 1
|
|
||||||
|
|
||||||
/* Define to 1 to enable bt2 match finder. */
|
|
||||||
#define HAVE_MF_BT2 1
|
|
||||||
|
|
||||||
/* Define to 1 to enable bt3 match finder. */
|
|
||||||
#define HAVE_MF_BT3 1
|
|
||||||
|
|
||||||
/* Define to 1 to enable bt4 match finder. */
|
|
||||||
#define HAVE_MF_BT4 1
|
|
||||||
|
|
||||||
/* Define to 1 to enable hc3 match finder. */
|
|
||||||
#define HAVE_MF_HC3 1
|
|
||||||
|
|
||||||
/* Define to 1 to enable hc4 match finder. */
|
|
||||||
#define HAVE_MF_HC4 1
|
|
||||||
|
|
||||||
/* Define to 1 if optimizing for size. */
|
|
||||||
/* #undef HAVE_SMALL */
|
|
||||||
|
|
||||||
/* Define to 1 if stdbool.h conforms to C99. */
|
|
||||||
#define HAVE_STDBOOL_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdint.h> header file. */
|
|
||||||
#define HAVE_STDINT_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
|
||||||
#define HAVE_STDLIB_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <strings.h> header file. */
|
|
||||||
#define HAVE_STRINGS_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <string.h> header file. */
|
|
||||||
#define HAVE_STRING_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `uintptr_t'. */
|
|
||||||
#define HAVE_UINTPTR_T 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
|
||||||
#define HAVE_SYS_TIME_H 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the `utime' function. */
|
|
||||||
#define HAVE_UTIME 1
|
|
||||||
|
|
||||||
/* Define to 1 or 0, depending whether the compiler supports simple visibility
|
|
||||||
declarations. */
|
|
||||||
#define HAVE_VISIBILITY 0
|
|
||||||
|
|
||||||
/* Define to 1 if the system has the type `_Bool'. */
|
|
||||||
#define HAVE__BOOL 1
|
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
|
||||||
#define PACKAGE_BUGREPORT "lasse.collin@tukaani.org"
|
|
||||||
|
|
||||||
/* Define to the URL of the home page of this package. */
|
|
||||||
#define PACKAGE_HOMEPAGE "http://tukaani.org/xz/"
|
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
|
||||||
#define PACKAGE_NAME "XZ Utils"
|
|
||||||
|
|
||||||
/* The size of `size_t', as computed by sizeof. */
|
|
||||||
#ifdef _WIN64
|
|
||||||
# define SIZEOF_SIZE_T 8
|
|
||||||
#else
|
|
||||||
# define SIZEOF_SIZE_T 4
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Define to 1 if you have the ANSI C header files. */
|
|
||||||
#define STDC_HEADERS 1
|
|
||||||
|
|
||||||
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
|
|
||||||
significant byte first (like Motorola and SPARC, unlike Intel and VAX). */
|
|
||||||
#if defined __BIG_ENDIAN__
|
|
||||||
# define WORDS_BIGENDIAN 1
|
|
||||||
#elif ! defined __LITTLE_ENDIAN__
|
|
||||||
/* # undef WORDS_BIGENDIAN */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define ASSUME_RAM 32
|
|
Loading…
Reference in New Issue