orbitcpp on cygwin HOWTO



Folks,

I've managed to get orbitcpp compiling on cygwin, which I'm sure others would be interested in. The only real problem is with the IDL compiler backend, as from what I can see cygwin won't allow C++ modules (because libstdc++ is a static library, and you can't build shared libraries on cygwin against static libraries).

This solution is hacky, I know! Basically we'll link the backend statically into orbit-idl-2 (which assumes we just have the one backend)

1. Download orbitcpp and compile the IDL compiler backend, which will be a static archive.

2. Go to the cygwin setup tool, and choose to download the source for ORBit2.

3. Patch the ORBit source code in /usr/src (patch -p0 < ORBit2-2.x.x-x.patch, without which it segfaults during compilation) and run configure.

4. Edit ORBit's src/idl-compiler/orbit-idl-backend.c and in orbit_idl_backend_output() and change:

        paths = ...
        ...
        ...
        if (!func) {
        ...
        }

    to be:

        func = &orbit_idl_backend_func;

5. Adjust src/idl-compiler/Makefile so that the line with ORBIT_IDL_LIBS also has /usr/lib/orbit-2.0/idl-backends/libORBit-idl-backend-cpp.a.

6. Now compile up ORBit's IDL compiler, and just copy orbit-idl-2.exe to /usr/bin.

7. Go back to orbitcpp and finish the full compile, which should run through correctly. There may be problems with -lrevolv's not finding the library, but just remove these from the Makefile, and perhaps also from /lib/pkgconfig/*.pc and /usr/lib/*.la.

  8. Pat yourself on the back.

I'm still having a problem with some of the supplied examples which I may post a backtrace of at a later point. I've certainly had CORBA examples working, so the principle is sound.

Cheers!

Nick



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]