diff -u --recursive --new-file omni.orig/config/config.mk omni/config/config.mk
--- omni.orig/config/config.mk	Mon Jun 18 18:43:01 2001
+++ omni/config/config.mk	Mon Dec 10 14:15:01 2001
@@ -40,6 +40,7 @@
 #  x86_uw7                   SCO UnixWare 7 (7.1.0)
 #  x86_freebsd_3.2           x86 FreeBSD 3.2, egcs 1.1.2
 #  x86_freebsd_4.0           x86 FreeBSD 4.0, gcc 2.95
+#  x86_openbsd_3.0           x86 OpenBSD 3.0, gcc 2.95.3
 #  pc486_rtems_4.5.0         x86, RTEMS, gcc 2.95.2
 
 # You should also look at <top>/mk/platforms/$(platform).mk and if necessary
@@ -80,6 +81,7 @@
 #platform = x86_uw7
 #platform = x86_freebsd_3.2
 #platform = x86_freebsd_4.0
+#platform = x86_openbsd_3.0
 #platform = pc486_rtems_4.5.0
 
 # On Win32 platforms, uncomment the following line to build all the binaries
diff -u --recursive --new-file omni.orig/include/omnithread.h omni/include/omnithread.h
--- omni.orig/include/omnithread.h	Mon Jun 18 18:43:01 2001
+++ omni/include/omnithread.h	Mon Dec 10 14:16:34 2001
@@ -150,6 +150,9 @@
 #elif defined(__freebsd__)
 #include <omnithread/posix.h>
 
+#elif defined(__openbsd__)
+#include <omnithread/posix.h>
+
 #elif defined(__rtems__)
 #include <omnithread/posix.h>
 #include <sched.h>
diff -u --recursive --new-file omni.orig/mk/platforms/x86_openbsd_3.0.mk omni/mk/platforms/x86_openbsd_3.0.mk
--- omni.orig/mk/platforms/x86_openbsd_3.0.mk	Thu Jan  1 01:00:00 1970
+++ omni/mk/platforms/x86_openbsd_3.0.mk	Mon Dec 10 14:15:22 2001
@@ -0,0 +1,99 @@
+# x86_openbsd.3.0.mk - make variables and rules specific to OpenBSD 3.0
+# started: 1999/06/12 afo
+# [Last modified: 1999/06/13 12:42:06 by afo@xxo.zlug.org]
+# [Last modified: 2001/12/10 by arrigo@albourne.com]
+
+OpenBSD = 1
+x86Processor = 1
+
+#
+# Python set-up
+#
+# You must set a path to a Python 1.5.2 interpreter.
+
+PYTHON = /usr/local/bin/python
+
+
+#
+# Include general unix things
+#
+
+include $(THIS_IMPORT_TREE)/mk/unix.mk
+
+
+#
+# Standard programs
+#
+
+AR = ar cq
+
+CPP = /usr/libexec/cpp
+
+CXX = g++
+CXXMAKEDEPEND += -D__cplusplus -D__GNUG__ -D__GNUC__
+CXXDEBUGFLAGS = -O2
+
+CXXLINK		= $(CXX) -pthread -s
+CXXLINKOPTIONS  = $(CXXDEBUGFLAGS) $(CXXOPTIONS)
+
+CXXOPTIONS      = -Wall -Wno-unused
+EgcsMajorVersion = 1
+EgcsMinorVersion = 1        # This is actually a post-1.0 egcs snapshot.
+
+CC           = gcc
+CMAKEDEPEND  += -D__GNUC__
+CDEBUGFLAGS  = -O2
+
+CLINK        = $(CC)
+CLINKOPTIONS = $(CDEBUGFLAGS) $(COPTIONS)
+
+INSTALL = install -c
+
+IMPORT_CPPFLAGS += -D__x86__ -D__openbsd__ -D__OSVERSION__=3
+
+
+omniORBGatekeeperImplementation = OMNIORB_TCPWRAPGK
+CorbaImplementation = OMNIORB
+
+#
+# OMNI thread stuff
+#
+
+ThreadSystem = Posix
+OMNITHREAD_POSIX_CPPFLAGS =
+OMNITHREAD_CPPFLAGS = -D_REENTRANT -D_THREAD_SAFE
+OMNITHREAD_LIB = $(patsubst %,$(LibSearchPattern),omnithread)
+
+OMNITHREAD_POSIX_CPPFLAGS += -DUsePthread -DPthreadDraftVersion=10
+
+lib_depend := $(patsubst %,$(LibPattern),omnithread)
+OMNITHREAD_LIB_DEPEND := $(GENERATE_LIB_DEPEND)
+
+
+# Default location of the omniORB configuration file [falls back to this if
+# the environment variable OMNIORB_CONFIG is not set] :
+
+OMNIORB_CONFIG_DEFAULT_LOCATION = /etc/omniORB.cfg
+
+# Default directory for the omniNames log files.
+OMNINAMES_LOG_DEFAULT_LOCATION = /var/omninames
+
+# Uncomment the following if you want all utils and examples build in
+# this tree to statically linke with the omniORB libraries.
+# build tools semistatic : shared with system libs and static with omniORB libs
+#CORBA_LIB	= -Wl,-Bstatic
+#CORBA_LIB	+= -lomniORB3 -lomniDynamic2 -ltcpwrapGK -lomnithread
+#CORBA_LIB	+= -Wl,-Bdynamic
+#OMNITHREAD_LIB = 
+#CORBA_LIB_NODYN	= -Wl,-Bstatic
+#CORBA_LIB_NODYN	+= -lomniORB3 -ltcpwrapGK -lomnithread
+#CORBA_LIB_NODYN	+= -Wl,-Bdynamic
+#OMNITHREAD_LIB_NODYN = -lomnithread
+
+#
+# Shared Library support.     
+#
+BuildSharedLibrary = 1       # Enable
+SHAREDLIB_CPPFLAGS = -fPIC
+#
+# everything else is default from unix.mk
diff -u --recursive --new-file omni.orig/src/lib/omniORB2/orbcore/gatekeepers/alone/gatekeeper.cc omni/src/lib/omniORB2/orbcore/gatekeepers/alone/gatekeeper.cc
--- omni.orig/src/lib/omniORB2/orbcore/gatekeepers/alone/gatekeeper.cc	Mon Jul  3 16:38:20 2000
+++ omni/src/lib/omniORB2/orbcore/gatekeepers/alone/gatekeeper.cc	Mon Dec 10 14:17:17 2001
@@ -99,7 +99,7 @@
   // ********************************
   // retrieve the client name
   // ********************************
