1# Attempts to discover terminfo library with a linkable setupterm function. 2# 3# Example usage: 4# 5# find_package(Terminfo) 6# 7# If successful, the following variables will be defined: 8# Terminfo_FOUND 9# Terminfo_LIBRARIES 10# 11# Additionally, the following import target will be defined: 12# Terminfo::terminfo 13 14find_library(Terminfo_LIBRARIES NAMES terminfo tinfo curses ncurses ncursesw) 15 16if(Terminfo_LIBRARIES) 17 include(CMakePushCheckState) 18 include(CheckCSourceCompiles) 19 cmake_push_check_state() 20 list(APPEND CMAKE_REQUIRED_LIBRARIES ${Terminfo_LIBRARIES}) 21 check_c_source_compiles(" 22 int setupterm(char *term, int filedes, int *errret); 23 int main(void) { return setupterm(0, 0, 0); }" 24 Terminfo_LINKABLE) 25 cmake_pop_check_state() 26endif() 27 28include(FindPackageHandleStandardArgs) 29find_package_handle_standard_args(Terminfo 30 FOUND_VAR 31 Terminfo_FOUND 32 REQUIRED_VARS 33 Terminfo_LIBRARIES 34 Terminfo_LINKABLE) 35mark_as_advanced(Terminfo_LIBRARIES 36 Terminfo_LINKABLE) 37 38if(Terminfo_FOUND) 39 if(NOT TARGET Terminfo::terminfo) 40 add_library(Terminfo::terminfo UNKNOWN IMPORTED) 41 set_target_properties(Terminfo::terminfo PROPERTIES IMPORTED_LOCATION "${Terminfo_LIBRARIES}") 42 endif() 43endif() 44