FindwxWin.cmake 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464
  1. ##---------------------------------------------------------------------------
  2. ## $RCSfile$
  3. ## $Source$
  4. ## $Revision$
  5. ## $Date$
  6. ##---------------------------------------------------------------------------
  7. ## Author: Jorgen Bodde
  8. ## Copyright: (c) Jorgen Bodde
  9. ## License: wxWidgets License
  10. ##---------------------------------------------------------------------------
  11. ##
  12. ## This module finds if wxWindows 2.5.x / 2.6.x is installed and determines
  13. ## where the include files and seperate libraries are. It also determines what
  14. ## the name of the library is.
  15. ##
  16. ## WARNING: Monolithic build support is not present here (it is not desired
  17. ## by wxWidgets anyway). Also the shared DLL option is not yet present.
  18. ##
  19. ## Current working combinations are;
  20. ## - Static debug and release libs
  21. ## - Static unicode debug and release libs
  22. ## - Static universal unicode debug and release libs
  23. ## - Static unicode universal unicode debug and release libs
  24. ##
  25. ##
  26. ## The linux part of this CMake file is unaltered and will always use because of
  27. ## 'wx-config'. The linux part will not use the WX_LIB_IGNORE vars because of
  28. ## the way wxWidgets is built and configured.
  29. ##
  30. ## This code sets the following variables:
  31. ##
  32. ## ------------------------------------------------------------------
  33. ##
  34. ## WXWINDOWS_FOUND = system has WxWindows (in desired config. build)
  35. ##
  36. ## WXWINDOWS_LIBRARIES = full path to the wxWindows libraries
  37. ## on Unix/Linux with additional linker flags from
  38. ## "wx-config --libs"
  39. ##
  40. ## CMAKE_WXWINDOWS_CXX_FLAGS = Unix compiler flags for wxWindows, essentially
  41. ## "`wx-config --cxxflags`"
  42. ##
  43. ## WXWINDOWS_INCLUDE_DIR = where to find headers "wx/wx.h" "wx/setup.h"
  44. ##
  45. ## WXWINDOWS_LINK_DIRECTORIES = link directories, useful for rpath on Unix
  46. ##
  47. ## WXWINDOWS_DEFINITIONS = extra defines
  48. ##
  49. IF( WIN32 )
  50. ##
  51. ## Find root path of wxWidgets, either in the registry or as environment var
  52. ##
  53. SET (WXWINDOWS_POSSIBLE_ROOT_PATHS
  54. $ENV{WXWIN}
  55. "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]" )
  56. FIND_PATH(WXWIDGETS_PATH_ROOT include/wx/wx.h
  57. ${WXWINDOWS_POSSIBLE_ROOT_PATHS} )
  58. SET(WXWINDOWS_FOUND 0)
  59. IF(NOT WXWIDGETS_PATH_ROOT)
  60. MESSAGE(SEND_ERROR "wxWidgets root is not found. Please point out the wxWidgets root using the WXWIN environment var")
  61. ENDIF(NOT WXWIDGETS_PATH_ROOT)
  62. OPTION(WX_USE_DEBUG_ONLY "Only attempt to setup the debug libraries, ignore the release libraries." ON)
  63. ## Find a multi library path, this is the path where the seperate libs are located
  64. SET(WXMSW_SETUPH "wx/setup.h")
  65. SET(WXDEBUG_POSTFIX "")
  66. IF(WX_USE_DEBUG_ONLY)
  67. SET(WXDEBUG_POSTFIX "d")
  68. ENDIF(WX_USE_DEBUG_ONLY)
  69. ## Try the VS compilation path
  70. SET(WXWINDOWS_POSSIBLE_SETUPH
  71. "${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}")
  72. ## Try borland and VS7 path
  73. IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  74. SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS
  75. "${WXWIDGETS_PATH_ROOT}/lib/vc_lib")
  76. ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  77. ## Try the borland path
  78. SET(WXWINDOWS_POSSIBLE_SETUPH
  79. "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib/msw${WXDEBUG_POSTFIX}/${WXMSW_SETUPH}")
  80. IF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  81. SET(WXWINDOWS_POSSIBLE_MULTILIB_PATHS
  82. "${WXWIDGETS_PATH_ROOT}/lib/bcc_lib")
  83. ELSE(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  84. MESSAGE(SEND_ERROR "wxWidgets libraries are not found.")
  85. ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  86. ENDIF(EXISTS ${WXWINDOWS_POSSIBLE_SETUPH})
  87. ## Ask user what config should be used, after asking, verify if it will work
  88. OPTION(WX_LINK_AGAINST_UNIVERSAL "Use wxWidgets universal builds" OFF)
  89. OPTION(WX_LINK_AGAINST_UNICODE "Use wxWidgets unicode builds" OFF)
  90. SET(WXMSW_SETUPH "wx/setup.h")
  91. SET(WX_RELEASE 0)
  92. SET(WX_DEBUG 0)
  93. SET(WX_RELEASE_UNI 0)
  94. SET(WX_DEBUG_UNI 0)
  95. SET(WX_RELEASE_UNIV 0)
  96. SET(WX_DEBUG_UNIV 0)
  97. SET(WX_RELEASE_UNIV_UNI 0)
  98. SET(WX_DEBUG_UNIV_UNI 0)
  99. SET(WX_FOUND_VALID_CONF 0)
  100. ## Scan for wxWidgets static multilib release
  101. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}")
  102. SET(WX_FOUND_VALID_CONF 1)
  103. SET(WX_RELEASE 1)
  104. SET(WX_RELEASE_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH} )
  105. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/msw/${WXMSW_SETUPH}")
  106. ## Scan for wxWidgets static multilib debug
  107. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}")
  108. SET(WX_FOUND_VALID_CONF 1)
  109. SET(WX_DEBUG 1)
  110. SET(WX_DEBUG_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH} )
  111. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswd/${WXMSW_SETUPH}")
  112. ## Scan for wxWidgets multilib unicode
  113. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}")
  114. SET(WX_FOUND_VALID_CONF 1)
  115. SET(WX_RELEASE_UNI 1)
  116. SET(WX_RELEASE_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} )
  117. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH}")
  118. ## Scan for wxWidgets multilib unicode debug
  119. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}")
  120. SET(WX_FOUND_VALID_CONF 1)
  121. SET(WX_DEBUG_UNI 1)
  122. SET(WX_DEBUG_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswu/${WXMSW_SETUPH} )
  123. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswud/${WXMSW_SETUPH}")
  124. ## Scan for wxWidgets multilib universal
  125. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}")
  126. SET(WX_FOUND_VALID_CONF 1)
  127. SET(WX_RELEASE_UNIV 1)
  128. SET(WX_RELEASE_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH} )
  129. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswuniv/${WXMSW_SETUPH}")
  130. ## Scan for wxWidgets multilib universal debug
  131. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}")
  132. SET(WX_FOUND_VALID_CONF 1)
  133. SET(WX_DEBUG_UNIV 1)
  134. SET(WX_DEBUG_UNIV_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH} )
  135. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivd/${WXMSW_SETUPH}")
  136. ## Scan for wxWidgets multilib universal unicode
  137. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}")
  138. SET(WX_FOUND_VALID_CONF 1)
  139. SET(WX_RELEASE_UNIV_UNI 1)
  140. SET(WX_RELEASE_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH} )
  141. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivu/${WXMSW_SETUPH}")
  142. ## Scan for wxWidgets multilib universal unicode debug
  143. IF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}")
  144. SET(WX_FOUND_VALID_CONF 1)
  145. SET(WX_DEBUG_UNIV_UNI 1)
  146. SET(WX_DEBUG_UNIV_UNI_SETUPH ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH} )
  147. ENDIF(EXISTS "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/mswunivud/${WXMSW_SETUPH}")
  148. ## If no valid config is found, mention this
  149. IF(NOT WX_FOUND_VALID_CONF)
  150. MESSAGE(SEND_ERROR "Did not found a valid setup.h for any library. Please compile your wxWidgets libraries first")
  151. ENDIF(NOT WX_FOUND_VALID_CONF)
  152. ## Search for wx version automatically
  153. SET (WXVERSION "")
  154. SET(WXLIBS
  155. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25.lib"
  156. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25d.lib"
  157. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25u.lib"
  158. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase25ud.lib"
  159. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25_core.lib"
  160. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25d_core.lib"
  161. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25u_core.lib"
  162. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv25ud_core.lib" )
  163. FOREACH(WXLIB ${WXLIBS})
  164. IF(EXISTS "${WXLIB}")
  165. SET(WXVERSION "25")
  166. ENDIF(EXISTS "${WXLIB}")
  167. ENDFOREACH(WXLIB ${WXLIBS})
  168. IF(NOT WXLIB)
  169. SET(WXLIBS
  170. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26.lib"
  171. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26d.lib"
  172. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26u.lib"
  173. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxbase26ud.lib"
  174. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26_core.lib"
  175. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26d_core.lib"
  176. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26u_core.lib"
  177. "${WXWINDOWS_POSSIBLE_MULTILIB_PATHS}/wxmswuniv26ud_core.lib")
  178. FOREACH(WXLIB ${WXLIBS})
  179. IF(EXISTS "${WXLIB}")
  180. SET(WXVERSION "26")
  181. ENDIF(EXISTS "${WXLIB}")
  182. ENDFOREACH(WXLIB ${WXLIBS})
  183. ENDIF(NOT WXLIB)
  184. IF(NOT WXVERSION)
  185. MESSAGE(SEND_ERROR "There are no suitable wxWidgets libraries found (monolithic builds are no longer supported")
  186. ENDIF(NOT WXVERSION)
  187. ##
  188. ## Verify unicode universal builds
  189. ##
  190. IF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  191. IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI)
  192. MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal unicode libraries are found (check debug and release builds)")
  193. ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV AND NOT WX_RELEASE_UNIV_UNI AND NOT WX_DEBUG_UNIV_UNI)
  194. ELSE(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  195. ##
  196. ## Verify unicode builds
  197. ##
  198. IF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  199. IF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI)
  200. MESSAGE(SEND_ERROR "Not all wx${WXVERSION} unicode libraries are found (check debug and release builds)")
  201. ENDIF(NOT WX_RELEASE_UNI AND NOT WX_DEBUG_UNI)
  202. ELSE(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  203. ##
  204. ## Verify universal builds
  205. ##
  206. IF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)
  207. IF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV)
  208. MESSAGE(SEND_ERROR "Not all wx${WXVERSION} universal libraries are found (check debug and release builds)")
  209. ENDIF(NOT WX_RELEASE_UNIV AND NOT WX_DEBUG_UNIV)
  210. ELSE(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)
  211. ##
  212. ## Must be normal build now
  213. ##
  214. IF(NOT WX_RELEASE AND NOT WX_DEBUG)
  215. MESSAGE(SEND_ERROR "Not all wx${WXVERSION} libraries are found (check debug and release builds)")
  216. ENDIF(NOT WX_RELEASE AND NOT WX_DEBUG)
  217. ENDIF(WX_LINK_AGAINST_UNIVERSAL AND NOT WX_LINK_AGAINST_UNICODE)
  218. ENDIF(NOT WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  219. ENDIF(WX_LINK_AGAINST_UNIVERSAL AND WX_LINK_AGAINST_UNICODE)
  220. ## Prepare the representation for the library
  221. IF(WX_LINK_AGAINST_UNICODE)
  222. SET(WXLIB_POST "u")
  223. ELSE(WX_LINK_AGAINST_UNICODE)
  224. SET(WXLIB_POST "")
  225. ENDIF(WX_LINK_AGAINST_UNICODE)
  226. ## Prepare for universal presentation
  227. IF(WX_LINK_AGAINST_UNIVERSAL)
  228. SET(WXLIB_UNIV "univ")
  229. ELSE(WX_LINK_AGAINST_UNIVERSAL)
  230. SET(WXLIB_UNIV "")
  231. ENDIF(WX_LINK_AGAINST_UNIVERSAL)
  232. FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
  233. ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST}
  234. ${WXWIDGETS_PATH_ROOT}/lib/vc_lib/msw${WXLIB_UNIV}${WXLIB_POST}d )
  235. ## Find setup.h belonging to multi libs
  236. SET(WXWINDOWS_LINK_DIRECTORIES
  237. ${WXWINDOWS_POSSIBLE_MULTILIB_PATHS} )
  238. ## Append all multi libs
  239. SET (WXWINDOWS_STATIC_RELEASE_LIBS
  240. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_gl.lib
  241. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_xrc.lib
  242. optimized wxbase${WXVERSION}${WXLIB_POST}_xml.lib
  243. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_qa.lib
  244. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_html.lib
  245. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_dbgrid.lib
  246. optimized wxbase${WXVERSION}${WXLIB_POST}_odbc.lib
  247. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_media.lib
  248. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_adv.lib
  249. optimized wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}_core.lib
  250. optimized wxbase${WXVERSION}${WXLIB_POST}_net.lib
  251. optimized wxbase${WXVERSION}${WXLIB_POST}.lib
  252. optimized wxexpat.lib
  253. optimized wxtiff.lib
  254. optimized wxjpeg.lib
  255. optimized wxpng.lib
  256. optimized wxzlib.lib
  257. optimized wxregex${WXLIB_POST}.lib )
  258. SET (WXWINDOWS_STATIC_DEBUG_LIBS
  259. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_gl.lib
  260. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_xrc.lib
  261. debug wxbase${WXVERSION}${WXLIB_POST}d_xml.lib
  262. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_qa.lib
  263. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_html.lib
  264. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_dbgrid.lib
  265. debug wxbase${WXVERSION}${WXLIB_POST}d_odbc.lib
  266. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_media.lib
  267. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_adv.lib
  268. debug wxmsw${WXLIB_UNIV}${WXVERSION}${WXLIB_POST}d_core.lib
  269. debug wxbase${WXVERSION}${WXLIB_POST}d_net.lib
  270. debug wxbase${WXVERSION}${WXLIB_POST}d.lib
  271. debug wxexpatd.lib
  272. debug wxtiffd.lib
  273. debug wxjpegd.lib
  274. debug wxpngd.lib
  275. debug wxzlibd.lib
  276. debug wxregex${WXLIB_POST}d.lib )
  277. ## Add the common libraries to the big list
  278. SET(CMAKE_WXWINDOWS_COMMON_LIBRARIES
  279. winmm
  280. comctl32
  281. rpcrt4
  282. wsock32 )
  283. ## Set wxWidgets library in WXWINDOWS_LIBRARIES
  284. SET(WXWINDOWS_LIBRARIES
  285. ${CMAKE_WXWINDOWS_COMMON_LIBRARIES}
  286. ${WXWINDOWS_STATIC_DEBUG_LIBS}
  287. ${WXWINDOWS_STATIC_RELEASE_LIBS} )
  288. ## Find include directory
  289. SET (WXWINDOWS_POSSIBLE_INCLUDE_PATHS
  290. "${WXWIDGETS_PATH_ROOT}/include" )
  291. FIND_PATH(WXWIDGETS_INCLUDE_DIR wx/wx.h
  292. ${WXWINDOWS_POSSIBLE_INCLUDE_PATHS} )
  293. ## Blank the setup.h dir when this is not found
  294. IF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH)
  295. SET(WXWINDOWS_INCLUDE_DIR_SETUPH "")
  296. ENDIF (NOT WXWINDOWS_INCLUDE_DIR_SETUPH)
  297. ## Set include paths
  298. SET(WXWINDOWS_INCLUDE_DIR
  299. ${WXWIDGETS_INCLUDE_DIR}
  300. ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
  301. IF(WX_LINK_AGAINST_UNICODE)
  302. SET(WX_UNICODE_FLAGS " -DUNICODE=1" )
  303. ELSE(WX_LINK_AGAINST_UNICODE)
  304. SET(WX_UNICODE_FLAGS "" )
  305. ENDIF(WX_LINK_AGAINST_UNICODE)
  306. SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}${WX_UNICODE_FLAGS} -D__WXDEBUG__ -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1")
  307. SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}${WX_UNICODE_FLAGS} -D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1" )
  308. ## TODO: Once these tags work, this is more efficient
  309. ##ADD_DEFINITIONS(debug )
  310. ##ADD_DEFINITIONS(-D__WXMSW__ -DWINVER=0x0400 -DwxUSE_BASE=1 )
  311. MARK_AS_ADVANCED(
  312. WXWIDGETS_INCLUDE_DIR
  313. WXWIDGETS_PATH_MONOLIB_DEBUG
  314. WXWIDGETS_PATH_MONOLIB_RELEASE
  315. WXWIDGETS_PATH_ROOT
  316. WXWINDOWS_INCLUDE_DIR_SETUPH )
  317. IF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR)
  318. SET(WXWINDOWS_FOUND 1)
  319. ENDIF(WXWINDOWS_LINK_DIRECTORIES AND WXWINDOWS_LIBRARIES AND WXWINDOWS_INCLUDE_DIR)
  320. ELSE( WIN32 )
  321. FIND_PROGRAM( CMAKE_WX_CONFIG wx-config ../wx/bin ../../wx/bin )
  322. IF(CMAKE_WX_CONFIG)
  323. SET(WXWINDOWS_FOUND 1)
  324. # run the config program to get cxxflags
  325. EXEC_PROGRAM(${CMAKE_WX_CONFIG} ARGS --cxxflags OUTPUT_VARIABLE
  326. CMAKE_WX_CXX_FLAGS RETURN_VALUE RET1)
  327. # run the config program to get the libs
  328. EXEC_PROGRAM(${CMAKE_WX_CONFIG} ARGS --libs OUTPUT_VARIABLE
  329. WXWINDOWS_LIBRARIES_TMP RETURN_VALUE RET2)
  330. # for libraries break things up into a ; separated variable
  331. SEPARATE_ARGUMENTS(WXWINDOWS_LIBRARIES_TMP)
  332. SET(LAST_FRAME 0)
  333. # now put the stuff back into WXWINDOWS_LIBRARIES
  334. # but combine all the -framework foo arguments back together
  335. FOREACH(arg ${WXWINDOWS_LIBRARIES_TMP})
  336. IF(${arg} MATCHES "-framework")
  337. SET(LAST_FRAME 1)
  338. ELSE(${arg} MATCHES "-framework")
  339. # not a -framework argument
  340. IF(${LAST_FRAME} EQUAL 1)
  341. SET(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES} "-framework ${arg}")
  342. SET(LAST_FRAME 0)
  343. ELSE(${LAST_FRAME} EQUAL 1)
  344. SET(WXWINDOWS_LIBRARIES ${WXWINDOWS_LIBRARIES} ${arg})
  345. ENDIF(${LAST_FRAME} EQUAL 1)
  346. ENDIF(${arg} MATCHES "-framework")
  347. ENDFOREACH(arg)
  348. ENDIF(CMAKE_WX_CONFIG)
  349. ## extract linkdirs (-L) for rpath
  350. ## use regular expression to match wildcard equivalent "-L*<endchar>"
  351. ## with <endchar> is a space or a semicolon
  352. STRING(REGEX MATCHALL "[-][L]([^ ;])+" WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX "${WX_CONFIG_LIBS}" )
  353. #MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX=${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX}")
  354. ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES
  355. ## replace -L by ; because the separator seems to be lost otherwise (bug or
  356. ## feature?)
  357. IF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
  358. STRING(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} )
  359. #MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}")
  360. ENDIF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX)
  361. ## replace space separated string by semicolon separated vector to make it
  362. ## work with LINK_DIRECTORIES
  363. SEPARATE_ARGUMENTS(WXWINDOWS_LINK_DIRECTORIES)
  364. IF( CYGWIN OR MINGW )
  365. GET_FILENAME_COMPONENT(WXWINDOWS_INSTALL_PATH ${CMAKE_WX_CONFIG} PATH)
  366. SET( WXWINDOWS_INSTALL_PATH ${WXWINDOWS_INSTALL_PATH}/.. )
  367. SET( WXWINDOWS_RC ${WXWINDOWS_INSTALL_PATH}/include/wx/msw/wx.rc )
  368. ELSE( CYGWIN OR MINGW )
  369. SET( WXWINDOWS_RC "" )
  370. ENDIF( CYGWIN OR MINGW )
  371. SET( WIN32GUI "" )
  372. #keep debug settings as indicated by wx-config
  373. #SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} "${CMAKE_WX_CXX_FLAGS}" )
  374. #IF( WXWINDOWS_USE_DEBUG )
  375. # SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -ggdb )
  376. #ENDIF( WXWINDOWS_USE_DEBUG )
  377. IF( CYGWIN OR MINGW )
  378. IF( CYGWIN )
  379. SET( WXWINDOWS_DEFINITIONS ${WXWINDOWS_DEFINITIONS} -D__GNUWIN32__ -O2 -D_WIN32_IE=0x400 -MMD -Wall )
  380. ENDIF( CYGWIN )
  381. ELSE( CYGWIN OR MINGW )
  382. # just in case `gtk-config --cflags`does not work
  383. # 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 )
  384. # What about FindGTK.cmake? and what if somebody uses wxMotif?
  385. IF(NOT APPLE)
  386. SET( CMAKE_WX_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS} `gtk-config --cflags`" )
  387. #find Xwindows
  388. INCLUDE( ${CMAKE_ROOT}/Modules/FindX11.cmake )
  389. SET( WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${X11_INCLUDE_DIR} )
  390. ENDIF(NOT APPLE)
  391. ENDIF( CYGWIN OR MINGW )
  392. ENDIF( WIN32 )
  393. MARK_AS_ADVANCED(
  394. CMAKE_WX_CXX_FLAGS
  395. )
  396. #MESSAGE( "${WXWINDOWS_LINK_DIRECTORIES}" )
  397. #MESSAGE( "${WXWINDOWS_LIBRARIES}" )
  398. #MESSAGE( "CMAKE_WX_CXX_FLAGS}" )
  399. #MESSAGE( "WXWINDOWS_INCLUDE_PATH}" )
  400. #MESSAGE( "WXWINDOWS_INCLUDE_DIR}" )
  401. #MESSAGE( "WXWINDOWS_DEFINITIONS}" )