diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2016-01-16 17:35:29 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2016-01-16 17:35:29 +0200 |
commit | 23b98cd6e66c6ae0f070e28e0f8b1566c0b5e585 (patch) | |
tree | e349597556abe3d22578cfb1f9529f4626ceb5aa /mesonbuild/modules/windows.py | |
parent | 1510522b1b9970376a1e1cc5f39e00d8749ec19a (diff) | |
download | meson-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.py | 47 |
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() |