From 8d3bd6eea8e0504ddaa979b14ad230f327eb1185 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Thu, 21 Feb 2019 21:30:42 +0100 Subject: cmake: Server handshake --- mesonbuild/interpreter.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'mesonbuild/interpreter.py') diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py index 29e6632..05636db 100644 --- a/mesonbuild/interpreter.py +++ b/mesonbuild/interpreter.py @@ -31,6 +31,7 @@ from .interpreterbase import InterpreterObject, MutableInterpreterObject, Disabl from .interpreterbase import FeatureNew, FeatureDeprecated, FeatureNewKwargs from .interpreterbase import ObjectHolder from .modules import ModuleReturnValue +from .cmake import CMakeInterpreter import os, shutil, uuid import re, shlex @@ -2493,7 +2494,7 @@ external dependencies (including libraries) must go to "dependencies".''') if method == 'meson': return self.do_subproject_meson(dirname, subdir, default_options, required, kwargs) elif method == 'cmake': - return self.do_subproject_cmake(dirname, subdir, required, kwargs) + return self.do_subproject_cmake(dirname, subdir_abs, required, kwargs) else: raise InterpreterException('The method {} is invalid for the subproject {}'.format(method, dirname)) # Invalid code is always an error @@ -2513,7 +2514,7 @@ external dependencies (including libraries) must go to "dependencies".''') with mlog.nested(): new_build = self.build.copy() subi = Interpreter(new_build, self.backend, dirname, subdir, self.subproject_dir, - self.modules, default_options) + self.modules, default_options) subi.subprojects = self.subprojects subi.subproject_stack = self.subproject_stack + [dirname] @@ -2538,7 +2539,13 @@ external dependencies (including libraries) must go to "dependencies".''') return self.subprojects[dirname] def do_subproject_cmake(self, dirname, subdir, required, kwargs): - raise InterpreterException('CMake subprojects are currently a stub') + with mlog.nested(): + build_dir = os.path.join(self.environment.get_scratch_dir(), 'cmake_subp_{}'.format(dirname)) + new_build = self.build.copy() + subi = CMakeInterpreter(new_build, subdir, build_dir, new_build.environment, self.backend) + subi.run() + + return None def get_option_internal(self, optname): for opts in chain( -- cgit v1.1