This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [ITP] znc 1.6.0


On 22/07/2015 00:53, Alexey Sokolov wrote:
David, how did you try to build it? What was the exact error message?
What do you change in Makefile.in to get it working?

Attempting to compile znc-1.6.0-3 with cygport under Cygwin x86. It's worth saying that my Cygwin installation is about a month old, but that shouldn't matter.

    cygport ./znc.cygport prep compile

Nothing out of the ordinary there. This gives the following error:

configure.ac:255: Something is trying to use the C compiler. Since this is a C++ project, this should not happen!
    autom4te-2.69: /usr/bin/m4 failed with exit status: 1

So, for the sake of not falling at the first hurdle, I skipped the autoreconf step by adding the following lines to znc.cygport:

    src_compile() {
      cd ${B}
      cygconf
      cygmake -j 1 V=1
    }

I'll leave it to you to have a more detailed poke around as to why atoreconf is failing. Anyway, with that in place we get a little further. The first hint that anything is wrong comes when we try to link the perl module:

/usr/lib/gcc/i686-pc-cygwin/4.9.2/../../../../i686-pc-cygwin/bin/ld: cannot find -lznc-1.6

That's because there's no 'libznc-1.6.dll.a' to link against. You need to add the following to your link command when producing the shared DLL:

    -Wl,--out-implib=libznc-1.6.dll.a

Again, I'll leave it to you to get this into the Makefile in a nice way. I'd reiterate what others have said: This should be called libznc#.dll, where '#' is a number that increments when the ABI breaks. This is our naming convention; please adhere to it. You should add this 'dll.a' file to your devel package. For the sake of changing as little of your Makefiles as possible, I left it as libznc-1.6.dll.a.

Building again, we don't actually get any further. When linking the perl module, there are a stack of linker errors:

    modperl.o: In function `ZN10CPerlTimerD2Ev':
/usr/src/debug/znc-1.6.0-3/modules/modperl.cpp:277: undefined reference to `CTimer::GetModule() const'

and screenfulls of similar output. This is because your arguments to the linker are in the wrong order. This doesn't matter on Linux, but it does on Cygwin. You need to put the '-lznc-1.6' after your object files. This gets the perl module compiling, and you'll have exactly the same problems with the python. I gave up at this point; I didn't attempt to test the binaries produced.

The problem I have with this is that I see no way that this could ever have compiled under Cygwin. How are you building this?

I hope the above doesn't come across as too critical - these comments are intended to be constructive, and I hope you find them helpful.

Dave.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]