[libcamera-ci,RFC,v1] Add clang builds with libstdc++
diff mbox series

Message ID 20260216142843.482262-1-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • [libcamera-ci,RFC,v1] Add clang builds with libstdc++
Related show

Commit Message

Barnabás Pőcze Feb. 16, 2026, 2:28 p.m. UTC
Currently clang is only used to test libc++ builds. This, however, prevents
the build testing of e.g. qcam since the packaged qt libraries use libstdc++,
so it needs to be disabled when using libc++.

So duplicate every current clang job for libstdc++ testing.

Link: https://gitlab.freedesktop.org/camera/libcamera/-/issues/315
Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
---
Maybe it's not worth duplicating each clang job, but adding at least one
(clang, libstdc++) build is probably worth it.
---
 .gitlab-ci/meson/libstdc++.native |  3 +++
 gitlab-ci.yml                     | 36 ++++++++++++++-----------------
 2 files changed, 19 insertions(+), 20 deletions(-)
 create mode 100644 .gitlab-ci/meson/libstdc++.native

--
2.53.0

Patch
diff mbox series

diff --git a/.gitlab-ci/meson/libstdc++.native b/.gitlab-ci/meson/libstdc++.native
new file mode 100644
index 0000000..3116043
--- /dev/null
+++ b/.gitlab-ci/meson/libstdc++.native
@@ -0,0 +1,3 @@ 
+[built-in options]
+cpp_args = ['-stdlib=libstdc++']
+cpp_link_args = ['-stdlib=libstdc++']
diff --git a/gitlab-ci.yml b/gitlab-ci.yml
index 6256335..e51266c 100644
--- a/gitlab-ci.yml
+++ b/gitlab-ci.yml
@@ -29,7 +29,12 @@  variables:
   # clang fails to link with ASan if --no-undefined is enabled.
   MESON_CLANG_OPTIONS: >-
     -D b_lundef=false
+  MESON_CLANG_LIBCPP_OPTIONS: >-
+    ${MESON_CLANG_OPTIONS}
     --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libc++.native
+  MESON_CLANG_LIBSTDCPP_OPTIONS: >-
+    ${MESON_CLANG_OPTIONS}
+    --native-file $CI_PROJECT_DIR/.gitlab-ci/meson/libstdc++.native
   PACKAGES: >-
     ca-certificates
     git
@@ -194,21 +199,14 @@  build-full:debian:12:
           ${MESON_ALL_OPTIONS}
           -D b_sanitize=none
       - ARCH: amd64
-        BUILD_TYPE: debug
-        CC: clang
-        CXX: clang++
-        MESON_OPTIONS: >-
-          ${MESON_ALL_OPTIONS}
-          ${MESON_CLANG_OPTIONS}
-          -D qcam=disabled
-      - ARCH: amd64
-        BUILD_TYPE: release
+        BUILD_TYPE:
+          - debug
+          - release
         CC: clang
         CXX: clang++
-        MESON_OPTIONS: >-
-          ${MESON_ALL_OPTIONS}
-          ${MESON_CLANG_OPTIONS}
-          -D qcam=disabled
+        MESON_OPTIONS:
+          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled
+          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}

 build-full:debian:12:as-subproject:
   extends:
@@ -256,13 +254,11 @@  build-full:debian:13:
       - ARCH: amd64
         CC: clang
         CXX: clang++
-        MESON_OPTIONS: >-
-          ${MESON_ALL_OPTIONS}
-          ${MESON_CLANG_OPTIONS}
-          -D qcam=disabled
-          -D cpp_debugstl=false
-        # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3
-        # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812
+        MESON_OPTIONS:
+          # `cpp_debugstl=false` needed approximately between meson 1.4.0 and 1.9.3
+          # with clang 18 or later due to https://github.com/mesonbuild/meson/issues/13812
+          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBCPP_OPTIONS} -D qcam=disabled -D cpp_debugstl=false
+          - ${MESON_ALL_OPTIONS} ${MESON_CLANG_LIBSTDCPP_OPTIONS}
       - ARCH: armhf
       - ARCH: arm64