summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2006-07-24 15:19:42 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2006-07-24 15:19:42 (GMT)
commitecf914e6975b75166df2a0f36744221fe3b80899 (patch)
treefed23def8dcd0943d806ffe158d32e145f26e3bb /Modules
parent3776cfa0eb5bd7e6d6863b2e342aadc7739bf90f (diff)
downloadCMake-ecf914e6975b75166df2a0f36744221fe3b80899.zip
CMake-ecf914e6975b75166df2a0f36744221fe3b80899.tar.gz
CMake-ecf914e6975b75166df2a0f36744221fe3b80899.tar.bz2
ENH: move changes from main tree to release branch
Diffstat (limited to 'Modules')
-rw-r--r--Modules/CMakeDetermineCXXCompiler.cmake11
-rw-r--r--Modules/CMakeFortranCompiler.cmake.in2
-rw-r--r--Modules/CPack.cmake8
-rw-r--r--Modules/FindBoost.cmake157
-rw-r--r--Modules/FindKDE4.cmake6
-rw-r--r--Modules/FindOpenGL.cmake2
-rw-r--r--Modules/FindwxWidgets.cmake655
-rw-r--r--Modules/FindwxWindows.cmake29
-rw-r--r--Modules/Use_wxWindows.cmake29
-rw-r--r--Modules/UsewxWidgets.cmake67
-rw-r--r--Modules/readme.txt18
11 files changed, 948 insertions, 36 deletions
diff --git a/Modules/CMakeDetermineCXXCompiler.cmake b/Modules/CMakeDetermineCXXCompiler.cmake
index 35197eb..79683f5 100644
--- a/Modules/CMakeDetermineCXXCompiler.cmake
+++ b/Modules/CMakeDetermineCXXCompiler.cmake
@@ -42,6 +42,17 @@ IF(NOT CMAKE_CXX_COMPILER)
ENDIF(NOT CMAKE_CXX_COMPILER)
MARK_AS_ADVANCED(CMAKE_CXX_COMPILER)
+GET_FILENAME_COMPONENT(COMPILER_LOCATION "${CMAKE_CXX_COMPILER}" PATH)
+
+FIND_PROGRAM(CMAKE_AR NAMES ar PATHS ${COMPILER_LOCATION})
+MARK_AS_ADVANCED(CMAKE_AR)
+
+FIND_PROGRAM(CMAKE_RANLIB NAMES ranlib)
+IF(NOT CMAKE_RANLIB)
+ SET(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib")
+ENDIF(NOT CMAKE_RANLIB)
+MARK_AS_ADVANCED(CMAKE_RANLIB)
+
# do not test for GNU if the generator is visual studio
IF(${CMAKE_GENERATOR} MATCHES "Visual Studio")
SET(CMAKE_COMPILER_IS_GNUCXX_RUN 1)
diff --git a/Modules/CMakeFortranCompiler.cmake.in b/Modules/CMakeFortranCompiler.cmake.in
index b2432e4..a97717a 100644
--- a/Modules/CMakeFortranCompiler.cmake.in
+++ b/Modules/CMakeFortranCompiler.cmake.in
@@ -15,7 +15,7 @@ IF(CMAKE_COMPILER_IS_MINGW)
SET(MINGW 1)
ENDIF(CMAKE_COMPILER_IS_MINGW)
SET(CMAKE_COMPILER_IS_GNUG77_RUN 1)
-SET(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;f77;f90;for;f95)
+SET(CMAKE_Fortran_SOURCE_FILE_EXTENSIONS f;F;f77;F77;f90;F90;for;f95;F95)
SET(CMAKE_Fortran_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
SET(CMAKE_Fortran_LINKER_PREFERENCE Prefered)
IF(UNIX)
diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake
index 18fe53a..4af1169 100644
--- a/Modules/CPack.cmake
+++ b/Modules/CPack.cmake
@@ -92,13 +92,13 @@ cpack_check_file_exists("${CPACK_RESOURCE_FILE_WELCOME}" "welcome resource")
IF(NOT CPACK_GENERATOR)
IF(UNIX)
IF(APPLE)
- SET(CPACK_GENERATOR "PackageMaker")
+ SET(CPACK_GENERATOR "PackageMaker;STGZ;TGZ")
ELSE(APPLE)
- SET(CPACK_GENERATOR "STGZ")
+ SET(CPACK_GENERATOR "STGZ;TGZ;TZ")
ENDIF(APPLE)
- SET(CPACK_SOURCE_GENERATOR "TGZ")
+ SET(CPACK_SOURCE_GENERATOR "TGZ;TZ")
ELSE(UNIX)
- SET(CPACK_GENERATOR "NSIS")
+ SET(CPACK_GENERATOR "NSIS;ZIP")
SET(CPACK_SOURCE_GENERATOR "ZIP")
ENDIF(UNIX)
ENDIF(NOT CPACK_GENERATOR)
diff --git a/Modules/FindBoost.cmake b/Modules/FindBoost.cmake
new file mode 100644
index 0000000..aca28c5
--- /dev/null
+++ b/Modules/FindBoost.cmake
@@ -0,0 +1,157 @@
+# - Find the Boost includes and libraries.
+# The following variables are set if Boost is found. If Boost is not
+# found, Boost_FOUND is set to false.
+# Boost_FOUND - True when the Boost include directory is found.
+# Boost_INCLUDE_DIRS - the path to where the boost include files are.
+# Boost_LIBRARY_DIRS - The path to where the boost library files are.
+# Boost_LIB_DIAGNOSTIC_DEFINITIONS - Only set if using Windows.
+
+# ----------------------------------------------------------------------------
+# If you have installed Boost in a non-standard location or you have
+# just staged the boost files using bjam then you have three
+# options. In the following comments, it is assumed that <Your Path>
+# points to the root directory of the include directory of Boost. e.g
+# If you have put boost in C:\development\Boost then <Your Path> is
+# "C:/development/Boost" and in this directory there will be two
+# directories called "include" and "lib".
+# 1) After CMake runs, set Boost_INCLUDE_DIR to <Your Path>/include/boost<-version>
+# 2) Use CMAKE_INCLUDE_PATH to set a path to <Your Path>/include. This will allow FIND_PATH()
+# to locate Boost_INCLUDE_DIR by utilizing the PATH_SUFFIXES option. e.g.
+# SET(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} "<Your Path>/include")
+# 3) Set an environment variable called ${BOOST_ROOT} that points to the root of where you have
+# installed Boost, e.g. <Your Path>. It is assumed that there is at least a subdirectory called
+# include in this path.
+#
+# Note:
+# 1) If you are just using the boost headers, then you do not need to use
+# Boost_LIBRARY_DIRS in your CMakeLists.txt file.
+# 2) If Boost has not been installed, then when setting Boost_LIBRARY_DIRS
+# the script will look for /lib first and, if this fails, then for /stage/lib.
+#
+# Usage:
+# In your CMakeLists.txt file do something like this:
+# ...
+# # Boost
+# FIND_PACKAGE(Boost)
+# ...
+# INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIRS})
+# LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
+#
+# In Windows, we make the assumption that, if the Boost files are installed, the default directory
+# will be C:\boost.
+
+#
+# TODO:
+#
+# 1) Automatically find the Boost library files and eliminate the need
+# to use Link Directories.
+#
+
+IF(WIN32)
+ # In windows, automatic linking is performed, so you do not have to specify the libraries.
+ # If you are linking to a dynamic runtime, then you can choose to link to either a static or a
+ # dynamic Boost library, the default is to do a static link. You can alter this for a specific
+ # library "whatever" by defining BOOST_WHATEVER_DYN_LINK to force Boost library "whatever" to
+ # be linked dynamically. Alternatively you can force all Boost libraries to dynamic link by
+ # defining BOOST_ALL_DYN_LINK.
+
+ # This feature can be disabled for Boost library "whatever" by defining BOOST_WHATEVER_NO_LIB,
+ # or for all of Boost by defining BOOST_ALL_NO_LIB.
+
+ # If you want to observe which libraries are being linked against then defining
+ # BOOST_LIB_DIAGNOSTIC will cause the auto-linking code to emit a #pragma message each time
+ # a library is selected for linking.
+ SET(Boost_LIB_DIAGNOSTIC_DEFINITIONS "-DBOOST_LIB_DIAGNOSTIC")
+ENDIF(WIN32)
+
+
+SET(BOOST_INCLUDE_PATH_DESCRIPTION "directory containing the boost include files. E.g /usr/local/include/boost-1_33_1 or c:\\boost\\include\\boost-1_33_1")
+
+SET(BOOST_DIR_MESSAGE "Set the Boost_INCLUDE_DIR cmake cache entry to the ${BOOST_INCLUDE_PATH_DESCRIPTION}")
+
+SET(BOOST_DIR_SEARCH $ENV{BOOST_ROOT})
+IF(BOOST_DIR_SEARCH)
+ FILE(TO_CMAKE_PATH ${BOOST_DIR_SEARCH} BOOST_DIR_SEARCH)
+ SET(BOOST_DIR_SEARCH ${BOOST_DIR_SEARCH}/include)
+ENDIF(BOOST_DIR_SEARCH)
+
+IF(WIN32)
+ SET(BOOST_DIR_SEARCH
+ ${BOOST_DIR_SEARCH}
+ C:/boost/include
+ D:/boost/include
+ )
+ENDIF(WIN32)
+
+# Add in some path suffixes. These will have to be updated whenever a new Boost version comes out.
+SET(SUFFIX_FOR_PATH
+ boost-1_34_1
+ boost-1_34_0
+ boost-1_33_1
+ boost-1_33_0
+)
+
+#
+# Look for an installation.
+#
+FIND_PATH(Boost_INCLUDE_DIR NAMES boost/config.hpp PATH_SUFFIXES ${SUFFIX_FOR_PATH} PATHS
+
+ # Look in other places.
+ ${BOOST_DIR_SEARCH}
+
+ # Help the user find it if we cannot.
+ DOC "The ${BOOST_INCLUDE_PATH_DESCRIPTION}"
+)
+
+# Assume we didn't find it.
+SET(Boost_FOUND 0)
+
+# Now try to get the include and library path.
+IF(Boost_INCLUDE_DIR)
+
+ # Look for the boost library path.
+ # Note that the user may not have installed any libraries
+ # so it is quite possible the Boost_LIBRARY_PATH may not exist.
+ SET(Boost_LIBRARY_DIR ${Boost_INCLUDE_DIR})
+
+ IF("${Boost_LIBRARY_DIR}" MATCHES "boost-[0-9]+")
+ GET_FILENAME_COMPONENT(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR} PATH)
+ ENDIF ("${Boost_LIBRARY_DIR}" MATCHES "boost-[0-9]+")
+
+ IF("${Boost_LIBRARY_DIR}" MATCHES "/include$")
+ # Strip off the trailing "/include" in the path.
+ GET_FILENAME_COMPONENT(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR} PATH)
+ ENDIF("${Boost_LIBRARY_DIR}" MATCHES "/include$")
+
+ IF(EXISTS "${Boost_LIBRARY_DIR}/lib")
+ SET (Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR}/lib)
+ ELSE(EXISTS "${Boost_LIBRARY_DIR}/lib")
+ IF(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
+ SET(Boost_LIBRARY_DIR ${Boost_LIBRARY_DIR}/stage/lib)
+ ELSE(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
+ SET(Boost_LIBRARY_DIR "")
+ ENDIF(EXISTS "${Boost_LIBRARY_DIR}/stage/lib")
+ ENDIF(EXISTS "${Boost_LIBRARY_DIR}/lib")
+
+ IF(EXISTS "${Boost_INCLUDE_DIR}")
+ SET(Boost_INCLUDE_DIRS ${Boost_INCLUDE_DIR})
+ # We have found boost. It is possible that the user has not
+ # compiled any libraries so we set Boost_FOUND to be true here.
+ SET(Boost_FOUND 1)
+ ENDIF(EXISTS "${Boost_INCLUDE_DIR}")
+
+ IF(Boost_LIBRARY_DIR AND EXISTS "${Boost_LIBRARY_DIR}")
+ SET(Boost_LIBRARY_DIRS ${Boost_LIBRARY_DIR})
+ ENDIF(Boost_LIBRARY_DIR AND EXISTS "${Boost_LIBRARY_DIR}")
+ENDIF(Boost_INCLUDE_DIR)
+
+IF(NOT Boost_FOUND)
+ IF(NOT Boost_FIND_QUIETLY)
+ MESSAGE(STATUS "Boost was not found. ${BOOST_DIR_MESSAGE}")
+ ELSE(NOT Boost_FIND_QUIETLY)
+ IF(Boost_FIND_REQUIRED)
+ MESSAGE(FATAL_ERROR "Boost was not found. ${BOOST_DIR_MESSAGE}")
+ ENDIF(Boost_FIND_REQUIRED)
+ ENDIF(NOT Boost_FIND_QUIETLY)
+ENDIF(NOT Boost_FOUND)
+
diff --git a/Modules/FindKDE4.cmake b/Modules/FindKDE4.cmake
index 211947e..6d3b264 100644
--- a/Modules/FindKDE4.cmake
+++ b/Modules/FindKDE4.cmake
@@ -12,8 +12,8 @@
FILE(TO_CMAKE_PATH "$ENV{KDEDIRS}" _KDEDIRS)
-# First try to find kde-config
-FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde-config
+# First try to find kde-config, for KDE4 soon to be renamed to kde4-config
+FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config kde-config
PATHS
${CMAKE_INSTALL_PREFIX}/bin
${_KDEDIRS}
@@ -23,7 +23,7 @@ FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde-config
IF (NOT KDE4_KDECONFIG_EXECUTABLE)
- FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde-config )
+ FIND_PROGRAM(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config kde-config )
ENDIF (NOT KDE4_KDECONFIG_EXECUTABLE)
IF (KDE4_KDECONFIG_EXECUTABLE)
diff --git a/Modules/FindOpenGL.cmake b/Modules/FindOpenGL.cmake
index 9ba1938..d128fda 100644
--- a/Modules/FindOpenGL.cmake
+++ b/Modules/FindOpenGL.cmake
@@ -52,6 +52,7 @@ IF (WIN32)
ENDIF (CYGWIN)
ELSE (WIN32)
+ IF(NOT APPLE)
# The first line below is to make sure that the proper headers
# are used on a Linux machine with the NVidia drivers installed.
@@ -116,6 +117,7 @@ ELSE (WIN32)
/usr/shlib
)
+ ENDIF(NOT APPLE)
ENDIF (WIN32)
SET( OPENGL_FOUND "NO" )
diff --git a/Modules/FindwxWidgets.cmake b/Modules/FindwxWidgets.cmake
index 4557d9a..7e0fb33 100644
--- a/Modules/FindwxWidgets.cmake
+++ b/Modules/FindwxWidgets.cmake
@@ -1 +1,654 @@
-INCLUDE(FindwxWindows)
+# - Find a wxWidgets (a.k.a., wxWindows) installation.
+# This module finds if wxWidgets is installed and selects a default
+# configuration to use.
+#
+# The following variables are searched for and set to defaults in case
+# of multiple choices. Change them if the defaults are not desired:
+#
+# wxWidgets_ROOT_DIR - Base wxWidgets directory
+# (e.g., C:/wxWidgets-2.6.3).
+# wxWidgets_LIB_DIR - Path to wxWidgets libraries
+# (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>)
+#
+# HAVE_ISYSTEM - if true wx warnings are suppressed on g++
+# by replacing -I with -isystem
+#
+# The following are set after configuration is done:
+#
+# wxWidgets_FOUND - Set to TRUE if wxWidgets was found.
+# wxWidgets_INCLUDE_DIRS - Include directories for WIN32
+# i.e., where to find "wx/wx.h" and
+# "wx/setup.h"; possibly empty for unices.
+# wxWidgets_LIBRARIES - Path to the wxWidgets libraries.
+# wxWidgets_LIBRARY_DIRS - compile time link dirs, useful for
+# rpath on UNIX. Typically an empty string
+# in WIN32 environment.
+# wxWidgets_DEFINITIONS - Contains defines required to compile/link
+# against WX, e.g. -DWXUSINGDLL
+# wxWidgets_CXX_FLAGS - Include dirs and ompiler flags for
+# unices, empty on WIN32. Esentially
+# "`wx-config --cxxflags`".
+# wxWidgets_USE_FILE - convenience include file
+#
+# Sample usage:
+#
+# SET(wxWidgets_USE_LIBS base core gl net)
+# FIND_PACKAGE(wxWidgets)
+# 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)
+# ...
+
+# NOTES
+#
+# This module has been tested on the WIN32 platform with wxWidgets
+# 2.6.2, 2.6.3, and 2.5.3. However, it has been designed to
+# easily extend support to all possible builds, e.g., static/shared,
+# debug/release, unicode, universal, multilib/monolithic, etc..
+#
+# If you want to use the module and your build type is not supported
+# out-of-the-box, please contact me to exchange information on how
+# your system is setup and I'll try to add support for it.
+#
+# AUTHOR
+#
+# Miguel A. Figueroa-Villanueva (miguelf at ieee dot org).
+# Jan Woetzel (jw at mip.informatik.uni-kiel.de).
+#
+# Based on previous works of:
+# Jan Woetzel (FindwxWindows.cmake),
+# Jorgen Bodde and Jerry Fath (FindwxWin.cmake).
+
+#
+# TODO/ideas
+#
+# (1) Option/Setting to use all available wx libs
+# In contrast to expert developer who lists the
+# minimal set of required libs in wxWidgets_USE_LIBS
+# there is the newbie user:
+# - who just wants to link against WX with more 'magic'
+# - doesn't know the internal structure of WX or how it was built,
+# in particular if it is monolithic or not
+# - want to link against all available WX libs
+# Basically, the intent here is to mimic what wx-config would do by
+# default (i.e., `wx-config --libs`).
+#
+# Possible solution:
+# Add a reserved keyword "std" that initializes to what wx-config
+# would default to. If the user has not set the wxWidgets_USE_LIBS,
+# 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.
+#
+MACRO(DBG_MSG _MSG)
+ # MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+ENDMACRO(DBG_MSG)
+
+# 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 msw26 msw27 msw28
+ 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_LIBRARY_DIRS "")
+SET(wxWidgets_CXX_FLAGS "")
+
+#=====================================================================
+#=====================================================================
+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)
+
+ # 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=""
+ #
+ MACRO(WX_GET_NAME_COMPONENTS _CONFIGURATION _UNV _UCD _DBG)
+ STRING(REGEX MATCH "univ" ${_UNV} "${_CONFIGURATION}")
+ STRING(REGEX REPLACE "msw.*(u)[d]*$" "u" ${_UCD} "${_CONFIGURATION}")
+ IF(${_UCD} STREQUAL ${_CONFIGURATION})
+ SET(${_UCD} "")
+ ENDIF(${_UCD} STREQUAL ${_CONFIGURATION})
+ STRING(REGEX MATCH "d$" ${_DBG} "${_CONFIGURATION}")
+ ENDMACRO(WX_GET_NAME_COMPONENTS)
+
+ #
+ # 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}")
+
+ # Find wxWidgets common libraries
+ FOREACH(LIB png tiff jpeg zlib regex expat)
+ FIND_LIBRARY(WX_${LIB}${_DBG}
+ NAMES
+ wx${LIB}${_UCD}${_DBG} # for regex
+ wx${LIB}${_DBG}
+ PATHS ${WX_LIB_DIR}
+ NO_DEFAULT_PATH
+ )
+ MARK_AS_ADVANCED(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+
+ # Find wxWidgets multilib base libraries
+ FIND_LIBRARY(WX_base${_DBG}
+ NAMES
+ wxbase26${_UCD}${_DBG}
+ wxbase25${_UCD}${_DBG}
+ PATHS ${WX_LIB_DIR}
+ NO_DEFAULT_PATH
+ )
+ MARK_AS_ADVANCED(WX_base${_DBG})
+ FOREACH(LIB net odbc xml)
+ FIND_LIBRARY(WX_${LIB}${_DBG}
+ NAMES
+ wxbase26${_UCD}${_DBG}_${LIB}
+ wxbase25${_UCD}${_DBG}_${LIB}
+ PATHS ${WX_LIB_DIR}
+ NO_DEFAULT_PATH
+ )
+ MARK_AS_ADVANCED(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+
+ # Find wxWidgets monolithic library
+ FIND_LIBRARY(WX_mono${_DBG}
+ NAMES
+ wxmsw${_UNV}26${_UCD}${_DBG}
+ wxmsw${_UNV}25${_UCD}${_DBG}
+ PATHS ${WX_LIB_DIR}
+ NO_DEFAULT_PATH
+ )
+ MARK_AS_ADVANCED(WX_mono${_DBG})
+
+ # Find wxWidgets multilib libraries
+ FOREACH(LIB core adv html media xrc dbgrid gl qa)
+ FIND_LIBRARY(WX_${LIB}${_DBG}
+ NAMES
+ wxmsw${_UNV}26${_UCD}${_DBG}_${LIB}
+ wxmsw${_UNV}25${_UCD}${_DBG}_${LIB}
+ PATHS ${WX_LIB_DIR}
+ NO_DEFAULT_PATH
+ )
+ MARK_AS_ADVANCED(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+ ENDMACRO(WX_FIND_LIBS)
+
+ #
+ # Clear all library paths, so that FIND_LIBRARY refinds them.
+ #
+ # Clear a lib, reset its found flag, and mark as advanced.
+ MACRO(WX_CLEAR_LIB _LIB)
+ SET(${_LIB} "${_LIB}-NOTFOUND" CACHE FILEPATH "Cleared." FORCE)
+ SET(${_LIB}_FOUND FALSE)
+ MARK_AS_ADVANCED(${_LIB})
+ ENDMACRO(WX_CLEAR_LIB)
+ # Clear all debug or release library paths (arguments are "d" or "").
+ MACRO(WX_CLEAR_ALL_LIBS _DBG)
+ # Clear wxWidgets common libraries
+ FOREACH(LIB png tiff jpeg zlib regex expat)
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+
+ # Clear wxWidgets multilib base libraries
+ WX_CLEAR_LIB(WX_base${_DBG})
+ FOREACH(LIB net odbc xml)
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+
+ # Clear wxWidgets monolithic library
+ WX_CLEAR_LIB(WX_mono${_DBG})
+
+ # Clear wxWidgets multilib libraries
+ FOREACH(LIB core adv html media xrc dbgrid gl qa)
+ WX_CLEAR_LIB(WX_${LIB}${_DBG})
+ ENDFOREACH(LIB)
+ ENDMACRO(WX_CLEAR_ALL_LIBS)
+ # Clear all wxWidgets debug libraries.
+ MACRO(WX_CLEAR_ALL_DBG_LIBS)
+ WX_CLEAR_ALL_LIBS("d")
+ ENDMACRO(WX_CLEAR_ALL_DBG_LIBS)
+ # Clear all wxWidgets release libraries.
+ MACRO(WX_CLEAR_ALL_REL_LIBS)
+ WX_CLEAR_ALL_LIBS("")
+ ENDMACRO(WX_CLEAR_ALL_REL_LIBS)
+
+ #
+ # Set the wxWidgets_LIBRARIES variable.
+ # Also, Sets output variable wxWidgets_FOUND to FALSE if it fails.
+ #
+ MACRO(WX_SET_LIBRARIES _LIBS _DBG)
+ 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}")
+ IF(WX_${LIB} AND WX_${LIB}d)
+ DBG_MSG("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}")
+ 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}}")
+ IF(WX_${LIB}${_DBG})
+ DBG_MSG("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}}")
+ 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}})
+
+ SET(wxWidgets_LIBRARIES ${wxWidgets_LIBRARIES}
+ winmm
+ comctl32
+ rpcrt4
+ wsock32
+ )
+ ENDMACRO(WX_SET_LIBRARIES)
+
+ #---------------------------------------------------------------------
+ # WIN32: Start actual work.
+ #---------------------------------------------------------------------
+ #
+ # Look for an installation tree.
+ #
+ FIND_PATH(wxWidgets_ROOT_DIR include/wx/wx.h
+ $ENV{WXWIN}
+ "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\wxWidgets_is1;Inno Setup: App Path]" ## WX 2.6.x
+ C:/wxWidgets-2.6.3
+ D:/wxWidgets-2.6.3
+ C:/wxWidgets-2.6.2
+ D:/wxWidgets-2.6.2
+ C:/wxWidgets-2.6.1
+ D:/wxWidgets-2.6.1
+ C:/wxWidgets-2.6.0
+ D:/wxWidgets-2.6.0
+ C:/wxWidgets-2.5.5
+ D:/wxWidgets-2.5.5
+ C:/wxWidgets-2.5.4
+ D:/wxWidgets-2.5.4
+ C:/wxWidgets-2.5.3
+ D:/wxWidgets-2.5.3
+ C:/wxWidgets-2.5.2
+ D:/wxWidgets-2.5.2
+ C:/wxWidgets-2.5.1
+ D:/wxWidgets-2.5.1
+ DOC "wxWidgets base/installation directory?"
+ )
+
+ # If wxWidgets_ROOT_DIR changed, clear all libraries and 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
+ IF(BUILD_SHARED_LIBS)
+ FIND_PATH(wxWidgets_LIB_DIR
+ NAMES wxpng.lib wxpngd.lib
+ PATHS
+ ${WX_ROOT_DIR}/lib/vc_dll # prefer shared
+ ${WX_ROOT_DIR}/lib/vc_lib
+ DOC "Path to wxWidgets libraries?"
+ NO_DEFAULT_PATH
+ )
+ ELSE(BUILD_SHARED_LIBS)
+ FIND_PATH(wxWidgets_LIB_DIR
+ NAMES wxpng.lib wxpngd.lib
+ PATHS
+ ${WX_ROOT_DIR}/lib/vc_lib # prefer static
+ ${WX_ROOT_DIR}/lib/vc_dll
+ DOC "Path to wxWidgets libraries?"
+ NO_DEFAULT_PATH
+ )
+ ENDIF(BUILD_SHARED_LIBS)
+
+ # If wxWidgets_LIB_DIR changed, clear all libraries.
+ IF(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
+ SET(WX_LIB_DIR ${wxWidgets_LIB_DIR} CACHE INTERNAL "wxWidgets_LIB_DIR")
+ WX_CLEAR_ALL_DBG_LIBS()
+ WX_CLEAR_ALL_REL_LIBS()
+ ENDIF(NOT WX_LIB_DIR STREQUAL wxWidgets_LIB_DIR)
+
+ IF(WX_LIB_DIR)
+ SET(wxWidgets_FOUND TRUE)
+
+ 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")
+ ENDIF(WX_LIB_DIR MATCHES ".*[dD][lL][lL].*")
+
+ #---------------------------------------------------------------------
+ # WIN32: ???
+ #---------------------------------------------------------------------
+ # Search for possible configuration type availabilities
+ # ***** SET(WX_LAST_CFG "")
+ FOREACH(CFG mswunivud mswunivd mswud mswd mswunivu mswuniv mswu msw)
+ SET(WX_${CFG}_FOUND FALSE)
+ IF(EXISTS ${WX_LIB_DIR}/${CFG})
+ SET(WX_CONFIGURATION_LIST ${WX_CONFIGURATION_LIST} ${CFG})
+ SET(WX_${CFG}_FOUND TRUE)
+ SET(WX_CONFIGURATION ${CFG})
+ ENDIF(EXISTS ${WX_LIB_DIR}/${CFG})
+ ENDFOREACH(CFG)
+
+ # ***** 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(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+ SET(wxWidgets_CONFIGURATION ${WX_CONFIGURATION} CACHE STRING
+ "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
+ ELSE(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+ SET(wxWidgets_CONFIGURATION ${wxWidgets_CONFIGURATION} CACHE STRING
+ "Set wxWidgets configuration (${WX_CONFIGURATION_LIST})" FORCE)
+ ENDIF(NOT WX_${wxWidgets_CONFIGURATION}_FOUND)
+
+ # if release config was 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(wxWidgets_USE_REL_AND_DBG)
+ SET(wxWidgets_USE_REL_AND_DBG FALSE CACHE BOOL
+ "No ${wxWidgets_CONFIGURATION}d found." FORCE)
+ ENDIF(wxWidgets_USE_REL_AND_DBG)
+ SET(WX_USE_REL_AND_DBG FALSE)
+ ENDIF(WX_${wxWidgets_CONFIGURATION}d_FOUND)
+
+ # Get configuration parameters from the name.
+ WX_GET_NAME_COMPONENTS(${wxWidgets_CONFIGURATION} UNV UCD DBG)
+
+ # Set wxWidgets main include directory.
+ 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")
+ SET(wxWidgets_FOUND FALSE)
+ ENDIF(EXISTS ${WX_ROOT_DIR}/include/wx/wx.h)
+
+ # Set wxWidgets lib setup include directory.
+ IF(EXISTS ${WX_LIB_DIR}/${wxWidgets_CONFIGURATION}/wx/setup.h)
+ 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.")
+ 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}")
+ IF(WX_USE_REL_AND_DBG)
+ 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)
+
+ # Always add the common required libs.
+ LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_COMMON_LIBRARIES} )
+
+ # Settings for requested libs (i.e., include dir, libraries, etc.).
+ WX_SET_LIBRARIES(wxWidgets_USE_LIBS "${DBG}")
+
+ ENDIF(WX_CONFIGURATION)
+ ENDIF(WX_LIB_DIR)
+ ENDIF(WX_ROOT_DIR)
+
+
+ #=====================================================================
+ #=====================================================================
+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(${wxWidgets_CONFIG_EXECUTABLE}
+ ARGS "--cxxflags"
+ OUTPUT_VARIABLE wxWidgets_CXX_FLAGS
+ RETURN_VALUE 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}")
+ # convert space to semicolons for list
+ STRING(REGEX REPLACE " " ";" wxWidgets_INCLUDE_DIRS "${wxWidgets_INCLUDE_DIRS}")
+
+ # drop -I* from CXXFLAGS - postponed until -isystem is available to INCLUDE_DIRECTORIES to avoid pedantic warnings
+ #STRING(REGEX REPLACE "-I[^ ;]*" "" wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
+
+ IF (HAVE_ISYSTEM) # does the compiler support -isystem ?
+ IF (NOT APPLE) # -isystem seem unsuppored on Mac
+ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
+ IF (CMAKE_CXX_COMPILER MATCHES g\\+\\+) # just to be sure
+ # handle WX include dirs as system directories - ignores pedantic warnings with gcc
+ # replace -I by -isystem
+ STRING(REGEX REPLACE "-I" "-isystem" wxWidgets_CXX_FLAGS ${wxWidgets_CXX_FLAGS})
+ ENDIF(CMAKE_CXX_COMPILER MATCHES g\\+\\+)
+ ENDIF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
+ ENDIF(NOT APPLE)
+ ENDIF(HAVE_ISYSTEM)
+
+ ELSE(RET EQUAL 0)
+ DBG_MSG("${wxWidgets_CONFIG_EXECUTABLE} --cxxflags FAILED with RET=${RET}")
+ SET(wxWidgets_FOUND FALSE)
+ 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(${wxWidgets_CONFIG_EXECUTABLE}
+ ARGS "--libs ${wxWidgets_USE_LIBS}"
+ OUTPUT_VARIABLE wxWidgets_LIBRARIES
+ RETURN_VALUE RET)
+ IF(RET EQUAL 0)
+ STRING(REGEX REPLACE " " ";" wxWidgets_LIBRARIES "${wxWidgets_LIBRARIES}")
+ STRING(REGEX 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" ""
+ wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
+
+ # convert space to semicolons for list
+ STRING(REGEX REPLACE " " ";" wxWidgets_LIBRARY_DIRS "${wxWidgets_LIBRARY_DIRS}")
+ ELSE(RET EQUAL 0)
+ SET(wxWidgets_FOUND FALSE)
+ ENDIF(RET EQUAL 0)
+ ENDIF(wxWidgets_CONFIG_EXECUTABLE)
+
+ 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.")
+ 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)
+
+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_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)
diff --git a/Modules/FindwxWindows.cmake b/Modules/FindwxWindows.cmake
index f5f3065..95d891e 100644
--- a/Modules/FindwxWindows.cmake
+++ b/Modules/FindwxWindows.cmake
@@ -1,7 +1,9 @@
# - Find wxWindows (wxWidgets) installation
# This module finds if wxWindows/wxWidgets 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:
+# the library is.
+# Please note this file is DEPRECATED and replaced by FindwxWidgets.cmake.
+# This code sets the following variables:
#
# WXWINDOWS_FOUND = system has WxWindows
# WXWINDOWS_LIBRARIES = path to the wxWindows libraries
@@ -16,17 +18,13 @@
# Unix
# WXWINDOWS_DEFINITIONS = extra defines
#
-# DEPRECATED
-# CMAKE_WX_CAN_COMPILE
-# WXWINDOWS_LIBRARY
-# CMAKE_WX_CXX_FLAGS
-# WXWINDOWS_INCLUDE_PATH
-#
# OPTIONS
# If you need OpenGL support please
# SET(WXWINDOWS_USE_GL 1)
# in your CMakeLists.txt *before* you include this file.
#
+# HAVE_ISYSTEM - true required to replace -I by -isystem on g++
+#
# For convenience include Use_wxWindows.cmake in your project's
# CMakeLists.txt using INCLUDE(Use_wxWindows).
#
@@ -39,6 +37,13 @@
# e.g. compiled in wx/build/msw dir as:
# nmake -f makefile.vc BUILD=debug SHARED=0 USE_OPENGL=1 MONOLITHIC=1
#
+# DEPRECATED
+#
+# CMAKE_WX_CAN_COMPILE
+# WXWINDOWS_LIBRARY
+# CMAKE_WX_CXX_FLAGS
+# WXWINDOWS_INCLUDE_PATH
+#
# AUTHOR
# Jan Woetzel <http://www.mip.informatik.uni-kiel.de/~jw> (07/2003-01/2006)
@@ -606,7 +611,17 @@ ELSE(WIN32_STYLE_FIND)
##MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===")
# set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user:
+ IF (HAVE_ISYSTEM) # does the compiler support -isystem ?
+ IF (NOT APPLE) # -isystem seem sto be unsuppored on Mac
+ IF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
+ IF (CMAKE_CXX_COMPILER MATCHES g\\+\\+)
SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`")
+ ELSE(CMAKE_CXX_COMPILER MATCHES g\\+\\+)
+ SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags`")
+ ENDIF(CMAKE_CXX_COMPILER MATCHES g\\+\\+)
+ ENDIF(CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX )
+ ENDIF (NOT APPLE)
+ ENDIF (HAVE_ISYSTEM)
##MESSAGE("DBG: for compilation:
##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===")
diff --git a/Modules/Use_wxWindows.cmake b/Modules/Use_wxWindows.cmake
index 8acd0a1..a7d042d 100644
--- a/Modules/Use_wxWindows.cmake
+++ b/Modules/Use_wxWindows.cmake
@@ -1,43 +1,50 @@
-# - Find wxWindows installation
#
# This convenience include finds if wxWindows is installed
# and set the appropriate libs, incdirs, flags etc.
-# INCLUDE_DIRECTORIES, LINK_DIRECTORIES and ADD_DEFINITIONS
-# are called.
# author Jan Woetzel <jw -at- mip.informatik.uni-kiel.de> (07/2003)
-#
+##
+# -----------------------------------------------------
+# USAGE:
+# just include Use_wxWindows.cmake
+# in your projects CMakeLists.txt
+# INCLUDE( ${CMAKE_MODULE_PATH}/Use_wxWindows.cmake)
+##
# if you are sure you need GL then
# SET(WXWINDOWS_USE_GL 1)
# *before* you include this file.
#
+# -----------------------------------------------------
+# 16.Feb.2004: changed INCLUDE to FIND_PACKAGE to read from users own non-system CMAKE_MODULE_PATH (Jan Woetzel JW)
+# 07/2006: rewrite as FindwxWidgets.cmake, kept for backward compatibilty JW
+
+MESSAGE(STATUS "Use_wxWindows.cmake is DEPRECATED. \n"
+"Please use FIND_PACKAGE(wxWidgets) and INCLUDE(${wxWidgets_USE_FILE}) instead. (JW)")
-INCLUDE(FindwxWindows)
+# ------------------------
+
+FIND_PACKAGE( wxWindows )
IF(WXWINDOWS_FOUND)
- #MESSAGE("DBG Use_wxWindows.cmake: WXWINDOWS_INCLUDE_DIR=${WXWINDOWS_INCLUDE_DIR} WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES} WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES} CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS} WXWINDOWS_DEFINITIONS=${WXWINDOWS_DEFINITIONS}")
+#MESSAGE("DBG Use_wxWindows.cmake: WXWINDOWS_INCLUDE_DIR=${WXWINDOWS_INCLUDE_DIR} WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES} WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES} CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS} WXWINDOWS_DEFINITIONS=${WXWINDOWS_DEFINITIONS}")
IF(WXWINDOWS_INCLUDE_DIR)
INCLUDE_DIRECTORIES(${WXWINDOWS_INCLUDE_DIR})
ENDIF(WXWINDOWS_INCLUDE_DIR)
-
IF(WXWINDOWS_LINK_DIRECTORIES)
LINK_DIRECTORIES(${WXWINDOWS_LINK_DIRECTORIES})
ENDIF(WXWINDOWS_LINK_DIRECTORIES)
-
IF(WXWINDOWS_LIBRARIES)
LINK_LIBRARIES(${WXWINDOWS_LIBRARIES})
ENDIF(WXWINDOWS_LIBRARIES)
-
IF (CMAKE_WXWINDOWS_CXX_FLAGS)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_WXWINDOWS_CXX_FLAGS}")
ENDIF(CMAKE_WXWINDOWS_CXX_FLAGS)
-
IF(WXWINDOWS_DEFINITIONS)
ADD_DEFINITIONS(${WXWINDOWS_DEFINITIONS})
ENDIF(WXWINDOWS_DEFINITIONS)
-
ELSE(WXWINDOWS_FOUND)
MESSAGE(SEND_ERROR "wxWindows not found by Use_wxWindows.cmake")
ENDIF(WXWINDOWS_FOUND)
+
diff --git a/Modules/UsewxWidgets.cmake b/Modules/UsewxWidgets.cmake
index 8c219f1..a6440ae 100644
--- a/Modules/UsewxWidgets.cmake
+++ b/Modules/UsewxWidgets.cmake
@@ -1,4 +1,67 @@
-# - Same as Use_wxWindows
+# - Convenience include for using wxWidgets library
+# Finds if wxWidgets is installed
+# and set the appropriate libs, incdirs, flags etc.
+# INCLUDE_DIRECTORIES, LINK_DIRECTORIES and ADD_DEFINITIONS
+# are called.
#
+# USAGE
+# SET( wxWidgets_USE_LIBS gl xml xrc ) # optionally: more than wx std libs
+# FIND_PACKAGE(wxWidgets REQUIRED)
+# INCLUDE( ${xWidgets_USE_FILE} )
+# ... add your targets here, e.g. ADD_EXECUTABLE/ ADD_LIBRARY ...
+# TARGET_LINK_LIBRARIERS( <yourWxDependantTarget> ${wxWidgets_LIBRARIES})
+#
+# DEPRECATED
+# LINK_LIBRARIES is not called in favor of adding dependencies per target.
+#
+# AUTHOR
+# Jan Woetzel <jw -at- mip.informatik.uni-kiel.de>
+
+
+# debug message and logging.
+# comment these out for distribution
+IF (NOT LOGFILE )
+ # SET(LOGFILE "${PROJECT_BINARY_DIR}/CMakeOutput.log")
+ENDIF (NOT LOGFILE )
+MACRO(MSG _MSG)
+ # FILE(APPEND ${LOGFILE} "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}\n")
+ # MESSAGE(STATUS "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${_MSG}")
+ENDMACRO(MSG)
+
+
+MSG("wxWidgets_FOUND=${wxWidgets_FOUND}")
+IF (wxWidgets_FOUND)
+ IF (wxWidgets_INCLUDE_DIRS)
+ INCLUDE_DIRECTORIES( ${wxWidgets_INCLUDE_DIRS} )
+ MSG("wxWidgets_INCLUDE_DIRS=${wxWidgets_INCLUDE_DIRS}")
+ ENDIF(wxWidgets_INCLUDE_DIRS)
+
+ IF (wxWidgets_LIBRARY_DIRS)
+ LINK_DIRECTORIES(${wxWidgets_LIBRARY_DIRS})
+ MSG("wxWidgets_LIBRARY_DIRS=${wxWidgets_LIBRARY_DIRS}")
+ ENDIF(wxWidgets_LIBRARY_DIRS)
+
+ IF (wxWidgets_DEFINITIONS)
+ ADD_DEFINITIONS( ${wxWidgets_DEFINITIONS} )
+ MSG("wxWidgets_DEFINITIONS=${wxWidgets_DEFINITIONS}")
+ ENDIF(wxWidgets_DEFINITIONS)
+
+ IF (wxWidgets_CXX_FLAGS)
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${wxWidgets_CXX_FLAGS}")
+ MSG("wxWidgets_CXX_FLAGS=${wxWidgets_CXX_FLAGS}")
+ ENDIF(wxWidgets_CXX_FLAGS)
+
+ # DEPRECATED JW
+ # just for backward compatibility: add deps to all targets
+ # library projects better use advanced FIND_PACKAGE(wxWidgets) directly.
+ #IF(wxWidgets_LIBRARIES)
+ # LINK_LIBRARIES(${wxWidgets_LIBRARIES})
+ # # BUG: str too long: MSG("wxWidgets_LIBRARIES=${wxWidgets_LIBRARIES}")
+ # IF(LOGFILE)
+ # FILE(APPEND ${LOGFILE} "${CMAKE_CURRENT_LIST_FILE}(${CMAKE_CURRENT_LIST_LINE}): ${wxWidgets_LIBRARIES}\n")
+ # ENDIF(LOGFILE)
+ #ENDIF(wxWidgets_LIBRARIES)
-INCLUDE(Use_wxWindows)
+ELSE (wxWidgets_FOUND)
+ MESSAGE("wxWidgets requested but not found.")
+ENDIF(wxWidgets_FOUND)
diff --git a/Modules/readme.txt b/Modules/readme.txt
index 1f6cc16..b9bd805 100644
--- a/Modules/readme.txt
+++ b/Modules/readme.txt
@@ -4,11 +4,12 @@ We would like all FindXXX.cmake files to produce consistent variable names.
Please use the following consistent variable names for general use.
-XXX_INCLUDE_DIR Where to find xxx.h, etc. If for some reason, you really need two paths, then that shouldn't be a problem - however, consider if you really should have two different FindXXX.cmake files. (XXX_INCLUDE_PATH was considered bad because a path includes an actual filename.)
-XXX_LIBRARIES The libraries to link against to use XXX. These should include full paths.
+XXX_INCLUDE_DIRS The final set of include directories listed in one variable for use by client code. This should not be a cache entry.
+XXX_LIBRARIES The libraries to link against to use XXX. These should include full paths. This should not be a cache entry.
XXX_DEFINITIONS Definitions to use when compiling code that uses XXX. This really shouldn't include options such as (-DHAS_JPEG)that a client source-code file uses to decide whether to #include <jpeg.h>
XXX_EXECUTABLE Where to find the XXX tool.
XXX_YYY_EXECUTABLE Where to find the YYY tool that comes with XXX.
+XXX_LIBRARY_DIRS Optionally, the final set of library directories listed in one variable for use by client code. This should not be a cache entry.
XXX_ROOT_DIR Where to find the base directory of XXX.
XXX_VERSION_YY Expect Version YY if true. Make sure at most one of these is ever true.
XXX_WRAP_YY If False, do not try to use the relevent CMake wrapping command.
@@ -21,6 +22,8 @@ The following names should not usually be used in CMakeLists.txt files, but they
XXX_LIBRARY Name of XXX Library. A User may set this and XXX_INCLUDE_DIR to ignore to force non-use of XXX.
XXX_YY_LIBRARY Name of YY library that is part of the XXX system. It may or may not be required to use XXX.
+XXX_INCLUDE_DIR Where to find xxx.h, etc. (XXX_INCLUDE_PATH was considered bad because a path includes an actual filename.)
+XXX_YY_INCLUDE_DIR Where to find xxx_yy.h, etc.
For tidiness's sake, try to keep as many options as possible out of the cache, leaving at least one option which can be used to disable use of the module, or locate a not-found library (e.g. XXX_ROOT_DIR). For the same reason, mark most cache options as advanced.
@@ -68,8 +71,9 @@ XXX_FIND_REQUIRED to true before loading the FindXXX.cmake module. If
this variable is set the module should issue a FATAL_ERROR if the
package cannot be found. For each package-specific component, say
YYY, listed after the REQUIRED option a variable XXX_FIND_REQUIRED_YYY
-to true. This can be used by the FindXXX.cmake module to determine
-which sub-components of the package must be found. If neither the
-QUIET nor REQUIRED options are given then the FindXXX.cmake module
-should look for the package and complain without error if the module
-is not found.
+to true. The set of components listed will also be specified in a
+XXX_FIND_COMPONENTS variable. This can be used by the FindXXX.cmake
+module to determine which sub-components of the package must be found.
+If neither the QUIET nor REQUIRED options are given then the
+FindXXX.cmake module should look for the package and complain without
+error if the module is not found.