11
11
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
13
13
if(PRESAGE_INCLUDE_DIR AND PRESAGE_LIBRARIES)
14
# Already in cache, be silent
15
set(PRESAGE_FIND_QUIETLY TRUE)
14
# Already in cache, be silent
15
set(PRESAGE_FIND_QUIETLY TRUE)
16
16
endif(PRESAGE_INCLUDE_DIR AND PRESAGE_LIBRARIES)
18
18
find_path(PRESAGE_INCLUDE_DIR
21
21
find_library(PRESAGE_LIBRARIES
24
# so here is the api test for presage since fcitx-spell uses dlopen to load
25
# presage at runtime which would have the risk of api non-compatible.
26
# not really sure if this is the right place to put this test (since only a
27
# small fraction of api are tested) but I don't feel like this should be
28
# put in CMakeLists.txt of fcitx-spell either
29
if(PRESAGE_INCLUDE_DIR AND PRESAGE_LIBRARIES)
30
check_c_compiler_flag("-Werror" PRESAGE_HAVE_WERROR)
31
set(CMAKE_C_FLAGS_BACKUP "${CMAKE_C_FLAGS}")
32
if(PRESAGE_HAVE_WERROR)
33
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
34
endif(PRESAGE_HAVE_WERROR)
35
set(CMAKE_REQUIRED_INCLUDES "${PRESAGE_INCLUDE_DIR}")
36
set(CMAKE_REQUIRED_LIBRARIES "${PRESAGE_LIBRARIES}")
37
check_c_source_compiles("
41
presage_error_code_t presage_new(_presage_callback_get_past_stream past_stream_cb,
42
void* past_stream_cb_arg,
43
_presage_callback_get_future_stream future_stream_cb,
44
void* future_stream_cb_arg,
46
void presage_free (presage_t prsg);
47
void presage_free_string (char* str);
48
void presage_free_string_array (char** str);
49
presage_error_code_t presage_config_set (presage_t prsg,
52
presage_error_code_t presage_predict (presage_t prsg,
54
presage_error_code_t presage_completion (presage_t prsg,
59
const char *get_stream(void *arg)
67
char **suggestions = NULL;
69
presage_new(get_stream, NULL, get_stream, NULL, &presage);
71
presage_config_set(p, \"Presage.Selector.SUGGESTIONS\", \"10\");
72
presage_predict(p, &suggestions);
73
presage_completion(p, *suggestions, &result);
74
presage_free_string(result);
75
presage_free_string_array(suggestions);
79
" PRESAGE_API_COMPATIBLE)
80
set(CMAKE_REQUIRED_INCLUDES)
81
set(CMAKE_REQUIRED_LIBRARIES)
82
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}")
24
85
include(FindPackageHandleStandardArgs)
25
find_package_handle_standard_args(Presage DEFAULT_MSG PRESAGE_LIBRARIES PRESAGE_INCLUDE_DIR)
86
find_package_handle_standard_args(Presage DEFAULT_MSG PRESAGE_LIBRARIES
87
PRESAGE_INCLUDE_DIR PRESAGE_API_COMPATIBLE)
27
89
mark_as_advanced(PRESAGE_INCLUDE_DIR PRESAGE_LIBRARIES)