aboutsummaryrefslogtreecommitdiff
path: root/generators.py
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2013-02-08 22:05:46 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2013-02-08 22:05:46 +0200
commitcd9b636fe14de75b9fb9f62e675a7ecc879071af (patch)
treecfb6a330072cf4fe3f4237379d39c16832e222d2 /generators.py
parentcdf99fa3be509bf895c96da7c7ccb46d8dd0b2b0 (diff)
downloadmeson-cd9b636fe14de75b9fb9f62e675a7ecc879071af.zip
meson-cd9b636fe14de75b9fb9f62e675a7ecc879071af.tar.gz
meson-cd9b636fe14de75b9fb9f62e675a7ecc879071af.tar.bz2
Can install headers with Ninja.
Diffstat (limited to 'generators.py')
-rwxr-xr-xgenerators.py38
1 files changed, 26 insertions, 12 deletions
diff --git a/generators.py b/generators.py
index 535e9fe..44a7176 100755
--- a/generators.py
+++ b/generators.py
@@ -165,21 +165,25 @@ class NinjaGenerator(Generator):
def generate_install(self, outfile):
script_root = self.get_script_root()
install_script = os.path.join(script_root, 'builder_install.py')
- install_data = os.path.join(self.environment.get_scratch_dir(), 'install.dat')
- outfile.write('build install: CUSTOM_COMMAND | all\n')
- outfile.write(" COMMAND = '%s' '%s'\n\n" % (ninja_quote(install_script), ninja_quote(install_data)))
- self.generate_install_data(outfile, install_data)
-
- def generate_install_data(self, outfile, install_data_file):
+ install_data_file = os.path.join(self.environment.get_scratch_dir(), 'install.dat')
depfixer = os.path.join(self.get_script_root(), 'depfixer.py')
-
- prefix = self.environment.get_prefix()
d = InstallData(depfixer, './') # Fixme
+
+ outfile.write('build install: CUSTOM_COMMAND | all\n')
+ outfile.write(" COMMAND = '%s' '%s'\n\n" % (ninja_quote(install_script), ninja_quote(install_data_file)))
+ self.generate_target_install(d)
+ self.generate_header_install(d)
+ #self.generate_man_install(outfile)
+ #self.generate_data_install(outfile)
+ ofile = open(install_data_file, 'wb')
+ pickle.dump(d, ofile)
+
+ def generate_target_install(self, d):
+ prefix = self.environment.get_prefix()
libdir = os.path.join(prefix, self.environment.get_libdir())
bindir = os.path.join(prefix, self.environment.get_bindir())
- for tmp in self.build.get_targets().items():
- (name, t) = tmp
+ for t in self.build.get_targets().values():
if t.should_install():
if isinstance(t, interpreter.Executable):
outdir = bindir
@@ -187,8 +191,18 @@ class NinjaGenerator(Generator):
outdir = libdir
i = [os.path.join(self.environment.get_build_dir(), self.get_target_filename(t)), outdir]
d.targets.append(i)
- ofile = open(install_data_file, 'wb')
- pickle.dump(d, ofile)
+
+ def generate_header_install(self, d):
+ prefix = self.environment.get_prefix()
+ incroot = os.path.join(prefix, self.environment.get_includedir())
+ headers = self.build.get_headers()
+
+ for h in headers:
+ outdir = os.path.join(incroot, h.get_subdir())
+ for f in h.get_sources():
+ abspath = os.path.join(self.environment.get_source_dir(), f) # FIXME
+ i = [abspath, outdir]
+ d.headers.append(i)
def generate_tests(self, outfile):
script_root = self.get_script_root()