summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Boeckel <ben.boeckel@kitware.com>2020-08-06 12:38:04 -0400
committerBen Boeckel <ben.boeckel@kitware.com>2020-08-07 09:41:38 -0400
commit98844ec9db5fe4dc4e236f3852d4f3e88a4a9e76 (patch)
tree0990a65c3e2e9b4cbc6370c285290b8b1a28ca35
parentd421274e3e11a0e6480358faa8a8e5cf48d7b3c2 (diff)
downloadcmake-98844ec9db5fe4dc4e236f3852d4f3e88a4a9e76.tar.gz
FPHSA: detect inclusion between find modules
Various find modules include each other to delegate finding some subset or variant of the package. Ideally, these would use `find_dependency` or some other actual `find_package` mechanism, but that is a larger change. Instead, just detect inclusion and suppress FPHSA name mismatch warnings. Fixes: #21060
-rw-r--r--Modules/FindOpenGL.cmake7
-rw-r--r--Modules/FindPerl.cmake7
-rw-r--r--Modules/FindQt3.cmake7
-rw-r--r--Modules/FindQt4.cmake8
-rw-r--r--Modules/FindTCL.cmake6
-rw-r--r--Modules/FindTclsh.cmake9
-rw-r--r--Modules/FindX11.cmake8
7 files changed, 52 insertions, 0 deletions
diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake
index 74392dac3e..17ffe85b3f 100644
--- a/Modules/FindOpenGL.cmake
+++ b/Modules/FindOpenGL.cmake
@@ -424,8 +424,15 @@ if(OPENGL_EGL_INCLUDE_DIR)
endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "GLU")
+ # FindGLU include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive to
+ # the contents, detect the case in this module and suppress it explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGL REQUIRED_VARS ${_OpenGL_REQUIRED_VARS}
HANDLE_COMPONENTS)
+unset(FPHSA_NAME_MISMATCHED)
unset(_OpenGL_REQUIRED_VARS)
# OpenGL:: targets
diff --git a/Modules/FindPerl.cmake b/Modules/FindPerl.cmake
index fd120bf8e7..c14e059e99 100644
--- a/Modules/FindPerl.cmake
+++ b/Modules/FindPerl.cmake
@@ -73,8 +73,15 @@ endif()
set(PERL ${PERL_EXECUTABLE})
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "PerlLibs")
+ # FindPerlLibs include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive to
+ # the contents, detect the case in this module and suppress it explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Perl
REQUIRED_VARS PERL_EXECUTABLE
VERSION_VAR PERL_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
mark_as_advanced(PERL_EXECUTABLE)
diff --git a/Modules/FindQt3.cmake b/Modules/FindQt3.cmake
index 563ed46eca..b5bc8b1cfa 100644
--- a/Modules/FindQt3.cmake
+++ b/Modules/FindQt3.cmake
@@ -201,9 +201,16 @@ endif()
# if the include a library are found then we have it
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "Qt")
+ # FindQt include()'s this module. It's an old pattern, but rather than trying
+ # to suppress this from outside the module (which is then sensitive to the
+ # contents, detect the case in this module and suppress it explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt3
REQUIRED_VARS QT_QT_LIBRARY QT_INCLUDE_DIR QT_MOC_EXECUTABLE
VERSION_VAR QT_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
set(QT_FOUND ${QT3_FOUND} )
if(QT_FOUND)
diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
index 399396802c..2e3da746bc 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -1318,10 +1318,18 @@ if (NOT QT_VERSION_MAJOR EQUAL 4)
endif()
endif()
else()
+ if (CMAKE_FIND_PACKAGE_NAME STREQUAL "Qt")
+ # FindQt include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive
+ # to the contents, detect the case in this module and suppress it
+ # explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+ endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Qt4 FOUND_VAR Qt4_FOUND
REQUIRED_VARS ${_QT4_FOUND_REQUIRED_VARS}
VERSION_VAR QTVERSION
)
+ unset(FPHSA_NAME_MISMATCHED)
endif()
#######################################
diff --git a/Modules/FindTCL.cmake b/Modules/FindTCL.cmake
index 960265f9f5..9b771dcd7a 100644
--- a/Modules/FindTCL.cmake
+++ b/Modules/FindTCL.cmake
@@ -223,6 +223,12 @@ find_path(TK_INCLUDE_PATH
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "TclStub")
+ # FindTclStub include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive to
+ # the contents, detect the case in this module and suppress it explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL DEFAULT_MSG TCL_LIBRARY TCL_INCLUDE_PATH)
set(FPHSA_NAME_MISMATCHED 1)
set(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
diff --git a/Modules/FindTclsh.cmake b/Modules/FindTclsh.cmake
index 82be473b19..5555d5960e 100644
--- a/Modules/FindTclsh.cmake
+++ b/Modules/FindTclsh.cmake
@@ -92,8 +92,17 @@ if(TCL_TCLSH)
endif()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if (CMAKE_FIND_PACKAGE_NAME STREQUAL "TCL" OR
+ CMAKE_FIND_PACKAGE_NAME STREQUAL "TclStub")
+ # FindTCL include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive to
+ # the contents, detect the case in this module and suppress it explicitly.
+ # Transitively, FindTclStub includes FindTCL.
+ set(FPHSA_NAME_MISMATCHED 1)
+endif ()
FIND_PACKAGE_HANDLE_STANDARD_ARGS(Tclsh
REQUIRED_VARS TCL_TCLSH
VERSION_VAR TCLSH_VERSION_STRING)
+unset(FPHSA_NAME_MISMATCHED)
mark_as_advanced(TCL_TCLSH)
diff --git a/Modules/FindX11.cmake b/Modules/FindX11.cmake
index aa83575ebe..ccd0252661 100644
--- a/Modules/FindX11.cmake
+++ b/Modules/FindX11.cmake
@@ -404,9 +404,17 @@ if (UNIX)
endif ()
include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+ if (CMAKE_FIND_PACKAGE_NAME STREQUAL "FLTK")
+ # FindFLTK include()'s this module. It's an old pattern, but rather than
+ # trying to suppress this from outside the module (which is then sensitive
+ # to the contents, detect the case in this module and suppress it
+ # explicitly.
+ set(FPHSA_NAME_MISMATCHED 1)
+ endif ()
find_package_handle_standard_args(X11
REQUIRED_VARS X11_X11_INCLUDE_PATH X11_X11_LIB
HANDLE_COMPONENTS)
+ unset(FPHSA_NAME_MISMATCHED)
if(X11_FOUND)
include(${CMAKE_CURRENT_LIST_DIR}/CheckFunctionExists.cmake)