Merge topic 'FindCurses-overhaul'
6c8364e6 FindCurses: Overhaul Curses and NCurses search logic (#15011)
This commit is contained in:
commit
41fc00820a
@ -2,28 +2,43 @@
|
|||||||
# FindCurses
|
# FindCurses
|
||||||
# ----------
|
# ----------
|
||||||
#
|
#
|
||||||
# Find the curses include file and library
|
# Find the curses or ncurses include file and library.
|
||||||
#
|
#
|
||||||
|
# Result Variables
|
||||||
|
# ^^^^^^^^^^^^^^^^
|
||||||
#
|
#
|
||||||
|
# This module defines the following variables:
|
||||||
#
|
#
|
||||||
# ::
|
# ``CURSES_FOUND``
|
||||||
|
# True if Curses is found.
|
||||||
|
# ``CURSES_INCLUDE_DIRS``
|
||||||
|
# The include directories needed to use Curses.
|
||||||
|
# ``CURSES_LIBRARIES``
|
||||||
|
# The libraries needed to use Curses.
|
||||||
|
# ``CURSES_HAVE_CURSES_H``
|
||||||
|
# True if curses.h is available.
|
||||||
|
# ``CURSES_HAVE_NCURSES_H``
|
||||||
|
# True if ncurses.h is available.
|
||||||
|
# ``CURSES_HAVE_NCURSES_NCURSES_H``
|
||||||
|
# True if ``ncurses/ncurses.h`` is available.
|
||||||
|
# ``CURSES_HAVE_NCURSES_CURSES_H``
|
||||||
|
# True if ``ncurses/curses.h`` is available.
|
||||||
#
|
#
|
||||||
# CURSES_FOUND - system has Curses
|
# Set ``CURSES_NEED_NCURSES`` to ``TRUE`` before the
|
||||||
# CURSES_INCLUDE_DIR - the Curses include directory
|
# ``find_package(Curses)`` call if NCurses functionality is required.
|
||||||
# CURSES_LIBRARIES - The libraries needed to use Curses
|
|
||||||
# CURSES_HAVE_CURSES_H - true if curses.h is available
|
|
||||||
# CURSES_HAVE_NCURSES_H - true if ncurses.h is available
|
|
||||||
# CURSES_HAVE_NCURSES_NCURSES_H - true if ncurses/ncurses.h is available
|
|
||||||
# CURSES_HAVE_NCURSES_CURSES_H - true if ncurses/curses.h is available
|
|
||||||
# CURSES_LIBRARY - set for backwards compatibility with 2.4 CMake
|
|
||||||
#
|
#
|
||||||
|
# Backward Compatibility
|
||||||
|
# ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
#
|
#
|
||||||
|
# The following variable are provided for backward compatibility:
|
||||||
#
|
#
|
||||||
# Set CURSES_NEED_NCURSES to TRUE before the find_package() command if
|
# ``CURSES_INCLUDE_DIR``
|
||||||
# NCurses functionality is required.
|
# Path to Curses include. Use ``CURSES_INCLUDE_DIRS`` instead.
|
||||||
|
# ``CURSES_LIBRARY``
|
||||||
|
# Path to Curses library. Use ``CURSES_LIBRARIES`` instead.
|
||||||
|
|
||||||
#=============================================================================
|
#=============================================================================
|
||||||
# Copyright 2001-2009 Kitware, Inc.
|
# Copyright 2001-2014 Kitware, Inc.
|
||||||
#
|
#
|
||||||
# Distributed under the OSI-approved BSD License (the "License");
|
# Distributed under the OSI-approved BSD License (the "License");
|
||||||
# see accompanying file Copyright.txt for details.
|
# see accompanying file Copyright.txt for details.
|
||||||
@ -84,59 +99,27 @@ if(CURSES_CURSES_LIBRARY AND CURSES_NEED_NCURSES)
|
|||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(CURSES_USE_NCURSES)
|
||||||
if(NOT CURSES_USE_NCURSES)
|
|
||||||
find_file(CURSES_HAVE_CURSES_H curses.h )
|
|
||||||
find_path(CURSES_CURSES_H_PATH curses.h )
|
|
||||||
get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
|
|
||||||
get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
|
|
||||||
|
|
||||||
# for compatibility with older FindCurses.cmake this has to be in the cache
|
|
||||||
# FORCE must not be used since this would break builds which preload a cache wqith these variables set
|
|
||||||
set(CURSES_INCLUDE_PATH "${CURSES_CURSES_H_PATH}"
|
|
||||||
CACHE FILEPATH "The curses include path")
|
|
||||||
set(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}"
|
|
||||||
CACHE FILEPATH "The curses library")
|
|
||||||
else()
|
|
||||||
# we need to find ncurses
|
|
||||||
get_filename_component(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH)
|
get_filename_component(_cursesLibDir "${CURSES_NCURSES_LIBRARY}" PATH)
|
||||||
get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
|
get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
|
||||||
|
|
||||||
find_file(CURSES_HAVE_NCURSES_H ncurses.h)
|
# Use CURSES_NCURSES_INCLUDE_PATH if set, for compatibility.
|
||||||
find_file(CURSES_HAVE_NCURSES_NCURSES_H ncurses/ncurses.h)
|
if(CURSES_NCURSES_INCLUDE_PATH)
|
||||||
find_file(CURSES_HAVE_NCURSES_CURSES_H ncurses/curses.h)
|
find_path(CURSES_INCLUDE_PATH
|
||||||
find_file(CURSES_HAVE_CURSES_H curses.h
|
NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
|
||||||
HINTS "${_cursesParentDir}/include")
|
PATHS ${CURSES_NCURSES_INCLUDE_PATH}
|
||||||
|
NO_DEFAULT_PATH
|
||||||
find_path(CURSES_NCURSES_INCLUDE_PATH ncurses.h ncurses/ncurses.h
|
)
|
||||||
ncurses/curses.h)
|
|
||||||
find_path(CURSES_NCURSES_INCLUDE_PATH curses.h
|
|
||||||
HINTS "${_cursesParentDir}/include")
|
|
||||||
|
|
||||||
# for compatibility with older FindCurses.cmake this has to be in the cache
|
|
||||||
# FORCE must not be used since this would break builds which preload
|
|
||||||
# however if the value of the variable has NOTFOUND in it, then
|
|
||||||
# it is OK to force, and we need to force in order to have it work.
|
|
||||||
# a cache wqith these variables set
|
|
||||||
# only put ncurses include and library into
|
|
||||||
# variables if they are found
|
|
||||||
if(NOT CURSES_NCURSES_INCLUDE_PATH AND CURSES_HAVE_NCURSES_NCURSES_H)
|
|
||||||
get_filename_component(CURSES_NCURSES_INCLUDE_PATH
|
|
||||||
"${CURSES_HAVE_NCURSES_NCURSES_H}" PATH)
|
|
||||||
endif()
|
endif()
|
||||||
if(CURSES_NCURSES_INCLUDE_PATH AND CURSES_NCURSES_LIBRARY)
|
|
||||||
set( FORCE_IT )
|
find_path(CURSES_INCLUDE_PATH
|
||||||
if(CURSES_INCLUDE_PATH MATCHES NOTFOUND)
|
NAMES ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h
|
||||||
set(FORCE_IT FORCE)
|
HINTS "${_cursesParentDir}/include"
|
||||||
endif()
|
)
|
||||||
set(CURSES_INCLUDE_PATH "${CURSES_NCURSES_INCLUDE_PATH}"
|
|
||||||
CACHE FILEPATH "The curses include path" ${FORCE_IT})
|
# Previous versions of FindCurses provided these values.
|
||||||
set( FORCE_IT)
|
if(NOT DEFINED CURSES_LIBRARY)
|
||||||
if(CURSES_LIBRARY MATCHES NOTFOUND)
|
set(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}")
|
||||||
set(FORCE_IT FORCE)
|
|
||||||
endif()
|
|
||||||
set(CURSES_LIBRARY "${CURSES_NCURSES_LIBRARY}"
|
|
||||||
CACHE FILEPATH "The curses library" ${FORCE_IT})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
|
CHECK_LIBRARY_EXISTS("${CURSES_NCURSES_LIBRARY}"
|
||||||
@ -147,6 +130,52 @@ else()
|
|||||||
CHECK_LIBRARY_EXISTS("${CURSES_EXTRA_LIBRARY}"
|
CHECK_LIBRARY_EXISTS("${CURSES_EXTRA_LIBRARY}"
|
||||||
cbreak "" CURSES_TINFO_HAS_CBREAK)
|
cbreak "" CURSES_TINFO_HAS_CBREAK)
|
||||||
endif()
|
endif()
|
||||||
|
else()
|
||||||
|
get_filename_component(_cursesLibDir "${CURSES_CURSES_LIBRARY}" PATH)
|
||||||
|
get_filename_component(_cursesParentDir "${_cursesLibDir}" PATH)
|
||||||
|
|
||||||
|
find_path(CURSES_INCLUDE_PATH
|
||||||
|
NAMES curses.h
|
||||||
|
HINTS "${_cursesParentDir}/include"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Previous versions of FindCurses provided these values.
|
||||||
|
if(NOT DEFINED CURSES_CURSES_H_PATH)
|
||||||
|
set(CURSES_CURSES_H_PATH "${CURSES_INCLUDE_PATH}")
|
||||||
|
endif()
|
||||||
|
if(NOT DEFINED CURSES_LIBRARY)
|
||||||
|
set(CURSES_LIBRARY "${CURSES_CURSES_LIBRARY}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Report whether each possible header name exists in the include directory.
|
||||||
|
if(NOT DEFINED CURSES_HAVE_NCURSES_NCURSES_H)
|
||||||
|
if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
|
||||||
|
set(CURSES_HAVE_NCURSES_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses/ncurses.h")
|
||||||
|
else()
|
||||||
|
set(CURSES_HAVE_NCURSES_NCURSES_H "CURSES_HAVE_NCURSES_NCURSES_H-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(NOT DEFINED CURSES_HAVE_NCURSES_CURSES_H)
|
||||||
|
if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
|
||||||
|
set(CURSES_HAVE_NCURSES_CURSES_H "${CURSES_INCLUDE_PATH}/ncurses/curses.h")
|
||||||
|
else()
|
||||||
|
set(CURSES_HAVE_NCURSES_CURSES_H "CURSES_HAVE_NCURSES_CURSES_H-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(NOT DEFINED CURSES_HAVE_NCURSES_H)
|
||||||
|
if(EXISTS "${CURSES_INCLUDE_PATH}/ncurses.h")
|
||||||
|
set(CURSES_HAVE_NCURSES_H "${CURSES_INCLUDE_PATH}/ncurses.h")
|
||||||
|
else()
|
||||||
|
set(CURSES_HAVE_NCURSES_H "CURSES_HAVE_NCURSES_H-NOTFOUND")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(NOT DEFINED CURSES_HAVE_CURSES_H)
|
||||||
|
if(EXISTS "${CURSES_INCLUDE_PATH}/curses.h")
|
||||||
|
set(CURSES_HAVE_CURSES_H "${CURSES_INCLUDE_PATH}/curses.h")
|
||||||
|
else()
|
||||||
|
set(CURSES_HAVE_CURSES_H "CURSES_HAVE_CURSES_H-NOTFOUND")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT CURSES_TINFO_HAS_CBREAK)
|
if (NOT CURSES_TINFO_HAS_CBREAK)
|
||||||
@ -157,11 +186,10 @@ endif()
|
|||||||
find_library(CURSES_FORM_LIBRARY form HINTS "${_cursesLibDir}")
|
find_library(CURSES_FORM_LIBRARY form HINTS "${_cursesLibDir}")
|
||||||
find_library(CURSES_FORM_LIBRARY form )
|
find_library(CURSES_FORM_LIBRARY form )
|
||||||
|
|
||||||
# for compatibility with older FindCurses.cmake this has to be in the cache
|
# Previous versions of FindCurses provided these values.
|
||||||
# FORCE must not be used since this would break builds which preload a cache
|
if(NOT DEFINED FORM_LIBRARY)
|
||||||
# qith these variables set
|
set(FORM_LIBRARY "${CURSES_FORM_LIBRARY}")
|
||||||
set(FORM_LIBRARY "${CURSES_FORM_LIBRARY}"
|
endif()
|
||||||
CACHE FILEPATH "The curses form library")
|
|
||||||
|
|
||||||
# Need to provide the *_LIBRARIES
|
# Need to provide the *_LIBRARIES
|
||||||
set(CURSES_LIBRARIES ${CURSES_LIBRARY})
|
set(CURSES_LIBRARIES ${CURSES_LIBRARY})
|
||||||
@ -174,8 +202,9 @@ if(CURSES_FORM_LIBRARY)
|
|||||||
set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
|
set(CURSES_LIBRARIES ${CURSES_LIBRARIES} ${CURSES_FORM_LIBRARY})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Proper name is *_INCLUDE_DIR
|
# Provide the *_INCLUDE_DIRS result.
|
||||||
set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH})
|
set(CURSES_INCLUDE_DIRS ${CURSES_INCLUDE_PATH})
|
||||||
|
set(CURSES_INCLUDE_DIR ${CURSES_INCLUDE_PATH}) # compatibility
|
||||||
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set CURSES_FOUND to TRUE if
|
# handle the QUIETLY and REQUIRED arguments and set CURSES_FOUND to TRUE if
|
||||||
# all listed variables are TRUE
|
# all listed variables are TRUE
|
||||||
@ -185,17 +214,7 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(Curses DEFAULT_MSG
|
|||||||
|
|
||||||
mark_as_advanced(
|
mark_as_advanced(
|
||||||
CURSES_INCLUDE_PATH
|
CURSES_INCLUDE_PATH
|
||||||
CURSES_LIBRARY
|
|
||||||
CURSES_CURSES_INCLUDE_PATH
|
|
||||||
CURSES_CURSES_LIBRARY
|
CURSES_CURSES_LIBRARY
|
||||||
CURSES_NCURSES_INCLUDE_PATH
|
|
||||||
CURSES_NCURSES_LIBRARY
|
CURSES_NCURSES_LIBRARY
|
||||||
CURSES_EXTRA_LIBRARY
|
CURSES_EXTRA_LIBRARY
|
||||||
FORM_LIBRARY
|
|
||||||
CURSES_LIBRARIES
|
|
||||||
CURSES_INCLUDE_DIR
|
|
||||||
CURSES_CURSES_HAS_WSYNCUP
|
|
||||||
CURSES_NCURSES_HAS_WSYNCUP
|
|
||||||
CURSES_NCURSES_HAS_CBREAK
|
|
||||||
CURSES_TINFO_HAS_CBREAK
|
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user