summaryrefslogtreecommitdiffstats
path: root/ConfigureChecks.cmake
blob: 6b936f765f9056f1ba90eaa4af9ee3f6432412a2 (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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#################################################
#
#  (C) 2010 Serghei Amelian
#  serghei (DOT) amelian (AT) gmail.com
#
#  Improvements and feedback are welcome
#
#  This file is released under GPL >= 2
#
#################################################

# required stuff
find_package( TQt )
find_package( TDE )

tde_setup_architecture_flags( )

include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)


##### check for gcc visibility support

if( WITH_GCC_VISIBILITY )
  tde_setup_gcc_visibility( )
endif( WITH_GCC_VISIBILITY )


##### find X11

find_package( X11)


##### check for headers

check_include_file( unistd.h   HAVE_UNISTD_H        )
check_include_file( string.h   HAVE_STRING_H        )
check_include_file( sys/time.h HAVE_SYS_TIME_H      )
check_include_file( sys/stat.h HAVE_SYS_STAT_H      )
check_include_file( stdlib.h   HAVE_STDLIB_H        )
check_include_file( stdarg.h   HAVE_STDARG_H        )
check_include_file( time.h     HAVE_TIME_H          )
check_include_file( locale.h   LOCALE_PREFIX        )
check_include_file( pthread.h  USE_XSLDBG_AS_THREAD )


##### check for functions

check_function_exists( gettimeofday HAVE_GETTIMEOFDAY )
check_function_exists( usleep       HAVE_USLEEP       )
check_function_exists( stat         HAVE_STAT         )


if( (BUILD_QUANTA) OR (BUILD_KXSLDBG) OR (BUILD_KLINKSTATUS) )

##### check for icu's c++ standard

    pkg_search_module( ICU_UC icu-uc )
    tde_execute_process(
        COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=CXXFLAGS icu-uc
        OUTPUT_VARIABLE ICU_CXXFLAGS
    )


##### check for libxml-2.0

    pkg_search_module( LIBXML libxml-2.0 )

    if( NOT LIBXML_FOUND )
        tde_message_fatal( "libxml-2.0 is required but was not found on your system" )
      elseif( ${LIBXML_VERSION} VERSION_LESS "2.6" )
        tde_message_fatal( "libxml-2.0 version must be, at least, up to 2.6" )
     else()
        set( LIBXML_2_5 1 )
        tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
        set( CMAKE_REQUIRED_INCLUDES ${LIBXML_INCLUDE_DIRS} )
        set( CMAKE_REQUIRED_LIBRARIES ${LIBXML_LIBRARIES} )
             check_function_exists( xmlSetEntityReferenceFunc HAVE_INCLUDE_FIX )
        tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
    endif( NOT LIBXML_FOUND )


##### check for libxslt

    pkg_search_module( LIBXSLT libxslt )

    if( NOT LIBXSLT_FOUND )
        tde_message_fatal( "libxslt are required, but not found on your system" )
    endif( NOT LIBXSLT_FOUND )


    if( BUILD_QUANTA )
        if( WITH_QUANTA_CVSSERVICE )
            tde_import( cervisia )
            find_file( CVSSERVICE_HEADERS NAMES repository_stub.h cvsservice_stub.h cvsjob_stub.h )
            if( CVSSERVICE_HEADERS )
                set( ENABLE_CVSSERVICE 1 )
                set( CVSSERVICE_LIBRARIES "cvsservice-static;cvsservice-shared" CACHE INTERNAL "tdesdk and embedded cvssercice libs" FORCE )
            else()
                tde_message_fatal( "csv service (cervisia) is required for quanta but not found on your system." )
            endif()
        endif()

        find_program( WGET_EXECUTABLE wget )
        if( NOT WGET_EXECUTABLE )
            message( STATUS "wget (download utility) installation is advised since some quanta's features will make use of It." )
        endif()

        find_program( TIDY_EXECUTABLE NAMES tidy tidy5 )
        if( NOT TIDY_EXECUTABLE )
            message( STATUS "tidy (HTML/XML syntax checker) installation is advised since some quanta's features will make use of It." )
        endif()

        find_program( TDEFILEREPLACE_EXECUTABLE tdefilereplace )
        if( NOT TDEFILEREPLACE_EXECUTABLE )
            message( STATUS "tdefilereplace (Batch search and replace tool - tdeutils) installation is advised since some quanta's features will make use of It." )
        endif()

        find_program( KOMPARE_EXECUTABLE kompare )
        if( NOT KOMPARE_EXECUTABLE )
            message( STATUS "kompare (diff utility - tdesdk) installation is advised since some quanta's features will make use of It." )
        endif()
    endif( BUILD_QUANTA )
    
    
    if( BUILD_KXSLDBG )
        find_package( Threads )
        
        tde_save( CMAKE_REQUIRED_INCLUDES )
            set( CMAKE_REQUIRED_INCLUDES ${LIBXML_INCLUDE_DIRS} )
            check_include_file( "libxml/DOCBparser.h" LIBXML_DOCB_ENABLED     )
            check_include_file( "libxml/xinclude.h"   LIBXML_XINCLUDE_ENABLED )
        tde_restore( CMAKE_REQUIRED_INCLUDES )


