From: Andrew R. <and...@us...> - 2011-11-27 20:18:39
|
On Fri, Nov 25, 2011 at 03:38:53PM -0800, Alan Irwin wrote: > Hi Andrew: > > Thanks for your additional tests of the -DNON_TRANSITIVE=ON case. > > On 2011-11-25 09:51-0000 Andrew Ross wrote: > > > Ada also doesn't work, although the situation is more complicated. I > > don't understand enough about ada, but it appears that building the > > examples is linking in the .o files from > > bindings/ada/CMakeFiles/plplotadad.dir/ and these reference C API > > functions. This seems odd to me so I don't know whether it is a "bug" or > > a feature. At the moment it looks like libplplotd would need to be > > explicitly linked in. I can't see how to do this though. The gnat > > manpages are brief to say the least... > > There is complete documentation of gnat in info form that you may need > to install on your Debian unstable system. > > If it turns out that libplplotd really has to be directly linked by > the Ada examples, then I suggest you make the following change in > examples/ada/CMakeLists.txt to accomplish that: > > target_link_libraries(${TARGET_NAME} plplotada${LIB_TAG}) > > ==> > > target_link_libraries(${TARGET_NAME} plplotada${LIB_TAG} plplot${LIB_TAG}) > > I think the above will just work, but if it doesn't because of some > limitation of our Ada language support you might also have to work > around that problem by changing the adalinkflags variable defined in > that file to specify the location of libplplotd in the two cases (core > build, and installed examples build). Your suggestion does just work for the build tree examples. I guess the pkg-config support will need fixing as well. I've not yet looked at this. > > > [....]Incidentally gdc works fine. > > By default D is compiled statically because the shared D build is > broken on Debian stable because of a bug in D support on that > platform. Has that bug been fixed for Debian unstable? In other > words, do you get good results for the combination of > -DNON_TRANSITIVE=ON and -Dplplotdmd_SHARED=ON? > > The second of those options forces a shared build of our D interface. > However, that breaks the build on Debian stable (with or without > -DNON_TRANSITIVE=ON) so all I can test here is Dplplotdmd_SHARED=OFF, > which forces a static D build. For such static builds > -DNON_TRANSITIVE=ON effectively turns into a no-op (since the empty > LINK_INTERFACE_LIBRARIES property for targets is ignored for static > libraries). Well, trying with -Dplplotdmd_SHARED=ON fails with the default gdc (gdc-4.4) with an error message about one of the .a files needing recompiling with -fPIC. Is this the error you are talking about? I also tried gdc-4.6 which is also available in unstable. This fails during the cmake D compiler checks. Cmake adds the -fversion=Posix option to the compiler, which does not seem to be allowed by gdc-4.6. Not sure if this is a gdc error (flag should be supported) or a cmake issue. I can't find any documentation on -fversion=Posix to confirm or deny this. Anyone with any D lanugage experience able to offer advice? Andrew |