tu: compile as C++
authorDanylo Piliaiev <dpiliaiev@igalia.com>
Wed, 8 Mar 2023 18:12:08 +0000 (19:12 +0100)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Mar 2023 15:49:26 +0000 (15:49 +0000)
Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21931>

26 files changed:
src/freedreno/vulkan/meson.build
src/freedreno/vulkan/tu_android.cc [moved from src/freedreno/vulkan/tu_android.c with 100% similarity]
src/freedreno/vulkan/tu_autotune.cc [moved from src/freedreno/vulkan/tu_autotune.c with 100% similarity]
src/freedreno/vulkan/tu_clear_blit.cc [moved from src/freedreno/vulkan/tu_clear_blit.c with 100% similarity]
src/freedreno/vulkan/tu_cmd_buffer.cc [moved from src/freedreno/vulkan/tu_cmd_buffer.c with 100% similarity]
src/freedreno/vulkan/tu_cs.cc [moved from src/freedreno/vulkan/tu_cs.c with 100% similarity]
src/freedreno/vulkan/tu_cs_breadcrumbs.cc [moved from src/freedreno/vulkan/tu_cs_breadcrumbs.c with 100% similarity]
src/freedreno/vulkan/tu_descriptor_set.cc [moved from src/freedreno/vulkan/tu_descriptor_set.c with 100% similarity]
src/freedreno/vulkan/tu_device.cc [moved from src/freedreno/vulkan/tu_device.c with 100% similarity]
src/freedreno/vulkan/tu_dynamic_rendering.cc [moved from src/freedreno/vulkan/tu_dynamic_rendering.c with 100% similarity]
src/freedreno/vulkan/tu_formats.cc [moved from src/freedreno/vulkan/tu_formats.c with 100% similarity]
src/freedreno/vulkan/tu_image.cc [moved from src/freedreno/vulkan/tu_image.c with 100% similarity]
src/freedreno/vulkan/tu_knl.cc [moved from src/freedreno/vulkan/tu_knl.c with 100% similarity]
src/freedreno/vulkan/tu_knl_drm_msm.cc [moved from src/freedreno/vulkan/tu_knl_drm_msm.c with 100% similarity]
src/freedreno/vulkan/tu_knl_kgsl.cc [moved from src/freedreno/vulkan/tu_knl_kgsl.c with 100% similarity]
src/freedreno/vulkan/tu_lrz.cc [moved from src/freedreno/vulkan/tu_lrz.c with 100% similarity]
src/freedreno/vulkan/tu_nir_lower_multiview.cc [moved from src/freedreno/vulkan/tu_nir_lower_multiview.c with 100% similarity]
src/freedreno/vulkan/tu_pass.cc [moved from src/freedreno/vulkan/tu_pass.c with 100% similarity]
src/freedreno/vulkan/tu_perfetto.cc
src/freedreno/vulkan/tu_perfetto_util.cc [moved from src/freedreno/vulkan/tu_perfetto_util.c with 100% similarity]
src/freedreno/vulkan/tu_pipeline.cc [moved from src/freedreno/vulkan/tu_pipeline.c with 100% similarity]
src/freedreno/vulkan/tu_query.cc [moved from src/freedreno/vulkan/tu_query.c with 100% similarity]
src/freedreno/vulkan/tu_shader.cc [moved from src/freedreno/vulkan/tu_shader.c with 100% similarity]
src/freedreno/vulkan/tu_suballoc.cc [moved from src/freedreno/vulkan/tu_suballoc.c with 100% similarity]
src/freedreno/vulkan/tu_util.cc [moved from src/freedreno/vulkan/tu_util.c with 100% similarity]
src/freedreno/vulkan/tu_wsi.cc [moved from src/freedreno/vulkan/tu_wsi.c with 100% similarity]

