with msvc, replace va_copy by assigning the va_lists (cherry picked from commit 42d61...
[platform/upstream/dbus.git] / cmake / modules / FindKDEWIN_Packager.cmake
1 #
2 # KDEWIN packager support http://download.cegit.de/kde-windows/installer
3
4 # The kdewin packager is searched in the following pathes and order 
5
6 #    path specified by the environment dir KDEWIN_PACKAGER_DIR
7 #    <ProgramFiles>/kdewin-packager 
8 #    <ProgramFiles>/kdewin-installer
9 #
10 # The macro KDEWIN_PACKAGER provides package building support and should be 
11 # added to the top level CMakeLists.txt as shown below
12
13 # if (KDEWIN_PACKAGER_FOUND)
14 #    KDEWIN_PACKAGER(
15 #       "projectname"
16 #       "version"
17 #       "description" 
18 #       "additional options"
19 #   )
20 # endif (KDEWIN_PACKAGER_FOUND)
21
22 # The macro KDEWIN_PACKAGER adds three additional makefile targets, which could be 
23 # called using the regular make tool 
24 #   
25 #    kdewin_package 
26 #           - build kdewin package with currently used compiler and build type 
27 #    kdewin_package_debug_and_release 
28 #           - build kdewin debug and release package with currently used compiler
29 #    kdewin_package_debug_and_release_mingw_and_msvc
30 #           - build kdewin debug and release package with mingw and msvc compiler
31 #
32 #
33 #
34 # Copyright (c) 2006-2007, Ralf Habacker
35 #
36 # Redistribution and use is allowed according to the terms of the BSD license.
37 #
38
39 if (WIN32)
40     if(NOT KDEWIN_PACKAGER_DIR)
41         # check for enviroment variable
42         file(TO_CMAKE_PATH "$ENV{KDEWIN_PACKAGER_DIR}" KDEWIN_PACKAGER_DIR)
43         if(NOT KDEWIN_PACKAGER_DIR)
44                 # search in the default program install folder
45                 file(TO_CMAKE_PATH "$ENV{PROGRAMFILES}" _progFiles)
46                 find_file(KDEWIN_PACKAGER_DIR_tmp kdewin-packager kdewin-installer
47                         PATHS
48                         "${_progFiles}"
49                 )
50                 set(KDEWIN_PACKAGER_DIR ${KDEWIN_PACKAGER_DIR_tmp})
51         endif(NOT KDEWIN_PACKAGER_DIR)
52     endif(NOT KDEWIN_PACKAGER_DIR)
53         
54     if (KDEWIN_PACKAGER_DIR)
55     
56         find_program(KDEWIN_PACKAGER_EXECUTABLE kdewin-packager
57             PATHS
58                 ${KDEWIN_PACKAGER_DIR}/bin
59         )
60         
61        set(KDEWIN_PACKAGER_FOUND TRUE)
62     else (KDEWIN_PACKAGER_DIR)
63        set(KDEWIN_PACKAGER_FOUND)
64     endif (KDEWIN_PACKAGER_DIR)
65     
66     if (KDEWIN_PACKAGER_FOUND)
67       if (NOT KDEWIN_PACKAGER_FIND_QUIETLY)
68         message(STATUS "Found KDEWIN Packager: ${KDEWIN_PACKAGER_DIR}")
69       endif (NOT KDEWIN_PACKAGER_FIND_QUIETLY)
70     else (KDEWIN_PACKAGER_FOUND)
71       if (KDEWIN_PACKAGER_FIND_REQUIRED)
72         message(FATAL_ERROR "Could NOT find KDEWIN PAckager")
73       endif (KDEWIN_PACKAGER_FIND_REQUIRED)
74     endif (KDEWIN_PACKAGER_FOUND)
75
76 endif (WIN32)
77
78 MACRO (KDEWIN_PACKAGER _name _version _notes _options)
79     if (KDEWIN_PACKAGER_FOUND)
80         if (MSVC)
81             set (type "msvc")
82         else (MSVC)
83             set (type "mingw")
84         endif (MSVC)
85     
86         add_custom_target(kdewin_package
87             COMMAND ${CMAKE_COMMAND} 
88                 -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P ${CMAKE_BINARY_DIR}/cmake_install.cmake 
89             COMMAND ${KDEWIN_PACKAGER_EXECUTABLE} 
90                 -name ${_name}
91                 -root ${CMAKE_BINARY_DIR}/temp
92                 -srcroot ${CMAKE_SOURCE_DIR}
93                 -version ${_version} 
94                 -notes "${_notes}"
95                 -type ${type}
96                 ${_options}               
97             # FIXME: cleanup does not work 
98             #COMMAND rmdir /Q /S ${CMAKE_BINARY_DIR}\temp
99         )
100         add_custom_target(kdewin_package_debug_and_release
101             COMMAND ${CMAKE_COMMAND} 
102                 -H$(CMAKE_SOURCE_DIR) 
103                 -B$(CMAKE_BINARY_DIR)
104                 -DCMAKE_BUILD_TYPE=Release
105             COMMAND ${CMAKE_MAKE_PROGRAM} 
106                 clean
107             COMMAND ${CMAKE_MAKE_PROGRAM} 
108                 install/local
109             COMMAND ${CMAKE_COMMAND} 
110                 -H$(CMAKE_SOURCE_DIR) 
111                 -B$(CMAKE_BINARY_DIR)
112                 -DCMAKE_BUILD_TYPE=Debug
113             COMMAND ${CMAKE_MAKE_PROGRAM} 
114                 clean
115             COMMAND ${CMAKE_MAKE_PROGRAM} 
116                 install/local
117             COMMAND ${KDEWIN_PACKAGER_EXECUTABLE} 
118                 -name ${_name}
119                 -root ${CMAKE_BINARY_DIR}/temp
120                 -srcroot ${CMAKE_SOURCE_DIR}
121                 -version ${_version} 
122                 -notes "${_notes}"
123                 -type ${type}
124                 ${_options}               
125             # FIXME: cleanup does not work 
126             #COMMAND rmdir /Q /S ${CMAKE_BINARY_DIR}\temp
127         )
128 set (CONTENT "
129 if \"%1\" == \"package_only\" goto package_only
130
131 del CMakeCache.txt
132 rmdir /Q /S ${CMAKE_BINARY_DIR}/temp 
133 ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"MinGW Makefiles\" -DCMAKE_BUILD_TYPE=Release
134 mingw32-make
135 ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake
136 ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"MinGW Makefiles\" -DCMAKE_BUILD_TYPE=Debug
137 mingw32-make
138 ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake
139 del CMakeCache.txt
140 ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Release
141 nmake
142 ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake
143 ${CMAKE_COMMAND} ${CMAKE_SOURCE_DIR} -G \"NMake Makefiles\" -DCMAKE_BUILD_TYPE=Debug
144 nmake
145 ${CMAKE_COMMAND} -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/temp -P cmake_install.cmake
146 :package_only
147 ${KDEWIN_PACKAGER_EXECUTABLE} -name ${_name} -root ${CMAKE_BINARY_DIR}/temp -srcroot ${CMAKE_SOURCE_DIR} -version ${_version}  -notes \"${_notes}\" ${_options} 
148 "
149 )
150         write_file(${CMAKE_BINARY_DIR}/kdewin_package_debug_and_release_mingw_and_msvc.bat "${CONTENT}")
151         add_custom_target(kdewin_package_debug_and_release_mingw_and_msvc
152             COMMAND ${CMAKE_BINARY_DIR}/kdewin_package_debug_and_release_mingw_and_msvc.bat
153         )
154     endif (KDEWIN_PACKAGER_FOUND)
155 ENDMACRO (KDEWIN_PACKAGER)
156