On Mon, Aug 20, 2012 at 08:36:47PM -0700, Jerry wrote:
> 
> On Aug 20, 2012, at 8:11 PM, Jerry wrote:
> 
> > Now I wonder if we could start working towards rehabilitating Tcl/Tk on OS 
> > X. I say "rehabilitate" because I had been building this without problems 
> > for years.
> > 
> > With NON_TRANSITIVE=ON or NON_TRANSITIVE=OFF, ENABLE_tcl=ON, and 
> > ENABLE_tk=ON, the build fails as below. FWIW, my OS X has two Tcl and Tk 
> > installations, and it looks like cmake is using the "factory" versions of 
> > the headers and libraries (the so-called "framework builds") but tclsh from 
> > Macports (in /opt). (All of the tcl stuff is also in /usr/bin or /usr/lib 
> > but they are links to the framework.)
> > 
> > Cmake stuff:
> > 
> > Found Tclsh: /opt/local/bin/tclsh (found version "8.5") 
> > -- Found TCL: /System/Library/Frameworks/tcl.framework  
> > -- Found TCLTK: /System/Library/Frameworks/tcl.framework  
> > -- Found TK: /System/Library/Frameworks/tk.framework  
> > -- Looking for include paths and libraries for Tcl/Tk - found
> > -- Looking for tclsh
> > -- Looking for tclsh - found
> > -- TCL_TCLSH = /opt/local/bin/tclsh
> > -- TCL_INCLUDE_PATH = /System/Library/Frameworks/Tcl.framework/Headers
> > -- TCL_LIBRARY = /System/Library/Frameworks/tcl.framework
> > -- TK_INCLUDE_PATH = 
> > /System/Library/Frameworks/Tk.framework/Headers;/usr/include
> > -- TK_LIBRARY = /System/Library/Frameworks/tk.framework
> > 
> > 
> > Here is the error report for NON_TRANSITIVE=ON:
> > 
> > 
> > Linking C shared library libplplottcltkd.dylib
> > cd /usr/local/plplot_build_dir/bindings/tcl && /opt/local/bin/cmake -E 
> > cmake_link_script CMakeFiles/plplottcltkd.dir/link.txt --verbose=1
> > /usr/local/adacore-gnat-2011/bin/gcc   -dynamiclib 
> > -Wl,-headerpad_max_install_names -single_module -compatibility_version 
> > 9.0.0 -current_version 9.2.0 -o libplplottcltkd.9.2.0.dylib -install_name 
> > /usr/local/plplot_build_dir/bindings/tcl/libplplottcltkd.9.dylib 
> > CMakeFiles/plplottcltkd.dir/tclAPI.c.o 
> > CMakeFiles/plplottcltkd.dir/tclMain.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/Pltk_Init.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/plframe.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/plr.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/tcpip.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/tkMain.c.o libtclmatrixd.9.2.0.dylib 
> > ../../src/libplplotd.11.0.0.dylib -framework tcl -framework tk 
> > Undefined symbols for architecture x86_64:
> >  "_XLookupString", referenced from:
> >      _PlFrameKeyEH in plframe.c.o
> >  "_XFlush", referenced from:
> >      _DisplayPlFrame in plframe.c.o
> > ld: symbol(s) not found for architecture x86_64
> > collect2: ld returned 1 exit status
> > make[2]: *** [bindings/tcl/libplplottcltkd.9.2.0.dylib] Error 1
> > make[1]: *** [bindings/tcl/CMakeFiles/plplottcltkd.dir/all] Error 2
> > make: *** [all] Error 2
> > 
> > 
> > With NON_TRANSITIVE=OFF, the error is the same but with some extra 
> > libraries being linked:
> > 
> > 
> > Linking C shared library libplplottcltkd.dylib
> > cd /usr/local/plplot_build_dir/bindings/tcl && /opt/local/bin/cmake -E 
> > cmake_link_script CMakeFiles/plplottcltkd.dir/link.txt --verbose=1
> > /usr/local/adacore-gnat-2011/bin/gcc   -dynamiclib 
> > -Wl,-headerpad_max_install_names -single_module -compatibility_version 
> > 9.0.0 -current_version 9.2.0 -o libplplottcltkd.9.2.0.dylib -install_name 
> > /usr/local/plplot_build_dir/bindings/tcl/libplplottcltkd.9.dylib 
> > CMakeFiles/plplottcltkd.dir/tclAPI.c.o 
> > CMakeFiles/plplottcltkd.dir/tclMain.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/Pltk_Init.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/plframe.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/plr.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/tcpip.c.o 
> > CMakeFiles/plplottcltkd.dir/__/tk/tkMain.c.o libtclmatrixd.9.2.0.dylib 
> > ../../src/libplplotd.11.0.0.dylib -framework tcl -framework tk 
> > /usr/lib/libltdl.dylib /usr/lib/libdl.dylib 
> > ../../lib/csa/libcsirocsa.0.0.1.dylib 
> > ../../lib/qsastime/libqsastime.0.0.1.dylib /usr/lib/libm.dylib 
> > Undefined symbols for architecture x86_64:
> >  "_XLookupString", referenced from:
> >      _PlFrameKeyEH in plframe.c.o
> >  "_XFlush", referenced from:
> >      _DisplayPlFrame in plframe.c.o
> > ld: symbol(s) not found for architecture x86_64
> > collect2: ld returned 1 exit status
> > make[2]: *** [bindings/tcl/libplplottcltkd.9.2.0.dylib] Error 1
> > make[1]: *** [bindings/tcl/CMakeFiles/plplottcltkd.dir/all] Error 2
> > make: *** [all] Error 2
> > 
> > IIRC there was at the beginning of this thread the suggestion that there 
> > might be something wrong with the X11 libraries.
> > 
> > Jerry
> 
> Also, the undefined symbols are the same if I use the "factory" or "MacPorts" 
> X11 libraries.

Looks to me like libplplottcltkd is not being explicitly linked against 
the X libraries. It's the same on Linux, but Linux seems more 
forgiving and picks up the linkage indirectly. From the Qt issues it 
seems Mac OS-X is more demanding on correct linkage. 

Latest check-in should add these linkages explicitly. 

Does this help?

Andrew

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to