| # |
| # Copyright (C) 2016 Klaralvdalens Datakonsult AB (KDAB). |
| # Contact: https://www.qt.io/licensing/ |
| # |
| # This file is part of the QtScxml module of the Qt Toolkit. |
| # |
| # $QT_BEGIN_LICENSE:LGPL$ |
| # Commercial License Usage |
| # Licensees holding valid commercial Qt licenses may use this file in |
| # accordance with the commercial license agreement provided with the |
| # Software or, alternatively, in accordance with the terms contained in |
| # a written agreement between you and The Qt Company. For licensing terms |
| # and conditions see https://www.qt.io/terms-conditions. For further |
| # information use the contact form at https://www.qt.io/contact-us. |
| # |
| # GNU Lesser General Public License Usage |
| # Alternatively, this file may be used under the terms of the GNU Lesser |
| # General Public License version 3 as published by the Free Software |
| # Foundation and appearing in the file LICENSE.LGPL3 included in the |
| # packaging of this file. Please review the following information to |
| # ensure the GNU Lesser General Public License version 3 requirements |
| # will be met: https://www.gnu.org/licenses/lgpl-3.0.html. |
| # |
| # GNU General Public License Usage |
| # Alternatively, this file may be used under the terms of the GNU |
| # General Public License version 2.0 or (at your option) the GNU General |
| # Public license version 3 or any later version approved by the KDE Free |
| # Qt Foundation. The licenses are as published by the Free Software |
| # Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 |
| # included in the packaging of this file. Please review the following |
| # information to ensure the GNU General Public License requirements will |
| # be met: https://www.gnu.org/licenses/gpl-2.0.html and |
| # https://www.gnu.org/licenses/gpl-3.0.html. |
| # |
| # $QT_END_LICENSE$ |
| |
| if(NOT Qt5Scxml_QSCXMLC_EXECUTABLE) |
| message(FATAL_ERROR "qscxmlc executable not found -- Check installation.") |
| endif() |
| |
| # qt5_add_statecharts(outfiles inputfile ... ) |
| |
| function(qt5_add_statecharts outfiles) |
| set(options) |
| set(oneValueArgs) |
| set(multiValueArgs OPTIONS) |
| |
| cmake_parse_arguments(ARGS "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) |
| |
| set(scxml_files ${ARGS_UNPARSED_ARGUMENTS}) |
| |
| foreach(it ${scxml_files}) |
| get_filename_component(outfilename ${it} NAME_WE) |
| get_filename_component(infile ${it} ABSOLUTE) |
| set(outfile ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}) |
| set(outfile_cpp ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.cpp) |
| set(outfile_h ${CMAKE_CURRENT_BINARY_DIR}/${outfilename}.h) |
| |
| add_custom_command(OUTPUT ${outfile_cpp} ${outfile_h} |
| COMMAND ${Qt5Scxml_QSCXMLC_EXECUTABLE} |
| ARGS ${ARGS_OPTIONS} --output ${outfile} ${infile} |
| MAIN_DEPENDENCY ${infile} |
| VERBATIM) |
| list(APPEND ${outfiles} ${outfile_cpp}) |
| endforeach() |
| set_source_files_properties(${outfiles} PROPERTIES SKIP_AUTOMOC TRUE) |
| set(${outfiles} ${${outfiles}} PARENT_SCOPE) |
| endfunction() |
| |
| if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS) |
| function(qt_add_statecharts outfiles) |
| if(QT_DEFAULT_MAJOR_VERSION EQUAL 5) |
| qt5_add_statecharts("${outfiles}" ${ARGN}) |
| elseif(QT_DEFAULT_MAJOR_VERSION EQUAL 6) |
| qt6_add_statecharts("${outfiles}" ${ARGN}) |
| endif() |
| set("${outfiles}" "${${outfiles}}" PARENT_SCOPE) |
| endfunction() |
| endif() |