On Thu, Nov 24, 2011 at 06:04:02PM -0800, Alan Irwin wrote:
> On 2011-11-24 12:11-0800 Alan W. Irwin wrote:
> 
> > I will now move on [from C and C++] to other languages to see how far I can 
> > get with
> > non-transitive linking.
> 
> As of revision 12045 I have gotten pretty far.  I have completed a
> NON_TRANSITIVE implementation (both for CMake and our *.pc files used
> for pkg-config) for most of the libraries that generated rpmlint
> messages for Orion as well as libplplotdmd.  Everything tests without
> issues on Debian stable, but there are very likely still issues on
> more modern distros such as Debian unstable and Fedora that others
> will have to work out.  Also, see my recent commit messages for
> further pkg-config changes that I suggest if anybody has interest in
> implementing those.  Also consult the commit message for the
> libplplotdmd NON_TRANSITIVE implementation which is a really special
> case that I cannot test because of a bad implementation of D shared
> libraries in Debian stable.
> 
> My remaining ToDo list for this project is to complete Orion's list of
> libraries (i.e., do the NON_TRANSITIVE implementation for
> libplplotwxwidgetsd and libplplotqtd); fix the now broken static build
> (by adding the --static option to pkg-config in that case) for the
> traditional installed examples tree; and do a comprehensive test with
> -DNON_TRANSITIVE=ON to fill in any tests that were missed by my
> limited and piece-meal testing of my NON_TRANSITIVE changes as I went
> along.

Alan,

The fortran 77 and fortran 95 examples did not compile as you need to 
explicitly link against libplplotf77cd and libplplotf95cd respectively.
Parts of the fortran bindings are implemented in C and so the C parts
of the library need to be directly linked. Now fixed in svn. Examples 
also build fine using pkg-config in the install tree.

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... I know there are some "issues"
with gnat in Debian unstable so it is possible this is a compiler bug.
Orion, can you confirm the problem? For reference the relevant build 
error message is

---------------

Linking Ada executable x01a
gnatbind -aI/home/andrew/software/plplot/plplot/examples/ada
-aI/home/andrew/software/plplot/plplot/bindings/ada
-aO/home/andrew/software/plplot/build_test/bindings/ada/CMakeFiles/plplotadad.dir
 -x
x01a.ali
gnatlink x01a.ali -rdynamic ../../bindings/ada/libplplotadad.so.0.0.0
-Wl,-rpath,/home/andrew/software/plplot/build_test/bindings/ada:/home/andrew/software/plplot/build_test/src:/home/andrew/software/plplot/build_test/lib/csa:/home/andrew/software/plplot/build_test/lib/qsastime
-Wl,-rpath-link,/home/andrew/software/plplot/build_test/src:/home/andrew/software/plplot/build_test/lib/csa:/home/andrew/software/plplot/build_test/lib/qsastime
/usr/bin/ld:
/home/andrew/software/plplot/build_test/bindings/ada/CMakeFiles/plplotadad.dir/plplot_traditional.o:
undefined reference to symbol 'c_plspause'
/usr/bin/ld: note: 'c_plspause' is defined in DSO
/home/andrew/software/plplot/build_test/src/libplplotd.so.11 so try adding it 
to the
linker command line
/home/andrew/software/plplot/build_test/src/libplplotd.so.11: could not read 
symbols:
Invalid operation
collect2: ld returned 1 exit status
gnatlink: error when calling /usr/bin/gcc-4.6
gnatmake: *** link failed.
make[2]: *** [examples/ada/x01a] Error 4
make[1]: *** [examples/ada/CMakeFiles/x01a.dir/all] Error 2

----------------

Incidentally gdc works fine.

Andrew

------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure 
contains a definitive record of customers, application performance, 
security threats, fraudulent activity, and more. Splunk takes this 
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
_______________________________________________
Plplot-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to