diff options
| author | Ralf Habacker <ralf.habacker@freenet.de> | 2007-06-14 07:56:47 +0000 | 
|---|---|---|
| committer | Ralf Habacker <ralf.habacker@freenet.de> | 2007-06-14 07:56:47 +0000 | 
| commit | e26ed1576a5f82dec72b13d1c6619f83237f6236 (patch) | |
| tree | 8f72a1c29de9af99ae8c9fa8ca02366432ecd3fd | |
| parent | 62f09b8bc6ca258a54a316b452d28f1c590d51c1 (diff) | |
* cmake/modules/FindKDEWIN.cmake, cmake/modules/FindKDEWIN_Packager.cmake cmake/modules/Win32Macros.cmake: new files from the  kdewin32 project
* cmake/CMakeLists.txt: cleaned support for kdewin installer and win32 explorer wrapper
| -rw-r--r-- | ChangeLog | 9 | ||||
| -rw-r--r-- | cmake/CMakeLists.txt | 41 | ||||
| -rw-r--r-- | cmake/modules/FindKDEWIN.cmake | 56 | ||||
| -rw-r--r-- | cmake/modules/FindKDEWIN_Packager.cmake | 156 | ||||
| -rw-r--r-- | cmake/modules/Win32Macros.cmake | 44 | 
5 files changed, 273 insertions, 33 deletions
@@ -1,3 +1,12 @@ +2007-06-14  Ralf Habacker  <ralf.habacker@freenet.de> +	 +	* cmake/modules/FindKDEWIN.cmake, +	  cmake/modules/FindKDEWIN_Packager.cmake,  +	  cmake/modules/Win32Macros.cmake: new files from the  +	  kdewin32 project +	* cmake/CMakeLists.txt: cleaned support for kdewin installer and  +	  win32 explorer wrapper +  2007-06-13  Havoc Pennington  <hp@redhat.com>  	* dbus/dbus-message.c (dbus_message_iter_open_container): Fix diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 1eef28e0..3728aba0 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -11,9 +11,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.4.4 FATAL_ERROR)  # where to look first for cmake modules, before ${CMAKE_ROOT}/Modules/ is checked  set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/modules") -find_package(KDEWIN_INSTALLER) - -  #enable building of shared library  SET(BUILD_SHARED_LIBS ON) @@ -21,10 +18,13 @@ if (CYGWIN)     set (WIN32)  endif (CYGWIN) -# search packages used by KDE +# search for required packages  if (WIN32) -	find_package(GNUWIN32) +	find_package(KDEWIN) +    find_package(KDEWIN_Packager)  	find_package(LibIconv) +    include(Win32Macros) +    addExplorerWrapper(${PACKAGE})  endif (WIN32)  find_package(LibXml2)  find_package(LibExpat) @@ -538,33 +538,8 @@ if (DBUS_DISABLE_CHECKS)  endif(DBUS_DISABLE_CHECKS)  MESSAGE(" ") -  INCLUDE(modules/CPackInstallConfig.cmake) -if (KDEWIN_INSTALLER_FOUND) -    if (MSVC) -        add_custom_target(kdewinpackage -            COMMAND ${KDEWIN_PACKAGER}  -                -name dbus -                -root ${CMAKE_INSTALL_PREFIX}  -                -srcroot ${CMAKE_SOURCE_DIR}/..  -                -version ${VERSION}  -                -notes "ipc service" -                -type msvc -                -strip -                -complete -        ) -    else (MSVC) -        add_custom_target(kdewinpackage -            COMMAND ${KDEWIN_PACKAGER}  -                -name dbus -                -root ${CMAKE_INSTALL_PREFIX}  -                -srcroot ${CMAKE_SOURCE_DIR}/..  -                -version ${VERSION}  -                -notes "ipc service" -                -strip -                -type mingw -                -complete -        ) -    endif (MSVC) -endif (KDEWIN_INSTALLER_FOUND) +if (KDEWIN_PACKAGER_FOUND) +    KDEWIN_PACKAGER(${PACKAGE} ${VERSION} "ipc library" "") +endif (KDEWIN_PACKAGER_FOUND) diff --git a/cmake/modules/FindKDEWIN.cmake b/cmake/modules/FindKDEWIN.cmake new file mode 100644 index 00000000..3e40fd37 --- /dev/null +++ b/cmake/modules/FindKDEWIN.cmake @@ -0,0 +1,56 @@ +# - Try to find the KDEWIN library +#  +# used environment vars  +#  KDEWIN_DIR  - kdewin root dir  +# +# this will define +#  KDEWIN_FOUND - system has KDEWIN +#  KDEWIN_DIR - the KDEWIN root installation dir +# +# Copyright (c) 2007, Ralf Habacker, <ralf.habacker@freenet.de> +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. + +if (WIN32) +  IF (NOT KDEWIN_DIR) +    # check for enviroment variable +    file(TO_CMAKE_PATH "$ENV{KDEWIN_DIR}" KDEWIN_DIR) +    if(NOT KDEWIN_DIR) +      file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _progFiles) +      if (MINGW) +        set (DIR "kdewin-mingw") +      else (MINGW) +        set (DIR "kdewin-msvc") +      endif (MINGW) +       +      # search in the default program install folder +      find_file(KDEWIN_DIR_tmp ${DIR} kdewin kdewin32 gnuwin32 +      PATHS +        "${_progFiles}" +      ) +      set (KDEWIN_DIR ${KDEWIN_DIR_tmp}) +    endif (NOT KDEWIN_DIR) +    if (KDEWIN_DIR) +      message(STATUS "Found windows supplementary package location: ${KDEWIN_DIR}") +    endif (KDEWIN_DIR) +  endif (NOT KDEWIN_DIR) + +  # this must be set every time  +  if (KDEWIN_DIR) +    # add include path and library to all targets, this is required because  +    # cmake's 2.4.6 FindZLib.cmake does not use CMAKE_REQUIRED... vars +    set(CMAKE_INCLUDE_PATH ${CMAKE_INCLUDE_PATH} ${KDEWIN_DIR}/include) +    set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${KDEWIN_DIR}/lib) +      +    set (KDEWIN_FOUND 1) +  else(KDEWIN_DIR) +    message(STATUS "Could not find the location of the windows supplementary packages which is \n" +                    "\t\tenvironment variable KDEWIN_DIR\n" +                    "\t\t<ProgramFiles>/${DIR}\n" +                    "\t\t<ProgramFiles>/kdewin\n"  +                    "\t\t<ProgramFiles>/kdewin32\n"  +                    "\t\t<ProgramFiles>/gnuwin32\n") +   endif(KDEWIN_DIR) +   +endif (WIN32) diff --git a/cmake/modules/FindKDEWIN_Packager.cmake b/cmake/modules/FindKDEWIN_Packager.cmake new file mode 100644 index 00000000..d4b6328b --- /dev/null +++ b/cmake/modules/FindKDEWIN_Packager.cmake @@ -0,0 +1,156 @@ +# +# KDEWIN packager support http://download.cegit.de/kde-windows/installer +#  +# The kdewin packager is searched in the following pathes and order  +#  +#    path specified by the environment dir KDEWIN_PACKAGER_DIR +#    <ProgramFiles>/kdewin-packager  +#    <ProgramFiles>/kdewin-installer +# +# The macro KDEWIN_PACKAGER provides package building support and should be  +# added to the top level CMakeLists.txt as shown below +#  +# if (KDEWIN_PACKAGER_FOUND) +#    KDEWIN_PACKAGER( +#       "projectname" +#       "version" +#       "description"  +#       "additional options" +#   ) +# endif (KDEWIN_PACKAGER_FOUND) + +# The macro KDEWIN_PACKAGER adds three additional makefile targets, which could be  +# called using the regular make tool  +#    +#    kdewin_package  +#           - build kdewin package with currently used compiler and build type  +#    kdewin_package_debug_and_release  +#           - build kdewin debug and release package with currently used compiler +#    kdewin_package_debug_and_release_mingw_and_msvc +#           - build kdewin debug and release package with mingw and msvc compiler +# +# +# +# Copyright (c) 2006-2007, Ralf Habacker +# +# Redistribution and use is allowed according to the terms of the BSD license. +# + +if (WIN32) +    if(NOT KDEWIN_PACKAGER_DIR) +        # check for enviroment variable +    	file(TO_CMAKE_PATH "$ENV{KDEWIN_PACKAGER_DIR}" KDEWIN_PACKAGER_DIR) +    	if(NOT KDEWIN_PACKAGER_DIR) +    		# search in the default program install folder +    		file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _progFiles) +    		find_file(KDEWIN_PACKAGER_DIR_tmp kdewin-packager kdewin-installer +       			PATHS +       			"${_progFiles}" +    		) +    		set(KDEWIN_PACKAGER_DIR ${KDEWIN_PACKAGER_DIR_tmp}) +    	endif(NOT KDEWIN_PACKAGER_DIR) +    endif(NOT KDEWIN_PACKAGER_DIR) +         +    if (KDEWIN_PACKAGER_DIR) +     +        find_program(KDEWIN_PACKAGER_EXECUTABLE kdewin-packager +            PATHS +                ${KDEWIN_PACKAGER_DIR}/bin +        ) +         +       set(KDEWIN_PACKAGER_FOUND TRUE) +    else (KDEWIN_PACKAGER_DIR) +       set(KDEWIN_PACKAGER_FOUND) +    endif (KDEWIN_PACKAGER_DIR) +     +    if (KDEWIN_PACKAGER_FOUND) +      if (NOT KDEWIN_PACKAGER_FIND_QUIETLY) +        message(STATUS "Found KDEWIN Packager: ${KDEWIN_PACKAGER_DIR}") +      endif (NOT KDEWIN_PACKAGER_FIND_QUIETLY) +    else (KDEWIN_PACKAGER_FOUND) +      if (KDEWIN_PACKAGER_FIND_REQUIRED) +        message(FATAL_ERROR "Could NOT find KDEWIN PAckager") +      endif (KDEWIN_PACKAGER_FIND_REQUIRED) +    endif (KDEWIN_PACKAGER_FOUND) + +endif (WIN32) + +MACRO (KDEWIN_PACKAGER _name _version _notes _options) +    if (KDEWIN_PACKAGER_FOUND) +        if (MSVC) +            set (type "msvc") +        else (MSVC) +            set (type "mingw") +        endif (MSVC) +     +        add_custom_target(kdewin_package +            COMMAND ${CMAKE_COMMAND}  +                -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P ${CMAKE_BINARY_DIR}/cmake_install.cmake  +            COMMAND ${KDEWIN_PACKAGER_EXECUTABLE}  +                -name ${_name} +                -root ${CMAKE_BINARY_DIR}/temp +                -srcroot ${CMAKE_SOURCE_DIR} +                -version ${_version}  +                -notes "${_notes}" +                -type ${type} +                ${_options}                +            # FIXME: cleanup does not work  +            #COMMAND rmdir /Q /S ${CMAKE_BINARY_DIR}\temp +        ) +        add_custom_target(kdewin_package_debug_and_release +            COMMAND ${CMAKE_COMMAND}  +                -H$(CMAKE_SOURCE_DIR)  +                -B$(CMAKE_BINARY_DIR) +                -DCMAKE_BUILD_TYPE=Release +            COMMAND ${CMAKE_MAKE_PROGRAM}  +                clean +            COMMAND ${CMAKE_MAKE_PROGRAM}  +                install/local +            COMMAND ${CMAKE_COMMAND}  +                -H$(CMAKE_SOURCE_DIR)  +                -B$(CMAKE_BINARY_DIR) +                -DCMAKE_BUILD_TYPE=Debug +            COMMAND ${CMAKE_MAKE_PROGRAM}  +                clean +            COMMAND ${CMAKE_MAKE_PROGRAM}  +                install/local +            COMMAND ${KDEWIN_PACKAGER_EXECUTABLE}  +                -name ${_name} +                -root ${CMAKE_BINARY_DIR}/temp +                -srcroot ${CMAKE_SOURCE_DIR} +                -version ${_version}  +                -notes "${_notes}" +                -type ${type} +                ${_options}                +            # FIXME: cleanup does not work  +            #COMMAND rmdir /Q /S ${CMAKE_BINARY_DIR}\temp +        ) +set (CONTENT " +if \"%1\" == \"package_only\" goto package_only + +del CMakeCache.txt +rmdir /Q /S ${CMAKE_BINARY_DIR}/temp  +${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"MinGW Makefiles\" -DCMAKE_BUILD_TYPE=Release +mingw32-make +${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake +${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"MinGW Makefiles\" -DCMAKE_BUILD_TYPE=Debug +mingw32-make +${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake +del CMakeCache.txt +${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release +nmake +${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake +${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Debug +nmake +${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake +:package_only +${KDEWIN_PACKAGER_EXECUTABLE} -name ${_name} -root ${CMAKE_BINARY_DIR}/temp -srcroot ${CMAKE_SOURCE_DIR} -version ${_version}  -notes \"${_notes}\" ${_options}  +" +) +        write_file(${CMAKE_BINARY_DIR}/kdewin_package_debug_and_release_mingw_and_msvc.bat "${CONTENT}") +        add_custom_target(kdewin_package_debug_and_release_mingw_and_msvc +            COMMAND ${CMAKE_BINARY_DIR}/kdewin_package_debug_and_release_mingw_and_msvc.bat +        ) +    endif (KDEWIN_PACKAGER_FOUND) +ENDMACRO (KDEWIN_PACKAGER) + diff --git a/cmake/modules/Win32Macros.cmake b/cmake/modules/Win32Macros.cmake new file mode 100644 index 00000000..4385cc97 --- /dev/null +++ b/cmake/modules/Win32Macros.cmake @@ -0,0 +1,44 @@ +# +# win32 macros  +#  +# Copyright (c) 2006-2007, Ralf Habacker +# +# Redistribution and use is allowed according to the terms of the BSD license. +# + +if (WIN32) +    # +    # addExplorerWrapper creates batch files for fast access  +    # to the build environment from the win32 explorer.  +    #  +    # For mingw and nmake projects it's opens a command shell, +    # for Visual Studio IDE's (at least tested with VS 8 2005) it +    # opens the related .sln file with paths setting specified at  +    # configure time.  +    # +    MACRO (addExplorerWrapper _projectname) +        # write explorer wrappers +        get_filename_component(CMAKE_BIN_PATH ${CMAKE_COMMAND} PATH) +        set (ADD_PATH "${CMAKE_BIN_PATH}") + +        if (QT_QMAKE_EXECUTABLE) +            get_filename_component(QT_BIN_PATH ${QT_QMAKE_EXECUTABLE} PATH) +            set (ADD_PATH "${ADD_PATH};${QT_BIN_PATH}") +        endif (QT_QMAKE_EXECUTABLE) +         +        # add here more pathes  +         +        if (MINGW) +            get_filename_component(MINGW_BIN_PATH ${CMAKE_CXX_COMPILER} PATH) +            set (ADD_PATH "${ADD_PATH};${MINGW_BIN_PATH}") +            write_file (${CMAKE_BINARY_DIR}/${_projectname}-shell.bat "set PATH=${ADD_PATH};%PATH%\ncmd.exe") +        else (MINGW) +            if (CMAKE_BUILD_TOOL STREQUAL  "nmake") +                get_filename_component(VC_BIN_PATH ${CMAKE_CXX_COMPILER} PATH) +                write_file (${CMAKE_BINARY_DIR}/${_projectname}-shell.bat "set PATH=${ADD_PATH};%PATH%\ncall \"${VC_BIN_PATH}\\vcvars32.bat\"\ncmd.exe") +            else (CMAKE_BUILD_TOOL STREQUAL  "nmake") +                write_file (${CMAKE_BINARY_DIR}/${_projectname}-sln.bat "set PATH=${ADD_PATH};%PATH%\nstart ${_projectname}.sln") +            endif (CMAKE_BUILD_TOOL STREQUAL  "nmake") +        endif (MINGW) +    ENDMACRO (addExplorerWrapper) +endif(WIN32)  | 
