def actualize_location(self, target): assert isinstance(target, basestring) engine = self.project_.manager_.engine() if self.action_: # This is a derived file. path = self.path() engine.set_target_variable(target, 'LOCATE', path) # Make sure the path exists. engine.add_dependency(target, path) common.mkdir(engine, path) # It's possible that the target name includes a directory # too, for example when installing headers. Create that # directory. d = os.path.dirname(get_value(target)) if d: d = os.path.join(path, d) engine.add_dependency(target, d) common.mkdir(engine, d) # For real file target, we create a fake target that # depends on the real target. This allows to run # # bjam hello.o # # without trying to guess the name of the real target. # Note the that target has no directory name, and a special # grist <e>. # # First, that means that "bjam hello.o" will build all # known hello.o targets. # Second, the <e> grist makes sure this target won't be confused # with other targets, for example, if we have subdir 'test' # with target 'test' in it that includes 'test.o' file, # then the target for directory will be just 'test' the target # for test.o will be <ptest/bin/gcc/debug>test.o and the target # we create below will be <e>test.o engine.add_dependency("<e>%s" % get_value(target), target) # Allow bjam <path-to-file>/<file> to work. This won't catch all # possible ways to refer to the path (relative/absolute, extra ".", # various "..", but should help in obvious cases. engine.add_dependency( "<e>%s" % (os.path.join(path, get_value(target))), target) else: # This is a source file. engine.set_target_variable(target, 'SEARCH', self.project_.get('source-location'))
def actualize_location (self, target): assert isinstance(target, basestring) engine = self.project_.manager_.engine () if self.action_: # This is a derived file. path = self.path () engine.set_target_variable (target, 'LOCATE', path) # Make sure the path exists. engine.add_dependency (target, path) common.mkdir(engine, path) # It's possible that the target name includes a directory # too, for example when installing headers. Create that # directory. d = os.path.dirname(get_value(target)) if d: d = os.path.join(path, d) engine.add_dependency(target, d) common.mkdir(engine, d) # For real file target, we create a fake target that # depends on the real target. This allows to run # # bjam hello.o # # without trying to guess the name of the real target. # Note the that target has no directory name, and a special # grist <e>. # # First, that means that "bjam hello.o" will build all # known hello.o targets. # Second, the <e> grist makes sure this target won't be confused # with other targets, for example, if we have subdir 'test' # with target 'test' in it that includes 'test.o' file, # then the target for directory will be just 'test' the target # for test.o will be <ptest/bin/gcc/debug>test.o and the target # we create below will be <e>test.o engine.add_dependency("<e>%s" % get_value(target), target) # Allow bjam <path-to-file>/<file> to work. This won't catch all # possible ways to refer to the path (relative/absolute, extra ".", # various "..", but should help in obvious cases. engine.add_dependency("<e>%s" % (os.path.join(path, get_value(target))), target) else: # This is a source file. engine.set_target_variable (target, 'SEARCH', self.project_.get ('source-location'))