3 # This script prepares a Windows binary distribution of wimlib on Linux using
4 # MinGW-w64. The desired architecture must be passed as the first argument.
8 if [ ! -e src/wim.c ]; then
9 echo "This script must be run from the toplevel directory" 1>&2
14 echo "Usage: $0 i686|x86_64 [EXTRA_CONFIGURE_ARG]..." 1>&2
25 echo "ERROR: ARCH must be i686 or x86_64" 1>&2
30 VERSION=$(tools/get-version-number)
31 DESTDIR=wimlib-${VERSION}-windows-${ARCH}-bin
32 ZIPFILE=wimlib-${VERSION}-windows-${ARCH}-bin.zip
33 MAKE="make -j $(grep -c processor /proc/cpuinfo)"
34 WINDEPDIR=./tools/windeps
35 SYSROOT=$WINDEPDIR/sysroot_${ARCH}
37 # Prepare third party libraries
39 if [ ! -e $SYSROOT ]; then
40 $MAKE -C $WINDEPDIR sysroot_${ARCH}
45 if ! [ -e config.log ] ||
46 ! grep -q "./configure --host=${ARCH}-w64-mingw32" config.log || \
47 ! grep -q "configure: exit 0" config.log || \
51 if [ $ARCH = x86_64 ]; then
52 extra_args="--enable-ssse3-sha1"
54 # Note: putting -static-libgcc in CC is a workaround for libtool
56 # http://www.gnu.org/software/libtool/manual/libtool.html#Stripped-link-flags
58 # We also need to override the MinGW pkg-config with the "native" one in
59 # order for it to correctly restrict the include path to our $SYSROOT.
60 ./configure --host=${ARCH}-w64-mingw32 --disable-static \
61 CC="${ARCH}-w64-mingw32-gcc -static-libgcc" \
62 CPPFLAGS="-I$SYSROOT/include" \
63 LDFLAGS="-L$SYSROOT/lib" \
64 PKG_CONFIG=pkg-config \
65 PKG_CONFIG_LIBDIR="$SYSROOT/lib/pkgconfig" \
72 # Create empty destination directory
79 cp .libs/*.{dll,exe} $DESTDIR
80 ${ARCH}-w64-mingw32-strip $DESTDIR/*.{dll,exe}
84 cp NEWS README* COPYING* $DESTDIR
85 cp $WINDEPDIR/COPYING* $DESTDIR
87 sed -n '/^#/q; s/^[\/\* ]*//; p' src/divsufsort.c > $DESTDIR/COPYING.libdivsufsort-lite
88 if ! grep -q 'Copyright' $DESTDIR/COPYING.libdivsufsort-lite; then
89 echo "ERROR: failed to extract libdivsufsort-lite license text" 1>&2
94 for fil in NEWS README* COPYING*; do
95 sed < $fil > ${fil}.txt -e 's/$/\r/g'
105 function gen_pdf_from_man_page() {
107 local pdf=${DESTDIR}/doc/${manbase}.pdf
109 echo "Generating $pdf"
111 MANPATH="./doc" man -t $manbase | ps2pdf - $pdf
114 for fil in ./doc/man1/wim*.1; do
115 manbase=`basename $fil`
118 wimlib-imagex|wimmount|wimmountrw|wimunmount)
123 gen_pdf_from_man_page $cmd
125 sed 's/$/\r/g' > ${DESTDIR}/${cmd}.cmd <<- EOF
127 "%~dp0\\wimlib-imagex" ${cmd#wim} %*
129 chmod +x ${DESTDIR}/${cmd}.cmd
132 gen_pdf_from_man_page wimlib-imagex
134 # Install development files
137 cp .libs/libwim.dll.a $DESTDIR/devel/libwim.lib
138 cp include/wimlib.h $DESTDIR/devel/
146 7z -mx9 a "$dir/$ZIPFILE" .