[omniORB] Porting 2.7.0 to Borland C++Builder

Mikhail Soukhanov mik@astra.relline.ru
Wed, 10 Feb 1999 17:42:14 +0300


Hello, Sai-Lai!

Here is an attempt on your summary information:

Port of omniORB 2.6.1 to Borland C++Builder was accomplished by Thomas
<Thomas@Twinspark.nl> (Thomas van der Ploeg
<Thomas.vanderPloeg@harbinger.nl> if this is the one and the same
person) based on his previous work on 2.5.0. The message to the effect
was posted to the mailing list on Tue., 22 Dec 1998 10:50:05 +0100 and
contains the link to the zipped source and binaries archive at
<ftp://194.109.90.167/omniORB_2.6.1_bcb.zip>. It includes omniidl2,
omnithread2 DLL, omniORB260 static library and DLL, omniNames and all
echo examples. All projects are easily rebuilt from the source under the
C++Builder IDE, but the included pre-compiled binaries depend on several
Borland's shared DLLs (not included). Thomas has supplied the thorough
description of his changes in files <ftp://194.109.90.167/readme.txt>
and 'omniORB_2.6.1\bin\x86_win32cb\bcb_mods.txt' packed into the
archive: "Major changes are that you have to export inner classes
explicitly".

After applying Thomas' changes, I tried to modify the omniORB 2.6.1 make
files to get it compiled from the command line with the help of CygWin
GNU make. I completely re-wrote bcc, tlib and tlink wrappers so they
accept M$VC-style arguments and thus allowing for less changes in the
make files. The same targets could be compiled but Borland's
command-line tools seem to have a lot more bugs than the IDE, especially
in the link phase. First, tlink32 (2.5.0.0) can not link omniidl2 at all
exiting with unknown fatal error. Second, all DLLs have to be linked
against VCL library, else they crash at program start-up. Third (but not
the last), there was always a number of unresolved external symbols
which do not appear with IDE link. So I temporarily gave up.

By that time omniORB 2.7.0 was out, so I decided to transfer the same
Thomas' modifications and try to build it under IDE. It took not so much
time and effort, but the current split of DLLs added to the mess with
explicit import/export macros. Also, I had to introduce _CORBA_INLINE_FN
and _CORBA_OUT_OF_LINE macros to work around some tricky C++Builder's
bug with expanding inline methods accessing private data. If necessary,
I may be able to write a more complete list of modifications.

Currently the state of affairs is:
- omkdepend builds and runs without any modifications;
- bcc, tlib and tlink wrappers build and run, now accepting and
translating essential M$VC-style arguments (use -msvc flag);
- omniidl2 builds and runs;
- omnithread2_rt, omniORB270_rt, omniDynamic270_rt DLL build and run
when linked to other programs;
- omniLC22_rt DLL builds but was not tested;
- omniNames builds and runs;
- omniORB utilities build, genior and catior run while convertior and
nameclt were not tested;
- omnithread examples build and run, except thrspecdata which abnormally
terminates on joining thread;
- echo examples (except eg3_tieimpl) build and run;
- all other examples as well as omniEvents and omniProperties were not
tried yet.

The changes were applied to the original 2.7.0 distribution (without any
of patches 39-45). All the modified files across the source tree are
packed into the zipped archive accessible via anonymous ftp at
<ftp://astra.relline.ru./devel/omniORB_2.7.0-bcb_3.0.zip>. All the
C++Builder IDE projects are placed separately in 'bcb' directory. The
file is now about ~401 kB and was significantly updated since my
previous e-mail posting. It does not currently include modified make
files which I want to experiment with for some more time in the hope of
getting them work after all.

Though recently I will not be able to spend much time on the further
work on the port, I will gladly answer any questions on it and
appreciate any comments.

Best regards, and thanks for such a nice CORBA product!

			Mikhail Soukhanov <mik@astra.relline.ru.>

Sai-Lai Lo wrote:
> 
> I've missed Thomas' port. Could you write me a short summary of the current
> state of the two ports? I'll put this onto our contribution page.