index 316b7ef..19c1bd6 100644 (file)
@@ -14,25 +14,25 @@ tu_entrypoints = custom_target(
 
 
 libtu_files = files(
-  'tu_autotune.c',
-  'tu_clear_blit.c',
-  'tu_cmd_buffer.c',
-  'tu_cs_breadcrumbs.c',
-  'tu_cs.c',
-  'tu_device.c',
-  'tu_descriptor_set.c',
-  'tu_dynamic_rendering.c',
-  'tu_formats.c',
-  'tu_image.c',
-  'tu_knl.c',
-  'tu_lrz.c',
-  'tu_nir_lower_multiview.c',
-  'tu_pass.c',
-  'tu_pipeline.c',
-  'tu_query.c',
-  'tu_shader.c',
-  'tu_suballoc.c',
-  'tu_util.c',
+  'tu_autotune.cc',
+  'tu_clear_blit.cc',
+  'tu_cmd_buffer.cc',
+  'tu_cs_breadcrumbs.cc',
+  'tu_cs.cc',
+  'tu_device.cc',
+  'tu_descriptor_set.cc',
+  'tu_dynamic_rendering.cc',
+  'tu_formats.cc',
+  'tu_image.cc',
+  'tu_knl.cc',
+  'tu_lrz.cc',
+  'tu_nir_lower_multiview.cc',
+  'tu_pass.cc',
+  'tu_pipeline.cc',
+  'tu_query.cc',
+  'tu_shader.cc',
+  'tu_suballoc.cc',
+  'tu_util.cc',
 )
 
 tu_deps = []
@@ -55,11 +55,11 @@ if system_has_kms_drm and not with_platform_android
 endif
 
 if tu_wsi
-  libtu_files += 'tu_wsi.c'
+  libtu_files += 'tu_wsi.cc'
 endif
 
 if with_platform_android
-  libtu_files += files('tu_android.c')
+  libtu_files += files('tu_android.cc')
   tu_deps += [dep_android]
 endif
 
@@ -69,21 +69,19 @@ endif
 
 if freedreno_kmds.contains('kgsl')
   tu_flags += '-DTU_HAS_KGSL'
-  libtu_files += files('tu_knl_kgsl.c')
+  libtu_files += files('tu_knl_kgsl.cc')
 endif
 
 if freedreno_kmds.contains('msm')
   tu_flags += '-DTU_HAS_MSM'
-  libtu_files += files('tu_knl_drm_msm.c')
+  libtu_files += files('tu_knl_drm_msm.cc')
   tu_deps += dep_libdrm
 endif
 
-tu_flags += '-Wno-array-bounds'
-
 tu_tracepoints = custom_target(
   'tu_tracepoints.[ch]',
   input: 'tu_tracepoints.py',
-  output: ['tu_tracepoints.c', 'tu_tracepoints.h', 'tu_tracepoints_perfetto.h'],
+  output: ['tu_tracepoints.cc', 'tu_tracepoints.h', 'tu_tracepoints_perfetto.h'],
   command: [
     prog_python, '@INPUT@',
     '-p', join_paths(dir_source_root, 'src/util/perf/'),
@@ -95,10 +93,40 @@ tu_tracepoints = custom_target(
 )
 
 if with_perfetto
-  libtu_files += ['tu_perfetto.cc', 'tu_perfetto_util.c']
+  libtu_files += ['tu_perfetto.cc', 'tu_perfetto_util.cc']
   tu_deps += dep_perfetto
 endif
 
+tu_cpp_args = []
+tu_cpp_args += cpp.get_supported_arguments([
+  '-fno-exceptions',
+  '-fno-rtti',
+  '-Wno-address-of-temporary',
+  '-Wno-array-bounds',
+  '-Wno-c99-designator',
+  '-Wno-class-memaccess',
+  '-Wno-missing-braces',
+  '-Wno-narrowing',
+  '-Wno-pointer-arith',
+  '-Wno-reorder-init-list',
+  '-Wno-sign-compare',
+  '-Wno-switch',
+  '-Wno-unused-function',
+  '-Wno-writable-strings',
+  '-Wno-write-strings',
+])
+
+# HACK compiler.get_supported_arguments()/has_argument() do not seem
+# to be reliable for cross builds (!?!) so just jam in some args we
+# need and hope for the best
+if meson.is_cross_build()
+  tu_cpp_args += '-Wno-array-bounds'
+  tu_cpp_args += '-Wno-c++11-narrowing'
+  tu_cpp_args += '-Wno-missing-braces'
+  tu_cpp_args += '-Wno-unused-function'
+  tu_cpp_args += '-Wno-writable-strings'
+endif
+
 libvulkan_freedreno = shared_library(
   'vulkan_freedreno',
   [libtu_files, tu_entrypoints, tu_tracepoints, freedreno_xml_header_files, sha1_h, u_format_pack_h],
@@ -132,6 +160,7 @@ libvulkan_freedreno = shared_library(
     idep_mesautil,
   ],
   c_args : [no_override_init_args, tu_flags],
+  cpp_args : [tu_cpp_args, tu_flags],
   gnu_symbol_visibility : 'hidden',
   link_args : [vulkan_icd_link_args, ld_args_bsymbolic, ld_args_gc_sections, ld_args_build_id],
   link_depends : vulkan_icd_link_depends,
index c0772f2..45df6f9 100644 (file)
 
 /* we can't include tu_knl.h and tu_device.h */
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
 int
 tu_device_get_gpu_timestamp(struct tu_device *dev,
                             uint64_t *ts);
@@ -31,10 +27,6 @@ tu_device_ticks_to_ns(struct tu_device *dev, uint64_t ts);
 struct u_trace_context *
 tu_device_get_u_trace(struct tu_device *device);
 
-#ifdef __cplusplus
-}
-#endif
-
 /**
  * Queue-id's
  */