diff --git a/coin/axivion/ci_config_linux.json b/coin/axivion/ci_config_linux.json index 1999760450a..104172719d5 100644 --- a/coin/axivion/ci_config_linux.json +++ b/coin/axivion/ci_config_linux.json @@ -2,33 +2,18 @@ "Project": { "BuildSystemIntegration": { "child_order": [ - "GCCSetup", - "CMake", "LinkLibraries" ] }, - "CMake": { - "_active": true, - "_copy_from": "CMakeIntegration", - "build_environment": {}, - "build_options": "-j4", - "generate_options": "--fresh", - "generator": "Ninja" - }, - "GCCSetup": { - "_active": true, - "_copy_from": "Command", - "build_command": "gccsetup --cc gcc --cxx g++ --config ../../../axivion/" - }, "LinkLibraries": { "_active": true, "_copy_from": "AxivionLinker", "input_files": [ - "build/lib/lib*.so*.ir" + "$(splitpath:TARGET_NAME)" ], - "ir": "build/$(env:TESTED_MODULE_COIN).ir", + "ir": "$(env:IRNAME)", "plugin_files": [ - "build/plugins/*/lib*.so*.ir" + "$(splitpath:PLUGINS)" ] } }, diff --git a/coin/axivion/start_analysis.sh b/coin/axivion/start_analysis.sh new file mode 100755 index 00000000000..57f1c4c5e86 --- /dev/null +++ b/coin/axivion/start_analysis.sh @@ -0,0 +1,84 @@ +#!/bin/bash +# Copyright (C) 2024 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +$HOME/bauhaus-suite/setup.sh --non-interactive +export PATH=/home/qt/bauhaus-suite/bin:$PATH +export BAUHAUS_CONFIG=$(cd $(dirname $(readlink -f $0)) && pwd) +export AXIVION_VERSION_NAME=$(git rev-parse HEAD) +export CAFECC_BASEPATH="/home/qt/work/qt/$TESTED_MODULE_COIN" +gccsetup --cc gcc --cxx g++ --config "$BAUHAUS_CONFIG" +cd "$CAFECC_BASEPATH" +BAUHAUS_IR_COMPRESSION=none COMPILE_ONLY=1 cmake -G Ninja -DAXIVION_ANALYSIS_TOOLCHAIN_FILE=/home/qt/bauhaus-suite/profiles/cmake/axivion-launcher-toolchain.cmake -DCMAKE_PREFIX_PATH=/home/qt/work/qt/qtbase/build -DCMAKE_PROJECT_INCLUDE_BEFORE=/home/qt/bauhaus-suite/profiles/cmake/axivion-before-project-hook.cmake -B build -S . --fresh +cmake --build build -j4 +for MODULE in qtconcurrent qtcore qtdbus qtgui qtnetwork qtopengl qtopenglwidgets qtsql qttest qtwidgets qtprintsupport qtxml; do + export MODULE + export PLUGINS="" + export IRNAME=build/$MODULE.ir + if [ "$MODULE" == "qtconcurrent" ] + then + export TARGET_NAME="build/lib/libQt6Concurrent.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/testlib/*:src/corelib/*" + export PACKAGE="Add-ons" + elif [ "$MODULE" == "qtcore" ] + then + export TARGET_NAME="build/lib/libQt6Core.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/testlib/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtdbus" ] + then + export TARGET_NAME="build/lib/libQt6DBus.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/testlib/*:src/corelib/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtgui" ] + then + export TARGET_NAME="build/lib/libQt6Gui.so.*.ir" + export PLUGINS="build/plugins/platforms/*.so.ir:build/plugins/platforminputcontexts/*.so.ir:build/plugins/platformthemes/*.so.ir:build/plugins/imageformats/*.so.ir:build/plugins/generic/*.so.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/testlib/*:src/corelib/*:src/dbus/*:src/opengl/*:src/network/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtnetwork" ] + then + export TARGET_NAME="build/lib/libQt6Network.so.*.ir" + export PLUGINS="build/plugins/networkinformation/*.so.ir:build/plugins/tracing/*.so.ir:build/plugins/tls/*.so.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/testlib/*:src/corelib/*:src/dbus/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtopengl" ] + then + export TARGET_NAME="build/lib/libQt6OpenGL.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/gui/*:src/dbus/*:src/opengl/qopenglfunctions_*" + export PACKAGE="Add-ons" + elif [ "$MODULE" == "qtopenglwidgets" ] + then + export TARGET_NAME="build/lib/libQt6OpenGLWidgets.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/gui/*:src/dbus/*:src/opengl/qopenglfunctions_*" + export PACKAGE="Add-ons" + elif [ "$MODULE" == "qtsql" ] + then + export TARGET_NAME="build/lib/libQt6Sql.so.*.ir" + export PLUGINS="build/plugins/sqldrivers/*.so.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/gui/*:src/testlib/*" + export PACKAGE="Add-ons" + elif [ "$MODULE" == "qttest" ] + then + export TARGET_NAME="build/lib/libQt6Test.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/gui/*:src/widgets/*:src/testlib/3rdparty/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtwidgets" ] + then + export TARGET_NAME="build/lib/libQt6Widgets.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/dbus/*:src/gui/*:src/testlib/*" + export PACKAGE="Essentials" + elif [ "$MODULE" == "qtprintsupport" ] + then + export TARGET_NAME="build/lib/libQt6PrintSupport.so.*.ir" + export PLUGINS="build/plugins/printsupport/*.so.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/gui/*:src/widgets/*:src/testlib/*:src/dbus/*" + export PACKAGE="Add-ons" + elif [ "$MODULE" == "qtxml" ] + then + export TARGET_NAME="build/lib/libQt6Xml.so.*.ir" + export EXCLUDE_FILES="build/*:src/3rdparty/*:src/corelib/*:src/testlib/*" + export PACKAGE="Add-ons" + fi + axivion_ci "$@" +done diff --git a/coin/instructions/coin_module_axivion_template_v2.yaml b/coin/instructions/coin_module_axivion_template_v2.yaml index 87d32f5d37d..90d57de281c 100644 --- a/coin/instructions/coin_module_axivion_template_v2.yaml +++ b/coin/instructions/coin_module_axivion_template_v2.yaml @@ -6,6 +6,9 @@ analysis_instructions_axivion: &analysis_instructions_axivion - type: EnvironmentVariable variableName: AXIVION_CHAINLOAD_TOOLCHAIN_FILE variableValue: "{{.AgentWorkingDir}}/install/lib/cmake/Qt6/qt.toolchain.cmake" + - type: EnvironmentVariable + variableName: AXIVION_DIVIDED_MODULES + variableValue: "qtbase_qtdeclarative_qtconnectivity_qtgrpc_qttools_qtwayland" - type: EnvironmentVariable variableName: CMAKE_PREFIX_PATH variableValue: "{{.AgentWorkingDir}}/install/lib/cmake" @@ -19,6 +22,14 @@ analysis_instructions_axivion: &analysis_instructions_axivion sourcePath: "{{.SourceDir}}/coin/axivion/ci_config_{{.Env.TARGET_OS_COIN}}.json" targetPath: "{{.Env.HOME}}/axivion/ci_config.json" userMessageOnFailure: "Moving ci_config.json failed. Make sure you have included the file in coin/axivion/ -folder" + - type: Rename + sourcePath: "{{.SourceDir}}/coin/axivion/start_analysis.sh" + targetPath: "{{.Env.HOME}}/axivion/start_analysis.sh" + userMessageOnFailure: "Moving start_analysis.sh failed. Make sure you have included the file in coin/axivion/ -folder" + enable_if: + condition: runtime + env_var: AXIVION_DIVIDED_MODULES + contains_value: "{{.Env.TESTED_MODULE_COIN}}" - type: SetBuildDirectory directory: "{{.SourceDir}}" - type: ChangeDirectory