aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/modules/windows.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-01-16 17:35:29 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-01-16 17:35:29 +0200
commit23b98cd6e66c6ae0f070e28e0f8b1566c0b5e585 (patch)
treee349597556abe3d22578cfb1f9529f4626ceb5aa /mesonbuild/modules/windows.py
parent1510522b1b9970376a1e1cc5f39e00d8749ec19a (diff)
downloadmeson-23b98cd6e66c6ae0f070e28e0f8b1566c0b5e585.zip
meson-23b98cd6e66c6ae0f070e28e0f8b1566c0b5e585.tar.gz
meson-23b98cd6e66c6ae0f070e28e0f8b1566c0b5e585.tar.bz2
Renamed meson package to mesonbuild so that we can have a script named meson in the same toplevel dir.
Diffstat (limited to 'mesonbuild/modules/windows.py')
-rw-r--r--mesonbuild/modules/windows.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/mesonbuild/modules/windows.py b/mesonbuild/modules/windows.py
new file mode 100644
index 0000000..a785250
--- /dev/null
+++ b/mesonbuild/modules/windows.py
@@ -0,0 +1,47 @@
+# Copyright 2015 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 .. import mesonlib, dependencies, build
+from ..coredata import MesonException
+import os
+
+class WindowsModule:
+
+ def detect_compiler(self, compilers):
+ for c in compilers:
+ if c.language == 'c' or c.language == 'cpp':
+ return c
+ raise MesonException('Resource compilation requires a C or C++ compiler.')
+
+ def compile_resources(self, state, args, kwargs):
+ comp = self.detect_compiler(state.compilers)
+ extra_args = mesonlib.stringlistify(kwargs.get('args', []))
+ if comp.id == 'msvc':
+ rescomp = dependencies.ExternalProgram('rc', silent=True)
+ res_args = extra_args + ['/nologo', '/fo@OUTPUT@', '@INPUT@']
+ suffix = 'res'
+ else:
+ rescomp = dependencies.ExternalProgram('windres', silent=True)
+ res_args = extra_args + ['@INPUT@', '@OUTPUT@']
+ suffix = 'o'
+ res_files = mesonlib.stringlistify(args)
+ res_kwargs = {'output' : '@BASENAME@.' + suffix,
+ 'arguments': res_args}
+ res_gen = build.Generator([rescomp], res_kwargs)
+ res_output = build.GeneratedList(res_gen)
+ [res_output.add_file(os.path.join(state.subdir, a)) for a in res_files]
+ return res_output
+
+def initialize():
+ return WindowsModule()