Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 14 | pmbaty | 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 | |||
| 14 | find_library(Terminfo_LIBRARIES NAMES terminfo tinfo curses ncurses ncursesw) |
||
| 15 | |||
| 16 | if(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() |
||
| 26 | endif() |
||
| 27 | |||
| 28 | include(FindPackageHandleStandardArgs) |
||
| 29 | find_package_handle_standard_args(Terminfo |
||
| 30 | FOUND_VAR |
||
| 31 | Terminfo_FOUND |
||
| 32 | REQUIRED_VARS |
||
| 33 | Terminfo_LIBRARIES |
||
| 34 | Terminfo_LINKABLE) |
||
| 35 | mark_as_advanced(Terminfo_LIBRARIES |
||
| 36 | Terminfo_LINKABLE) |
||
| 37 | |||
| 38 | if(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() |
||
| 43 | endif() |