Salome HOME
Copyright update 2021
[tools/configuration.git] / autotools / m4 / mt_check_omniorb.m4
1 dnl Copyright (C) 2007-2021  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, 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([MT_CHECK_OMNIORB],[
24 AC_REQUIRE([AC_PROG_CC])dnl
25 AC_REQUIRE([AC_PROG_CXX])dnl
26 AC_REQUIRE([AC_PROG_CPP])dnl
27 AC_REQUIRE([AC_PROG_CXXCPP])dnl
28 #EF
29 AC_REQUIRE([CHECK_PYTHON])
30
31 AC_CHECKING(for omniORB)
32 omniORB_ok=yes
33
34 #EF
35 #if test "x$PYTHON" = "x" 
36 #then
37 #  CHECK_PYTHON
38 #fi
39
40 AC_LANG_SAVE
41 AC_LANG_CPLUSPLUS
42
43 AC_PATH_PROG(OMNIORB_IDL, omniidl)
44 if test "x$OMNIORB_IDL" = "x"
45 then
46   omniORB_ok=no
47   AC_MSG_RESULT(omniORB binaries not in PATH variable)
48 else
49   omniORB_ok=yes
50 fi
51
52 if  test "x$omniORB_ok" = "xyes"
53 then
54   AC_SUBST(OMNIORB_IDL)
55
56   OMNIORB_BIN=`echo ${OMNIORB_IDL} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
57   OMNIORB_ROOT=${OMNIORB_BIN}
58   # one-level up
59   OMNIORB_ROOT=`echo ${OMNIORB_ROOT}  | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
60   #
61   #
62   if test -d $OMNIORB_ROOT/include ; then
63     # if $OMNIORB_ROOT/include exists, there are a lot of chance that
64     # this is omniORB4.x installed via configure && make && make install
65     OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin\$,lib,"`
66     OMNIORB_VERSION=4
67   else
68     # omniORB has been installed old way
69     OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin/,lib/,"`
70     # one-level up again
71     OMNIORB_ROOT=`echo ${OMNIORB_ROOT}  | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
72     if test -d $OMNIORB_ROOT/include/omniORB4 ; then
73       OMNIORB_VERSION=4
74     else
75       OMNIORB_VERSION=3
76     fi
77   fi
78   AC_SUBST(OMNIORB_ROOT)
79
80   OMNIORB_INCLUDES="-I$OMNIORB_ROOT/include -I$OMNIORB_ROOT/include/omniORB${OMNIORB_VERSION} -I$OMNIORB_ROOT/include/COS"
81   AC_SUBST(OMNIORB_INCLUDES)
82
83   ENABLE_PTHREADS
84
85   OMNIORB_CXXFLAGS="-DOMNIORB_VERSION=$OMNIORB_VERSION"
86   case $build_cpu in
87     sparc*)
88       # AC_DEFINE(__sparc__)
89       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sparc__"
90       ;;
91    *86*)
92       # AC_DEFINE(__x86__)
93       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__x86__"
94       ;;
95   esac
96   case $build_os in
97     osf*)
98       # AC_DEFINE(__osf1__)
99       __OSVERSION__=5
100       AC_DEFINE([__OSVERSION__], [5], [Description])
101       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__osf1__"
102       ;;
103     solaris*)
104       # AC_DEFINE(__sunos__)
105       __OSVERSION__=5
106       AC_DEFINE([__OSVERSION__], [5], [Description])
107       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sunos__"
108       ;;
109    linux*)
110       # AC_DEFINE(__linux__)
111       __OSVERSION__=2
112       AC_DEFINE([__OSVERSION__], [2], [Description])
113       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__linux__"
114       ;;
115   esac
116   AC_SUBST(OMNIORB_CXXFLAGS)
117
118   CPPFLAGS_old=$CPPFLAGS
119   CPPFLAGS="$CPPFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
120
121   AC_LANG_CPLUSPLUS
122   AC_CHECK_HEADER(CORBA.h,omniORB_ok="yes",omniORB_ok="no")
123
124   CPPFLAGS=$CPPFLAGS_old
125
126 fi
127
128 if test "x$omniORB_ok" = "xyes" 
129 then
130   if test "x$OMNIORB_LIB" = "x/usr/lib"
131   then
132     OMNIORB_LDFLAGS=""
133     OMNIORB_RFLAGS=""
134   else
135     OMNIORB_LDFLAGS="-L$OMNIORB_LIB"
136     OMNIORB_RFLAGS="-Wl,-R$OMNIORB_LIB"
137   fi
138
139   LIBS_old=$LIBS
140   LIBS="$LIBS $OMNIORB_LDFLAGS -lomnithread"
141
142   CXXFLAGS_old=$CXXFLAGS
143   CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
144
145   AC_MSG_CHECKING(whether we can link with omnithreads)
146   AC_CACHE_VAL(salome_cv_lib_omnithreads,[
147     AC_TRY_LINK(
148 #include <omnithread.h>
149 ,   omni_mutex my_mutex,
150     eval "salome_cv_lib_omnithreads=yes",eval "salome_cv_lib_omnithreads=no")
151   ])
152
153   omniORB_ok="$salome_cv_lib_omnithreads"
154   if  test "x$omniORB_ok" = "xno"
155   then
156     AC_MSG_RESULT(omnithreads not found)
157   else
158     AC_MSG_RESULT(yes)
159   fi
160
161   LIBS=$LIBS_old
162   CXXFLAGS=$CXXFLAGS_old
163 fi
164
165
166 dnl omniORB_ok=yes
167 if test "x$omniORB_ok" = "xyes" 
168 then
169
170   AC_CHECK_LIB(socket,socket, LIBS="-lsocket $LIBS",,)
171   AC_CHECK_LIB(nsl,gethostbyname, LIBS="-lnsl $LIBS",,)
172
173   LIBS_old=$LIBS
174   OMNIORB_LIBS="$OMNIORB_LDFLAGS"
175   OMNIORB_LIBS="$OMNIORB_LIBS -lomniORB${OMNIORB_VERSION}"
176   OMNIORB_LIBS="$OMNIORB_LIBS -lomniDynamic${OMNIORB_VERSION}"
177   OMNIORB_LIBS="$OMNIORB_LIBS -lCOS${OMNIORB_VERSION}"
178   OMNIORB_LIBS="$OMNIORB_LIBS -lCOSDynamic${OMNIORB_VERSION}"
179   OMNIORB_LIBS="$OMNIORB_LIBS -lomnithread"
180   OMNIORB_LIBS="$OMNIORB_LIBS ${OMNIORB_RFLAGS}"
181   if test $OMNIORB_VERSION = 3 ; then
182     OMNIORB_LIBS="$OMNIORB_LIBS -ltcpwrapGK"
183   fi
184   AC_SUBST(OMNIORB_LIBS)
185
186   LIBS="$OMNIORB_LIBS $LIBS"
187   CXXFLAGS_old=$CXXFLAGS
188   CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
189
190   AC_MSG_CHECKING(whether we can link with omniORB)
191   AC_CACHE_VAL(salome_cv_lib_omniorb,[
192     AC_TRY_LINK(
193 #include <CORBA.h>
194 ,   CORBA::ORB_var orb,
195     eval "salome_cv_lib_omniorb3=yes",eval "salome_cv_lib_omniorb3=no")
196   ])
197   omniORB_ok="$salome_cv_lib_omniorb3"
198
199   omniORB_ok=yes
200   if test "x$omniORB_ok" = "xno" 
201   then
202     AC_MSG_RESULT(omniORB library linking failed)
203     omniORB_ok=no
204   else
205     AC_MSG_RESULT(yes)
206   fi
207   LIBS="$LIBS_old"
208   CXXFLAGS=$CXXFLAGS_old
209 fi
210
211
212 if test "x$omniORB_ok" = "xyes" 
213 then
214
215   OMNIORB_IDLCXXFLAGS="-Wba -nf -I${OMNIORB_ROOT}/idl"
216   OMNIORB_PACOIDLCXXFLAGS="-nf -I${OMNIORB_ROOT}/idl"
217   OMNIORB_IDLPYFLAGS_1='-bpython -nf '
218   OMNIORB_IDLPYFLAGS_2=" -I${OMNIORB_ROOT}/idl"
219   OMNIORB_IDLPYFLAGS=${OMNIORB_IDLPYFLAGS_1}${OMNIORB_IDLPYFLAGS_2}
220
221   AC_SUBST(OMNIORB_IDLCXXFLAGS)
222   AC_SUBST(OMNIORB_PACOIDLCXXFLAGS)
223   AC_SUBST(OMNIORB_IDLPYFLAGS)
224
225   OMNIORB_IDL_CLN_H=.hh
226   OMNIORB_IDL_CLN_CXX=SK.cc
227   OMNIORB_IDL_CLN_OBJ=SK.o 
228   AC_SUBST(OMNIORB_IDL_CLN_H)
229   AC_SUBST(OMNIORB_IDL_CLN_CXX)
230   AC_SUBST(OMNIORB_IDL_CLN_OBJ)
231
232   OMNIORB_IDL_SRV_H=.hh
233   OMNIORB_IDL_SRV_CXX=SK.cc
234   OMNIORB_IDL_SRV_OBJ=SK.o
235   AC_SUBST(OMNIORB_IDL_SRV_H)
236   AC_SUBST(OMNIORB_IDL_SRV_CXX)
237   AC_SUBST(OMNIORB_IDL_SRV_OBJ)
238
239   OMNIORB_IDL_TIE_H=
240   OMNIORB_IDL_TIE_CXX=
241   AC_SUBST(OMNIORB_IDL_TIE_H)
242   AC_SUBST(OMNIORB_IDL_TIE_CXX)
243   
244   AC_DEFINE([OMNIORB], [], [Description])
245
246   CORBA_HAVE_POA=1
247   AC_DEFINE([CORBA_HAVE_POA], [], [Description])
248
249   CORBA_ORB_INIT_HAVE_3_ARGS=1
250   AC_DEFINE([CORBA_ORB_INIT_HAVE_3_ARGS], [], [Description])
251   CORBA_ORB_INIT_THIRD_ARG='"omniORB"'
252   AC_DEFINE([CORBA_ORB_INIT_THIRD_ARG], [], [omniORB])
253
254 fi
255
256 omniORBpy_ok=no
257 if  test "x$omniORB_ok" = "xyes"
258 then
259   AC_MSG_CHECKING(omniORBpy)
260   $PYTHON -c "import omniORB" &> /dev/null
261   if test $? = 0 ; then
262     AC_MSG_RESULT(yes)
263     omniORBpy_ok=yes
264   else
265     AC_MSG_RESULT(no, check your installation of omniORBpy)
266     omniORBpy_ok=no
267   fi
268 fi
269
270 dnl AC_LANG_RESTORE
271
272 AC_MSG_RESULT(for omniORBpy: $omniORBpy_ok)
273 AC_MSG_RESULT(for omniORB: $omniORB_ok)
274
275 # Save cache
276 AC_CACHE_SAVE
277
278 dnl AC_LANG_CPLUSPLUS
279
280 CXXFLAGS_old=$CXXFLAGS
281 CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
282 LIBS_old=$LIBS
283 LIBS="$LIBS $OMNIORB_LDFLAGS $OMNIORB_LIBS"
284 AC_MSG_CHECKING(whether we have double and CORBA::Double compatibility)
285 AC_TRY_RUN(
286 #include <stdlib.h>
287 #include <CORBA.h>
288 int main ()
289 {
290   CORBA::Double *a=new CORBA::Double(2.5);
291   double c=2.5;
292   double *b;
293   b=(double *)a;
294
295   if( (c==*b) && (sizeof(double)==sizeof(CORBA::Double)) ){
296     delete a;
297     exit(0);
298   }
299   else{
300     delete a;
301     exit(1);
302   }
303 }
304 ,DOUBLECOMP="yes",DOUBLECOMP="no")
305 if test "$DOUBLECOMP" = yes; then
306   OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -DCOMP_CORBA_DOUBLE"
307   AC_MSG_RESULT(yes)
308 else
309   AC_MSG_RESULT(no)
310 fi
311 AC_MSG_CHECKING(whether we have int and CORBA::Long compatibility)
312 AC_TRY_RUN(
313 #include <stdlib.h>
314 #include <CORBA.h>
315 int main ()
316 {
317   CORBA::Long *a=new CORBA::Long(2);
318   int c=2;
319   int *b;
320   b=(int *)a;
321
322   if( (c==*b) && (sizeof(int)==sizeof(CORBA::Long)) )
323     exit(0);
324   else
325     exit(1);
326 }
327 ,LONGCOMP="yes",LONGCOMP="no")
328 if test "$LONGCOMP" = yes; then
329   OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -DCOMP_CORBA_LONG"
330   AC_MSG_RESULT(yes)
331 else
332   AC_MSG_RESULT(no)
333 fi
334 CXXFLAGS=$CXXFLAGS_old
335 LIBS=$LIBS_old
336
337 AC_LANG_RESTORE
338
339 AC_SUBST(OMNIORB_CXXFLAGS)
340
341 ])dnl
342 dnl