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