Home | History | Annotate | Download | only in cmake
      1 #!/bin/sh
      2 #
      3 #  cross compile script for cmake
      4 # 
      5 # initial written by Fridrich Strba
      6 # refactored to debian/lenny by Ralf Habacker
      7 #
      8 #  reported to work at least on debian/lenny 
      9 # 
     10 
     11 if test -f /usr/bin/i686-pc-mingw32-gcc; then
     12     cross_cc=i686-pc-mingw32
     13 elif test -f /usr/bin/i586-mingw32msvc-gcc; then
     14     cross_cc=i586-mingw32msvc
     15 else
     16     echo "could not determine mingw cross compiler"
     17     exit 1
     18 fi
     19 
     20 if test -d ~/$cross_cc; then
     21     cross_root=~/$cross_cc
     22 elif test -d /usr/$cross_cc/sys-root/mingw; then
     23     cross_root=/usr/$cross_cc/sys-root/mingw
     24 elif test -d /usr/$cross_cc/lib; then
     25     cross_root=/usr/$cross_cc
     26 else
     27     echo "could not determine mingw cross compiler sdk"
     28     exit 1
     29 fi
     30 
     31 # make cmake happy 
     32 export TEMP=/tmp
     33 
     34 HOST_CC=gcc; export HOST_CC;
     35 
     36 if test -d $cross_root/lib/pkgconfig; then 
     37     PKG_CONFIG_PATH="$cross_root/lib/pkgconfig:$cross_root/share/pkgconfig"; export PKG_CONFIG_PATH;
     38 fi 
     39 
     40 if test -d "$MINGW32_CLASSPATH" ||  test -f "$cross_root/share/java/libgcj.jar";  then 
     41     CLASSPATH="$CLASSPATH:${MINGW32_CLASSPATH:-$cross_root/share/java/libgcj.jar:$cross_root/share/java/libgcj-tools.jar}"; export CLASSPATH;
     42 fi
     43 
     44 _PREFIX="/usr/bin/$cross_cc-";
     45 for i in `ls -1 ${_PREFIX}* | grep -v 'gcc-'`; do
     46     x=`echo $i|sed "s,${_PREFIX},,"|sed "s,\.awk*,,"|tr "a-z+-" "A-ZX_"`;
     47     declare -x $x="$i" ; export $x;
     48 done;
     49 unset _PREFIX;
     50 
     51 CC="${MINGW32_CC:-$cross_cc-gcc}"; export CC;
     52 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;
     53 LDFLAGS="${MINGW32_LDFLAGS:--Wl,--exclude-libs=libintl.a -Wl,--exclude-libs=libiconv.a}"; export LDFLAGS;
     54 
     55 if [ -x "/usr/bin/$cross_cc-g++" ]; then
     56     CXX="${MINGW32_CXX:-$cross_cc-g++}"; export CXX;
     57     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;
     58 else
     59     CXX=; export CXX;
     60     ac_cv_prog_CXX=no; export ac_cv_prog_CXX;
     61     CXXFLAGS=; export CXXFLAGS;
     62 fi;
     63 for i in `ls $cross_root/bin/*|grep -- "-config$"` ; do
     64     x=`basename $i|tr "a-z+-" "A-ZX_"|sed "s,\.,,"`;
     65     declare -x $x="$i" ; export $x;
     66 done;
     67 unset x i ;
     68 
     69 if ! test -f "$cross_root/lib/libexpat.dll.a"; then
     70     (cd /tmp; wget http://www.winkde.org/pub/kde/ports/win32/repository/win32libs/expat-2.0.1-bin.zip)
     71     (cd /tmp; wget http://www.winkde.org/pub/kde/ports/win32/repository/win32libs/expat-2.0.1-lib.zip)
     72     (cd $cross_root; unzip -x /tmp/expat-2.0.1-bin.zip)
     73     (cd $cross_root; unzip -x /tmp/expat-2.0.1-lib.zip)
     74 fi 
     75 
     76 if test -f "$cross_root/lib/libexpat.dll.a"; then
     77     xml_library=-DDBUS_USE_EXPAT=On -DLIBEXPAT_INCLUDE_DIR:PATH=$cross_root/include -DLIBEXPAT_LIBRARIES:PATH=$cross_root/lib/libexpat.dll.a 
     78 else
     79     echo "could not find a cross compile xml libraray"
     80     exit 1
     81 fi
     82 
     83 cmake \
     84     -DCMAKE_SYSTEM_NAME="Windows" \
     85     -DCMAKE_VERBOSE_MAKEFILE=ON \
     86     -DCMAKE_INSTALL_PREFIX:PATH=$cross_root \
     87     -DCMAKE_INSTALL_LIBDIR:PATH=$cross_root/lib \
     88     -DINCLUDE_INSTALL_DIR:PATH=$cross_root/include \
     89     -DLIB_INSTALL_DIR:PATH=$cross_root/lib \
     90     -DSYSCONF_INSTALL_DIR:PATH=$cross_root/etc \
     91     -DSHARE_INSTALL_PREFIX:PATH=$cross_root/share \
     92     -DBUILD_SHARED_LIBS:BOOL=ON \
     93     -DCMAKE_C_COMPILER="/usr/bin/$cross_cc-gcc" \
     94     -DCMAKE_CXX_COMPILER="/usr/bin/$cross_cc-g++" \
     95     -DCMAKE_FIND_ROOT_PATH="$cross_root" \
     96     -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
     97     -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
     98     -DCMAKE_CXX_COMPILER="/usr/bin/$cross_cc-g++" \
     99     -DCMAKE_FIND_ROOT_PATH="$cross_root" \
    100     -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
    101     -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
    102     $xml_library \
    103     -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER \
    104     $*
    105 
    106