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