diff options
Diffstat (limited to 'src')
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" |