|
From: <ai...@us...> - 2013-12-17 01:25:33
|
Revision: 12872
http://sourceforge.net/p/plplot/code/12872
Author: airwin
Date: 2013-12-17 01:25:27 +0000 (Tue, 17 Dec 2013)
Log Message:
-----------
Many rpath fixups for the case where Tcl/Tk is not installed in a
system location.
Modified Paths:
--------------
trunk/bindings/tcl/CMakeLists.txt
trunk/cmake/modules/tcl-related.cmake
trunk/cmake/modules/tk.cmake
trunk/examples/CMakeLists.txt
trunk/examples/tk/Makefile.examples.in
trunk/src/CMakeLists.txt
Modified: trunk/bindings/tcl/CMakeLists.txt
===================================================================
--- trunk/bindings/tcl/CMakeLists.txt 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/bindings/tcl/CMakeLists.txt 2013-12-17 01:25:27 UTC (rev 12872)
@@ -74,7 +74,8 @@
endif(USE_TCL_TK_STUBS)
if(USE_RPATH)
- set(LIB_INSTALL_RPATH ${LIB_DIR})
+ set(LIB_INSTALL_RPATH ${LIB_DIR} ${TCL_RPATH})
+ filter_rpath(LIB_INSTALL_RPATH)
set_target_properties(tclmatrix${LIB_TAG}
PROPERTIES
SOVERSION ${tclmatrix_SOVERSION}
@@ -360,6 +361,8 @@
if(USE_RPATH)
get_target_property(LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH)
+ list(APPEND LIB_INSTALL_RPATH ${TCL_TK_RPATH})
+ filter_rpath(LIB_INSTALL_RPATH)
set_target_properties(plplottcltk${LIB_TAG}
PROPERTIES
SOVERSION ${plplottcltk_SOVERSION}
@@ -368,6 +371,9 @@
INSTALL_NAME_DIR "${LIB_DIR}"
)
+ # This version of LIB_INSTALL_RPATH also used below for pltcl.
+ list(APPEND LIB_INSTALL_RPATH ${TCL_TK_ITCL_ITK_RPATH})
+ filter_rpath(LIB_INSTALL_RPATH)
set_target_properties(plplottcltk_Main${LIB_TAG}
PROPERTIES
SOVERSION ${plplottcltk_Main_SOVERSION}
Modified: trunk/cmake/modules/tcl-related.cmake
===================================================================
--- trunk/cmake/modules/tcl-related.cmake 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/cmake/modules/tcl-related.cmake 2013-12-17 01:25:27 UTC (rev 12872)
@@ -41,27 +41,31 @@
# further.
#TCL_INCLUDE_PATH
-#TCL_LIBRARY (Always the non-stub version)
-#TCL_STUB_LIBRARY (Always the stub version)
+#TCL_LIBRARY (Always the non-stub version)
+#TCL_STUB_LIBRARY (Always the stub version)
#ITCL_INCLUDE_PATH
#ITCL_LIBRARY
-#HAVE_ITCL (On when itcl header and library have been found.
-# Otherwise, undefined.
-# Used for source file configuration.)
-#HAVE_ITCLDECLS_H (defined [actually as a path, but we don't use that]
-# when itclDecls.h. Otherwise, undefined.
-# Used for source file configuration.)
+#HAVE_ITCL (On when itcl header and library have been found.
+# Otherwise, undefined.
+# Used for source file configuration.)
+#HAVE_ITCLDECLS_H (defined [actually as a path, but we don't use that]
+# when itclDecls.h. Otherwise, undefined.
+# Used for source file configuration.)
#TK_INCLUDE_PATH
-#TK_LIBRARY (Always the non-stub version)
-#TK_STUB_LIBRARY (Always the stub version)
+#TK_LIBRARY (Always the non-stub version)
+#TK_STUB_LIBRARY (Always the stub version)
#ITK_INCLUDE_PATH
#ITK_LIBRARY
-#HAVE_ITK (On when itcl header and library have been found.
-# Otherwise, undefined.
-# Used for source file configuration.)
+#HAVE_ITK (On when itcl header and library have been found.
+# Otherwise, undefined.
+# Used for source file configuration.)
#PLPLOT_ITCL_VERSION (Consistent Itcl version number found by PLplot).
#PLPLOT_ITK_VERSION (Consistent Itk version number found by PLplot).
#PLPLOT_IWIDGETS_VERSION (Consistent Iwidgets version number found by PLplot).
+#TCL_RPATH (rpath, if needed for non-system Tcl location)
+#TCL_TK_RPATH (rpath, if needed for non-system Tcl/Tk location)
+#TCL_TK_ITCL_ITK_RPATH (rpath, if needed for non-system Tcl/Tk/Itcl/Itk
+# location)
if(ENABLE_tcl)
message(STATUS "Start determining consistent system data for Tcl and friends")
@@ -74,6 +78,9 @@
get_filename_component(TCL_LIBRARY_PATH ${TCL_LIBRARY} PATH)
message(STATUS "TCL_LIBRARY_PATH = ${TCL_LIBRARY_PATH}")
+ set(TCL_RPATH ${TCL_LIBRARY_PATH})
+ set(TCL_TK_RPATH ${TCL_RPATH})
+ set(TCL_TK_ITCL_ITK_RPATH ${TCL_RPATH})
if(TCL_TCLSH)
message(STATUS "Looking for tclsh - found")
@@ -172,6 +179,8 @@
if(ITCL_LIBRARY)
message(STATUS "Looking for itcl library - found")
message(STATUS "ITCL_LIBRARY = ${ITCL_LIBRARY}")
+ get_filename_component(ITCL_LIBRARY_PATH ${ITCL_LIBRARY} PATH)
+ list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITCL_LIBRARY_PATH})
set(HAVE_ITCL ON)
find_path(HAVE_ITCLDECLS_H itclDecls.h HINTS ${ITCL_INCLUDE_PATH})
else(ITCL_LIBRARY)
@@ -215,6 +224,8 @@
if(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH})
message(STATUS "WARNING: the Tcl and Tk library locations are inconsistent so those libraries are likely not compatible")
endif(NOT ${TK_LIBRARY_PATH} STREQUAL ${TCL_LIBRARY_PATH})
+ list(APPEND TCL_TK_RPATH ${TK_LIBRARY_PATH})
+ list(APPEND TCL_TK_ITCL_ITK_RPATH ${TK_LIBRARY_PATH})
else(ENABLE_tk)
message(STATUS "WARNING: Because Tk is disabled must disable Itk as well")
set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE)
@@ -305,6 +316,8 @@
message(STATUS "Looking for itk library - found")
message(STATUS "ITK_LIBRARY = ${ITK_LIBRARY}")
set(HAVE_ITK ON)
+ get_filename_component(ITK_LIBRARY_PATH ${ITK_LIBRARY} PATH)
+ list(APPEND TCL_TK_ITCL_ITK_RPATH ${ITK_LIBRARY_PATH})
# Test version consistency between iwidgets, itk, and itcl.
if(NOT IWIDGETS_VERSIONS_LIST)
@@ -412,6 +425,22 @@
set(ENABLE_tk OFF CACHE BOOL "Enable Tk interface code" FORCE)
set(ENABLE_itk OFF CACHE BOOL "Enable Itk interface code" FORCE)
endif(TCL_FOUND AND TCL_TCLSH)
+
+ filter_rpath(TCL_RPATH)
+ if(TCL_RPATH)
+ message(STATUS "TCL_RPATH = ${TCL_RPATH}")
+ endif(TCL_RPATH)
+
+ filter_rpath(TCL_TK_RPATH)
+ if(TCL_TK_RPATH)
+ message(STATUS "TCL_TK_RPATH = ${TCL_TK_RPATH}")
+ endif(TCL_TK_RPATH)
+
+ filter_rpath(TCL_TK_ITCL_ITK_RPATH)
+ if(TCL_TK_ITCL_ITK_RPATH)
+ message(STATUS "TCL_TK_ITCL_ITK_RPATH = ${TCL_TK_ITCL_ITK_RPATH}")
+ endif(TCL_TK_ITCL_ITK_RPATH)
+
message(STATUS "Finished determining consistent system data for Tcl and friends")
else(ENABLE_tcl)
message(STATUS "WARNING: ENABLE_tcl is OFF so disabling everything else that is Tcl/Tk related")
Modified: trunk/cmake/modules/tk.cmake
===================================================================
--- trunk/cmake/modules/tk.cmake 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/cmake/modules/tk.cmake 2013-12-17 01:25:27 UTC (rev 12872)
@@ -25,6 +25,7 @@
# tk_COMPILE_FLAGS - individual COMPILE_FLAGS required to compile
# the tk device.
# tk_LINK_FLAGS - individual LINK_FLAGS for the dynamic tk device.
+# tk_RPATH - rpath for tk device driver.
# DRIVERS_LINK_FLAGS - list of LINK_FLAGS for all static devices.
# tk_SOURCE - list of source files other than tk.c
@@ -33,6 +34,7 @@
# ntk_COMPILE_FLAGS - individual COMPILE_FLAGS required to compile
# the ntk device.
# ntk_LINK_FLAGS - individual LINK_FLAGS for the dynamic ntk device.
+# ntk_RPATH - rpath for ntk device driver.
# DRIVERS_LINK_FLAGS - list of LINK_FLAGS for all static devices.
# The following variables are set/modified for the tkwin device:
@@ -40,6 +42,7 @@
# tkwin_COMPILE_FLAGS - individual COMPILE_FLAGS required to compile
# the tkwin device.
# tkwin_LINK_FLAGS - individual LINK_FLAGS for the dynamic tkwin device.
+# tkwin_RPATH - rpath for tkwin device driver.
# DRIVERS_LINK_FLAGS - list of LINK_FLAGS for all static devices.
# tkwin_SOURCE - list of source files other than tkwin.c
@@ -62,6 +65,7 @@
"-I${TCL_INCLUDE_PATH} ${TKLIB_COMPILE_FLAGS} -I\"${CMAKE_SOURCE_DIR}\"/bindings/tcl -I\"${CMAKE_BINARY_DIR}\"/bindings/tcl -I\"${CMAKE_SOURCE_DIR}\"/bindings/tk"
)
set(tk_LINK_FLAGS plplottcltk${LIB_TAG} ${TCL_LIBRARY} ${TK_LIBRARY})
+ set(tk_RPATH ${TCL_TK_RPATH})
set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} ${TCL_LIBRARY} ${TK_LIBRARY})
if(NOT ENABLE_DYNDRIVERS)
# All source that is in libplplottcltk
@@ -98,6 +102,7 @@
if(PLD_ntk)
set(ntk_COMPILE_FLAGS "-I${TCL_INCLUDE_PATH} ${TKLIB_COMPILE_FLAGS}")
set(ntk_LINK_FLAGS ${TCL_LIBRARY} ${TK_LIBRARY})
+ set(ntk_RPATH ${TCL_TK_RPATH})
set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} ${ntk_LINK_FLAGS})
endif(PLD_ntk)
@@ -108,8 +113,11 @@
if(USE_TCL_TK_STUBS)
set(tkwin_LINK_FLAGS plplottcltk${LIB_TAG} ${TCL_STUB_LIBRARY} ${TK_STUB_LIBRARY} ${X11_LIBRARIES})
+ # tkwin_RPATH should be undefined for this case since stubs versions
+ # of the libraries are static (in my experience so far).
else(USE_TCL_TK_STUBS)
set(tkwin_LINK_FLAGS plplottcltk${LIB_TAG} ${TCL_LIBRARY} ${TK_LIBRARY} ${X11_LIBRARIES})
+ set(tkwin_RPATH ${TCL_TK_RPATH})
endif(USE_TCL_TK_STUBS)
set(DRIVERS_LINK_FLAGS ${DRIVERS_LINK_FLAGS} ${TCL_LIBRARY} ${TK_LIBRARY})
Modified: trunk/examples/CMakeLists.txt
===================================================================
--- trunk/examples/CMakeLists.txt 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/examples/CMakeLists.txt 2013-12-17 01:25:27 UTC (rev 12872)
@@ -211,17 +211,37 @@
# */Makefiles configured in each * subdirectory from */Makefile.examples.in.
if(USE_RPATH)
get_target_property(_LIB_INSTALL_RPATH plplot${LIB_TAG} INSTALL_RPATH)
- string(REGEX REPLACE ";" ":" LIB_INSTALL_RPATH "${_LIB_INSTALL_RPATH}")
- set(RPATHCMD "-Wl,-rpath -Wl,${LIB_INSTALL_RPATH}")
- if(PLD_extqt)
- if(ENABLE_DYNDRIVERS)
- get_target_property(_qt_INSTALL_RPATH qt INSTALL_RPATH)
- string(REGEX REPLACE ";" ":" qt_INSTALL_RPATH "${_qt_INSTALL_RPATH}")
- set(qt_RPATHCMD "-Wl,-rpath -Wl,${LIB_INSTALL_RPATH}:${qt_INSTALL_RPATH}:${DRV_DIR}")
- else(ENABLE_DYNDRIVERS)
- set(qt_RPATHCMD ${RPATHCMD})
- endif(ENABLE_DYNDRIVERS)
- endif(PLD_extqt)
+ if(_LIB_INSTALL_RPATH)
+ string(REGEX REPLACE ";" ":" LIB_INSTALL_RPATH "${_LIB_INSTALL_RPATH}")
+ set(RPATHCMD "-Wl,-rpath -Wl,${LIB_INSTALL_RPATH}")
+ if(PLD_extqt)
+ if(ENABLE_DYNDRIVERS)
+ get_target_property(_qt_INSTALL_RPATH qt INSTALL_RPATH)
+ if(_qt_INSTALL_RPATH)
+ string(REGEX REPLACE ";" ":" qt_INSTALL_RPATH "${_qt_INSTALL_RPATH}")
+ set(qt_RPATHCMD "-Wl,-rpath -Wl,${LIB_INSTALL_RPATH}:${qt_INSTALL_RPATH}:${DRV_DIR}")
+ else(_qt_INSTALL_RPATH)
+ set(qt_RPATHCMD)
+ endif(_qt_INSTALL_RPATH)
+ else(ENABLE_DYNDRIVERS)
+ set(qt_RPATHCMD ${RPATHCMD})
+ endif(ENABLE_DYNDRIVERS)
+ endif(PLD_extqt)
+ if(ENABLE_tcl)
+ get_target_property(_plplottcltk_Main_INSTALL_RPATH plplottcltk_Main${LIB_TAG} INSTALL_RPATH)
+ if(_plplottcltk_Main_INSTALL_RPATH)
+ string(REGEX REPLACE ";" ":" plplottcltk_Main_INSTALL_RPATH "${_plplottcltk_Main_INSTALL_RPATH}")
+ set(plplottcltk_Main_RPATHCMD "-Wl,-rpath -Wl,${LIB_INSTALL_RPATH}:${plplottcltk_Main_INSTALL_RPATH}")
+ else(_plplottcltk_Main_INSTALL_RPATH)
+ set(plplottcltk_Main_RPATHCMD)
+ endif(_plplottcltk_Main_INSTALL_RPATH)
+ endif(ENABLE_tcl)
+ else(_LIB_INSTALL_RPATH)
+ set(RPATHCMD)
+ set(qt_RPATHCMD)
+ set(plplottcltk_Main_RPATHCMD)
+ endif(_LIB_INSTALL_RPATH)
+
endif(USE_RPATH)
# Install lena.pgm in installed examples directory so that all implementations
Modified: trunk/examples/tk/Makefile.examples.in
===================================================================
--- trunk/examples/tk/Makefile.examples.in 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/examples/tk/Makefile.examples.in 2013-12-17 01:25:27 UTC (rev 12872)
@@ -25,7 +25,7 @@
LIB_TAG = @LIB_TAG@
PKG_CONFIG_ENV = @PKG_CONFIG_ENV@
-RPATHCMD = @RPATHCMD@
+plplottcltk_Main_RPATHCMD = @plplottcltk_Main_RPATHCMD@
EXECUTABLES_list = xtk01$(EXEEXT)
# Second and fourth examples depend on itk.
@@ -37,6 +37,6 @@
rm -f $(EXECUTABLES_list) $(itk_EXECUTABLES_list)
.c$(EXEEXT):
- $(CC) $< -o $@ $(RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config @PC_STATIC_OPTION@ --cflags --libs plplot$(LIB_TAG)-tcl_Main plplot$(LIB_TAG)-tcl plplot$(LIB_TAG)` -lm
+ $(CC) $< -o $@ $(plplottcltk_Main_RPATHCMD) `$(PKG_CONFIG_ENV) pkg-config @PC_STATIC_OPTION@ --cflags --libs plplot$(LIB_TAG)-tcl_Main plplot$(LIB_TAG)-tcl plplot$(LIB_TAG)` -lm
.SUFFIXES: .c $(EXEEXT)
Modified: trunk/src/CMakeLists.txt
===================================================================
--- trunk/src/CMakeLists.txt 2013-12-17 01:18:23 UTC (rev 12871)
+++ trunk/src/CMakeLists.txt 2013-12-17 01:25:27 UTC (rev 12872)
@@ -417,6 +417,7 @@
)
if(USE_RPATH)
+ filter_rpath(LIB_INSTALL_RPATH)
set_target_properties(
plplot${LIB_TAG}
PROPERTIES
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|