summaryrefslogtreecommitdiffstats
path: root/cmake/modules/FindKDEWIN_Packager.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/modules/FindKDEWIN_Packager.cmake')
-rw-r--r--cmake/modules/FindKDEWIN_Packager.cmake156
1 files changed, 156 insertions, 0 deletions
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)
+