-#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4)
+#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4) || (defined(__openbsd__))
     // GNU C library uses socklen_t * instead of int* in getpeername().
     // This is suppose to be compatible with the upcoming POSIX standard.
     // FreeBSD 4.0 uses it too.
diff -u --recursive --new-file omni.orig/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc omni/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc
--- omni.orig/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc	Mon Feb 19 17:16:43 2001
+++ omni/src/lib/omniORB2/orbcore/tcpSocketMTfactory.cc	Mon Dec 10 14:16:59 2001
@@ -645,7 +645,7 @@
   }
   
   {
-# if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4)
+# if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4) || (defined(__openbsd__))
     // GNU C library uses socklen_t * instead of int* in getsockname().
     // This is suppose to be compatible with the upcoming POSIX standard.
     // FreeBSD 4.0 uses it too.
@@ -1402,7 +1402,7 @@
       tcpSocketHandle_t new_sock;
       struct sockaddr_in raddr;
  
-#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4)
+#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4) || (defined(__openbsd__))
       // GNU C library uses socklen_t * instead of int* in accept ().
       // This is suppose to be compatible with the upcoming POSIX standard.
       // FreeBSD 4.0 uses it too.
@@ -1562,7 +1562,7 @@
 
     tcpSocketHandle_t new_sock;
     struct sockaddr_in raddr;
-#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4)
+#if (defined(__GLIBC__) && __GLIBC__ >= 2) || (defined(__freebsd__) && __OSVERSION__ >= 4) || (defined(__openbsd__))
     // GNU C library uses socklen_t * instead of int* in accept ().
     // This is suppose to be compatible with the upcoming POSIX standard.
     // FreeBSD 4.0 uses it too.
diff -u --recursive --new-file omni.orig/src/tool/omniidl/cxx/cccp/config-openbsd.h omni/src/tool/omniidl/cxx/cccp/config-openbsd.h
--- omni.orig/src/tool/omniidl/cxx/cccp/config-openbsd.h	Thu Jan  1 01:00:00 1970
+++ omni/src/tool/omniidl/cxx/cccp/config-openbsd.h	Mon Dec 10 14:17:53 2001
@@ -0,0 +1,11 @@
+#ifdef __x86__
+
+#define SIZEOF_UNSIGNED_CHAR 1
+#define SIZEOF_INT 4
+#define HAVE_STDLIB_H 1
+#define HAVE_STRERROR 1
+
+#else
+#error "You must set definitions for your architecture in config-openbsd.h"
+
+#endif
diff -u --recursive --new-file omni.orig/src/tool/omniidl/cxx/cccp/config.h omni/src/tool/omniidl/cxx/cccp/config.h
--- omni.orig/src/tool/omniidl/cxx/cccp/config.h	Mon Jun 18 18:42:59 2001
+++ omni/src/tool/omniidl/cxx/cccp/config.h	Mon Dec 10 14:17:50 2001
@@ -13,6 +13,9 @@
 #elif defined(__freebsd__)
 #include "config-freebsd.h"
 
+#elif defined(__openbsd__)
+#include "config-openbsd.h"
+
 #elif defined(__hpux__)
 #include "config-hpux.h"
 
