From c0467a725eaf545bf4c61bf2a2f5cd9c3fac3cfd Mon Sep 17 00:00:00 2001
From: drausch <dominik.rausch@rwth-aachen.de>
Date: Thu, 29 Mar 2012 12:15:41 +0000
Subject: [PATCH] UPD: when finding a package over the reference in
 VistaCMakeCommon/share, the PackageName_DIR now shows the target directory,
 not the directory in VistaCMakeCommon/share

git-svn-id: https://svn.rwth-aachen.de/repos/vrgroup-svn/projects/VistaCMakeCommon/trunk@29746 33c38b33-09d2-4561-8d4d-1bfa2f58f885
---
 FindVOpenSceneGraph.cmake          |  1 -
 PackageConfigReference.cmake_proto |  3 ++-
 VistaCommon.cmake                  | 14 +++++++++++---
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/FindVOpenSceneGraph.cmake b/FindVOpenSceneGraph.cmake
index 3d9a97f..8e28b7e 100644
--- a/FindVOpenSceneGraph.cmake
+++ b/FindVOpenSceneGraph.cmake
@@ -27,7 +27,6 @@ include( VistaFindUtils )
 	if( OPENSCENEGRAPH_LIBRARY_DIRS )
 		list( REMOVE_DUPLICATES OPENSCENEGRAPH_LIBRARY_DIRS )
 	endif()
-	message( "OPENSCENEGRAPH_LIBRARY_DIRS = ${OPENSCENEGRAPH_LIBRARY_DIRS}" )
 
 #endif( NOT VOPENSCENEGRAPH_FOUND )
 
diff --git a/PackageConfigReference.cmake_proto b/PackageConfigReference.cmake_proto
index 1b0474d..efa537e 100644
--- a/PackageConfigReference.cmake_proto
+++ b/PackageConfigReference.cmake_proto
@@ -3,7 +3,8 @@ set( @_PACKAGE_NAME_UPPER@_REFERENCED_FILE "@_REFERENCED_FILE@" )
 if( EXISTS "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" )
 	if( NOT PACKAGE_REFERENCE_EXISTS_TEST )
 		# we let the variable XYZ_DIR to the actual config file
-		set( @_PACKAGE_NAME@_DIR ${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE} )
+		get_filename_component( @_PACKAGE_NAME@_DIR  "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" PATH )
+		set( @_PACKAGE_NAME@_ACTUAL_DIR "${@_PACKAGE_NAME@_DIR}" )
 		include( ${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE} )
 	endif( NOT PACKAGE_REFERENCE_EXISTS_TEST )
 else( EXISTS "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" )
diff --git a/VistaCommon.cmake b/VistaCommon.cmake
index 9579e04..8818202 100644
--- a/VistaCommon.cmake
+++ b/VistaCommon.cmake
@@ -210,7 +210,7 @@ function( local_use_existing_config_libs _NAME _ROOT_DIR _CONFIG_FILE _LIBRARY_D
 	string( TOUPPER ${_NAME} _NAME_UPPER )
 	if( EXISTS "${_CONFIG_FILE}" )
 		include( ${_CONFIG_FILE} )
-		get_filename_component( ${_NAME_UPPER}_ROOT_DIR ${${_NAME_UPPER}_ROOT_DIR} REALPATH )
+		get_filename_component( ${_NAME_UPPER}_ROOT_DIR "${${_NAME_UPPER}_ROOT_DIR}" REALPATH )
 		if( "${${_NAME_UPPER}_ROOT_DIR}" STREQUAL "${_ROOT_DIR}" )
 			if( ${_NAME_UPPER}_LIBRARY_DIRS )
 				list( APPEND ${_LIBRARY_DIR_LIST} "${${_NAME_UPPER}_LIBRARY_DIRS}" )
@@ -543,7 +543,7 @@ macro( vista_find_package _PACKAGE_NAME )
 			if( NOT ${_PACKAGE_NAME_UPPER}_FOUND AND ${_PACKAGE_NAME}_FOUND )
 				set( ${_PACKAGE_NAME_UPPER}_FOUND ${${_PACKAGE_NAME}_FOUND} )
 			endif()
-		else( _FIND_VMODULE_EXISTS )
+		else()
 			if( NOT ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 				# we look for additional directories to search for the config files
 				# we also search for CoreLibs directories manually
@@ -568,9 +568,17 @@ macro( vista_find_package _PACKAGE_NAME )
 				endif( ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 			endif( NOT ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 
+			set( ${_PACKAGE_NAME}_ACTUAL_DIR )
+			
 			find_package( ${_PACKAGE_NAME} ${_PACKAGE_VERSION} ${_FIND_PACKAGE_ARGS}
 							PATHS ${${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS} ${VISTA_PACKAGE_SEARCH_PATHS} )
-		endif( _FIND_VMODULE_EXISTS )
+							
+			# in case we dound a reference file (e.g. in VistaCMakeCommon/share), the Package_DIR would point
+			# to the reference. Instead, we want it to point to the actual file directory
+			if( ${_PACKAGE_NAME}_ACTUAL_DIR )
+				set( ${_PACKAGE_NAME}_DIR "${${_PACKAGE_NAME}_ACTUAL_DIR}" CACHE PATH "The directory containing a CMake configuration file for $_PACKAGE_NAME}" FORCE )
+			endif()
+		endif()
 
 	endif( _DO_FIND )
 
-- 
GitLab