| #!/bin/sh |
| # |
| # cross compile script for cmake |
| # |
| # initial written by Fridrich Strba |
| # refactored to debian/lenny by Ralf Habacker |
| # |
| # reported to work at least on debian/lenny |
| # |
| |
| if test -f /usr/bin/i686-pc-mingw32-gcc; then |
| cross_cc=i686-pc-mingw32 |
| elif test -f /usr/bin/i586-mingw32msvc-gcc; then |
| cross_cc=i586-mingw32msvc |
| else |
| echo "could not determine mingw cross compiler" |
| exit 1 |
| fi |
| |
| if test -d ~/$cross_cc; then |
| cross_root=~/$cross_cc |
| elif test -d /usr/$cross_cc/sys-root/mingw; then |
| cross_root=/usr/$cross_cc/sys-root/mingw |
| elif test -d /usr/$cross_cc/lib; then |
| cross_root=/usr/$cross_cc |
| else |
| echo "could not determine mingw cross compiler sdk" |
| exit 1 |
| fi |
| |
| if ! TEMP=`mktemp --tmpdir -d dbus-cross-compile.XXXXXX`; then |
| echo "mktemp failed, try with coreutils 6.10 or later?" >&2 |
| exit 1 |
| fi |
| |
| # make cmake happy |
| export TEMP |
| |
| HOST_CC=gcc; export HOST_CC; |
| |
| if test -d $cross_root/lib/pkgconfig; then |
| PKG_CONFIG_PATH="$cross_root/lib/pkgconfig:$cross_root/share/pkgconfig"; export PKG_CONFIG_PATH; |
| fi |
| |
| if test -d "$MINGW32_CLASSPATH" || test -f "$cross_root/share/java/libgcj.jar"; then |
| CLASSPATH="$CLASSPATH:${MINGW32_CLASSPATH:-$cross_root/share/java/libgcj.jar:$cross_root/share/java/libgcj-tools.jar}"; export CLASSPATH; |
| fi |
| |
| _PREFIX="/usr/bin/$cross_cc-"; |
| for i in `ls -1 ${_PREFIX}* | grep -v 'gcc-'`; do |
| x=`echo $i|sed "s,${_PREFIX},,"|sed "s,\.awk*,,"|tr "a-z+-" "A-ZX_"`; |
| declare -x $x="$i" ; export $x; |
| done; |
| unset _PREFIX; |
| |
| CC="${MINGW32_CC:-$cross_cc-gcc}"; export CC; |
| CFLAGS="${MINGW32_CFLAGS:--O2 -g -pipe -Wall -fexceptions -fno-omit-frame-pointer -fno-optimize-sibling-calls --param=ssp-buffer-size=4 -mms-bitfields}"; export CFLAGS; |
| LDFLAGS="${MINGW32_LDFLAGS:--Wl,--exclude-libs=libintl.a -Wl,--exclude-libs=libiconv.a}"; export LDFLAGS; |
| |
| if [ -x "/usr/bin/$cross_cc-g++" ]; then |
| CXX="${MINGW32_CXX:-$cross_cc-g++}"; export CXX; |
| CXXFLAGS="${MINGW32_CXXFLAGS:--O2 -g -pipe -Wall -fexceptions -fno-omit-frame-pointer -fno-optimize-sibling-calls --param=ssp-buffer-size=4 -mms-bitfields}"; export CXXFLAGS; |
| else |
| CXX=; export CXX; |
| ac_cv_prog_CXX=no; export ac_cv_prog_CXX; |
| CXXFLAGS=; export CXXFLAGS; |
| fi; |
| for i in `ls $cross_root/bin/*|grep -- "-config$"` ; do |
| x=`basename $i|tr "a-z+-" "A-ZX_"|sed "s,\.,,"`; |
| declare -x $x="$i" ; export $x; |
| done; |
| unset x i ; |
| |
| if ! test -f "$cross_root/lib/libexpat.dll.a"; then |
| (cd $TEMP && wget http://www.winkde.org/pub/kde/ports/win32/repository/win32libs/expat-2.0.1-bin.zip) |
| (cd $TEMP && wget http://www.winkde.org/pub/kde/ports/win32/repository/win32libs/expat-2.0.1-lib.zip) |
| (cd $cross_root && unzip -x $TMP/expat-2.0.1-bin.zip) |
| (cd $cross_root && unzip -x $TMP/expat-2.0.1-lib.zip) |
| fi |
| |
| if test -f "$cross_root/lib/libexpat.dll.a"; then |
| xml_library=-DDBUS_USE_EXPAT=On -DLIBEXPAT_INCLUDE_DIR:PATH=$cross_root/include -DLIBEXPAT_LIBRARIES:PATH=$cross_root/lib/libexpat.dll.a |
| else |
| echo "could not find a cross compile xml libraray" |
| exit 1 |
| fi |
| |
| cmake \ |
| -DCMAKE_SYSTEM_NAME="Windows" \ |
| -DCMAKE_VERBOSE_MAKEFILE=ON \ |
| -DCMAKE_INSTALL_PREFIX:PATH=$cross_root \ |
| -DCMAKE_INSTALL_LIBDIR:PATH=$cross_root/lib \ |
| -DINCLUDE_INSTALL_DIR:PATH=$cross_root/include \ |
| -DLIB_INSTALL_DIR:PATH=$cross_root/lib \ |
| -DSYSCONF_INSTALL_DIR:PATH=$cross_root/etc \ |
| -DSHARE_INSTALL_PREFIX:PATH=$cross_root/share \ |
| -DBUILD_SHARED_LIBS:BOOL=ON \ |
| -DCMAKE_C_COMPILER="/usr/bin/$cross_cc-gcc" \ |
| -DCMAKE_CXX_COMPILER="/usr/bin/$cross_cc-g++" \ |
| -DCMAKE_FIND_ROOT_PATH="$cross_root" \ |
| -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ |
| -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ |
| -DCMAKE_CXX_COMPILER="/usr/bin/$cross_cc-g++" \ |
| -DCMAKE_FIND_ROOT_PATH="$cross_root" \ |
| -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \ |
| -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \ |
| $xml_library \ |
| -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \ |
| $* |
| |