Tuesday, August 14, 2007

Собираем Qt 4.4.3 (скрипт)

Вот решил написать небольшой скриптик для автоматизации сборки замечательной GUI библиотеки Qt.
qt4_build.sh :
-----------------------------


#!/bin/bash

#QT_TASTE=qt-x11-opensource-src;
QT_TASTE=qt-all-opensource-src;

#QT_VER=4.1.5;
#QT_VER=4.2.2;
QT_VER=4.4.3;

BUILD_TYPE=RELEASE;
#BUILD_TYPE=DEFAULT;
#BUILD_TYPE=DEBUG;
#BUILD_TYPE=MINIMAL;

#MAKE="make -j3";
MAKE="make -j2";

DEVEL_ROOT=~/devel;

# Which Arch to use?
ARCH=32;
#ARCH=64;

# Which compiler to use?
#COMPILER=GCC;
#PATH=/opt/usr/local/bin:$PATH;
COMPILER=ICC;

if [ $COMPILER == "GCC" ]; then
if [ $ARCH == "32" ]; then
PLATFORM=linux-g++-32;
elif [ $ARCH == "64" ]; then
PLATFORM=linux-g++-64;
else
echo -n -e "\nERROR: Unknown ARCH !!!\n";
exit 1;
fi
elif [ $COMPILER == "ICC" ]; then
ICC_HOME=/home/usd/intel;
ICC_VER=10.1.021;
OPTS="-no-pch";
if [ $ARCH == "32" ]; then
export PATH=$ICC_HOME/cc/$ICC_VER/bin:$PATH;
PLATFORM=linux-icc-32;
export LD_LIBRARY_PATH=$ICC_HOME/cc/$ICC_VER/lib:$LD_LIBRARY_PATH;
elif [ $ARCH == "64" ]; then
export PATH=$ICC_HOME/cce/$ICC_VER/bin:$PATH;
PLATFORM=linux-icc-64;
export LD_LIBRARY_PATH=$ICC_HOME/cce/$ICC_VER/lib:$LD_LIBRARY_PATH;
echo -n -e "\nWARNING: on PLATFORM=linux-icc-64 BUILD_TYPE=DEBUG by default!!!\n";
BUILD_TYPE=DEBUG;
else
echo -n -e "\nERROR: Unknown ARCH !!!\n";
exit 1;
fi
else
echo -n -e "\nERROR: Unknown COMPILER !!!\n";
exit 1;
fi

QT_TARBALL=$QT_TASTE-$QT_VER.tar.bz2;

if [ $BUILD_TYPE == "RELEASE" ]; then
B_T=release-static;
OPTS="-release -static $OPTS -qt-zlib -no-gif -qt-libpng -no-libmng -qt-libjpeg -no-qt3support -qt-sql-sqlite";
elif [ $BUILD_TYPE == "DEFAULT" ]; then
B_T=default;
OPTS="$OPTS";
elif [ $BUILD_TYPE == "DEBUG" ]; then
B_T=debug-shared;
OPTS="-debug -shared $OPTS -qt-sql-sqlite";
elif [ $BUILD_TYPE == "MINIMAL" ]; then
B_T=release-minstatic;
OPTS="-release -static $OPTS -qt-zlib -no-gif -qt-libpng -no-libmng -qt-libjpeg -no-qt3support -qt-sql-sqlite -no-exceptions -no-nis -no-cups -no-iconv -no-opengl -no-sm -no-xshape -no-xinerama -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-fontconfig -no-tablet -no-xkb -no-glib";
else
echo -n -e "\nERROR: Unknown BUILD_TYPE !!!\n";
exit 1;
fi

cd $DEVEL_ROOT;

if [ -d $DEVEL_ROOT/$QT_TASTE-$QT_VER ]; then
rm -rf $QT_TASTE-$QT_VER;
tar xjf $QT_TARBALL;
else
tar xjf $QT_TARBALL;
fi

if [ -d $DEVEL_ROOT/qt-$QT_VER-$PLATFORM-$B_T ]; then
rm -rf qt-$QT_VER-$PLATFORM-$B_T;
mv $QT_TASTE-$QT_VER qt-$QT_VER-$PLATFORM-$B_T;
else
mv $QT_TASTE-$QT_VER qt-$QT_VER-$PLATFORM-$B_T;
fi

QT_DIR=$DEVEL_ROOT/qt-$QT_VER-$PLATFORM-$B_T;
TARGET_DIR=$QT_DIR;
PATH=$TARGET_DIR/bin:$PATH;

export PATH;

cd $QT_DIR;

# HACK for intel static libs
mv $TARGET_DIR/mkspecs/linux-icc/qmake.conf $TARGET_DIR/mkspecs/linux-icc/qmake_ORIG.conf
sed s/-wd654,1572/"-wd654,1572 -static-intel"/ $TARGET_DIR/mkspecs/linux-icc/qmake_ORIG.conf > $TARGET_DIR/mkspecs/linux-icc/qmake.conf

./configure -prefix $TARGET_DIR -platform $PLATFORM $OPTS;

$MAKE;


-----------------------------
Скрипт позволяет упростить сборку различных конфигураций Qt. Задайте необходимые переменные, скопируйте архив с Qt в директорию DEVEL_ROOT и запустите.

Thursday, March 1, 2007