AC_DEFUN([AI_CHECK_ORBITCPP], [ AC_LANG_PUSH(C++) AC_ARG_VAR([IDLCPPFLAGS], [additional -I and -D IDL compiler flags]) AC_ARG_WITH( [orbitcpp-prefix], AS_HELP_STRING(--with-orbitcpp-prefix=DIR,search for orbitcpp in DIR), [ ORBITCPP_PREFIX="${withval}" ], [ ORBITCPP_PREFIX="" ]) AC_ARG_WITH( [orbit2-prefix], AS_HELP_STRING(--with-orbit2-prefix=DIR,search for ORBit-2 in DIR), [ ORBIT2_PREFIX="${withval}" ], [ ORBIT2_PREFIX="" ]) AC_ARG_WITH( [libidl-prefix], AS_HELP_STRING(--with-libidl-prefix=DIR,search for libIDL in DIR), [ LIBIDL_PREFIX="${withval}" ], [ LIBIDL_PREFIX="" ]) findOrbitcpp() { ORBITCPP="no" ORB_DEFINES="" if test "x${ORBITCPP_PREFIX}" != "x" then ORBITCPP_PREFIX=`echo ${ORBITCPP_PREFIX} | sed 's|[[\\/]]$||'` PKG_CONFIG_PATH="${ORBITCPP_PREFIX}/lib/pkgconfig${PATH_SEPARATOR}${PKG_CONFIG_PATH}" fi if test "x${ORBIT2_PREFIX}" != "x" then ORBIT2_PREFIX=`echo ${ORBIT2_PREFIX} | sed 's|[[\\/]]$||'` PKG_CONFIG_PATH="${ORBIT2_PREFIX}/lib/pkgconfig${PATH_SEPARATOR}${PKG_CONFIG_PATH}" fi if test "x${LIBIDL_PREFIX}" != "x" then LIBIDL_PREFIX=`echo ${LIBIDL_PREFIX} | sed 's|[[\\/]]$||'` PKG_CONFIG_PATH="${LIBIDL_PREFIX}/lib/pkgconfig${PATH_SEPARATOR}${PKG_CONFIG_PATH}" fi export PKG_CONFIG_PATH if test "x${PKG_CONFIG}" = "x" then AC_PATH_PROG(PKG_CONFIG, pkg-config, no) fi AC_MSG_NOTICE([checking for orbitcpp...]) if test "x${PKG_CONFIG}" = "xno" then return fi PKG_CONFIG_MIN_VERSION="0.9.0" AC_MSG_CHECKING([whether pkg-config is at least version ${PKG_CONFIG_MIN_VERSION}]) if ${PKG_CONFIG} --atleast-pkgconfig-version=${PKG_CONFIG_MIN_VERSION} then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) return fi if ${PKG_CONFIG} --exists ORBit-2.0-cpp then : else return fi if ${PKG_CONFIG} --exists ORBit-idl-2.0 then : else return fi ORBITCPP_MIN_VERSION="1.3.10" # Older versions don't support the --onlytop IDL compiler flag. AC_MSG_CHECKING([whether orbitcpp is at least version ${ORBITCPP_MIN_VERSION}]) if ${PKG_CONFIG} --atleast-version=${ORBITCPP_MIN_VERSION} ORBit-2.0-cpp then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) return fi ORBITCPP_PKGS="ORBit-2.0-cpp" if ${PKG_CONFIG} --exists ORBit-CosNaming-2.0-cpp then ORBITCPP_PKGS="ORBit-CosNaming-2.0-cpp ${ORBITCPP_PKGS}" AC_DEFINE([HAVE_LIBORBitCosNaming_2_cpp], [1], [Define if orbitcpp's ORBitCosNaming-2-cpp library is detected]) HAVE_LIBORBitCosNaming_2_cpp="yes" else HAVE_LIBORBitCosNaming_2_cpp="no" fi ORBITCPP_PREFIX=`${PKG_CONFIG} --variable=prefix ORBit-2.0-cpp` ORBIT2_PREFIX=`${PKG_CONFIG} --variable=prefix ORBit-2.0` LIBIDL_PREFIX=`${PKG_CONFIG} --variable=prefix libIDL-2.0` ORB_BIN_DIRS="" if test -d "${ORBITCPP_PREFIX}/bin" then ORB_BIN_DIRS="${ORB_BIN_DIRS} ${ORBITCPP_PREFIX}/bin" fi if test "x${ORBIT2_PREFIX}" != "x${ORBITCPP_PREFIX}" then if test ! -d "${ORBIT2_PREFIX}/bin" then return fi ORB_BIN_DIRS="${ORB_BIN_DIRS} ${ORBIT2_PREFIX}/bin" fi if test "x${LIBIDL_PREFIX}" != "x${ORBITCPP_PREFIX}" && test "x${LIBIDL_PREFIX}" != "x${ORBIT2_PREFIX}" && test -d "${LIBIDL_PREFIX}/bin" then ORB_BIN_DIRS="${ORB_BIN_DIRS} ${LIBIDL_PREFIX}/bin" fi if test ! -d "${ORBITCPP_PREFIX}/lib" then return fi ORB_LIB_DIRS="${ORBITCPP_PREFIX}/lib" if test "x${ORBIT2_PREFIX}" != "x${ORBITCPP_PREFIX}" then if test ! -d "${ORBIT2_PREFIX}/lib" then return fi ORB_LIB_DIRS="${ORB_LIB_DIRS} ${ORBIT2_PREFIX}/lib" fi if test ! -d "${ORBITCPP_PREFIX}/include/orbitcpp-2.0" then return fi ORB_INC_DIRS="${ORBITCPP_PREFIX}/include/orbitcpp-2.0" if test ! -d "${ORBIT2_PREFIX}/include/orbit-2.0" then return fi ORB_INC_DIRS="${ORB_INC_DIRS} ${ORBIT2_PREFIX}/include/orbit-2.0" ORB_COSS_IDL_DIRS="${ORBIT2_PREFIX}/share/idl/orbit-2.0" ORB_CFLAGS=`${PKG_CONFIG} --cflags-only-other ${ORBITCPP_PKGS}` ORB_CXXFLAGS=`${PKG_CONFIG} --cflags-only-other ${ORBITCPP_PKGS}` ORB_CPPFLAGS=`${PKG_CONFIG} --cflags-only-I ${ORBITCPP_PKGS}` ORB_LDFLAGS=`${PKG_CONFIG} --libs-only-L ${ORBITCPP_PKGS}` orb_ldflags_other=`${PKG_CONFIG} --libs-only-other ${ORBITCPP_PKGS}` ORB_LDFLAGS="${orb_ldflags_other} ${ORB_LDFLAGS}" ORB_LIBS=`${PKG_CONFIG} --libs-only-l ${ORBITCPP_PKGS}` for idl_lib_dir in `${PKG_CONFIG} --libs-only-L ORBit-idl-2.0` do idl_lib_dir=`echo ${idl_lib_dir} | sed 's/^-L//'` _AI_LIST_CONTAINS([${ORB_LIB_DIRS}], [${idl_lib_dir}], [], [ ORB_LIB_DIRS="${ORB_LIB_DIRS} ${idl_lib_dir}" ]) done _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}" else IDLC="PATH=${ORB_LD_LIBRARY_PATH}${ORB_PATH}" fi else IDLC="PATH=${ORB_PATH}" fi IDLC="${IDLC} ${SHELL} -c 'orbit-idl-2 -l c \"\$\$" IDLC="${IDLC}@\" && orbit-idl-2 -l cpp \"\$\$" IDLC="${IDLC}@\"' orbit-idl-2" _AI_LIST_ADD_PREFIX_AND_SUFFIX([${ORB_COSS_IDL_DIRS}], [-I], [ ], IDLCPPFLAGS) IDLCPPFLAGS="${AI_CHECK_ORBITCPP_save_IDLCPPFLAGS} ${IDLCPPFLAGS}" IDLCXXFLAGS="--onlytop --showcpperrors --idlwarnlevel=4" ORB_VERSION=`${PKG_CONFIG} --modversion ORBit-2.0-cpp` ORBITCPP="yes" AC_DEFINE([HAVE_ORBITCPP], [1], [Define if orbitcpp is used]) ORB_DEFINES="${ORB_DEFINES} -DHAVE_ORBITCPP" ORB_TYPE="orbitcpp" } AC_REQUIRE([AC_PROG_CXX]) AC_REQUIRE([AI_BUILD_SHLIBPATH]) AI_CHECK_ORBITCPP_save_IDLCPPFLAGS="${IDLCPPFLAGS}" save_PKG_CONFIG_PATH="${PKG_CONFIG_PATH}" findOrbitcpp PKG_CONFIG_PATH="${save_PKG_CONFIG_PATH}" export PKG_CONFIG_PATH if test "x${ORBITCPP}" = "xyes" then _AI_ORB_BUILDTEST if test "x${ORB_BUILDTEST}" != "xyes" then ORBITCPP="no" fi fi ORB_DEFINES="" if test "x${ORBITCPP}" = "xyes" then AC_MSG_NOTICE([found orbitcpp ${ORB_VERSION}]) else AC_MSG_NOTICE([orbitcpp not found]) ORB_TYPE="" ORB_VERSION="" IDLC="" IDLCXXFLAGS="" IDLCPPFLAGS="${AI_CHECK_ORBITCPP_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++) ])