3 ####################################################################################
4 # File : boost-common.sh
5 # Created : Thu Apr 12 11:11:11 2007
6 # Author : Vadim SANDLER, Open CASCADE SAS (vadim.sandler@opencascade.com)
8 # Module : Installation Wizard
9 # Copyright : 2002-2007 CEA
11 # This script is the part of the SALOME installation procedure.
13 ####################################################################################
15 if [ "x$VERSION" == "x" ] ; then
18 XVERSION=$(echo $VERSION | awk -F. '{if(NF>0)maj=$1;else maj=0;if(NF>1)min=$2;else min=0;if(NF>2)rel=$3;else rel=0;printf("%d%03d%02d",maj,min,rel);}')
19 LIBSUFFIX=$(echo $VERSION | awk -F. '{if(NF>0)maj=$1;else maj=0;if(NF>1)min=$2;else min=0;if(NF>2)rel=$3;else rel=0;if(rel==0)printf("%d.%d",maj,min);else printf("%d.%d.%d",maj,min,rel);}')
22 if [ -n "${BOOSTDIR}" ] && [ -f ${BOOSTDIR}/include/boost/version.hpp ] ; then
23 ver=`egrep 'BOOST_VERSION [0-9]+' ${BOOSTDIR}/include/boost/version.hpp | sed 's/.*BOOST_VERSION \([0-9]\+\)/\1/g'`
24 if [ "$ver" = "${XVERSION}" ]; then
33 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF
34 #$DELIM ${PRODUCT_TYPE} $DELIM
35 export BOOSTDIR=\${INSTALL_ROOT}/${PRODUCT}
36 export LD_LIBRARY_PATH=\${BOOSTDIR}/lib:\${LD_LIBRARY_PATH}
39 (test -w ${PRODUCT_DIR} && cp ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh ${PRODUCT_DIR})
40 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}"
43 # looks for the native product and collects it's environment (used by make_env())
45 boostdir="`find_in_path version.hpp /usr/include/boost:/usr/share/include/boost`"
46 if [ -n "${boostdir}" ] ; then
47 boostdir=`cd ${boostdir}/../..; pwd`
48 ls ${boostdir}/lib/libboost_thread* &> /dev/null
49 if [ "$?" -ne "0" ] ; then
52 ver=`egrep 'BOOST_VERSION [0-9]+' ${boostdir}/include/boost/version.hpp | sed 's/.*BOOST_VERSION \([0-9]\+\)/\1/g'`
53 if [ $ver -ge ${XVERSION} ] ; then
54 cat > ${INSTALL_WORK}/env_${PRODUCT_TYPE}.sh <<EOF
55 #$DELIM ${PRODUCT_TYPE} $DELIM
56 export BOOSTDIR=${boostdir}
57 export LD_LIBRARY_PATH=\${BOOSTDIR}/lib:\${LD_LIBRARY_PATH}
60 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}"
61 if [ $ver -eq ${XVERSION} ] ; then
72 try_existing ${PRODUCT_DIR} ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
78 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
79 source ${INSTALL_WORK}/$SHRC
81 makedir ${PRODUCT_DIR}
84 check_jb tar xzf ${SOURCE_DIR}/boost-${VERSION}.tar.gz -C ${INSTALL_WORK}
88 cat >> ${PRODUCT_DIR}/BUILD.LOG <<EOF
95 (cd tools/build/jam_src; check_job ${PRODUCT_DIR}/BUILD.LOG ./build.sh)
98 python_root=$(find_in_path python $PATH)
99 python_root=$(cd ${python_root}/..; pwd)
100 python_version=$(python -c "import sys; print sys.version[:3]")
101 BJAM=`find tools/build/jam_src/ -name bjam -a -type f`
103 echo "`pwd` -> $BJAM >> ${PRODUCT_DIR}/INSTALL.LOG"
104 $BJAM "-sBOOST_ALL_DYN_LINK=1" "-sBUILD=release <runtime-link>dynamic <threading>multi" \
105 "-sPYTHON_ROOT=${python_root}" "-sPYTHON_VERSION=${python_version}" "-sTOOLS=gcc" \
106 --prefix=${PRODUCT_DIR} --builddir=${PRODUCT_WORK} \
107 install >> ${PRODUCT_DIR}/INSTALL.LOG 2> $INSTALL_WORK/errlog
109 if [ "$?" -ne "0" ] ; then
110 cat ${PRODUCT_DIR}/INSTALL.LOG
111 cat $INSTALL_WORK/errlog >&2
112 cat $INSTALL_WORK/errlog >> ${PRODUCT_DIR}/INSTALL.LOG
116 cd ${PRODUCT_DIR}/include
117 mv -f boost-${VERSION//./_}/boost boost
118 rm -rf boost-${VERSION//./_}
120 # create additional links for libraries
121 cd ${PRODUCT_DIR}/lib
123 libs_gcc=$(find . -name "*${VERSION//./_}.a" | sed -e "s%./libboost_%%g;s%\.a.*%%g")
124 libs=$(find . -name "*${VERSION//./_}.a" | sed -e "s%./libboost_%%g;s%\.a.*%%g" | sed -e "s%-gcc.*%%g")
126 for lib in $libs ; do
127 # process dynamic libs
128 if [ -f libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so.${VERSION} ] ; then
129 # create link: libboost_<lib>-gcc-mt-<ver>.so -> libboost_<lib>-gcc-mt-<v_e_r>.so.<v.e.r>
130 if [ -e libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so ] ; then rm -f libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so ; fi
131 ln -sf libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so.${VERSION} libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so
132 # create link: libboost_<lib>-gcc-mt.so -> libboost_<lib>-gcc-mt-<v_e_r>.so
133 if [ -e libboost_${lib}-gcc-mt.so ] ; then rm -f libboost_${lib}-gcc-mt.so ; fi
134 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so libboost_${lib}-gcc-mt.so
135 # create link: libboost_<lib>-gcc.so -> libboost_<lib>-gcc-mt-<v_e_r>.so
136 if [ -e libboost_${lib}-gcc.so ] ; then rm -f libboost_${lib}-gcc.so ; fi
137 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so libboost_${lib}-gcc.so
138 # create link: libboost_<lib>-mt.so -> libboost_<lib>-gcc-mt-<v_e_r>.so
139 if [ -e libboost_${lib}-mt.so ] ; then rm -f libboost_${lib}-mt.so ; fi
140 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so libboost_${lib}-mt.so
141 # create link: libboost_<lib>.so -> libboost_<lib>-gcc-mt-<v_e_r>.so
142 if [ -e libboost_${lib}.so ] ; then rm -f libboost_${lib}.so ; fi
143 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.so libboost_${lib}.so
145 # process static libs
146 if [ -f libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.a ] ; then
147 # create link: libboost_<lib>-gcc-mt.a -> libboost_<lib>-gcc-mt-<v_e_r>.a
148 if [ -e libboost_${lib}-gcc-mt.a ] ; then rm -f libboost_${lib}-gcc-mt.a ; fi
149 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.a libboost_${lib}-gcc-mt.a
150 # create link: libboost_<lib>-gcc.a -> libboost_<lib>-gcc-mt-<v_e_r>.a
151 if [ -e libboost_${lib}-gcc.a ] ; then rm -f libboost_${lib}-gcc.a ; fi
152 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.a libboost_${lib}-gcc.a
153 # create link: libboost_<lib>-mt.a -> libboost_<lib>-gcc-mt-<v_e_r>.a
154 if [ -e libboost_${lib}-mt.a ] ; then rm -f libboost_${lib}-mt.a ; fi
155 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.a libboost_${lib}-mt.a
156 # create link: libboost_<lib>.a -> libboost_<lib>-gcc-mt-<v_e_r>.a
157 if [ -e libboost_${lib}.a ] ; then rm -f libboost_${lib}.a ; fi
158 ln -s libboost_${lib}-gcc-mt-${LIBSUFFIX//./_}.a libboost_${lib}.a
162 if test `uname -m` = "x86_64" ; then
163 cd ${PRODUCT_DIR}; ln -sf lib lib64
165 #du -sk ${PRODUCT_WORK} > ${PRODUCT_DIR}/size.log
166 cd ${PRODUCT_DIR}; rm -fr ${PRODUCT_WORK}
173 make_env ${INSTALL_ROOT} ${INSTALL_WORK} "${PRODUCT_SEQUENCE}" ${PRODUCT_TYPE}
174 source ${INSTALL_WORK}/$SHRC
176 check_jb tar xfz ${SOURCE_DIR}/boost-${VERSION}.tar.gz -C ${INSTALL_ROOT}
182 export INSTALL_WORK=$2;
183 export SOURCE_DIR=$3;
184 export INSTALL_ROOT=$4;
185 export PRODUCT_SEQUENCE=$5;
186 if [ $# == 6 ] ; then export PRODUCT_TYPE=$6 ; else export PRODUCT_TYPE="boost" ; fi
187 export PRODUCT="boost-${VERSION}"
188 export PRODUCT_DIR=${INSTALL_ROOT}/${PRODUCT}
189 export PRODUCT_WORK=${INSTALL_WORK}/${PRODUCT}