Salome HOME
Initial commit
[modules/jobmanager.git] / m4 / check_omniorb.m4
1 dnl  Copyright (C) 2006-2008  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.
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 AC_DEFUN([AC_CHECK_OMNIORB],[
20 AC_REQUIRE([AC_PROG_CC])dnl
21 AC_REQUIRE([AC_PROG_CXX])dnl
22 AC_REQUIRE([AC_PROG_CPP])dnl
23 AC_REQUIRE([AC_PROG_CXXCPP])dnl
24
25 AC_CHECKING(for omniORB)
26 omniORB_ok=yes
27
28 if test "x$PYTHON" = "x" 
29 then
30   CHECK_PYTHON
31 fi
32
33 AC_LANG_SAVE
34 AC_LANG_CPLUSPLUS
35
36 AC_PATH_PROG(OMNIORB_IDL, omniidl)
37 if test "x$OMNIORB_IDL" = "x"
38 then
39   omniORB_ok=no
40   AC_MSG_RESULT(omniORB binaries not in PATH variable)
41 else
42   omniORB_ok=yes
43 fi
44
45 if  test "x$omniORB_ok" = "xyes"
46 then
47   AC_SUBST(OMNIORB_IDL)
48
49   OMNIORB_BIN=`echo ${OMNIORB_IDL} | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
50   OMNIORB_ROOT=${OMNIORB_BIN}
51   # one-level up
52   OMNIORB_ROOT=`echo ${OMNIORB_ROOT}  | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
53   #
54   #
55   if test -d $OMNIORB_ROOT/include ; then
56     # if $OMNIORB_ROOT/include exists, there are a lot of chance that
57     # this is omniORB4.x installed via configure && make && make install
58     OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin\$,lib,"`
59     OMNIORB_VERSION=4
60   else
61     # omniORB has been installed old way
62     OMNIORB_LIB=`echo ${OMNIORB_BIN} | sed -e "s,bin/,lib/,"`
63     # one-level up again
64     OMNIORB_ROOT=`echo ${OMNIORB_ROOT}  | sed -e "s,[[^/]]*$,,;s,/$,,;s,^$,.,"`
65     if test -d $OMNIORB_ROOT/include/omniORB4 ; then
66       OMNIORB_VERSION=4
67     else
68       OMNIORB_VERSION=3
69     fi
70   fi
71   AC_SUBST(OMNIORB_ROOT)
72
73   OMNIORB_INCLUDES="-I$OMNIORB_ROOT/include -I$OMNIORB_ROOT/include/omniORB${OMNIORB_VERSION} -I$OMNIORB_ROOT/include/COS"
74   AC_SUBST(OMNIORB_INCLUDES)
75
76   # ENABLE_PTHREADS
77
78   OMNIORB_CXXFLAGS="-DOMNIORB_VERSION=$OMNIORB_VERSION"
79   case $build_cpu in
80     sparc*)
81       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sparc__"
82       ;;
83    *86*)
84       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__x86__"
85       ;;
86   esac
87   case $build_os in
88     solaris*)
89       __OSVERSION__=5
90       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__sunos__"
91       ;;
92    linux*)
93       __OSVERSION__=2
94       OMNIORB_CXXFLAGS="$OMNIORB_CXXFLAGS -D__linux__ -D_REENTRANT"
95       ;;
96   esac
97   AC_SUBST(OMNIORB_CXXFLAGS)
98
99   CPPFLAGS_old=$CPPFLAGS
100   CPPFLAGS="$CPPFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
101
102   AC_LANG_CPLUSPLUS
103   AC_CHECK_HEADER(CORBA.h,omniORB_ok="yes",omniORB_ok="no")
104
105   CPPFLAGS=$CPPFLAGS_old
106
107 fi
108
109 if test "x$omniORB_ok" = "xyes" 
110 then
111   if test "x$OMNIORB_LIB" = "x/usr/lib"
112   then
113     OMNIORB_LDFLAGS=""
114     OMNIORB_RFLAGS=""
115   else
116     OMNIORB_LDFLAGS="-L$OMNIORB_LIB"
117     OMNIORB_RFLAGS="-R$OMNIORB_LIB"
118   fi
119
120   LIBS_old=$LIBS
121   LIBS="$LIBS $OMNIORB_LDFLAGS -lomnithread"
122
123   CXXFLAGS_old=$CXXFLAGS
124   CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
125
126   AC_MSG_CHECKING(whether we can link with omnithreads)
127   AC_CACHE_VAL(salome_cv_lib_omnithreads,[
128     AC_TRY_LINK(
129 #include <omnithread.h>
130 ,   omni_mutex my_mutex,
131     eval "salome_cv_lib_omnithreads=yes",eval "salome_cv_lib_omnithreads=no")
132   ])
133
134   omniORB_ok="$salome_cv_lib_omnithreads"
135   if  test "x$omniORB_ok" = "xno"
136   then
137     AC_MSG_RESULT(omnithreads not found)
138   else
139     AC_MSG_RESULT(yes)
140   fi
141
142   LIBS=$LIBS_old
143   CXXFLAGS=$CXXFLAGS_old
144 fi
145
146
147 dnl omniORB_ok=yes
148 if test "x$omniORB_ok" = "xyes" 
149 then
150
151   AC_CHECK_LIB(socket,socket, LIBS="-lsocket $LIBS",,)
152   AC_CHECK_LIB(nsl,gethostbyname, LIBS="-lnsl $LIBS",,)
153
154   LIBS_old=$LIBS
155   OMNIORB_LIBS="$OMNIORB_LDFLAGS"
156   OMNIORB_LIBS="$OMNIORB_LIBS -lomniORB${OMNIORB_VERSION}"
157   OMNIORB_LIBS="$OMNIORB_LIBS -lomniDynamic${OMNIORB_VERSION}"
158   OMNIORB_LIBS="$OMNIORB_LIBS -lCOS${OMNIORB_VERSION}"
159   OMNIORB_LIBS="$OMNIORB_LIBS -lCOSDynamic${OMNIORB_VERSION}"
160   OMNIORB_LIBS="$OMNIORB_LIBS -lomnithread"
161   OMNIORB_LIBS="$OMNIORB_LIBS ${OMNIORB_RFLAGS}"
162   if test $OMNIORB_VERSION = 3 ; then
163     OMNIORB_LIBS="$OMNIORB_LIBS -ltcpwrapGK"
164   fi
165   AC_SUBST(OMNIORB_LIBS)
166
167   LIBS="$OMNIORB_LIBS $LIBS"
168   CXXFLAGS_old=$CXXFLAGS
169   CXXFLAGS="$CXXFLAGS $OMNIORB_CXXFLAGS $OMNIORB_INCLUDES"
170
171   AC_MSG_CHECKING(whether we can link with omniORB)
172   AC_CACHE_VAL(salome_cv_lib_omniorb,[
173     AC_TRY_LINK(
174 #include <CORBA.h>
175 ,   CORBA::ORB_var orb,
176     eval "salome_cv_lib_omniorb3=yes",eval "salome_cv_lib_omniorb3=no")
177   ])
178   omniORB_ok="$salome_cv_lib_omniorb3"
179
180   omniORB_ok=yes
181   if test "x$omniORB_ok" = "xno" 
182   then
183     AC_MSG_RESULT(omniORB library linking failed)
184     omniORB_ok=no
185   else
186     AC_MSG_RESULT(yes)
187   fi
188   LIBS="$LIBS_old"
189   CXXFLAGS=$CXXFLAGS_old
190 fi
191
192
193 if test "x$omniORB_ok" = "xyes" 
194 then
195
196   OMNIORB_IDLCXXFLAGS="-nf -I$OMNIORB_ROOT/idl"
197   OMNIORB_IDLPYFLAGS="-bpython -I$OMNIORB_ROOT/idl"
198   AC_SUBST(OMNIORB_IDLCXXFLAGS)
199   AC_SUBST(OMNIORB_IDLPYFLAGS)
200
201   OMNIORB_IDL_CLN_H=.hh
202   OMNIORB_IDL_CLN_CXX=SK.cc
203   OMNIORB_IDL_CLN_OBJ=SK.o 
204   AC_SUBST(OMNIORB_IDL_CLN_H)
205   AC_SUBST(OMNIORB_IDL_CLN_CXX)
206   AC_SUBST(OMNIORB_IDL_CLN_OBJ)
207
208   OMNIORB_IDL_SRV_H=.hh
209   OMNIORB_IDL_SRV_CXX=SK.cc
210   OMNIORB_IDL_SRV_OBJ=SK.o
211   AC_SUBST(OMNIORB_IDL_SRV_H)
212   AC_SUBST(OMNIORB_IDL_SRV_CXX)
213   AC_SUBST(OMNIORB_IDL_SRV_OBJ)
214
215   OMNIORB_IDL_TIE_H=
216   OMNIORB_IDL_TIE_CXX=
217   AC_SUBST(OMNIORB_IDL_TIE_H)
218   AC_SUBST(OMNIORB_IDL_TIE_CXX)
219   
220   AC_DEFINE(OMNIORB,,[Presence de omniORB])
221
222   CORBA_HAVE_POA=1
223   AC_DEFINE(CORBA_HAVE_POA,,[POA presence])
224
225   CORBA_ORB_INIT_HAVE_3_ARGS=1
226   AC_DEFINE(CORBA_ORB_INIT_HAVE_3_ARGS,,[?])
227   CORBA_ORB_INIT_THIRD_ARG='"omniORB"'
228   AC_DEFINE(CORBA_ORB_INIT_THIRD_ARG, "omniORB", [?])
229
230 fi
231
232 omniORBpy_ok=no
233 if  test "x$omniORB_ok" = "xyes"
234 then
235   AC_MSG_CHECKING(omniORBpy)
236   $PYTHON -c "import omniORB" &> /dev/null
237   if test $? = 0 ; then
238     AC_MSG_RESULT(yes)
239     omniORBpy_ok=yes
240   else
241     AC_MSG_RESULT(no, check your installation of omniORBpy)
242     omniORBpy_ok=no
243   fi
244 fi
245
246 dnl AC_LANG_RESTORE
247
248 AC_MSG_RESULT(for omniORBpy: $omniORBpy_ok)
249 AC_MSG_RESULT(for omniORB: $omniORB_ok)
250
251 IDL=${OMNIORB_IDL}
252 IDLGENFLAGS="-bcxx "
253 AC_SUBST(IDL)   
254 AC_SUBST(IDLGENFLAGS)   
255
256 ])dnl
257 dnl