##### check for libexslt

        pkg_search_module( LIBEXSLT libexslt )
        if( NOT LIBEXSLT_FOUND )
            tde_message_fatal( "libexlt is required but was not found on your system" )
        endif()


##### check for readline

        find_path( READLINE_INCLUDE_DIR
                   NAMES "readline/readline.h" "readline/history.h"
                   HINTS "/usr/include" "/usr/local/include"
                   DOC "Looking for readline header's path"
        )
        find_library( READLINE_LIBRARY
                      NAMES readline history
                      DOC "Looking for readline libraries"
        )

        if( (READLINE_INCLUDE_DIR) AND ( READLINE_LIBRARY ) )
            set( HAVE_READLINE 1 )
            set( HAVE_HISTORY  1 )
            set( READLINE_LIBRARIES ${READLINE_LIBRARY}        )
            set( READLINE_INCLUDE_DIRS ${READLINE_INCLUDE_DIR} )
         else()
            tde_message_fatal( "readline is required but was not found on your system" )
        endif()
        
##### look for Curses

        tde_save_and_set( CMAKE_REQUIRED_INCLUDES ${READLINE_INCLUDE_DIRS} )
        tde_save_and_set( CMAKE_REQUIRED_LIBRARIES ${READLINE_LIBRARIES} )
        check_c_source_compiles("
            #include <readline/readline.h>
            int main(void)
            {
                char *result = readline(\"prompt\");
                return 0;
            }"
            BUILD_READLINE_STANDALONE
        )
        if( NOT BUILD_READLINE_STANDALONE )
            find_package( Curses )
            if( NOT CURSES_FOUND )
                tde_message_fatal( "(n)curses is required but was not found on your system" )
            endif()
            list( APPEND READLINE_LIBRARIES ${CURSES_LIBRARIES} )
        endif()
        tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
    endif( BUILD_KXSLDBG )
endif( (BUILD_QUANTA) OR (BUILD_KXSLDBG) OR (BUILD_KLINKSTATUS) )


##### option other editors

if( WITH_OTHER_EDITORS )
    set( ENABLE_EDITORS 1 )
endif( WITH_OTHER_EDITORS )


##### define TQTDOCDIR

if( BUILD_KOMMANDER )
    if( NOT DEFINED TQTDOCDIR )
        find_path( TQT_DOCDIR ntqsql.html
                   PATHS
                       ${TQTDIR}/doc/html $ENV{TQTDIR}/doc/html
                       /opt/trinity/share/tqt3/doc/html
                       /usr/share/doc/packages/tqt3/html
                       /usr/lib/tqt3/doc
                       /usr/lib/tqt3/doc/html
                       /usr/doc/tqt3/html
                       /usr/doc/tqt3
                       /usr/share/doc/tqt3-doc
                       /usr/share/tqt3/doc/html
                       /usr/X11R6/share/doc/tqt/html
        )
        if( TQT_DOCDIR )
            set( TQTDOCDIR "${TQT_DOCDIR}" )
        endif()
    endif()
endif( BUILD_KOMMANDER )