| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- # - Find wxWindows installation
- # This module finds if wxWindows is installed and determines where the
- # include files and libraries are. It also determines what the name of
- # the library is. This code sets the following variables:
- #
- # WXWINDOWS_FOUND = system has WxWindows
- # WXWINDOWS_LIBRARIES = path to the wxWindows libraries
- # on Unix/Linux with additional
- # linker flags from
- # "wx-config --libs"
- # CMAKE_WXWINDOWS_CXX_FLAGS = Compiler flags for
- # wxWindows, essentially
- # "`wx-config --cxxflags`"
- # WXWINDOWS_INCLUDE_DIR = where to find "wx/wx.h" etc
- # WXWINDOWS_LINK_DIRECTORIES = link directories
- # WXWINDOWS_DEFINITIONS = extra defines
- # deprecated:
- # * CMAKE_WX_CAN_COMPILE
- # * WXWINDOWS_LIBRARY
- # * CMAKE_WX_CXX_FLAGS
- # * WXWINDOWS_INCLUDE_PATH
- #
- # For convenience include Use_wxWindows.cmake in your project's
- # CMakeLists.txt using INCLUDE(Use_wxWindows). If you need OpenGL support
- # please SET(WXWINDOWS_USE_GL 1) in your CMakeLists.txt *before* you include
- # this file.
- # ------------------------------------------------------------------
- # Author Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw> (07/2003)
- # ------------------------------------------------------------------
- #
- # -changed variable names to conventions from cmakes readme.txt (Jan Woetzel
- # 07/07/2003)
- # -added definition WINVER for WIN32 (Jan Woetzel 07/07//2003)
- # -added IF(CMAKE_WXWINDOWS_CONFIG_EXECUTABLE) found and changed
- # CMAKE_WX_CONFIG to CMAKE_WXWINDOWS_CONFIG_EXECUTABLE (Jan Woetzel
- # 07/22/2003)
- # -removed OPTION for CMAKE_WXWINDOWS_USE_GL. Force the developer to SET it.
- #
- # status:
- # tested with:
- # -cmake 1.6.7, Linux (Suse 7.3), wxWindows 2.4.0, gcc 2.95
- # -cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.0, gcc 3.3
- # -cmake 1.6.7, Linux (Suse 8.2), wxWindows 2.4.1-patch1, gcc 3.3
- # -cmake 1.6.7, MS Windows XP home, wxWindows 2.4.1, MS Visual Studio .net 7
- # 2002 (static build)
- #
- # TODO:
- # -OPTION for unicode builds
- # -change WXWINDOWS_USE_GL to use FindOpenGL.cmake or let the user do it
- # -testing of DLL linking under MS WIN32
- #
- IF(WIN32)
- SET(WIN32_STYLE_FIND 1)
- ENDIF(WIN32)
- IF(MINGW)
- SET(WIN32_STYLE_FIND 0)
- SET(UNIX_STYLE_FIND 1)
- ENDIF(MINGW)
- IF(UNIX)
- SET(UNIX_STYLE_FIND 1)
- ENDIF(UNIX)
- IF(WIN32_STYLE_FIND)
-
- # ###################################
- #
- # Windows specific:
- #
- # candidates for root/base directory of wxwindows
- # should have subdirs include and lib containing include/wx/wx.h
- # fix the root dir to avoid mixing of headers/libs from different
- # versions/builds:
-
- SET (WXWINDOWS_POSSIBLE_ROOT_PATHS
- $ENV{WXWIN}
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWindows_is1;Inno Setup: App Path]" )
-
- FIND_PATH(WXWINDOWS_ROOT_DIR include/wx/wx.h
- ${WXWINDOWS_POSSIBLE_ROOT_PATHS} )
-
- # MESSAGE("DBG found WXWINDOWS_ROOT_DIR: ${WXWINDOWS_ROOT_DIR}")
-
- # find libs for combination of static/shared with release/debug
- SET (WXWINDOWS_POSSIBLE_LIB_PATHS
- "${WXWINDOWS_ROOT_DIR}/lib" )
-
- FIND_LIBRARY(WXWINDOWS_STATIC_LIBRARY
- NAMES wx wxmsw
- PATHS ${WXWINDOWS_POSSIBLE_LIB_PATHS}
- DOC "wxWindows static release build library" )
-
- FIND_LIBRARY(WXWINDOWS_STATIC_DEBUG_LIBRARY
- NAMES wxd wxmswd
- PATHS ${WXWINDOWS_POSSIBLE_LIB_PATHS}
- DOC "wxWindows static debug build library" )
-
- FIND_LIBRARY(WXWINDOWS_SHARED_LIBRARY
- NAMES wxmsw24 wxmsw241 wxmsw240 wx23_2 wx22_9
- PATHS ${WXWINDOWS_POSSIBLE_LIB_PATHS}
- DOC "wxWindows shared release build library" )
-
- FIND_LIBRARY(WXWINDOWS_SHARED_DEBUG_LIBRARY
- NAMES wxmsw24d wxmsw241d wxmsw240d wx23_2d wx22_9d
- PATHS ${WXWINDOWS_POSSIBLE_LIB_PATHS}
- DOC "wxWindows shared debug build library " )
-
-
- # if there is at least one shared lib available
- # let user choose wether to use shared or static wxwindows libs
- IF(WXWINDOWS_SHARED_LIBRARY OR WXWINDOWS_SHARED_DEBUG_LIBRARY)
- # default value OFF because wxWindows MSVS default build is static
- OPTION(WXWINDOWS_USE_SHARED_LIBS
- "Use shared versions (dll) of wxWindows libraries?" OFF)
- MARK_AS_ADVANCED(WXWINDOWS_USE_SHARED_LIBS)
- ENDIF(WXWINDOWS_SHARED_LIBRARY OR WXWINDOWS_SHARED_DEBUG_LIBRARY)
-
-
- # add system libraries wxwindows depends on
- SET(CMAKE_WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- comctl32
- rpcrt4
- wsock32
- # presumably ctl3d32 is not neccesary (Jan Woetzel 07/2003)
- # ctl3d32
- # debug ${WXWINDOWS_ROOT_DIR}/lib/zlibd.lib optimized ${WXWINDOWS_ROOT_DIR}/lib/zlibd.lib
- # debug ${WXWINDOWS_ROOT_DIR}/lib/regexd.lib optimized ${WXWINDOWS_ROOT_DIR}/lib/regexd.lib
- # debug ${WXWINDOWS_ROOT_DIR}/lib/pngd.lib optimized ${WXWINDOWS_ROOT_DIR}/lib/pngd.lib
- # debug ${WXWINDOWS_ROOT_DIR}/lib/jpegd.lib optimized ${WXWINDOWS_ROOT_DIR}/lib/jpegd.lib
- # debug ${WXWINDOWS_ROOT_DIR}/lib/tiffd.lib optimized ${WXWINDOWS_ROOT_DIR}/lib/tiff.lib
- )
-
- # JW removed option and force the develper th SET it.
- # OPTION(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional
- # opengl, glu libs)?" OFF)
-
- # opengl/glu: (TODO/FIXME: better use FindOpenGL.cmake here
- IF (WXWINDOWS_USE_GL)
- SET(CMAKE_WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- opengl32
- glu32
- )
- ENDIF (WXWINDOWS_USE_GL)
-
-
- #
- # select between use of shared or static wxWindows lib then set libs to use
- # for debug and optimized build. so the user can switch between debug and
- # release build e.g. within MS Visual Studio without running cmake with a
- # different build directory again.
- #
- # then add the build specific include dir for wx/setup.h
- #
-
- IF(WXWINDOWS_USE_SHARED_LIBS)
- #MESSAGE("DBG wxWindows use shared lib selected.")
-
- # shared: both wx (debug and release) found?
- IF(WXWINDOWS_SHARED_DEBUG_LIBRARY AND WXWINDOWS_SHARED_LIBRARY)
- #MESSAGE("DBG wx shared: debug and optimized found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- debug ${WXWINDOWS_SHARED_DEBUG_LIBRARY}
- optimized ${WXWINDOWS_SHARED_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/mswdlld
- ${WXWINDOWS_ROOT_DIR}/lib/mswdll )
- ENDIF(WXWINDOWS_SHARED_DEBUG_LIBRARY AND WXWINDOWS_SHARED_LIBRARY)
-
- # shared: only debug wx lib found?
- IF(WXWINDOWS_SHARED_DEBUG_LIBRARY)
- IF(NOT WXWINDOWS_SHARED_LIBRARY)
- #MESSAGE("DBG wx shared: debug (but no optimized) found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/mswdlld )
- ENDIF(NOT WXWINDOWS_SHARED_LIBRARY)
- ENDIF(WXWINDOWS_SHARED_DEBUG_LIBRARY)
-
- # shared: only release wx lib found?
- IF(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
- IF(WXWINDOWS_SHARED_LIBRARY)
- #MESSAGE("DBG wx shared: optimized (but no debug) found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- ${WXWINDOWS_SHARED_DEBUG_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/mswdll )
- ENDIF(WXWINDOWS_SHARED_LIBRARY)
- ENDIF(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
-
- # shared: none found?
- IF(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
- IF(NOT WXWINDOWS_SHARED_LIBRARY)
- MESSAGE(SEND_ERROR
- "No shared wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
- ENDIF(NOT WXWINDOWS_SHARED_LIBRARY)
- ENDIF(NOT WXWINDOWS_SHARED_DEBUG_LIBRARY)
- ELSE(WXWINDOWS_USE_SHARED_LIBS)
- #MESSAGE("DBG wxWindows static lib selected.")
- # static: both wx (debug and release) found?
- IF(WXWINDOWS_STATIC_DEBUG_LIBRARY AND WXWINDOWS_STATIC_LIBRARY)
- #MESSAGE("DBG wx static: debug and optimized found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- debug ${WXWINDOWS_STATIC_DEBUG_LIBRARY}
- optimized ${WXWINDOWS_STATIC_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/mswd
- ${WXWINDOWS_ROOT_DIR}/lib/msw )
- ENDIF(WXWINDOWS_STATIC_DEBUG_LIBRARY AND WXWINDOWS_STATIC_LIBRARY)
-
- # static: only debug wx lib found?
- IF(WXWINDOWS_STATIC_DEBUG_LIBRARY)
- IF(NOT WXWINDOWS_STATIC_LIBRARY)
- #MESSAGE("DBG wx static: debug (but no optimized) found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- ${WXWINDOWS_STATIC_DEBUG_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/mswd )
- ENDIF(NOT WXWINDOWS_STATIC_LIBRARY)
- ENDIF(WXWINDOWS_STATIC_DEBUG_LIBRARY)
-
- # static: only release wx lib found?
- IF(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
- IF(WXWINDOWS_STATIC_LIBRARY)
- #MESSAGE("DBG wx static: optimized (but no debug) found.")
- SET(WXWINDOWS_LIBRARIES ${CMAKE_WXWINDOWS_LIBRARIES}
- ${WXWINDOWS_STATIC_DEBUG_LIBRARY} )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR_SETUPH wx/setup.h
- ${WXWINDOWS_ROOT_DIR}/lib/msw )
- ENDIF(WXWINDOWS_STATIC_LIBRARY)
- ENDIF(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
-
- # static: none found?
- IF(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
- IF(NOT WXWINDOWS_STATIC_LIBRARY)
- MESSAGE(SEND_ERROR
- "No static wxWindows lib found, but WXWINDOWS_USE_SHARED_LIBS=${WXWINDOWS_USE_SHARED_LIBS}.")
- ENDIF(NOT WXWINDOWS_STATIC_LIBRARY)
- ENDIF(NOT WXWINDOWS_STATIC_DEBUG_LIBRARY)
-
- ENDIF(WXWINDOWS_USE_SHARED_LIBS)
-
-
- # not neccessary in wxWindows 2.4.1
- # but it may fix a previous bug, see
- # http://lists.wxwindows.org/cgi-bin/ezmlm-cgi?8:mss:37574:200305:mpdioeneabobmgjenoap
- OPTION(WXWINDOWS_SET_DEFINITIONS "Set additional defines for wxWindows" OFF)
- MARK_AS_ADVANCED(WXWINDOWS_SET_DEFINITIONS)
- IF (WXWINDOWS_SET_DEFINITIONS)
- SET(WXWINDOWS_DEFINITIONS "-DWINVER=0x400")
- ELSE (WXWINDOWS_SET_DEFINITIONS)
- # clear:
- SET(WXWINDOWS_DEFINITIONS "")
- ENDIF (WXWINDOWS_SET_DEFINITIONS)
-
-
- # Find the include directories for wxwindows
- # the first, build specific for wx/setup.h was determined before.
- # add inc dir for general for "wx/wx.h"
- SET (WXWINDOWS_POSSIBLE_INCLUDE_PATHS
- "${WXWINDOWS_ROOT_DIR}/include"
- )
- FIND_PATH(WXWINDOWS_INCLUDE_DIR wx/wx.h
- ${WXWINDOWS_POSSIBLE_INCLUDE_PATHS}
- )
- # append the build specific include dir for wx/setup.h:
- IF (WXWINDOWS_INCLUDE_DIR_SETUPH)
- SET(WXWINDOWS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR} ${WXWINDOWS_INCLUDE_DIR_SETUPH} )
- ENDIF (WXWINDOWS_INCLUDE_DIR_SETUPH)
-
- MARK_AS_ADVANCED(
- WXWINDOWS_ROOT_DIR
- WXWINDOWS_INCLUDE_DIR
- WXWINDOWS_INCLUDE_DIR_SETUPH
- WXWINDOWS_STATIC_LIBRARY
- WXWINDOWS_STATIC_DEBUG_LIBRARY
- WXWINDOWS_SHARED_LIBRARY
- WXWINDOWS_SHARED_DEBUG_LIBRARY
- )
-
-
- ELSE(WIN32_STYLE_FIND)
- IF (UNIX_STYLE_FIND)
- # ###################################
- #
- # UNIX/Linux specific:
- #
- # use backquoted wx-config to query and set flags and libs:
- # 06/2003 Jan Woetzel
- #
-
- OPTION(WXWINDOWS_USE_SHARED_LIBS "Use shared versions (.so) of wxWindows libraries" ON)
- MARK_AS_ADVANCED(WXWINDOWS_USE_SHARED_LIBS)
- # JW removed option and force the develper th SET it.
- # OPTION(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional
- # --gl-libs for wx-config)?" OFF)
-
- # wx-config should be in your path anyhow, usually no need to set WXWIN or
- # search in ../wx or ../../wx
- FIND_PROGRAM(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE wx-config
- $ENV{WXWIN}
- ../wx/bin
- ../../wx/bin )
-
- # check wether wx-config was found:
- IF(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
- # use shared/static wx lib?
- # remember: always link shared to use systems GL etc. libs (no static
- # linking, just link *against* static .a libs)
- IF(WXWINDOWS_USE_SHARED_LIBS)
- SET(WX_CONFIG_ARGS_LIBS "--libs")
- ELSE(WXWINDOWS_USE_SHARED_LIBS)
- SET(WX_CONFIG_ARGS_LIBS "--static --libs")
- ENDIF(WXWINDOWS_USE_SHARED_LIBS)
-
- # do we need additionial wx GL stuff like GLCanvas ?
- IF(WXWINDOWS_USE_GL)
- SET(WX_CONFIG_ARGS_LIBS "${WX_CONFIG_ARGS_LIBS} --gl-libs" )
- ENDIF(WXWINDOWS_USE_GL)
- #MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===")
-
- # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user:
- SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags`")
- #MESSAGE("DBG: for compilation:
- #CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===")
- # keep the back-quoted string for clarity
- SET(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`")
- #MESSAGE("DBG2: for linking:
- #WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===")
-
- # evaluate wx-config output to separate linker flags and linkdirs for
- # rpath:
- EXEC_PROGRAM(${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE}
- ARGS ${WX_CONFIG_ARGS_LIBS}
- OUTPUT_VARIABLE WX_CONFIG_LIBS )
-
- # 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)
-
- MARK_AS_ADVANCED(
- CMAKE_WXWINDOWS_CXX_FLAGS
- WXWINDOWS_INCLUDE_DIR
- WXWINDOWS_LIBRARIES
- CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE
- )
-
-
- # we really need wx-config...
- ELSE(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
- MESSAGE(SEND_ERROR "Cannot find wx-config anywhere on the system. Please put the file into your path or specify it in CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE.")
- MARK_AS_ADVANCED(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
- ENDIF(CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE)
-
-
- ELSE(UNIX_STYLE_FIND)
- MESSAGE(SEND_ERROR "FindwxWindows.cmake: Platform unknown/unsupported by FindwxWindows.cmake. It's neither WIN32 nor UNIX")
- ENDIF(UNIX_STYLE_FIND)
- ENDIF(WIN32_STYLE_FIND)
- IF(WXWINDOWS_LIBRARIES)
- IF(WXWINDOWS_INCLUDE_DIR OR CMAKE_WXWINDOWS_CXX_FLAGS)
-
- # found all we need.
- SET(WXWINDOWS_FOUND 1)
-
- # set deprecated variables for backward compatibility:
- SET(CMAKE_WX_CAN_COMPILE ${WXWINDOWS_FOUND})
- SET(WXWINDOWS_LIBRARY ${WXWINDOWS_LIBRARIES})
- SET(WXWINDOWS_INCLUDE_PATH ${WXWINDOWS_INCLUDE_DIR})
- SET(CMAKE_WX_CXX_FLAGS ${CMAKE_WXWINDOWS_CXX_FLAGS})
-
- ENDIF(WXWINDOWS_INCLUDE_DIR OR CMAKE_WXWINDOWS_CXX_FLAGS)
- ENDIF(WXWINDOWS_LIBRARIES)
|