View Issue Details [ Jump to Notes ] | [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0003443 | CMake | CMake | public | 2006-06-26 10:37 | 2006-07-21 15:44 | ||||
Reporter | Jan Woetzel | ||||||||
Assigned To | Brad King | ||||||||
Priority | high | Severity | major | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | |||||||||
Target Version | Fixed in Version | ||||||||
Summary | 0003443: rewrite of FindwxWidgets.cmake, UsewxWidgets.cmake - Please commit to CVS | ||||||||
Description | Miguel A. Figueroa-Villanueva and I rewrote the find script for wxWidgets (formerly known as wxWindows). The work is based on Jorgen Boddes FindwxWin. Improvements include : - use wxWidgets instead of deprecated wxWindows variable names - Windows linking against wx static and shared(DLL) works, - Debug and Release in one MSVS configuration works, - monolithic and multilib wx builds are handled correctly, - the user can specify his required subset of required libraries fo rmultilib build (instead of monolithic). - easy maintainment for future wx versions because it`s macro based. We use+tested the script internally on Linux + Windows (static+shared) x (Debug,Release) with our internal Dart Dashboards. The convenience UsewxWIdgets.cmake script is backward compatible. The FindwxWidgets.cmake script is not backward compatible because of variabel name change (WXWINDOWS_* -> WXWIDGETS_* ) I wrote the FindwxWindows in current CMake distribution and suggest: - put Find+USe for wxWidgets into CMake CVS Modules directory (see the attached files), - keep the Find+Use wxWindows script as they are for backward compatibility. | ||||||||
Tags | No tags attached. | ||||||||
Attached Files | FindwxWidgets.zip [^] (7,090 bytes) 1969-12-31 19:00 FindwxWidgets.cmake [^] (21,779 bytes) 1969-12-31 19:00 FindwxWidgets_v3.zip [^] (7,277 bytes) 1969-12-31 19:00 CMake.patch [^] (38,789 bytes) 1969-12-31 19:00 [Show Content] [Hide Content] Index: Modules/FindwxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v retrieving revision 1.2 diff -u -r1.2 FindwxWidgets.cmake --- Modules/FindwxWidgets.cmake 27 Aug 2004 02:52:53 -0000 1.2 +++ Modules/FindwxWidgets.cmake 4 Jul 2006 17:22:15 -0000 @@ -1 +1,579 @@ -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. +# +# +# The following are set after configuration is done: +# +# WXWIDGETS_FOUND - Set to TRUE if wxWidgets was found. +# WXWIDGETS_INCLUDE_DIR - 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_LINK_DIRECTORIES - 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`". +# +# Sample usage: +# +# SET(WXWIDGETS_USE_LIBS base core gl net) +# FIND_PACKAGE(wxWidgets) +# IF(WXWIDGETS_FOUND) +# MESSAGE(STATUS "Found wxWidgets!") +# IF (WXWIDGETS_INCLUDE_DIR) +# INCLUDE_DIRECTORIES(${WXWIDGETS_INCLUDE_DIR}) +# ENDIF(WXWIDGETS_INCLUDE_DIR) +# IF (WXWIDGETS_LINK_DIRECTORIES) +# LINK_DIRECTORIES(${WXWIDGETS_LINK_DIRECTORIES}) +# ENDIF(WXWIDGETS_LINK_DIRECTORIES) +# IF (WXWIDGETS_CXX_FLAGS) +# SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WXWIDGETS_CXX_FLAGS}") +# ENDIF(WXWIDGETS_CXX_FLAGS) +# IF (WXWIDGETS_DEFINITIONS) +# ADD_DEFINITIONS(${WXWIDGETS_DEFINITIONS}) +# ENDIF(WXWIDGETS_DEFINITIONS) +# # and for each of your dependant executable/library targets: +# TARGET_LINK_LIBRARIES(target ${WXWIDGETS_LIBRARIES}) +# ENDIF(WXWIDGETS_FOUND) +# +# Sample usage with monolithic wx build: +# SET(WXWIDGETS_USE_LIBS msw26 expat jpeg gl png regex tiff zlib) +# ... +# +# NOTES +# See UsewxWidgets.cmake for a convenience interface +# +# 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), and Jorgen Bodde (FindwxWin.cmake). + +# +# TODO/wish list (Jan Woetzel) +# +# (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) + +# +# Clear return values in case the module is loaded more than once. +# +SET(WXWIDGETS_FOUND FALSE) +# +SET(WXWIDGETS_INCLUDE_DIR "") +SET(WXWIDGETS_LIBRARIES "") +SET(WXWIDGETS_LINK_DIRECTORIES "") +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) + + #--------------------------------------------------------------------- + # 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) + + # *** Temporary hack for cmake 2.2-patch3 and older. + # FIND_PATH(<VAR> NAMES ... PATHS ...) not available + # *** + # JW: 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_DIR ${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_DIR ${WXWIDGETS_INCLUDE_DIR} + ${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) + + # Libraries we are interested in. + IF(WXWIDGETS_USE_LIBS) + # Add the common required libs. + SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS} + png tiff jpeg zlib regex expat + ) + ELSE(WXWIDGETS_USE_LIBS) + # Default minimal use setting (i.e., link to only core and base). + SET(WXWIDGETS_USE_LIBS base core + png tiff jpeg zlib regex expat + ) + ENDIF(WXWIDGETS_USE_LIBS) + + # 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_EXE wx-config) + IF(WXWIDGETS_CONFIG_EXE) + SET(WXWIDGETS_FOUND TRUE) + + # run the wx-config program to get cxxflags + EXEC_PROGRAM(${WXWIDGETS_CONFIG_EXE} + 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_DIR ${WXWIDGETS_CXX_FLAGS}) + STRING(REGEX REPLACE "-I" "" WXWIDGETS_INCLUDE_DIR "${WXWIDGETS_INCLUDE_DIR}") + # convert space to semicolons for list + SEPARATE_ARGUMENTS( WXWIDGETS_INCLUDE_DIR ) + + # 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 (CMAKE_CXX_COMPILER MATCHES g\\+\\+) + # 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\\+\\+) + + ELSE(RET EQUAL 0) + DBG_MSG("${WXWIDGETS_CONFIG_EXE} --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_EXE} + ARGS "--libs ${WXWIDGETS_USE_LIBS}" + OUTPUT_VARIABLE WXWIDGETS_LIBRARIES + RETURN_VALUE RET) + IF(RET EQUAL 0) + SEPARATE_ARGUMENTS(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_LINK_DIRECTORIES + "${WXWIDGETS_LIBRARIES}") + STRING(REGEX REPLACE "-L" "" + WXWIDGETS_LINK_DIRECTORIES "${WXWIDGETS_LINK_DIRECTORIES}") + + # convert space to semicolons for list + SEPARATE_ARGUMENTS( WXWIDGETS_LINK_DIRECTORIES ) + ELSE(RET EQUAL 0) + SET(WXWIDGETS_FOUND FALSE) + ENDIF(RET EQUAL 0) + ENDIF(WXWIDGETS_CONFIG_EXE) + + 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) + +DBG_MSG("WXWIDGETS_FOUND : ${WXWIDGETS_FOUND}" ) +DBG_MSG("WXWIDGETS_INCLUDE_DIR: ${WXWIDGETS_INCLUDE_DIR}") +DBG_MSG("WXWIDGETS_LINK_DIRECTORIES: ${WXWIDGETS_LINK_DIRECTORIES}") +DBG_MSG("WXWIDGETS_CXX_FLAGS : ${WXWIDGETS_CXX_FLAGS}" ) + +#===================================================================== +#===================================================================== +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) Index: Modules/FindwxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWindows.cmake,v retrieving revision 1.18 diff -u -r1.18 FindwxWindows.cmake --- Modules/FindwxWindows.cmake 12 Jan 2006 16:10:22 -0000 1.18 +++ Modules/FindwxWindows.cmake 4 Jul 2006 17:43:31 -0000 @@ -606,7 +606,11 @@ ##MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===") # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user: - SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`") + 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\\+\\+) ##MESSAGE("DBG: for compilation: ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===") Index: Modules/UsewxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/UsewxWidgets.cmake,v retrieving revision 1.3 diff -u -r1.3 UsewxWidgets.cmake --- Modules/UsewxWidgets.cmake 14 Dec 2005 18:51:08 -0000 1.3 +++ Modules/UsewxWidgets.cmake 4 Jul 2006 17:50:34 -0000 @@ -1,4 +1,116 @@ -# - 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 +# Include this file inside your CMakeLists.txt: +# SET(WXWIDGETS_USE_GL 1) # optionally: set this is you need wxgl +# SET( WXWIDGETS_USE_LIBS xml xrc ) # optionally: more than wx std libs? +# INCLUDE (${CMAKE_ROOT}/Modules/UsewxWidgets.cmake ) +# +# AUTHOR +# Jan Woetzel <jw -at- mip.informatik.uni-kiel.de> -INCLUDE(Use_wxWindows) + +# debug message and logging. +# comment these 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) + +# +# set wx libs we depend on. +# "std" libs is only supported by linux +# emulate "std" behavior here. +# +IF (WIN32) + # useful std wx libs + # workaround until Find script supports std libs with wx msw mono and multi build + SET(WXWIDGETS_LIBS_STD + expat regex + jpeg png tiff zlib + # xml net adv media html odbc xrc + ) + MSG("WXWIDGETS_LIBS_STD=${WXWIDGETS_LIBS_STD}") + + # use mono instead of multilib build? + OPTION(WXWIDGETS_USE_MONOLITHIC "use monolithic WX USE_LIBS etting for build?" OFF) + #MARK_AS_ADVANCED(WXWIDGETS_USE_MONOLITHIC) + MSG("WXWIDGETS_USE_MONOLITHIC=${WXWIDGETS_USE_MONOLITHIC}") + + IF (WXWIDGETS_USE_MONOLITHIC) + SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS} + mono + ${WXWIDGETS_LIBS_STD} ) + MSG("selected MONOLITHIC WX") + ELSE (WXWIDGETS_USE_MONOLITHIC) + SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS} + base core + ${WXWIDGETS_LIBS_STD} ) + MSG("selected MULTILIB WX") + ENDIF(WXWIDGETS_USE_MONOLITHIC) +ELSE (WIN32) + # use wx std libs + SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS} std) +ENDIF(WIN32) + +# check WXWIDGETS and WXWINDOWS for backward compatibility +#OPTION(WXWIDGETS_USE_GL "use wxgl lib with wxWidgets?" OFF) +IF (WXWIDGETS_USE_GL OR WXWINDOWS_USE_GL) + SET(WXWIDGETS_USE_LIBS ${WXWIDGETS_USE_LIBS} gl) +ENDIF(WXWIDGETS_USE_GL OR WXWINDOWS_USE_GL) + + +# +# start the find script with the above settings +# + +# INCLUDE(FindwxWidgets) +FIND_PACKAGE(wxWidgets REQUIRED) + + +# +# add results +# +MSG("WXWIDGETS_FOUND=${WXWIDGETS_FOUND}") +IF( WXWIDGETS_FOUND) + IF (WXWIDGETS_INCLUDE_DIR) + INCLUDE_DIRECTORIES( ${WXWIDGETS_INCLUDE_DIR} ) + MSG("WXWIDGETS_INCLUDE_DIR=${WXWIDGETS_INCLUDE_DIR}") + ENDIF(WXWIDGETS_INCLUDE_DIR) + + IF (WXWIDGETS_LINK_DIRECTORIES) + LINK_DIRECTORIES(${WXWIDGETS_LINK_DIRECTORIES}) + MSG("WXWIDGETS_LINK_DIRECTORIES=${WXWIDGETS_LINK_DIRECTORIES}") + ENDIF(WXWIDGETS_LINK_DIRECTORIES) + + 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) + + IF (WXWIDGETS_DEFINITIONS) + ADD_DEFINITIONS( ${WXWIDGETS_DEFINITIONS} ) + MSG("WXWIDGETS_DEFINITIONS=${WXWIDGETS_DEFINITIONS}") + ENDIF(WXWIDGETS_DEFINITIONS) + + # 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) + + +ELSE (WXWIDGETS_FOUND) + MESSAGE("wxWidgest requested but not found.") +ENDIF(WXWIDGETS_FOUND) Index: Source/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v retrieving revision 1.292 diff -u -r1.292 CMakeLists.txt --- Source/CMakeLists.txt 4 May 2006 01:42:51 -0000 1.292 +++ Source/CMakeLists.txt 4 Jul 2006 18:12:13 -0000 @@ -324,11 +324,11 @@ ENDIF(BUILD_MFCDialog) # WX Widgets GUI -OPTION(CMAKE_BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) -MARK_AS_ADVANCED(CMAKE_BUILD_WX_DIALOG) -IF(CMAKE_BUILD_WX_DIALOG) +OPTION(BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) +MARK_AS_ADVANCED(BUILD_WX_DIALOG) +IF(BUILD_WX_DIALOG) SUBDIRS(WXDialog) -ENDIF(CMAKE_BUILD_WX_DIALOG) +ENDIF(BUILD_WX_DIALOG) # Testing IF (NOT DART_ROOT) @@ -1063,9 +1063,8 @@ ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode") - - IF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) - # Will be set if the wxwindows gui is on + IF (BUILD_WX_DIALOG OR CMAKE_WXWIDGETS_WXCONFIG_EXECUTABLE OR WXWIDGETS_INCLUDE_DIR) + # Will be set if the WX gui is on ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/UseWX" @@ -1073,11 +1072,11 @@ --build-generator ${CMAKE_TEST_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} --build-exe-dir ${CMake_BINARY_DIR}/Tests/UseWX - --build-project UsewxWindows - --build-options -DCMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} + --build-project UsewxWidgets + --build-options -DCMAKE_WXWIDGETS_WXCONFIG_EXECUTABLE:FILEPATH=${CMAKE_WXWIDGETS_WXCONFIG_EXECUTABLE} --test-command UseWX ) - ENDIF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) + ENDIF(BUILD_WX_DIALOG OR CMAKE_WXWIDGETS_WXCONFIG_EXECUTABLE OR WXWIDGETS_INCLUDE_DIR) IF(UNIX) STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix" Index: Source/WXDialog/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v retrieving revision 1.23 diff -u -r1.23 CMakeLists.txt --- Source/WXDialog/CMakeLists.txt 14 Jul 2005 21:21:24 -0000 1.23 +++ Source/WXDialog/CMakeLists.txt 4 Jul 2006 18:09:49 -0000 @@ -9,32 +9,15 @@ ## License: wxWidgets License ##--------------------------------------------------------------------------- +# wxWidows -> wxWidgets Jan Woetzel 07/2006 +# tested with wx 2.6.3 with "multilib" build on Windows XP -#wxWidgets build related stuff -SET(WXW_USE_DEBUG OFF) -SET(WXW_USE_UNICODE OFF) -SET(WXW_USE_SHARED OFF) -SET(WXW_USE_UNIV OFF) -SET(WXW_USE_MONO OFF) -SET(WXW_FILE_VERSION "26") -SET(WXW_VERSION "2.6") - -#CMake Options +# CMake Options SET(CMAKE_VERBOSE_MAKEFILE TRUE) -IF(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxW.cmake) -ELSE(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxWin.cmake) - - # sync flags - SET(WXWIDGETS_FOUND ${WXWINDOWS_FOUND}) - SET(WXWIDGETS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}) - SET(WXWIDGETS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES}) - SET(WXWIDGETS_LIBRARIES ${WXWINDOWS_LIBRARIES}) -ENDIF(WIN32) - -# Old find script +# in addition to wx std libs we need +SET( WXWIDGETS_USE_LIBS html adv xml xrc ) +INCLUDE (${CMAKE_ROOT}/Modules/UsewxWidgets.cmake ) ## Start using wx stuff when it is fully found and set IF(WXWIDGETS_FOUND) @@ -58,24 +41,26 @@ CommandLineInfo.cpp CommandLineInfo.h ) - # include .rc when windows - + # include .rc when windows IF(WIN32) - SET ( CMAKE_SRCS - ${CMAKE_SRCS} - CMakeSetup.rc ) + SET ( CMAKE_SRCS ${CMAKE_SRCS} CMakeSetup.rc ) ENDIF(WIN32) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog - ${WXWIDGETS_INCLUDE_DIR}) + ${WXWIDGETS_INCLUDE_DIR} ) LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) + IF(APPLE) ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) ELSE(APPLE) ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) ENDIF(APPLE) INSTALL_TARGETS(/bin WXDialog) - SET(CMAKE_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS}") + + # not required on MSVS beause bound to _DEBUG, but other compiler may need it. + # However, the define prevents multiple build configurations in one build tree, + # e.g. MSVS supports Debug;Release + # TODO: shall we add the define or not - favor multi config or all compilers? (JW) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") IF(LINUX) @@ -84,13 +69,13 @@ # if the checkbox view functionality is not desired, # exclude this part from the smple - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}) TARGET_LINK_LIBRARIES(WXDialog ${WXWIDGETS_LIBRARIES} cmsys CMakeLib) - - # if UPX is found, make a target - + + + # if UPX is found, make a target #INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindUPX.cmake) #IF(UPX_FOUND) #END(UPX_FOUND) - + + ENDIF(WXWIDGETS_FOUND) Index: Source/WXDialog/bin/FindUPX.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindUPX.cmake,v retrieving revision 1.1 diff -u -r1.1 FindUPX.cmake --- Source/WXDialog/bin/FindUPX.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindUPX.cmake 4 Jul 2006 16:32:04 -0000 @@ -5,14 +5,11 @@ # UPX_FOUND Is set to 1 when upx is found FIND_PATH(UPX_PROGRAM_PATH upx.exe - "c:\Program Files\upx" - "d:\Program Files\upx" - "e:\Program Files\upx" - "f:\Program Files\upx" - "g:\Program Files\upx" - "h:\Program Files\upx" + ${UPX_DIR} + $ENV{UPX_DIR} + "$ENV{ProgramFiles}/upx" ) - + # when found, note this as target IF(UPX_PROGRAM_PATH) SET(UPX_FOUND 1) Index: Source/WXDialog/bin/FindwxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxW.cmake,v retrieving revision 1.1 diff -u -r1.1 FindwxW.cmake --- Source/WXDialog/bin/FindwxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindwxW.cmake 4 Jul 2006 16:30:08 -0000 @@ -1,3 +1,6 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + # # FindwxW.cmake # v1.01 2005-05-27 @@ -14,6 +17,7 @@ # WXWIDGETS_INCLUDE_DIR = all include path of wxWindows # WXWIDGETS_DEFINITIONS = all flags of wxWindows + # NOTE: This module REQUIRES that an environment variable named WXWIN # be set to the base wxWidgets installation directory. # Under Unix, you must also set and environment variable named WXWINCFG Index: Source/WXDialog/bin/FindwxWin.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v retrieving revision 1.4 diff -u -r1.4 FindwxWin.cmake --- Source/WXDialog/bin/FindwxWin.cmake 15 Jul 2005 15:38:43 -0000 1.4 +++ Source/WXDialog/bin/FindwxWin.cmake 4 Jul 2006 16:30:13 -0000 @@ -1,3 +1,8 @@ + + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + ##--------------------------------------------------------------------------- ## $RCSfile: FindwxWin.cmake,v $ ## $Source: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v $ Index: Source/WXDialog/bin/UsewxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/UsewxW.cmake,v retrieving revision 1.1 diff -u -r1.1 UsewxW.cmake --- Source/WXDialog/bin/UsewxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/UsewxW.cmake 4 Jul 2006 16:30:19 -0000 @@ -1,3 +1,7 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + # # UsewxW.cmake # v1.0 2005-05-27 Index: Tests/UseWX/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/CMakeLists.txt,v retrieving revision 1.2 diff -u -r1.2 CMakeLists.txt --- Tests/UseWX/CMakeLists.txt 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/CMakeLists.txt 4 Jul 2006 14:39:10 -0000 @@ -1,9 +1,9 @@ -PROJECT (UsewxWindows) +PROJECT (UsewxWidgets) -INCLUDE( ${CMAKE_ROOT}/Modules/Use_wxWindows.cmake) +INCLUDE( ${CMAKE_ROOT}/Modules/UsewxWidgets.cmake) ADD_EXECUTABLE (UseWX WIN32 WX.cxx) #TODO: -#- dll linking is not working on WIN32, need to '-DWXUSINGDLL' to preprocessor +#- dll linking is not working on WIN32, need to '-DWXUSINGDLL' to preprocessor - fixed, JW Index: Utilities/Release/config_Darwin =================================================================== RCS file: /cvsroot/CMake/CMake/Utilities/Release/config_Darwin,v retrieving revision 1.8 diff -u -r1.8 config_Darwin --- Utilities/Release/config_Darwin 12 Jul 2005 21:22:41 -0000 1.8 +++ Utilities/Release/config_Darwin 4 Jul 2006 14:27:37 -0000 @@ -12,5 +12,6 @@ CURSES_LIBRARY:FILEPATH=/Users/kitware/staticCurses/libncurses.a CMAKE_BUILD_WX_DIALOG:BOOL=ON CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config +CMAKE_WXWIDGETS_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config EOF } final_CMake.patch [^] (45,096 bytes) 1969-12-31 19:00 [Show Content] [Hide Content] Index: Modules/FindwxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v retrieving revision 1.2 diff -u -r1.2 FindwxWidgets.cmake --- Modules/FindwxWidgets.cmake 27 Aug 2004 02:52:53 -0000 1.2 +++ Modules/FindwxWidgets.cmake 16 Jul 2006 14:02:11 -0000 @@ -1 +1,646 @@ -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> ) +# +# +# The following are set after configuration is done: +# +# wxWidgets_FOUND - Set to TRUE if wxWidgets was found. +# wxWidgets_INCLUDE_DIR - 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_LINK_DIRECTORIES - 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_DIR "") +SET(wxWidgets_LIBRARIES "") +SET(wxWidgets_LINK_DIRECTORIES "") +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_DIR ${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_DIR ${wxWidgets_INCLUDE_DIR} + ${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) + MESSAGE("DBG1 wxWidgets_USE_LIBS=${wxWidgets_USE_LIBS}") + LIST(APPEND wxWidgets_USE_LIBS ${wxWidgets_FIND_COMPONENTS}) + MESSAGE("DBG2 wxWidgets_USE_LIBS=${wxWidgets_USE_LIBS}") + 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_DIR ${wxWidgets_CXX_FLAGS}) + STRING(REGEX REPLACE "-I" "" wxWidgets_INCLUDE_DIR "${wxWidgets_INCLUDE_DIR}") + # convert space to semicolons for list + SEPARATE_ARGUMENTS( wxWidgets_INCLUDE_DIR ) + + # 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 (CMAKE_CXX_COMPILER MATCHES g\\+\\+) + # 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\\+\\+) + + 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) + SEPARATE_ARGUMENTS(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_LINK_DIRECTORIES + "${wxWidgets_LIBRARIES}") + STRING(REGEX REPLACE "-L" "" + wxWidgets_LINK_DIRECTORIES "${wxWidgets_LINK_DIRECTORIES}") + + # convert space to semicolons for list + SEPARATE_ARGUMENTS( wxWidgets_LINK_DIRECTORIES ) + 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_DIR : ${wxWidgets_INCLUDE_DIR}") +DBG_MSG("wxWidgets_LINK_DIRECTORIES: ${wxWidgets_LINK_DIRECTORIES}") +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) Index: Modules/FindwxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWindows.cmake,v retrieving revision 1.18 diff -u -r1.18 FindwxWindows.cmake --- Modules/FindwxWindows.cmake 12 Jan 2006 16:10:22 -0000 1.18 +++ Modules/FindwxWindows.cmake 4 Jul 2006 19:14:06 -0000 @@ -606,7 +606,11 @@ ##MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===") # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user: - SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`") + 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\\+\\+) ##MESSAGE("DBG: for compilation: ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===") Index: Modules/Use_wxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/Use_wxWindows.cmake,v retrieving revision 1.4 diff -u -r1.4 Use_wxWindows.cmake --- Modules/Use_wxWindows.cmake 15 Dec 2005 19:17:43 -0000 1.4 +++ Modules/Use_wxWindows.cmake 22 Jun 2006 11:09:36 -0000 @@ -1,43 +1,49 @@ -# - 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) -# -# if you are sure you need GL then -# SET(WXWINDOWS_USE_GL 1) -# *before* you include this file. +## +# ----------------------------------------------------- +# 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) + + +MESSAGE("Use_wxWindows is DEPRECTAED. Please use FIND_PACKAGE(wxWidgets) 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}") - - IF(WXWINDOWS_INCLUDE_DIR) + +#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) + 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) + Index: Modules/UsewxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/UsewxWidgets.cmake,v retrieving revision 1.3 diff -u -r1.3 UsewxWidgets.cmake --- Modules/UsewxWidgets.cmake 14 Dec 2005 18:51:08 -0000 1.3 +++ Modules/UsewxWidgets.cmake 16 Jul 2006 10:01:54 -0000 @@ -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_DIR) + INCLUDE_DIRECTORIES( ${wxWidgets_INCLUDE_DIR} ) + MSG("wxWidgets_INCLUDE_DIR=${wxWidgets_INCLUDE_DIR}") + ENDIF(wxWidgets_INCLUDE_DIR) + + IF (wxWidgets_LINK_DIRECTORIES) + LINK_DIRECTORIES(${wxWidgets_LINK_DIRECTORIES}) + MSG("wxWidgets_LINK_DIRECTORIES=${wxWidgets_LINK_DIRECTORIES}") + ENDIF(wxWidgets_LINK_DIRECTORIES) + + 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) -INCLUDE(Use_wxWindows) + # 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) + +ELSE (wxWidgets_FOUND) + MESSAGE("wxWidgets requested but not found.") +ENDIF(wxWidgets_FOUND) Index: Source/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v retrieving revision 1.295 diff -u -r1.295 CMakeLists.txt --- Source/CMakeLists.txt 11 Jul 2006 15:41:37 -0000 1.295 +++ Source/CMakeLists.txt 16 Jul 2006 13:31:45 -0000 @@ -326,11 +326,11 @@ ENDIF(BUILD_MFCDialog) # WX Widgets GUI -OPTION(CMAKE_BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) -MARK_AS_ADVANCED(CMAKE_BUILD_WX_DIALOG) -IF(CMAKE_BUILD_WX_DIALOG) +OPTION(BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) +MARK_AS_ADVANCED(BUILD_WX_DIALOG) +IF(BUILD_WX_DIALOG) SUBDIRS(WXDialog) -ENDIF(CMAKE_BUILD_WX_DIALOG) +ENDIF(BUILD_WX_DIALOG) # Testing IF (NOT DART_ROOT) @@ -1066,9 +1066,8 @@ ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode") - - IF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) - # Will be set if the wxwindows gui is on + IF (BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) + # Will be set if the WX gui is on ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/UseWX" @@ -1076,11 +1075,11 @@ --build-generator ${CMAKE_TEST_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} --build-exe-dir ${CMake_BINARY_DIR}/Tests/UseWX - --build-project UsewxWindows - --build-options -DCMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} + --build-project UsewxWidgets + --build-options -DwxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${wxWidgets_WXCONFIG_EXECUTABLE} --test-command UseWX ) - ENDIF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) + ENDIF(BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) IF(UNIX) STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix" Index: Source/cmFindPackageCommand.h =================================================================== RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.h,v retrieving revision 1.10 diff -u -r1.10 cmFindPackageCommand.h --- Source/cmFindPackageCommand.h 27 Jan 2006 18:07:23 -0000 1.10 +++ Source/cmFindPackageCommand.h 16 Jul 2006 14:29:51 -0000 @@ -66,7 +66,7 @@ { return " FIND_PACKAGE(<name> [major.minor] [QUIET]\n" - " [REQUIRED [componets...]])\n" + " [REQUIRED [components...]])\n" "Finds and loads settings from an external project. <name>_FOUND will " "be set to indicate whether the package was found. Settings that " "can be used when <name>_FOUND is true are package-specific. The " @@ -86,7 +86,7 @@ "generated. If REQUIRED is specified and the package is not found, " "a FATAL_ERROR is generated and the configure step stops executing." " A package-specific list of components may be listed after the " - "REQUIRED option."; + "REQUIRED option that can be accessed with <name>_FIND_COMPONENTS."; } cmTypeMacro(cmFindPackageCommand, cmCommand); Index: Source/WXDialog/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v retrieving revision 1.23 diff -u -r1.23 CMakeLists.txt --- Source/WXDialog/CMakeLists.txt 14 Jul 2005 21:21:24 -0000 1.23 +++ Source/WXDialog/CMakeLists.txt 16 Jul 2006 14:27:01 -0000 @@ -9,35 +9,22 @@ ## License: wxWidgets License ##--------------------------------------------------------------------------- +# wxWindows -> wxWidgets Jan Woetzel 07/2006 +# tested with wx 2.6.3 with "multilib" build on Windows XP -#wxWidgets build related stuff -SET(WXW_USE_DEBUG OFF) -SET(WXW_USE_UNICODE OFF) -SET(WXW_USE_SHARED OFF) -SET(WXW_USE_UNIV OFF) -SET(WXW_USE_MONO OFF) -SET(WXW_FILE_VERSION "26") -SET(WXW_VERSION "2.6") - -#CMake Options +# CMake Options SET(CMAKE_VERBOSE_MAKEFILE TRUE) -IF(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxW.cmake) -ELSE(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxWin.cmake) - - # sync flags - SET(WXWIDGETS_FOUND ${WXWINDOWS_FOUND}) - SET(WXWIDGETS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}) - SET(WXWIDGETS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES}) - SET(WXWIDGETS_LIBRARIES ${WXWINDOWS_LIBRARIES}) -ENDIF(WIN32) - -# Old find script - -## Start using wx stuff when it is fully found and set -IF(WXWIDGETS_FOUND) +# in addition to wx std libs we need +SET( wxWidgets_USE_LIBS + std + html adv xml xrc ) +FIND_PACKAGE(wxWidgets) +#INCLUDE(${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) + +# Start using wx stuff when it is fully found and set +IF(wxWidgets_FOUND) + INCLUDE( ${wxWidgets_USE_FILE} ) SET (CMAKE_SRCS CMakeSetupFrame.cpp @@ -58,24 +45,26 @@ CommandLineInfo.cpp CommandLineInfo.h ) - # include .rc when windows - + # include .rc when windows IF(WIN32) - SET ( CMAKE_SRCS - ${CMAKE_SRCS} - CMakeSetup.rc ) + SET ( CMAKE_SRCS ${CMAKE_SRCS} CMakeSetup.rc ) ENDIF(WIN32) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog - ${WXWIDGETS_INCLUDE_DIR}) - LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) + ${wxWidgets_INCLUDE_DIR} ) + LINK_DIRECTORIES( ${wxWidgets_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) + IF(APPLE) ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) ELSE(APPLE) ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) ENDIF(APPLE) INSTALL_TARGETS(/bin WXDialog) - SET(CMAKE_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS}") + + # not required on MSVS beause bound to _DEBUG, but other compiler may need it. + # However, the define prevents multiple build configurations in one build tree, + # e.g. MSVS supports Debug;Release + # TODO: shall we add the define or not - favor multi config or all compilers? (JW) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") IF(LINUX) @@ -84,13 +73,13 @@ # if the checkbox view functionality is not desired, # exclude this part from the smple - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}) - TARGET_LINK_LIBRARIES(WXDialog ${WXWIDGETS_LIBRARIES} cmsys CMakeLib) - - # if UPX is found, make a target - + TARGET_LINK_LIBRARIES(WXDialog ${wxWidgets_LIBRARIES} cmsys CMakeLib) + + + # if UPX is found, make a target #INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindUPX.cmake) #IF(UPX_FOUND) #END(UPX_FOUND) - -ENDIF(WXWIDGETS_FOUND) + + +ENDIF(wxWidgets_FOUND) Index: Source/WXDialog/bin/FindUPX.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindUPX.cmake,v retrieving revision 1.1 diff -u -r1.1 FindUPX.cmake --- Source/WXDialog/bin/FindUPX.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindUPX.cmake 16 Jul 2006 09:13:35 -0000 @@ -5,14 +5,11 @@ # UPX_FOUND Is set to 1 when upx is found FIND_PATH(UPX_PROGRAM_PATH upx.exe - "c:\Program Files\upx" - "d:\Program Files\upx" - "e:\Program Files\upx" - "f:\Program Files\upx" - "g:\Program Files\upx" - "h:\Program Files\upx" + ${UPX_DIR} + $ENV{UPX_DIR} + "$ENV{ProgramFiles}/upx" ) - + # when found, note this as target IF(UPX_PROGRAM_PATH) SET(UPX_FOUND 1) Index: Source/WXDialog/bin/FindwxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxW.cmake,v retrieving revision 1.1 diff -u -r1.1 FindwxW.cmake --- Source/WXDialog/bin/FindwxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindwxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,6 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + # # FindwxW.cmake # v1.01 2005-05-27 @@ -14,6 +17,7 @@ # WXWIDGETS_INCLUDE_DIR = all include path of wxWindows # WXWIDGETS_DEFINITIONS = all flags of wxWindows + # NOTE: This module REQUIRES that an environment variable named WXWIN # be set to the base wxWidgets installation directory. # Under Unix, you must also set and environment variable named WXWINCFG Index: Source/WXDialog/bin/FindwxWin.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v retrieving revision 1.4 diff -u -r1.4 FindwxWin.cmake --- Source/WXDialog/bin/FindwxWin.cmake 15 Jul 2005 15:38:43 -0000 1.4 +++ Source/WXDialog/bin/FindwxWin.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,8 @@ + + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + ##--------------------------------------------------------------------------- ## $RCSfile: FindwxWin.cmake,v $ ## $Source: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v $ Index: Source/WXDialog/bin/UsewxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/UsewxW.cmake,v retrieving revision 1.1 diff -u -r1.1 UsewxW.cmake --- Source/WXDialog/bin/UsewxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/UsewxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,7 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + # # UsewxW.cmake # v1.0 2005-05-27 Index: Tests/UseWX/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/CMakeLists.txt,v retrieving revision 1.2 diff -u -r1.2 CMakeLists.txt --- Tests/UseWX/CMakeLists.txt 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/CMakeLists.txt 16 Jul 2006 14:38:17 -0000 @@ -1,9 +1,8 @@ -PROJECT (UsewxWindows) +PROJECT (UsewxWidgets) -INCLUDE( ${CMAKE_ROOT}/Modules/Use_wxWindows.cmake) +INCLUDE( ${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) +#FIND_PACKAGE(wxWidgets) +INCLUDE( ${wxWidgets_USE_FILE} ) ADD_EXECUTABLE (UseWX WIN32 WX.cxx) - -#TODO: -#- dll linking is not working on WIN32, need to '-DWXUSINGDLL' to preprocessor - +TARGET_LINK_LIBRARIES(UseWX ${wxWidgets_LIBRARIES} ) Index: Tests/UseWX/WX.cxx =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/WX.cxx,v retrieving revision 1.2 diff -u -r1.2 WX.cxx --- Tests/UseWX/WX.cxx 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/WX.cxx 16 Jul 2006 14:40:12 -0000 @@ -51,9 +51,13 @@ //Testing if link to wx debug library #ifdef __WXDEBUG__ - printf("If you read this you're in debug mode.\n"); + printf("If you read this you're in __WXDEBUG__ debug mode.\n"); #endif //__WXDEBUG__ +#ifdef _DEBUG + printf("If you read this then _DEBUG is defined.\n"); +#endif //_DEBUG + wxChar ch = wxT('*'); wxString s = wxT("Hello, world!"); int len = s.Len(); Index: Utilities/Release/config_Darwin =================================================================== RCS file: /cvsroot/CMake/CMake/Utilities/Release/config_Darwin,v retrieving revision 1.8 diff -u -r1.8 config_Darwin --- Utilities/Release/config_Darwin 12 Jul 2005 21:22:41 -0000 1.8 +++ Utilities/Release/config_Darwin 16 Jul 2006 13:34:57 -0000 @@ -12,5 +12,6 @@ CURSES_LIBRARY:FILEPATH=/Users/kitware/staticCurses/libncurses.a CMAKE_BUILD_WX_DIALOG:BOOL=ON CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config +wxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config EOF } final_2_CMake.patch [^] (46,797 bytes) 1969-12-31 19:00 [Show Content] [Hide Content] Index: Modules/FindwxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v retrieving revision 1.2 diff -u -r1.2 FindwxWidgets.cmake --- Modules/FindwxWidgets.cmake 27 Aug 2004 02:52:53 -0000 1.2 +++ Modules/FindwxWidgets.cmake 16 Jul 2006 18:47:03 -0000 @@ -1 +1,644 @@ -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> ) +# +# +# The following are set after configuration is done: +# +# wxWidgets_FOUND - Set to TRUE if wxWidgets was found. +# wxWidgets_INCLUDE_DIR - 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_LINK_DIRECTORIES - 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_DIR "") +SET(wxWidgets_LIBRARIES "") +SET(wxWidgets_LINK_DIRECTORIES "") +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_DIR ${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_DIR ${wxWidgets_INCLUDE_DIR} + ${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_DIR ${wxWidgets_CXX_FLAGS}) + STRING(REGEX REPLACE "-I" "" wxWidgets_INCLUDE_DIR "${wxWidgets_INCLUDE_DIR}") + # convert space to semicolons for list + SEPARATE_ARGUMENTS( wxWidgets_INCLUDE_DIR ) + + # 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 (CMAKE_CXX_COMPILER MATCHES g\\+\\+) + # 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\\+\\+) + + 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) + SEPARATE_ARGUMENTS(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_LINK_DIRECTORIES + "${wxWidgets_LIBRARIES}") + STRING(REGEX REPLACE "-L" "" + wxWidgets_LINK_DIRECTORIES "${wxWidgets_LINK_DIRECTORIES}") + + # convert space to semicolons for list + SEPARATE_ARGUMENTS( wxWidgets_LINK_DIRECTORIES ) + 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_DIR : ${wxWidgets_INCLUDE_DIR}") +DBG_MSG("wxWidgets_LINK_DIRECTORIES: ${wxWidgets_LINK_DIRECTORIES}") +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) Index: Modules/FindwxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWindows.cmake,v retrieving revision 1.18 diff -u -r1.18 FindwxWindows.cmake --- Modules/FindwxWindows.cmake 12 Jan 2006 16:10:22 -0000 1.18 +++ Modules/FindwxWindows.cmake 16 Jul 2006 18:55:35 -0000 @@ -577,7 +577,7 @@ # JW removed option and force the develper th SET it. # OPTION(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional - # --gl-libs for wx-config)?" OFF) + # --gl-libs for wx-config)?" OFF) # wx-config should be in your path anyhow, usually no need to set WXWIN or # search in ../wx or ../../wx @@ -592,7 +592,7 @@ # use shared/static wx lib? # remember: always link shared to use systems GL etc. libs (no static - # linking, just link *against* static .a libs) + # linking, just link *against* static .a libs) IF(WXWINDOWS_USE_SHARED_LIBS) SET(WX_CONFIG_ARGS_LIBS "--libs") ELSE(WXWINDOWS_USE_SHARED_LIBS) @@ -606,14 +606,18 @@ ##MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===") # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user: - SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`") + 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\\+\\+) ##MESSAGE("DBG: for compilation: - ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===") + ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===") # keep the back-quoted string for clarity SET(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`") ##MESSAGE("DBG2: for linking: - ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===") + ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===") # evaluate wx-config output to separate linker flags and linkdirs for # rpath: @@ -629,7 +633,7 @@ ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES ## replace -L by ; because the separator seems to be lost otherwise (bug or - ## feature?) + ## feature?) IF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX) STRING(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} ) # MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}") Index: Modules/Use_wxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/Use_wxWindows.cmake,v retrieving revision 1.4 diff -u -r1.4 Use_wxWindows.cmake --- Modules/Use_wxWindows.cmake 15 Dec 2005 19:17:43 -0000 1.4 +++ Modules/Use_wxWindows.cmake 16 Jul 2006 18:53:59 -0000 @@ -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) -# -# if you are sure you need GL then -# SET(WXWINDOWS_USE_GL 1) -# *before* you include this file. +## +# ----------------------------------------------------- +# 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}") - - IF(WXWINDOWS_INCLUDE_DIR) + +#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) + 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) + Index: Modules/UsewxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/UsewxWidgets.cmake,v retrieving revision 1.3 diff -u -r1.3 UsewxWidgets.cmake --- Modules/UsewxWidgets.cmake 14 Dec 2005 18:51:08 -0000 1.3 +++ Modules/UsewxWidgets.cmake 16 Jul 2006 10:01:54 -0000 @@ -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_DIR) + INCLUDE_DIRECTORIES( ${wxWidgets_INCLUDE_DIR} ) + MSG("wxWidgets_INCLUDE_DIR=${wxWidgets_INCLUDE_DIR}") + ENDIF(wxWidgets_INCLUDE_DIR) + + IF (wxWidgets_LINK_DIRECTORIES) + LINK_DIRECTORIES(${wxWidgets_LINK_DIRECTORIES}) + MSG("wxWidgets_LINK_DIRECTORIES=${wxWidgets_LINK_DIRECTORIES}") + ENDIF(wxWidgets_LINK_DIRECTORIES) + + 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) -INCLUDE(Use_wxWindows) + # 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) + +ELSE (wxWidgets_FOUND) + MESSAGE("wxWidgets requested but not found.") +ENDIF(wxWidgets_FOUND) Index: Source/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v retrieving revision 1.295 diff -u -r1.295 CMakeLists.txt --- Source/CMakeLists.txt 11 Jul 2006 15:41:37 -0000 1.295 +++ Source/CMakeLists.txt 16 Jul 2006 13:31:45 -0000 @@ -326,11 +326,11 @@ ENDIF(BUILD_MFCDialog) # WX Widgets GUI -OPTION(CMAKE_BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) -MARK_AS_ADVANCED(CMAKE_BUILD_WX_DIALOG) -IF(CMAKE_BUILD_WX_DIALOG) +OPTION(BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) +MARK_AS_ADVANCED(BUILD_WX_DIALOG) +IF(BUILD_WX_DIALOG) SUBDIRS(WXDialog) -ENDIF(CMAKE_BUILD_WX_DIALOG) +ENDIF(BUILD_WX_DIALOG) # Testing IF (NOT DART_ROOT) @@ -1066,9 +1066,8 @@ ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode") - - IF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) - # Will be set if the wxwindows gui is on + IF (BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) + # Will be set if the WX gui is on ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/UseWX" @@ -1076,11 +1075,11 @@ --build-generator ${CMAKE_TEST_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} --build-exe-dir ${CMake_BINARY_DIR}/Tests/UseWX - --build-project UsewxWindows - --build-options -DCMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} + --build-project UsewxWidgets + --build-options -DwxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${wxWidgets_WXCONFIG_EXECUTABLE} --test-command UseWX ) - ENDIF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) + ENDIF(BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) IF(UNIX) STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix" Index: Source/cmFindPackageCommand.h =================================================================== RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.h,v retrieving revision 1.10 diff -u -r1.10 cmFindPackageCommand.h --- Source/cmFindPackageCommand.h 27 Jan 2006 18:07:23 -0000 1.10 +++ Source/cmFindPackageCommand.h 16 Jul 2006 14:29:51 -0000 @@ -66,7 +66,7 @@ { return " FIND_PACKAGE(<name> [major.minor] [QUIET]\n" - " [REQUIRED [componets...]])\n" + " [REQUIRED [components...]])\n" "Finds and loads settings from an external project. <name>_FOUND will " "be set to indicate whether the package was found. Settings that " "can be used when <name>_FOUND is true are package-specific. The " @@ -86,7 +86,7 @@ "generated. If REQUIRED is specified and the package is not found, " "a FATAL_ERROR is generated and the configure step stops executing." " A package-specific list of components may be listed after the " - "REQUIRED option."; + "REQUIRED option that can be accessed with <name>_FIND_COMPONENTS."; } cmTypeMacro(cmFindPackageCommand, cmCommand); Index: Source/WXDialog/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v retrieving revision 1.23 diff -u -r1.23 CMakeLists.txt --- Source/WXDialog/CMakeLists.txt 14 Jul 2005 21:21:24 -0000 1.23 +++ Source/WXDialog/CMakeLists.txt 16 Jul 2006 14:27:01 -0000 @@ -9,35 +9,22 @@ ## License: wxWidgets License ##--------------------------------------------------------------------------- +# wxWindows -> wxWidgets Jan Woetzel 07/2006 +# tested with wx 2.6.3 with "multilib" build on Windows XP -#wxWidgets build related stuff -SET(WXW_USE_DEBUG OFF) -SET(WXW_USE_UNICODE OFF) -SET(WXW_USE_SHARED OFF) -SET(WXW_USE_UNIV OFF) -SET(WXW_USE_MONO OFF) -SET(WXW_FILE_VERSION "26") -SET(WXW_VERSION "2.6") - -#CMake Options +# CMake Options SET(CMAKE_VERBOSE_MAKEFILE TRUE) -IF(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxW.cmake) -ELSE(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxWin.cmake) - - # sync flags - SET(WXWIDGETS_FOUND ${WXWINDOWS_FOUND}) - SET(WXWIDGETS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}) - SET(WXWIDGETS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES}) - SET(WXWIDGETS_LIBRARIES ${WXWINDOWS_LIBRARIES}) -ENDIF(WIN32) - -# Old find script - -## Start using wx stuff when it is fully found and set -IF(WXWIDGETS_FOUND) +# in addition to wx std libs we need +SET( wxWidgets_USE_LIBS + std + html adv xml xrc ) +FIND_PACKAGE(wxWidgets) +#INCLUDE(${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) + +# Start using wx stuff when it is fully found and set +IF(wxWidgets_FOUND) + INCLUDE( ${wxWidgets_USE_FILE} ) SET (CMAKE_SRCS CMakeSetupFrame.cpp @@ -58,24 +45,26 @@ CommandLineInfo.cpp CommandLineInfo.h ) - # include .rc when windows - + # include .rc when windows IF(WIN32) - SET ( CMAKE_SRCS - ${CMAKE_SRCS} - CMakeSetup.rc ) + SET ( CMAKE_SRCS ${CMAKE_SRCS} CMakeSetup.rc ) ENDIF(WIN32) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog - ${WXWIDGETS_INCLUDE_DIR}) - LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) + ${wxWidgets_INCLUDE_DIR} ) + LINK_DIRECTORIES( ${wxWidgets_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) + IF(APPLE) ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) ELSE(APPLE) ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) ENDIF(APPLE) INSTALL_TARGETS(/bin WXDialog) - SET(CMAKE_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS}") + + # not required on MSVS beause bound to _DEBUG, but other compiler may need it. + # However, the define prevents multiple build configurations in one build tree, + # e.g. MSVS supports Debug;Release + # TODO: shall we add the define or not - favor multi config or all compilers? (JW) SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") IF(LINUX) @@ -84,13 +73,13 @@ # if the checkbox view functionality is not desired, # exclude this part from the smple - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}) - TARGET_LINK_LIBRARIES(WXDialog ${WXWIDGETS_LIBRARIES} cmsys CMakeLib) - - # if UPX is found, make a target - + TARGET_LINK_LIBRARIES(WXDialog ${wxWidgets_LIBRARIES} cmsys CMakeLib) + + + # if UPX is found, make a target #INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindUPX.cmake) #IF(UPX_FOUND) #END(UPX_FOUND) - -ENDIF(WXWIDGETS_FOUND) + + +ENDIF(wxWidgets_FOUND) Index: Source/WXDialog/bin/FindUPX.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindUPX.cmake,v retrieving revision 1.1 diff -u -r1.1 FindUPX.cmake --- Source/WXDialog/bin/FindUPX.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindUPX.cmake 16 Jul 2006 09:13:35 -0000 @@ -5,14 +5,11 @@ # UPX_FOUND Is set to 1 when upx is found FIND_PATH(UPX_PROGRAM_PATH upx.exe - "c:\Program Files\upx" - "d:\Program Files\upx" - "e:\Program Files\upx" - "f:\Program Files\upx" - "g:\Program Files\upx" - "h:\Program Files\upx" + ${UPX_DIR} + $ENV{UPX_DIR} + "$ENV{ProgramFiles}/upx" ) - + # when found, note this as target IF(UPX_PROGRAM_PATH) SET(UPX_FOUND 1) Index: Source/WXDialog/bin/FindwxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxW.cmake,v retrieving revision 1.1 diff -u -r1.1 FindwxW.cmake --- Source/WXDialog/bin/FindwxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindwxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,6 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + # # FindwxW.cmake # v1.01 2005-05-27 @@ -14,6 +17,7 @@ # WXWIDGETS_INCLUDE_DIR = all include path of wxWindows # WXWIDGETS_DEFINITIONS = all flags of wxWindows + # NOTE: This module REQUIRES that an environment variable named WXWIN # be set to the base wxWidgets installation directory. # Under Unix, you must also set and environment variable named WXWINCFG Index: Source/WXDialog/bin/FindwxWin.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v retrieving revision 1.4 diff -u -r1.4 FindwxWin.cmake --- Source/WXDialog/bin/FindwxWin.cmake 15 Jul 2005 15:38:43 -0000 1.4 +++ Source/WXDialog/bin/FindwxWin.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,8 @@ + + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + ##--------------------------------------------------------------------------- ## $RCSfile: FindwxWin.cmake,v $ ## $Source: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v $ Index: Source/WXDialog/bin/UsewxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/UsewxW.cmake,v retrieving revision 1.1 diff -u -r1.1 UsewxW.cmake --- Source/WXDialog/bin/UsewxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/UsewxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,7 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + # # UsewxW.cmake # v1.0 2005-05-27 Index: Tests/UseWX/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/CMakeLists.txt,v retrieving revision 1.2 diff -u -r1.2 CMakeLists.txt --- Tests/UseWX/CMakeLists.txt 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/CMakeLists.txt 16 Jul 2006 14:38:17 -0000 @@ -1,9 +1,8 @@ -PROJECT (UsewxWindows) +PROJECT (UsewxWidgets) -INCLUDE( ${CMAKE_ROOT}/Modules/Use_wxWindows.cmake) +INCLUDE( ${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) +#FIND_PACKAGE(wxWidgets) +INCLUDE( ${wxWidgets_USE_FILE} ) ADD_EXECUTABLE (UseWX WIN32 WX.cxx) - -#TODO: -#- dll linking is not working on WIN32, need to '-DWXUSINGDLL' to preprocessor - +TARGET_LINK_LIBRARIES(UseWX ${wxWidgets_LIBRARIES} ) Index: Tests/UseWX/WX.cxx =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/WX.cxx,v retrieving revision 1.2 diff -u -r1.2 WX.cxx --- Tests/UseWX/WX.cxx 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/WX.cxx 16 Jul 2006 14:40:12 -0000 @@ -51,9 +51,13 @@ //Testing if link to wx debug library #ifdef __WXDEBUG__ - printf("If you read this you're in debug mode.\n"); + printf("If you read this you're in __WXDEBUG__ debug mode.\n"); #endif //__WXDEBUG__ +#ifdef _DEBUG + printf("If you read this then _DEBUG is defined.\n"); +#endif //_DEBUG + wxChar ch = wxT('*'); wxString s = wxT("Hello, world!"); int len = s.Len(); Index: Utilities/Release/config_Darwin =================================================================== RCS file: /cvsroot/CMake/CMake/Utilities/Release/config_Darwin,v retrieving revision 1.8 diff -u -r1.8 config_Darwin --- Utilities/Release/config_Darwin 12 Jul 2005 21:22:41 -0000 1.8 +++ Utilities/Release/config_Darwin 16 Jul 2006 13:34:57 -0000 @@ -12,5 +12,6 @@ CURSES_LIBRARY:FILEPATH=/Users/kitware/staticCurses/libncurses.a CMAKE_BUILD_WX_DIALOG:BOOL=ON CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config +wxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config EOF } final_3_CMake.patch [^] (50,534 bytes) 1969-12-31 19:00 [Show Content] [Hide Content] Index: Modules/FindwxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v retrieving revision 1.2 diff -u -r1.2 FindwxWidgets.cmake --- Modules/FindwxWidgets.cmake 27 Aug 2004 02:52:53 -0000 1.2 +++ Modules/FindwxWidgets.cmake 19 Jul 2006 15:15:16 -0000 @@ -1 +1,652 @@ -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 + SEPARATE_ARGUMENTS( 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) + SEPARATE_ARGUMENTS(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 + SEPARATE_ARGUMENTS( 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) Index: Modules/FindwxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/FindwxWindows.cmake,v retrieving revision 1.18 diff -u -r1.18 FindwxWindows.cmake --- Modules/FindwxWindows.cmake 12 Jan 2006 16:10:22 -0000 1.18 +++ Modules/FindwxWindows.cmake 19 Jul 2006 15:13:22 -0000 @@ -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) @@ -577,7 +582,7 @@ # JW removed option and force the develper th SET it. # OPTION(WXWINDOWS_USE_GL "use wxWindows with GL support (use additional - # --gl-libs for wx-config)?" OFF) + # --gl-libs for wx-config)?" OFF) # wx-config should be in your path anyhow, usually no need to set WXWIN or # search in ../wx or ../../wx @@ -592,7 +597,7 @@ # use shared/static wx lib? # remember: always link shared to use systems GL etc. libs (no static - # linking, just link *against* static .a libs) + # linking, just link *against* static .a libs) IF(WXWINDOWS_USE_SHARED_LIBS) SET(WX_CONFIG_ARGS_LIBS "--libs") ELSE(WXWINDOWS_USE_SHARED_LIBS) @@ -606,14 +611,24 @@ ##MESSAGE("DBG: WX_CONFIG_ARGS_LIBS=${WX_CONFIG_ARGS_LIBS}===") # set CXXFLAGS to be fed into CMAKE_CXX_FLAGS by the user: - SET(CMAKE_WXWINDOWS_CXX_FLAGS "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} --cxxflags|sed -e s/-I/-isystem/g`") + 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}===") + ##CMAKE_WXWINDOWS_CXX_FLAGS=${CMAKE_WXWINDOWS_CXX_FLAGS}===") # keep the back-quoted string for clarity SET(WXWINDOWS_LIBRARIES "`${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} ${WX_CONFIG_ARGS_LIBS}`") ##MESSAGE("DBG2: for linking: - ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===") + ##WXWINDOWS_LIBRARIES=${WXWINDOWS_LIBRARIES}===") # evaluate wx-config output to separate linker flags and linkdirs for # rpath: @@ -629,7 +644,7 @@ ## remove prefix -L because we need the pure directory for LINK_DIRECTORIES ## replace -L by ; because the separator seems to be lost otherwise (bug or - ## feature?) + ## feature?) IF(WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX) STRING(REGEX REPLACE "[-][L]" ";" WXWINDOWS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES_WITH_PREFIX} ) # MESSAGE("DBG WXWINDOWS_LINK_DIRECTORIES=${WXWINDOWS_LINK_DIRECTORIES}") Index: Modules/Use_wxWindows.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/Use_wxWindows.cmake,v retrieving revision 1.4 diff -u -r1.4 Use_wxWindows.cmake --- Modules/Use_wxWindows.cmake 15 Dec 2005 19:17:43 -0000 1.4 +++ Modules/Use_wxWindows.cmake 16 Jul 2006 18:53:59 -0000 @@ -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) -# -# if you are sure you need GL then -# SET(WXWINDOWS_USE_GL 1) -# *before* you include this file. +## +# ----------------------------------------------------- +# 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}") - - IF(WXWINDOWS_INCLUDE_DIR) + +#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) + 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) + Index: Modules/UsewxWidgets.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Modules/UsewxWidgets.cmake,v retrieving revision 1.3 diff -u -r1.3 UsewxWidgets.cmake --- Modules/UsewxWidgets.cmake 14 Dec 2005 18:51:08 -0000 1.3 +++ Modules/UsewxWidgets.cmake 19 Jul 2006 14:58:35 -0000 @@ -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) -INCLUDE(Use_wxWindows) + # 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) + +ELSE (wxWidgets_FOUND) + MESSAGE("wxWidgets requested but not found.") +ENDIF(wxWidgets_FOUND) Index: Source/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/CMakeLists.txt,v retrieving revision 1.295 diff -u -r1.295 CMakeLists.txt --- Source/CMakeLists.txt 11 Jul 2006 15:41:37 -0000 1.295 +++ Source/CMakeLists.txt 16 Jul 2006 13:31:45 -0000 @@ -326,11 +326,11 @@ ENDIF(BUILD_MFCDialog) # WX Widgets GUI -OPTION(CMAKE_BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) -MARK_AS_ADVANCED(CMAKE_BUILD_WX_DIALOG) -IF(CMAKE_BUILD_WX_DIALOG) +OPTION(BUILD_WX_DIALOG "Build wxWidgets dialog for CMake" FALSE) +MARK_AS_ADVANCED(BUILD_WX_DIALOG) +IF(BUILD_WX_DIALOG) SUBDIRS(WXDialog) -ENDIF(CMAKE_BUILD_WX_DIALOG) +ENDIF(BUILD_WX_DIALOG) # Testing IF (NOT DART_ROOT) @@ -1066,9 +1066,8 @@ ENDIF(JAVA_COMPILE AND JAVA_RUNTIME AND JAVA_ARCHIVE AND NOT MINGW) ENDIF(NOT CMAKE_TEST_GENERATOR MATCHES "Xcode") - - IF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) - # Will be set if the wxwindows gui is on + IF (BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) + # Will be set if the WX gui is on ADD_TEST(UseWX ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/UseWX" @@ -1076,11 +1075,11 @@ --build-generator ${CMAKE_TEST_GENERATOR} --build-makeprogram ${CMAKE_TEST_MAKEPROGRAM} --build-exe-dir ${CMake_BINARY_DIR}/Tests/UseWX - --build-project UsewxWindows - --build-options -DCMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE} + --build-project UsewxWidgets + --build-options -DwxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${wxWidgets_WXCONFIG_EXECUTABLE} --test-command UseWX ) - ENDIF (CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE OR WXWINDOWS_INCLUDE_DIR) + ENDIF(BUILD_WX_DIALOG OR wxWidgets_WXCONFIG_EXECUTABLE OR wxWidgets_INCLUDE_DIR) IF(UNIX) STRING(COMPARE EQUAL "${CMAKE_INSTALL_PREFIX}" "${CMake_BINARY_DIR}/Tests/TestShellInstall/Prefix" Index: Source/cmFindPackageCommand.h =================================================================== RCS file: /cvsroot/CMake/CMake/Source/cmFindPackageCommand.h,v retrieving revision 1.10 diff -u -r1.10 cmFindPackageCommand.h --- Source/cmFindPackageCommand.h 27 Jan 2006 18:07:23 -0000 1.10 +++ Source/cmFindPackageCommand.h 16 Jul 2006 14:29:51 -0000 @@ -66,7 +66,7 @@ { return " FIND_PACKAGE(<name> [major.minor] [QUIET]\n" - " [REQUIRED [componets...]])\n" + " [REQUIRED [components...]])\n" "Finds and loads settings from an external project. <name>_FOUND will " "be set to indicate whether the package was found. Settings that " "can be used when <name>_FOUND is true are package-specific. The " @@ -86,7 +86,7 @@ "generated. If REQUIRED is specified and the package is not found, " "a FATAL_ERROR is generated and the configure step stops executing." " A package-specific list of components may be listed after the " - "REQUIRED option."; + "REQUIRED option that can be accessed with <name>_FIND_COMPONENTS."; } cmTypeMacro(cmFindPackageCommand, cmCommand); Index: Source/WXDialog/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v retrieving revision 1.23 diff -u -r1.23 CMakeLists.txt --- Source/WXDialog/CMakeLists.txt 14 Jul 2005 21:21:24 -0000 1.23 +++ Source/WXDialog/CMakeLists.txt 19 Jul 2006 14:44:04 -0000 @@ -9,88 +9,79 @@ ## License: wxWidgets License ##--------------------------------------------------------------------------- +# wxWindows -> wxWidgets Jan Woetzel 07/2006 +# tested with wx 2.6.3 with "multilib" build on Windows XP -#wxWidgets build related stuff -SET(WXW_USE_DEBUG OFF) -SET(WXW_USE_UNICODE OFF) -SET(WXW_USE_SHARED OFF) -SET(WXW_USE_UNIV OFF) -SET(WXW_USE_MONO OFF) -SET(WXW_FILE_VERSION "26") -SET(WXW_VERSION "2.6") - -#CMake Options +# CMake Options SET(CMAKE_VERBOSE_MAKEFILE TRUE) -IF(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxW.cmake) -ELSE(WIN32) - INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindwxWin.cmake) - - # sync flags - SET(WXWIDGETS_FOUND ${WXWINDOWS_FOUND}) - SET(WXWIDGETS_INCLUDE_DIR ${WXWINDOWS_INCLUDE_DIR}) - SET(WXWIDGETS_LINK_DIRECTORIES ${WXWINDOWS_LINK_DIRECTORIES}) - SET(WXWIDGETS_LIBRARIES ${WXWINDOWS_LIBRARIES}) -ENDIF(WIN32) - -# Old find script - -## Start using wx stuff when it is fully found and set -IF(WXWIDGETS_FOUND) - - SET (CMAKE_SRCS - CMakeSetupFrame.cpp - CMakeSetup.cpp - CMakeSetupFrame.h - CMakeSetup.h - PropertyList.cpp - PropertyList.h - app_resources.cpp - app_resources.h - progressdlg.cpp - progressdlg.h - aboutdlg.cpp - aboutdlg.h - optionsdlg.cpp - optionsdlg.h - config.h - CommandLineInfo.cpp - CommandLineInfo.h ) - - # include .rc when windows - - IF(WIN32) - SET ( CMAKE_SRCS - ${CMAKE_SRCS} - CMakeSetup.rc ) - ENDIF(WIN32) - - INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog - ${WXWIDGETS_INCLUDE_DIR}) - LINK_DIRECTORIES( ${WXWIDGETS_LINK_DIRECTORIES} ${CMake_BINARY_DIR}/Source ${CMake_BINARY_DIR}/Source/kwsys ) - IF(APPLE) - ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) - ELSE(APPLE) - ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) - ENDIF(APPLE) - INSTALL_TARGETS(/bin WXDialog) - SET(CMAKE_CXX_FLAGS "${CMAKE_WX_CXX_FLAGS}") - SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") - - IF(LINUX) - ADD_DEFINITIONS( -DLINUX=1 ) - ENDIF(LINUX) - - # if the checkbox view functionality is not desired, - # exclude this part from the smple - SET(WXWIDGETS_LIBRARIES ${WXWIDGETS_LIBRARIES}) - TARGET_LINK_LIBRARIES(WXDialog ${WXWIDGETS_LIBRARIES} cmsys CMakeLib) - - # if UPX is found, make a target - - #INCLUDE (${CMAKE_SOURCE_DIR}/Source/WXDialog/bin/FindUPX.cmake) - #IF(UPX_FOUND) - #END(UPX_FOUND) - -ENDIF(WXWIDGETS_FOUND) +# suppress wx header warnings? +#SET(HAVE_ISYSTEM 1) + +# in addition to wx std libs we need +SET( wxWidgets_USE_LIBS + std + html adv xml xrc ) +FIND_PACKAGE(wxWidgets REQUIRED) +#INCLUDE(${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) + +# Start using wx stuff when it is fully found and set +IF(wxWidgets_FOUND) + INCLUDE( ${wxWidgets_USE_FILE} ) + + SET (CMAKE_SRCS + CMakeSetupFrame.cpp + CMakeSetup.cpp + CMakeSetupFrame.h + CMakeSetup.h + PropertyList.cpp + PropertyList.h + app_resources.cpp + app_resources.h + progressdlg.cpp + progressdlg.h + aboutdlg.cpp + aboutdlg.h + optionsdlg.cpp + optionsdlg.h + config.h + CommandLineInfo.cpp + CommandLineInfo.h ) + + # include .rc when windows + IF(WIN32) + SET ( CMAKE_SRCS ${CMAKE_SRCS} CMakeSetup.rc ) + ENDIF(WIN32) + + INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/Source/WXDialog + ${wxWidgets_INCLUDE_DIR} ) + LINK_DIRECTORIES( ${wxWidgets_LINK_DIRECTORIES} + ${CMake_BINARY_DIR}/Source + ${CMake_BINARY_DIR}/Source/kwsys ) + + IF(APPLE) + ADD_EXECUTABLE(WXDialog MACOSX_BUNDLE ${CMAKE_SRCS}) + ELSE(APPLE) + ADD_EXECUTABLE(WXDialog WIN32 ${CMAKE_SRCS}) + ENDIF(APPLE) + INSTALL_TARGETS(/bin WXDialog) + + # not required on MSVS beause bound to _DEBUG, + # but other compiler may need it. + # However, the define prevents multiple build configurations + # in one build tree, + # e.g. MSVS supports Debug;Release + # TODO: shall we add the define or not - + # favor multi config or all compilers? (JW) + SET(CMAKE_CXX_FLAGS_DEBUG + "${CMAKE_CXX_FLAGS_DEBUG} -D__WXDEBUG__ -DWXDEBUG=1") + + IF(LINUX) + ADD_DEFINITIONS( -DLINUX=1 ) + ENDIF(LINUX) + + # if the checkbox view functionality is not desired, + # exclude this part from the smple + TARGET_LINK_LIBRARIES(WXDialog ${wxWidgets_LIBRARIES} cmsys CMakeLib) + +ENDIF(wxWidgets_FOUND) Index: Source/WXDialog/bin/FindUPX.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindUPX.cmake,v retrieving revision 1.1 diff -u -r1.1 FindUPX.cmake --- Source/WXDialog/bin/FindUPX.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindUPX.cmake 16 Jul 2006 09:13:35 -0000 @@ -5,14 +5,11 @@ # UPX_FOUND Is set to 1 when upx is found FIND_PATH(UPX_PROGRAM_PATH upx.exe - "c:\Program Files\upx" - "d:\Program Files\upx" - "e:\Program Files\upx" - "f:\Program Files\upx" - "g:\Program Files\upx" - "h:\Program Files\upx" + ${UPX_DIR} + $ENV{UPX_DIR} + "$ENV{ProgramFiles}/upx" ) - + # when found, note this as target IF(UPX_PROGRAM_PATH) SET(UPX_FOUND 1) Index: Source/WXDialog/bin/FindwxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxW.cmake,v retrieving revision 1.1 diff -u -r1.1 FindwxW.cmake --- Source/WXDialog/bin/FindwxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/FindwxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,6 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + # # FindwxW.cmake # v1.01 2005-05-27 @@ -14,6 +17,7 @@ # WXWIDGETS_INCLUDE_DIR = all include path of wxWindows # WXWIDGETS_DEFINITIONS = all flags of wxWindows + # NOTE: This module REQUIRES that an environment variable named WXWIN # be set to the base wxWidgets installation directory. # Under Unix, you must also set and environment variable named WXWINCFG Index: Source/WXDialog/bin/FindwxWin.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v retrieving revision 1.4 diff -u -r1.4 FindwxWin.cmake --- Source/WXDialog/bin/FindwxWin.cmake 15 Jul 2005 15:38:43 -0000 1.4 +++ Source/WXDialog/bin/FindwxWin.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,8 @@ + + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + ##--------------------------------------------------------------------------- ## $RCSfile: FindwxWin.cmake,v $ ## $Source: /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v $ Index: Source/WXDialog/bin/UsewxW.cmake =================================================================== RCS file: /cvsroot/CMake/CMake/Source/WXDialog/bin/UsewxW.cmake,v retrieving revision 1.1 diff -u -r1.1 UsewxW.cmake --- Source/WXDialog/bin/UsewxW.cmake 30 Jun 2005 19:54:59 -0000 1.1 +++ Source/WXDialog/bin/UsewxW.cmake 16 Jul 2006 09:13:35 -0000 @@ -1,3 +1,7 @@ + +MESSAGE("${CMAKE_CURRENT_FILE} is deprecated, please use FindwxWidgets.cmake instead.") + + # # UsewxW.cmake # v1.0 2005-05-27 Index: Tests/UseWX/CMakeLists.txt =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/CMakeLists.txt,v retrieving revision 1.2 diff -u -r1.2 CMakeLists.txt --- Tests/UseWX/CMakeLists.txt 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/CMakeLists.txt 16 Jul 2006 14:38:17 -0000 @@ -1,9 +1,8 @@ -PROJECT (UsewxWindows) +PROJECT (UsewxWidgets) -INCLUDE( ${CMAKE_ROOT}/Modules/Use_wxWindows.cmake) +INCLUDE( ${CMAKE_ROOT}/Modules/FindwxWidgets.cmake) +#FIND_PACKAGE(wxWidgets) +INCLUDE( ${wxWidgets_USE_FILE} ) ADD_EXECUTABLE (UseWX WIN32 WX.cxx) - -#TODO: -#- dll linking is not working on WIN32, need to '-DWXUSINGDLL' to preprocessor - +TARGET_LINK_LIBRARIES(UseWX ${wxWidgets_LIBRARIES} ) Index: Tests/UseWX/WX.cxx =================================================================== RCS file: /cvsroot/CMake/CMake/Tests/UseWX/WX.cxx,v retrieving revision 1.2 diff -u -r1.2 WX.cxx --- Tests/UseWX/WX.cxx 16 Oct 2003 23:16:19 -0000 1.2 +++ Tests/UseWX/WX.cxx 16 Jul 2006 14:40:12 -0000 @@ -51,9 +51,13 @@ //Testing if link to wx debug library #ifdef __WXDEBUG__ - printf("If you read this you're in debug mode.\n"); + printf("If you read this you're in __WXDEBUG__ debug mode.\n"); #endif //__WXDEBUG__ +#ifdef _DEBUG + printf("If you read this then _DEBUG is defined.\n"); +#endif //_DEBUG + wxChar ch = wxT('*'); wxString s = wxT("Hello, world!"); int len = s.Len(); Index: Utilities/Release/config_Darwin =================================================================== RCS file: /cvsroot/CMake/CMake/Utilities/Release/config_Darwin,v retrieving revision 1.8 diff -u -r1.8 config_Darwin --- Utilities/Release/config_Darwin 12 Jul 2005 21:22:41 -0000 1.8 +++ Utilities/Release/config_Darwin 16 Jul 2006 13:34:57 -0000 @@ -12,5 +12,6 @@ CURSES_LIBRARY:FILEPATH=/Users/kitware/staticCurses/libncurses.a CMAKE_BUILD_WX_DIALOG:BOOL=ON CMAKE_WXWINDOWS_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config +wxWidgets_WXCONFIG_EXECUTABLE:FILEPATH=${WX_PREFIX}/wx-config EOF } | ||||||||
Relationships | |
Relationships |
Notes | |
(0004346) Brad King (manager) 2006-06-26 11:38 |
I see comments in the files about working around problems with CMake versions before 2.4. Since the files will be included in 2.4 and higher please remove the work-arounds. You may also want to look at all the fancy find options available in the 2.4 FIND_* commands. |
(0004347) Brad King (manager) 2006-06-26 11:39 |
I'm assigning this bug to myself. |
(0004389) Jan Woetzel (reporter) 2006-06-30 08:49 |
working on the issues... Jan. |
(0004396) Jan Woetzel (reporter) 2006-07-03 19:38 |
-Requested CMake backward comp. issues solved -Incdirs "-I" is replaced by "-isystem" on Linux now (like done with "|sed" in FindwxWindows.cmake Q: Which fancy options of FIND_* do you mean? (NO_DEFAULT_PATH, PATH_SUFFIXES, ...?) We don't use PATH_SUFFIXES with intention to avoid mixing different build trees and configurations and trees. TODO/sidenote: -CMake source itself needs adaptions when really replacing FindwxWidgets by teh atatched files because of variable name change WXWINDOWS_* --> WXWIDGETS_*. In particular -the main CMake WX test -Source/WXDialog and needs some (minor) work. Best, Jan. |
(0004400) Jan Woetzel (reporter) 2006-07-04 12:05 |
I managed to fix teh wxWIndows -< wxWidgets changes inside teh CMake tree. WXDialog compiles again. Shall I send you a ZIP with patch files? Jan. |
(0004403) Jan Woetzel (reporter) 2006-07-04 15:09 |
This bug is related to bug report 0003482 Sorry for splitting. All required changes are inside the patch. Jan. |
(0004415) Brad King (manager) 2006-07-07 17:08 |
I've tried the patch and it looks good so far. Here are more comments. The case between the name of the FindwxWidgets.cmake file and the names of the variables it sets should be consistent: FIND_PACKAGE(wxWidgets) IF(wxWidgets_FOUND) .... ENDIF(wxWidgets_FOUND) The basic interface to use wxWidgets should be just FIND_PACKAGE(wxWidgets REQUIRED) not INCLUDE (${CMAKE_ROOT}/Modules/UsewxWidgets.cmake ) Any options like WXWIDGETS_USE_MONOLITHIC should be part of the find module. The "Use" part of the code in UsewxWidgets.cmake can stay, so that the user might do something like FIND_PACKAGE(wxWidgets REQUIRED) INCLUDE(${wxWidgets_USE_FILE}) where wxWidgets_USE_FILE is set by the find script to the locaiton of the use file. |
(0004417) Jan Woetzel (reporter) 2006-07-07 19:00 |
(1) Q: uppercase/case sensitive ? I think prefix of all flags should be uppercase. Because -all other FindXxx.cmake Modules seem to set uppercase XXX_FOUND -there should be consistency between XXX_FOUND, XXX_LIBRARIES in the case to avoid mixing of XXX_FOO and Xxx_BAR Thus FIND_PACKAGE(wxWidgets) IF(WXIDGETS_FOUND) is correct, I think Or am I missing something? (2) I agree wth you Find/Use/Options suggestions. I'm working on FIND_PACKAGE(... REQUIRED components) to handle teh Options. E.g. FIND_PACKAGE(wxWidgets REQUIRED core base gl net ...) INCLUDE(${WXWIDGTES_USE_FILE}) # uppercase Working on it. Jan. |
(0004418) Jan Woetzel (reporter) 2006-07-08 10:46 |
This topic is related to bug 0003494 because I want o use the <Foo>_FIND_COMPONENTS feature for final usage as FIND_PACKAGE(wxWidgets REQUIRED base net gl xml...<any comp handled by foreach>) INCLUDE(${WXWIDGETS_USE_FILE} and # no components listedm, thus use "defautl" set liek std FIND_PACKAGE(wxWidgets) INCLUDE(${WXWIDGETS_USE_FILE} Jan. |
(0004445) Brad King (manager) 2006-07-11 17:18 |
Now that bug 3494 is fixed you should be able to address issue 2. For issue 1 (case), I've been trying to change the convention away from all-uppercase and instead make ALL the XXX_* variables match the case of the file name FindXXX.cmake. Therefore the vars should be wxWidgets_FOUND, wxWidgets_LIBS, etc. The reason is that when packages are converted to CMake they may provide a FooConfig.cmake file and then the variables will be in mixed-case because that is the way FIND_PACKAGE works. |
(0004447) Jan Woetzel (reporter) 2006-07-11 19:24 |
(1) OK. I will - convert to mixed case - integrate FIND_PACKAGE REQUIRED components feature (2) Please add a note to CMake\Modules\readme.txt about the desired behavior of mixed case of variable names and filenames. |
(0004455) Jan Woetzel (reporter) 2006-07-16 10:57 |
OK, here we go - finished. -Converted case WXWIDGETS -> wxWidgets -removed some preifxed CMAKE_WXWIDGETS_<FOO> -> wxWidgtes_<FOO>, e.g. -renamed WXWIDGTES_CONFIG_EXE to wxWidgtes_CONFIG_EXECUTABEL for consistency with FindwxWindows and Modules/readme.txt conventions -simple FIND_PACKAGE REQUIRED components support in addition to wxWidgets_USE_LIBS added -magick component "std" added which expand to some standard libs for consistency between Windows and Linux and abstraction of monolithic/multilib build -Added <Foo>_FIND_COMPONENTS docu to FIND_PACKAGE command and fixed minor typos -Adapted CMake Teats/UseWX and WXDialog to the changes. CMake+Tests#WXDIalog compile on my machoine. Everything seems to work reasonably icnluding CMake itself, its Test, in particular UseWX and WXDialog. The patch is against CVS and contains all changes. Thus you need to apply only the last patch. Best, Jan. |
(0004458) Jan Woetzel (reporter) 2006-07-16 11:13 |
Increased severity because the patch fixes bug 0003453. |
(0004460) Jan Woetzel (reporter) 2006-07-16 15:01 |
Forgot two more additional changes, -dropped one debug MESSAGE, -deprecated warning message is STATUS on top of Use_wxWindows.cmake, now. |
(0004474) Brad King (manager) 2006-07-18 13:37 |
I notice that wxWidgets_LINK_DIRECTORIES is meant for defining rpaths on UNIX and not for linking. Perhaps it should be renamed wxWidgets_RUNTIME_LIBRARY_DIRS. Then on UNIX it can contain RPATH information and on Windows it can contain the directories with the .dll files that go with the .lib files being linked in wxWidgets_LIBRARIES. |
(0004476) Brad King (manager) 2006-07-18 13:48 |
In Source/WXDialog, the FIND_PACKAGE command should be more like: FIND_PACKAGE(wxWidgets REQUIRED) There should also be something to take into account the possibility that CMake is getting built by CMake 2.2 where the find command will fail since WXWINDOWS_FOUND will be set instead. Perhaps we should check the version of CMake used to build and not provide the BUILD_WX_DIALOG option unless the CMake version is new enough. Also the WXDialog target should be renamed to something with CMake or CMakeSetup in its name. Perhaps the old wxCMakeSetup name would work. |
(0004484) Jan Woetzel (reporter) 2006-07-18 15:16 |
Brad, thanks for your attention. > BUILD_WXDialog > --renamed to something with CMake or CMakeSetup in its name BUILD_WXDialog is consistent with the existing BUILD_MFCDialog and BUILD_CursesDialog naming. (1) Do you agree? > Source/WXDialog/CMakeLists.txt: > FIND_PACKAGE(wxWidgets REQUIRED) With REQUIRED a FATAL_ERROR will be thrown on missing wx when BUILD_WXDialog is enabled. Then not even the command line "cmake" will be built. I think the behavior "go as far as you can get" may be useful for bootstrapping. (2) If you think REQUIRED is the desired behavior feel free to add it. >CMake 2.2 where the find command will fail since >WXWINDOWS_FOUND Yes, but I think that workaround has minor priority because: -WXDialog has major problems with UNICODE WX builds and should be considered "experimental" -only expert users will want to play with WXDialog -These experts may live with a two step loop of bootstrapping from very old cmake 2.0/2.2 to first build command line cmake 2.4. This cmake 2.4 can be used to configure+build again with WXDialog 2.4. Not perfectly, but a step of improvement for getting closer to ideal. Please note that I'm busy next weeks and won't be able to contribute additional major changes. |
(0004485) Jan Woetzel (reporter) 2006-07-18 15:27 |
>wxWidgets_LINK_DIRECTORIES is meant for defining rpaths >on UNIX and not for linking. > renamed wxWidgets_RUNTIME_LIBRARY_DIRS. No, wxWidgets_LINK_DIRECTORIES should contain .so/.a on Linux and .lib (not .dll) on Windows. It is designed for LINK_DIRECTORIES usage on Linux and Windows and RPATH usage on Linux. Should we rename wxWidgets_LINK_DIRECTORIES --> wxWidgets_LIBRARY_DIRS accoridng to your recent Modules/readme.txt changes? Thanks, Jan. |
(0004486) Brad King (manager) 2006-07-18 15:29 |
(1) The option BUILD_WXDialog is fine. I mostly meant that the executable should be called wxCMakeSetup because \"WXDialog\" is not very descriptive when installed. (2) If the user enables the option BUILD_WXDialog and the build succeeds he/she would expect there to be a wxCMakeSetup. Currently this silently fails. We could instead take the ccmake approach and find wxWidgets QUIETly, and if found then provide the BUILD_WXDialog option. This will probably be the right way in the long term. Since it is still experimental and an advanced option we should probably go with the REQUIRED version because the person enabling it is a developer and will understand. |
(0004487) Brad King (manager) 2006-07-18 15:33 |
> Should we rename wxWidgets_LINK_DIRECTORIES --> wxWidgets_LIBRARY_DIRS accoridng to your recent Modules/readme.txt changes? Yes, but... Why would LINK_DIRECTORIES be needed if the full paths to the libraries are provided? The link dirs should not be needed at all. Runtime dirs are useful for setting up test environments. |
(0004488) Jan Woetzel (reporter) 2006-07-18 16:08 |
wxWidgets_LINK_DIRECTORIES / wxWidgets_LIBRARY_DIRS CMake projects don't need them. However, we use them - for RPATH on Linux and - to collect libdirs to configure a "foo-config" shell script for compatibility with handwritten Makefiles to be used like `foo-config --libs` etc. Slightly off-topic, but... - I'm not familiar with an rpath equivalent on Windows. Our .DLLs are either found via PATH environment variable or current directory of .exe on MS WIndows. Thus we try to let EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPT_PATH be the same for all our BUILD_SHARED Windows projects. Q: Is there a smarter way to specify "typical" .dll runtime search locations on Windows and if how does CMake support this (with or without install) - any keywords for me? |
(0004489) Brad King (manager) 2006-07-18 16:23 |
The usage of wxWidgets_RUNTIME_LIBRARY_DIRS would be with RPATH or LD_LIBRARY_PATH on Linux and with PATH on Windows. |
(0004490) Brad King (manager) 2006-07-18 16:24 |
The requirement to set EXECUTABLE_OUTPUT_PATH and LIBRARY_OUTPUT_PATH to be the same is due to a bad decision made early in CMake development. Really the .dll file should be created in EXECUTABLE_OUTPUT_PATH and the .lib in LIBRARY_OUTPUT_PATH. I'd like to change it but that is not on-topic for this bug. |
(0004492) Brad King (manager) 2006-07-18 17:17 |
As stated in my changes to Modules/readme.txt the final variable used to report include directories should be wxWidgets_INCLUDE_DIRS (not the plural name). wxWidgets_INCLUDE_DIR should be used only as the argument to a FIND_PATH command if one is needed. The -I and -isystem options from wx-config should all be pulled out into wxWidgets_INCLUDE_DIRS. Unless they actually show up in the include path known to cmake the headers will not be included in dependency scanning. If you still want to add the -isystem options to the CXX flags to get them to show up on the command line first that way then fine, but see my note in bug 0003453 about things not working that way. |
(0004493) Jan Woetzel (reporter) 2006-07-18 17:57 |
OK, to conclude the open issues and make progress: (1) WXDialog/CMakeLists.txt. REQUIRED ? - I'm OK with FIND_PACKAGE(wWidgets REQUIRED) (2) rename wxWidgets_LINK_DIRECTORIES --> wxWidgets_LIBRARY_DIRS ? - I'm OK with renaming for consistency with Modules/readme.txt (3) rename wxWidgets_INCLUDE_DIR -> wxWidgets_INCLUDE_DIRS - I'm Ok with reanimg it for consistency with Modules/readme.txt (4) rename wxWidgets_LINK_DIRECTORIES --> wxWidgets_RUNTIME_LIBRARY_DIRS or add support for wxWidgets_RUNTIME_LIBRARY_DIRS ? - On Linux compile time and runtime dir is actually the same (both .so). - On Windows we don\\\\\\\'t distinguishing between compile time .lib dir and runtime .dll dir. So we shouldn\\\\\\\'t raise the users hope that we would... - Implementing the distinguishing between .lib and .dll dir may is not planned and may be harder than expected to assert consistency between .lib and .dll -As no other scipt seems to support <Foo>_RUNTIME_LIBRARY_DIRS yet I doubt we should somehow fake that we do. Thus: we should simply drop the idea of wxWidgets_RUNTIME_LIBRARY_DIRSfor now, I think. (5) rename executable WXDialog --> wxCMakeSetup or similar? - I agree, we have two choices: (a) ADD_EXECUTABLE(wxCMakeSetup WXDialog.cpp ...) or (b) INSTALL with different name. We shoudl choose (a) because it\\\\\\\'s simpler and cleaner in the long term. However, let\\\\\\\'s postpone that until WXDialog stabilizes and ignore it fow now. The developers won\\\\\\\'t care about names and users donÄt yet use it. (6) remove deprecated code - When you apply the patch: Please remove \\\\\\\"Source\\\\\\\\WXDialog\\\\\\\\bin\\\\\\\" because it contains only deprecated duplicate scripts. User+developers may be confused about which find wx script to use. They should be educated to use only Modules/FindwWidgets.cmake and developers should fix problems *only* there. (7) -isystem and wxWidgets_INCLUDE_DIRS ? It would be ideal to write a test if the compiler support -isystem at all. However, a simple \"is g++ and NOT APPLE\" logic should work for now, right? I don\'t have MacOS/APPLE at hand for testing. I have to check the precedence/order of -I and -isystem. We really want to keep -isystem because we compile our projects with \"-pedantic\" by default and don\'t want to see the WX warnings noise. If you agree wuth 1-6 I will submit a new patch against CMake CVS including the changes. I\'m uncertain about (7) because I can\'t test it without a mac at hand.. Can you verify that an additional IF(NOT APLLE) after checking for \"g++\" near -isystem is enough ? Jan. |
(0004494) Jan Woetzel (reporter) 2006-07-18 18:09 |
more about (7): IF( CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX ) IF (NOT APPLE) < replace by -isystem> should eork, right? Jan. |
(0004496) Jan Woetzel (reporter) 2006-07-19 02:25 |
even more about (7) - We can add an option wxWidgets_USE_ISYSTEM that defaults to false. Thsu isystem repalcement will be used onyl if teh user explicitly requests it. IF (HAVE_ISYSTEM) IF( CMAKE_COMPILER_IS_GNUCC AND CMAKE_COMPILER_IS_GNUCXX ) IF (NOT APPLE) <replace by -isystem> OK? |
(0004498) Brad King (manager) 2006-07-19 10:18 |
Your solution for (7) looks good. I'll try it with your next patch for the other changes. As far as warnings in wx headers, GCC really needs a "#pragma warning push/pop" directive like MSVC in order to block warnings from specific headers. I wonder if they'll ever add it. |
(0004499) Jan Woetzel (reporter) 2006-07-19 11:26 |
OK, next try with final_3_CMake.patch. Contains the fixes 1-7 including 7 for FindwxWidgets and FindwxWindows gcc pragma warning would be great, indeed. Jan. |
(0004528) Brad King (manager) 2006-07-21 15:43 |
I've now tested this on Windows, Linux, and OSX and it looks pretty good. I've applied the patch to CVS: /cvsroot/CMake/CMake/Modules/FindwxWidgets.cmake,v <-- FindwxWidgets.cmake new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Modules/FindwxWindows.cmake,v <-- FindwxWindows.cmake new revision: 1.19; previous revision: 1.18 /cvsroot/CMake/CMake/Modules/Use_wxWindows.cmake,v <-- Use_wxWindows.cmake new revision: 1.5; previous revision: 1.4 /cvsroot/CMake/CMake/Modules/UsewxWidgets.cmake,v <-- UsewxWidgets.cmake new revision: 1.4; previous revision: 1.3 /cvsroot/CMake/CMake/Source/CMakeLists.txt,v <-- CMakeLists.txt new revision: 1.297; previous revision: 1.296 /cvsroot/CMake/CMake/Source/WXDialog/CMakeLists.txt,v <-- CMakeLists.txt new revision: 1.24; previous revision: 1.23 /cvsroot/CMake/CMake/Source/WXDialog/bin/FindUPX.cmake,v <-- FindUPX.cmake new revision: 1.2; previous revision: 1.1 /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxW.cmake,v <-- FindwxW.cmake new revision: 1.2; previous revision: 1.1 /cvsroot/CMake/CMake/Source/WXDialog/bin/FindwxWin.cmake,v <-- FindwxWin.cmake new revision: 1.5; previous revision: 1.4 /cvsroot/CMake/CMake/Source/WXDialog/bin/UsewxW.cmake,v <-- UsewxW.cmake new revision: 1.2; previous revision: 1.1 /cvsroot/CMake/CMake/Tests/UseWX/CMakeLists.txt,v <-- CMakeLists.txt new revision: 1.3; previous revision: 1.2 /cvsroot/CMake/CMake/Tests/UseWX/WX.cxx,v <-- WX.cxx new revision: 1.3; previous revision: 1.2 We'll include this in 2.4.3. |
(0004529) Brad King (manager) 2006-07-21 15:44 |
Thanks for the contribution! |
Notes |
Issue History | |||
Date Modified | Username | Field | Change |
Issue History |
Copyright © 2000 - 2018 MantisBT Team |