aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/linkers.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2017-06-25 15:41:37 -0400
committerGitHub <noreply@github.com>2017-06-25 15:41:37 -0400
commitce9cd33f27e8605c2d7fc77c3c2f086b6ac530ae (patch)
tree1237b06641a35362c060697705ab50ff014e3e1c /mesonbuild/linkers.py
parent1821598fbb856edc3cf87470171e85e8910a6f99 (diff)
parent117f4ab8b5c7ff0bdaabe42b0945a0963d43e477 (diff)
downloadmeson-ce9cd33f27e8605c2d7fc77c3c2f086b6ac530ae.zip
meson-ce9cd33f27e8605c2d7fc77c3c2f086b6ac530ae.tar.gz
meson-ce9cd33f27e8605c2d7fc77c3c2f086b6ac530ae.tar.bz2
Merge pull request #1853 from astavale/split-compilers-file
Split compilers file
Diffstat (limited to 'mesonbuild/linkers.py')
-rw-r--r--mesonbuild/linkers.py114
1 files changed, 114 insertions, 0 deletions
diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py
new file mode 100644
index 0000000..d0d5184
--- /dev/null
+++ b/mesonbuild/linkers.py
@@ -0,0 +1,114 @@
+# Copyright 2012-2017 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.
+
+from .mesonlib import Popen_safe
+
+class StaticLinker:
+ pass
+
+
+class VisualStudioLinker(StaticLinker):
+ always_args = ['/NOLOGO']
+
+ def __init__(self, exelist):
+ self.exelist = exelist
+
+ def get_exelist(self):
+ return self.exelist[:]
+
+ def get_std_link_args(self):
+ return []
+
+ def get_buildtype_linker_args(self, buildtype):
+ return []
+
+ def get_output_args(self, target):
+ return ['/OUT:' + target]
+
+ def get_coverage_link_args(self):
+ return []
+
+ def get_always_args(self):
+ return VisualStudioLinker.always_args
+
+ def get_linker_always_args(self):
+ return VisualStudioLinker.always_args
+
+ def build_rpath_args(self, build_dir, from_dir, rpath_paths, install_rpath):
+ return []
+
+ def thread_link_flags(self):
+ return []
+
+ def get_option_link_args(self, options):
+ return []
+
+ @classmethod
+ def unix_args_to_native(cls, args):
+ from .compilers import VisualStudioCCompiler
+ return VisualStudioCCompiler.unix_args_to_native(args)
+
+ def get_link_debugfile_args(self, targetfile):
+ # Static libraries do not have PDB files
+ return []
+
+
+class ArLinker(StaticLinker):
+
+ def __init__(self, exelist):
+ self.exelist = exelist
+ self.id = 'ar'
+ pc, stdo = Popen_safe(self.exelist + ['-h'])[0:2]
+ # Enable deterministic builds if they are available.
+ if '[D]' in stdo:
+ self.std_args = ['csrD']
+ else:
+ self.std_args = ['csr']
+
+ def build_rpath_args(self, build_dir, from_dir, rpath_paths, install_rpath):
+ return []
+
+ def get_exelist(self):
+ return self.exelist[:]
+
+ def get_std_link_args(self):
+ return self.std_args
+
+ def get_output_args(self, target):
+ return [target]
+
+ def get_buildtype_linker_args(self, buildtype):
+ return []
+
+ def get_linker_always_args(self):
+ return []
+
+ def get_coverage_link_args(self):
+ return []
+
+ def get_always_args(self):
+ return []
+
+ def thread_link_flags(self):
+ return []
+
+ def get_option_link_args(self, options):
+ return []
+
+ @classmethod
+ def unix_args_to_native(cls, args):
+ return args[:]
+
+ def get_link_debugfile_args(self, targetfile):
+ return []