File: FindReadline.cmake

package info (click to toggle)
neuron 8.2.6-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 34,760 kB
  • sloc: cpp: 149,571; python: 58,465; ansic: 50,329; sh: 3,510; xml: 213; pascal: 51; makefile: 35; sed: 5
file content (59 lines) | stat: -rw-r--r-- 2,065 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# ~~~
# Code copied from sethhall@github
#
# - Try to find readline include dirs and libraries
#
# Usage of this module as follows:
#
#     find_package(Readline)
#
# Variables used by this module, they can change the default behaviour and need
# to be set before calling find_package:
#
#  Readline_ROOT_DIR         Set this variable to the root installation of
#                            readline if the module has problems finding the
#                            proper installation path.
#
# Variables defined by this module:
#
#  READLINE_FOUND            System has readline, include and lib dirs found
#  Readline_INCLUDE_DIR      The readline include directories.
#  Readline_LIBRARY          The readline library.

find_path(Readline_ROOT_DIR NAMES include/readline/readline.h)

find_path(
  Readline_INCLUDE_DIR
  NAMES readline/readline.h
  HINTS ${Readline_ROOT_DIR}/include)

# On platforms like debian/ubuntu with multi-arch support libraries might be under separate
# directory like /usr/lib/x86_64-linux-gnu/ With NVHPC compilers CMake can not find these librarise,
# see
# https://forums.developer.nvidia.com/t/nvhpc-cmake-issues-cmake-library-architecture-is-not-set-and-hence-system-libraries-are-not-found/200659
# Hence, provide extra directories as hint to search for libraries
file(GLOB EXTRA_SEARCH_DIRS "${Readline_ROOT_DIR}/lib*/${CMAKE_SYSTEM_PROCESSOR}-*-*")

find_library(
  Readline_LIBRARY
  NAMES readline
  HINTS ${Readline_ROOT_DIR}/lib ${EXTRA_SEARCH_DIRS})

if(Readline_INCLUDE_DIR
   AND Readline_LIBRARY
   AND Ncurses_LIBRARY)
  set(READLINE_FOUND TRUE)
else(
  Readline_INCLUDE_DIR
  AND Readline_LIBRARY
  AND Ncurses_LIBRARY)
  find_library(Readline_LIBRARY NAMES readline)
  include(FindPackageHandleStandardArgs)
  find_package_handle_standard_args(Readline DEFAULT_MSG Readline_INCLUDE_DIR Readline_LIBRARY)
  mark_as_advanced(Readline_INCLUDE_DIR Readline_LIBRARY)
endif(
  Readline_INCLUDE_DIR
  AND Readline_LIBRARY
  AND Ncurses_LIBRARY)

mark_as_advanced(Readline_ROOT_DIR Readline_INCLUDE_DIR Readline_LIBRARY)