summaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJonathan Schleifer <js@nil.im>2024-08-04 14:55:33 +0200
committerDylan Baker <dylan@pnwbakers.com>2024-08-08 15:56:43 -0700
commit81b151f61138357950330f26b601e0b345bf77fa (patch)
treea1cf56aaf434423bb407e65a418b46b303d93c4f /mesonbuild
parent43b80e02ce0e87dfcf069111e62ad8eff4435d6e (diff)
downloadmeson-81b151f61138357950330f26b601e0b345bf77fa.tar.gz
Fix compiling ObjC/ObjC++ on Windows/MinGW
Co-Authored-By: L. E. Segovia <amy@amyspark.me>
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/cmake/toolchain.py2
-rw-r--r--mesonbuild/compilers/detect.py4
-rw-r--r--mesonbuild/compilers/mixins/clang.py2
-rw-r--r--mesonbuild/compilers/mixins/visualstudio.py2
-rw-r--r--mesonbuild/linkers/linkers.py3
5 files changed, 11 insertions, 2 deletions
diff --git a/mesonbuild/cmake/toolchain.py b/mesonbuild/cmake/toolchain.py
index 1aad0bc3b..89d5d8444 100644
--- a/mesonbuild/cmake/toolchain.py
+++ b/mesonbuild/cmake/toolchain.py
@@ -188,6 +188,8 @@ class CMakeToolchain:
defaults[prefix + 'COMPILER'] = exe_list
if comp_obj.get_id() == 'clang-cl':
defaults['CMAKE_LINKER'] = comp_obj.get_linker_exelist()
+ if lang.startswith('objc') and comp_obj.get_id().startswith('clang'):
+ defaults[f'{prefix}FLAGS'] = ['-D__STDC__=1']
return defaults
diff --git a/mesonbuild/compilers/detect.py b/mesonbuild/compilers/detect.py
index c796c2f38..2e6b88dfc 100644
--- a/mesonbuild/compilers/detect.py
+++ b/mesonbuild/compilers/detect.py
@@ -47,8 +47,8 @@ if is_windows():
defaults['cpp'] = ['icl', 'cl', 'c++', 'g++', 'clang++', 'clang-cl']
# the binary flang-new will be renamed to flang in the foreseeable future
defaults['fortran'] = ['ifort', 'gfortran', 'flang-new', 'flang', 'pgfortran', 'g95']
- defaults['objc'] = ['clang-cl', 'gcc']
- defaults['objcpp'] = ['clang-cl', 'g++']
+ defaults['objc'] = ['clang', 'clang-cl', 'gcc']
+ defaults['objcpp'] = ['clang++', 'clang-cl', 'g++']
defaults['cs'] = ['csc', 'mcs']
else:
if platform.machine().lower() == 'e2k':
diff --git a/mesonbuild/compilers/mixins/clang.py b/mesonbuild/compilers/mixins/clang.py
index 1d2863882..a0d3d5ffb 100644
--- a/mesonbuild/compilers/mixins/clang.py
+++ b/mesonbuild/compilers/mixins/clang.py
@@ -58,6 +58,8 @@ class ClangCompiler(GnuLikeCompiler):
# linkers don't have base_options.
if isinstance(self.linker, AppleDynamicLinker):
self.base_options.add(OptionKey('b_bitcode'))
+ elif isinstance(self.linker, MSVCDynamicLinker):
+ self.base_options.add(OptionKey('b_vscrt'))
# All Clang backends can also do LLVM IR
self.can_compile_suffixes.add('ll')
diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py
index f095b95e2..78d62cb42 100644
--- a/mesonbuild/compilers/mixins/visualstudio.py
+++ b/mesonbuild/compilers/mixins/visualstudio.py
@@ -383,6 +383,8 @@ class VisualStudioLikeCompiler(Compiler, metaclass=abc.ABCMeta):
# As a last resort, try search in a compiled binary
return self._symbols_have_underscore_prefix_searchbin(env)
+ def get_pie_args(self) -> T.List[str]:
+ return []
class MSVCCompiler(VisualStudioLikeCompiler):
diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py
index 18157a36b..d00fd7a4b 100644
--- a/mesonbuild/linkers/linkers.py
+++ b/mesonbuild/linkers/linkers.py
@@ -1326,6 +1326,9 @@ class VisualStudioLikeLinkerMixin(DynamicLinkerBase):
def rsp_file_syntax(self) -> RSPFileSyntax:
return self.rsp_syntax
+ def get_pie_args(self) -> T.List[str]:
+ return []
+
class MSVCDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker):