On 2015-06-17 10:39-0000 Arjen Markus wrote: > Hi Alan, > > > > Hm, something is failing in the non_dynamic tests: > > CMakeFiles/pltcl.dir/pltcl.c.o:pltcl.c:(.text+0x20e): undefined reference to > `__imp_Pltcl_Init' > > CMakeFiles/pltcl.dir/pltcl.c.o:pltcl.c:(.text+0x20e): relocation truncated to > fit: R_X86_64_PC32 against undefined symbol `__imp_Pltcl_Init' > > So your latest changes regarding the reduction of the llibraries for the > non-dynamic drivers seem to have introduced a bug. I have attached the > complete tarball.
Hi Arjen: Thanks for this test. I. Comments on your setup of this test. For some reason there was a regression in your X setup so that you are now encountering that DISPLAY issue again. The message (in cmake.out) was Application initialization failed: no display name and no $DISPLAY environment variable I encourage you to automate your X setup to avoid this regression in behaviour in future. Also please drop the -DENABLE_itk=OFF workaround which should not be necessary if you have all Tcl/Tk/Itcl/Itk/Iwidgets packages properly installed on Cygwin. And if those are not properly installed, please fix that. Also, in retrospect it was a good idea for you to be cautious and test first with --do_test_interactive no. But once the current issue is fixed, I will encourage you to drop that restriction so that all the Tcl, etc., interactive results can also be run-time tested. II. Comments on the bug you found. The link command that is failing above is (after line wrapping at each white space to help clarify the command and redacting the many irrelevant parts) /usr/bin/cc -Wl,--enable-auto-import CMakeFiles/pltcl.dir/pltcl.c.o -o pltcl.exe -Wl,--out-implib,libpltcl.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ../../dll/libplplottcltk_Main.dll.a /usr/lib/itcl3.4/libitcl3.4.dll.a -ltcl ../../dll/libplplot.dll.a [...] /usr/local/lib/libLASi.dll.a [...] /usr/local/lib/libshp.a [...] II A. The /usr/local issue. Sorry I did not notice this issue before. My assumption is that anything in /usr/local cannot be due to an official Cygwin install so should be avoided (at least for now). So to follow up on this I looked for "local" in cmake.out and found the following: -- TCL_INCLUDE_PATH = /usr/local/include -- FindShapelib: Found shapelib header directory, /usr/local/include, and library, /usr/local/lib/libshp.a. libplplot_LINK_FLAGS = /usr/lib/libltdl.dll.a;/usr/lib/libdl.a;/usr/local/lib/libshp.a;/usr/lib/libfreetype.dll.a;-lcsirocsa;-lcsironn;-lqhull;-lqsastime So please do the appropriate /usr/local renaming (perhaps of all of /usr/local) to force CMake to find the official Cygwin versions of Tcl, shapelib, and libLASi which I presume you have long-since already installed. The result should be no mention of /usr/local in cmake.out the CMake cache files or any of your build commands. I suspect all those /usr/local results are leftovers from an epa_build attempt you did long ago. At some point you might want to try epa_build again (but with an install prefix other that /usr/local so the results don't necessarily take CMake precedence over all others), but only after you make sure all the official Cygwin packages work. II B. The linking issue with pltcl that you discovered above. The above link command for pltcl shows that libplplot is properly linked. So one possibility to explain this is either Pltcl_Init is not defined in the plplot library or it is defined in that library but not visible. To check that, please use the nm command (which likely is already installed, but if not you should be able to find it in binutils-2.25-2) as follows: # Change to _nondynamic_ build directory cd ../comprehensive_test_disposeable/nondynamic/build_tree/ # Build plplot library (which was cleaned by the script) in the # nondynamic case make plplot # Test for definition of Pltcl_Init in that library nm --defined-only <library_name> |grep Pltcl_Init where <library_name> is the appropriate name of the plplot library you just built. Here that is src/libplplot.so, but I am aware there are two locations (in src and in dll) of the plplot library for Cygwin, and I don't know which one you should be using with the nm command so you will have to experiment to find which to use with nm. The result of the above command here is 000000000008f120 T Pltcl_Init which indicates that symbol is defined in the plplot library and you should be getting something similar there. Once you have proved that symbol is defined in the plplot library the next issue is whether that symbol is externally visible. "nm" tests symbol visibility with the --extern-only option, e.g., nm --extern-only --defined-only <library_name> |grep Pltcl_Init and if Pltcl_Init is externally visible you should get the same result whether --extern-only is used or not. And that proved to be the case here when I compiled with CXXFLAGS=-O3 -fvisibility=hidden -Wuninitialized CFLAGS=-O3 -fvisibility=hidden -Wuninitialized which should make gcc act very similarly on Linux to the way it handles visibility issues for C or C++ library on Windows. So from my good visibility results here, I am pretty sure visibility should not be an issue for you there, but please get back to me with the Pltcl_Init definition and visibility results via the "nm" command for the plplot library for the nondynamic case to confirm that (or not), and we can take it from there. 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 __________________________ ------------------------------------------------------------------------------ _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel