diff --git a/.bazelrc b/.bazelrc index 49227243..2a335a72 100644 --- a/.bazelrc +++ b/.bazelrc @@ -17,30 +17,29 @@ common --@score_logging//score/mw/log/flags:KRemote_Logging=False common --@score_baselibs//score/json:base_library=nlohmann common --@score_baselibs//score/memory/shared/flags:use_typedshmd=False common --//score/mw/com/flags:tracing_library=stub -common --extra_toolchains=@gcc_toolchain//:host_gcc_12 +common --extra_toolchains=@gcc_toolchain_x86_64//:cc_toolchain common --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_unknown_linux_gnu build --incompatible_strict_action_env test --test_output=errors build --experimental_retain_test_configuration_across_testonly #https://github.com/bazelbuild/bazel/issues/6842 +common:linux_x86_64_score_gcc_12_2_0_posix --platforms=@score_bazel_platforms//:x86_64-linux-gcc_12.2.0-posix +common:linux_x86_64_score_gcc_12_2_0_posix --extra_toolchains=@score_gcc_x86_64_toolchain//:x86_64-linux + # In order to build for QNX, you need: # * An account on qnx.com # * An assigned QNX 8 license to your account # * If you are applicable for "Free for non commercial use" see here: https://www.qnx.com/products/everywhere/ # * The credentials for this account stored in your ~/.netrc (machine qnx.com) # * A license stored under `/opt/score_qnx/license/licenses` -common:qnx_x86_64 --host_platform=@score_bazel_platforms//:x86_64-linux -common:qnx_x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx8_0 -common:qnx_x86_64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_x86_64 -common:qnx_x86_64 --extra_toolchains=@toolchains_qnx_qcc//:qcc_x86_64 +common:qnx_x86_64 --platforms=@score_bazel_platforms//:x86_64-qnx-sdp_8.0.0-posix +common:qnx_x86_64 --extra_toolchains=@score_qcc_x86_64_toolchain//:x86_64-qnx-sdp_8.0.0 common:qnx_x86_64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_x86_64_pc_nto_qnx800 common:qnx_x86_64 --credential_helper=*.qnx.com=%workspace%/third_party/qnx_credential_helper.py common:qnx_x86_64 --sandbox_writable_path=/var/tmp -common:qnx_arm64 --host_platform=@score_bazel_platforms//:x86_64-linux -common:qnx_arm64 --platforms=@score_bazel_platforms//:arm64-qnx8_0 -common:qnx_arm64 --extra_toolchains=@toolchains_qnx_ifs//:ifs_aarch64 -common:qnx_arm64 --extra_toolchains=@toolchains_qnx_qcc//:qcc_aarch64 +common:qnx_arm64 --platforms=@score_bazel_platforms//:aarch64-qnx-sdp_8.0.0-posix +common:qnx_arm64 --extra_toolchains=@score_qcc_aarch64_toolchain//:aarch64-qnx-sdp_8.0.0 common:qnx_arm64 --extra_toolchains=@score_toolchains_rust//toolchains/ferrocene:ferrocene_aarch64_unknown_nto_qnx800 common:qnx_arm64 --credential_helper=*.qnx.com=%workspace%/third_party/qnx_credential_helper.py common:qnx_arm64 --sandbox_writable_path=/var/tmp @@ -62,6 +61,7 @@ coverage --experimental_use_llvm_covmap coverage --combined_report=lcov coverage --coverage_report_generator=@bazel_tools//tools/test/CoverageOutputGenerator/java/com/google/devtools/coverageoutputgenerator:Main coverage --extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux +coverage --extra_toolchains=@ferrocene_x86_64_unknown_linux_gnu_llvm//:rust_ferrocene_toolchain coverage --test_env=COVERAGE_GCOV_OPTIONS=-bcu # TODO set toolchain feature once possible # These compile time options are required to cover abnormal termination cases. In GCC one can use `__gcc_dump()`, but this does not work with LLVM diff --git a/.github/workflows/address_undefined_behavior_leak_sanitizer.yml b/.github/workflows/address_undefined_behavior_leak_sanitizer.yml index e68875e2..9117222b 100644 --- a/.github/workflows/address_undefined_behavior_leak_sanitizer.yml +++ b/.github/workflows/address_undefined_behavior_leak_sanitizer.yml @@ -25,6 +25,8 @@ on: jobs: build_and_test_asan_ubsan_lsan: runs-on: ubuntu-24.04 + permissions: + contents: read steps: - name: Checkout repository uses: actions/checkout@v4.2.2 diff --git a/.github/workflows/automated_release.yml b/.github/workflows/automated_release.yml index 619917b2..92633b1e 100644 --- a/.github/workflows/automated_release.yml +++ b/.github/workflows/automated_release.yml @@ -45,6 +45,12 @@ jobs: echo "Release version tag: $RELEASE_VERSION" echo "release-tag=$RELEASE_VERSION" >> $GITHUB_OUTPUT + - name: Delete trigger tag + run: | + gh api repos/${{ github.repository }}/git/refs/tags/${{ github.ref_name }} -X DELETE + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create draft release id: create-release uses: softprops/action-gh-release@v2 @@ -65,7 +71,6 @@ jobs: uses: ./.github/workflows/build_and_test_qnx.yml permissions: contents: read - pull-requests: read secrets: SCORE_QNX_LICENSE: ${{ secrets.SCORE_QNX_LICENSE }} SCORE_QNX_USER: ${{ secrets.SCORE_QNX_USER }} @@ -81,11 +86,27 @@ jobs: run-coverage-report: needs: create-draft-release - uses: ./.github/workflows/release_coverage_report.yml - with: - release_tag: ${{ needs.create-draft-release.outputs.release-tag }} + uses: ./.github/workflows/coverage_report.yml + + upload-coverage-report: + needs: + - create-draft-release + - run-coverage-report + runs-on: ubuntu-24.04 permissions: contents: write + steps: + - name: Download coverage report artifact + uses: actions/download-artifact@v4 + with: + name: ${{ needs.run-coverage-report.outputs.artifact-name }} + path: ./ + + - name: Upload coverage report to existing draft release + run: | + gh release upload "${{ needs.create-draft-release.outputs.release-tag }}" "${{ needs.run-coverage-report.outputs.artifact-name }}.zip" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} finalize-release: runs-on: ubuntu-24.04 @@ -96,46 +117,30 @@ jobs: - run-thread-sanitizer - run-address-sanitizer - run-coverage-report - if: always() + - upload-coverage-report + if: ${{ success() }} permissions: contents: write steps: - name: Checkout repository uses: actions/checkout@v4.2.2 - - name: Check workflow results - id: check-results + - name: Report success + if: steps.check-results.outputs.all-success == 'true' run: | - RESULT_HOST="${{ needs.run-build-and-test-host.result }}" - RESULT_QNX="${{ needs.run-build-and-test-qnx.result }}" - RESULT_TSAN="${{ needs.run-thread-sanitizer.result }}" - RESULT_ASAN="${{ needs.run-address-sanitizer.result }}" - RESULT_COVERAGE="${{ needs.run-coverage-report.result }}" - - echo "Build and test host: $RESULT_HOST" - echo "Build and test QNX: $RESULT_QNX" - echo "Thread sanitizer: $RESULT_TSAN" - echo "Address sanitizer: $RESULT_ASAN" - echo "Coverage report: $RESULT_COVERAGE" - - if [[ "$RESULT_HOST" == "success" ]] && \ - [[ "$RESULT_QNX" == "success" ]] && \ - [[ "$RESULT_TSAN" == "success" ]] && \ - [[ "$RESULT_ASAN" == "success" ]] && \ - [[ "$RESULT_COVERAGE" == "success" ]]; then - echo "all-success=true" >> $GITHUB_OUTPUT - else - echo "all-success=false" >> $GITHUB_OUTPUT - fi + echo "All workflows succeeded. Draft release ${{ needs.create-draft-release.outputs.release-tag }} is ready for manual publishing." - - name: Delete trigger tag - run: | - gh api repos/${{ github.repository }}/git/refs/tags/${{ github.ref_name }} -X DELETE - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + delete-release-on-failure: + runs-on: ubuntu-24.04 + needs: create-draft-release + if: ${{ failure() || cancelled() }} + permissions: + contents: write + steps: + - name: Checkout repository + uses: actions/checkout@v4.2.2 - - name: Delete draft release (on failure) - if: steps.check-results.outputs.all-success == 'false' + - name: Delete draft release due to failure run: | gh release delete ${{ needs.create-draft-release.outputs.release-tag }} --yes env: @@ -144,10 +149,5 @@ jobs: - name: Report failure if: steps.check-results.outputs.all-success == 'false' run: | - echo "❌ One or more workflows failed. Draft release has been deleted." - exit 1 - - - name: Report success - if: steps.check-results.outputs.all-success == 'true' - run: | - echo "✅ All workflows succeeded. Draft release ${{ needs.create-draft-release.outputs.release-tag }} is ready for manual publishing." + echo "One or more workflows failed. Draft release has been deleted." + exit 1 \ No newline at end of file diff --git a/.github/workflows/build_and_test_host.yml b/.github/workflows/build_and_test_host.yml index 88c889d2..ae0ae205 100644 --- a/.github/workflows/build_and_test_host.yml +++ b/.github/workflows/build_and_test_host.yml @@ -22,12 +22,17 @@ on: types: [checks_requested] workflow_call: jobs: - build_and_test_host: + build_and_test: strategy: fail-fast: false matrix: - toolchain: ["@llvm_toolchain//:cc-toolchain-x86_64-linux", "@gcc_toolchain//:host_gcc_12"] + param: + - "" # The default configuration + - "--extra_toolchains=@llvm_toolchain//:cc-toolchain-x86_64-linux" + - "--config=linux_x86_64_score_gcc_12_2_0_posix" runs-on: ubuntu-24.04 + permissions: + contents: read steps: - name: Checkout repository uses: actions/checkout@v4.2.2 @@ -42,7 +47,7 @@ jobs: uses: ./actions/unblock_user_namespace_for_linux_sandbox - name: Bazel build communication targets run: | - bazel build --extra_toolchains=${{ matrix.toolchain }} //... + bazel build ${{ matrix.param }} //... - name: Bazel test communication targets run: | - bazel test --extra_toolchains=${{ matrix.toolchain }} //... --build_tests_only + bazel test ${{ matrix.param }} //... --build_tests_only diff --git a/.github/workflows/build_and_test_qnx.yml b/.github/workflows/build_and_test_qnx.yml index 123b844c..23e6da22 100644 --- a/.github/workflows/build_and_test_qnx.yml +++ b/.github/workflows/build_and_test_qnx.yml @@ -48,7 +48,6 @@ jobs: runs-on: ubuntu-24.04 permissions: contents: read - pull-requests: read steps: - name: Checkout repository uses: actions/checkout@v4.2.2 diff --git a/.github/workflows/release_coverage_report.yml b/.github/workflows/coverage_report.yml similarity index 78% rename from .github/workflows/release_coverage_report.yml rename to .github/workflows/coverage_report.yml index f28797af..8e635a53 100644 --- a/.github/workflows/release_coverage_report.yml +++ b/.github/workflows/coverage_report.yml @@ -13,18 +13,21 @@ name: Coverage Report on: + pull_request: + types: [ opened, reopened, synchronize ] workflow_call: - inputs: - release_tag: - description: 'Release tag to upload artifacts to' - required: true - type: string + outputs: + artifact-name: + description: 'Name of the coverage report artifact' + value: ${{ jobs.coverage-report.outputs.artifact-name }} jobs: coverage-report: runs-on: ubuntu-24.04 permissions: contents: write # required to upload release assets + outputs: + artifact-name: ${{ steps.set-artifact-name.outputs.artifact-name }} steps: - name: Checkout Repository @@ -66,18 +69,18 @@ jobs: mkdir -p artifacts find bazel-testlogs/score/ -name 'test.xml' -print0 | xargs -0 -I{} cp --parents {} artifacts/ cp -r cpp_coverage artifacts/ - zip -r ${{ github.event.repository.name }}_coverage_report.zip artifacts/ + zip -r ${{ github.event.repository.name }}_coverage_report_${{ github.sha }}.zip artifacts/ shell: bash + - name: Set artifact name + id: set-artifact-name + run: | + echo "artifact-name=${{ github.event.repository.name }}_coverage_report_${{ github.sha }}" >> $GITHUB_OUTPUT + - name: Upload coverage artifacts uses: actions/upload-artifact@v4 with: - name: ${{ github.event.repository.name }}_coverage_report.zip - path: ${{ github.event.repository.name }}_coverage_report.zip + name: ${{ steps.set-artifact-name.outputs.artifact-name }} + path: ${{ github.event.repository.name }}_coverage_report_${{ github.sha }}.zip + - - name: Upload coverage report to existing draft release - run: | - # Upload the file to the existing release - gh release upload "${{ inputs.release_tag }}" "${{ github.event.repository.name }}_coverage_report.zip" - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/thread_sanitizer.yml b/.github/workflows/thread_sanitizer.yml index 2278d77f..2a5b810f 100644 --- a/.github/workflows/thread_sanitizer.yml +++ b/.github/workflows/thread_sanitizer.yml @@ -24,6 +24,8 @@ on: jobs: build_and_test_tsan: runs-on: ubuntu-24.04 + permissions: + contents: read steps: - name: Checkout repository uses: actions/checkout@v4.2.2 diff --git a/MODULE.bazel b/MODULE.bazel index f76fe31e..42d2f9e5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -17,38 +17,62 @@ module( bazel_dep(name = "platforms", version = "1.0.0") -bazel_dep(name = "score_toolchains_gcc", version = "0.4", dev_dependency = True) +bazel_dep(name = "gcc_toolchain", version = "0.9.0", dev_dependency = True) -gcc = use_extension( - "@score_toolchains_gcc//extentions:gcc.bzl", - "gcc", - dev_dependency = True, -) -gcc.toolchain( - sha256 = "457f5f20f57528033cb840d708b507050d711ae93e009388847e113b11bf3600", - strip_prefix = "x86_64-unknown-linux-gnu", - url = "https://github.com/eclipse-score/toolchains_gcc_packages/releases/download/0.0.1/x86_64-unknown-linux-gnu_gcc12.tar.gz", +gcc_toolchains = use_extension("@gcc_toolchain//toolchain:module_extensions.bzl", "gcc_toolchains", dev_dependency = True) +gcc_toolchains.toolchain( + name = "gcc_toolchain_x86_64", + extra_ldflags = [ + "-lstdc++", + "-lrt", + "-latomic", + ], + gcc_version = "15.2.0", + target_arch = "x86_64", ) +use_repo(gcc_toolchains, "gcc_toolchain_x86_64") -# TODO to be moved to toolchain. https://github.com/eclipse-score/toolchains_gcc/issues/11 -gcc.extra_features( - features = [ - "minimal_warnings", - "treat_warnings_as_errors", - ], +bazel_dep(name = "score_bazel_cpp_toolchains", version = "0.2.0", dev_dependency = True) +git_override( + module_name = "score_bazel_cpp_toolchains", + commit = "79982259df6dfa9d82cc458163a6d9b08bd24471", + remote = "https://github.com/eclipse-score/bazel_cpp_toolchains.git", ) -gcc.warning_flags( - minimal_warnings = [ - "-Wall", - "-Wno-error=deprecated-declarations", - ], - strict_warnings = [ - "-Wextra", - "-Wpedantic", - ], - treat_warnings_as_errors = ["-Werror"], +score_gcc = use_extension("@score_bazel_cpp_toolchains//extensions:gcc.bzl", "gcc", dev_dependency = True) +score_gcc.toolchain( + name = "score_gcc_x86_64_toolchain", + target_cpu = "x86_64", + target_os = "linux", + use_default_package = True, + use_base_constraints_only = True, + version = "12.2.0", +) +score_gcc.toolchain( + name = "score_qcc_x86_64_toolchain", + sdp_version = "8.0.0", + target_cpu = "x86_64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +score_gcc.toolchain( + name = "score_qcc_aarch64_toolchain", + sdp_version = "8.0.0", + target_cpu = "aarch64", + target_os = "qnx", + use_default_package = True, + version = "12.2.0", +) +use_repo( + score_gcc, + "score_gcc_x86_64_toolchain", + "score_qcc_aarch64_toolchain", + "score_qcc_x86_64_toolchain", ) -use_repo(gcc, "gcc_toolchain", "gcc_toolchain_gcc") + +# For the moment we still need the old toolchain for ifs generation. +# Once score_bazel_cpp_toolchains supports ifs generation, drop this dependency +bazel_dep(name = "score_toolchains_qnx", version = "0.0.7", dev_dependency = True) bazel_dep(name = "toolchains_llvm", version = "1.5.0", dev_dependency = True) @@ -81,6 +105,38 @@ llvm.toolchain( ) use_repo(llvm, "llvm_toolchain") +bazel_dep(name = "score_toolchains_rust", version = "0.7.0", dev_dependency = True) + +gcc_ferrocene = use_extension( + "@score_toolchains_rust//extensions:ferrocene_toolchain_ext.bzl", + "ferrocene_toolchain_ext", + dev_dependency = True, +) +gcc_ferrocene.toolchain( + name = "ferrocene_x86_64_unknown_linux_gnu_llvm", + coverage_tools_sha256 = "497958e925bc94833ea226d68f6d5ba38bd890f571c73e230141d2923e30dd94", + coverage_tools_strip_prefix = "779fbed05ae9e9fe2a04137929d99cc9b3d516fd/x86_64-unknown-linux-gnu", + coverage_tools_url = "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/coverage-tools-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", + exec_triple = "x86_64-unknown-linux-gnu", + extra_rustc_flags = [ + "-Clink-arg=-Wl,--no-as-needed", + "-Clink-arg=-lc++", + "-Clink-arg=-lm", + "-Clink-arg=-lc", + ], + sha256 = "4c08b41eaafd39cff66333ca4d4646a5331c780050b8b9a8447353fcd301dddc", + target_compatible_with = [ + "@platforms//cpu:x86_64", + "@platforms//os:linux", + ], + target_triple = "x86_64-unknown-linux-gnu", + url = "https://github.com/eclipse-score/ferrocene_toolchain_builder/releases/download/1.0.1/ferrocene-779fbed05ae9e9fe2a04137929d99cc9b3d516fd-x86_64-unknown-linux-gnu.tar.gz", +) +use_repo( + gcc_ferrocene, + "ferrocene_x86_64_unknown_linux_gnu_llvm", +) + # We use here a pre-compiled fully static and hermetic clang_format binary # and not the one provided by llvm_toolchain, because the one from llvm_toolchain is not fully hermetic (and different version for now) download_file = use_repo_rule("@download_utils//download/file:defs.bzl", "download_file") @@ -92,25 +148,17 @@ download_file( urls = ["https://github.com/muttleyxd/clang-tools-static-binaries/releases/download/master-2da3e7b/clang-format-19_linux-amd64"], ) -bazel_dep(name = "rules_cc", version = "0.1.1") +bazel_dep(name = "rules_cc", version = "0.2.16") bazel_dep(name = "aspect_rules_lint", version = "1.13.0") bazel_dep(name = "googletest", version = "1.17.0.bcr.2") -bazel_dep(name = "google_benchmark", version = "1.9.4") -bazel_dep(name = "rules_rust", version = "0.61.0") -bazel_dep(name = "score_toolchains_rust", version = "0.2.0", dev_dependency = True) - -git_override( - module_name = "score_toolchains_rust", - commit = "f3cc7820d47683bc356963f9aa6aeae80475f933", - remote = "https://github.com/eclipse-score/toolchains_rust.git", # Replace with actual repository URL -) - +bazel_dep(name = "google_benchmark", version = "1.9.5") +bazel_dep(name = "rules_rust", version = "0.67.0") bazel_dep(name = "buildifier_prebuilt", version = "8.2.0.2") bazel_dep(name = "score_crates", version = "0.0.6", repo_name = "crate_index") bazel_dep(name = "boost.program_options", version = "1.87.0") bazel_dep(name = "boost.interprocess", version = "1.87.0") -bazel_dep(name = "download_utils", version = "1.0.1") +bazel_dep(name = "download_utils", version = "1.2.2") download_archive = use_repo_rule("@download_utils//download/archive:defs.bzl", "download_archive") @@ -129,7 +177,7 @@ download_archive( ) bazel_dep(name = "nlohmann_json", version = "3.11.3") -bazel_dep(name = "bazel_skylib", version = "1.8.1") +bazel_dep(name = "bazel_skylib", version = "1.8.2") bazel_dep(name = "rules_doxygen", version = "2.5.0") bazel_dep(name = "score_docs_as_code", version = "3.0.0") @@ -147,10 +195,10 @@ single_version_override( ) # Apply patch to fix visibility issue with interprocess_notification target -bazel_dep(name = "score_baselibs", version = "0.2.2") +bazel_dep(name = "score_baselibs", version = "0.2.3") git_override( module_name = "score_baselibs", - commit = "ba99dfcb2a1cf69108a2d9eb9fe3cf6ba5aa0832", + commit = "158fe6a7b791c58f6eac5f7e4662b8db0cf9ac6e", remote = "https://github.com/eclipse-score/baselibs.git", ) @@ -173,7 +221,7 @@ doxygen_extension = use_extension("@rules_doxygen//:extensions.bzl", "doxygen_ex use_repo(doxygen_extension, "doxygen") # Python 3.12 toolchain for Bazel -bazel_dep(name = "rules_python", version = "1.5.1") +bazel_dep(name = "rules_python", version = "1.8.3") python = use_extension("@rules_python//python/extensions:python.bzl", "python") python.toolchain( @@ -208,23 +256,12 @@ pip.parse( ) use_repo(pip, "lobster_dependencies") -bazel_dep(name = "score_toolchains_qnx", version = "0.0.6", dev_dependency = True) - -toolchains_qnx = use_extension( - "@score_toolchains_qnx//:extensions.bzl", - "toolchains_qnx", - dev_dependency = True, -) -toolchains_qnx.sdp( - sha256 = "f2e0cb21c6baddbcb65f6a70610ce498e7685de8ea2e0f1648f01b327f6bac63", - strip_prefix = "installation", - url = "https://www.qnx.com/download/download/79858/installation.tgz", +bazel_dep(name = "score_bazel_platforms", version = "0.1.0") +git_override( + module_name = "score_bazel_platforms", + commit = "5a5e26fe9ef25cb3f385d8b1bf927a88ec4aa464", # Fix for deprecation alias used by QNX toolchain + remote = "https://github.com/eclipse-score/bazel_platforms.git", ) -use_repo(toolchains_qnx, "toolchains_qnx_sdp") -use_repo(toolchains_qnx, "toolchains_qnx_ifs") -use_repo(toolchains_qnx, "toolchains_qnx_qcc") - -bazel_dep(name = "score_bazel_platforms", version = "0.0.4") bazel_dep(name = "rules_oci", version = "1.8.0") oci = use_extension("@rules_oci//oci:extensions.bzl", "oci") @@ -253,4 +290,4 @@ use_repo(apt, "ubuntu24_04") bazel_dep(name = "rules_pkg", version = "1.1.0") -bazel_dep(name = "score_tooling", version = "1.0.4") +bazel_dep(name = "score_tooling", version = "1.1.0") diff --git a/score/mw/com/test/api/api_under_test/our/name_space/impl_type_somestruct.h b/score/mw/com/test/api/api_under_test/our/name_space/impl_type_somestruct.h index a1276056..789d781c 100644 --- a/score/mw/com/test/api/api_under_test/our/name_space/impl_type_somestruct.h +++ b/score/mw/com/test/api/api_under_test/our/name_space/impl_type_somestruct.h @@ -41,7 +41,7 @@ struct SomeStruct const std::uint16_t& bar_param, const ::our::name_space::SomeArray& access_array_param, const ::our::name_space::MultiDimArray& multi_dim_array_param, -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) ::score::memory::shared::String const& access_string_param, #endif ::our::name_space::SomeVector const& access_vector_param, @@ -53,7 +53,7 @@ struct SomeStruct bar{bar_param}, access_array{access_array_param}, multi_dim_array{multi_dim_array_param}, -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) access_string{access_string_param}, #endif access_vector{access_vector_param, allocator}, @@ -68,7 +68,7 @@ struct SomeStruct bar{other.bar}, access_array{other.access_array}, multi_dim_array{other.multi_dim_array}, -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) access_string{other.access_string}, #endif access_vector{other.access_vector, allocator}, @@ -83,7 +83,7 @@ struct SomeStruct bar{std::move(other.bar)}, access_array{std::move(other.access_array)}, multi_dim_array{std::move(other.multi_dim_array)}, -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) access_string{std::move(other.access_string)}, #endif access_vector{std::move(other.access_vector), allocator}, @@ -97,7 +97,7 @@ struct SomeStruct std::uint16_t bar; ::our::name_space::SomeArray access_array; ::our::name_space::MultiDimArray multi_dim_array; -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) ::score::memory::shared::String access_string; #endif ::our::name_space::SomeVector access_vector; @@ -113,7 +113,7 @@ struct SomeStruct fun(bar); fun(access_array); fun(multi_dim_array); -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) fun(access_string); #endif fun(access_vector); @@ -129,7 +129,7 @@ struct SomeStruct fun.template Visit(); fun.template Visit(); fun.template Visit(); -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) fun.template Visit(); #endif fun.template Visit(); diff --git a/score/mw/com/test/api/generated_api_test.cpp b/score/mw/com/test/api/generated_api_test.cpp index adf7c94e..4157b88a 100644 --- a/score/mw/com/test/api/generated_api_test.cpp +++ b/score/mw/com/test/api/generated_api_test.cpp @@ -168,7 +168,7 @@ TEST(API, ArrayDeclarationWithMultiDimArray) "Wrong underlying type"); } -#ifndef __QNX__ +#if !defined(__QNX__) && !defined(__clang__) // TODO String type not supported due to a bug in the LLVM STL for QNX: [Ticket-54614] TEST(API, StringIsSupported) {