summaryrefslogtreecommitdiffstats
path: root/Source/WXDialog/bin/FindwxWin.cmake
blob: 67ef39259f3e37e0f90006343bb42919c7b0298e (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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
##---------------------------------------------------------------------------
## $RCSfile$
## $Source$
## $Revision$
## $Date$
##---------------------------------------------------------------------------
## Author:      Jorgen Bodde
## Copyright:   (c) Jorgen Bodde
## License:     wxWidgets License
##---------------------------------------------------------------------------
##
## This module finds if wxWindows 2.5.x / 2.6.x is installed and determines 
## where the include files and seperate libraries are. It also determines what 
## the name of the library is. 
##
## WARNING: Monolithic build support is not present here (it is not desired
## by wxWidgets anyway). Also the shared DLL option is not yet present.
##
## Current working combinations are;
##      - Static debug and release libs 
##      - Static unicode debug and release libs 
##      - Static universal unicode debug and release libs 
##      - Static unicode universal unicode debug and release libs 
##
##
## The linux part of this CMake file is unaltered and will always use because of 
## 'wx-config'. The linux part will not use the WX_LIB_IGNORE vars because of 
## the way wxWidgets is built and configured.
##
## This code sets the following variables:
##
## ------------------------------------------------------------------
##
## WXWINDOWS_FOUND            = system has WxWindows (in desired config. build)
##
## WXWINDOWS_LIBRARIES        = full path to the wxWindows libraries
##                              on Unix/Linux with additional linker flags from
##                              "wx-config --libs"
##
## CMAKE_WXWINDOWS_CXX_FLAGS  = Unix compiler flags for wxWindows, essentially
##                              "`wx-config --cxxflags`"
##
## WXWINDOWS_INCLUDE_DIR      = where to find headers "wx/wx.h" "wx/setup.h"
##
## WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on Unix
##
## WXWINDOWS_DEFINITIONS      = extra defines
##

IF( WIN32 )

    ##
    ## Find root path of wxWidgets, either in the registry or as environment var
    ##

    SET (WXWINDOWS_POSSIBLE_ROOT_PATHS
        $ENV{WXWIN}
        "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]" )

    FIND_PATH(WXWIDGETS_PATH_ROOT  include/wx/wx.h
        ${WXWINDOWS_POSSIBLE_ROOT_PATHS} )
        
    SET(WXWINDOWS_FOUND 0)
    IF(NOT WXWIDGETS_PATH_ROOT)
        MESSAGE(SEND_ERROR "wxWidgets root is not found. Please point out the wxWidgets root using the WXWIN environment var")        
    ENDIF(NOT WXWIDGETS_PATH_ROOT)

    OPTION(WX_USE_DEBUG_ONLY "Only attempt to setup the debug libraries, ignore the release libraries." ON)
      
    ## Find a multi library path, this is the path where the seperate libs are located
    SET(WXMSW_SETUPH "wx/setup.h")

    SET(WXDEBUG_POSTFIX "")
    IF(WX_USE_DEBUG_ONLY)
        SET(WXDEBUG_POSTFIX "d")
    ENDIF(WX_USE_DEBUG_ONLY)

    ## Try the VS compilation path
    SET(WXWINDOWS_POSSIBLE_SETUPH 
        "${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}")  
        
    ## Try borland and VS7 path
    IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
        SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS 
            "${WXWIDGETS_PATH_ROOT}/lib/vc_lib")
    ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
        ## Try the borland path
        SET(WXWINDOWS_POSSIBLE_SETUPH
            "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}") 
        IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
            SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS 
                "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib")
        ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
            MESSAGE(SEND_ERROR "wxWidgets libraries are not found.")        
        ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
    ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
                
    ## Ask user what config should be used, after asking, verify if it will work
    OPTION(WX_LINK_AGAINST_UNIVERSAL    "Use wxWidgets universal builds" OFF)
    OPTION(WX_LINK_AGAINST_UNICODE      "Use wxWidgets unicode builds" OFF)

    SET(WXMSW_SETUPH "wx/setup.h")

    SET(WX_RELEASE 0)
    SET(WX_DEBUG 0)
    
    SET(WX_RELEASE_UNI 0)
    SET(WX_DEBUG_UNI 0)
    
    SET(WX_RELEASE_UNIV 0)
    SET(WX_DEBUG_UNIV 0)
    
    SET(WX_RELEASE_UNIV_UNI 0)
    SET(WX_DEBUG_UNIV_UNI 0)
    
    SET(WX_FOUND_VALID_CONF 0)
    
    ## Scan for wxWidgets static multilib release
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_RELEASE 1)
        SET(WX_RELEASE_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}")

    ## Scan for wxWidgets static multilib debug
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_DEBUG 1)
        SET(WX_DEBUG_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib unicode
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_RELEASE_UNI 1)
        SET(WX_RELEASE_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib unicode debug
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_DEBUG_UNI 1)
        SET(WX_DEBUG_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib universal
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_RELEASE_UNIV 1)
        SET(WX_RELEASE_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib universal debug
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_DEBUG_UNIV 1)
        SET(WX_DEBUG_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib universal unicode 
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_RELEASE_UNIV_UNI 1)
        SET(WX_RELEASE_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}")

    ## Scan for wxWidgets multilib universal unicode debug
    IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}")
        SET(WX_FOUND_VALID_CONF 1)
        SET(WX_DEBUG_UNIV_UNI 1)
        SET(WX_DEBUG_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH} )
    ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}")

    ## If no valid config is found, mention this
    IF(NOT WX_FOUND_VALID_CONF)
        MESSAGE(SEND_ERROR "Did not found a valid setup.h for any library. Please compile your wxWidgets libraries first")
    ENDIF(NOT WX_FOUND_VALID_CONF)

    ## Search for wx version automatically
    SET (WXVERSION "")
    
    SET(WXLIBS 
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25d.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25u.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25ud.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25_core.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25d_core.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25u_core.lib"
        "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25ud_core.lib" )
        
    FOREACH(WXLIB ${WXLIBS})
        IF(EXISTS "${WXLIB}")
            SET(WXVERSION "25")
        ENDIF(EXISTS "${WXLIB}")            
    ENDFOREACH(WXLIB ${WXLIBS})
    
    IF(NOT WXLIB)
        SET(WXLIBS 
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26d.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26u.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26ud.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26_core.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26d_core.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26u_core.lib"
            "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26ud_core.lib")
    
        FOREACH(WXLIB ${WXLIBS})
            IF(EXISTS "${WXLIB}")
                SET(WXVERSION "26")
            ENDIF(EXISTS "${WXLIB}")            
        ENDFOREACH(WXLIB ${WXLIBS})    
    ENDIF(NOT WXLIB)
      
    IF(NOT WXVERSION)
        MESSAGE(SEND_ERROR "There are no suitable wxWidgets libraries found (monolithic builds are no longer supported")
    ENDIF(NOT WXVERSION)
    
    ##
    ## Verify unicode universal builds
    ##
    IF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
        IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI)
            MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal unicode libraries are found (check debug and release builds)")
        ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI)
    ELSE(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
        ##
        ## Verify unicode builds
        ##
        IF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
            IF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI)
                MESSAGE(SEND_ERROR "Not all wx${WXVERSION} unicode libraries are found (check debug and release builds)")        
            ENDIF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI)        
        ELSE(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
            ##
            ## Verify universal builds
            ##
            IF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)
                IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV)
                    MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal libraries are found (check debug and release builds)")        
                ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV)        
            ELSE(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)
                ##
                ## Must be normal build now
                ##
                IF(NOT WX_RELEASE AND NOT WX_DEBUG)
                    MESSAGE(SEND_ERROR "Not all wx${WXVERSION} libraries are found (check debug and release builds)")        
                ENDIF(NOT WX_RELEASE AND NOT WX_DEBUG)                                
            ENDIF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)        
        ENDIF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
    ENDIF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)            
           
    ## Prepare the representation for the library
    IF(WX_LINK_AGAINST_UNICODE)
        SET(WXLIB_POST "u")
    ELSE(WX_LINK_AGAINST_UNICODE)
        SET(WXLIB_POST "")    
    ENDIF(WX_LINK_AGAINST_UNICODE)
    
    ## Prepare for universal presentation
    IF(WX_LINK_AGAINST_UNIVERSAL)
        SET(WXLIB_UNIV "univ")
    ELSE(WX_LINK_AGAINST_UNIVERSAL)
        SET(WXLIB_UNIV "") 
    ENDIF(WX_LINK_AGAINST_UNIVERSAL)
                            
    FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH  wx/setup.h
        ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST}
        ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST}d )
                         
    ## Find setup.h belonging to multi libs
    SET(WXWINDOWS_LINK_DIRECTORIES 
        ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS} )

    ## Append all multi libs
    SET (WXWINDOWS_STATIC_RELEASE_LIBS
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_gl.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_xrc.lib
         optimized wxbase${WXVERSION}${WXLIB_POST}_xml.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_qa.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_html.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_dbgrid.lib
         optimized wxbase${WXVERSION}${WXLIB_POST}_odbc.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_media.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_adv.lib
         optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_core.lib
         optimized wxbase${WXVERSION}${WXLIB_POST}_net.lib
         optimized wxbase${WXVERSION}${WXLIB_POST}.lib
         optimized wxexpat.lib
         optimized wxtiff.lib
         optimized wxjpeg.lib
         optimized wxpng.lib
         optimized wxzlib.lib
         optimized wxregex${WXLIB_POST}.lib )

    SET (WXWINDOWS_STATIC_DEBUG_LIBS
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_gl.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_xrc.lib
         debug wxbase${WXVERSION}${WXLIB_POST}d_xml.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_qa.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_html.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_dbgrid.lib
         debug wxbase${WXVERSION}${WXLIB_POST}d_odbc.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_media.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_adv.lib
         debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_core.lib
         debug wxbase${WXVERSION}${WXLIB_POST}d_net.lib
         debug wxbase${WXVERSION}${WXLIB_POST}d.lib
         debug wxexpatd.lib
         debug wxtiffd.lib
         debug wxjpegd.lib
         debug wxpngd.lib
         debug wxzlibd.lib
         debug wxregex${WXLIB_POST}d.lib )                 
    
    ## Add the common libraries to the big list
    SET(CMAKE_WXWINDOWS_COMMON_LIBRARIES 
        winmm
        comctl32
        rpcrt4
        wsock32 )

    ## Set wxWidgets library in WXWINDOWS_LIBRARIES    
    SET(WXWINDOWS_LIBRARIES 
        ${CMAKE_WXWINDOWS_COMMON_LIBRARIES}
        ${WXWINDOWS_STATIC_DEBUG_LIBS}
        ${WXWINDOWS_STATIC_RELEASE_LIBS} )
        
    ## Find include directory    
    SET (WXWINDOWS_POSSIBLE_INCLUDE_PATHS
        "${WXWIDGETS_PATH_ROOT}/include" )
        
    FIND_PATH(WXWIDGETS_INCLUDE_DIR  wx/wx.h 
        ${WXWINDOWS_POSSIBLE_INCLUDE_PATHS} )
          
    ## Blank the setup.h dir when this is not found
    IF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH)
        SET(WXWINDOWS_INCLUDE_DIR_SETUPH "")
    ENDIF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH)
           
    ## Set include paths
    SET(WXWINDOWS_INCLUDE_DIR 
        ${WXWIDGETS_INCLUDE_DIR} 
        ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
    
    IF(WX_LINK_AGAINST_UNICODE)
        SET(WX_UNICODE_FLAGS " -DUNICODE=1" )
    ELSE(WX_LINK_AGAINST_UNICODE)        
        SET(WX_UNICODE_FLAGS "" )
    ENDIF(WX_LINK_AGAINST_UNICODE)
    
    SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${WX_UNICODE_FLAGS} -D__WXDEBUG__ -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1")
        
    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${WX_UNICODE_FLAGS} -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1" )

    ## TODO: Once these tags work, this is more efficient
    ##ADD_DEFINITIONS(debug )
    ##ADD_DEFINITIONS(-D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1 )

    MARK_AS_ADVANCED(
        WXWIDGETS_INCLUDE_DIR
        WXWIDGETS_PATH_MONOLIB_DEBUG
        WXWIDGETS_PATH_MONOLIB_RELEASE
        WXWIDGETS_PATH_ROOT
        WXWINDOWS_INCLUDE_DIR_SETUPH )
        
    IF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR)
        SET(WXWINDOWS_FOUND 1)
    ENDIF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR)
        
