Alan W. Irwin wrote:
On some platforms, X11_LIBRARIES derived by FindX11.cmake is going to be a
mixture of full pathnames for libraries and a series of -l flags which is
not a recommended form for CMake 2.6.x.  To see this, look at the
FindX11.cmake logic for CMake-2.6.0-RC-8.



OK, -l flags are fine with cmake 2.6.x, let me say that again, -l is OK with 2.6. It MAY cause a link error. If you set CMP0003 to NEW, it you can find out. If CMP0003 is set to NEW and you stuff links, that is not a hack, that is the right way to do it. We just did not want to break projects by default. We wanted to warn by default, and give a way to silence the warning. You do not have to use a full path.

The preliminary version of X11_LIBRARIES is fullpath only since that is
derived using FIND_LIBRARY, but then more libraries are added to this list
as follows:

SET(X11_LIBRARIES ${X11_X_PRE_LIBS} ${X11_LIBRARIES} ${X11_X_EXTRA_LIBS})

X11_X_PRE_LIBS is also fullpath since it is the result of FIND_LIBRARY, but
X11_X_EXTRA_LIBS (empty on my Debian testing system) potentially has lots of
-l flags such as -lnsl_s -linet -ldnet, etc. if you follow the
X11_X_EXTRA_LIBS logic in FindX11.cmake.

Could somebody please change FindX11.cmake so that X11_X_EXTRA_LIBS is
always determined with FIND_LIBRARY?  This would make it and X11_LIBRARIES
consistently fullpath on all platforms.

I don't think I am going to make a change for 2.6 like this as it is likely not to work every where it does now. Also, it is not required to have full paths.


I think these -l forms of libraries just slipped through as some ancient
(autoconf?) boilerplate for X11_X_EXTRA_LIBS that has propagated to all
FindX11.cmake versions in contradiction to the recommendation that libraries
are supposed to be in fullpath form for 2.6.x.

Furthermore, making X11_LIBRARIES fullpath would benefit the PLplot build
(and presumably other builds as well). When first setting up the CMake-based
build system for PLplot, I either copied from our previous autotools-based
build system or I may have noticed the potential for -l flags in
X11_LIBRARIES.  But in any case, I prepended X11_LIBRARIES with
"-L${X11_LIBRARY_DIR}" so that our users could have a non-standard install
location for X (especially important for this era of frantic X development
activity where some X testers may have multiple versions of X installed on
their platform). However, this -L flag leads to CMP0003 warnings for the
2.6.0 release candidate since fullpath libraries are preferred for 2.6.x.
(Also, X11_LIBRARY_DIR is an undocumented variable for FindX11.cmake which
I would prefer not to depend upon in the long term.)

Of course, there are workaround for CMP0003 warnings, but the clean solution would be if a CMake developer would simply change FindX11.cmake in cmake cvs
and also for 2.6.0 so that X11_X_EXTRA_LIBS and therefore X11_LIBRARIES are
always consistently fullpath.  That would allow me to stop prepending
"-L${X11_LIBRARY_DIR}" to X11_LIBRARIES which would eliminate the CMP0003

You should never use -L directly.....  link_directories should be used.

warnings without compromising the need of some who require a non-standard
install location for X.

I guess I would suggest that you should experiment with a new version of FindX11 in plplot. If you find it works well, we can look at it for inclusion in 2.6.1. In the long run full paths would be a good idea for FindX11, but not a requirement right now.

Thanks.


-Bill
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to