From: <svn...@op...> - 2009-04-17 22:25:10
|
Author: henrik Date: Sat Apr 18 00:25:03 2009 New Revision: 5617 URL: http://www.opensync.org/changeset/5617 Log: Port to Windows/MinGW Modified: branches/3rd-party-cmake-modules/modules/FindThunderbirdXpcom.cmake (contents, props changed) Modified: branches/3rd-party-cmake-modules/modules/FindThunderbirdXpcom.cmake ============================================================================== --- branches/3rd-party-cmake-modules/modules/FindThunderbirdXpcom.cmake Sat Apr 18 00:21:25 2009 (r5616) +++ branches/3rd-party-cmake-modules/modules/FindThunderbirdXpcom.cmake Sat Apr 18 00:25:03 2009 (r5617) @@ -4,12 +4,8 @@ # $Id$ # ====================================================== -# The purpose of this CMake file is to find Thunderbird and Sunbird files. -# At the end, we whould have the following variables set: -# XPCOM_INCLUDE_DIRS -# XPCOM_LIBRARY_DIRS -# XPCOM_LIBRARIES -# SUNBIRD_VERSION +# The purpose of this CMake file is to find Thunderbird and Sunbird files and versions. +# It should work with Icedove and Iceowl as well # First we look for a Thunderbird package PKG_SEARCH_MODULE ( THUNDERBIRD_XPCOM thunderbird-xpcom icedove-xpcom ) @@ -68,6 +64,14 @@ /usr/local/lib64 /opt/lib64 ) + + IF ( WIN32 AND NOT _xpcom_lib ) + GET_FILENAME_COMPONENT ( _tbdir "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\thunderbird.exe]" PATH CACHE) + FIND_LIBRARY ( _xpcom_lib NAMES xpcom libxpcom + PATHS "${_tbdir}" + ) + ENDIF ( WIN32 AND NOT _xpcom_lib ) + IF ( NOT _xpcom_lib ) MESSAGE ( FATAL_ERROR "*** *** Found Thunderbird, but not the xpcom library" ) ENDIF ( NOT _xpcom_lib ) @@ -76,34 +80,55 @@ # Usually the only library we need is the xpcom SET ( THUNDERBIRD_XPCOM_LIBRARIES "xpcom" ) + IF ( WIN32 ) + SET ( THUNDERBIRD_XPCOM_LIBRARIES "xpcom;xpcom_compat;xpcom_core;xpistub" ) + ENDIF ( WIN32 ) # For Thunderbird 3.0 we need to link the glue library EXEC_PROGRAM ( thunderbird ARGS "--version" - OUTPUT_VARIABLE _THUNDERBIRD_XPCOM_VERSION + OUTPUT_VARIABLE THUNDERBIRD_XPCOM_VERSION RETURN_VALUE _THUNDERBIRD_XPCOM_VERSION_RET ) IF ( _THUNDERBIRD_XPCOM_VERSION_RET ) EXEC_PROGRAM ( icedove ARGS "--version" - OUTPUT_VARIABLE _THUNDERBIRD_XPCOM_VERSION + OUTPUT_VARIABLE THUNDERBIRD_XPCOM_VERSION RETURN_VALUE _THUNDERBIRD_XPCOM_VERSION_RET ) ENDIF ( _THUNDERBIRD_XPCOM_VERSION_RET ) - IF ( NOT _THUNDERBIRD_XPCOM_VERSION_RET ) + IF ( WIN32 AND _THUNDERBIRD_XPCOM_VERSION_RET ) + GET_FILENAME_COMPONENT ( _tb_exe "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\thunderbird.exe]" ABSOLUTE CACHE) + EXEC_PROGRAM ( "${_tb_exe}" ARGS "--version" + OUTPUT_VARIABLE THUNDERBIRD_XPCOM_VERSION + RETURN_VALUE _THUNDERBIRD_XPCOM_VERSION_RET ) + ENDIF ( WIN32 AND _THUNDERBIRD_XPCOM_VERSION_RET ) + + IF (_THUNDERBIRD_XPCOM_VERSION_RET ) + MESSAGE ( FATAL_ERROR "*** *** Unable execute Thunderbird/Icedove to get its version" ) + ENDIF ( _THUNDERBIRD_XPCOM_VERSION_RET ) - STRING ( REGEX MATCH ".*([0-9]\\.[0-9]).*" _THUNDERBIRD_XPCOM_VERSION_OK "${_THUNDERBIRD_XPCOM_VERSION}" ) - IF ( _THUNDERBIRD_XPCOM_VERSION_OK ) - STRING ( REGEX REPLACE ".*([0-9]\\.[0-9]).*" "\\1" THUNDERBIRD_XPCOM_VERSION "${_THUNDERBIRD_XPCOM_VERSION}" ) - MESSAGE ( STATUS "THUNDERBIRD_XPCOM_VERSION [${THUNDERBIRD_XPCOM_VERSION}]" ) - IF ( THUNDERBIRD_XPCOM_VERSION STREQUAL "3.0" ) - SET ( THUNDERBIRD_XPCOM_LIBRARIES "xpcomglue_s;xpcom" ) - ENDIF ( THUNDERBIRD_XPCOM_VERSION STREQUAL "3.0" ) - ENDIF ( _THUNDERBIRD_XPCOM_VERSION_OK ) - ENDIF ( NOT _THUNDERBIRD_XPCOM_VERSION_RET ) + STRING ( REGEX MATCH ".* ([0-9]\\.[0-9]).*" _THUNDERBIRD_XPCOM_VERSION_OK "${THUNDERBIRD_XPCOM_VERSION}" ) + IF ( _THUNDERBIRD_XPCOM_VERSION_OK ) + STRING (REGEX REPLACE ".* ([0-9]\\.[0-9]).*" "\\1" THUNDERBIRD_XPCOM_VERSION "${THUNDERBIRD_XPCOM_VERSION}" ) + ENDIF ( _THUNDERBIRD_XPCOM_VERSION_OK ) ENDIF( THUNDERBIRD_XPCOM_FOUND ) +STRING ( REGEX MATCH ".*([0-9]\\.[0-9]).*" _THUNDERBIRD_XPCOM_VERSION_OK "${THUNDERBIRD_XPCOM_VERSION}" ) +IF ( _THUNDERBIRD_XPCOM_VERSION_OK ) + # Thunderbird main version + STRING (REGEX REPLACE "^([0-9]+)\\..*$" "\\1" THUNDERBIRD_VERSION_MAIN "${THUNDERBIRD_XPCOM_VERSION}" ) +ELSE ( _THUNDERBIRD_XPCOM_VERSION_OK ) + MESSAGE ( STATUS "Unable to interpret Thunderbird version [${THUNDERBIRD_XPCOM_VERSION}]; continuing anyway" ) +ENDIF ( _THUNDERBIRD_XPCOM_VERSION_OK ) + +# Thunderbird 3 +IF ( THUNDERBIRD_VERSION_MAIN STREQUAL "3" ) + SET ( THUNDERBIRD_XPCOM_LIBRARIES "xpcomglue_s;xpcom" ) +ENDIF ( THUNDERBIRD_VERSION_MAIN STREQUAL "3" ) + # So, by now we should have the following variables set: MESSAGE ( STATUS " THUNDERBIRD_XPCOM_VERSION ${THUNDERBIRD_XPCOM_VERSION}" ) +MESSAGE ( STATUS " THUNDERBIRD_VERSION_MAIN ${THUNDERBIRD_VERSION_MAIN}" ) MESSAGE ( STATUS " THUNDERBIRD_XPCOM_MAIN_INCLUDE_DIR ${THUNDERBIRD_XPCOM_MAIN_INCLUDE_DIR}" ) MESSAGE ( STATUS " NSPR_MAIN_INCLUDE_DIR ${NSPR_MAIN_INCLUDE_DIR}" ) MESSAGE ( STATUS " THUNDERBIRD_XPCOM_LIBRARY_DIRS ${THUNDERBIRD_XPCOM_LIBRARY_DIRS}" ) @@ -123,10 +148,13 @@ ) +# ---------------------------------------- + # Now look for a Subird package PKG_SEARCH_MODULE ( SUNBIRD sunbird-xpcom iceowl-xpcom ) IF ( SUNBIRD_FOUND ) + # If we found the Thunderbird package, let us try to find the main include dir MESSAGE ( " SUNBIRD_INCLUDE_DIRS ${SUNBIRD_INCLUDE_DIRS}" ) # ---------- We just need the first directory, which should be the main directory @@ -141,6 +169,7 @@ ENDIF ( _SEVERAL_INCLUDE_DIRS ) ELSE( SUNBIRD_FOUND ) + # We did not find a Sunbird package, so let us look for the files manually MESSAGE ( STATUS " did not find sunbird package; now looking for sunbird files" ) FIND_PATH ( SUNBIRD_MAIN_INCLUDE_DIR calbase/calIICSService.h @@ -157,31 +186,44 @@ # We need the Sunbird version number EXEC_PROGRAM ( sunbird ARGS "--version" - OUTPUT_VARIABLE _SUNBIRD_VERSION + OUTPUT_VARIABLE SUNBIRD_VERSION RETURN_VALUE _SUNBIRD_VERSION_RET ) IF ( _SUNBIRD_VERSION_RET ) EXEC_PROGRAM ( iceowl ARGS "--version" - OUTPUT_VARIABLE _SUNBIRD_VERSION - RETURN_VALUE _ICEOWL_VERSION_RET ) - IF ( _ICEOWL_VERSION_RET ) - MESSAGE ( FATAL_ERROR "*** *** Unable execute sunbird/iceowl to get its version" ) - ENDIF ( _ICEOWL_VERSION_RET ) + OUTPUT_VARIABLE SUNBIRD_VERSION + RETURN_VALUE _SUNBIRD_VERSION_RET ) ENDIF ( _SUNBIRD_VERSION_RET ) - STRING ( REGEX MATCH ".*([0-9]\\.[0-9]).*" _SUNBIRD_VERSION_OK "${_SUNBIRD_VERSION}" ) + IF ( WIN32 AND _SUNBIRD_VERSION_RET ) + GET_FILENAME_COMPONENT ( _sb_exe "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\sunbird.exe]" ABSOLUTE CACHE) + EXEC_PROGRAM ( "${_sb_exe}" ARGS "--version" + OUTPUT_VARIABLE SUNBIRD_VERSION + RETURN_VALUE _SUNBIRD_VERSION_RET ) + ENDIF ( WIN32 AND _SUNBIRD_VERSION_RET ) + + IF ( _SUNBIRD_VERSION_RET ) + MESSAGE ( FATAL_ERROR "*** *** Unable execute sunbird/iceowl to get its version" ) + ENDIF ( _SUNBIRD_VERSION_RET ) + + STRING ( REGEX MATCH ".* ([0-9]\\.[0-9]).*" _SUNBIRD_VERSION_OK "${SUNBIRD_VERSION}" ) IF ( _SUNBIRD_VERSION_OK ) - STRING ( REGEX REPLACE ".*([0-9]\\.[0-9]).*" "\\1" SUNBIRD_VERSION "${_SUNBIRD_VERSION}" ) - ELSE ( _SUNBIRD_VERSION_OK ) - MESSAGE ( STATUS "sunbird --version returned ${_SUNBIRD_VERSION}" ) - MESSAGE ( FATAL_ERROR "*** *** Unable to interpret sunbird --version" ) + STRING (REGEX REPLACE ".* ([0-9]\\.[0-9]).*" "\\1" SUNBIRD_VERSION "${SUNBIRD_VERSION}" ) ENDIF ( _SUNBIRD_VERSION_OK ) ENDIF ( SUNBIRD_FOUND ) -# Thunderbird and Sunbird main version -STRING (REGEX REPLACE "^([0-9]+)\\..*$" "\\1" THUNDERBIRD_VERSION_MAIN "${THUNDERBIRD_XPCOM_VERSION}" ) -STRING (REGEX REPLACE "^([0-9]+)\\..*$" "\\1" SUNBIRD_VERSION_MAIN "${SUNBIRD_VERSION}" ) +STRING ( REGEX MATCH ".*([0-9]\\.[0-9]).*" _SUNBIRD_VERSION_OK "${SUNBIRD_VERSION}" ) +IF ( _SUNBIRD_VERSION_OK ) + # Sunbird main version + STRING (REGEX REPLACE "^([0-9]+)\\..*$" "\\1" SUNBIRD_VERSION_MAIN "${SUNBIRD_VERSION}" ) +ELSE ( _SUNBIRD_VERSION_OK ) + MESSAGE ( FATAL_ERROR "*** ***Unable to interpret Sunbird version [${_SUNBIRD_VERSION}]" ) +ENDIF ( _SUNBIRD_VERSION_OK ) + + + +# ---------------------------------------- # So, by now we should have the following variables set: MESSAGE ( STATUS " SUNBIRD_MAIN_INCLUDE_DIR ${SUNBIRD_MAIN_INCLUDE_DIR}" ) |