Hi Robert,
Seems I was only half right given what you asked for. CMP0017 only
says that modules that are found and ran from cmake modules dir should
prefer cmake-provided modules. find_package() and include() still look
in CMAKE_MODULE_PATH first.
After some investigating I've come up with a proposal examplified in
the attached FindGDAL.cmake script. It simply calls the cmake provided
FindGDAL.cmake if it exists and returns if it succeeds in finding GDAL
using that, otherwise continue with our local cmake code.
Pro: Wont clutter our root CMakeLists.txt
Con: If we begin to write more advanced Findxxx modules (using
COMPONENTS, REQUIRED etc.) we may have to revise this scheme.
What do you think?
/Mattias
On Sun, Apr 13, 2014 at 6:07 PM, Robert Osfield
<[email protected]> wrote:
> Hi All,
>
> I have now checked into svn/trunk and the OSG-3.2 branch the rename of
> FindFreeType.cmake to FindFreetype.cmake.
>
> Cheers,
> Robert.
>
> On 13 April 2014 16:59, Robert Osfield <[email protected]> wrote:
>> HI Mattias,
>>
>> I love group contributions. Thanks for pointing out the cmake_policy.
>> Renaming the FindFreeType.cmake to FindFreetype.cmake is what I'll
>> do.
>>
>> Robert.
>>
>> On 13 April 2014 11:13, Mattias Helsing <[email protected]> wrote:
>>> Hi all,
>>> I think this is already handled in the trunk.
>>>
>>> cmake_policy(set CMP0017 NEW)
>>>
>>> ...specifies that cmake (when calling include() or find_package() )
>>> should prefer find modules from it's own module directory over ones
>>> found in CMAKE_MODULE_PATH.
>>>
>>> ...however it seems that we named our script FindFreeType.cmake while
>>> the one in my cmake is called FindFreetype (no capital T). This causes
>>> CMP0017 setting to have no effect
>>> in our case. We could change the name of our script to match the one
>>> in cmake (FindFreetype.cmake) so we can let cmake work as intended
>>> without breaking older machine builds.
>>>
>>> We'd need to modify the root CMakeLists.txt accordingly of course, i.e
>>> find_package(Freetype).
>>> /Mattias
>>>
>>> On Sat, Apr 12, 2014 at 9:50 AM, Robert Osfield
>>> <[email protected]> wrote:
>>>> Hi Guys,
>>>>
>>>> I have just had a look at our CMakeModules directory and the
>>>> cmake-2.8/Modules and found the following overlaps:
>>>>
>>>> FindFLTK.cmake
>>>> FindGDAL.cmake
>>>> FindJasper.cmake
>>>> FindFreetype.cmake
>>>> FindOpenThreads.cmake
>>>> FindQuickTime.cmake
>>>> FindZLIB.cmake
>>>>
>>>> We don't actually use FindOpenThreads.cmake, but like the
>>>> FindOSG.cmake it's really there for inspiration for others. Probably
>>>> would could delete both of these now though.
>>>>
>>>> The rest would potentially could delete, although we'd risk breaking
>>>> the build for people on old systems where they have older version of
>>>> cmake installed.
>>>>
>>>> Is there a way we can use the Cmake versions when available and
>>>> fallback to the OSG ones when they aren't?
>>>>
>>>> Robert.
>>>> _______________________________________________
>>>> osg-submissions mailing list
>>>> [email protected]
>>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
>>> _______________________________________________
>>> osg-submissions mailing list
>>> [email protected]
>>> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
> _______________________________________________
> osg-submissions mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org
# Locate gdal
# This module defines
# GDAL_LIBRARY
# GDAL_FOUND, if false, do not try to link to gdal
# GDAL_INCLUDE_DIR, where to find the headers
#
# $GDALDIR is an environment variable that would
# correspond to the ./configure --prefix=$GDAL_DIR
# used in building gdal.
#
# Created by Eric Wing. I'm not a gdal user, but OpenSceneGraph uses it
# for osgTerrain so I whipped this module together for completeness.
# I actually don't know the conventions or where files are typically
# placed in distros.
# Any real gdal users are encouraged to correct this (but please don't
# break the OS X framework stuff when doing so which is what usually seems
# to happen).
# This makes the presumption that you are include gdal.h like
# #include "gdal.h"
if(EXISTS ${CMAKE_ROOT}/Modules/FindGDAL.cmake)
include(${CMAKE_ROOT}/Modules/FindGDAL.cmake)
if(GDAL_FOUND)
return()
endif()
endif()
FIND_PATH(GDAL_INCLUDE_DIR gdal.h
PATHS
$ENV{GDAL_DIR}
NO_DEFAULT_PATH
PATH_SUFFIXES include
)
FIND_PATH(GDAL_INCLUDE_DIR gdal.h
PATHS ${CMAKE_PREFIX_PATH} # Unofficial: We are proposing this.
NO_DEFAULT_PATH
PATH_SUFFIXES include
)
FIND_PATH(GDAL_INCLUDE_DIR gdal.h
PATHS
~/Library/Frameworks/gdal.framework/Headers
/Library/Frameworks/gdal.framework/Headers
/usr/local/include/gdal
/usr/local/include/GDAL
/usr/local/include
/usr/include/gdal
/usr/include/GDAL
/usr/include
/sw/include/gdal
/sw/include/GDAL
/sw/include # Fink
/opt/local/include/gdal
/opt/local/include/GDAL
/opt/local/include # DarwinPorts
/opt/csw/include/gdal
/opt/csw/include/GDAL
/opt/csw/include # Blastwave
/opt/include/gdal
/opt/include/GDAL
/opt/include
)
FIND_LIBRARY(GDAL_LIBRARY
NAMES gdal gdal_i gdal1.7.0 gdal1.6.0 gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
PATHS
$ENV{GDAL_DIR}
NO_DEFAULT_PATH
PATH_SUFFIXES lib64 lib
)
FIND_LIBRARY(GDAL_LIBRARY
NAMES gdal gdal_i gdal1.7.0 gdal1.6.0 gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
PATHS ${CMAKE_PREFIX_PATH} # Unofficial: We are proposing this.
NO_DEFAULT_PATH
PATH_SUFFIXES lib64 lib
)
FIND_LIBRARY(GDAL_LIBRARY
NAMES gdal gdal_i gdal1.7.0 gdal1.6.0 gdal1.5.0 gdal1.4.0 gdal1.3.2 GDAL
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw
/opt/local
/opt/csw
/opt
/usr/freeware
[HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;GDAL_ROOT]/lib
PATH_SUFFIXES lib64 lib
)
SET(GDAL_FOUND "NO")
IF(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
SET(GDAL_FOUND "YES")
ENDIF(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org