Salome HOME
PR: update check_boost to correct detection on ubuntu 12.04
[modules/yacs.git] / adm / unix / config_files / check_boost.m4
1 dnl Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 dnl
3 dnl Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 dnl CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 dnl
6 dnl This library is free software; you can redistribute it and/or
7 dnl modify it under the terms of the GNU Lesser General Public
8 dnl License as published by the Free Software Foundation; either
9 dnl version 2.1 of the License.
10 dnl
11 dnl This library is distributed in the hope that it will be useful,
12 dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
13 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 dnl Lesser General Public License for more details.
15 dnl
16 dnl You should have received a copy of the GNU Lesser General Public
17 dnl License along with this library; if not, write to the Free Software
18 dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 dnl
20 dnl See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 dnl
22
23 AC_DEFUN([CHECK_BOOST],[
24
25 AC_CHECKING(for BOOST Library)
26
27 AC_REQUIRE([ENABLE_PTHREADS])dnl
28
29 AC_LANG_SAVE
30 AC_LANG_CPLUSPLUS
31
32 gccver=`$CC -dumpversion | sed 's/^\([[0-9]]\+\)\.\([[0-9]]\+\).*/\1\2/g'`
33 SUFFIXES="empty -mt -gcc -gcc-mt -gcc${gccver} -gcc${gccver}-mt"
34
35 BOOST_CPPFLAGS=""
36 BOOST_LIBSUFFIX=""
37 BOOST_LIBS=""
38
39 AC_CHECKING(for BOOST location)
40 AC_ARG_WITH(boost,
41    [AC_HELP_STRING([--with-boost=DIR],[root directory path to BOOST library installation])],
42    [BOOSTDIR="$withval"
43     AC_MSG_RESULT("select $withval as path to BOOST library")
44    ])
45    
46 if test "x${BOOSTDIR}" = "x" ; then
47   BOOSTDIR="/usr"
48 fi
49
50 AC_MSG_RESULT(\$BOOSTDIR = ${BOOSTDIR})
51
52 CPPFLAGS_old="${CPPFLAGS}"
53 LIBS_old=$LIBS
54
55 LIB_SUFFIX="${LIB_LOCATION_SUFFIX}"
56
57 if test "x${BOOSTDIR}" != "x" ; then
58   BOOST_CPPFLAGS="-I${BOOSTDIR}/include"
59   BOOST_LIBS="-L${BOOSTDIR}/lib${LIB_SUFFIX}"
60 fi
61
62 if test "x${BOOSTDIR}" = "x/usr" ; then
63   BOOST_CPPFLAGS=""
64   BOOST_LIBS=""
65 fi
66
67 boost_ok=no
68 boost_headers_ok=no
69 boost_binaries_ok=no
70
71 dnl BOOST headers
72 AC_CHECKING(for BOOST headers)
73 CPPFLAGS="${CPPFLAGS_old} ${BOOST_CPPFLAGS}"
74
75 boost_include_dir_ok=yes
76 if test "x${BOOSTDIR}" != "x" ; then
77   AC_CHECK_FILE(${BOOSTDIR}/include/boost/shared_ptr.hpp,
78                 boost_include_dir_ok=yes,
79                 boost_include_dir_ok=no)
80 fi
81
82 BOOST_PROGRAM_OPTIONS_LIB=no
83 if test "x${boost_include_dir_ok}" = "xyes" ; then
84   AC_CHECK_FILE(${BOOSTDIR}/include/boost/program_options.hpp,
85                 BOOST_PROGRAM_OPTIONS_LIB=yes,
86                 BOOST_PROGRAM_OPTIONS_LIB=no)
87 fi
88 AC_MSG_RESULT(for boost program_options tool: $BOOST_PROGRAM_OPTIONS_LIB)
89
90 if test "x${boost_include_dir_ok}" = "xyes" ; then
91   AC_TRY_COMPILE([#include <boost/shared_ptr.hpp>],
92                  [boost::shared_ptr<int>(new int)],
93                  boost_headers_ok=yes,
94                  boost_headers_ok=no)
95 fi
96
97 if test "x${boost_headers_ok}" = "xno" ; then
98   BOOST_CPPFLAGS="BOOST_CPPFLAGS_NOT_DEFINED"
99 else
100   AC_MSG_RESULT(\$BOOST_CPPFLAGS = ${BOOST_CPPFLAGS})
101 fi
102 AC_MSG_RESULT(for boost headers: $boost_headers_ok)
103
104 if test "x${boost_headers_ok}" = "xyes" ; then
105   dnl BOOST binaries
106   AC_CHECKING(for BOOST binaries)
107   boost_lib_dir_ok=yes
108   if test "x${BOOSTDIR}" != "x" ; then
109     for BOOST_LIBSUFFIX in ${SUFFIXES} ; do
110       test "${BOOST_LIBSUFFIX}" == "empty" && BOOST_LIBSUFFIX=""
111       AC_CHECK_FILE([${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_thread${BOOST_LIBSUFFIX}.so],
112                     [boost_lib_dir_ok=yes],
113                     [AC_CHECK_FILE([${BOOSTDIR}/lib64/libboost_thread${BOOST_LIBSUFFIX}.so],
114                                    [boost_lib_dir_ok=yes; LIB_SUFFIX=64],
115                                    [boost_lib_dir_ok=no])
116                     ])
117       if test "x${boost_lib_dir_ok}" = "xyes" ; then
118         break
119       fi
120     done
121   fi
122   if test "x${boost_lib_dir_ok}" = "xyes" ; then
123     LIBS="${LIBS_old} ${BOOST_LIBS} -lboost_thread${BOOST_LIBSUFFIX} -lboost_system${BOOST_LIBSUFFIX}"
124     AC_TRY_LINK([#include <boost/thread/thread.hpp>],
125                 [struct TBody{ void operator()(){} }; boost::thread(TBody())],
126                 boost_binaries_ok=yes,
127                 boost_binaries_ok=no)
128     if test "x${boost_binaries_ok}" = "xyes" ; then
129       break
130     fi
131   fi
132 fi
133
134 if test "x${boost_binaries_ok}" = "xno" ; then
135   BOOST_LIBS="BOOST_LIBS_NOT_FOUND"
136   BOOST_LIBSUFFIX="-not-defined"
137 else
138   AC_MSG_RESULT(\$BOOST_LIBSUFFIX = ${BOOST_LIBSUFFIX})
139   AC_MSG_RESULT(\$BOOST_LIBS = ${BOOST_LIBS})
140   AC_CHECK_FILE(${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_thread${BOOST_LIBSUFFIX}.so,
141                 BOOST_LIB_THREAD="${BOOST_LIBS} -lboost_thread${BOOST_LIBSUFFIX} -lboost_system${BOOST_LIBSUFFIX}",
142                 BOOST_LIB_THREAD="")
143   AC_CHECK_FILE(${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_signals${BOOST_LIBSUFFIX}.so,
144                 BOOST_LIB_SIGNALS="${BOOST_LIBS} -lboost_signals${BOOST_LIBSUFFIX}",
145                 BOOST_LIB_SIGNALS="")
146   AC_CHECK_FILE(${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_system${BOOST_LIBSUFFIX}.so,
147                 BOOST_LIB_SYSTEM="${BOOST_LIBS} -lboost_system${BOOST_LIBSUFFIX}",
148                 BOOST_LIB_SYSTEM="")
149   AC_CHECK_FILE(${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_regex${BOOST_LIBSUFFIX}.so,
150                 BOOST_LIB_REGEX="${BOOST_LIBS} -lboost_regex${BOOST_LIBSUFFIX}",
151                 BOOST_LIB_REGEX="")
152 fi
153 AC_MSG_RESULT(for boost binaries: $boost_binaries_ok)
154
155 CPPFLAGS="${CPPFLAGS_old}"
156 LIBS="${LIBS_old}"
157
158 if test "x${boost_headers_ok}" = "xyes" ; then
159   if test "x${boost_binaries_ok}" = "xyes" ; then
160     boost_ok=yes
161   fi
162 fi
163
164 AC_MSG_RESULT(for boost: $boost_ok)
165
166 AC_SUBST(BOOST_CPPFLAGS)
167 AC_SUBST(BOOST_LIBSUFFIX)
168 AC_SUBST(BOOST_LIBS)
169 AC_SUBST(BOOST_LIB_THREAD)
170 AC_SUBST(BOOST_LIB_SIGNALS)
171 AC_SUBST(BOOST_LIB_SYSTEM)
172 AC_SUBST(BOOST_LIB_REGEX)
173 AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
174
175 AC_LANG_RESTORE
176
177 ])dnl
178
179