Fix install with register_compile_target=0 register_install_target=1

If register_compile_target=0, `self.builddir` on DXXProgram was used but
not set.

```
AttributeError: 'D1XProgram' object has no attribute 'builddir':
  File "/s/SConstruct", line 5263:
    main(register_program)
  File "/s/SConstruct", line 5218:
    ''.join(['%s:\n%s' % (d.program_message_prefix, d.init(substenv)) for d in dxx])
  File "/s/SConstruct", line 4853:
    self.register_program()
  File "/s/SConstruct", line 4895:
    exe_target = self.builddir.File(exe_target)
```
This commit is contained in:
Kp 2019-06-01 21:13:49 +00:00
parent 7e362f9433
commit 4e18ed1ac9

View file

@ -3458,6 +3458,11 @@ class DXXCommon(LazyObjectConstructor):
@cached_property
def program_message_prefix(self):
return '%s.%d' % (self.PROGRAM_NAME, self.program_instance)
@cached_property
def builddir(self):
return self.env.Dir(self.user_settings.builddir)
# Settings which affect how the files are compiled
class UserBuildSettings:
class IntVariable(object):
@ -3952,8 +3957,9 @@ class DXXCommon(LazyObjectConstructor):
CXXFLAGS = ['-pthread'],
)
def __init__(self,__program_instance=itertools.count(1)):
def __init__(self,user_settings,__program_instance=itertools.count(1)):
self.program_instance = next(__program_instance)
self.user_settings = user_settings
def create_header_targets(self,__shared_header_file_list=[],__shared_cpp_dict={}):
fs = SCons.Node.FS.get_default_fs()
@ -4257,7 +4263,6 @@ class DXXCommon(LazyObjectConstructor):
if user_settings.editor:
add_flags['CPPPATH'].append('common/include/editor')
CLVar = SCons.Util.CLVar
self.builddir = env.Dir(user_settings.builddir)
for flags in ('CPPFLAGS', 'CXXFLAGS', 'LIBS', 'LINKFLAGS'):
value = getattr(self.user_settings, flags)
if value is not None:
@ -4501,8 +4506,8 @@ class DXXArchive(DXXCommon):
))
def __init__(self,user_settings):
DXXCommon.__init__(self)
self.user_settings = user_settings.clone()
user_settings = user_settings.clone()
DXXCommon.__init__(self, user_settings)
if not user_settings.register_compile_target:
return
self.prepare_environment()
@ -4832,13 +4837,13 @@ class DXXProgram(DXXCommon):
def __init__(self,prefix,variables,filtered_help):
self.variables = variables
self._argument_prefix_list = prefix
DXXCommon.__init__(self)
user_settings = self.UserSettings(program=self)
DXXCommon.__init__(self, user_settings)
git_describe_version = Git.compute_extra_version().describe
extra_version = 'v%s.%s.%s' % (self.VERSION_MAJOR, self.VERSION_MINOR, self.VERSION_MICRO)
if git_describe_version and not (extra_version == git_describe_version or extra_version[1:] == git_describe_version):
extra_version += ' ' + git_describe_version
print('===== %s %s =====' % (self.PROGRAM_NAME, extra_version))
self.user_settings = user_settings = self.UserSettings(program=self)
user_settings.register_variables(prefix, variables, filtered_help)
def init(self,substenv):