|
|
@@ -0,0 +1,65 @@
|
|
|
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
|
|
+# file Copyright.txt or https://cmake.org/licensing for details.
|
|
|
+
|
|
|
+#.rst:
|
|
|
+# CPackIFWConfigureFile
|
|
|
+# ---------------------
|
|
|
+#
|
|
|
+# The module defines :command:`configure_file` similar command to
|
|
|
+# configure file templates prepared in QtIFW/SDK/Creator style.
|
|
|
+#
|
|
|
+#
|
|
|
+# Commands
|
|
|
+# ^^^^^^^^
|
|
|
+#
|
|
|
+# The module defines the following commands:
|
|
|
+#
|
|
|
+# .. command:: cpack_ifw_configure_file
|
|
|
+#
|
|
|
+# Copy a file to another location and modify its contents.
|
|
|
+#
|
|
|
+# ::
|
|
|
+#
|
|
|
+# cpack_ifw_configure_file(<input> <output>)
|
|
|
+#
|
|
|
+# Copies an ``<input>`` file to an ``<output>`` file and substitutes variable
|
|
|
+# values referenced as ``%{VAR}`` or ``%VAR%`` in the input file content.
|
|
|
+# Each variable reference will be replaced with the current value of the
|
|
|
+# variable, or the empty string if the variable is not defined.
|
|
|
+#
|
|
|
+
|
|
|
+# NOTE: This file used to himself packaging via CPack IFW generator and
|
|
|
+# should be compatible with minimal CMake version defined in
|
|
|
+# ../CMakeLists.txt file.
|
|
|
+
|
|
|
+if(NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED)
|
|
|
+set(CPackIFWConfigureFile_CMake_INCLUDED 1)
|
|
|
+
|
|
|
+macro(cpack_ifw_configure_file INPUT OUTPUT)
|
|
|
+ file(READ "${INPUT}" _tmp)
|
|
|
+ foreach(_tmp_regex "%{([^%}]+)}" "%([^%]+)%")
|
|
|
+ string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
|
|
|
+ while(_tmp_vars)
|
|
|
+ foreach(_tmp_var ${_tmp_vars})
|
|
|
+ string(REGEX REPLACE "${_tmp_regex}" "\\1"
|
|
|
+ _tmp_var_name "${_tmp_var}")
|
|
|
+ if(DEFINED ${_tmp_var_name})
|
|
|
+ set(_tmp_var_value "${${_tmp_var_name}}")
|
|
|
+ elseif(NOT "$ENV{${_tmp_var_name}}" STREQUAL "")
|
|
|
+ set(_tmp_var_value "$ENV{${_tmp_var_name}}")
|
|
|
+ else()
|
|
|
+ set(_tmp_var_value "")
|
|
|
+ endif()
|
|
|
+ string(REPLACE "${_tmp_var}" "${_tmp_var_value}" _tmp "${_tmp}")
|
|
|
+ endforeach()
|
|
|
+ string(REGEX MATCHALL "${_tmp_regex}" _tmp_vars "${_tmp}")
|
|
|
+ endwhile()
|
|
|
+ endforeach()
|
|
|
+ if(IS_ABSOLUTE "${OUTPUT}")
|
|
|
+ file(WRITE "${OUTPUT}" "${_tmp}")
|
|
|
+ else()
|
|
|
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}" "${_tmp}")
|
|
|
+ endif()
|
|
|
+endmacro()
|
|
|
+
|
|
|
+endif() # NOT DEFINED CPackIFWConfigureFile_CMake_INCLUDED
|