Index: xz/windows/build.sh |
=================================================================== |
--- xz/windows/build.sh (revision 0) |
+++ xz/windows/build.sh (revision 0) |
@@ -0,0 +1,188 @@ |
+#!/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 immediately if something goes wrong. |
+set -e |
+ |
+# White spaces in directory names may break things so catch them immediately. |
+case $(pwd) in |
+ ' ' | ' ' | ' |
+') echo "Error: White space in the directory name" >&2; exit 1 ;; |
+esac |
+ |
+# This script 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 7z.exe from 7-Zip. If it wasn't found, |
+# this step is skipped and you have to zip it yourself. |
+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 |
Property changes on: xz/windows/build.sh |
___________________________________________________________________ |
Added: svn:executable |
+ * |
Added: svn:eol-style |
+ LF |