AC_DEFUN([AI_CHECK_ORBACUS], [ AC_LANG_PUSH(C++) AC_ARG_VAR([IDLCPPFLAGS], [additional -I and -D IDL compiler flags]) AC_ARG_WITH( [orbacus-prefix], AS_HELP_STRING(--with-orbacus-prefix=DIR,search for ORBacus in DIR), [ ORBACUS_PREFIX="${withval}" ], [ ORBACUS_PREFIX="" ]) checkOrbacusPrefix() { ORBACUS_PREFIX="${1}" ORBACUS_PREFIX=`echo ${ORBACUS_PREFIX} | sed 's|[[\\/]]$||'` if test ! -f "${ORBACUS_PREFIX}/include/OB/CORBA.h" then ORBACUS_PREFIX="" fi } findOrbacus() { ORBACUS="no" ORB_DEFINES="" if test "x${AI_DLOPEN}" = "x" then AI_CHECK_DLOPEN fi if test "x${acx_pthread_ok}" = "x" then ACX_PTHREAD fi if test "x${AI_SOCKET}" = "x" then AI_CHECK_SOCKET fi if test "x${AI_NANOSLEEP}" = "x" then AI_CHECK_NANOSLEEP fi AC_MSG_NOTICE([checking for ORBacus...]) if test "x${acx_pthread_ok}" != "xyes" || test "x${AI_SOCKET}" != "xyes" || test "x${AI_DLOPEN}" != "xyes" || test "x${AI_NANOSLEEP}" != "xyes" then return fi if test "x${ORBACUS_PREFIX}" = "x" then for ORBACUS_PREFIX in "/usr/local" "/usr" "/usr/pkg" "/opt/sfw" "/usr/sfw" "/opt/local" do checkOrbacusPrefix "${ORBACUS_PREFIX}" if test "x${ORBACUS_PREFIX}" != "x" then break fi done else checkOrbacusPrefix "${ORBACUS_PREFIX}" fi if test "x${ORBACUS_PREFIX}" = "x" then return fi if test ! -f "${ORBACUS_PREFIX}/bin/idl" then return fi if test ! -d "${ORBACUS_PREFIX}/include" then return fi ORB_BIN_DIRS="${ORBACUS_PREFIX}/bin" ORB_LIB_DIRS="${ORBACUS_PREFIX}/lib" ORB_INC_DIRS="${ORBACUS_PREFIX}/include" ORB_COSS_IDL_DIRS="${ORBACUS_PREFIX}/idl/OB" ORB_CFLAGS="${PTHREAD_CFLAGS}" ORB_CXXFLAGS="${PTHREAD_CFLAGS}" ORB_LIBS="" EXT_ORB_LIBS="" _AI_LIST_PREPEND_WO_DUPLICATES([${EXT_ORB_LIBS}], [${AI_DLOPEN_LIBS}], EXT_ORB_LIBS) _AI_LIST_PREPEND_WO_DUPLICATES([${EXT_ORB_LIBS}], [${PTHREAD_LIBS}], EXT_ORB_LIBS) _AI_LIST_PREPEND_WO_DUPLICATES([${EXT_ORB_LIBS}], [${AI_SOCKET_LIBS}], EXT_ORB_LIBS) _AI_LIST_PREPEND_WO_DUPLICATES([${EXT_ORB_LIBS}], [${AI_NANOSLEEP_LIBS}], EXT_ORB_LIBS) _AI_LIST_ADD_PREFIX_AND_SUFFIX([${ORB_INC_DIRS}], [-I], [ ], ORB_CPPFLAGS) _AI_LIST_ADD_PREFIX_AND_SUFFIX([${ORB_LIB_DIRS}], [-L], [ ], ORB_LDFLAGS) AI_CHECK_ORBACUS_save_CXXFLAGS="${CXXFLAGS}" AI_CHECK_ORBACUS_save_CPPFLAGS="${CPPFLAGS}" AI_CHECK_ORBACUS_save_LDFLAGS="${LDFLAGS}" AI_CHECK_ORBACUS_save_LIBS="${LIBS}" CXXFLAGS="${CXXFLAGS} ${ORB_CXXFLAGS}" CPPFLAGS="${CPPFLAGS} ${ORB_CPPFLAGS}" LDFLAGS="${LDFLAGS} ${ORB_LDFLAGS}" AC_MSG_CHECKING([for ORBacus' mandatory libraries]) LIBS="-lOB -lJTC ${ORB_LIBS} ${EXT_ORB_LIBS}" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [ #include ], [ int argc; CORBA::ORB_init(argc, 0); ])], [ ORB_LIBS="-lOB -lJTC ${ORB_LIBS}" ], [ AC_MSG_RESULT([no]) CXXFLAGS="${AI_CHECK_ORBACUS_save_CXXFLAGS}" CPPFLAGS="${AI_CHECK_ORBACUS_save_CPPFLAGS}" LDFLAGS="${AI_CHECK_ORBACUS_save_LDFLAGS}" LIBS="${AI_CHECK_ORBACUS_save_LIBS}" return ]) AC_MSG_RESULT([yes]) AC_MSG_CHECKING([for ORBacus' CosEvent library]) LIBS="-lCosEvent ${ORB_LIBS} ${EXT_ORB_LIBS}" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [ #include #include ], [ CORBA::Object_ptr t = CORBA::Object::_nil(); CosEventComm::PushConsumer::_narrow(t); ])], [ ORB_LIBS="-lCosEvent ${ORB_LIBS}" AC_DEFINE([HAVE_LIBCosEvent], [1], [Define if ORBacus' CosEvent library is detected]) HAVE_LIBCosEvent="yes" ], [ HAVE_LIBCosEvent="no" ]) AC_MSG_RESULT([$HAVE_LIBCosEvent]) AC_MSG_CHECKING([for ORBacus' CosProperty library]) LIBS="-lCosProperty ${ORB_LIBS} ${EXT_ORB_LIBS}" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [ #include #include ], [ CORBA::Object_ptr t = CORBA::Object::_nil(); CosPropertyService::PropertySet::_narrow(t); ])], [ ORB_LIBS="-lCosProperty ${ORB_LIBS}" AC_DEFINE([HAVE_LIBCosProperty], [1], [Define if ORBacus' CosProperty library is detected]) HAVE_LIBCosProperty="yes" ], [ HAVE_LIBCosProperty="no" ]) AC_MSG_RESULT([$HAVE_LIBCosProperty]) AC_MSG_CHECKING([for ORBacus' CosNaming library]) LIBS="-lCosNaming ${ORB_LIBS} ${EXT_ORB_LIBS}" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [ #include #include ], [ CORBA::Object_ptr t = CORBA::Object::_nil(); CosNaming::NamingContext::_narrow(t); ])], [ ORB_LIBS="-lCosNaming ${ORB_LIBS}" AC_DEFINE([HAVE_LIBCosNaming], [1], [Define if ORBacus' CosNaming library is detected]) HAVE_LIBCosNaming="yes" ], [ HAVE_LIBCosNaming="no" ]) AC_MSG_RESULT([$HAVE_LIBCosNaming]) AC_MSG_CHECKING([for ORBacus' CosTime library]) LIBS="-lCosTime ${ORB_LIBS} ${EXT_ORB_LIBS}" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [ #include #include ], [ CORBA::Object_ptr t = CORBA::Object::_nil(); CosTime::TimeService::_narrow(t); ])], [ ORB_LIBS="-lCosTime ${ORB_LIBS}" AC_DEFINE([HAVE_LIBCosTime], [1], [Define if ORBacus' CosTime library is detected]) HAVE_LIBCosTime="yes" ], [ HAVE_LIBCosTime="no" ]) AC_MSG_RESULT([$HAVE_LIBCosTime]) ORB_LIBS="${ORB_LIBS} ${EXT_ORB_LIBS}" CXXFLAGS="${AI_CHECK_ORBACUS_save_CXXFLAGS}" CPPFLAGS="${AI_CHECK_ORBACUS_save_CPPFLAGS}" LDFLAGS="${AI_CHECK_ORBACUS_save_LDFLAGS}" LIBS="${AI_CHECK_ORBACUS_save_LIBS}" _AI_LIST_ADD_SUFFIX([${ORB_BIN_DIRS}], [${PATH_SEPARATOR}], ORB_PATH) ORB_PATH="${ORB_PATH}\$\$PATH" if test "x${AI_BUILD_SHLIBPATH_VAR}" != "x" then _AI_LIST_ADD_SUFFIX([${ORB_LIB_DIRS}], [${PATH_SEPARATOR}], ORB_LD_LIBRARY_PATH) if test "x${AI_BUILD_SHLIBPATH_VAR}" != "xPATH" then ORB_LD_LIBRARY_PATH="${ORB_LD_LIBRARY_PATH}\$\$${AI_BUILD_SHLIBPATH_VAR}" IDLC="PATH=${ORB_PATH} ${AI_BUILD_SHLIBPATH_VAR}=${ORB_LD_LIBRARY_PATH} idl" else IDLC="PATH=${ORB_LD_LIBRARY_PATH}${ORB_PATH} idl" fi else IDLC="PATH=${ORB_PATH} idl" fi _AI_LIST_ADD_PREFIX_AND_SUFFIX([${ORB_COSS_IDL_DIRS}], [-I], [ ], IDLCPPFLAGS) IDLCPPFLAGS="${AI_CHECK_ORBACUS_save_IDLCPPFLAGS} ${IDLCPPFLAGS}" IDLCXXFLAGS="--h-suffix .hpp --skel-suffix Server --tie" ORB_VERSION="" if test -f "${ORBACUS_PREFIX}/include/OB/Basic.h" then ORB_VERSION=`grep ' OB_VERSION ' "${ORBACUS_PREFIX}/include/OB/Basic.h" | head -n 1` ORB_VERSION=`echo ${ORB_VERSION} | sed 's/^.*OB_VERSION *"\(.\{1,\}\)".*$/\1/'` fi if test "x${ORB_VERSION}" = "x" then # The double $ is required by make, but not when running the command directly with sh. IDLC_FIXED=`echo ${IDLC} | sed 's/[[$][$]]/$/g'` ORB_VERSION=`${SHELL} -c "${IDLC_FIXED} --version 2>&1 | sed 's/^ORBacus //'"` fi ORBACUS="yes" AC_DEFINE([HAVE_ORBACUS], [1], [Define if ORBacus is used]) ORB_DEFINES="${ORB_DEFINES} -DHAVE_ORBACUS" ORB_TYPE="ORBacus" } AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AI_BUILD_SHLIBPATH]) AI_CHECK_ORBACUS_save_IDLCPPFLAGS="${IDLCPPFLAGS}" findOrbacus if test "x${ORBACUS}" = "xyes" then _AI_ORB_BUILDTEST if test "x${ORB_BUILDTEST}" != "xyes" then ORBACUS="no" fi fi ORB_DEFINES="" if test "x${ORBACUS}" = "xyes" then AC_MSG_NOTICE([found ORBacus ${ORB_VERSION}]) else AC_MSG_NOTICE([ORBacus not found]) ORB_TYPE="" ORB_VERSION="" IDLC="" IDLCXXFLAGS="" IDLCPPFLAGS="${AI_CHECK_ORBACUS_save_IDLCPPFLAGS}" ORB_CFLAGS="" ORB_CXXFLAGS="" ORB_CPPFLAGS="" ORB_LDFLAGS="" ORB_LIBS="" ORB_BIN_DIRS="" ORB_LIB_DIRS="" ORB_INC_DIRS="" ORB_COSS_IDL_DIRS="" fi AC_SUBST([ORB_TYPE]) AC_SUBST([ORB_VERSION]) AC_SUBST([IDLC]) AC_SUBST([IDLCXXFLAGS]) AC_SUBST([IDLCPPFLAGS]) AC_SUBST([ORB_CFLAGS]) AC_SUBST([ORB_CXXFLAGS]) AC_SUBST([ORB_CPPFLAGS]) AC_SUBST([ORB_LDFLAGS]) AC_SUBST([ORB_LIBS]) AC_SUBST([ORB_BIN_DIRS]) AC_SUBST([ORB_LIB_DIRS]) AC_SUBST([ORB_INC_DIRS]) AC_SUBST([ORB_COSS_IDL_DIRS]) AC_LANG_POP(C++) ])