aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/compilers/c.py15
-rw-r--r--mesonbuild/compilers/cpp.py15
-rw-r--r--mesonbuild/compilers/mixins/emscripten.py33
3 files changed, 37 insertions, 26 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index 9dc3ef7..7c46627 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -28,6 +28,7 @@ from .mixins.clang import ClangCompiler
from .mixins.elbrus import ElbrusCompiler
from .mixins.pgi import PGICompiler
from .mixins.islinker import BasicLinkerIsCompilerMixin, LinkerEnvVarsMixin
+from .mixins.emscripten import EmscriptenMixin
from .compilers import (
gnu_winlibs,
msvc_winlibs,
@@ -131,7 +132,7 @@ class AppleClangCCompiler(ClangCCompiler):
_C18_VERSION = '>=11.0.0'
-class EmscriptenCCompiler(LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, ClangCCompiler):
+class EmscriptenCCompiler(LinkerEnvVarsMixin, EmscriptenMixin, BasicLinkerIsCompilerMixin, ClangCCompiler):
def __init__(self, exelist, version, for_machine: MachineChoice,
is_cross: bool, info: 'MachineInfo', exe_wrapper=None, **kwargs):
if not is_cross:
@@ -141,18 +142,6 @@ class EmscriptenCCompiler(LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, ClangC
info=info, exe_wrapper=exe_wrapper, **kwargs)
self.id = 'emscripten'
- def get_option_link_args(self, options):
- return []
-
- def get_soname_args(self, *args, **kwargs):
- raise MesonException('Emscripten does not support shared libraries.')
-
- def get_allow_undefined_link_args(self) -> typing.List[str]:
- return ['-s', 'ERROR_ON_UNDEFINED_SYMBOLS=0']
-
- def get_linker_output_args(self, output: str) -> typing.List[str]:
- return ['-o', output]
-
class ArmclangCCompiler(ArmclangCompiler, CCompiler):
def __init__(self, exelist, version, for_machine: MachineChoice,
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index f10e33c..4e92590 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -37,6 +37,7 @@ from .mixins.clang import ClangCompiler
from .mixins.elbrus import ElbrusCompiler
from .mixins.pgi import PGICompiler
from .mixins.islinker import BasicLinkerIsCompilerMixin, LinkerEnvVarsMixin
+from .mixins.emscripten import EmscriptenMixin
if typing.TYPE_CHECKING:
from ..envconfig import MachineInfo
@@ -194,7 +195,7 @@ class AppleClangCPPCompiler(ClangCPPCompiler):
pass
-class EmscriptenCPPCompiler(LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, ClangCPPCompiler):
+class EmscriptenCPPCompiler(LinkerEnvVarsMixin, EmscriptenMixin, BasicLinkerIsCompilerMixin, ClangCPPCompiler):
def __init__(self, exelist, version, for_machine: MachineChoice,
is_cross: bool, info: 'MachineInfo', exe_wrapper=None, **kwargs):
if not is_cross:
@@ -211,18 +212,6 @@ class EmscriptenCPPCompiler(LinkerEnvVarsMixin, BasicLinkerIsCompilerMixin, Clan
args.append(self._find_best_cpp_std(std.value))
return args
- def get_option_link_args(self, options):
- return []
-
- def get_soname_args(self, *args, **kwargs):
- raise MesonException('Emscripten does not support shared libraries.')
-
- def get_allow_undefined_link_args(self) -> typing.List[str]:
- return ['-s', 'ERROR_ON_UNDEFINED_SYMBOLS=0']
-
- def get_linker_output_args(self, output: str) -> typing.List[str]:
- return ['-o', output]
-
class ArmclangCPPCompiler(ArmclangCompiler, CPPCompiler):
def __init__(self, exelist, version, for_machine: MachineChoice,
diff --git a/mesonbuild/compilers/mixins/emscripten.py b/mesonbuild/compilers/mixins/emscripten.py
new file mode 100644
index 0000000..742d528
--- /dev/null
+++ b/mesonbuild/compilers/mixins/emscripten.py
@@ -0,0 +1,33 @@
+# Copyright 2019 The meson development team
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Provides a mixin for shared code between C and C++ Emscripten compilers."""
+
+import os.path
+import typing
+
+from ...mesonlib import MesonException
+
+class EmscriptenMixin:
+ def get_option_link_args(self, options):
+ return []
+
+ def get_soname_args(self, *args, **kwargs):
+ raise MesonException('Emscripten does not support shared libraries.')
+
+ def get_allow_undefined_link_args(self) -> typing.List[str]:
+ return ['-s', 'ERROR_ON_UNDEFINED_SYMBOLS=0']
+
+ def get_linker_output_args(self, output: str) -> typing.List[str]:
+ return ['-o', output]