def __init__(self, name, subdir, subproject, is_cross, sources, objects, environment, kwargs):
    self.typename = 'executable'
    if (('pie' not in kwargs) and ('b_pie' in environment.coredata.base_options)):
        kwargs['pie'] = environment.coredata.base_options['b_pie'].value
    super().__init__(name, subdir, subproject, is_cross, sources, objects, environment, kwargs)
    if (not hasattr(self, 'prefix')):
        self.prefix = ''
    if (not hasattr(self, 'suffix')):
        if (for_windows(is_cross, environment) or for_cygwin(is_cross, environment) or ('cs' in self.compilers)):
            self.suffix = 'exe'
        elif ((('c' in self.compilers) and self.compilers['c'].get_id().startswith('arm')) or (('cpp' in self.compilers) and self.compilers['cpp'].get_id().startswith('arm'))):
            self.suffix = 'axf'
        elif ((('c' in self.compilers) and self.compilers['c'].get_id().startswith('ccrx')) or (('cpp' in self.compilers) and self.compilers['cpp'].get_id().startswith('ccrx'))):
            self.suffix = 'abs'
        else:
            self.suffix = ''
    self.filename = self.name
    if self.suffix:
        self.filename += ('.' + self.suffix)
    self.outputs = [self.filename]
    self.import_filename = None
    self.vs_import_filename = None
    self.gcc_import_filename = None
    self.export_dynamic = False
    if kwargs.get('export_dynamic'):
        if (not isinstance(kwargs['export_dynamic'], bool)):
            raise InvalidArguments('"export_dynamic" keyword argument must be a boolean')
        self.export_dynamic = True
    if kwargs.get('implib'):
        self.export_dynamic = True
    if (self.export_dynamic and (kwargs.get('implib') is False)):
        raise InvalidArguments('"implib" keyword argument must not be false for if "export_dynamic" is true')
    if self.export_dynamic:
        implib_basename = (self.name + '.exe')
        if (not isinstance(kwargs.get('implib', False), bool)):
            implib_basename = kwargs['implib']
        if (for_windows(is_cross, environment) or for_cygwin(is_cross, environment)):
            self.vs_import_filename = '{0}.lib'.format(implib_basename)
            self.gcc_import_filename = 'lib{0}.a'.format(implib_basename)
            if self.get_using_msvc():
                self.import_filename = self.vs_import_filename
            else:
                self.import_filename = self.gcc_import_filename
    self.is_linkwithable = self.export_dynamic
def __init__(self, name, subdir, subproject, is_cross, sources, objects, environment, kwargs):
    self.typename = 'executable'
    if (('pie' not in kwargs) and ('b_pie' in environment.coredata.base_options)):
        kwargs['pie'] = environment.coredata.base_options['b_pie'].value
    super().__init__(name, subdir, subproject, is_cross, sources, objects, environment, kwargs)
    if (not hasattr(self, 'prefix')):
        self.prefix = 
    if (not hasattr(self, 'suffix')):
        if (for_windows(is_cross, environment) or for_cygwin(is_cross, environment) or ('cs' in self.compilers)):
            self.suffix = 'exe'
        elif ((('c' in self.compilers) and self.compilers['c'].get_id().startswith('arm')) or (('cpp' in self.compilers) and self.compilers['cpp'].get_id().startswith('arm'))):
            self.suffix = 'axf'
        elif ((('c' in self.compilers) and self.compilers['c'].get_id().startswith('ccrx')) or (('cpp' in self.compilers) and self.compilers['cpp'].get_id().startswith('ccrx'))):
            self.suffix = 'abs'
        else:
            self.suffix = 
    self.filename = self.name
    if self.suffix:
        self.filename += ('.' + self.suffix)
    self.outputs = [self.filename]
    self.import_filename = None
    self.vs_import_filename = None
    self.gcc_import_filename = None
    self.export_dynamic = False
    if kwargs.get('export_dynamic'):
        if (not isinstance(kwargs['export_dynamic'], bool)):
            raise InvalidArguments('"export_dynamic" keyword argument must be a boolean')
        self.export_dynamic = True
    if kwargs.get('implib'):
        self.export_dynamic = True
    if (self.export_dynamic and (kwargs.get('implib') is False)):
        raise InvalidArguments('"implib" keyword argument must not be false for if "export_dynamic" is true')
    if self.export_dynamic:
        implib_basename = (self.name + '.exe')
        if (not isinstance(kwargs.get('implib', False), bool)):
            implib_basename = kwargs['implib']
        if (for_windows(is_cross, environment) or for_cygwin(is_cross, environment)):
            self.vs_import_filename = '{0}.lib'.format(implib_basename)
            self.gcc_import_filename = 'lib{0}.a'.format(implib_basename)
            if self.get_using_msvc():
                self.import_filename = self.vs_import_filename
            else:
                self.import_filename = self.gcc_import_filename
    self.is_linkwithable = self.export_dynamic