1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#!/bin/sh
# Build Windows distribution (swigwin-2.0.x.zip) from source tarball (swig-2.0.x.tar.gz)
# Requires running in either:
# - MinGW environment
# - Linux using MinGW cross compiler
# - Cygwin using MinGW compiler
# path to zip program
zip=
# options for configure
extraconfigureoptions=
compileflags="-O2 -Wall -Wextra"
if test x$1 != x; then
version=$1
if test x$2 != x; then
zip=$2;
echo zip: $zip;
fi
else
echo "Usage: mkwindows.sh version [zip]"
echo " Build SWIG Windows distribution from source tarball. Works on Cygwin, MinGW or Linux"
echo " version should be 2.0.x"
echo " zip is full path to zip program - default is /c/cygwin/bin/zip on MinGW, zip on Linux and Cygwin"
exit 1
fi
uname=`uname -a`
mingw=`echo "$uname" | grep -i mingw`
linux=`echo "$uname" | grep -i linux`
cygwin=`echo "$uname" | grep -i cygwin`
if test "$mingw"; then
echo "Building native Windows executable on MinGW";
if test x$zip = x; then
zip=/c/cygwin/bin/zip
fi
else
if test "$linux"; then
echo "Building native Windows executable on Linux"
if test x$zip = x; then
zip=zip
fi
echo "Checking that mingw 32-bit gcc is installed/available"
if test -n "`which i686-w64-mingw32-gcc`" ; then
i686-w64-mingw32-gcc --version || exit 1
i686-w64-mingw32-g++ --version || exit 1
extraconfigureoptions="--host=i686-w64-mingw32 --build=i686-linux"
# Statically link so that libstdc++-6.dll and libgcc_s_sjlj-1.dll don't have to be shipped
compileflags="$compileflags -static-libgcc -static-libstdc++"
elif test -n "`which i586-mingw32msvc-gcc`" ; then
i586-mingw32msvc-gcc --version || exit 1
i586-mingw32msvc-g++ --version || exit 1
extraconfigureoptions="--host=i586-mingw32msvc --build=i686-linux"
else
echo "Could not detect mingw gcc - please install mingw-w64 package."
exit 1;
fi
else
if test "$cygwin"; then
echo "Building native Windows executable on Cygwin"
if test x$zip = x; then
zip=zip
fi
compileflags="$compileflags -mno-cygwin"
else
echo "Unknown platform. Requires either Linux or MinGW."
exit 1;
fi
fi
fi
export CFLAGS="$compileflags"
export CXXFLAGS="$compileflags"
swigbasename=swig-$version
swigwinbasename=swigwin-$version
tarball=$swigbasename.tar.gz
pcre_tarball=`ls pcre-*.tar.*`
if ! test -f "$pcre_tarball"; then
echo "Could not find PCRE tarball. Please download a PCRE source tarball from http://www.pcre.org"
echo "and place in the same directory as the SWIG tarball."
exit 1
fi
if test -f "$tarball"; then
builddir=build-$version
if test -e $builddir; then
echo "Deleting directory $builddir..."
rm -rf $builddir
fi
echo "Creating directory $builddir..."
mkdir $builddir
cd $builddir
echo "Unzipping tarball..."
tar -zxf ../$tarball
sleep 2 # fix strange not finding newly created directory
if test -d $swigbasename; then
mv $swigbasename $swigwinbasename
tar -zxf ../$tarball
cd $swigbasename
(cd ../.. && cp $pcre_tarball $builddir/$swigbasename)
echo Running: Tools/pcre-build.sh $extraconfigureoptions
./Tools/pcre-build.sh $extraconfigureoptions
echo Running: ./configure $extraconfigureoptions --without-alllang
./configure $extraconfigureoptions --without-alllang
echo "Compiling (quietly)..."
make > build.log
echo "Simple check to see if swig.exe runs..."
env LD_LIBRARY_PATH= PATH= ./swig.exe -version || exit 1
echo "Simple check to see if ccache-swig.exe runs..."
env LD_LIBRARY_PATH= PATH= ./CCache/ccache-swig.exe -V || exit 1
echo "Creating $swigwinbasename.zip..."
cd ..
cp $swigbasename/swig.exe $swigwinbasename
cp $swigbasename/CCache/ccache-swig.exe $swigwinbasename/CCache
cp $swigbasename/Lib/swigwarn.swg $swigwinbasename/Lib
sleep 2 # fix strange not finding swig.exe
echo "Unzip into a directory of your choice. Please read the README file as well as Doc\Manual\Windows.html for installation instructions." > swig_windows_zip_comments.txt
rm -f ../$swigwinbasename.zip
$zip -q -r -9 -z < swig_windows_zip_comments.txt ../$swigwinbasename.zip $swigwinbasename
rm -f swig_windows_zip_comments.txt
echo "Cleaning up..."
cd ..
rm -rf $builddir
echo "Finished building $swigwinbasename.zip"
else
echo "Expecting tarball to create directory: $swigbasename but it does not exist"
exit 1
fi
else
echo tarball missing: $tarball
exit 1
fi
exit 0
|