blob: 1e01135a082d8c1a520c6683f1450497d4a30713 (
plain)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# - Try to find Strigi, a fast and small desktop search program (http://strigi.sourceforge.net )
include(FindLibraryWithDebug)
include(MacroPushRequiredVars)
if(NOT STRIGI_MIN_VERSION)
set(STRIGI_MIN_VERSION "0.5.9")
endif(NOT STRIGI_MIN_VERSION)
if (NOT WIN32)
find_package(PkgConfig)
pkg_check_modules(STRIGI libstreamanalyzer>=${STRIGI_MIN_VERSION})
endif(NOT WIN32)
if (WIN32)
file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _program_FILES_DIR)
endif(WIN32)
file(TO_CMAKE_PATH "$ENV{STRIGI_HOME}" strigi_home)
find_library_with_debug(STRIGI_STREAMANALYZER_LIBRARY
WIN32_DEBUG_POSTFIX d
NAMES streamanalyzer
PATHS
${strigi_home}/lib
${STRIGI_LIBRARY_DIRS}
${_program_FILES_DIR}/strigi/lib
)
find_library_with_debug(STRIGI_STREAMS_LIBRARY
WIN32_DEBUG_POSTFIX d
NAMES streams
PATHS
${strigi_home}/lib
${STRIGI_LIBRARY_DIRS}
${_program_FILES_DIR}/strigi/lib
)
find_library_with_debug(STRIGI_STRIGIQTDBUSCLIENT_LIBRARY
WIN32_DEBUG_POSTFIX d
NAMES strigiqtdbusclient
PATHS
${strigi_home}/lib
${STRIGI_LIBRARY_DIRS}
${_program_FILES_DIR}/strigi/lib
)
if (STRIGI_FOUND)
# Check for the SIC change between 0.5.9 and 0.6.0...
MACRO(MACRO_CHECK_STRIGI_API_SCREWUP _RETTYPE _RESULT)
SET (_STRIGI_API_SCREWUP_SOURCE_CODE "
#include <strigi/streamendanalyzer.h>
using namespace Strigi;
class ScrewupEndAnalyzer : public StreamEndAnalyzer {
public:
ScrewupEndAnalyzer() {}
bool checkHeader(const char*, int32_t) const { return false; }
${_RETTYPE} analyze(Strigi::AnalysisResult&, InputStream*) {
return -1;
}
const char* name() const { return \"Write 1000 times: I promise to keep source compat next time\"; }
};
int main()
{
ScrewupEndAnalyzer a;
return 0;
}
")
CHECK_CXX_SOURCE_COMPILES("${_STRIGI_API_SCREWUP_SOURCE_CODE}" ${_RESULT})
ENDMACRO(MACRO_CHECK_STRIGI_API_SCREWUP)
INCLUDE(CheckCXXSourceCompiles)
macro_push_required_vars()
set( CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${STRIGI_INCLUDEDIR} )
set( CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${STRIGI_STREAMS_LIBRARY} ${STRIGI_STREAMANALYZER_LIBRARY} )
MACRO_CHECK_STRIGI_API_SCREWUP( "signed char" STRIGI_NEEDS_SIGNED_CHAR )
MACRO_CHECK_STRIGI_API_SCREWUP( "char" STRIGI_NEEDS_CHAR )
set( STRIGI_NEEDS_SIGNED_CHAR ${STRIGI_NEEDS_SIGNED_CHAR} CACHE BOOL "TRUE if strigi is 0.6.0 or later" )
set( STRIGI_NEEDS_CHAR ${STRIGI_NEEDS_CHAR} CACHE BOOL "TRUE if strigi is 0.5.9 or before" )
if (STRIGI_NEEDS_SIGNED_CHAR)
message(STATUS "Strigi API is post-screwup, needs 'signed char'")
else (STRIGI_NEEDS_SIGNED_CHAR)
if (STRIGI_NEEDS_CHAR)
message(STATUS "Strigi API is pre-screwup check, need 'char'")
else (STRIGI_NEEDS_CHAR)
message(FATAL_ERROR "Strigi was found, but a simple test program does not compile, check CMakeFiles/CMakeError.log")
endif (STRIGI_NEEDS_CHAR)
endif (STRIGI_NEEDS_SIGNED_CHAR)
macro_pop_required_vars()
endif (STRIGI_FOUND)
if(WIN32)
# this is needed to have mingw, cygwin and msvc libs installed in one directory
if(MSVC)
set(STRIGI_LINE_ANALYZER_PREFIX msvc_strigila_)
elseif(CYGWIN)
set(STRIGI_LINE_ANALYZER_PREFIX cyg_strigila_)
elseif(MINGW)
set(STRIGI_LINE_ANALYZER_PREFIX mingw_strigila_)
endif(MSVC)
else(WIN32)
set(STRIGI_LINE_ANALYZER_PREFIX strigila_)
endif(WIN32)
if(WIN32)
# this is needed to have mingw, cygwin and msvc libs installed in one directory
if(MSVC)
set(STRIGI_THROUGH_ANALYZER_PREFIX msvc_strigita_)
elseif(CYGWIN)
set(STRIGI_THROUGH_ANALYZER_PREFIX cyg_strigita_)
elseif(MINGW)
set(STRIGI_THROUGH_ANALYZER_PREFIX mingw_strigita_)
endif(MSVC)
else(WIN32)
set(STRIGI_THROUGH_ANALYZER_PREFIX strigita_)
endif(WIN32)
mark_as_advanced(
STRIGI_STREAMANALYZER_LIBRARY
STRIGI_STREAMS_LIBRARY
STRIGI_STRIGIQTDBUSCLIENT_LIBRARY
STRIGI_LINE_ANALYZER_PREFIX
STRIGI_THROUGH_ANALYZER_PREFIX
STRIGI_NEEDS_SIGNED_CHAR
STRIGI_NEEDS_CHAR
)
|