summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2021-02-17 17:34:35 +0100
committerDominik Holland <dominik.holland@qt.io>2021-05-10 17:28:11 +0200
commit8e3d637e7776638149119bd62f459178cbca2955 (patch)
tree077f7a597039a05555da2c2fe33c1535227dd35e /src
parenteac2590d4266e234f0f2ec4d261d940b14dd79bf (diff)
downloadqtivi-8e3d637e7776638149119bd62f459178cbca2955.tar.gz
cmake integration of the ivigenerator
Rerun pro2cmake.py for all examples and tests. Ivigenerator based tests and examples are compiling fine, but the cmake files need to be reworked to be also able to run them. Task-number: AUTOSUITE-1633 Change-Id: Icb95ecfa62ecb319d042dc30ea9f643b69a4aacf Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/imports/CMakeLists.gen.txt11
-rw-r--r--src/imports/CMakeLists.txt2
-rw-r--r--src/imports/vehiclefunctions/CMakeLists.txt36
-rw-r--r--src/ivicore/CMakeLists.txt3
-rw-r--r--src/ivicore/Qt6IviCoreConfigExtras.cmake.in3
-rw-r--r--src/ivicore/Qt6IviCoreMacros.cmake199
-rw-r--r--src/ivivehiclefunctions/CMakeLists.txt29
-rw-r--r--src/plugins/CMakeLists.txt2
-rw-r--r--src/plugins/ivivehiclefunctions/vehiclefunctions_qtro/CMakeLists.txt12
-rw-r--r--src/plugins/ivivehiclefunctions/vehiclefunctions_simulator/CMakeLists.txt12
-rw-r--r--src/tools/ivigenerator/templates/backend_qtro.yaml1
-rw-r--r--src/tools/ivigenerator/templates/backend_qtro/CMakeLists.txt.tpl19
-rw-r--r--src/tools/ivigenerator/templates/backend_simulator.yaml1
-rw-r--r--src/tools/ivigenerator/templates/backend_simulator/CMakeLists.txt.tpl13
-rw-r--r--src/tools/ivigenerator/templates/backend_simulator/plugin.pri.tpl4
-rw-r--r--src/tools/ivigenerator/templates/frontend.yaml1
-rw-r--r--src/tools/ivigenerator/templates/frontend/CMakeLists.txt.tpl14
-rw-r--r--src/tools/ivigenerator/templates/qmlplugin.yaml1
-rw-r--r--src/tools/ivigenerator/templates/qmlplugin/CMakeLists.txt.tpl33
-rw-r--r--src/tools/ivigenerator/templates/server_qtro.yaml1
-rw-r--r--src/tools/ivigenerator/templates/server_qtro/CMakeLists.txt.tpl13
-rw-r--r--src/tools/ivigenerator/templates/server_qtro_simulator.yaml1
-rw-r--r--src/tools/ivigenerator/templates/server_qtro_simulator/CMakeLists.txt.tpl23
-rw-r--r--src/tools/ivigenerator/templates/test.yaml1
-rw-r--r--src/tools/ivigenerator/templates/test/CMakeLists.txt.tpl7
-rw-r--r--src/tools/vehiclefunctions-simulation-server/CMakeLists.txt10
27 files changed, 430 insertions, 23 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 23fbafd..636fb71 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,7 @@
# Generated from src.pro.
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/ivicore/configure.cmake") # special case
+qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/ivivehiclefunctions/configure.cmake") # special case
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/ivimedia/configure.cmake") # special case
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/geniviextras/configure.cmake") # special case
diff --git a/src/imports/CMakeLists.gen.txt b/src/imports/CMakeLists.gen.txt
new file mode 100644
index 0000000..343d24d
--- /dev/null
+++ b/src/imports/CMakeLists.gen.txt
@@ -0,0 +1,11 @@
+# Generated from imports.pro.
+
+if(TARGET Qt::IviCore)
+ add_subdirectory(core)
+endif()
+if(TARGET Qt::IviMedia)
+ add_subdirectory(media)
+endif()
+if(TARGET Qt::IviVehicleFunctions)
+ add_subdirectory(vehiclefunctions)
+endif()
diff --git a/src/imports/CMakeLists.txt b/src/imports/CMakeLists.txt
index a3e937e..046b6ad 100644
--- a/src/imports/CMakeLists.txt
+++ b/src/imports/CMakeLists.txt
@@ -6,6 +6,6 @@ endif()
if(TARGET Qt::IviMedia)
add_subdirectory(media)
endif()
-if(TARGET ivivehiclefunctions)
+if(TARGET Qt::IviVehicleFunctions) # special case
add_subdirectory(vehiclefunctions)
endif()
diff --git a/src/imports/vehiclefunctions/CMakeLists.txt b/src/imports/vehiclefunctions/CMakeLists.txt
new file mode 100644
index 0000000..d5a7c70
--- /dev/null
+++ b/src/imports/vehiclefunctions/CMakeLists.txt
@@ -0,0 +1,36 @@
+# Generated from vehiclefunctions.pro.
+
+#####################################################################
+## vehiclefunctions Plugin:
+#####################################################################
+
+# IVI Generator:
+qt_ivigenerator(qtivivehiclefunctionsplugin
+ QFACE_SOURCES ../../ivivehiclefunctions/ivivehiclefunctions.qface
+ QFACE_FORMAT qmlplugin
+ QFACE_MODULE_NAME QtIviVehicleFunctions
+)
+
+# special case begin
+target_link_libraries(qtivivehiclefunctionsplugin PUBLIC
+ Qt::IviCore
+ Qt::IviVehicleFunctions
+)
+# special case end
+
+#### Keys ignored in scope 1:.:.:vehiclefunctions.pro:<TRUE>:
+# CXX_MODULE = "qml"
+# QML_IMPORT_VERSION = "1.0"
+# QT_FOR_CONFIG = "ivicore"
+# TARGETPATH = "$$replace(URI, \\., /)"
+# qml2build.files = "-$$_PRO_FILE_PWD_/qmldir" "-$$_PRO_FILE_PWD_/plugins.qmltypes"
+# qmldir2build.files = "-$$_PRO_FILE_PWD_/qmldir" "-$$_PRO_FILE_PWD_/plugins.qmltypes"
+
+## Scopes:
+#####################################################################
+
+#### Keys ignored in scope 3:.:.:vehiclefunctions.pro:NOT PWD___equals____ss_OUT_PWD:
+# qmldir.base = <EMPTY>
+# qmldir.files = "-$$_PRO_FILE_PWD_/qmldir"
+# qmlfiles.base = <EMPTY>
+# qmlfiles.files = "-$$_PRO_FILE_PWD_/qmldir"
diff --git a/src/ivicore/CMakeLists.txt b/src/ivicore/CMakeLists.txt
index 01e55f7..d6d7aed 100644
--- a/src/ivicore/CMakeLists.txt
+++ b/src/ivicore/CMakeLists.txt
@@ -39,6 +39,9 @@ qt_add_module(IviCore
PRIVATE_MODULE_INTERFACE
Qt::CorePrivate
Qt::QmlPrivate
+ EXTRA_CMAKE_FILES
+ Qt6IviCoreConfigExtras.cmake.in
+ Qt6IviCoreMacros.cmake
)
#### Keys ignored in scope 1:.:.:ivicore.pro:<TRUE>:
diff --git a/src/ivicore/Qt6IviCoreConfigExtras.cmake.in b/src/ivicore/Qt6IviCoreConfigExtras.cmake.in
new file mode 100644
index 0000000..057a591
--- /dev/null
+++ b/src/ivicore/Qt6IviCoreConfigExtras.cmake.in
@@ -0,0 +1,3 @@
+
+# install layout information, following what qmake -query provides
+get_filename_component(QTIVI_INSTALL_PREFIX ${CMAKE_CURRENT_LIST_DIR}/../../../ ABSOLUTE)
diff --git a/src/ivicore/Qt6IviCoreMacros.cmake b/src/ivicore/Qt6IviCoreMacros.cmake
new file mode 100644
index 0000000..5101501
--- /dev/null
+++ b/src/ivicore/Qt6IviCoreMacros.cmake
@@ -0,0 +1,199 @@
+function(qt6_ivigenerator target)
+ qt6_ivigenerator_generate(${ARGN})
+ qt6_ivigenerator_include(${target} ${ARGN})
+endfunction()
+
+if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
+ function(qt_ivigenerator)
+ qt6_ivigenerator(${ARGV})
+ endfunction()
+endif()
+
+macro(internal_resolve_ivigenerator_path)
+ if (DEFINED QtIvi_BINARY_DIR AND (NOT DEFINED QT_BUILD_STANDALONE_TESTS))
+ set (VIRTUALENV ${QtIvi_BINARY_DIR}/src/tools/ivigenerator/qtivi_qface_virtualenv)
+ set (GENERATOR_PATH ${QtIvi_SOURCE_DIR}/src/tools/ivigenerator)
+ set (IVIGENERATOR_CONFIG ${QtIvi_BINARY_DIR}/src/tools/ivigenerator/.config)
+ else()
+ set (GENERATOR_PATH ${QTIVI_INSTALL_PREFIX}/${QT6_INSTALL_BINS}/ivigenerator)
+ set (VIRTUALENV ${GENERATOR_PATH}/qtivi_qface_virtualenv)
+ endif()
+endmacro()
+
+function(qt6_ivigenerator_generate)
+ internal_resolve_ivigenerator_path()
+
+ if (NOT EXISTS ${VIRTUALENV}/bin/activate AND NOT EXISTS ${VIRTUALENV}/Scripts/activate.bat)
+ return()
+ endif()
+
+ cmake_parse_arguments(
+ PARSE_ARGV 0
+ ARG
+ "" "QFACE_FORMAT;QFACE_OUTPUT_DIR;QFACE_SOURCES;QFACE_HEADERS_OUTPUT_DIR" "QFACE_ANNOTATIONS;QFACE_IMPORT_PATH"
+ )
+
+ if (DEFINED ARG_KEYWORDS_MISSING_VALUES)
+ message(FATAL_ERROR "Keywords can't be empty: ${ARG_KEYWORDS_MISSING_VALUES}")
+ endif()
+
+ if (NOT DEFINED ARG_QFACE_FORMAT)
+ set(ARG_QFACE_FORMAT frontend)
+ endif()
+ set(QFACE_OUTPUT_DIR ${ARG_QFACE_OUTPUT_DIR})
+ if (NOT DEFINED ARG_QFACE_OUTPUT_DIR)
+ set(QFACE_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+ endif()
+ if (NOT DEFINED ARG_QFACE_SOURCES)
+ message(FATAL_ERROR "QFACE_SOURCES can't be empty")
+ endif()
+ get_filename_component(QFACE_SOURCES "${ARG_QFACE_SOURCES}" REALPATH BASE_DIR)
+ get_filename_component(QFACE_SOURCE_DIR "${ARG_QFACE_SOURCES}" DIRECTORY)
+ get_filename_component(QFACE_BASE_NAME "${ARG_QFACE_SOURCES}" NAME_WLE)
+ get_filename_component(QFACE_SOURCE_ANNOTATION ${QFACE_SOURCE_DIR}/${QFACE_BASE_NAME}.yaml REALPATH BASE_DIR)
+
+ set(QFACE_TEMPLATE_PWD "${GENERATOR_PATH}/templates/${ARG_QFACE_FORMAT}")
+ if(EXISTS ${QFACE_TEMPLATE_PWD})
+ set(FORMAT_PATH ${QFACE_TEMPLATE_PWD})
+ set(QFACE_FORMAT ${ARG_QFACE_FORMAT})
+ else()
+ get_filename_component(FORMAT_PATH "${ARG_QFACE_FORMAT}" REALPATH)
+ if(EXISTS ${FORMAT_PATH})
+ set(QFACE_FORMAT ${FORMAT_PATH})
+ endif()
+ endif()
+ if (NOT DEFINED QFACE_FORMAT)
+ message(FATAL_ERROR "Invalid QFACE_FORMAT: Couldn't find the template folder: ${FORMAT_PATH}")
+ endif()
+
+ # Register all source files to cause a cmake rerun
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${QFACE_SOURCES})
+ if (EXISTS ${QFACE_SOURCE_ANNOTATION})
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${QFACE_SOURCE_ANNOTATION})
+ endif()
+ # Also register all files which are part of the current template
+ file(GLOB FORMAT_FILES ${FORMAT_PATH}/*)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${FORMAT_FILES})
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${FORMAT_PATH}.yaml)
+ # Most templates also have a dependency to a common folder
+ file(GLOB COMMON_FORMAT_FILES ${GENERATOR_PATH}/templates/*common*/*)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${COMMON_FORMAT_FILES})
+
+ set(GENERATOR_ARGUMENTS --format=${QFACE_FORMAT} --force)
+ foreach(ANNOTATION ${ARG_QFACE_ANNOTATIONS})
+ get_filename_component(ANNOTATION_PATH "${ANNOTATION}" REALPATH BASE_DIR)
+ list(APPEND GENERATOR_ARGUMENTS -A ${ANNOTATION_PATH})
+ # Dependency for regeneration
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${ANNOTATION_PATH})
+ endforeach()
+
+ foreach(IMPORT ${ARG_QFACE_IMPORT_PATH})
+ get_filename_component(IMPORT_PATH "${IMPORT}" REALPATH BASE_DIR)
+ list(APPEND GENERATOR_ARGUMENTS -I ${IMPORT_PATH})
+ # Dependency for regeneration
+ file(GLOB QFACE_FILES ${IMPORT_PATH}/*.qface)
+ set_property(DIRECTORY APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS ${QFACE_FILES})
+ endforeach()
+
+ # If the generator was run successfully before
+ # Check for the timestamps to determine when to run it again.
+ # TODO, this needs to be extended to also include template and yaml changes
+ if (${QFACE_SOURCES} IS_NEWER_THAN ${QFACE_OUTPUT_DIR}/.stamp-ivigenerator)
+ # TODO How to best unset those again afterwards ?
+ # Use cmake -E slee + cmake -E env COMMAND instead ?
+ #equals(QMAKE_HOST.os, Windows): ENV = chcp 65001 &&
+ if ("${CMAKE_HOST_SYSTEM_NAME}" STREQUAL "Windows")
+ set(PYTHON_EXECUTABLE ${VIRTUALENV}/Scripts/python.exe)
+ file(TO_NATIVE_PATH "${VIRTUALENV}" VIRTUALENV)
+ else()
+ set(PYTHON_EXECUTABLE ${VIRTUALENV}/bin/python)
+ set(ENV{LC_ALL} en_US.UTF-8)
+ set(ENV{LD_LIBRARY_PATH} ${VIRTUALENV}/bin)
+ endif()
+ if (DEFINED IVIGENERATOR_CONFIG)
+ set(ENV{IVIGENERATOR_CONFIG} ${IVIGENERATOR_CONFIG})
+ endif()
+ set(ENV{PYTHONHOME} ${VIRTUALENV})
+ set(ENV{VIRTUAL_ENV} ${VIRTUALENV})
+
+ message(STATUS "Running ivigenerator for ${QFACE_SOURCES}")
+ execute_process(
+ COMMAND ${PYTHON_EXECUTABLE}
+ ${GENERATOR_PATH}/generate.py
+ ${GENERATOR_ARGUMENTS}
+ ${QFACE_SOURCES}
+ ${QFACE_OUTPUT_DIR}
+ RESULT_VARIABLE RET_CODE
+ OUTPUT_VARIABLE GENERATOR_LOG
+ ERROR_VARIABLE GENERATOR_LOG
+ COMMAND_ECHO STDOUT
+ )
+ message("${GENERATOR_LOG}")
+
+ # Touch the stamp file if the generator run was successful
+ if("${RET_CODE}" EQUAL "0")
+ execute_process(COMMAND ${CMAKE_COMMAND} -E touch ${QFACE_OUTPUT_DIR}/.stamp-ivigenerator)
+ else()
+ message(FATAL_ERROR "Error while running the ivigenerator")
+ endif()
+ endif()
+
+ # hack for the developer-build to have all headers where the Qt build expects them
+ if (DEFINED ARG_QFACE_HEADERS_OUTPUT_DIR)
+ file(GLOB HEADER_FILES ${QFACE_OUTPUT_DIR}/*.h)
+ file(COPY ${HEADER_FILES} DESTINATION ${ARG_QFACE_HEADERS_OUTPUT_DIR})
+ endif()
+
+endfunction()
+
+if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
+ function(qt_ivigenerator_generate)
+ qt6_ivigenerator_generate(${ARGV})
+ endfunction()
+endif()
+
+function(qt6_ivigenerator_include target)
+ internal_resolve_ivigenerator_path()
+
+ if (NOT EXISTS ${VIRTUALENV}/bin/activate AND NOT EXISTS ${VIRTUALENV}/Scripts/activate.bat)
+ # Create a dummy target instead
+ if (NOT TARGET ${target} AND NOT TEST ${target})
+ if (DEFINED QtIvi_BINARY_DIR)
+ file(TOUCH ${CMAKE_CURRENT_BINARY_DIR}/cmake_dummy.cpp)
+ add_library(${target} ${CMAKE_CURRENT_BINARY_DIR}/cmake_dummy.cpp)
+ else()
+ message(FATAL_ERROR "No virtualenv environment to run the ivigenerator")
+ endif()
+ endif()
+ return()
+ endif()
+
+ cmake_parse_arguments(
+ PARSE_ARGV 1
+ ARG
+ "" "QFACE_SOURCES;QFACE_OUTPUT_DIR" ""
+ )
+
+ if (DEFINED ARG_KEYWORDS_MISSING_VALUES)
+ message(FATAL_ERROR "Keywords can't be empty: ${ARG_KEYWORDS_MISSING_VALUES}")
+ endif()
+
+ set(QFACE_OUTPUT_DIR ${ARG_QFACE_OUTPUT_DIR})
+ if (NOT DEFINED ARG_QFACE_OUTPUT_DIR)
+ set(QFACE_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
+ endif()
+ if (NOT DEFINED ARG_QFACE_SOURCES)
+ message(FATAL_ERROR "QFACE_SOURCES can't be empty")
+ endif()
+ get_filename_component(QFACE_SOURCES "${ARG_QFACE_SOURCES}" REALPATH BASE_DIR)
+ get_filename_component(QFACE_BASE_NAME "${ARG_QFACE_SOURCES}" NAME_WLE)
+
+ set(CURRENT_TARGET "${target}")
+ include(${QFACE_OUTPUT_DIR}/${QFACE_BASE_NAME}.cmake)
+endfunction()
+
+if(NOT QT_NO_CREATE_VERSIONLESS_FUNCTIONS)
+ function(qt_ivigenerator_include)
+ qt6_ivigenerator_include(${ARGV})
+ endfunction()
+endif()
diff --git a/src/ivivehiclefunctions/CMakeLists.txt b/src/ivivehiclefunctions/CMakeLists.txt
index 6ab20cc..4541cb1 100644
--- a/src/ivivehiclefunctions/CMakeLists.txt
+++ b/src/ivivehiclefunctions/CMakeLists.txt
@@ -1,22 +1,39 @@
# Generated from ivivehiclefunctions.pro.
+# special case begin
#####################################################################
-## QtIviVehicleFunctions Binary:
+## IviVehicleFunctions Module:
#####################################################################
-qt_add_executable(QtIviVehicleFunctions
- GUI
- PUBLIC_LIBRARIES
+qt_ivigenerator_generate(
+ QFACE_SOURCES ivivehiclefunctions.qface
+ QFACE_FORMAT frontend
+ QFACE_MODULE_NAME QtIviVehicleFunctions
+ QFACE_HEADERS_OUTPUT_DIR ${QT_BUILD_DIR}/src/ivivehiclefunctions
+)
+make_directory(${QT_BUILD_DIR}/src/ivivehiclefunctions)
+
+qt_add_module(IviVehicleFunctions
+ LIBRARIES
Qt::CorePrivate
+ Qt::IviCorePrivate
+ PUBLIC_LIBRARIES
+ Qt::Core
Qt::IviCore
+ PRIVATE_MODULE_INTERFACE
+ Qt::CorePrivate
Qt::IviCorePrivate
)
+qt_ivigenerator_include(IviVehicleFunctions
+ QFACE_SOURCES ivivehiclefunctions.qface
+)
+
+# special case end
+
#### Keys ignored in scope 1:.:.:ivivehiclefunctions.pro:<TRUE>:
# CMAKE_MODULE_TESTS = "'-'"
# OTHER_FILES = "$$PWD/doc/*.qdocconf" "$$PWD/doc/src/*.qdoc" "$$PWD/doc/snippets/*" "$$PWD/doc/images/*"
-# QFACE_MODULE_NAME = "QtIviVehicleFunctions"
-# QFACE_SOURCES = "ivivehiclefunctions.qface"
# QT_FOR_CONFIG = "ivicore"
## Scopes:
diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
index f2dbb2d..810c302 100644
--- a/src/plugins/CMakeLists.txt
+++ b/src/plugins/CMakeLists.txt
@@ -3,6 +3,6 @@
if(TARGET Qt::IviMedia)
add_subdirectory(ivimedia)
endif()
-if(TARGET ivivehiclefunctions)
+if(TARGET Qt::IviVehicleFunctions)
add_subdirectory(ivivehiclefunctions)
endif()
diff --git a/src/plugins/ivivehiclefunctions/vehiclefunctions_qtro/CMakeLists.txt b/src/plugins/ivivehiclefunctions/vehiclefunctions_qtro/CMakeLists.txt
index c97f629..71a3091 100644
--- a/src/plugins/ivivehiclefunctions/vehiclefunctions_qtro/CMakeLists.txt
+++ b/src/plugins/ivivehiclefunctions/vehiclefunctions_qtro/CMakeLists.txt
@@ -10,12 +10,16 @@ qt_internal_add_plugin(QtIviVehicleFunctionsQtROPlugin
PUBLIC_LIBRARIES
Qt::Core
Qt::IviCore
- ivivehiclefunctions
+ Qt::IviVehicleFunctions
+)
+
+# IVI Generator:
+qt_ivigenerator(QtIviVehicleFunctionsQtROPlugin
+ QFACE_SOURCES ../../../ivivehiclefunctions/ivivehiclefunctions.qface
+ QFACE_FORMAT backend_qtro
+ QFACE_MODULE_NAME QtIviVehicleFunctions
)
#### Keys ignored in scope 1:.:.:vehiclefunctions_qtro.pro:<TRUE>:
# CMAKE_MODULE_TESTS = "'-'"
# PLUGIN_EXTENDS = "ivivehiclefunctions"
-# QFACE_FORMAT = "backend_qtro"
-# QFACE_MODULE_NAME = "QtIviVehicleFunctions"
-# QFACE_SOURCES = "../../../ivivehiclefunctions/ivivehiclefunctions.qface"
diff --git a/src/plugins/ivivehiclefunctions/vehiclefunctions_simulator/CMakeLists.txt b/src/plugins/ivivehiclefunctions/vehiclefunctions_simulator/CMakeLists.txt
index 71ab87d..58c98a0 100644
--- a/src/plugins/ivivehiclefunctions/vehiclefunctions_simulator/CMakeLists.txt
+++ b/src/plugins/ivivehiclefunctions/vehiclefunctions_simulator/CMakeLists.txt
@@ -10,7 +10,7 @@ qt_internal_add_plugin(QtIviVehicleFunctionsSimulatorPlugin
PUBLIC_LIBRARIES
Qt::Core
Qt::IviCore
- ivivehiclefunctions
+ Qt::IviVehicleFunctions
)
# Resources:
@@ -27,10 +27,14 @@ qt_internal_add_resource(QtIviVehicleFunctionsSimulatorPlugin "qml"
)
+# IVI Generator:
+qt_ivigenerator(QtIviVehicleFunctionsSimulatorPlugin
+ QFACE_SOURCES ../../../ivivehiclefunctions/ivivehiclefunctions.qface
+ QFACE_FORMAT backend_simulator
+ QFACE_MODULE_NAME QtIviVehicleFunctions
+)
+
#### Keys ignored in scope 1:.:.:vehiclefunctions_simulator.pro:<TRUE>:
# CMAKE_MODULE_TESTS = "'-'"
# PLUGIN_EXTENDS = "ivivehiclefunctions"
-# QFACE_FORMAT = "backend_simulator"
-# QFACE_MODULE_NAME = "QtIviVehicleFunctions"
-# QFACE_SOURCES = "../../../ivivehiclefunctions/ivivehiclefunctions.qface"
# QML_IMPORT_PATH = "$$OUT_PWD/qml"
diff --git a/src/tools/ivigenerator/templates/backend_qtro.yaml b/src/tools/ivigenerator/templates/backend_qtro.yaml
index 795d781..0d0fbff 100644
--- a/src/tools/ivigenerator/templates/backend_qtro.yaml
+++ b/src/tools/ivigenerator/templates/backend_qtro.yaml
@@ -5,6 +5,7 @@ backend_qtro:
- "{{module.module_name|lower}}qtroplugin.cpp": "plugin.cpp.tpl"
- "{{module.module_name|lower}}.json": "plugin.json"
- "{{srcBase|lower}}.pri": "plugin.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
interface:
documents:
- '{{interface|lower}}backend.h': 'backend.h.tpl'
diff --git a/src/tools/ivigenerator/templates/backend_qtro/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/backend_qtro/CMakeLists.txt.tpl
new file mode 100644
index 0000000..f72276c
--- /dev/null
+++ b/src/tools/ivigenerator/templates/backend_qtro/CMakeLists.txt.tpl
@@ -0,0 +1,19 @@
+find_package(Qt6 COMPONENTS RemoteObjects IviRemoteObjectsHelper)
+
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+{% for interface in module.interfaces %}
+ {{interface|lower}}backend.cpp
+{% endfor %}
+ {{module.module_name|lower}}qtroplugin.cpp
+)
+
+qt_add_repc_replica(${CURRENT_TARGET}
+{% for interface in module.interfaces %}
+ {{interface|lower}}.rep
+{% endfor %}
+)
+
+### MISSING
+# OTHER_FILES += \
+# $$PWD/{{module.module_name|lower}}.json
diff --git a/src/tools/ivigenerator/templates/backend_simulator.yaml b/src/tools/ivigenerator/templates/backend_simulator.yaml
index bf8dad7..e1a75d2 100644
--- a/src/tools/ivigenerator/templates/backend_simulator.yaml
+++ b/src/tools/ivigenerator/templates/backend_simulator.yaml
@@ -8,6 +8,7 @@ backend_simulator:
- "{{module.module_name|lower}}_simulation_data.json": "common/simulation_data.json.tpl"
- "{{module.module_name|lower}}_simulation.qrc": "common/simulation.qrc.tpl"
- "{{srcBase|lower}}.pri": "plugin.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
- "qml/{{module|qml_type|replace('.', '/')}}/simulation/plugins.qmltypes": "common/simulation.qmltypes.tpl"
- "qml/{{module|qml_type|replace('.', '/')}}/simulation/qmldir": "common/qmldir.tpl"
- "qml/{{module|qml_type|replace('.', '/')}}/plugins.qmltypes": "common/plugins.qmltypes.tpl"
diff --git a/src/tools/ivigenerator/templates/backend_simulator/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/backend_simulator/CMakeLists.txt.tpl
new file mode 100644
index 0000000..843a3f4
--- /dev/null
+++ b/src/tools/ivigenerator/templates/backend_simulator/CMakeLists.txt.tpl
@@ -0,0 +1,13 @@
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+{% for interface in module.interfaces %}
+ {{interface|lower}}backend.cpp
+{% endfor %}
+ {{module.module_name|lower}}simulatorplugin.cpp
+ {{module.module_name|lower}}_simulation.qrc
+)
+
+### MISSING
+# OTHER_FILES += \
+# $$PWD/{{module.module_name|lower}}.json \
+# $$PWD/{{module.module_name|lower}}_simulation_data.json
diff --git a/src/tools/ivigenerator/templates/backend_simulator/plugin.pri.tpl b/src/tools/ivigenerator/templates/backend_simulator/plugin.pri.tpl
index 84dbe37..62a76b2 100644
--- a/src/tools/ivigenerator/templates/backend_simulator/plugin.pri.tpl
+++ b/src/tools/ivigenerator/templates/backend_simulator/plugin.pri.tpl
@@ -42,10 +42,6 @@
## Do not edit! All changes made to it will be lost.
#############################################################################
-{% if 'simulator' in features %}
-QT += simulator
-{% endif %}
-
HEADERS += \
{% for interface in module.interfaces %}
$$PWD/{{interface|lower}}backend.h \
diff --git a/src/tools/ivigenerator/templates/frontend.yaml b/src/tools/ivigenerator/templates/frontend.yaml
index 7aec967..7323d32 100644
--- a/src/tools/ivigenerator/templates/frontend.yaml
+++ b/src/tools/ivigenerator/templates/frontend.yaml
@@ -8,6 +8,7 @@ frontend:
- '{{module.module_name|lower}}modulefactory.h': 'modulefactory.h.tpl'
- '{{module.module_name|lower}}modulefactory.cpp': 'modulefactory.cpp.tpl'
- '{{srcBase|lower}}.pri': 'module.pri.tpl'
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
- 'qml/{{module|qml_type|replace(".", "/")}}/plugins.qmltypes': 'common/plugins.qmltypes.tpl'
- "qml/{{module|qml_type|replace('.', '/')}}/designer/{{module.module_name|lower}}.metainfo": "common/designer.metainfo.tpl"
- 'qml/{{module|qml_type|replace(".", "/")}}/qmldir': 'common/qmldir.tpl'
diff --git a/src/tools/ivigenerator/templates/frontend/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/frontend/CMakeLists.txt.tpl
new file mode 100644
index 0000000..4f39367
--- /dev/null
+++ b/src/tools/ivigenerator/templates/frontend/CMakeLists.txt.tpl
@@ -0,0 +1,14 @@
+target_compile_definitions(${CURRENT_TARGET} PRIVATE QT_BUILD_{{module|upper|replace('.', '_')|strip_QT}}_LIB)
+
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+{% for interface in module.interfaces %}
+ {{interface|lower}}.cpp
+ {{interface|lower}}backendinterface.cpp
+{% endfor %}
+{% for struct in module.structs %}
+ {{struct|lower}}.cpp
+{% endfor %}
+ {{module.module_name|lower}}module.cpp
+ {{module.module_name|lower}}modulefactory.cpp
+)
diff --git a/src/tools/ivigenerator/templates/qmlplugin.yaml b/src/tools/ivigenerator/templates/qmlplugin.yaml
index 368b4c1..e64398c 100644
--- a/src/tools/ivigenerator/templates/qmlplugin.yaml
+++ b/src/tools/ivigenerator/templates/qmlplugin.yaml
@@ -3,6 +3,7 @@ qmlplugin:
documents:
- "plugin.cpp": "plugin.cpp.tpl"
- "{{srcBase|lower}}.pri": "module.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
- "plugins.qmltypes": "common/plugins.qmltypes.tpl"
- "designer/{{module.module_name|lower}}.metainfo": "common/designer.metainfo.tpl"
- "qmldir": "qmldir_plugin.tpl"
diff --git a/src/tools/ivigenerator/templates/qmlplugin/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/qmlplugin/CMakeLists.txt.tpl
new file mode 100644
index 0000000..435b92a
--- /dev/null
+++ b/src/tools/ivigenerator/templates/qmlplugin/CMakeLists.txt.tpl
@@ -0,0 +1,33 @@
+# TODO We probably dont' need this template at all in the cmake case
+# Keep it until the templates have been adapted and everything can be done without autogenerating
+
+if (NOT TARGET ${CURRENT_TARGET})
+ qt_add_qml_module(${CURRENT_TARGET}
+ URI "{{module|qml_type}}"
+ VERSION "{{module.majorVersion}}.{{module.minorVersion}}"
+ SKIP_TYPE_REGISTRATION
+ # TODO remove this again
+ # This is needed to make the test build work as it would create duplicate qmldir entries
+ # in the global qml folder
+ OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ PUBLIC_LIBRARIES
+ Qt::IviCore
+ SOURCES
+ plugin.cpp
+ )
+else()
+ target_sources(${CURRENT_TARGET}
+ PRIVATE
+ plugin.cpp
+ )
+endif()
+
+#set_target_properties(${CURRENT_TARGET} PROPERTIES
+# QT_QML_MODULE_VERSION {{module.majorVersion}}.{{module.minorVersion}}
+# QT_QML_MODULE_URI {{module|qml_type}}
+# QT_QMLTYPES_FILENAME plugins.qmltypes
+#)
+
+### MISSING
+# AUX_QML_FILES += $$PWD/qmldir \
+# $$PWD/designer/{{module.module_name|lower}}.metainfo
diff --git a/src/tools/ivigenerator/templates/server_qtro.yaml b/src/tools/ivigenerator/templates/server_qtro.yaml
index 0c8024e..f397468 100644
--- a/src/tools/ivigenerator/templates/server_qtro.yaml
+++ b/src/tools/ivigenerator/templates/server_qtro.yaml
@@ -4,6 +4,7 @@ server_qtro:
- "core.cpp": "core.cpp.tpl"
- "core.h": "core.h.tpl"
- "{{srcBase|lower}}.pri": "server.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
interface:
documents:
- "{{interface|lower}}.rep": "common/interface.rep.tpl"
diff --git a/src/tools/ivigenerator/templates/server_qtro/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/server_qtro/CMakeLists.txt.tpl
new file mode 100644
index 0000000..963d7aa
--- /dev/null
+++ b/src/tools/ivigenerator/templates/server_qtro/CMakeLists.txt.tpl
@@ -0,0 +1,13 @@
+find_package(Qt6 COMPONENTS RemoteObjects)
+
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+ core.cpp
+)
+
+qt_add_repc_source(${CURRENT_TARGET}
+{% for interface in module.interfaces %}
+ {{interface|lower}}.rep
+{% endfor %}
+)
+
diff --git a/src/tools/ivigenerator/templates/server_qtro_simulator.yaml b/src/tools/ivigenerator/templates/server_qtro_simulator.yaml
index 5563460..5a8dabe 100644
--- a/src/tools/ivigenerator/templates/server_qtro_simulator.yaml
+++ b/src/tools/ivigenerator/templates/server_qtro_simulator.yaml
@@ -4,6 +4,7 @@ server_qtro_simulator:
- "core.cpp": "core.cpp.tpl"
- "core.h": "core.h.tpl"
- "{{srcBase|lower}}.pri": "server.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
- "main.cpp": "main.cpp.tpl"
- "{{module.module_name|lower}}_simulation.qml": "common/module_simulation.qml.tpl"
- "{{module.module_name|lower}}_simulation_data.json": "common/simulation_data.json.tpl"
diff --git a/src/tools/ivigenerator/templates/server_qtro_simulator/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/server_qtro_simulator/CMakeLists.txt.tpl
new file mode 100644
index 0000000..7398ad1
--- /dev/null
+++ b/src/tools/ivigenerator/templates/server_qtro_simulator/CMakeLists.txt.tpl
@@ -0,0 +1,23 @@
+find_package(Qt6 COMPONENTS RemoteObjects IviRemoteObjectsHelper)
+
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+{% for interface in module.interfaces %}
+ {{interface|lower}}backend.cpp
+ {{interface|lower}}adapter.cpp
+{% endfor %}
+ core.cpp
+ main.cpp
+ {{module.module_name|lower}}_simulation.qrc
+)
+
+qt_add_repc_source(${CURRENT_TARGET}
+{% for interface in module.interfaces %}
+ {{interface|lower}}.rep
+{% endfor %}
+)
+
+### MISSING
+# OTHER_FILES += \
+# $$PWD/{{module.module_name|lower}}.json \
+# $$PWD/{{module.module_name|lower}}_simulation_data.json
diff --git a/src/tools/ivigenerator/templates/test.yaml b/src/tools/ivigenerator/templates/test.yaml
index fbd2801..70bec2d 100644
--- a/src/tools/ivigenerator/templates/test.yaml
+++ b/src/tools/ivigenerator/templates/test.yaml
@@ -2,6 +2,7 @@ test:
module:
documents:
- "{{srcBase|lower}}.pri": "module.pri.tpl"
+ - '{{srcBase|lower}}.cmake': 'CMakeLists.txt.tpl'
- 'main.cpp': 'main.cpp.tpl'
interface:
documents:
diff --git a/src/tools/ivigenerator/templates/test/CMakeLists.txt.tpl b/src/tools/ivigenerator/templates/test/CMakeLists.txt.tpl
new file mode 100644
index 0000000..4348529
--- /dev/null
+++ b/src/tools/ivigenerator/templates/test/CMakeLists.txt.tpl
@@ -0,0 +1,7 @@
+target_sources(${CURRENT_TARGET}
+ PRIVATE
+{% for interface in module.interfaces %}
+ tst_{{interface|lower}}.cpp
+{% endfor %}
+ main.cpp
+)
diff --git a/src/tools/vehiclefunctions-simulation-server/CMakeLists.txt b/src/tools/vehiclefunctions-simulation-server/CMakeLists.txt
index 54cd9f5..549def5 100644
--- a/src/tools/vehiclefunctions-simulation-server/CMakeLists.txt
+++ b/src/tools/vehiclefunctions-simulation-server/CMakeLists.txt
@@ -34,10 +34,14 @@ qt_add_resource(${target_name} "qml"
)
+# IVI Generator:
+qt_ivigenerator(ivivehiclefunctions-simulation-server
+ QFACE_SOURCES ../../ivivehiclefunctions/ivivehiclefunctions.qface
+ QFACE_FORMAT server_qtro_simulator
+ QFACE_MODULE_NAME QtIviVehicleFunctions
+)
+
#### Keys ignored in scope 1:.:.:vehiclefunctions-simulation-server.pro:<TRUE>:
-# QFACE_FORMAT = "server_qtro_simulator"
-# QFACE_MODULE_NAME = "QtIviVehicleFunctions"
-# QFACE_SOURCES = "../../ivivehiclefunctions/ivivehiclefunctions.qface"
# QML_IMPORT_PATH = "$$OUT_PWD/qml"
# QT_FOR_CONFIG = "ivicore"
# TEMPLATE = "app"