There is one other difference between what PLPlot is doing and what we are
doing.  We are not making a shared library from Ada code, we are building
an executable from Ada code.  Even if we were making a shared library from
Ada code, it is the fact we are linking in other static libraries built by
CMake (so it can track implicit dependencies), not just .o files.  I think
that's what makes the difference.

In any case, I was able to work around the problem by setting certain CMake
variables and I am off on my way.

Thanks again for the help.

Tom


On Fri, Jan 3, 2014 at 1:44 PM, Alan W. Irwin <ir...@beluga.phys.uvic.ca>wrote:

> On 2014-01-03 11:43-0500 Tom Kacvinsky wrote:
>
>  OK,  here is what I have found:  when building Ada executables, we link
>> against two other libraries, one with C code, one with C++ code.  CMake
>> keeps track of this and adds implicit dependencies.  Thus, when we link
>> against the C++ built library, -lstdc++ comes along for the ride.
>>
>
> Hi Tom:
>
> So it is a linking issue, and you can therefore largely ignore
> the post I just made.
>
> The simple cmake test case that I referred to in that post doesn't
> have the equivalent case of linking to a C library so if you try that
> case, you won't have these linking issues. However, our PLplot build
> system certainly does have an equivalent case; our principal Ada
> library (called libplplotadad) is linked to our principal C PLplot
> library (called libplplotd).  To see how our principal Ada library is
> built by our build system logic look at bindings/ada/CMakeLists.txt
> within plplot-5.9.11.tar.gz. The resulting build steps are recorded in
> the build_x02a.out.gz file I attached previously.  Look there for the
> following lines (without the e-mail wrapping issues).
>
> [100%] Building Ada object bindings/ada/CMakeFiles/plplotadad.dir/plplot.o
> cd /home/software/plplot_svn/HEAD/build_dir/bindings/ada &&
> /usr/bin/gnatgcc  -fPIC   -c /home/software/plplot_svn/
> HEAD/plplot_allura/bindings/ada/plplot.adb -o CMakeFiles/plplotadad.dir/
> plplot.o
> /home/software/cmake/install-2.8.12/bin/cmake -E cmake_progress_report
> /home/software/plplot_svn/HEAD/build_dir/CMakeFiles [100%] Building Ada
> object bindings/ada/CMakeFiles/plplotadad.dir/plplot_thin.o
> cd /home/software/plplot_svn/HEAD/build_dir/bindings/ada &&
> /usr/bin/gnatgcc  -fPIC   -c /home/software/plplot_svn/
> HEAD/plplot_allura/bindings/ada/plplot_thin.adb -o
> CMakeFiles/plplotadad.dir/plplot_thin.o
> /home/software/cmake/install-2.8.12/bin/cmake -E cmake_progress_report
> /home/software/plplot_svn/HEAD/build_dir/CMakeFiles [100%] Building Ada
> object bindings/ada/CMakeFiles/plplotadad.dir/plplot_traditional.o
> cd /home/software/plplot_svn/HEAD/build_dir/bindings/ada &&
> /usr/bin/gnatgcc  -fPIC   -c /home/software/plplot_svn/
> HEAD/plplot_allura/bindings/ada/plplot_traditional.adb -o
> CMakeFiles/plplotadad.dir/plplot_traditional.o
> /home/software/cmake/install-2.8.12/bin/cmake -E cmake_progress_report
> /home/software/plplot_svn/HEAD/build_dir/CMakeFiles [100%] Building Ada
> object bindings/ada/CMakeFiles/plplotadad.dir/plplot_auxiliary.o
> cd /home/software/plplot_svn/HEAD/build_dir/bindings/ada &&
> /usr/bin/gnatgcc  -fPIC   -c /home/software/plplot_svn/
> HEAD/plplot_allura/bindings/ada/plplot_auxiliary.adb -o
> CMakeFiles/plplotadad.dir/plplot_auxiliary.o
> Linking Ada shared library libplplotadad.so
> cd /home/software/plplot_svn/HEAD/build_dir/bindings/ada &&
> /home/software/cmake/install-2.8.12/bin/cmake -E cmake_link_script
> CMakeFiles/plplotadad.dir/link.txt --verbose=1
> /usr/bin/gnatgcc  -fPIC    -shared -Wl,-soname,libplplotadad.so.1 -o
> libplplotadad.so.1.0.0 CMakeFiles/plplotadad.dir/plplot.o
> CMakeFiles/plplotadad.dir/plplot_thin.o 
> CMakeFiles/plplotadad.dir/plplot_traditional.o
> CMakeFiles/plplotadad.dir/plplot_auxiliary.o
> ../../src/libplplotd.so.12.0.0 /usr/lib/x86_64-linux-gnu/libgnat.so
> -Wl,-rpath,/home/software/plplot_svn/HEAD/build_dir/src:
> /home/software/plplot_svn/HEAD/build_dir/lib/csa:/home/
> software/plplot_svn/HEAD/build_dir/lib/nn:/home/software/plplot_svn/HEAD/build_dir/lib/qsastime:
> -Wl,-rpath-link,/home/software/plplot_svn/HEAD/build_dir/lib/csa:/home/
> software/plplot_svn/HEAD/build_dir/lib/nn:/home/software/plplot_svn/HEAD/
> build_dir/lib/qsastime
>
> Clearly, there are no extra C library flags such as -lm or -lc.
> Therefore, I strongly suggest you should just copy what we do in
> bindings/ada/CMakeLists.txt, and that should likely solve the problem
> of the extra C++ library flags (such as -lstdc++) for your case where
> the linked library is written in C++ rather than C.
>
>
> Alan
> __________________________
> Alan W. Irwin
>
> Astronomical research affiliation with Department of Physics and Astronomy,
> University of Victoria (astrowww.phys.uvic.ca).
>
> Programming affiliations with the FreeEOS equation-of-state
> implementation for stellar interiors (freeeos.sf.net); the Time
> Ephemerides project (timeephem.sf.net); PLplot scientific plotting
> software package (plplot.sf.net); the libLASi project
> (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
> and the Linux Brochure Project (lbproject.sf.net).
> __________________________
>
> Linux-powered Science
> __________________________
>
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to