From 00ae36fdfffe39fb71cb54f81990b44be81d6833 Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Wed, 23 May 2012 20:46:48 +0200 Subject: write_basic_package_version_file() now works with unset CMAKE_SIZEOF_VOID_P This fixes #13241. If CMAKE_SIZEOF_VOID_P is not set, either in the installed or in the using project, don't check for it. Alex --- Modules/BasicConfigVersion-AnyNewerVersion.cmake.in | 5 +++++ Modules/BasicConfigVersion-ExactVersion.cmake.in | 5 +++++ Modules/BasicConfigVersion-SameMajorVersion.cmake.in | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in b/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in index cf53db8..9f7f03e 100644 --- a/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in +++ b/Modules/BasicConfigVersion-AnyNewerVersion.cmake.in @@ -18,6 +18,11 @@ else() endif() endif() +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") + return() +endif() + # check that the installed version has the same 32/64bit-ness as the one which is currently searching: if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@") math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") diff --git a/Modules/BasicConfigVersion-ExactVersion.cmake.in b/Modules/BasicConfigVersion-ExactVersion.cmake.in index c610baa..63f3f03 100644 --- a/Modules/BasicConfigVersion-ExactVersion.cmake.in +++ b/Modules/BasicConfigVersion-ExactVersion.cmake.in @@ -34,6 +34,11 @@ if( "${PACKAGE_FIND_VERSION}" STREQUAL "${PACKAGE_VERSION}") endif() +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") + return() +endif() + # check that the installed version has the same 32/64bit-ness as the one which is currently searching: if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@") math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") diff --git a/Modules/BasicConfigVersion-SameMajorVersion.cmake.in b/Modules/BasicConfigVersion-SameMajorVersion.cmake.in index 2317fdb..7bcea88 100644 --- a/Modules/BasicConfigVersion-SameMajorVersion.cmake.in +++ b/Modules/BasicConfigVersion-SameMajorVersion.cmake.in @@ -33,6 +33,11 @@ else() endif() +# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "@CMAKE_SIZEOF_VOID_P@" STREQUAL "") + return() +endif() + # check that the installed version has the same 32/64bit-ness as the one which is currently searching: if(NOT "${CMAKE_SIZEOF_VOID_P}" STREQUAL "@CMAKE_SIZEOF_VOID_P@") math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") -- cgit v0.12 From 14b213c0ceb9fb2882dc41574ebacaf0ef906fc1 Mon Sep 17 00:00:00 2001 From: Alex Neundorf Date: Wed, 23 May 2012 20:48:47 +0200 Subject: add test for #13241: empty SIZEOF_VOIDP in write_basic_package_version_file Alex --- Tests/FindPackageTest/CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Tests/FindPackageTest/CMakeLists.txt b/Tests/FindPackageTest/CMakeLists.txt index 5862094..e85fb4d 100644 --- a/Tests/FindPackageTest/CMakeLists.txt +++ b/Tests/FindPackageTest/CMakeLists.txt @@ -363,10 +363,16 @@ endif() #----------------------------------------------------------------------------- # Test write_basic_config_version_file(). +# also test that an empty CMAKE_SIZEOF_VOID_P is accepted: +set(_CMAKE_SIZEOF_VOID_P ${CMAKE_SIZEOF_VOID_P}) +set(CMAKE_SIZEOF_VOID_P "") + write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/Foo123ConfigVersion.cmake VERSION 1.2.3 COMPATIBILITY AnyNewerVersion) +set(CMAKE_SIZEOF_VOID_P ${_CMAKE_SIZEOF_VOID_P}) + set(PACKAGE_FIND_VERSION 2.3.4) include(${CMAKE_CURRENT_BINARY_DIR}/Foo123ConfigVersion.cmake) if(PACKAGE_VERSION_COMPATIBLE) @@ -379,6 +385,10 @@ if(NOT PACKAGE_VERSION_COMPATIBLE) message(SEND_ERROR "Did not find Foo123 with version 1.2.3 (0.0.1 was requested) !") endif() +if(PACKAGE_VERSION_UNSUITABLE) + message(SEND_ERROR "PACKAGE_VERSION_UNSUITABLE set, but must not be !") +endif() + set(PACKAGE_FIND_VERSION 1.0.0) include(${CMAKE_CURRENT_BINARY_DIR}/Foo123ConfigVersion.cmake) if(NOT PACKAGE_VERSION_COMPATIBLE) @@ -405,6 +415,7 @@ write_basic_config_version_file(${CMAKE_CURRENT_BINARY_DIR}/Boo123ConfigVersion. VERSION 1.2.3 COMPATIBILITY SameMajorVersion) +unset(PACKAGE_VERSION_UNSUITABLE) set(PACKAGE_VERSION_EXACT FALSE) set(PACKAGE_FIND_VERSION 2.3.4) set(PACKAGE_FIND_VERSION_MAJOR 2) @@ -456,6 +467,7 @@ write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/Bar123ConfigVersion VERSION 1.2.3.17 COMPATIBILITY ExactVersion) +unset(PACKAGE_VERSION_UNSUITABLE) set(PACKAGE_VERSION_EXACT FALSE) set(PACKAGE_FIND_VERSION 2.3.4) include(${CMAKE_CURRENT_BINARY_DIR}/Bar123ConfigVersion.cmake) -- cgit v0.12