Salome HOME
Updated copyright comment
[tools/configuration.git] / autotools / m4 / check_boost.m4
1 dnl Copyright (C) 2007-2024  CEA, EDF, 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, or (at your option) any later version.
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   AC_CHECK_FILE(${BOOSTDIR}/lib${LIB_SUFFIX}/libboost_filesystem${BOOST_LIBSUFFIX}.so,
153                 BOOST_LIB_FILESYSTEM="${BOOST_LIBS} -lboost_filesystem${BOOST_LIBSUFFIX}",
154                 BOOST_LIB_FILESYSTEM="")
155 fi
156 AC_MSG_RESULT(for boost binaries: $boost_binaries_ok)
157
158 CPPFLAGS="${CPPFLAGS_old}"
159 LIBS="${LIBS_old}"
160
161 if test "x${boost_headers_ok}" = "xyes" ; then
162   if test "x${boost_binaries_ok}" = "xyes" ; then
163     boost_ok=yes
164   fi
165 fi
166
167 AC_MSG_RESULT(for boost: $boost_ok)
168
169 AC_SUBST(BOOST_CPPFLAGS)
170 AC_SUBST(BOOST_LIBSUFFIX)
171 AC_SUBST(BOOST_LIBS)
172 AC_SUBST(BOOST_LIB_THREAD)
173 AC_SUBST(BOOST_LIB_SIGNALS)
174 AC_SUBST(BOOST_LIB_SYSTEM)
175 AC_SUBST(BOOST_LIB_REGEX)
176 AC_SUBST(BOOST_LIB_FILESYSTEM)
177 AC_SUBST(BOOST_PROGRAM_OPTIONS_LIB)
178
179 AC_LANG_RESTORE
180
181 ])dnl
182
183