--- /dev/null
+# Generic directory or leaf node makefile for OCERA make framework
+
+ifndef MAKERULES_DIR
+MAKERULES_DIR := $(shell ( old_pwd="" ; while [ ! -e Makefile.rules ] ; do if [ "$$old_pwd" = `pwd` ] ; then exit 1 ; else old_pwd=`pwd` ; cd -L .. 2>/dev/null ; fi ; done ; pwd ) )
+endif
+
+ifeq ($(MAKERULES_DIR),)
+all : default
+.DEFAULT::
+ @echo -e "\nThe Makefile.rules has not been found in this or partent directory: `pwd`\n"
+else
+include $(MAKERULES_DIR)/Makefile.rules
+endif
+
--- /dev/null
+shared_LIBRARIES = forb_shlib_test
+forb_shlib_test_SOURCES = forb_shlib.c
+forb_shlib_test_SERVER_IDL = test_obj.idl
+
+INCLUDES += -I.
+
+lib_LOADLIBES = forb ulut fosa rt wvtest
--- /dev/null
+#include <forb.h>
+#include "test_obj.h"
+#define WVTEST_CONFIGURED
+#include <wvtest.h>
+#include <forb/executor.h>
+#include <forb/object.h>
+#include <forb/iop.h>
+
+static CORBA_long add(test_obj obj, CORBA_long val, CORBA_Environment *ev)
+{
+ int to_add = (intptr_t)forb_object_instance_data(obj);
+ return val + to_add;
+}
+
+static CORBA_long add_indirect(test_obj obj, test_obj indirect_obj, CORBA_long val, CORBA_Environment *ev)
+{
+ return test_obj_add(indirect_obj, val, ev);
+}
+
+static const struct forb_test_obj_impl test_obj_impl = {
+ .add = add,
+ .add_indirect = add_indirect,
+};
+
+
+void *executor_thread(void *arg)
+{
+ forb_executor_t *executor = arg;
+ forb_executor_run(executor);
+ return NULL;
+}
+
+int forb_main(forb_orb orb, int argc, char *argv[])
+{
+ test_obj testobj;
+
+ testobj = forb_test_obj_new(orb, &test_obj_impl, (void*)1);
+ if (!testobj)
+ return -1;
+ forb_execute_object(testobj);
+ return 0;
+}
--- /dev/null
+interface test_obj {
+ // Adds some number the value @a val
+ long add(in long val);
+ // Adds some number the value @a val by calling @a add method of indirect_obj
+ long add_indirect(in test_obj indirect_obj, in long val);
+};