ELSE( WIN32 )
    
    FIND_PROGRAM( CMAKE_WX_CONFIG wx-config ../wx/bin ../../wx/bin )
    SET( CMAKE_WX_CXX_FLAGS "`${CMAKE_WX_CONFIG} --cxxflags`" )
    SET( WXWINDOWS_LIBRARIES "`${CMAKE_WX_CONFIG} --libs`" )

    IF(CMAKE_WX_CONFIG)
        SET(WXWINDOWS_FOUND 1)
    ENDIF(CMAKE_WX_CONFIG)
    
    ## extract linkdirs (-L) for rpath
    ## use regular expression to match wildcard equivalent "-L*<endchar>"
    ## with <endchar> is a space or a semicolon
    STRING(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" )
    #MESSAGE("DBG  WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}")

    ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
    ## replace -L by ; because the separator seems to be lost otherwise (bug or
    ## feature?)
    IF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
      STRING(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} )
      #MESSAGE("DBG  WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}")
    ENDIF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)

    ## replace space separated string by semicolon separated vector to make it
    ## work with LINK_DIRECTORIES
    SEPARATE_ARGUMENTS(WXWINDOWS_LINK_DIRECTORIES)

    IF( CYGWIN OR MINGW )
        GET_FILENAME_COMPONENT(WXWINDOWS_INSTALL_PATH ${CMAKE_WX_CONFIG} PATH)
        SET( WXWINDOWS_INSTALL_PATH ${WXWINDOWS_INSTALL_PATH}/.. )
        SET( WXWINDOWS_RC ${WXWINDOWS_INSTALL_PATH}/include/wx/msw/wx.rc )
    ELSE( CYGWIN OR MINGW )
        SET( WXWINDOWS_RC "" )
    ENDIF( CYGWIN OR MINGW )
    SET( WIN32GUI "" ) 
    
    #keep debug settings as indicated by wx-config
    #SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} "${CMAKE_WX_CXX_FLAGS}" )
    #IF( WXWINDOWS_USE_DEBUG )
    #    SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -ggdb )
    #ENDIF( WXWINDOWS_USE_DEBUG )

    IF( CYGWIN OR MINGW )
        IF( CYGWIN )
            SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -D__GNUWIN32__  -O2 -D_WIN32_IE=0x400 -MMD -Wall  )
        ENDIF( CYGWIN )
    ELSE( CYGWIN OR MINGW )
        # just in case `gtk-config --cflags`does not work
        # SET( WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}  /usr/include/gtk-2.0 /usr/include/gtk-2.0/include /usr/lib/gtk-2.0/include /usr/include/glib-2.0 /usr/lib/glib-2.0/include /usr/include/pango-1.0 /usr/include/atk-1.0 )
        # What about FindGTK.cmake? and what if somebody uses wxMotif?
        SET( CMAKE_WX_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS} `gtk-config --cflags`" )
        #find Xwindows
        INCLUDE( ${CMAKE_ROOT}/Modules/FindX11.cmake )
        SET( WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}  ${X11_INCLUDE_DIR} )
    ENDIF( CYGWIN OR MINGW )
   
ENDIF( WIN32 )

MARK_AS_ADVANCED(
    CMAKE_WX_CXX_FLAGS
)

#MESSAGE( "${WXWINDOWS_LINK_DIRECTORIES}" )
#MESSAGE( "${WXWINDOWS_LIBRARIES}" )
#MESSAGE( "CMAKE_WX_CXX_FLAGS}" )
#MESSAGE( "WXWINDOWS_INCLUDE_PATH}" )
#MESSAGE( "WXWINDOWS_INCLUDE_DIR}" )
#MESSAGE( "WXWINDOWS_DEFINITIONS}" )