summaryrefslogtreecommitdiff
path: root/Modules/FindwxWidgets.cmake
diff options
context:
space:
mode:
authorMiguel A. Figueroa-Villanueva <miguelf@ieee.org>2007-10-12 21:30:24 -0400
committerMiguel A. Figueroa-Villanueva <miguelf@ieee.org>2007-10-12 21:30:24 -0400
commit1c1cde697b8c17cbcd98f4bc7bbbabc1f6609084 (patch)
tree5b89b41c579dabf52b9659433741a1b94bded4bd /Modules/FindwxWidgets.cmake
parent6f2a997781d3a55c474c6992398e22dca5390b92 (diff)
downloadcmake-1c1cde697b8c17cbcd98f4bc7bbbabc1f6609084.tar.gz
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.
Diffstat (limited to 'Modules/FindwxWidgets.cmake')
-rw-r--r--Modules/FindwxWidgets.cmake446
1 files changed, 214 insertions, 232 deletions
diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake
index 8495543e86..e5153b7069 100644
--- a/Modules/FindwxWidgets.cmake
+++ b/Modules/FindwxWidgets.cmake
@@ -11,11 +11,6 @@
# (e.g., C:/wxWidgets-2.6.3/lib/vc_lib).
# wxWidgets_CONFIGURATION - Configuration to use
# (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:
#
@@ -32,19 +27,19 @@
# wxWidgets_CXX_FLAGS - Include dirs and ompiler flags for
# unices, empty on WIN32. Esentially
# "`wx-config --cxxflags`".
-# wxWidgets_USE_FILE - convenience include file
+# wxWidgets_USE_FILE - Convenience include file.
#
# Sample usage:
-#
-# SET(wxWidgets_USE_LIBS base core gl net)
-# FIND_PACKAGE(wxWidgets)
+# FIND_PACKAGE(wxWidgets COMPONENTS base core gl net)
# IF(wxWidgets_FOUND)
# INCLUDE(${wxWidgets_USE_FILE})
# # and for each of your dependant executable/library targets:
# TARGET_LINK_LIBRARIES(<YourTarget> ${wxWidgets_LIBRARIES})
# ENDIF(wxWidgets_FOUND)
#
+#
# Sample usage with monolithic wx build:
+#
# SET(wxWidgets_USE_LIBS msw26 expat jpeg gl png regex tiff zlib)
# ...
@@ -68,7 +63,6 @@
# Jan Woetzel (FindwxWindows.cmake),
# Jorgen Bodde and Jerry Fath (FindwxWin.cmake).
-#
# TODO/ideas
#
# (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
# "std" will basically boil down to a FOR_EACH lib-FOUND, but maybe
# checking whether a minimal set was found.
-#
-#
-# Helper macro to control the debugging output globally.
-# - NOTE: This and all the DBG_MSG calls should be removed after the
-# module stabilizes.
-#
+# FIXME: 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)
- # 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)
+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.
-#
SET(wxWidgets_FOUND FALSE)
-#
-SET(wxWidgets_INCLUDE_DIRS "")
-SET(wxWidgets_LIBRARIES "")
+SET(wxWidgets_INCLUDE_DIRS "")
+SET(wxWidgets_LIBRARIES "")
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)
ENDIF(UNIX)
-
+#=====================================================================
+# WIN32_STYLE_FIND
+#=====================================================================
IF(WIN32_STYLE_FIND)
-
- # 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
+ # FIXME: I think this should be removed... how difficult is it to
+ # do with out it?
+ # FIND_PACKAGE(wxWidgets COMPONENTS msw25d)
+ # If the user knows enough to want monolithic, then he probably
+ # knows enough to do the above...
+ #
+ # BTW, what happens in this case?
+ # 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)
#useful common wx libs needed by almost all components
SET(wxWidgets_COMMON_LIBRARIES png tiff jpeg zlib regex expat)
- #---------------------------------------------------------------------
+ #-------------------------------------------------------------------
# WIN32: Helper MACROS
- #---------------------------------------------------------------------
+ #-------------------------------------------------------------------
+ #
# Get filename components for a configuration. For example,
# if _CONFIGURATION = mswunivud, then _UNV=univ, _UCD=u _DBG=d
# if _CONFIGURATION = mswu, then _UNV="", _UCD=u _DBG=""
@@ -193,9 +194,9 @@ IF(WIN32_STYLE_FIND)
# Find libraries associated to a configuration.
#
MACRO(WX_FIND_LIBS _UNV _UCD _DBG)
- DBG_MSG("m_unv = ${_UNV}")
- DBG_MSG("m_ucd = ${_UCD}")
- DBG_MSG("m_dbg = ${_DBG}")
+ DBG_MSG_V("m_unv = ${_UNV}")
+ DBG_MSG_V("m_ucd = ${_UCD}")
+ DBG_MSG_V("m_dbg = ${_DBG}")
# Find wxWidgets common libraries
FOREACH(LIB png tiff jpeg zlib regex expat)
@@ -246,7 +247,7 @@ IF(WIN32_STYLE_FIND)
MARK_AS_ADVANCED(WX_mono${_DBG})
# 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}
NAMES
wxmsw${_UNV}28${_UCD}${_DBG}_${LIB}
@@ -286,7 +287,7 @@ IF(WIN32_STYLE_FIND)
WX_CLEAR_LIB(WX_mono${_DBG})
# 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})
ENDFOREACH(LIB)
ENDMACRO(WX_CLEAR_ALL_LIBS)
@@ -304,49 +305,49 @@ IF(WIN32_STYLE_FIND)
# Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
#
MACRO(WX_SET_LIBRARIES _LIBS _DBG)
+ DBG_MSG_V("Looking for ${${_LIBS}}")
IF(WX_USE_REL_AND_DBG)
- DBG_MSG("looking for ${${_LIBS}}")
FOREACH(LIB ${${_LIBS}})
- DBG_MSG("Finding ${LIB} and ${LIB}d")
- DBG_MSG("WX_${LIB} : ${WX_${LIB}}")
- DBG_MSG("WX_${LIB}d : ${WX_${LIB}d}")
+ DBG_MSG_V("Searching for ${LIB} and ${LIB}d")
+ DBG_MSG_V("WX_${LIB} : ${WX_${LIB}}")
+ DBG_MSG_V("WX_${LIB}d : ${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}
debug ${WX_${LIB}d}
optimized ${WX_${LIB}}
)
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)
ENDIF(WX_${LIB} AND WX_${LIB}d)
ENDFOREACH(LIB)
ELSE(WX_USE_REL_AND_DBG)
FOREACH(LIB ${${_LIBS}})
- DBG_MSG("Finding ${LIB}${_DBG}")
- DBG_MSG("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
+ DBG_MSG_V("Searching for ${LIB}${_DBG}")
+ DBG_MSG_V("WX_${LIB}${_DBG} : ${WX_${LIB}${_DBG}}")
IF(WX_${LIB}${_DBG})
- DBG_MSG("Found ${LIB}${_DBG}")
+ DBG_MSG_V("Found ${LIB}${_DBG}")
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
${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)
ENDIF(WX_${LIB}${_DBG})
ENDFOREACH(LIB)
ENDIF(WX_USE_REL_AND_DBG)
- FOREACH(LIB ${${_LIBS}})
- DBG_MSG("required: ${LIB}")
- IF(LIB STREQUAL "gl")
- DBG_MSG("gl required: ${LIB}")
- SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
- opengl32
- glu32
- )
- ENDIF(LIB STREQUAL "gl")
- ENDFOREACH(LIB ${${_LIBS}})
+ DBG_MSG_V("OpenGL")
+ LIST(FIND ${_LIBS} gl WX_USE_GL)
+ IF(NOT WX_USE_GL EQUAL -1)
+ DBG_MSG_V("- is required.")
+ SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
+ opengl32
+ glu32
+ )
+ ENDIF(NOT WX_USE_GL EQUAL -1)
SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
winmm
@@ -356,56 +357,55 @@ IF(WIN32_STYLE_FIND)
)
ENDMACRO(WX_SET_LIBRARIES)
- #---------------------------------------------------------------------
+ #-------------------------------------------------------------------
# WIN32: Start actual work.
- #---------------------------------------------------------------------
- #
+ #-------------------------------------------------------------------
+
# Look for an installation tree.
- #
FIND_PATH(wxWidgets_ROOT_DIR
NAMES include/wx/wx.h
PATHS
- $ENV{wxWidgets_ROOT_DIR}
- $ENV{WXWIN}
- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x
- C:/
- D:/
- $ENV{ProgramFiles}
+ $ENV{wxWidgets_ROOT_DIR}
+ $ENV{WXWIN}
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" # WX 2.6.x
+ C:/
+ D:/
+ $ENV{ProgramFiles}
PATH_SUFFIXES
- wxWidgets-2.8.4
- wxWidgets-2.8.3
- wxWidgets-2.8.2
- wxWidgets-2.8.1
- wxWidgets-2.8.0
- wxWidgets-2.7.4
- wxWidgets-2.7.3
- wxWidgets-2.7.2
- wxWidgest-2.7.1
- wxWidgets-2.7.0
- wxWidgets-2.7.0-1
- wxWidgets-2.6.3
- wxWidgets-2.6.2
- wxWidgets-2.6.1
- wxWidgets-2.5.4
- wxWidgets-2.5.3
- wxWidgets-2.5.2
- wxWidgets-2.5.1
- wxWidgets
+ wxWidgets-2.8.6
+ wxWidgets-2.8.5
+ wxWidgets-2.8.4
+ wxWidgets-2.8.3
+ wxWidgets-2.8.2
+ wxWidgets-2.8.1
+ wxWidgets-2.8.0
+ wxWidgets-2.7.4
+ wxWidgets-2.7.3
+ wxWidgets-2.7.2
+ wxWidgest-2.7.1
+ wxWidgets-2.7.0
+ wxWidgets-2.7.0-1
+ wxWidgets-2.6.3
+ wxWidgets-2.6.2
+ wxWidgets-2.6.1
+ wxWidgets-2.5.4
+ wxWidgets-2.5.3
+ wxWidgets-2.5.2
+ wxWidgets-2.5.1
+ wxWidgets
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)
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)
ENDIF(NOT WX_ROOT_DIR STREQUAL wxWidgets_ROOT_DIR)
IF(WX_ROOT_DIR)
-
- # select one default tree inside the already determined wx tree
- # prefer static/shared order usually consistent with build settings
+ # Select one default tree inside the already determined wx tree.
+ # Prefer static/shared order usually consistent with build
+ # settings.
IF(BUILD_SHARED_LIBS)
FIND_PATH(wxWidgets_LIB_DIR
NAMES wxpng.lib wxpngd.lib
@@ -436,17 +436,13 @@ IF(WIN32_STYLE_FIND)
IF(WX_LIB_DIR)
SET(wxWidgets_FOUND TRUE)
+ # If building shared libs, define WXUSINGDLL to use dllimport.
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")
+ DBG_MSG_V("detected SHARED/DLL tree WX_LIB_DIR=${WX_LIB_DIR}")
ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
- #---------------------------------------------------------------------
- # WIN32: ???
- #---------------------------------------------------------------------
- # Search for possible configuration type availabilities
- # ***** SET(WX_LAST_CFG "")
+ # Search for available configuration types.
FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
SET(WX_${CFG}_FOUND FALSE)
IF(EXISTS ${WX_LIB_DIR}/${CFG})
@@ -455,11 +451,13 @@ IF(WIN32_STYLE_FIND)
SET(WX_CONFIGURATION ${CFG})
ENDIF(EXISTS ${WX_LIB_DIR}/${CFG})
ENDFOREACH(CFG)
+ DBG_MSG_V("WX_CONFIGURATION_LIST=${WX_CONFIGURATION_LIST}")
- # ***** SET(WX_USE_REL_AND_DBG FALSE)
IF(WX_CONFIGURATION)
- # if selected configuration wasn't found, force the default one
- # else, use it but still force a refresh for the list in doc string
+ # If the selected configuration wasn't found force the default
+ # 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)
SET(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
@@ -468,13 +466,13 @@ IF(WIN32_STYLE_FIND)
"Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
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)
OPTION(wxWidgets_USE_REL_AND_DBG
"Use release and debug configurations?" TRUE)
SET(WX_USE_REL_AND_DBG ${wxWidgets_USE_REL_AND_DBG})
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)
SET(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
"No ${wxWidgets_CONFIGURATION}d found." FORCE)
@@ -489,7 +487,7 @@ IF(WIN32_STYLE_FIND)
IF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
SET(wxWidgets_INCLUDE_DIRS ${WX_ROOT_DIR}/include)
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)
ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
@@ -498,12 +496,9 @@ IF(WIN32_STYLE_FIND)
SET(wxWidgets_INCLUDE_DIRS ${wxWidgets_INCLUDE_DIRS}
${WX_LIB_DIR}/${wxWidgets_CONFIGURATION})
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)
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.
WX_FIND_LIBS("${UNV}" "${UCD}" "${DBG}")
@@ -511,142 +506,129 @@ IF(WIN32_STYLE_FIND)
WX_FIND_LIBS("${UNV}" "${UCD}" "d")
ENDIF(WX_USE_REL_AND_DBG)
- # we support adding components by _USE_LIBS or REQUIRED _COMPONENTS
- IF (wxWidgets_FIND_COMPONENTS)
- LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_FIND_COMPONENTS})
- ENDIF(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)
+ # If no library was requested, set default minimum set (i.e.,
+ # link to only core,base or mono).
+ IF(NOT wxWidgets_FIND_COMPONENTS)
+ SET(wxWidgets_FIND_COMPONENTS ${wxWidgets_STD_LIBRARIES})
+ ENDIF(NOT wxWidgets_FIND_COMPONENTS)
# 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.).
- WX_SET_LIBRARIES(wxWidgets_USE_LIBS "${DBG}")
+ WX_SET_LIBRARIES(wxWidgets_FIND_COMPONENTS "${DBG}")
ENDIF(WX_CONFIGURATION)
ENDIF(WX_LIB_DIR)
ENDIF(WX_ROOT_DIR)
-
- #=====================================================================
- #=====================================================================
+#=====================================================================
+# UNIX_STYLE_FIND
+#=====================================================================
ELSE(WIN32_STYLE_FIND)
IF(UNIX_STYLE_FIND)
-
FIND_PROGRAM(wxWidgets_CONFIG_EXECUTABLE wx-config)
IF(wxWidgets_CONFIG_EXECUTABLE)
SET(wxWidgets_FOUND TRUE)
# run the wx-config program to get cxxflags
- EXEC_PROGRAM(sh
- ARGS "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags"
+ EXECUTE_PROCESS(
+ COMMAND sh "${wxWidgets_CONFIG_EXECUTABLE}" --cxxflags
OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
- RETURN_VALUE RET)
+ RESULT_VARIABLE RET
+ )
IF(RET EQUAL 0)
- # parse definitions from cxxflags
- STRING(REGEX MATCHALL "-D.*[^ ;]+" wxWidgets_DEFINITIONS ${wxWidgets_CXX_FLAGS})
- DBG_MSG("\nwxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
- # drop -D* from CXXFLAGS
- STRING(REGEX REPLACE "-D[^ ;]*" "" wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
-
- # 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}")
+ STRING(STRIP "${wxWidgets_CXX_FLAGS}" wxWidgets_CXX_FLAGS)
+ SEPARATE_ARGUMENTS(wxWidgets_CXX_FLAGS)
+
+ DBG_MSG_V("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}")
+
# 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)
- DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
SET(wxWidgets_FOUND FALSE)
+ DBG_MSG_V(
+ "${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
ENDIF(RET EQUAL 0)
-
# run the wx-config program to get the libs
# - NOTE: wx-config doesn't verify that the libs requested exist
# it just produces the names. Maybe a TRY_COMPILE would
# be useful here...
- #STRING(REPLACE ";" "," wxWidgets_USE_LIBS "${wxWidgets_USE_LIBS}")
- STRING(REGEX REPLACE ";" "," wxWidgets_USE_LIBS "${wxWidgets_USE_LIBS}")
- EXEC_PROGRAM(sh
- ARGS "${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_USE_LIBS}"
+ STRING(REPLACE ";" ","
+ wxWidgets_FIND_COMPONENTS "${wxWidgets_FIND_COMPONENTS}")
+ EXECUTE_PROCESS(
+ COMMAND
+ sh "${wxWidgets_CONFIG_EXECUTABLE}" --libs ${wxWidgets_FIND_COMPONENTS}
OUTPUT_VARIABLE wxWidgets_LIBRARIES
- RETURN_VALUE RET)
+ RESULT_VARIABLE RET
+ )
IF(RET EQUAL 0)
- STRING(REGEX REPLACE " " ";" wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
- STRING(REGEX REPLACE "-framework;" "-framework "
- wxWidgets_LIBRARIES
- "${wxWidgets_LIBRARIES}")
+ STRING(STRIP "${wxWidgets_LIBRARIES}" wxWidgets_LIBRARIES)
+ SEPARATE_ARGUMENTS(wxWidgets_LIBRARIES)
+ STRING(REPLACE "-framework;" "-framework "
+ wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
# extract linkdirs (-L) for rpath (i.e., LINK_DIRECTORIES)
- STRING(REGEX MATCHALL "-L[^ ;]+"
- wxWidgets_LIBRARY_DIRS
- "${wxWidgets_LIBRARIES}")
- STRING(REGEX REPLACE "-L" ""
+ STRING(REGEX MATCHALL "-L[^;]+"
+ wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARIES}")
+ STRING(REPLACE "-L" ""
wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
# 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)
SET(wxWidgets_FOUND FALSE)
+ DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --libs ${wxWidgets_FIND_COMPONENTS} FAILED with RET=${RET}")
ENDIF(RET EQUAL 0)
ENDIF(wxWidgets_CONFIG_EXECUTABLE)
+#=====================================================================
+# Neither UNIX_STYLE_FIND, nor WIN32_STYLE_FIND
+#=====================================================================
ELSE(UNIX_STYLE_FIND)
IF(NOT wxWidgets_FIND_QUIETLY)
- MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): \n"
- " Platform unknown/unsupported. It's neither WIN32 nor UNIX style find.")
+ MESSAGE(STATUS
+ "${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(UNIX_STYLE_FIND)
ENDIF(WIN32_STYLE_FIND)
-
-# 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)
-
+# Debug output:
DBG_MSG("wxWidgets_FOUND : ${wxWidgets_FOUND}")
DBG_MSG("wxWidgets_INCLUDE_DIRS : ${wxWidgets_INCLUDE_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_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)
- # make FIND_PACKAGE friendly
- 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)
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(wxWidgets DEFAULT_MSG wxWidgets_FOUND)