summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Schleifer <js@nil.im>2024-04-11 01:44:58 +0200
committerEli Schwartz <eschwartz93@gmail.com>2024-04-28 03:14:29 -0400
commit205f09e1b022a71a64eb48e22bb52f76e0da21ef (patch)
tree52e2ced832c501f53f54ac05b76e8f14247ebe51
parentc9aa4aff66ebbbcd3eed3da8fbc3af0e0a8b90a2 (diff)
downloadmeson-205f09e1b022a71a64eb48e22bb52f76e0da21ef.tar.gz
Prefer Clang over GCC for Objective-C(++)
GCC only has very limited support for Objective-C and doesn't support any of the modern features, so whenever Clang is available, it should be used instead. Essentially, the only reason to ever use GCC for Objective-C is that Clang simply does not support the target system.
-rw-r--r--mesonbuild/compilers/detect.py9
-rw-r--r--test cases/cmake/24 mixing languages/meson.build5
2 files changed, 8 insertions, 6 deletions
diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py
index 08727285a..6e35e7d39 100644
--- a/mesonbuild/compilers/detect.py
+++ b/mesonbuild/compilers/detect.py
@@ -46,9 +46,8 @@ if is_windows():
# There is currently no pgc++ for Windows, only for Mac and Linux.
defaults['cpp'] = ['icl', 'cl', 'c++', 'g++', 'clang++', 'clang-cl']
defaults['fortran'] = ['ifort', 'gfortran', 'flang', 'pgfortran', 'g95']
- # Clang and clang++ are valid, but currently unsupported.
- defaults['objc'] = ['cc', 'gcc']
- defaults['objcpp'] = ['c++', 'g++']
+ defaults['objc'] = ['clang-cl', 'gcc']
+ defaults['objcpp'] = ['clang-cl', 'g++']
defaults['cs'] = ['csc', 'mcs']
else:
if platform.machine().lower() == 'e2k':
@@ -59,8 +58,8 @@ else:
else:
defaults['c'] = ['cc', 'gcc', 'clang', 'nvc', 'pgcc', 'icc', 'icx']
defaults['cpp'] = ['c++', 'g++', 'clang++', 'nvc++', 'pgc++', 'icpc', 'icpx']
- defaults['objc'] = ['cc', 'gcc', 'clang']
- defaults['objcpp'] = ['c++', 'g++', 'clang++']
+ defaults['objc'] = ['clang', 'gcc']
+ defaults['objcpp'] = ['clang++', 'g++']
defaults['fortran'] = ['gfortran', 'flang', 'nvfortran', 'pgfortran', 'ifort', 'ifx', 'g95']
defaults['cs'] = ['mcs', 'csc']
defaults['d'] = ['ldc2', 'ldc', 'gdc', 'dmd']
diff --git a/test cases/cmake/24 mixing languages/meson.build b/test cases/cmake/24 mixing languages/meson.build
index 4ab1d8542..55d7a7d68 100644
--- a/test cases/cmake/24 mixing languages/meson.build
+++ b/test cases/cmake/24 mixing languages/meson.build
@@ -1,4 +1,7 @@
-project('CMake mix', ['c', 'cpp'])
+# Explicitly require PIE so that mixing compilers with different defaults for
+# whether to use PIE works.
+project('CMake mix', ['c', 'cpp'],
+ default_options: ['b_pie=true'])
if not add_languages('objc', required : false)
error('MESON_SKIP_TEST: No ObjC compiler')