diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-17 21:11:50 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2013-02-17 21:11:50 +0200 |
commit | 9418ece26a83c3c9925ace74eef20b3c19058bbb (patch) | |
tree | e4e48f4808d36a78dfda5930b2dddc1e8198daec /builder.py | |
parent | baaa9882910d88cc5d5b550169de7e9a99b536cc (diff) | |
download | meson-9418ece26a83c3c9925ace74eef20b3c19058bbb.zip meson-9418ece26a83c3c9925ace74eef20b3c19058bbb.tar.gz meson-9418ece26a83c3c9925ace74eef20b3c19058bbb.tar.bz2 |
Renamed system from builder to Meson.
Diffstat (limited to 'builder.py')
-rwxr-xr-x | builder.py | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/builder.py b/builder.py deleted file mode 100755 index 536ddfe..0000000 --- a/builder.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/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. - -from optparse import OptionParser -import sys, stat -import os.path -import environment, interpreter -import generators, build - -version = '0.1-research' - -usage_info = '%prog [options] source_dir build_dir' - -parser = OptionParser(usage=usage_info, version=version) - -build_types = ['plain', 'debug', 'optimized'] -buildtype_help = 'build type, one of: %s' % ', '.join(build_types) -buildtype_help += ' (default: %default)' - -parser.add_option('--prefix', default='/usr/local', dest='prefix', - help='the installation prefix (default: %default)') -parser.add_option('--libdir', default='lib', dest='libdir', - help='the installation subdir of libraries (default: %default)') -parser.add_option('--bindir', default='bin', dest='bindir', - help='the installation subdir of executables (default: %default)') -parser.add_option('--includedir', default='include', dest='includedir', - help='relative path of installed headers (default: %default)') -parser.add_option('--datadir', default='share', dest='datadir', - help='relative path to the top of data file subdirectory (default: %default)') -parser.add_option('--mandir' , default='share/man', dest='mandir', - help='relatie path of man files (default: %default)') -parser.add_option('-G', '--generator', default='ninja', dest='generator', - help='the backend generator to use (default: %default)') -parser.add_option('--buildtype', default='debug', type='choice', choices=build_types, dest='buildtype', - help=buildtype_help) -parser.add_option('--strip', action='store_true', dest='strip', default=False,\ - help='strip targets on install (default: %default)') - -class BuilderApp(): - - def __init__(self, dir1, dir2, script_file, options): - (self.source_dir, self.build_dir) = self.validate_dirs(dir1, dir2) - if options.prefix[0] != '/': - raise RuntimeError('--prefix must be an absolute path.') - self.builder_script_file = script_file - self.options = options - - def has_builder_file(self, dirname): - fname = os.path.join(dirname, environment.builder_filename) - try: - ifile = open(fname, 'r') - ifile.close() - return True - except IOError: - return False - - def validate_dirs(self, dir1, dir2): - ndir1 = os.path.abspath(dir1) - ndir2 = os.path.abspath(dir2) - if not stat.S_ISDIR(os.stat(ndir1).st_mode): - raise RuntimeError('%s is not a directory' % dir1) - if not stat.S_ISDIR(os.stat(ndir2).st_mode): - raise RuntimeError('%s is not a directory' % dir2) - self.options = options - if os.path.samefile(dir1, dir2): - raise RuntimeError('Source and build directories must not be the same. Create a pristine build directory.') - if self.has_builder_file(ndir1): - if self.has_builder_file(ndir2): - raise RuntimeError('Both directories contain a builder file %s.' % environment.builder_filename) - return (ndir1, ndir2) - if self.has_builder_file(ndir2): - return (ndir2, ndir1) - raise RuntimeError('Neither directory contains a builder file %s.' % environment.builder_filename) - - def generate(self): - env = environment.Environment(self.source_dir, self.build_dir, self.builder_script_file, options) - b = build.Build(env) - intr = interpreter.Interpreter(b) - intr.run() - if options.generator == 'shell': - g = generators.ShellGenerator(b, intr) - elif options.generator == 'ninja': - g = generators.NinjaGenerator(b, intr) - else: - raise RuntimeError('Unknown generator "%s".' % options.generator) - g.generate() - -if __name__ == '__main__': - (options, args) = parser.parse_args(sys.argv) - if len(args) == 1 or len(args) > 3: - print('%s <source directory> <build directory>' % sys.argv[0]) - print('If you omit either directory, the current directory is substituted.') - sys.exit(1) - dir1 = args[1] - if len(args) > 2: - dir2 = args[2] - else: - dir2 = '.' - this_file = os.path.abspath(__file__) - builder = BuilderApp(dir1, dir2, this_file, options) - print ('Source dir: ' + builder.source_dir) - print ('Build dir: ' + builder.build_dir) - builder.generate() - |