Porting omniORB3

attlogo6876_dk.gif (2280 bytes)

sideHome.gif (2321 bytes) sideDownload.gif (2450 bytes) sideDocumentation.gif (2512 bytes) sideFAQ.gif (2344 bytes) sidePatch.gif (2543 bytes) sideSearch.gif (2403 bytes)

This file provides some pointers to port omniORB3 to a new platform.

It should be straightforward to port omniORB3 to any platform which support POSIX style threads, BSD style sockets and has a decent C++ compiler which supports exceptions and templates. The description below assumes the port is to a unix platform but the information provided is valid for any platforms.

To start a port, you must create a platform configuration file in ./mk/platforms for the new platform. It is better to copy an existing one and modify to suit the new platform. Next, edit the file ./mk/config.mk to set the platform variable to the new platform. Suppose you have created a new file called x_y_z.mk. You should put a line like this in ./mk/config.mk:

platform = x_y_z

The makefiles in the distribution only work with GNUmake. Make sure that you have the program installed.

The libraries and programs in omniORB3 are configured by a number of CPP macros specified as compiler flags and in several header files. The details are as follows:

Platform specific macros

Each platform must be provided with three macros to identify the OS, the CPU and the OS version. For instance, the compiler flags for the supported platforms are:

Solaris 2.5/ Sparc -D__sunos__ -D__sparc__ -D__OSVERSION__=5 -DSVR4
Digital Unix 3.2/ Alpha -D__osf1__ -D__alpha__ -D__OSVERSION__=3
Linux 2.0/ x86 -D__linux__ -D__x86__ -D__OSVERSION__=2

Porting omniidl

omniidl requires Python 1.5.2, which is available from


You can also get the source tarball from


On Unix platforms, omniidl is a shared library which is dynamically loaded by Python. It should be relatively easy to come up with the make rules to build the shared library, based upon the existing platforms.

If you have difficulties building a shared library omniidl, you can build an executable which is statically linked to the Python interpreter. See the make rules for Windows to see how to do that.

You must set the make variable PYTHON to the full path of your Python interpreter.

Porting omnithread library

The file ./include/omnithread.h should be edited to include #if conditionals that can uniquely identify the new platform and to include the appropriate implementation-specific header file.

There are different POSIX threads implementations that conform to different draft versions. The following compiler flags should be used to identify the exact versions:

  • -DPthreadDraftVersion=<x> (e.g. x = 10 for Solaris 2.5)
  • -DPthreadSupportThreadPriority
  • -DNoNanoSleep

Porting omniORB3 library

The file ./include/omniORB3/CORBA_sysdep.h contains #if conditionals that define the size of primitive data types, CPU endian and other platform specific information. You should add to this file the information about the new platform.

Good Luck.


For comments, feedback, etc, please see the 'Keeping in touch' page.
Copyright 2000 - AT&T Laboratories Cambridge