BUG: Added support for the AUI library module (bug 4338). Also applied some

STYLE changes including: deprecation of wxWidgets_USE_LIBS in favor of using
standard FIND_PACKAGE COMPONENTS, removed some CMake 2.4.2 compatibility patches,
use of execute_process instead of exec_program, etc.
This commit is contained in:
Miguel A. Figueroa-Villanueva 2007-10-12 21:30:24 -04:00
parent 6f2a997781
commit 1c1cde697b

View File

@ -11,11 +11,6 @@
# (e.g., C:/wxWidgets-2.6.3/lib/vc_lib). # (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
# wxWidgets_CONFIGURATION - Configuration to use # wxWidgets_CONFIGURATION - Configuration to use
# (e.g., msw, mswd, mswu, mswunivud, etc.) # (e.g., msw, mswd, mswu, mswunivud, etc.)
# wxWidgets_USE_LIBS - Libraries to use besides the common
# required ones; set to base and core by
# default. You couls also list them in
# FIND_PACKAGE(wxWidgets REQUIRED
# <components>)
# #
# The following are set after configuration is done: # The following are set after configuration is done:
# #
@ -32,19 +27,19 @@
# wxWidgets_CXX_FLAGS - Include dirs and ompiler flags for # wxWidgets_CXX_FLAGS - Include dirs and ompiler flags for
# unices, empty on WIN32. Esentially # unices, empty on WIN32. Esentially
# "`wx-config --cxxflags`". # "`wx-config --cxxflags`".
# wxWidgets_USE_FILE - convenience include file # wxWidgets_USE_FILE - Convenience include file.
# #
# Sample usage: # Sample usage:
# # FIND_PACKAGE(wxWidgets COMPONENTS base core gl net)
# SET(wxWidgets_USE_LIBS base core gl net)
# FIND_PACKAGE(wxWidgets)
# IF(wxWidgets_FOUND) # IF(wxWidgets_FOUND)
# INCLUDE(${wxWidgets_USE_FILE}) # INCLUDE(${wxWidgets_USE_FILE})
# # and for each of your dependant executable/library targets: # # and for each of your dependant executable/library targets:
# TARGET_LINK_LIBRARIES(<YourTarget> ${wxWidgets_LIBRARIES}) # TARGET_LINK_LIBRARIES(<YourTarget> ${wxWidgets_LIBRARIES})
# ENDIF(wxWidgets_FOUND) # ENDIF(wxWidgets_FOUND)
# #
#
# Sample usage with monolithic wx build: # Sample usage with monolithic wx build:
#
# SET(wxWidgets_USE_LIBS msw26 expat jpeg gl png regex tiff zlib) # SET(wxWidgets_USE_LIBS msw26 expat jpeg gl png regex tiff zlib)
# ... # ...
@ -68,7 +63,6 @@
# Jan Woetzel (FindwxWindows.cmake), # Jan Woetzel (FindwxWindows.cmake),
# Jorgen Bodde and Jerry Fath (FindwxWin.cmake). # Jorgen Bodde and Jerry Fath (FindwxWin.cmake).
#
# TODO/ideas # TODO/ideas
# #
# (1) Option/Setting to use all available wx libs # (1) Option/Setting to use all available wx libs
@ -88,62 +82,56 @@
# default to "std" instead of "base core" as it is now. To implement # default to "std" instead of "base core" as it is now. To implement
# "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe # "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe
# checking whether a minimal set was found. # checking whether a minimal set was found.
#
# # FIXME: This and all the DBG_MSG calls should be removed after the
# Helper macro to control the debugging output globally. # module stabilizes.
# - NOTE: This and all the DBG_MSG calls should be removed after the #
# module stabilizes. # Helper macro to control the debugging output globally. There are
# # two versions for controlling how verbose your output should be.
MACRO(DBG_MSG _MSG) MACRO(DBG_MSG _MSG)
# MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}") # MESSAGE(STATUS
# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
ENDMACRO(DBG_MSG) ENDMACRO(DBG_MSG)
MACRO(DBG_MSG_V _MSG)
# MESSAGE(STATUS
# "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
ENDMACRO(DBG_MSG_V)
# for compatibility with CMake 2.4.2
# emulate wxWidgets_FIND_COMPONENTS
IF (NOT wxWidgets_FIND_COMPONENTS)
SET(wxWidgets_FIND_COMPONENTS "")
FOREACH(COMPONENT
base
core
adv
dbgrid
expat
gl
jpeg
html
media
msw msw28 msw27 msw26
mono
net
odbc
png
qa
regex
tiff
# std # no true lib/component - list for compatibility with _USE_LIBS ?
xml
xrc
zlib
)
IF (${wxWidgets_FIND_REQUIRED_${COMPONENT}})
SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_FIND_COMPONENTS} ${COMPONENT})
ENDIF(${wxWidgets_FIND_REQUIRED_${COMPONENT}})
ENDFOREACH(COMPONENT)
ENDIF (NOT wxWidgets_FIND_COMPONENTS)
DBG_MSG("wxWidgets_FIND_COMPONENTS=${wxWidgets_FIND_COMPONENTS}")
#
# Clear return values in case the module is loaded more than once. # Clear return values in case the module is loaded more than once.
#
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
# SET(wxWidgets_INCLUDE_DIRS "")
SET(wxWidgets_INCLUDE_DIRS "") SET(wxWidgets_LIBRARIES "")
SET(wxWidgets_LIBRARIES "")
SET(wxWidgets_LIBRARY_DIRS "") SET(wxWidgets_LIBRARY_DIRS "")
SET(wxWidgets_CXX_FLAGS "") SET(wxWidgets_CXX_FLAGS "")
# FIXME: This is a patch to support the DEPRECATED use of
# wxWidgets_USE_LIBS.
#
# If wxWidgets_USE_LIBS is set:
# - if using <components>, then override wxWidgets_USE_LIBS
# - else set wxWidgets_FIND_COMPONENTS to wxWidgets_USE_LIBS
IF(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_USE_LIBS})
ENDIF(wxWidgets_USE_LIBS AND NOT wxWidgets_FIND_COMPONENTS)
DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
# Add the convenience use file if available.
#
# Get dir of this file which may reside in:
# - CMAKE_MAKE_ROOT/Modules on CMake installation
# - CMAKE_MODULE_PATH if user prefers his own specialized version
SET(wxWidgets_USE_FILE "")
GET_FILENAME_COMPONENT(
wxWidgets_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
# Prefer an existing customized version, but the user might override
# the FindwxWidgets module and not the UsewxWidgets one.
IF(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
SET(wxWidgets_USE_FILE
"${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
ELSE(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
SET(wxWidgets_USE_FILE UsewxWidgets.cmake)
ENDIF(EXISTS "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
#===================================================================== #=====================================================================
#===================================================================== #=====================================================================
@ -158,24 +146,37 @@ IF(UNIX)
SET(UNIX_STYLE_FIND 1) SET(UNIX_STYLE_FIND 1)
ENDIF(UNIX) ENDIF(UNIX)
#=====================================================================
# WIN32_STYLE_FIND
#=====================================================================
IF(WIN32_STYLE_FIND) IF(WIN32_STYLE_FIND)
# FIXME: I think this should be removed... how difficult is it to
# global settings for std and common wx libs # do with out it?
# logic could determine _USE_MONOLITHIC automatically # FIND_PACKAGE(wxWidgets COMPONENTS msw25d)
# but let the user decide for now. # If the user knows enough to want monolithic, then he probably
IF (wxWidgets_USE_MONOLITHIC) # knows enough to do the above...
SET(wxWidgets_STD_LIBRARIES mono ) #
ELSE (wxWidgets_USE_MONOLITHIC) # BTW, what happens in this case?
SET(wxWidgets_STD_LIBRARIES base core ) # this is default # FIND_PACKAGE(wxWidgets)
# Check these out and then remove comment. However, I think this
# will probably have to stay for backward compatibility, but in
# that case document it as a variable or list as deprecated.
#
# global settings for std and common wx libs logic could determine
# _USE_MONOLITHIC automatically but let the user decide for now.
IF(wxWidgets_USE_MONOLITHIC)
SET(wxWidgets_STD_LIBRARIES mono)
ELSE(wxWidgets_USE_MONOLITHIC)
SET(wxWidgets_STD_LIBRARIES base core) # this is default
ENDIF(wxWidgets_USE_MONOLITHIC) ENDIF(wxWidgets_USE_MONOLITHIC)
#useful common wx libs needed by almost all components #useful common wx libs needed by almost all components
SET(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat) SET(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat)
#--------------------------------------------------------------------- #-------------------------------------------------------------------
# WIN32: Helper MACROS # WIN32: Helper MACROS
#--------------------------------------------------------------------- #-------------------------------------------------------------------
#
# Get filename components for a configuration. For example, # Get filename components for a configuration. For example,
# if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d # if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d
# if _CONFIGURATION = mswu, then _UNV="", _UCD=u _DBG="" # if _CONFIGURATION = mswu, then _UNV="", _UCD=u _DBG=""
@ -193,9 +194,9 @@ IF(WIN32_STYLE_FIND)
# Find libraries associated to a configuration. # Find libraries associated to a configuration.
# #
MACRO(WX_FIND_LIBS _UNV _UCD _DBG) MACRO(WX_FIND_LIBS _UNV _UCD _DBG)
DBG_MSG("m_unv = ${_UNV}") DBG_MSG_V("m_unv = ${_UNV}")
DBG_MSG("m_ucd = ${_UCD}") DBG_MSG_V("m_ucd = ${_UCD}")
DBG_MSG("m_dbg = ${_DBG}") DBG_MSG_V("m_dbg = ${_DBG}")
# Find wxWidgets common libraries # Find wxWidgets common libraries
FOREACH(LIB png tiff jpeg zlib regex expat) FOREACH(LIB png tiff jpeg zlib regex expat)
@ -246,7 +247,7 @@ IF(WIN32_STYLE_FIND)
MARK_AS_ADVANCED(WX_mono${_DBG}) MARK_AS_ADVANCED(WX_mono${_DBG})
# Find wxWidgets multilib libraries # Find wxWidgets multilib libraries
FOREACH(LIB core adv html media xrc dbgrid gl qa) FOREACH(LIB core adv aui html media xrc dbgrid gl qa)
FIND_LIBRARY(WX_${LIB}${_DBG} FIND_LIBRARY(WX_${LIB}${_DBG}
NAMES NAMES
wxmsw${_UNV}28${_UCD}${_DBG}_${LIB} wxmsw${_UNV}28${_UCD}${_DBG}_${LIB}
@ -286,7 +287,7 @@ IF(WIN32_STYLE_FIND)
WX_CLEAR_LIB(WX_mono${_DBG}) WX_CLEAR_LIB(WX_mono${_DBG})
# Clear wxWidgets multilib libraries # Clear wxWidgets multilib libraries
FOREACH(LIB core adv html media xrc dbgrid gl qa) FOREACH(LIB core adv aui html media xrc dbgrid gl qa)
WX_CLEAR_LIB(WX_${LIB}${_DBG}) WX_CLEAR_LIB(WX_${LIB}${_DBG})
ENDFOREACH(LIB) ENDFOREACH(LIB)
ENDMACRO(WX_CLEAR_ALL_LIBS) ENDMACRO(WX_CLEAR_ALL_LIBS)
@ -304,49 +305,49 @@ IF(WIN32_STYLE_FIND)
# Also, Sets output variable wxWidgets_FOUND to FALSE if it fails. # Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
# #
MACRO(WX_SET_LIBRARIES _LIBS _DBG) MACRO(WX_SET_LIBRARIES _LIBS _DBG)
DBG_MSG_V("Looking for ${${_LIBS}}")
IF(WX_USE_REL_AND_DBG) IF(WX_USE_REL_AND_DBG)
DBG_MSG("looking for ${${_LIBS}}")
FOREACH(LIB ${${_LIBS}}) FOREACH(LIB ${${_LIBS}})
DBG_MSG("Finding ${LIB} and ${LIB}d") DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
DBG_MSG("WX_${LIB} : ${WX_${LIB}}") DBG_MSG_V("WX_${LIB} : ${WX_${LIB}}")
DBG_MSG("WX_${LIB}d : ${WX_${LIB}d}") DBG_MSG_V("WX_${LIB}d : ${WX_${LIB}d}")
IF(WX_${LIB} AND WX_${LIB}d) IF(WX_${LIB} AND WX_${LIB}d)
DBG_MSG("Found ${LIB} and ${LIB}d") DBG_MSG_V("Found ${LIB} and ${LIB}d")
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES} SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
debug ${WX_${LIB}d} debug ${WX_${LIB}d}
optimized ${WX_${LIB}} optimized ${WX_${LIB}}
) )
ELSE(WX_${LIB} AND WX_${LIB}d) ELSE(WX_${LIB} AND WX_${LIB}d)
DBG_MSG("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}") DBG_MSG_V("- not found due to missing WX_${LIB}=${WX_${LIB}} or WX_${LIB}d=${WX_${LIB}d}")
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
ENDIF(WX_${LIB} AND WX_${LIB}d) ENDIF(WX_${LIB} AND WX_${LIB}d)
ENDFOREACH(LIB) ENDFOREACH(LIB)
ELSE(WX_USE_REL_AND_DBG) ELSE(WX_USE_REL_AND_DBG)
FOREACH(LIB ${${_LIBS}}) FOREACH(LIB ${${_LIBS}})
DBG_MSG("Finding ${LIB}${_DBG}") DBG_MSG_V("Searching for ${LIB}${_DBG}")
DBG_MSG("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}") DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
IF(WX_${LIB}${_DBG}) IF(WX_${LIB}${_DBG})
DBG_MSG("Found ${LIB}${_DBG}") DBG_MSG_V("Found ${LIB}${_DBG}")
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES} SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
${WX_${LIB}${_DBG}} ${WX_${LIB}${_DBG}}
) )
ELSE(WX_${LIB}${_DBG}) ELSE(WX_${LIB}${_DBG})
DBG_MSG("- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}") DBG_MSG_V(
"- not found due to missing WX_${LIB}${_DBG}=${WX_${LIB}${_DBG}}")
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
ENDIF(WX_${LIB}${_DBG}) ENDIF(WX_${LIB}${_DBG})
ENDFOREACH(LIB) ENDFOREACH(LIB)
ENDIF(WX_USE_REL_AND_DBG) ENDIF(WX_USE_REL_AND_DBG)
FOREACH(LIB ${${_LIBS}}) DBG_MSG_V("OpenGL")
DBG_MSG("required: ${LIB}") LIST(FIND ${_LIBS} gl WX_USE_GL)
IF(LIB STREQUAL "gl") IF(NOT WX_USE_GL EQUAL -1)
DBG_MSG("gl required: ${LIB}") DBG_MSG_V("- is required.")
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES} SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
opengl32 opengl32
glu32 glu32
) )
ENDIF(LIB STREQUAL "gl") ENDIF(NOT WX_USE_GL EQUAL -1)
ENDFOREACH(LIB ${${_LIBS}})
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES} SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
winmm winmm
@ -356,56 +357,55 @@ IF(WIN32_STYLE_FIND)
) )
ENDMACRO(WX_SET_LIBRARIES) ENDMACRO(WX_SET_LIBRARIES)
#--------------------------------------------------------------------- #-------------------------------------------------------------------
# WIN32: Start actual work. # WIN32: Start actual work.
#--------------------------------------------------------------------- #-------------------------------------------------------------------
#
# Look for an installation tree. # Look for an installation tree.
#
FIND_PATH(wxWidgets_ROOT_DIR FIND_PATH(wxWidgets_ROOT_DIR
NAMES include/wx/wx.h NAMES include/wx/wx.h
PATHS PATHS
$ENV{wxWidgets_ROOT_DIR} $ENV{wxWidgets_ROOT_DIR}
$ENV{WXWIN} $ENV{WXWIN}
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x
C:/ C:/
D:/ D:/
$ENV{ProgramFiles} $ENV{ProgramFiles}
PATH_SUFFIXES PATH_SUFFIXES
wxWidgets-2.8.4 wxWidgets-2.8.6
wxWidgets-2.8.3 wxWidgets-2.8.5
wxWidgets-2.8.2 wxWidgets-2.8.4
wxWidgets-2.8.1 wxWidgets-2.8.3
wxWidgets-2.8.0 wxWidgets-2.8.2
wxWidgets-2.7.4 wxWidgets-2.8.1
wxWidgets-2.7.3 wxWidgets-2.8.0
wxWidgets-2.7.2 wxWidgets-2.7.4
wxWidgest-2.7.1 wxWidgets-2.7.3
wxWidgets-2.7.0 wxWidgets-2.7.2
wxWidgets-2.7.0-1 wxWidgest-2.7.1
wxWidgets-2.6.3 wxWidgets-2.7.0
wxWidgets-2.6.2 wxWidgets-2.7.0-1
wxWidgets-2.6.1 wxWidgets-2.6.3
wxWidgets-2.5.4 wxWidgets-2.6.2
wxWidgets-2.5.3 wxWidgets-2.6.1
wxWidgets-2.5.2 wxWidgets-2.5.4
wxWidgets-2.5.1 wxWidgets-2.5.3
wxWidgets wxWidgets-2.5.2
wxWidgets-2.5.1
wxWidgets
DOC "wxWidgets base/installation directory?" DOC "wxWidgets base/installation directory?"
) )
# If wxWidgets_ROOT_DIR changed, clear all libraries and lib dir. # If wxWidgets_ROOT_DIR changed, clear lib dir.
IF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR) IF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
SET(WX_ROOT_DIR ${wxWidgets_ROOT_DIR} CACHE INTERNAL "wxWidgets_ROOT_DIR") SET(WX_ROOT_DIR ${wxWidgets_ROOT_DIR} CACHE INTERNAL "wxWidgets_ROOT_DIR")
# WX_CLEAR_ALL_DBG_LIBS()
# WX_CLEAR_ALL_REL_LIBS()
SET(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND" CACHE PATH "Cleared." FORCE) SET(wxWidgets_LIB_DIR "wxWidgets_LIB_DIR-NOTFOUND" CACHE PATH "Cleared." FORCE)
ENDIF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR) ENDIF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
IF(WX_ROOT_DIR) IF(WX_ROOT_DIR)
# Select one default tree inside the already determined wx tree.
# select one default tree inside the already determined wx tree # Prefer static/shared order usually consistent with build
# prefer static/shared order usually consistent with build settings # settings.
IF(BUILD_SHARED_LIBS) IF(BUILD_SHARED_LIBS)
FIND_PATH(wxWidgets_LIB_DIR FIND_PATH(wxWidgets_LIB_DIR
NAMES wxpng.lib wxpngd.lib NAMES wxpng.lib wxpngd.lib
@ -436,17 +436,13 @@ IF(WIN32_STYLE_FIND)
IF(WX_LIB_DIR) IF(WX_LIB_DIR)
SET(wxWidgets_FOUND TRUE) SET(wxWidgets_FOUND TRUE)
# If building shared libs, define WXUSINGDLL to use dllimport.
IF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") IF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
DBG_MSG("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
# add define for correct dllimport to link against WX DLL
SET(wxWidgets_DEFINITIONS "-DWXUSINGDLL") SET(wxWidgets_DEFINITIONS "-DWXUSINGDLL")
DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*") ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
#--------------------------------------------------------------------- # Search for available configuration types.
# WIN32: ???
#---------------------------------------------------------------------
# Search for possible configuration type availabilities
# ***** SET(WX_LAST_CFG "")
FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw) FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
SET(WX_${CFG}_FOUND FALSE) SET(WX_${CFG}_FOUND FALSE)
IF(EXISTS ${WX_LIB_DIR}/${CFG}) IF(EXISTS ${WX_LIB_DIR}/${CFG})
@ -455,11 +451,13 @@ IF(WIN32_STYLE_FIND)
SET(WX_CONFIGURATION ${CFG}) SET(WX_CONFIGURATION ${CFG})
ENDIF(EXISTS ${WX_LIB_DIR}/${CFG}) ENDIF(EXISTS ${WX_LIB_DIR}/${CFG})
ENDFOREACH(CFG) ENDFOREACH(CFG)
DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
# ***** SET(WX_USE_REL_AND_DBG FALSE)
IF(WX_CONFIGURATION) IF(WX_CONFIGURATION)
# if selected configuration wasn't found, force the default one # If the selected configuration wasn't found force the default
# else, use it but still force a refresh for the list in doc string # one. Otherwise, use it but still force a refresh for
# updating the doc string with the current list of available
# configurations.
IF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND) IF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
SET(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING SET(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE) "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
@ -468,13 +466,13 @@ IF(WIN32_STYLE_FIND)
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE) "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
ENDIF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND) ENDIF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
# if release config was selected, and both release/debug exist # If release config selected, and both release/debug exist.
IF(WX_${wxWidgets_CONFIGURATION}d_FOUND) IF(WX_${wxWidgets_CONFIGURATION}d_FOUND)
OPTION(wxWidgets_USE_REL_AND_DBG OPTION(wxWidgets_USE_REL_AND_DBG
"Use release and debug configurations?" TRUE) "Use release and debug configurations?" TRUE)
SET(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG}) SET(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG})
ELSE(WX_${wxWidgets_CONFIGURATION}d_FOUND) ELSE(WX_${wxWidgets_CONFIGURATION}d_FOUND)
# if the option exists, force it to false # If the option exists (already in cache), force it false.
IF(wxWidgets_USE_REL_AND_DBG) IF(wxWidgets_USE_REL_AND_DBG)
SET(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL SET(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
"No ${wxWidgets_CONFIGURATION}d found." FORCE) "No ${wxWidgets_CONFIGURATION}d found." FORCE)
@ -489,7 +487,7 @@ IF(WIN32_STYLE_FIND)
IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
SET(wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include) SET(wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) ELSE(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
DBG_MSG("WXWIDGET_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h") DBG_MSG("wxWidgets_FOUND FALSE because WX_ROOT_DIR=${WX_ROOT_DIR} has no ${WX_ROOT_DIR}/include/wx/wx.h")
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h) ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
@ -498,12 +496,9 @@ IF(WIN32_STYLE_FIND)
SET(wxWidgets_INCLUDE_DIRS ${wxWidgets_INCLUDE_DIRS} SET(wxWidgets_INCLUDE_DIRS ${wxWidgets_INCLUDE_DIRS}
${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}) ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
ELSE(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h) ELSE(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
DBG_MSG("WXWIDGET_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.") DBG_MSG("WXWIDGET_FOUND FALSE because ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h does not exists.")
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
ENDIF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h) ENDIF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
#FIND_PATH(WX_SETUP_INCLUDE_DIR wx/setup.h
# ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
#MARK_AS_ADVANCED(WX_SETUP_INCLUDE_DIR)
# Find wxWidgets libraries. # Find wxWidgets libraries.
WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}") WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}")
@ -511,142 +506,129 @@ IF(WIN32_STYLE_FIND)
WX_FIND_LIBS("${UNV}" "${UCD}" "d") WX_FIND_LIBS("${UNV}" "${UCD}" "d")
ENDIF(WX_USE_REL_AND_DBG) ENDIF(WX_USE_REL_AND_DBG)
# we support adding components by _USE_LIBS or REQUIRED _COMPONENTS # If no library was requested, set default minimum set (i.e.,
IF (wxWidgets_FIND_COMPONENTS) # link to only core,base or mono).
LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_FIND_COMPONENTS}) IF(NOT wxWidgets_FIND_COMPONENTS)
ENDIF(wxWidgets_FIND_COMPONENTS) SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_STD_LIBRARIES})
ENDIF(NOT wxWidgets_FIND_COMPONENTS)
# Libraries we are interested in.
IF(NOT wxWidgets_USE_LIBS)
# Default minimal use setting (i.e., link to only core,base).
SET(wxWidgets_USE_LIBS ${wxWidgets_STD_LIBRARIES} )
ENDIF(NOT wxWidgets_USE_LIBS)
IF (wxWidgets_USE_LIBS MATCHES std)
# replace std by the list of STD libs
LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_STD_LIBRARIES} )
LIST(REMOVE_ITEM wxWidgets_USE_LIBS std)
# TODO: check that "mono" and base,core aren't added together
ENDIF (wxWidgets_USE_LIBS MATCHES std)
# Always add the common required libs. # Always add the common required libs.
LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_COMMON_LIBRARIES} ) LIST(APPEND wxWidgets_FIND_COMPONENTS ${wxWidgets_COMMON_LIBRARIES})
# Settings for requested libs (i.e., include dir, libraries, etc.). # Settings for requested libs (i.e., include dir, libraries, etc.).
WX_SET_LIBRARIES(wxWidgets_USE_LIBS "${DBG}") WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
ENDIF(WX_CONFIGURATION) ENDIF(WX_CONFIGURATION)
ENDIF(WX_LIB_DIR) ENDIF(WX_LIB_DIR)
ENDIF(WX_ROOT_DIR) ENDIF(WX_ROOT_DIR)
#=====================================================================
#===================================================================== # UNIX_STYLE_FIND
#===================================================================== #=====================================================================
ELSE(WIN32_STYLE_FIND) ELSE(WIN32_STYLE_FIND)
IF(UNIX_STYLE_FIND) IF(UNIX_STYLE_FIND)
FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE wx-config) FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE wx-config)
IF(wxWidgets_CONFIG_EXECUTABLE) IF(wxWidgets_CONFIG_EXECUTABLE)
SET(wxWidgets_FOUND TRUE) SET(wxWidgets_FOUND TRUE)
# run the wx-config program to get cxxflags # run the wx-config program to get cxxflags
EXEC_PROGRAM(sh EXECUTE_PROCESS(
ARGS "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags" COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" --cxxflags
OUTPUT_VARIABLE wxWidgets_CXX_FLAGS OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
RETURN_VALUE RET) RESULT_VARIABLE RET
)
IF(RET EQUAL 0) IF(RET EQUAL 0)
# parse definitions from cxxflags STRING(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
STRING(REGEX MATCHALL "-D.*[^ ;]+" wxWidgets_DEFINITIONS ${wxWidgets_CXX_FLAGS}) SEPARATE_ARGUMENTS(wxWidgets_CXX_FLAGS)
DBG_MSG("\nwxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
# drop -D* from CXXFLAGS DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
STRING(REGEX REPLACE "-D[^ ;]*" "" wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
# parse definitions from cxxflags; drop -D* from CXXFLAGS
STRING(REGEX MATCHALL "-D[^;]+"
wxWidgets_DEFINITIONS ${wxWidgets_CXX_FLAGS})
STRING(REGEX REPLACE "-D[^;]+;" ""
wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
# parse include dirs from cxxflags; drop -I prefix
STRING(REGEX MATCHALL "-I[^;]+"
wxWidgets_INCLUDE_DIRS ${wxWidgets_CXX_FLAGS})
STRING(REGEX REPLACE "-I[^;]+;" ""
wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
STRING(REPLACE "-I" ""
wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
# parse incdirs from cxxflags, drop -I prefix
STRING(REGEX MATCHALL "-I.*[^ ;]+" wxWidgets_INCLUDE_DIRS ${wxWidgets_CXX_FLAGS})
STRING(REGEX REPLACE "-I" "" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
# convert space to semicolons for list # convert space to semicolons for list
STRING(REGEX REPLACE " " ";" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}") # SEPARATE_ARGUMENTS(wxWidgets_INCLUDE_DIRS)
DBG_MSG_V("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
DBG_MSG_V("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
DBG_MSG_V("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
ELSE(RET EQUAL 0) ELSE(RET EQUAL 0)
DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
DBG_MSG_V(
"${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
ENDIF(RET EQUAL 0) ENDIF(RET EQUAL 0)
# run the wx-config program to get the libs # run the wx-config program to get the libs
# - NOTE: wx-config doesn't verify that the libs requested exist # - NOTE: wx-config doesn't verify that the libs requested exist
# it just produces the names. Maybe a TRY_COMPILE would # it just produces the names. Maybe a TRY_COMPILE would
# be useful here... # be useful here...
#STRING(REPLACE ";" "," wxWidgets_USE_LIBS "${wxWidgets_USE_LIBS}") STRING(REPLACE ";" ","
STRING(REGEX REPLACE ";" "," wxWidgets_USE_LIBS "${wxWidgets_USE_LIBS}") wxWidgets_FIND_COMPONENTS "${wxWidgets_FIND_COMPONENTS}")
EXEC_PROGRAM(sh EXECUTE_PROCESS(
ARGS "${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_USE_LIBS}" COMMAND
sh "${wxWidgets_CONFIG_EXECUTABLE}" --libs ${wxWidgets_FIND_COMPONENTS}
OUTPUT_VARIABLE wxWidgets_LIBRARIES OUTPUT_VARIABLE wxWidgets_LIBRARIES
RETURN_VALUE RET) RESULT_VARIABLE RET
)
IF(RET EQUAL 0) IF(RET EQUAL 0)
STRING(REGEX REPLACE " " ";" wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}") STRING(STRIP "${wxWidgets_LIBRARIES}" wxWidgets_LIBRARIES)
STRING(REGEX REPLACE "-framework;" "-framework " SEPARATE_ARGUMENTS(wxWidgets_LIBRARIES)
wxWidgets_LIBRARIES STRING(REPLACE "-framework;" "-framework "
"${wxWidgets_LIBRARIES}") wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
# extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES) # extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES)
STRING(REGEX MATCHALL "-L[^ ;]+" STRING(REGEX MATCHALL "-L[^;]+"
wxWidgets_LIBRARY_DIRS wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}")
"${wxWidgets_LIBRARIES}") STRING(REPLACE "-L" ""
STRING(REGEX REPLACE "-L" ""
wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}") wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
# convert space to semicolons for list # convert space to semicolons for list
STRING(REGEX REPLACE " " ";" wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}") # SEPARATE_ARGUMENTS(wxWidgets_LIBRARY_DIRS)
DBG_MSG_V("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
DBG_MSG_V("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
ELSE(RET EQUAL 0) ELSE(RET EQUAL 0)
SET(wxWidgets_FOUND FALSE) SET(wxWidgets_FOUND FALSE)
DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_FIND_COMPONENTS} FAILED with RET=${RET}")
ENDIF(RET EQUAL 0) ENDIF(RET EQUAL 0)
ENDIF(wxWidgets_CONFIG_EXECUTABLE) ENDIF(wxWidgets_CONFIG_EXECUTABLE)
#=====================================================================
# Neither UNIX_STYLE_FIND, nor WIN32_STYLE_FIND
#=====================================================================
ELSE(UNIX_STYLE_FIND) ELSE(UNIX_STYLE_FIND)
IF(NOT wxWidgets_FIND_QUIETLY) IF(NOT wxWidgets_FIND_QUIETLY)
MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n" MESSAGE(STATUS
" Platform unknown/unsupported. It's neither WIN32 nor UNIX style find.") "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n"
" Platform unknown/unsupported. It's neither WIN32 nor UNIX "
"style find."
)
ENDIF(NOT wxWidgets_FIND_QUIETLY) ENDIF(NOT wxWidgets_FIND_QUIETLY)
ENDIF(UNIX_STYLE_FIND) ENDIF(UNIX_STYLE_FIND)
ENDIF(WIN32_STYLE_FIND) ENDIF(WIN32_STYLE_FIND)
# Debug output:
# add convenience use file
IF (wxWidgets_FOUND)
# get dir of this file which may reside in
# - CMAKE_MAKE_ROOT/Modules on CMake installation
# - CMAKE_MODULE_PATH if user prefers his own specialized version
GET_FILENAME_COMPONENT(wxWidgets_CURRENT_LIST_DIR ${CMAKE_CURRENT_LIST_FILE} PATH)
SET(wxWidgets_USE_FILE "${wxWidgets_CURRENT_LIST_DIR}/UsewxWidgets.cmake")
# check
IF (NOT EXISTS ${wxWidgets_USE_FILE})
IF (NOT wxWidgets_FIND_QUIETLY)
MESSAGE(SEND_ERROR "Your Find/Use wxWidgets installation is wrong. wxWidgets_USE_FILE=${wxWidgets_USE_FILE} not found.")
ENDIF(NOT wxWidgets_FIND_QUIETLY)
ENDIF(NOT EXISTS ${wxWidgets_USE_FILE})
ENDIF(wxWidgets_FOUND)
DBG_MSG("wxWidgets_FOUND : ${wxWidgets_FOUND}") DBG_MSG("wxWidgets_FOUND : ${wxWidgets_FOUND}")
DBG_MSG("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_DIRS}") DBG_MSG("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_DIRS}")
DBG_MSG("wxWidgets_LIBRARY_DIRS : ${wxWidgets_LIBRARY_DIRS}") DBG_MSG("wxWidgets_LIBRARY_DIRS : ${wxWidgets_LIBRARY_DIRS}")
DBG_MSG("wxWidgets_LIBRARIES : ${wxWidgets_LIBRARIES}")
DBG_MSG("wxWidgets_CXX_FLAGS : ${wxWidgets_CXX_FLAGS}") DBG_MSG("wxWidgets_CXX_FLAGS : ${wxWidgets_CXX_FLAGS}")
DBG_MSG("wxWidgets_USE_FILE : ${wxWidgets_USE_FILE}") DBG_MSG("wxWidgets_USE_FILE : ${wxWidgets_USE_FILE}")
DBG_MSG("wxWidgets_FIND_COMPONENTS : ${wxWidgets_FIND_COMPONENTS}")
DBG_MSG("wxWidgets_USE_LIBS : ${wxWidgets_USE_LIBS}")
#===================================================================== #=====================================================================
#===================================================================== #=====================================================================
IF(NOT wxWidgets_FOUND) INCLUDE(FindPackageHandleStandardArgs)
# make FIND_PACKAGE friendly FIND_PACKAGE_HANDLE_STANDARD_ARGS(wxWidgets DEFAULT_MSG wxWidgets_FOUND)
IF(NOT wxWidgets_FIND_QUIETLY)
IF(wxWidgets_FIND_REQUIRED)
MESSAGE(FATAL_ERROR
"wxWidgets required, please specify it's location.")
ELSE(wxWidgets_FIND_REQUIRED)
MESSAGE(STATUS "ERROR: wxWidgets was not found.")
ENDIF(wxWidgets_FIND_REQUIRED)
ENDIF(NOT wxWidgets_FIND_QUIETLY)
ENDIF(NOT wxWidgets_FOUND)