Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

executable file 1282 lines (1134 sloc) 35.866 kB
#!/bin/sh
#------------------------------------------------------------------------
# Configure script for wxHaskell
#
# Copyright (c) 2003, 2004 Daan Leijen.
# Copyright (c) 2006 Jeremy O'Donoghue (jeremy.odonoghue@gmail.com)
#
# See license.txt for details.
#------------------------------------------------------------------------
#--------------------------------------------------------------------
# Versioning
#--------------------------------------------------------------------
version="0.11.1.3"
release="0"
#--------------------------------------------------------------------
# Variables
#--------------------------------------------------------------------
# install
enablestrip="no"
enableupx="no"
withmsc="no"
wxclibname="wxc"
configflags="$*"
# haskell
hc="ghc"
hcflags=""
hcpkg="ghc-pkg"
hcopt=""
hcprof="-prof"
hcpkgopt=""
hcpkglocal=""
hdoc="haddock"
# directories
topdir="`pwd`"
prefix="/usr"
execprefix=""
libdir=""
sharedprefix="<libdir>"
# dll extension and lib prefix
exe=""
dll=".so"
lib="lib"
# c++ compiler, flags and libraries
cxx="c++"
wxwincxxflags=""
wxwinlibs=""
# wxwidgets
wxconfig="wx-config"
wxtoolkit=""
wxversion=""
extraldopts=""
# check architecture, for mac os x
architecture=""
# extras
withopengl="no"
withmediactrl="no"
withcontrib="no"
wxccontrib=""
#--------------------------------------------------------------------
# Function "findprogram": find a program in the path
#--------------------------------------------------------------------
findprogram () {
if test -f $1; then return 0; fi
saveIFS="$IFS"
IFS=':'
for dir in $PATH; do
if test -z "$dir"; then dir=.; fi
if test -f $dir/$1; then
IFS="$saveIFS"
return 0
fi
done
IFS="$saveIFS"
return 1
}
#--------------------------------------------------------------------
# wx-config guess
#--------------------------------------------------------------------
# macosx: wx-config might be not in the path
if test -x "/usr/local/wxhaskell/bin/wx-config"; then
wxconfig="/usr/local/wxhaskell/bin/wx-config"
else
if findprogram "$wxconfig"; then :; else
if test -x "/usr/local/bin/wx-config"; then
wxconfig="/usr/local/bin/wx-config"
fi
fi
fi
#--------------------------------------------------------------------
# Pre-process arguments
#--------------------------------------------------------------------
arguments_raw=$@ # raw arguments
arguments_exp="" # arguments with "--cache" expanded
arguments="" # final arguments (with "wxconfig" and "withmsc" removed)
usecached="no"
# expand the "--cache" argument
expand_cache ()
{
while : ; do
case "$1" in
"") break;;
-cache|--cache)
if test -f "config/cache.txt"; then
usecached="yes"
cached=`cat config/cache.txt`
arguments_exp="$arguments_exp $cached"
else
# nothing cached yet
echo "warning:"
echo " Option --cache given, but no previous configuration was present."
echo ""
fi;;
*)
arguments_exp="$arguments_exp $1";; # save argument
esac
shift # next argument
done
return 0
}
expand_cache $arguments_raw # set $arguments_exp
if test "$usecached" = "yes"; then
echo "expanded arguments:"
echo " $arguments_exp"
echo ""
fi
# preprocess certain options that improve the guesses
preprocess_args ()
{
arg=""
while : ; do
# put optional argument in the $arg variable
case "$1" in
-*=*) arg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
arg=`eval echo $arg`;; # expand ~
*) arg="";;
esac
# check argument
case "$1" in
"") break;;
-wx-config=*|--wx-config=*)
wxconfig="$arg";;
-with-msc|--with-msc)
withmsc="yes"
lib=""
dll=".dll"
wxtoolkit="msw"
wxversion="2.8.10";; # guess?
*)
arguments="$arguments $1";; # save argument
esac
shift # next argument
done
return 0
}
preprocess_args $arguments_exp # set $arguments
# set cache argument for help options
if test -f "config/cache.txt"; then
cache=`cat config/cache.txt`
else
cache=""
fi
#--------------------------------------------------------------------
# Improve guesses
#--------------------------------------------------------------------
# improve guess prefix
if test -d "/usr/local"; then
prefix="/usr/local"
fi
# does 'cygpath' exist?
cygpathfound=""
if findprogram "cygpath"; then
cygpathfound="yes"
fi
# guess username
if test "$USERNAME"; then
username="$USERNAME"
else if test "$HOME"; then
username=`echo $HOME | sed -e 's|.*[/\\]||'`
else
username="username"
fi
fi
# improve the guesses if wx-config is present.
if findprogram "$wxconfig"; then
# improve prefix guess
prefix="`$wxconfig --prefix`"
# guess version
wxversion="`$wxconfig --version`"
# guess toolkit
wxtoolkit="`$wxconfig --cxxflags | sed -e 's|.*-D__WX\([A-Z]*\)__.*|\1|'`"
# to lowercase
wxtoolkit="`echo "$wxtoolkit" | sed -e 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|'`"
# flaky way to guess library extensions
if test "$wxtoolkit" = "msw"; then
dll=".dll"
lib=""
else if test "$wxtoolkit" = "mac"; then
dll=".dylib"
lib="lib"
architecture=`uname -p`
# use a standard prefix on MacOS X for the installer
prefix="/usr/local/wxhaskell"
fi
fi
# guess extra link options
extraldopts="" # "`$wxconfig --ldflags`"
pthread="`$wxconfig --libs | sed -e \"s|.* -pthread .*|yes|\"`"
if test "$pthread" = "yes"; then
if test -z "$extraldopts"; then
extraldopts="-pthread"
else
extraldopts="$extraldopts -pthread"
fi
fi
else
if test "$withmsc" != "yes"; then
echo "warning:"
echo " Unable to find wxWidgets configuration ($wxconfig)."
echo ""
fi
fi
# initial completion rules
execprefix_doc="<prefix>"
libdir_doc="<exec-prefix>/lib"
wxclib_doc="<libdir>/${lib}wxc${dll}"
#--------------------------------------------------------------------
# Parse command-line arguments
#--------------------------------------------------------------------
process_args ()
{
arg=""
while : ; do
# put optional argument in the $arg variable
case "$1" in
-*=*) arg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'`
arg=`eval echo $arg`;; # expand ~
*) arg="";;
esac
# match on the arguments
case "$1" in
"") break;;
-?|--help)
echo "usage:"
echo " ./configure [options]"
echo ""
echo "options: [defaults in brackets]"
echo " --help show this information"
echo " --hc=<program> the haskell compiler [$hc]"
echo " --hcpkg=<program> package compiler [$hcpkg]"
echo " --hcprof=<flags> enable profiling (using flags [$hcprof])"
echo " --fvia-C use -fvia-C option"
echo " --package-conf=<file> optional local package configuration [$hcpkglocal]"
echo " --user use current user's local package database"
echo " --global use global package database"
echo " --version=<version> library version [$version]"
echo " --release=<version> library release version [$release]"
echo " --cache expands into previous configure options"
echo " [$cache]"
echo ""
echo "install options:"
echo " --prefix=<dir> install directory [$prefix]"
echo " --exec-prefix=<dir> platform dependent install directory [$execprefix_doc]"
echo " --libdir=<dir> library files install directory [$libdir_doc]"
echo " --shared-prefix=<dir> fixed path prefix for dynamic libraries [$sharedprefix]"
echo " --enable-strip remove symbols from the libraries [$enablestrip]"
echo " --enable-upx compress the dynamic libraries with upx [$enableupx]"
echo ""
echo "documentation options:"
echo " --username=<name> username on sourceforge [$username]"
echo " --haddock=<program> haddock documentation tool [$hdoc]"
echo ""
echo "wxwidgets options:"
echo " --wx-toolkit=<name> wxWidgets gui toolkit [$wxtoolkit]"
echo " --with-opengl enable openGL support [$withopengl]"
echo " --with-mediactrl enable mediactrl support [$withmediactrl]"
echo " --with-contrib enable contrib libraries support [$withcontrib]"
echo " --wx-config=<program> wxWidgets configure script [$wxconfig]"
echo ""
echo "platform options:"
echo " --dllext=<extension> dynamic link library extension [$dll]"
echo " --libprefix=<prefix> library prefix [$lib]"
echo " --extra-ld-opts=<opts> extra link options [$extraldopts]"
echo " --with-msc compile wxWidgets and wxc with microsoft vc++ [$withmsc]"
echo " --wxc-libname=<name> wxc library base name [$wxclibname]"
echo ""
exit 1;;
-cache|--cache)
echo "warning:"
echo " Ignoring --cache option; this option must be the first (and only) option."
echo "";;
--with-compiler=*)
hc="$arg";;
# This option is deprecated. Use --with-compiler instead.
--with-hc=*)
hc="$arg";;
-hc=*|--hc=*)
hc="$arg";;
-hcpkg=*|--hcpkg=*)
hcpkg="$arg";;
-hcflags=*|--hcflags=*)
hcflags="$arg";;
-fvia-C|--fvia-C)
hcflags="$hcflags -fvia-C";;
-hcprof|--hcprof)
hcprof="$hcprof -auto-all"
enableprof="yes";;
-hcprof=*|--hcprof=*)
hcprof="$hcprof $arg"
enableprof="yes";;
-package-conf=*|--package-conf=*)
hcpkglocal="$arg";;
-user|--user)
hcpkgopt="--user"
if test -d "$HOME/.cabal"; then
prefix="$HOME/.cabal/lib/wxhaskell-$version"
execprefix="$prefix"
libprefix="$prefix"
# TODO: sharedprefix means shared library's directory currently. This is confusing point.
# sharedprefix="$prefix/share"
sharedprefix="$prefix/lib"
fi;;
-global|--global) ;; # just for cabal
-version=*|--version=*)
version="$arg";;
-release=*|--release=*)
release="$arg";;
-prefix=*|--prefix=*)
prefix="$arg";;
-exec-prefix=*|--exec-prefix=*)
execprefix="$arg"
execprefix_doc="$arg";;
-bindir=*|--bindir=*)
bindir="$arg"
bindir_doc="$arg";;
-libdir=*|--libdir=*)
libdir="$arg"
libdir_doc="$arg";;
-datadir=*|--datadir=*) ;; # just for cabal
-libexecdir=*|--libexecdir=*) ;; # just for cabal
-shared-prefix=*|--shared-prefix=*)
sharedprefix="$arg";;
# This option is the same as --hcprof option.
# But we added this option for repspecting Cabal's option.
-enable-library-profiling|--enable-library-profiling)
hcprof="$hcprof -auto-all"
enableprof="yes";;
# short name for --enable-library-profiling
# --p works, but -p doesn't work currently. We don't know why.
-p|--p)
hcprof="$hcprof -auto-all"
enableprof="yes";;
-enable-optimization|--enable-optimization)
enableoptimization="yes";;
-enable-optimization=*|--enable-optimization=*)
hcopt="$arg"
enableoptimization="yes";;
# short name for --enable-optimization
# --O works, -On works too. But -O doesn't work currently. We don't know why.
-O|--O)
enableoptimization="yes";;
-O1|--O1)
hcopt="1"
enableoptimization="yes";;
-O2|--O2)
hcopt="2"
enableoptimization="yes";;
-enable-split-objs|--enable-split-objs)
enablesplitobjs="yes";;
-enable-strip|--enable-strip)
enablestrip="yes";;
-disable-strip|--disable-strip)
enablestrip="no";;
-enable-upx|--enable-upx)
enableupx="yes";;
-disable-upx|--disable-upx)
enableupx="no";;
-username=*|--username=*)
username="$arg";;
-haddock=*|--haddock=*)
hdoc="$arg";;
-wx-toolkit=*|--wx-toolkit=*)
wxtoolkit="$arg";;
-with-opengl|--with-opengl)
withopengl="yes";;
-with-mediactrl|--with-mediactrl)
withmediactrl="yes";;
-with-contrib|--with-contrib)
withcontrib="yes";;
-wx-config=*|--wx-config=*)
echo "warning:"
echo " Ignoring --wx-config option; this option must be the first option."
echo "";;
-dllext=*|--dllext=*)
dll="$arg"
wxclib_doc="<libdir>/${lib}wxc${dll}";;
-libprefix=*|--libprefix=*)
lib="$arg"
wxclib_doc="<libdir>/${lib}wxc${dll}";;
-extra-ld-opts=*|--extra-ld-opts=*)
extraldopts="$arg";;
-with-msc|--with-msc)
withmsc="yes"
lib=""
dll=".dll"
wxtoolkit="msw"
wxversion="2.8.7";; # guess?
-wxc-libname=*|--wxc-libname=*)
if test "$withmsc" = "yes"; then
wxclibname="$arg"
else
echo "warning:"
echo " Option --wxc-libname is only valid if preceded with --with-msc."
echo ""
fi;;
*) echo "error: Unknown option \"$1\". Use \"--help\" to show valid options." 1>&2
echo "" 1>&2
exit 2;;
esac
# process next argument
shift
done
return 0;
}
process_args $arguments
#--------------------------------------------------------------------
# directories
#--------------------------------------------------------------------
# complete arguments
if test -z "$execprefix"; then
execprefix="$prefix"
fi
if test -z "$libdir"; then
libdir="$execprefix/lib"
fi
if test "$dll" = ".dll"; then
exe=".exe"
fi
if test "$sharedprefix" = "<libdir>"; then
sharedprefix="$libdir"
fi
# add "/" to shared-prefix if not empty or already ending on "/"
if test "$sharedprefix"; then
case "$sharedprefix" in
*/) ;;
*) sharedprefix="$sharedprefix/";;
esac
fi
# normalize the library and imports directory since ghc-pkg doesn't like unix names
if test "$cygpathfound"; then
libdir="`cygpath -w $libdir | sed -e 's|\\\\|/|g'`"
fi
echo "checking system:"
#--------------------------------------------------------------------
# wxc: only initialized if not --with-msc
#--------------------------------------------------------------------
if test "$withmsc" != "yes"; then
# we need wx-config
if findprogram "$wxconfig"; then
echo " wx-config found"
else
echo "error:"
echo " Unable to find the 'wx-config' program: $wxconfig"
echo " Maybe you forgot to run 'make install' on wxWidgets?"
echo " Otherwise, add the install directory of wx-config to your path."
if test "$WINDIR"; then
echo ""
echo " Or maybe you are trying to compile with Microsoft Visual C++?"
echo " If so, you can specify that on the command line:"
echo " For example: ./configure --with-msc"
fi
echo ""
exit 2
fi
# initialize options for wxc
cxx="`$wxconfig --cxx`"
wxwincxxflags="`$wxconfig --cxxflags`"
wxlibswanted="std"
if test "$withopengl" = "yes"; then
wxlibswanted="$wxlibswanted gl"
else
# override wxUSE_GLCANVAS=1 in the wxWidgets setup.h
# file so that we can compile without --with-opengl
# even if our wxWidgets supports it
wxwincxxflags="-DwxcREFUSE_OPENGL $wxwincxxflags"
fi
if test "$withmediactrl" = "yes"; then
wxlibswanted="$wxlibswanted media"
else
wxwincxxflags="-DwxcREFUSE_MEDIACTRL $wxwincxxflags"
fi
if test "$withcontrib" = "yes"; then
wxlibswanted="$wxlibswanted stc svg"
wxccontrib="-DwxUSE_STC=1 -DwxUSE_SVG=1"
fi
wxwinlibs="`$wxconfig --libs $wxlibswanted`"
# version
wxversion="`$wxconfig --version`"
# extract the wxWidgets wxtoolkit: msw, mac, gtk etc.
if test -z "$wxtoolkit"; then
wxtoolkit="`$wxconfig --cxxflags | sed -e 's|.*-D__WX\([A-Z]*\)__.*|\1|'`"
fi
# to lowercase
wxtoolkit="`echo "$wxtoolkit" | sed -e 'y|ABCDEFGHIJKLMNOPQRSTUVWXYZ|abcdefghijklmnopqrstuvwxyz|'`"
# windows:
# we append $prefix/include to the include directories
# we add "-lodbc32" since we use "SQL..." calls in the wrapper code :-(
if test "$wxtoolkit" = "msw"; then
wxwincxxflags="-I$prefix/include $wxwincxxflags"
wxwinlibs="$wxwinlibs -lodbc32"
fi
# windows: we normalize $prefix and $exec-prefix include directories and libraries
if test "$cygpathfound"; then
wxprefix="`$wxconfig --prefix`"
wxexecprefix="`$wxconfig --exec-prefix`"
wwxprefix="`cygpath -w $wxprefix | sed -e 's|\\\\|/|g'`"
wwxexecprefix="`cygpath -w $wxexecprefix | sed -e 's|\\\\|/|g'`"
wxwincxxflags="`echo $wxwincxxflags | sed -e \"s|$wxprefix|$wwxprefix|g\"`"
wxwinlibs="`echo $wxwinlibs | sed -e \"s|$wxexecprefix|$wwxexecprefix|g\"`"
fi
# macosx: we get the resource compiler flags
wxrezcomp="`$wxconfig --rezflags`"
wxrezfile=""
if test "$wxrezcomp"; then
for word in $wxrezcomp; do
temp="`echo $word | grep '[^_]*_mac-[^r]*r'`"
if test "$temp"; then
wxrezfile="$temp"
fi
done
fi
fi
if test "$wxrezfile"; then
wxrezdir="`echo $wxrezfile | sed -e 's|\(.*\)/libwx_mac.*|\1|'`"
wxinstallrezcomp="`echo \"${wxrezcomp}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
wxinstallrezfile="`echo \"${wxrezfile}\" | sed -e \"s|${wxrezdir}|${libdir}|g\"`"
fi
#--------------------------------------------------------------------
# haskell compiler and package manager
#--------------------------------------------------------------------
# Do we have ghc?
if findprogram "$hc"; then
echo " $hc found"
else
echo "error:"
echo " Unable to find: $hc"
echo " Pleasy specify the path to GHC."
echo " For example: ./configure --hc=/c/ghc/ghc-6.0/bin/ghc"
exit 2
fi
# save haskell compiler name (as $hc also gets flags)
hcname="$hc"
ghcold="no"
if findprogram "basename"; then
hcbasename="`basename $hcname | sed -e 's|-[0-9].*||' -e 's|\..*||'`"
else
hcbasename="`echo $hcname | sed -e 's|-[0-9].*||' -e 's|\..*||'`"
fi
# check ghc version
hcversion="`$hc --version | sed -e 's|[A-Za-z \t,]*||'`"
if test "$hcbasename" = "ghc"; then
case "$hcversion" in
0* | 1* | 2* | 3* | 4* | 5.*)
echo "WARNING:"
echo " You seem to have an older ghc installed, namely $hcversion"
echo " Ghc versions prior to 6.0 have garbage collector bugs that make wxHaskell"
echo " applications *crash* and may contain incompatible libraries."
echo " It is strongly advised to upgrade to a newer version."
echo ""
ghcold="yes";;
6.0* | 6.1.* | 6.2* | 6.3* | 6.4* )
echo "WARNING:"
echo " You seem to have an older ghc installed, namely $hcversion"
echo " Support for GHC version prior to 6.4 has been removed for simplicity."
echo " It is strongly advised to upgrade to a newer version."
ghcold="yes";;
6.5* | 6.6* | 6.7* | 6.8* )
ghcold="yes";;
6.*) ;;
7.*) ;;
8.*) ;;
9.*) ;;
*) echo "warning:"
echo " Unable to recognise the ghc version ($hcversion ?)"
echo " Be careful: ghc versions prior to 6.0 have bugs that make wxHaskell"
echo " applications *crash* and may contain incompatible libraries."
echo "";;
esac
fi
# Do we have ghc-pkg?
if findprogram "$hcpkg"; then
echo " $hcpkg found"
else
echo "error:"
echo " Unable to find: $hcpkg"
echo " Pleasy specify the path to ghc-pkg."
echo " For example: ./configure --hcpkg=/c/ghc/ghc-6.2/bin/ghc-pkg"
hcpkg=echo
exit 2
fi
# save name (hcpkg also gets flags)
hcpkgname="$hcpkg"
if findprogram "basename"; then
hcpkgbasename="`basename $hcpkgname | sed -e 's|-[0-9].*||' -e 's|\..*||'`"
else
hcpkgbasename="`echo $hcpkgname | sed -e 's|-[0-9].*||' -e 's|\..*||'`"
fi
# Add local package flags
if test "$hcpkglocal"; then
hc="$hc -package-conf $hcpkglocal"
hcpkg="$hcpkg -f $hcpkglocal"
fi
# Get package's version
basepkgversion=`ghc-pkg latest base`
haskell98pkgversion=`ghc-pkg latest haskell98`
# Test if we can include the filepath package explicitly
$hcpkg describe filepath > /dev/null 2> /dev/null
case $? in
0) filepathpkgversion=`ghc-pkg latest filepath`
pkgfilepath="-package $filepathpkgversion";;
*) pkgfilepath="";;
esac
# Test if we can include the bytestring package explicitly
$hcpkg describe bytestring > /dev/null 2> /dev/null
case $? in
0) bytestringpkgversion=`ghc-pkg latest bytestring`
pkgbytestring="-package $bytestringpkgversion";;
*) pkgbytestring="";;
esac
# Test if we can include the containers package explicitly
$hcpkg describe containers > /dev/null 2> /dev/null
case $? in
0) containerspkgversion=`ghc-pkg latest containers`
pkgcontainers="-package $containerspkgversion";;
*) pkgcontainers="";;
esac
# Test if we can include the parsec package explicitly
$hcpkg describe parsec > /dev/null 2> /dev/null
case $? in
0) pkgversion=`ghc-pkg latest parsec`
pkgparsec="-package $pkgversion";;
*) pkgparsec="";;
esac
# Test if we can include the time package explicitly
$hcpkg describe time > /dev/null 2> /dev/null
case $? in
0) pkgversion=`ghc-pkg latest time`
pkgtime="-package $pkgversion";;
*) pkgtime="";;
esac
# Test if we can include the stm package explicitly
$hcpkg describe stm > /dev/null 2> /dev/null
case $? in
0) stmpkgversion=`ghc-pkg latest stm`
pkgstm="-package $stmpkgversion";;
*) pkgstm="";;
esac
#--------------------------------------------------------------------
# Haddock
#--------------------------------------------------------------------
# Do we have haddock?
if findprogram "$hdoc"; then
echo " $hdoc found"
hdocfound="yes"
elif findprogram "haddock-ghc"; then
hdoc="haddock-ghc"
echo " $hdoc found"
hdocfound="yes"
else
echo "warning:"
echo " Unable to find: $hdoc"
echo " You won't be able to generate documentation."
echo " You can specify the haddock executable on the command line."
echo " For example: ./configure --haddock=/usr/local/bin/haddock"
echo ""
hdocbases=""
hdocfound="no"
fi
# guess base.haddock location
if findprogram "ghc"; then
guesshdocbase="`which ghc | sed -e 's|/bin/ghc|/doc/html/base/base.haddock|'`"
# guesshdocbase="`which ghc | sed -e 's|/bin/ghc|/ghc-$hcversion/doc/ghc/libraries/base/base.haddock|'`"
if test -f "$guesshdocbase"; then
hdocbases="$guesshdocbase"
fi
if test "$cygpathfound"; then
guessghclibdir=`which ghc | sed -e 's|/bin/ghc||'`
normghclibdir="`cygpath -w $guessghclibdir | sed -e 's|\\\\|/|g'`"
else
guessghclibdir=`which ghc | sed -e "s|/bin/ghc|/lib/ghc-$hcversion|"`
normghclibdir="$guessghclibdir"
fi
haddockversion=`$hdoc --version | sed -e "s|.*version \([0-9]*\)\..*|\1|"`
if test -d "$normghclibdir" -a "$haddockversion" = "2"; then
hdocbases="$hdocbases -B $normghclibdir"
fi
fi
# Find .haddock files
if test "$hdocfound" = "yes"; then
if findprogram "ghc"; then
ghcroot="`which ghc | sed -e 's|/bin/ghc||'`"
# set correct haddock root directory
case "$hcversion" in
6.0* | 6.1.* | 6.2* | 6.3* | 6.4* | 6.5* | 6.6*)
docroot="$ghcroot/doc/html/libraries";;
6.*)
if test "$cygpathfound"; then
docroot="$ghcroot/doc/libraries"
elif test -d "$ghcroot/share/doc/ghc/libraries"; then
docroot="$ghcroot/share/doc/ghc/libraries"
else
docroot="$ghcroot/share/ghc-$hcversion/doc/ghc/libraries"
fi
;;
*)
docroot="$ghcroot/doc/libraries";;
esac
# normalize the root since haddock doesn't like unix names
if test "$cygpathfound"; then
normdocroot="`cygpath -w $docroot | sed -e 's|\\\\|/|g'`"
else
normdocroot="$docroot"
fi
# modern ghc >= 6.2, include all available haddock files
cd $docroot
for file in */*.haddock
do
basename="`echo $file | sed -e 's|/.*||'`"
hdocbases="$hdocbases -ihttp://www.haskell.org/ghc/docs/latest/html/libraries/$basename,$normdocroot/$file"
done
cd $topdir
fi
fi
#--------------------------------------------------------------------
# wxWidgets
#--------------------------------------------------------------------
# confirm that we have unicode enabled
if test "$wxtoolkit" != "msw"; then
`$wxconfig --unicode=yes`
if test "$?" = 0; then
echo " wxWidgets Unicode support found"
else
echo ""
echo " I can't find the Unicode version of wxWidgets!"
echo ""
echo " Did you configure configure wxWidgets with --enable-unicode?"
echo " If you have more than one copy, are you passing in the right"
echo " version via --wx-config?"
exit 1
fi
fi
#--------------------------------------------------------------------
# install
#--------------------------------------------------------------------
if findprogram "install"; then
echo " install program found"
installdir="install -d"
install="install -c"
else
echo "warning:"
echo " Unable to find 'install' (using 'cp' and 'mkdir' instead)."
echo ""
installdir="mkdir -p"
install="cp -u"
fi
#--------------------------------------------------------------------
# strip and upx
#--------------------------------------------------------------------
if test "$enablestrip" = "yes"; then
if findprogram "strip"; then
echo " strip found"
else
echo "warning:"
echo " Unable to find 'strip'. Libraries will not be stripped."
echo ""
enablestrip="no"
fi
fi
if test "$enableupx" = "yes"; then
if findprogram "upx"; then
echo " upx found"
else
echo "warning:"
echo " Unable to find 'upx'. Dynamic libraries will not be compressed."
echo ""
enableupx="no"
fi
fi
if test "$enableupx" = "yes"; then
if test "$enablestrip" = "yes"; then
echo "warning:"
echo " Using both 'strip' and 'upx' is not possible."
echo " The libraries will not be stripped."
echo ""
enablestrip="no"
fi
fi
runcompress=":"
if test "$enableupx" = "yes"; then
runcompress="upx -qt \$(1) >/dev/null 2>/dev/null || if test \"\$?\" != \"0\"; then upx \$(1); fi"
else
if test "$enablestrip" = "yes"; then
runcompress="echo strip \$(1); strip \$(1)"
fi
fi
if test "$enableoptimization" = "yes"; then
hcflags="$hcflags -O$hcopt"
fi
if test "$enablesplitobjs" = "yes"; then
hcflags="$hcflags -split-objs"
fi
#--------------------------------------------------------------------
# toolkit
#--------------------------------------------------------------------
if test -z "$wxtoolkit"; then
echo "warning:"
echo " Unable to determine the wxWindow toolkit."
echo " Defaulting to 'msw'."
echo ""
wxtoolkit="msw"
fi
if test "$wxtoolkit" = "msw"; then
bat=".bat"
else
bat=""
fi
#--------------------------------------------------------------------
# Generate configuration
#--------------------------------------------------------------------
# Create directories
echo ""
echo "creating configuration files:"
echo " config"
mkdir -p config
# Finish generated files
if findprogram "date"; then
date="`date`"
else
date="<unknown>"
fi
if ! test "$bindir"; then
bindir=$execprefix/bin
fi
#echo " makefile configuration"
echo " config/config.mk"
cat > config/config.mk << EOF
# Generated by configure on $date
TOPDIR=$topdir
VERSION=$version
RELEASE=$release
TOOLKIT=$wxtoolkit
# The Haskell compiler
HC=$hc
HCVERSION=$hcversion
HCNAME=$hcname
HCBASENAME=$hcbasename
HCFLAGS=$hcflags
HCPKG=$hcpkg
HCPKGOPT=$hcpkgopt
GHCOLD=$ghcold
ENABLE-PROF=$enableprof
ENABLE-SPLITOBJS=$enablesplitobjs
HC-PROF-FLAGS=-hisuf p_hi $hcprof
# Packages
PKG-BYTESTRING=$pkgbytestring
PKG-CONTAINERS=$pkgcontainers
PKG-FILEPATH=$pkgfilepath
PKG-PARSEC=$pkgparsec
PKG-TIME=$pkgtime
PKG-STM=$pkgstm
# C compiler
CXX=$cxx
# Installation
BINDIR=$bindir
LIBDIR=$libdir
SHARED-PREFIX=$sharedprefix
CONFIG-FLAGS=$configflags
# Compression function
run-compress=$runcompress
# Wxc
WITHMSC=$withmsc
WXC-LIBNAME=$wxclibname
# Contrib libraries
WXC-CONTRIB=$wxccontrib
# WxWidgets
WXWIN-VERSION=$wxversion
WXWIN-LIBS=$wxwinlibs
WXWIN-CXXFLAGS=$wxwincxxflags
WXWIN-REZFILE=$wxrezfile
# Platform
EXE=$exe
DLL=$dll
LIB=$lib
ARCHITECTURE=$architecture
# Documentation
HDOCFOUND=$hdocfound
HDOC=$hdoc
HDOCBASES=$hdocbases
USERNAME=$username
# Standard programs
INSTALL=$install
INSTALLDIR=$installdir
LD=ld
AR=ar
CP=cp -f
MV=mv
CD=cd
RM=rm -f
MKDIR=mkdir -p
RMDIR=rmdir
ZIP=zip
TAR=tar
GZIP=gzip
EOF
# put quotes around extra-ld-opts of non-empty
if test "$extraldopts"; then
extraldopts="\"$extraldopts\""
fi
# create packages
binversion="${wxtoolkit}${wxversion}-${version}"
# behave like Cabal's configuration.
if test "$pkgcontainers"; then
wxcoredepends="$basepkgversion, $containerspkgversion"
else
wxcoredepends="$basepkgversion"
fi
#echo " package descriptions"
echo " config/wxcore.pkg"
# ghc 6.4+, the partial packages are only used for the windows installer
cat > config/wxcore-partial.pkg << EOF
name:wxcore
version:$version
license:LGPL
homepage:http://wxhaskell.sourceforge.net
author:Daan Leijen
maintainer:wxhaskell-devel@lists.sourceforge.net
exposed:True
exposed-modules: Graphics.UI.WXCore,
Graphics.UI.WXCore.WxcClasses,
Graphics.UI.WXCore.WxcClassInfo,
Graphics.UI.WXCore.WxcDefs,
Graphics.UI.WXCore.Types,
Graphics.UI.WXCore.Defines,
Graphics.UI.WXCore.DragAndDrop,
Graphics.UI.WXCore.Draw,
Graphics.UI.WXCore.Events,
Graphics.UI.WXCore.Frame,
Graphics.UI.WXCore.Layout,
Graphics.UI.WXCore.Process,
Graphics.UI.WXCore.Print,
Graphics.UI.WXCore.Dialogs,
Graphics.UI.WXCore.Image,
Graphics.UI.WXCore.Controls,
Graphics.UI.WXCore.Db,
Graphics.UI.WXCore.OpenGL,
Graphics.UI.WXCore.WxcObject,
Graphics.UI.WXCore.WxcClassTypes,
Graphics.UI.WXCore.WxcTypes,
Graphics.UI.WXCore.WxcClassesAL,
Graphics.UI.WXCore.WxcClassesMZ
hs-libraries:wxcore,wxcore0,wxcore1,wxcore2
extra-libraries:${wxclibname}-${binversion}
depends: ${wxcoredepends}, $haskell98pkgversion, $filepathpkgversion, $bytestringpkgversion, $stmpkgversion
extra-ld-opts:$extraldopts
EOF
tr -d \\r < config/wxcore-partial.pkg > config/wxcore.pkg
cp -f config/wxcore.pkg config/wxcore-partial.pkg
echo "import-dirs:\${wxhlibdir}/imports" >> config/wxcore.pkg
echo "library-dirs:\${wxhlibdir}" >> config/wxcore.pkg
echo " config/wx.pkg"
cat > config/wx-partial.pkg << EOF
name:wx
version:$version
license:LGPL
homepage:http://wxhaskell.sourceforge.net
author:Daan Leijen
maintainer:wxhaskell-devel@lists.sourceforge.net
exposed:True
exposed-modules: Graphics.UI.WX,
Graphics.UI.WX.Types,
Graphics.UI.WX.Attributes,
Graphics.UI.WX.Layout,
Graphics.UI.WX.Classes,
Graphics.UI.WX.Variable,
Graphics.UI.WX.Events,
Graphics.UI.WX.Window,
Graphics.UI.WX.TopLevelWindow,
Graphics.UI.WX.Frame,
Graphics.UI.WX.Media,
Graphics.UI.WX.Menu,
Graphics.UI.WX.Timer,
Graphics.UI.WX.Draw,
Graphics.UI.WX.Controls,
Graphics.UI.WX.Dialogs
hs-libraries:wx
depends: wxcore-${version}, $stmpkgversion
EOF
tr -d \\r < config/wx-partial.pkg > config/wx.pkg
cp -f config/wx.pkg config/wx-partial.pkg
echo "import-dirs:\${wxhlibdir}/imports" >> config/wx.pkg
echo "library-dirs:\${wxhlibdir}" >> config/wx.pkg
# set version in msc project file
updateversion () {
sed -e "s|wxc-msw[\\.0-9]\+-[\\.0-9]\+\\.|wxc-${binversion}.|g" -e "s|wxcd-msw[\\.0-9]\+-[\\.0-9]\+\\.|wxcd-${binversion}.|g" -e "s|\$|\\r|g" $1 > $1.out
mv -f $1.out $1
}
if test "$withmsc" = "yes"; then
echo " update version number in visual c++ project file"
for dsp in wxc/*.dsp
do
updateversion $dsp
done
fi
# create installer scripts
# echo " installer scripts"
# generate windows installer files.
echo " config/wxhaskell-register.bat"
echo "@SET wxclibname=${wxclibname}-${binversion}" > config/wxhaskell-register-temp
echo "@SET generate=yes" >> config/wxhaskell-register-temp
cat config/wxhaskell-register-temp bin/wxhaskell-register-template.bat | sed -e "s|\${hcregister}|ghc-pkg update|g" -e "s|\$|\\r|g" > config/wxhaskell-register.bat
rm -f config/wxhaskell-register-temp
echo " config/wxhaskell-unregister.bat"
echo "@SET wxclibname=${wxclibname}-${binversion}" > config/wxhaskell-unregister-temp
cat config/wxhaskell-unregister-temp bin/wxhaskell-unregister-template.bat | sed -e "s|\${hcunregister}|ghc-pkg unregister|g" -e "s|\$|\\r|g" > config/wxhaskell-unregister.bat
rm -f config/wxhaskell-unregister-temp
echo " config/setcd"
cp bin/setcd config/setcd
cat > config/README-template-windows << EOF
Click on the newly created wxhaskell-${version}\\bin\\wxhaskell-register.bat
program to register the wxHaskell package.
To uninstall, you can click on
wxhaskell-${version}\\bin\\wxhaskell-unregister.bat and than remove the
wxhaskell-${version} directory.
EOF
if test "$wxtoolkit" = "msw"; then
cat config/README-template-windows | sed -e "s|\${version}|${version}|g" > README.txt
fi
# generate maxosx installer files.
echo " config/macosx-install.info"
cat > config/macosx-install.info << EOF
Title wxHaskell
Version $version
Description wxHaskell library
DefaultLocation $prefix
DeleteWarning
NeedsAuthorization YES
Required NO
Relocatable NO
RequiresReboot NO
UseUserMask YES
OverwritePermissions NO
InstallFat NO
RootVolumeOnly YES
EOF
# generate macosx post-install files.
echo " config/macosx-postinstall"
cat > config/macosx-postinstall << EOF
#!/bin/sh
GHCPKG=`which ghc-pkg`
# try these versions of GHC-PKG in turn
# would it maybe be best just to let the installer fail?
if test "\$GHCPKG" = ""; then
if test -f /usr/local/bin/ghc-pkg; then
GHCPKG=/usr/local/bin/ghc-pkg
elif test -f /opt/local/bin/ghc-pkg; then
GHCPKG=/opt/local/bin/ghc-pkg
elif test -f /sw/bin/ghc-pkg; then
GHCPKG=/sw/bin/ghc-pkg
else
echo "I can't find ghc-pkg in the path (\$PATH)!"
echo "Is GHC even installed?"
exit 1
fi
fi
cat "\$1/Contents/Resources/wxcore.pkg" | sed -e "s|\\\${wxhlibdir}|${libdir}|" | \$GHCPKG --global update -
cat "\$1/Contents/Resources/wx.pkg" | sed -e "s|\\\${wxhlibdir}|${libdir}|" | \$GHCPKG --global update -
EOF
chmod a+x config/macosx-postinstall
# generate macosx application builder script
echo " config/macosx-app"
cat > config/macosx-app-temp << EOF
#!/bin/sh
rezcomp="$wxinstallrezcomp"
rezfile="$wxinstallrezfile"
EOF
cat config/macosx-app-temp bin/macosx-app-template > config/macosx-app
rm -f config/macosx-app-temp
chmod a+x config/macosx-app
# generate RPM spec file
# to uppercase
wxToolkit="`echo "$wxtoolkit" | sed -e 'y|abcdefghijklmnopqrstuvwxyz|ABCDEFGHIJKLMNOPQRSTUVWXYZ|'`"
echo " config/wxhaskell.spec"
echo "%define wxhversion $version" > config/wxhaskell.spec.temp
echo "%define wxhrelease $release" >> config/wxhaskell.spec.temp
echo "%define hcomp $hcbasename" >> config/wxhaskell.spec.temp
echo "%define hcpkg $hcpkgbasename" >> config/wxhaskell.spec.temp
echo "%define hcversion $hcversion" >> config/wxhaskell.spec.temp
echo "%define wxtoolkit $wxtoolkit" >> config/wxhaskell.spec.temp
echo "%define wxToolkit $wxToolkit" >> config/wxhaskell.spec.temp
echo "%define wxversion $wxversion" >> config/wxhaskell.spec.temp
echo "%define sourceroot $topdir/dist/" >> config/wxhaskell.spec.temp
echo "%define configflags $arguments_exp" >> config/wxhaskell.spec.temp
echo "" >> config/wxhaskell.spec.temp
cat config/wxhaskell.spec.temp bin/wxhaskell-spec-template > config/wxhaskell.spec
rm -f config/wxhaskell.spec.temp
# generate prologue for documentation
echo " config/prologue.txt"
echo "Documentation for wxHaskell $version" > config/prologue.txt.temp
echo "" >> config/prologue.txt.temp
cat config/prologue.txt.temp bin/prologue-template.txt > config/prologue.txt
rm -f config/prologue.txt.temp
# save arguments
echo " config/cache.txt"
echo "$arguments_exp" > config/cache.txt
# show configuration
echo ""
echo "configuration:"
echo " library: wxhaskell-$version (release $release)"
echo " compiler: $hcbasename-$hcversion"
echo " wxwidgets: $wxtoolkit-$wxversion"
echo " extensions:"
echo " openGL: $withopengl"
echo " mediactrl: $withmediactrl"
echo " contrib: $withcontrib"
echo " library dir: $libdir"
if test "$wxrezfile"; then
echo " resource: $wxrezfile"
fi
# we are done.
echo ""
echo "done:"
echo " type 'make' to build wxhaskell."
echo " type 'make install' to install wxhaskell."
echo " type 'make help' to receive help on all other make targets"
echo ""
Jump to Line
Something went wrong with that request. Please try again.