summaryrefslogtreecommitdiff
path: root/recipes/omniorb
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/omniorb')
-rw-r--r--recipes/omniorb/files/arm_double.patch266
-rw-r--r--recipes/omniorb/files/dynskel.patch49
-rw-r--r--recipes/omniorb/files/omniORB-cross.patch31
-rw-r--r--recipes/omniorb/files/omniORB.cfg918
-rw-r--r--recipes/omniorb/files/omniORB_embedded_appl.patch24
-rw-r--r--recipes/omniorb/files/rm_LongDouble.patch14
-rw-r--r--recipes/omniorb/omniorb-native_4.0.7.bb18
-rw-r--r--recipes/omniorb/omniorb_4.0.7.bb38
8 files changed, 1358 insertions, 0 deletions
diff --git a/recipes/omniorb/files/arm_double.patch b/recipes/omniorb/files/arm_double.patch
new file mode 100644
index 0000000000..cfcfd41630
--- /dev/null
+++ b/recipes/omniorb/files/arm_double.patch
@@ -0,0 +1,266 @@
+--- include/omniORB4/CORBA_sysdep.h 30 Dec 2005 17:40:22 -0000 1.2.2.32
++++ include/omniORB4/CORBA_sysdep.h 12 Apr 2006 16:55:41 -0000
+@@ -125,6 +125,15 @@
+ #endif
+
+ //
++// Processor dependencies
++//
++
++#if defined(__arm__)
++# define OMNI_MIXED_ENDIAN_DOUBLE
++#endif
++
++
++//
+ // Macro to provide const_cast functionality on all platforms.
+ //
+ #ifdef HAS_Cplusplus_const_cast
+--- include/omniORB4/cdrStream.h 22 Jul 2005 16:57:17 -0000 1.1.2.23
++++ include/omniORB4/cdrStream.h 12 Apr 2006 16:55:41 -0000
+@@ -428,6 +428,13 @@
+ m.l[1] = Swap32(l.l[0]);
+ l = m;
+ }
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++ {
++ _CORBA_ULong v = l.l[0];
++ l.l[0] = l.l[1];
++ l.l[1] = v;
++ }
++#endif
+ CdrMarshal(s,LongArray2,omni::ALIGN_8,l);
+ }
+
+@@ -440,6 +447,13 @@
+ m.l[1] = Swap32(l.l[0]);
+ l = m;
+ }
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++ {
++ _CORBA_ULong v = l.l[0];
++ l.l[0] = l.l[1];
++ l.l[1] = v;
++ }
++#endif
+ convertToFloat(_CORBA_Double, LongArray2);
+ }
+ #else
+@@ -791,6 +805,19 @@
+ p[i] = l;
+ }
+ }
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++ {
++ struct LongArray2 {
++ _CORBA_ULong l[2];
++ };
++ LongArray2* p=(LongArray2*)a;
++ for( int i = 0; i < length; i++ ) {
++ _CORBA_ULong v = p[i].l[0];
++ p[i].l[0] = p[i].l[1];
++ p[i].l[1] = v;
++ }
++ }
++#endif
+ }
+ #endif
+
+@@ -957,6 +984,13 @@
+ m.l[1] = Swap32(l.l[0]);
+ l = m;
+ }
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++ {
++ _CORBA_ULong v = l.l[0];
++ l.l[0] = l.l[1];
++ l.l[1] = v;
++ }
++#endif
+ CdrMarshal(s,LongArray2,omni::ALIGN_8,l);
+ }
+
+@@ -969,6 +1003,13 @@
+ m.l[1] = Swap32(l.l[0]);
+ l = m;
+ }
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++ {
++ _CORBA_ULong v = l.l[0];
++ l.l[0] = l.l[1];
++ l.l[1] = v;
++ }
++#endif
+ convertToFloat(_CORBA_Double, LongArray2);
+ }
+
+--- include/omniORB4/seqTemplatedecls.h 11 Oct 2005 13:17:01 -0000 1.1.2.10
++++ include/omniORB4/seqTemplatedecls.h 12 Apr 2006 16:55:42 -0000
+@@ -544,43 +544,6 @@
+ };
+
+
+-
+-//////////////////////////////////////////////////////////////////////
+-///////////// _CORBA_Sequence_w_FixSizeElement /////////////
+-//////////////////////////////////////////////////////////////////////
+-template <class T,int elmSize,int elmAlignment>
+-class _CORBA_Sequence_w_FixSizeElement : public _CORBA_Sequence<T> {
+-protected:
+- typedef _CORBA_Sequence_w_FixSizeElement<T,elmSize,elmAlignment> T_seq;
+- typedef _CORBA_Sequence<T> Base_T_seq ;
+-
+-
+- inline _CORBA_Sequence_w_FixSizeElement() {}
+-
+- inline _CORBA_Sequence_w_FixSizeElement(_CORBA_ULong max,
+- _CORBA_Boolean bounded=0) :
+- Base_T_seq(max,bounded) {}
+-
+- inline _CORBA_Sequence_w_FixSizeElement(const T_seq& s) : Base_T_seq(s) {}
+-
+- inline _CORBA_Sequence_w_FixSizeElement(_CORBA_ULong max,
+- _CORBA_ULong len,
+- T *value,
+- _CORBA_Boolean release_ = 0,
+- _CORBA_Boolean bounded = 0
+- ) : Base_T_seq(max,len,value,release_,bounded) {}
+-
+- inline T_seq &operator= (const T_seq &s) {
+- Base_T_seq::operator= (s);
+- return *this;
+- }
+-
+-public:
+- inline void operator>>= (cdrStream &s) const;
+- inline void operator<<= (cdrStream &s);
+-};
+-
+-
+ //////////////////////////////////////////////////////////////////////
+ ///////////// _CORBA_Unbounded_Sequence_w_FixSizeElement /////////////
+ //////////////////////////////////////////////////////////////////////
+@@ -663,6 +626,46 @@
+ };
+
+
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++
++template <int max>
++class _CORBA_Bounded_Sequence_w_FixSizeElement<_CORBA_Double,max,8,8> :
++ public _CORBA_Bounded_Sequence<_CORBA_Double,max> {
++public:
++ typedef _CORBA_Bounded_Sequence_w_FixSizeElement<_CORBA_Double,max,8,8> T_seq;
++ typedef _CORBA_Bounded_Sequence<_CORBA_Double,max> Base_T_seq;
++
++
++ inline _CORBA_Bounded_Sequence_w_FixSizeElement() {}
++ inline _CORBA_Bounded_Sequence_w_FixSizeElement(_CORBA_ULong len,
++ _CORBA_Double *value,
++ _CORBA_Boolean rel = 0) :
++ Base_T_seq(len,value,rel) {}
++
++ inline _CORBA_Bounded_Sequence_w_FixSizeElement(const T_seq& s) :
++ Base_T_seq(s) {}
++
++ inline ~_CORBA_Bounded_Sequence_w_FixSizeElement() {}
++
++ inline T_seq& operator=(const T_seq& s) {
++ Base_T_seq::operator= (s);
++ return *this;
++ }
++
++ // CORBA 2.3 additions
++
++ inline void replace(_CORBA_ULong len, _CORBA_Double* data,_CORBA_Boolean release_ = 0) {
++ Base_T_seq::replace(len,data,release_);
++ }
++
++ inline void operator>>= (cdrStream &s) const;
++ inline void operator<<= (cdrStream &s);
++};
++
++#endif
++
++
++
+ //////////////////////////////////////////////////////////////////////
+ ////////////////// _CORBA_Sequence_Char /////////////////////////////
+ //////////////////////////////////////////////////////////////////////
+--- include/omniORB4/seqTemplatedefns.h 22 May 2003 13:41:39 -0000 1.1.2.11
++++ include/omniORB4/seqTemplatedefns.h 12 Apr 2006 16:55:42 -0000
+@@ -266,6 +266,48 @@
+ }
+
+ //////////////////////////////////////////////////////////////////////
++#ifdef OMNI_MIXED_ENDIAN_DOUBLE
++
++// Template member function specializations to use the base
++// marshalling functions for double, so the doubles are properly
++// word-swapped.
++
++template<>
++inline
++void
++_CORBA_Unbounded_Sequence_w_FixSizeElement<_CORBA_Double,8,8>::operator>>= (cdrStream& s) const
++{
++ Base_T_seq::operator>>=(s);
++}
++
++template<>
++inline
++void
++_CORBA_Unbounded_Sequence_w_FixSizeElement<_CORBA_Double,8,8>::operator<<= (cdrStream& s)
++{
++ Base_T_seq::operator<<=(s);
++}
++
++template<int max>
++inline
++void
++_CORBA_Bounded_Sequence_w_FixSizeElement<_CORBA_Double,max,8,8>::operator>>= (cdrStream& s) const
++{
++ Base_T_seq::operator>>=(s);
++}
++
++template<int max>
++inline
++void
++_CORBA_Bounded_Sequence_w_FixSizeElement<_CORBA_Double,max,8,8>::operator<<= (cdrStream& s)
++{
++ Base_T_seq::operator<<=(s);
++}
++
++#endif
++
++
++//////////////////////////////////////////////////////////////////////
+ inline
+ void
+ _CORBA_Sequence_Char::operator>>= (cdrStream& s) const
+--- src/lib/omniORB/omniidl_be/cxx/skutil.py 27 Jul 2003 19:24:32 -0000 1.17.2.10
++++ src/lib/omniORB/omniidl_be/cxx/skutil.py 12 Apr 2006 16:55:42 -0000
+@@ -197,6 +197,11 @@
+ if array_marshal_helpers.has_key(d_type.type().kind()):
+ (alignment,elmsize) = array_marshal_helpers[d_type.type().kind()]
+ if alignment != "omni::ALIGN_1":
++ is_double = d_type.type().kind() == idltype.tk_double
++ if is_double:
++ to.out("""
++#ifndef OMNI_MIXED_ENDIAN_DOUBLE""")
++
+ to.out("""\
+ if (! @where@.marshal_byte_swap()) {
+ @where@.put_octet_array((CORBA::Octet*)(@slice_cast@@name@),@num@,@align@);
+@@ -207,6 +212,11 @@
+ slice_cast = slice_cast,
+ num = str(n_elements * elmsize),
+ align = alignment)
++
++ if is_double:
++ to.out("""\
++#endif""")
++
+ # Do not return here.
+ # let the code below to deal with the else block.
+ else:
diff --git a/recipes/omniorb/files/dynskel.patch b/recipes/omniorb/files/dynskel.patch
new file mode 100644
index 0000000000..469d3eb45e
--- /dev/null
+++ b/recipes/omniorb/files/dynskel.patch
@@ -0,0 +1,49 @@
+--- src/lib/omniORB/omniidl_be/cxx/dynskel/main.py 27 Nov 2001 14:37:25 -0000 1.14.2.10
++++ src/lib/omniORB/omniidl_be/cxx/dynskel/main.py 15 May 2006 13:36:20 -0000
+@@ -474,15 +474,30 @@
+
+ elementDesc = output.StringStream()
+ prefix = config.state['Private Prefix']
++
+ # djr and jnw's "Super-Hacky Optimisation"
+ # (amended by dpg1 to be even more hacky, since char/wchar now don't work)
+- if isinstance(d_seqType.type(), idltype.Base) and \
+- not d_seqType.variable() and \
+- not d_seqType.type().kind() in [idltype.tk_char, idltype.tk_wchar] and \
+- not is_array:
++ # (amended again to cope with mixed endian doubles)
++
++ is_double = d_seqType.type().kind() == idltype.tk_double
++ is_contiguous = (isinstance(d_seqType.type(), idltype.Base) and
++ not d_seqType.variable() and
++ not d_seqType.type().kind() in [idltype.tk_char,
++ idltype.tk_wchar] and
++ not is_array)
++
++ if is_double:
++ elementDesc.out("""
++#ifndef OMNI_MIXED_ENDIAN_DOUBLE""")
++
++ if is_contiguous:
+ elementDesc.out(template.sequence_elementDesc_contiguous,
+ sequence = sequence_desc)
+- else:
++ if is_double:
++ elementDesc.out("""
++#else""")
++
++ if is_double or not is_contiguous:
+ # <---
+ required_symbols = [ prefix + "_buildDesc" + seqType_cname ]
+ assertDefined(required_symbols)
+@@ -492,6 +507,10 @@
+ thing_cname = seqType_cname,
+ thing = thing)
+
++ if is_double:
++ elementDesc.out("""
++#endif""")
++
+ # <---
+ cname = memberType_cname
+ # this is the #ifdef guard
diff --git a/recipes/omniorb/files/omniORB-cross.patch b/recipes/omniorb/files/omniORB-cross.patch
new file mode 100644
index 0000000000..3206af2b7a
--- /dev/null
+++ b/recipes/omniorb/files/omniORB-cross.patch
@@ -0,0 +1,31 @@
+*** omniORB-4.0.5/mk/beforeauto.mk.in 2004-10-17 20:44:56.000000000 -0400
+--- omniORB-4.0.5.new/mk/beforeauto.mk.in 2005-03-21 12:33:05.756947025 -0500
+***************
+*** 48,59 ****
+ #
+ # Tool bindir to use depends on make target
+ #
+ ifeq ($(MAKECMDGOALS),install)
+ TOOLBINDIR = $(INSTALLBINDIR)
+ else
+ TOOLBINDIR = $(TOP)/$(BINDIR)
+ endif
+!
+
+ #############################################################################
+ #
+--- 48,60 ----
+ #
+ # Tool bindir to use depends on make target
+ #
++ ifndef TOOLBINDIR
+ ifeq ($(MAKECMDGOALS),install)
+ TOOLBINDIR = $(INSTALLBINDIR)
+ else
+ TOOLBINDIR = $(TOP)/$(BINDIR)
+ endif
+! endif
+
+ #############################################################################
+ #
+
diff --git a/recipes/omniorb/files/omniORB.cfg b/recipes/omniorb/files/omniORB.cfg
new file mode 100644
index 0000000000..c1c8c24f95
--- /dev/null
+++ b/recipes/omniorb/files/omniORB.cfg
@@ -0,0 +1,918 @@
+############################################################################
+# omniORB (4.0 or above) configuration file #
+############################################################################
+
+############################################################################
+############################################################################
+############################################################################
+# #
+# ORB wide options #
+# #
+############################################################################
+
+############################################################################
+# Tracing level
+# level 0 - critical errors only
+# level 1 - informational messages only
+# level 2 - configuration information and warnings
+# level 5 - the above plus report server thread creation and
+# communication socket shutdown
+# level 10 - the above plus execution trace messages
+# level 25 - output trace message per send or receive giop message
+# level 30 - dump up to 128 bytes of a giop message
+# level 40 - dump the complete giop message
+#
+# Valid values = (n >= 0)
+#
+
+#traceLevel = 1
+
+############################################################################
+# Trace Exceptions
+# If true, then system exceptions will be logged when they are thrown.
+#
+# Valid values = 0 or 1
+#
+traceExceptions = 0
+
+############################################################################
+# Trace Invocations
+# If true, then each local and remote invocation will generate a trace
+# message.
+#
+# Valid values = 0 or 1
+#
+traceInvocations = 0
+
+############################################################################
+# Trace thread id
+# If true, all trace messages include the thread id of the thread doing
+# the logging.
+#
+# Valid values = 0 or 1
+#
+traceThreadId = 0
+
+############################################################################
+# dumpConfiguration
+# Set to 1 to cause the ORB to dump the current set of configuration
+# parameters.
+#
+# Valid values = 0 or 1
+#
+dumpConfiguration = 0
+
+############################################################################
+# maxGIOPVersion
+#
+# Set the maximum GIOP version the ORB should support. The ORB tries
+# to match the <major>.<minor> version as specified.
+#
+# Valid values = 1.0 | 1.1 | 1.2
+#
+maxGIOPVersion = 1.2
+
+############################################################################
+# giopMaxMsgSize
+#
+# This value defines the ORB-wide limit on the size of GIOP message
+# (excluding the header). If this limit is exceeded, the ORB will
+# refuse to send or receive the message and raise a MARSHAL exception.
+#
+# Valid values = (n >= 8192)
+#
+giopMaxMsgSize = 2097152 # 2 MBytes.
+
+############################################################################
+# strictIIOP flag
+# Enable vigorous check on incoming IIOP messages
+#
+# In some (sloppy) IIOP implementations, the message size value in
+# the header can be larger than the actual body size, i.e. there is
+# garbage at the end. As the spec does not say the message size
+# must match the body size exactly, this is not a clear violation
+# of the spec.
+#
+# If this flag is non-zero, the incoming message is expected to
+# be well-behaved. Any messages that have garbage at the end will
+# be rejected.
+#
+# The default value of this flag is true, so invalid messages are
+# rejected. If you set it to zero, the ORB will silently skip the
+# unread part. The problem with this behaviour is that the header
+# message size may actually be garbage, caused by a bug in the
+# sender's code. The receiving thread may block forever on the
+# strand as it tries to read more data from it. In this case the
+# sender won't send any more as it thinks it has marshalled in all
+# the data.
+#
+# Valid values = 0 or 1
+#
+strictIIOP = 1
+
+############################################################################
+# lcdMode
+#
+# Set to 1 to enable 'Lowest Common Denominator' Mode.
+# This will disable various features of IIOP and GIOP which are
+# poorly supported by some ORBs, and disable warnings/errors when
+# certain types of erroneous message are received on the wire.
+#
+# Valid values = 0 or 1
+#
+lcdMode = 0
+
+############################################################################
+# tcAliasExpand flag
+#
+# This flag is used to indicate whether TypeCodes associated with Anys
+# should have aliases removed. This functionality is included because
+# some ORBs will not recognise an Any containing a TypeCode with
+# aliases to be the same as the actual type contained in the Any. Note
+# that omniORB will always remove top-level aliases, but will not remove
+# aliases from TypeCodes that are members of other TypeCodes (e.g.
+# TypeCodes for members of structs etc.), unless tcAliasExpand is set to 1.
+# There is a performance penalty when inserting into an Any if
+# tcAliasExpand is set to 1. The default value is 0 (i.e. aliases of
+# member TypeCodes are not expanded). Note that aliases won't be expanded
+# when one of the non-type-safe methods of inserting into an Any is
+# used (i.e. when the replace() member function or non - type-safe Any
+# constructor is used. )
+#
+# Valid values = 0 or 1
+#
+tcAliasExpand = 0
+
+############################################################################
+# useTypeCodeIndirections
+#
+# If true (the default), typecode indirections will be used. Set
+# this to false to disable that. Setting this to false might be
+# useful to interoperate with another ORB implementation that cannot
+# handle indirections properly.
+#
+# Valid values = 0 or 1
+useTypeCodeIndirections = 1
+
+############################################################################
+# acceptMisalignedTcIndirections
+#
+# If true, try to fix a mis-aligned indirection in a typecode. This
+# is used to work around a bug in some versions of Visibroker's Java
+# ORB.
+#
+# Valid values = 0 or 1
+acceptMisalignedTcIndirections = 0
+
+############################################################################
+# scanGranularity
+#
+# The granularity at which the ORB scans for idle connections.
+# This value determines the minimum value that inConScanPeriod or
+# outConScanPeriod can be.
+#
+# Valid values = (n >= 0 in seconds)
+# 0 --> do not scan for idle connections.
+#
+scanGranularity = 5
+
+############################################################################
+# nativeCharCodeSet
+#
+# set the native code set for char and string
+#
+nativeCharCodeSet = ISO-8859-1
+
+############################################################################
+# nativeWCharCodeSet
+#
+# set the native code set for wchar and wstring
+#
+nativeWCharCodeSet = UTF-16
+
+############################################################################
+# omniORB_27_CompatibleAnyExtraction
+#
+# In omniORB pre-2.8.0 versions, the CORBA::Any extraction operator for
+# 1. unbounded string operator>>=(char*&)
+# 2. bounded string operator>>=(to_string)
+# 3. object reference operator>>=(A_ptr&) for interface A
+# Return a copy of the value. The caller must free the returned
+# value later.
+#
+# With 2.8.0 and later, the semantics becomes non-copy, i.e. the Any
+# still own the storage of the returned value.
+# This would cause a problem in a program that is written to use the
+# pre-2.8.0 semantics. To make it easier for the transition,
+# set omniORB_27_CompatibleAnyExtraction to 1.
+# This would revert the semantics to the pre-2.8.0 versions.
+#
+# Valid values = 0 or 1
+#
+omniORB_27_CompatibleAnyExtraction = 0
+
+############################################################################
+# abortOnInternalError
+#
+# If the value of this variable is TRUE then the ORB will abort
+# instead of throwing an exception when a fatal internal error is
+# detected. This is useful for debuging the ORB -- as the stack will
+# not be unwound by the exception handler, so a stack trace can be
+# obtained.
+# It is hoped that this will not often be needed by users of omniORB!
+#
+# Valid values = 0 or 1
+#
+abortOnInternalError = 0
+
+############################################################################
+# abortOnNativeException
+#
+# On Windows, "native" exceptions such as segmentation faults and
+# divide by zero appear as C++ exceptions that can be caught with
+# catch (...). Setting this parameter to TRUE causes such exceptions
+# to abort the process instead.
+#
+# This parameter has no effect on other platforms.
+#
+# Valid values = 0 or 1
+#
+abortOnNativeException = 0
+
+############################################################################
+# maxSocketSend
+# maxSocketRecv
+#
+# On some platforms, calls to send() and recv() have a limit on the
+# buffer size that can be used. These parameters set the limits in
+# bytes that omniORB uses when sending / receiving bulk data.
+#
+# The default values are platform specific. It is unlikely that you
+# will need to change the values from the defaults.
+#
+# The minimum valid limit is 8KB, 8192 bytes.
+#
+# e.g. to limit to 64KB sends / receives:
+#
+# maxSocketSend = 65536
+# maxSocketRecv = 65536
+
+############################################################################
+# sslCAFile
+# sslKeyFile
+# sslKeyPassword
+# sslVerifyMode
+#
+# SSL transport options
+#
+# sslCAFile specifies the file containing the SSL Certificate
+# Authority certificate.
+#
+# sslKeyFile specifies the file containing the SSL key.
+#
+# sslKeyPassword specifies the password to unlock the key.
+#
+# sslVerifyMode specifies the verify mode, as given to
+# SSL_CTX_set_verify. Valid values are "none", representing
+# SSL_VERIFY_NONE, and "peer", representing SSL_VERIFY_PEER. If peer
+# is selected, additional options "fail" and "once" can also be
+# specified, corresponding to SSL_VERIFY_FAIL_IF_NO_PEER_CERT and
+# SSL_VERIFY_CLIENT_ONCE respectively. e.g.
+#
+# sslVerifyMode = peer,fail
+#
+# These options are only available if the SSL transport is linked.
+
+
+############################################################################
+############################################################################
+############################################################################
+# #
+# Client Side Options #
+# #
+############################################################################
+
+############################################################################
+# InitRef
+#
+# Specify the objects the ORB should return in response to calls to
+# resolve_initial_references.
+#
+# There can be more than one configuration line defining InitRef.
+# Each line adds one initial reference to the ORB.
+#
+# Here are some valid examples:
+#
+# Specify the root context of the Naming Service. (Notice the end of line
+# continuation marker '\'
+#
+# InitRef = NameService=IOR:010000002800000049444c3a6f6d672e6f72672f436f734\
+#e616d696e672f4e616d696e67436f6e746578743a312e300001000000000000002c000000010\
+#102000c0000003139322e3136382e312e3000f90a00000c000000349568c45cb1e6780000000\
+#100000000
+#
+# Alternatively, and more cleanly, specify the Naming service with a
+# corbaname URI:
+#
+InitRef = NameService=corbaname::localhost
+#
+#
+# Specify the Trading service and the interface repository using corbaloc:
+#
+# InitRef = TradingService=corbaloc:iiop:marrow:5009/MyObjectKey
+# = InterfaceRepository=corbaloc::1.2@marrow:5009/Intf
+#
+# The default for the set of initial references is empty.
+
+############################################################################
+# DefaultInitRef
+#
+# DefaultInitRef provides a prefix string which is used to resolve
+# otherwise unknown names. When resolve_initial_references() is unable to
+# resolve a name which has been specifically configured (with InitRef),
+# it constructs a string consisting of the default prefix, a `/' character,
+# and the name requested. The string is then fed to string_to_object().
+# For example, if DefaultInitRef is set up like this:
+# DefaultInitRef = corbaloc::myhost.example.com
+# A call to resolve_initial_references("MyService") will return the object
+# reference denoted by `corbaloc::myhost.example.com/MyService'.
+#
+# The default is empty.
+
+
+############################################################################
+# clientTransportRule
+#
+# When the client receives an IOR that defines 1 or more ways to contact
+# the server, the rules in clientTransportRule filter and prioritise
+# the order in which the transports are used.
+#
+# There can be more than one configuration line of this type.
+# Each line adds one rule to the selection process. The rules are applied
+# in the order they are defined. The relative positions of the rules define
+# the relative priority. The first rule has the highest priority.
+#
+# The syntax of a rule is as follows:
+# clientTransportRule = [^]<address mask> [action]+
+#
+# <address mask> can be:
+# 1. localhost the address is this machine
+# 2. w.x.y.z/m1.m2.m3.m4 IPv4 address with the bits selected by
+# the mask. e.g. 172.16.0.0/255.240.0.0
+# 3. * the wildcard that matches any address
+#
+# <action>+ can be one or more of the following:
+# 1. none Do not use this address
+# 2. tcp,ssl,unix Use the 3 transports in the specified order
+# if any or all of them are available
+# 3. bidir Any connection to this address should be
+# used bidirectionally.
+#
+# The optional prefix ^ before <address mask>, if present, causes
+# the ORB to remove previously declared clientTransportRules from
+# its internal store before adding the current rule.
+#
+# By default, no rule is defined. The ORB implicitly uses the following
+# rule:
+# clientTransportRule = * unix,tcp,ssl
+# If any rule is specified, no implicit rule will be applied.
+#
+# Given an IOR, for each of the addresses within it, the ORB matches the
+# address to the rules. If one is found, the position of the matched rule
+# and the action is noted. If the action is none, the address is discarded.
+# If the action does not contain the transport the address is specified for,
+# e.g. the action is "ssl" but the address is "tcp", the address is
+# discarded. Otherwise, the address and action is entered as one of the
+# candidates to use. Having gone through all the addresses, the candidiates
+# available are then ordered based on the priority of the matching rules and
+# used accordingly.
+#
+# Here are some example usages:
+#
+# A) Restrict to only contacting server on the same host:
+# clientTransportRule = localhost unix,tcp
+# = * none
+# B) Use tcp to contact servers in the intranet and must use bidirectional
+# ssl otherwise.
+# clientTransportRule = 172.16.0.0/255.240.0.0 unix,tcp
+# = * bidir,ssl
+# C) When a fast network (192.168.1.0) exists in the cluster, use it in
+# preference to the external network.
+# clientTransportRule = 192.168.1.0/255.255.255.0 unix,tcp
+# clientTransportRule = 172.16.0.0/255.240.0.0 unix,tcp
+# = * none
+#
+#
+
+############################################################################
+# clientCallTimeOutPeriod
+#
+# Call timeout. On the client side, if a remote call takes longer
+# than the timeout value, the ORB will shutdown the connection and
+# raise a COMM_FAILURE.
+#
+# Valid values = (n >= 0 in milliseconds)
+# 0 --> no timeout. Block till a reply comes back
+#
+clientCallTimeOutPeriod = 0
+
+############################################################################
+# supportPerThreadTimeOut
+#
+# If true, each client thread may have its own timeout. This adds
+# some overhead to each call, so it is off by default.
+#
+# Valid values = 0 or 1
+#
+supportPerThreadTimeOut = 0
+
+############################################################################
+# outConScanPeriod
+#
+# Idle connections shutdown. The ORB periodically scans all the
+# outgoing connections to detect if they are idle.
+# If no operation has passed through a connection for a scan period,
+# the ORB would treat this connection idle and shut it down.
+#
+# Valid values = (n >= 0 in seconds)
+# 0 --> do not close idle connections.
+#
+outConScanPeriod = 120
+
+############################################################################
+# maxGIOPConnectionPerServer
+#
+# The ORB could open more than one connection to a server
+# depending on the number of concurrent invocations to the same
+# server. This variable decides the maximum number of connections
+# to use per server. This variable is read only once at ORB_init.
+# If the number of concurrent invocations exceeds this number, the
+# extra invocations are blocked until the the outstanding ones
+# return.
+#
+# Valid values = (n >= 1)
+#
+maxGIOPConnectionPerServer = 5
+
+############################################################################
+# oneCallPerConnection
+#
+# 1 means only one call can be in progress at any time per connection.
+#
+# Valid values = 0 or 1
+#
+oneCallPerConnection = 1
+
+############################################################################
+# offerBiDirectionalGIOP
+#
+# Applies to the client side. Set to 1 to indicate that the
+# ORB may choose to use a connection to do bidirectional GIOP
+# calls. Set to 0 means the ORB should never do bidirectional.
+#
+# Valid values = 0 or 1
+#
+offerBiDirectionalGIOP = 0
+
+############################################################################
+# diiThrowsSysExceptions
+#
+# If the value of this variable is 1 then the Dynamic Invocation Interface
+# functions (Request::invoke, send_oneway, send_deferred, get_response,
+# poll_response) will throw system exceptions as appropriate. Otherwise
+# the exception will be stored in the Environment pseudo object associated
+# with the Request. By default system exceptions are passed through the
+# Environment object.
+#
+# Valid values = 0 or 1
+#
+diiThrowsSysExceptions = 0
+
+############################################################################
+# verifyObjectExistsAndType
+#
+# If the value of this variable is 0 then the ORB will not
+# send a GIOP LOCATE_REQUEST message to verify the existence of
+# the object prior to the first invocation. Set this variable
+# if the other end is a buggy ORB that cannot handle GIOP
+# LOCATE_REQUEST.
+#
+# Valid values = 0 or 1
+#
+verifyObjectExistsAndType = 1
+
+############################################################################
+# giopTargetAddressMode
+#
+# On the client side, if it is to use GIOP 1.2 or above to talk to a
+# server, use this Target Address Mode.
+#
+# Valid values = 0 (GIOP::KeyAddr)
+# 1 (GIOP::ProfileAddr)
+# 2 (GIOP::ReferenceAddr)
+#
+giopTargetAddressMode = 0
+
+############################################################################
+# bootstrapAgentHostname
+#
+# Applies to the client side. Non-zero enables the use of Sun's bootstrap
+# agent protocol to resolve initial references. The value is the host name
+# where requests for initial references should be sent. Only use this
+# option to interoperate with Sun's javaIDL.
+#
+#bootstrapAgentHostname = localhost
+
+############################################################################
+# bootstrapAgentPort
+#
+# Applies to the client side. Use this port no. to contact the bootstrap
+# agent.
+#
+bootstrapAgentPort = 900
+
+############################################################################
+# principal
+#
+# The value of the principal field in GIOP 1.0 and 1.1 requests
+#
+# principal = me
+
+
+
+############################################################################
+############################################################################
+############################################################################
+# #
+# Server Side Options #
+# #
+############################################################################
+
+
+############################################################################
+# endPoint
+# endPointNoPublish
+# endPointNoListen
+# endPointPublishAllIFs
+#
+# There are 3 possible way to specify the endpoints a server should create.
+# The 3 forms differ in the following ways:
+# endPoint - create, listen on the connection and publish it in IORs
+# endPointNoPublish - same as endPoint but do not publish it in IORs
+# endPointNoListen - only publish it in IORs
+#
+# There can be more than one configuration line defining endPoints.
+# Each line adds one endpoint to the server.
+#
+# Each configuration line can start with the keyword 'endPoint', e.g.
+# endPoint = giop:tcp:neem:12345
+# endPoint = giop:ssl:neem:23456
+#
+# Or a short hand form can be used, like this:
+#
+# endPoint = giop:tcp:neem:12345
+# = giop:ssl:neem:23456
+#
+# The value of an endPoint configuration is a transport specific string.
+# The transport strings recongised by the ORB and its supported transports
+# are:
+# 1. giop:tcp:[<host>]:[<port>]
+# The <host> and <port> parameter are optional. If either or
+# both are missing, the ORB fills in the blank. For example,
+# "giop:tcp::" will cause the ORB to pick an arbitrary tcp port
+# as the endpoint and it will pick one IP address of the host
+# as the host name.
+#
+# 2. giop:ssl:[<host>]:[<port>]
+# Similar to the tcp transport except that SSL is run on top
+# of the tcp connection.
+#
+# 3. giop:unix:[<filename>]
+# Create a unix domain socket and bind to the file with pathname
+# <filename>. If <filename> is not specified, e.g. "giop:unix:",
+# the ORB would pick a file name based on the process ID and
+# the current timestamp.
+# Therefore, if one wants to write an application that always
+# restarts to use the same file to bind to its unix domain
+# socket, a filename should be specified in the transport string.
+#
+# It is possible to use the ORB's transport extension framework to add
+# a new transport to the ORB. In that case, the transport must define its
+# own transport string format and must obey the colon separation rule.
+# For example, if one is to create a transport which executes an arbitrary
+# shell script and let the ORB use its stdin and stdout for sending and
+# receiving giop messages, a transport string could look like this:
+# giop:shell:magic_gw
+# ^ ^
+# | +--------- transport specific part
+# +--------------- transport name
+#
+# By default, no endPoint configuration is defined. In this case the ORB
+# will create just 1 tcp endpoint as if the line:
+# endPoint = giop:tcp::
+# is specified in the configuration file
+#
+# Other than tcp, none of the transports are guaranteed to be available
+# on all platforms. If one specifies say:
+# endPoint = giop:ssl::
+# and the ORB cannot initialise an ssl endpoint, the INITIALIZE exception
+# will be raised. Even though ssl is supported on a platform, its transport
+# is implemented as a separate shared library and must be linked with the
+# application for the ORB to initialise the endpoint.
+#
+# Here are some examples of valid endPoint configurations:
+#
+# endPoint = giop:tcp::
+# endPoint = giop:unix:
+# = giop:ssl::
+#
+# endPointNoPublish = giop:tcp::
+# = giop:unix:
+# = giop:ssl::
+#
+# endPointNoListen = giop:tcp:192.168.1.1:12345
+#
+#
+# If the endPointPublishAllIFs boolean parameter is set to true, all
+# non-loopback IP network interfaces are published in IORs, rather
+# than just the first one.
+
+
+############################################################################
+# serverTransportRule
+#
+# When the server sees a connection request from a client, it looks at the
+# client's address and uses the rules in serverTransportRule to determine
+# if the connection should be accepted.
+#
+# There can be more than one configuration line of this type.
+# Each line adds one rule to the selection process. The rules are applied
+# in the order they are defined until one matching rule is found.
+#
+# The syntax of a rule is as follows:
+# serverTransportRule = [^]<address mask> [action]+
+#
+# <address mask> can be:
+# 1. localhost if the address is this machine
+# 2. w.x.y.z/m1.m2.m3.m4 IPv4 address with the bits selected by
+# the mask. e.g. 172.16.0.0/255.240.0.0
+# 3. * the wildcard that matches any address
+#
+# <action>+ can be one or more of the following:
+# 1. none Do not accept this connection.
+# 2. tcp,ssl,unix Accept if the transport is any of the
+# 3 specified.
+# 3. bidir Allow bidirectional requests if the
+# client requests it.
+#
+# The optional prefix ^ before <address mask>, if present, causes
+# the ORB to remove previously declared clientTransportRules from
+# its internal store before adding the current rule.
+#
+# By default, no rule is defined. The ORB implicitly uses the following
+# rule:
+# serverTransportRule = * unix,tcp,ssl
+# If any rule is specified, the implicit rule will not be applied.
+#
+# Here are some example usages:
+#
+# A) Only accept connections from our intranet
+# serverTransportRule = localhost unix,tcp,ssl
+# = 172.16.0.0/255.240.0.0 tcp,ssl
+# = * none
+#
+# B) Only accept ssl connections if the client is not on our intranet
+# serverTransportRule = localhost unix,tcp,ssl
+# = 172.16.0.0/255.240.0.0 tcp,ssl
+# = * bidir,ssl
+
+
+############################################################################
+# serverCallTimeOutPeriod
+#
+# Call timeout. On the server side, if the ORB cannot completely
+# unmarshal a call's arguments in the defined timeout, it shutdown the
+# connection.
+#
+# Valid values = (n >= 0 in milliseconds)
+# 0 --> no timeout.
+#
+serverCallTimeOutPeriod = 0
+
+############################################################################
+# inConScanPeriod
+#
+# Idle connections shutdown. The ORB periodically scans all the
+# incoming connections to detect if they are idle.
+# If no operation has passed through a connection for a scan period,
+# the ORB would treat this connection idle and shut it down.
+#
+# Valid values = (n >= 0 in seconds)
+# 0 --> do not close idle connections.
+#
+inConScanPeriod = 180
+
+############################################################################
+# threadPerConnectionPolicy
+#
+# 1 means the ORB should dedicate one thread per connection on the
+# server side. 0 means the ORB should dispatch a thread from a pool
+# to a connection only when a request has arrived.
+#
+# Valid values = 0 or 1
+#
+threadPerConnectionPolicy = 1
+
+############################################################################
+# maxServerThreadPerConnection
+#
+# The max. no. of threads the server will dispatch to serve the
+# requests coming from one connection.
+#
+# Valid values = (n >= 1)
+#
+maxServerThreadPerConnection = 100
+
+############################################################################
+# maxServerThreadPoolSize
+# The max. no. of threads the server will allocate to do various
+# ORB tasks. This number does not include the dedicated thread
+# per connection when the threadPerConnectionPolicy is in effect
+#
+# Valid values = (n >= 1)
+#
+maxServerThreadPoolSize = 100
+
+############################################################################
+# threadPerConnectionUpperLimit
+#
+# If the one thread per connection is in effect, this number is
+# the max. no. of connections the server will allow before it
+# switch off the one thread per connection policy and move to
+# the thread pool policy.
+#
+# Valid values = (n >= 1)
+#
+threadPerConnectionUpperLimit = 10000
+
+############################################################################
+# threadPerConnectionLowerLimit
+#
+# If the one thread per connection was in effect and was switched
+# off because threadPerConnectionUpperLimit has been exceeded
+# previously, this number tells when the policy should be restored
+# when the number of connections drop.
+#
+# Valid values = (n >= 1 && n < threadPerConnectionUpperLimit)
+#
+threadPerConnectionLowerLimit = 9000
+
+############################################################################
+# threadPoolWatchConnection
+#
+# After dispatching an upcall in thread pool mode, the thread that
+# has just performed the call can watch the connection for a short
+# time before returning to the pool. This leads to less thread
+# switching for a series of calls from a single client, but is less
+# fair if there are concurrent clients. The connection is watched
+# if the number of threads concurrently handling the connection is
+# <= the value of this parameter. i.e. if the parameter is zero,
+# the connection is never watched; if it is 1, the last thread
+# managing a connection watches it; if 2, the connection is still
+# watched if there is one other thread still in an upcall for the
+# connection, and so on.
+
+threadPoolWatchConnection = 1
+
+############################################################################
+# connectionWatchPeriod
+#
+# For each endpoint, the ORB allocates a thread to watch for new
+# connections and to monitor existing connections for calls that
+# should be handed by the thread pool. The thread blocks in select()
+# or similar for a period, after which it re-scans the lists of
+# connections it should watch. This parameter is specified in
+# microseconds.
+#
+# Valid values = (n >= 0 in microseconds)
+#
+connectionWatchPeriod = 50000
+
+############################################################################
+# connectionWatchImmediate
+#
+# When a thread handles an incoming call, it unmarshals the
+# arguments then marks the connection as watchable by the connection
+# watching thread, in case the client sends a concurrent call on the
+# same connection. If this parameter is set to the default false,
+# the connection is not actually watched until the next connection
+# watch period (determined by the connectionWatchPeriod parameter).
+# If connectionWatchImmediate is set true, the connection watching
+# thread is immediately signalled to watch the connection. That
+# leads to faster interactive response to clients that multiplex
+# calls, but adds significant overhead along the call chain.
+#
+# Note that this setting has no effect on Windows, since it has no
+# mechanism for signalling the connection watching thread.
+#
+# Valid values = 0 or 1
+#
+connectionWatchImmediate = 0
+
+############################################################################
+# acceptBiDirectionalGIOP
+#
+# Applies to the server side. Set to 1 to indicate that the
+# ORB may choose to accept a client's offer to use bidirectional
+# GIOP calls on a connection. Set to 0 means the ORB should
+# never accept any bidirectional offer and should stick to normal
+# GIOP.
+#
+# Valid values = 0 or 1
+#
+acceptBiDirectionalGIOP = 0
+
+############################################################################
+# unixTransportDirectory
+#
+# Applies to the server side. Determine the directory in which
+# the unix domain socket is to be created.
+#
+# Valid values = a valid pathname for a directory
+#
+unixTransportDirectory = /tmp/omni-%u
+# %u is expanded into user name.
+
+############################################################################
+# unixTransportPermission
+#
+# Applies to the server side. Determine the permission mode bits
+# the unix domain socket is set to.
+#
+# Valid values = unix permission mode bits in octal radix (e.g. 0755)
+#
+unixTransportPermission = 0777
+
+############################################################################
+# supportCurrent
+#
+# If the value of this variable is TRUE, per-thread information is
+# made available through the Current interfaces, e.g.
+# PortableServer::Current. If you do not need this information, you
+# can set the value to 0, resulting in a small performance
+# improvement.
+#
+supportCurrent = 1
+
+############################################################################
+# objectTableSize
+#
+# Hash table size of the Active Object Map. If this is zero, the ORB
+# uses a dynamically resized open hash table. This is normally the
+# best option, but it leads to less predictable performance since
+# any operation which adds or removes a table entry may trigger a
+# resize. If you set this to a non-zero value, the hash table has
+# the specified number of entries, and is never resized. Note that
+# the hash table is open, so this does not limit the number of
+# active objects, just how efficiently they can be located.
+#
+# Valid values = (n >= 0)
+# 0 --> use a dynamically resized table.
+#
+objectTableSize = 0
+
+############################################################################
+# poaHoldRequestTimeout
+#
+# This variable can be used to set a time-out for calls being held
+# in a POA which is in the HOLDING state. It gives the time in
+# milliseconds after which a TRANSIENT exception will be thrown if the
+# POA is not transitioned to a different state.
+#
+# Valid values = (n >= 0 in milliseconds)
+# 0 --> no time-out.
+#
+poaHoldRequestTimeout = 0
+
+############################################################################
+# poaUniquePersistentSystemIds
+#
+# The POA specification requires that object ids in POAs with the
+# PERSISTENT and SYSTEM_ID policies are unique between
+# instantiations of the POA. Older versions of omniORB did not
+# comply with that, and reused object ids. With this value true, the
+# POA has the correct behaviour; with false, the POA uses the old
+# scheme for compatibility.
+#
+# Valid values = 0 or 1
+#
+poaUniquePersistentSystemIds = 1
+
+############################################################################
+# supportBootstrapAgent
+#
+# Applies to the server side. 1 means enable the support for Sun's
+# bootstrap agent protocol. This enables interoperability between omniORB
+# servers and Sun's javaIDL clients. When this option is enabled, an
+# omniORB server will respond to a bootstrap agent request.
+supportBootstrapAgent = 0
diff --git a/recipes/omniorb/files/omniORB_embedded_appl.patch b/recipes/omniorb/files/omniORB_embedded_appl.patch
new file mode 100644
index 0000000000..43afc58bf2
--- /dev/null
+++ b/recipes/omniorb/files/omniORB_embedded_appl.patch
@@ -0,0 +1,24 @@
+*** omniORB-4.0.5/src/dir.mk 2002-02-18 06:58:54.000000000 -0500
+--- omniORB-4.0.5.new/src/dir.mk 2005-03-23 09:11:04.585121450 -0500
+***************
+*** 12,20 ****
+
+ SUBDIRS += lib
+
+! ifndef EmbeddedSystem
+ SUBDIRS += appl services
+! endif
+
+ all::
+ @echo
+--- 12,20 ----
+
+ SUBDIRS += lib
+
+! #ifndef EmbeddedSystem
+ SUBDIRS += appl services
+! #endif
+
+ all::
+ @echo
+
diff --git a/recipes/omniorb/files/rm_LongDouble.patch b/recipes/omniorb/files/rm_LongDouble.patch
new file mode 100644
index 0000000000..20556ddcf1
--- /dev/null
+++ b/recipes/omniorb/files/rm_LongDouble.patch
@@ -0,0 +1,14 @@
+*** omniORB-4.0.7/idl/corbaidl.idl.orig 2006-10-13 09:21:35.000000000 -0400
+--- omniORB-4.0.7/idl/corbaidl.idl 2006-10-13 09:22:38.000000000 -0400
+***************
+*** 48,56 ****
+ #endif
+ typedef sequence<float> FloatSeq;
+ typedef sequence<double> DoubleSeq;
+- #ifdef HAS_LongDouble
+- typedef sequence<long double> LongDoubleSeq;
+- #endif
+ typedef sequence<string> StringSeq;
+ typedef sequence<wstring> WStringSeq;
+
+--- 48,53 ----
diff --git a/recipes/omniorb/omniorb-native_4.0.7.bb b/recipes/omniorb/omniorb-native_4.0.7.bb
new file mode 100644
index 0000000000..1df6236aea
--- /dev/null
+++ b/recipes/omniorb/omniorb-native_4.0.7.bb
@@ -0,0 +1,18 @@
+SECTION = "devel"
+DEPENDS += "python-native"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/omniorb/omniORB-${PV}.tar.gz"
+
+S = "${WORKDIR}/omniORB-${PV}"
+
+inherit native autotools
+
+do_compile () {
+ oe_runmake
+}
+# Ugly hack so libtool does not find native libs when building cross packages
+# We really only build this package for omniidl anyway
+do_stage_append() {
+ rm -f ${STAGING_LIBDIR_NATIVE}/libomni*
+}
diff --git a/recipes/omniorb/omniorb_4.0.7.bb b/recipes/omniorb/omniorb_4.0.7.bb
new file mode 100644
index 0000000000..89e98e3534
--- /dev/null
+++ b/recipes/omniorb/omniorb_4.0.7.bb
@@ -0,0 +1,38 @@
+DESCRIPTION = "OmniORB High Performance ORB"
+SECTION = "devel"
+PRIORITY = "optional"
+LICENSE = "LGPL"
+DEPENDS = "omniorb-native"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/omniorb/omniORB-${PV}.tar.gz \
+file://omniORB.cfg \
+file://omniORB-cross.patch;patch=1 \
+file://omniORB_embedded_appl.patch;patch=1 \
+file://rm_LongDouble.patch;patch=1 \
+file://arm_double.patch;patch=1;pnum=0 \
+file://dynskel.patch;patch=1;pnum=0 \
+"
+
+S = "${WORKDIR}/omniORB-${PV}"
+
+FILES_${PN}-dev += "${datadir}/idl/omniORB/* ${datadir}/idl/omniORB/cos/*
+
+inherit autotools pkgconfig
+
+do_compile () {
+ export EmbeddedSystem=1
+ export TOOLBINDIR=${STAGING_BINDIR_NATIVE}
+ oe_runmake
+}
+do_install () {
+ export EmbeddedSystem=1
+ make DESTDIR=${D} install
+ install -d ${D}${sysconfdir}
+ install -m 0644 ${WORKDIR}/omniORB.cfg ${D}${sysconfdir}
+ install -d ${D}${localstatedir}/omninames
+}
+do_stage () {
+ export EmbeddedSystem=1
+ autotools_stage_all
+}