aboutsummaryrefslogtreecommitdiff
path: root/kde-modules/KDEPackageAppTemplates.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'kde-modules/KDEPackageAppTemplates.cmake')
-rw-r--r--kde-modules/KDEPackageAppTemplates.cmake124
1 files changed, 124 insertions, 0 deletions
diff --git a/kde-modules/KDEPackageAppTemplates.cmake b/kde-modules/KDEPackageAppTemplates.cmake
new file mode 100644
index 00000000..c0eb8b90
--- /dev/null
+++ b/kde-modules/KDEPackageAppTemplates.cmake
@@ -0,0 +1,124 @@
+#.rst:
+# KDETemplateGenerator
+# -------------------
+#
+# Packages KApptemplate/KDevelop compatible application templates
+#
+# This module provides a functionality to package in a tarball and
+# install project templates compatible with the format used by
+# KApptemplate and KDevelop. Useful for providing minimal examples
+# for the usage of the KDE Frameworks.
+#
+# This module provides the following function:
+#
+# kde_package_app_templates( TEMPLATES template1 [template2] [...] INSTALL_DIR directory)
+#
+# INSTALL_DIR is the directory to install the template package to.
+# In most cases you will want to use the variable KDE_INSTALL_KTEMPLATESDIR
+# from :kde-module:`KDEInstallDirs`.
+#
+# TEMPLATES lists subdirectories containing template files;
+# each ``<template>`` directory will be packaged into a file named
+# ``<template>.tar.bz2`` and installed to the appropriate location.
+#
+# The template is a minimal source tree of an application as if it was
+# an application project by itself, with names (file names or text inside)
+# the text files replaced by the following placeholders when needed:
+#
+# ``%{PROJECTDIRNAME}``
+# %{APPNAMELC}-%{VERSION} for KAppTemplate
+# ``%{APPNAME}``
+# project name as entered by user ex: MyKApp
+# ``%{APPNAMELC}``
+# project name in lower case ex: mykapp
+# ``%{APPNAMEUC}``
+# project name in upper case ex: MYKAPP
+#
+# ``%{CPP_TEMPLATE}``
+# license header for cpp file
+# ``%{H_TEMPLATE}``
+# license header for h file
+#
+# ``%{AUTHOR}``
+# author name ex: George Ignacious
+# ``%{EMAIL}``
+# author email ex: foo@bar.org
+# ``%{VERSION}``
+# project version ex: 0.1
+#
+# ``%{dest}``
+# used in .kdevtemplate
+# ``%{src}``
+# used in .kdevtemplate
+#
+# Multiple templates can be passed at once.
+#
+#
+# Since 5.18
+
+#=============================================================================
+# Copyright 2015 Marco Martin <mart@kde.org>
+# Copyright 2014 Simon Wächter<waechter.simon@gmail.com>
+# Copyright 2013 Nico Kruber<nico.kruber@gmail.com>
+# Copyright 2012 Jeremy Whiting <jpwhiting@kde.org>
+#
+# Distributed under the OSI-approved BSD License (the "License");
+# see accompanying file COPYING-CMAKE-SCRIPTS for details.
+#
+# This software is distributed WITHOUT ANY WARRANTY; without even the
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the License for more information.
+#=============================================================================
+# (To distribute this file outside of extra-cmake-modules, substitute the full
+# License text for the above reference.)
+
+include(CMakeParseArguments)
+
+function(kde_package_app_templates)
+ set(_oneValueArgs INSTALL_DIR)
+ set(_multiValueArgs TEMPLATES)
+ cmake_parse_arguments(ARG "" "${_oneValueArgs}" "${_multiValueArgs}" ${ARGN} )
+
+ if(NOT ARG_TEMPLATES)
+ message(FATAL_ERROR "No TEMPLATES argument given to kde_package_app_templates")
+ endif()
+
+ if(NOT ARG_INSTALL_DIR)
+ message(FATAL_ERROR "No INSTALL_DIR argument given to kde_package_app_templates")
+ endif()
+
+ foreach(_templateName ${ARG_TEMPLATES})
+
+ get_filename_component(_tmp_file ${_templateName} ABSOLUTE)
+ get_filename_component(_baseName ${_tmp_file} NAME_WE)
+ set(_template ${CMAKE_CURRENT_BINARY_DIR}/${_baseName}.tar.bz2)
+
+ file(GLOB _files "${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}/*")
+ set(_deps)
+ foreach(_file ${_files})
+ get_filename_component(_fileName ${_file} NAME)
+ string(COMPARE NOTEQUAL ${_fileName} .kdev_ignore _v1)
+ string(REGEX MATCH "\\.svn" _v2 ${_fileName})
+ if(WIN32)
+ string(REGEX MATCH "_svn" _v3 ${_fileName})
+ else(WIN32)
+ set(_v3 FALSE)
+ endif()
+ if (_v1 AND NOT _v2 AND NOT _v3)
+ set(_deps ${_deps} ${_file})
+ endif ()
+ endforeach()
+
+ add_custom_target(${_baseName} ALL DEPENDS ${_template})
+
+ add_custom_command(OUTPUT ${_template}
+ COMMAND ${CMAKE_COMMAND} -E tar "cvfj" ${_template} .
+ WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}
+ )
+
+
+ install(FILES ${_template} DESTINATION ${ARG_INSTALL_DIR})
+ set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${_template}")
+
+ endforeach()
+endfunction()