[cmake-commits] miguelf committed FindwxWidgets.cmake 1.5 1.6

cmake-commits at cmake.org cmake-commits at cmake.org
Fri Oct 12 21:30:27 EDT 2007


Update of /cvsroot/CMake/CMake/Modules
In directory public:/mounts/ram/cvs-serv10313

Modified Files:
	FindwxWidgets.cmake 
Log Message:
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.


Index: FindwxWidgets.cmake
===================================================================
RCS file: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- FindwxWidgets.cmake	19 Oct 2006 14:07:41 -0000	1.5
+++ FindwxWidgets.cmake	13 Oct 2007 01:30:24 -0000	1.6
@@ -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 @@
   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 @@
   # 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 @@
     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 @@
     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 @@
   # 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 @@
       )
   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(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 @@
           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 @@
             "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(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 @@
           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 @@
           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})
+        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}")
 
-        # 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}")
+#        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)



More information about the Cmake-commits mailing list