diff options
| author | Jonathan Schleifer <js@nil.im> | 2024-08-04 14:55:33 +0200 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-08-08 15:56:43 -0700 |
| commit | 81b151f61138357950330f26b601e0b345bf77fa (patch) | |
| tree | a1cf56aaf434423bb407e65a418b46b303d93c4f /mesonbuild | |
| parent | 43b80e02ce0e87dfcf069111e62ad8eff4435d6e (diff) | |
| download | meson-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.py | 2 | ||||
| -rw-r--r-- | mesonbuild/compilers/detect.py | 4 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/clang.py | 2 | ||||
| -rw-r--r-- | mesonbuild/compilers/mixins/visualstudio.py | 2 | ||||
| -rw-r--r-- | mesonbuild/linkers/linkers.py | 3 |
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): |
