~ubuntu-branches/ubuntu/trusty/fcitx/trusty-proposed

« back to all changes in this revision

Viewing changes to cmake/FindPresage.cmake

  • Committer: Package Import Robot
  • Author(s): Aron Xu
  • Date: 2013-02-10 17:03:56 UTC
  • mfrom: (1.3.18) (33.1.3 experimental)
  • Revision ID: package-import@ubuntu.com-20130210170356-2yuv6xy3ed378kn0
Tags: 1:4.2.7-1
* New upstream release.
* New binary packages:
  - fcitx-libs-gclient: D-Bus client library for Glib
  - fcitx-libs-qt: D-Bus client library for Qt
  - fcitx-module-quickphrase-editor: Quick Phrase editor module

Show diffs side-by-side

added added

removed removed

Lines of Context:
11
11
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
12
12
 
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)
17
17
 
18
18
find_path(PRESAGE_INCLUDE_DIR
19
 
          NAMES presage.h)
 
19
  NAMES presage.h)
20
20
 
21
21
find_library(PRESAGE_LIBRARIES
22
 
             NAMES presage)
 
22
  NAMES presage)
 
23
 
 
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("
 
38
  #include <stdlib.h>
 
39
  #include <presage.h>
 
40
 
 
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,
 
45
                                     presage_t* result);
 
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,
 
50
                                                      const char* variable,
 
51
                                                      const char* value);
 
52
    presage_error_code_t presage_predict             (presage_t prsg,
 
53
                                                      char*** result);
 
54
    presage_error_code_t presage_completion          (presage_t prsg,
 
55
                                                      const char* token,
 
56
                                                      char** result);
 
57
 
 
58
 
 
59
  const char *get_stream(void *arg)
 
60
  {
 
61
      return \"a\";
 
62
  }
 
63
  int main()
 
64
  {
 
65
      presage_t presage;
 
66
      void *p;
 
67
      char **suggestions = NULL;
 
68
      char *result = NULL;
 
69
      presage_new(get_stream, NULL, get_stream, NULL, &presage);
 
70
      p = 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);
 
76
      presage_free(p);
 
77
      return 0;
 
78
  }
 
79
  " PRESAGE_API_COMPATIBLE)
 
80
  set(CMAKE_REQUIRED_INCLUDES)
 
81
  set(CMAKE_REQUIRED_LIBRARIES)
 
82
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS_BACKUP}")
 
83
endif()
23
84
 
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)
26
88
 
27
89
mark_as_advanced(PRESAGE_INCLUDE_DIR PRESAGE_LIBRARIES)