diff options
-rwxr-xr-x | backends.py | 12 | ||||
-rw-r--r-- | coredata.py | 33 | ||||
-rwxr-xr-x | environment.py | 17 |
3 files changed, 49 insertions, 13 deletions
diff --git a/backends.py b/backends.py index ff80a59..1262aaa 100755 --- a/backends.py +++ b/backends.py @@ -121,11 +121,11 @@ class Backend(): commands = [] commands += self.build.get_global_flags(compiler) commands += target.get_extra_args(compiler.get_language()) - if self.environment.options.buildtype != 'plain': + if self.environment.new_coredata.buildtype != 'plain': commands += compiler.get_debug_flags() - if self.environment.options.buildtype == 'optimized': + if self.environment.new_coredata.buildtype == 'optimized': commands += compiler.get_std_opt_flags() - if self.environment.options.coverage: + if self.environment.new_coredata.coverage: commands += compiler.get_coverage_flags() commands += compiler.get_std_warn_flags() if isinstance(target, interpreter.SharedLibrary): @@ -175,7 +175,7 @@ class NinjaBackend(Backend): self.generate_tests(outfile) outfile.write('# Install rules\n\n') self.generate_install(outfile) - if self.environment.options.coverage: + if self.environment.new_coredata.coverage: outfile.write('# Coverage rules\n\n') self.generate_coverage_rules(outfile) outfile.write('# Suffix\n\n') @@ -231,7 +231,7 @@ class NinjaBackend(Backend): libdir = self.environment.get_libdir() bindir = self.environment.get_bindir() - should_strip = self.environment.options.strip + should_strip = self.environment.new_coredata.strip for t in self.build.get_targets().values(): if t.should_install(): if isinstance(t, interpreter.Executable): @@ -454,7 +454,7 @@ class NinjaBackend(Backend): commands += dep.get_link_flags() dependencies = target.get_dependencies() commands += self.build_target_link_arguments(dependencies) - if self.environment.options.coverage: + if self.environment.new_coredata.coverage: commands += linker.get_coverage_link_flags() if len(dependencies) == 0: dep_targets = '' diff --git a/coredata.py b/coredata.py new file mode 100644 index 0000000..8e67afa --- /dev/null +++ b/coredata.py @@ -0,0 +1,33 @@ +#!/usr/bin/python3 -tt + +# Copyright 2012 Jussi Pakkanen + +# 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. + +# This file contains all data that must persist over multiple +# invocations of Meson. It is roughly the same thing as +# cmakecache. + +class CoreData(): + + def __init__(self, options): + self.prefix = options.prefix + self.libdir = options.libdir + self.bindir = options.bindir + self.includedir = options.includedir + self.datadir = options.datadir + self.mandir = options.mandir + self.backend = options.backend + self.buildtype = options.buildtype + self.strip = options.strip + self.coverage = options.coverage diff --git a/environment.py b/environment.py index 2a523c6..8140e89 100755 --- a/environment.py +++ b/environment.py @@ -15,6 +15,7 @@ # limitations under the License. import subprocess, os.path +import coredata build_filename = 'meson.build' @@ -232,10 +233,12 @@ class Environment(): self.source_dir = source_dir self.build_dir = build_dir self.meson_script_file = main_script_file - self.options = options self.scratch_dir = os.path.join(build_dir, 'meson-private') os.makedirs(self.scratch_dir, exist_ok=True) + self.old_coredata = coredata.CoreData(options) # FIXME: read from disk + self.new_coredata = coredata.CoreData(self.old_coredata) + self.default_c = ['cc'] self.default_cxx = ['c++'] self.default_static_linker = ['ar'] @@ -356,22 +359,22 @@ class Environment(): return self.object_suffix def get_prefix(self): - return self.options.prefix + return self.new_coredata.prefix def get_libdir(self): - return self.options.libdir + return self.new_coredata.libdir def get_bindir(self): - return self.options.bindir + return self.new_coredata.bindir def get_includedir(self): - return self.options.includedir + return self.new_coredata.includedir def get_mandir(self): - return self.options.mandir + return self.new_coredata.mandir def get_datadir(self): - return self.options.datadir + return self.new_coredata.datadir class Dependency(): def __init__(self): |