Example #1
0
 def __parse_project_configuration_platforms(self, context, sln_text, sln_projects_data):
     projects_configurations_re = re.compile(
         r'GlobalSection\(ProjectConfigurationPlatforms\) = '
         r'postSolution((?:.|\n)*?)EndGlobalSection'
     )
     projects_configurations_matches = projects_configurations_re.findall(sln_text)
     projects_configuration_re = re.compile(r'({.+\})\.([\w -|]+)\.ActiveCfg = ([\w -|]+)')
     for projects_configuration_match in projects_configurations_matches:
         sln_config_groups = projects_configuration_re.findall(projects_configuration_match)
         for sln_config_group in sln_config_groups:
             if not self.__check_project_guid(context, sln_projects_data, sln_config_group[0]):
                 continue
             p = sln_projects_data[sln_config_group[0]]
             sln_cmake_configuration = make_cmake_configuration(context, sln_config_group[1])
             project_cmake_configuration = make_cmake_configuration(context, sln_config_group[2])
             p['sln_configs_2_project_configs'][tuple(sln_cmake_configuration.split('|'))] = \
                 tuple(project_cmake_configuration.split('|'))
             message(
                 context,
                 '    "{}" -> "{}" for {}'.format(
                     sln_cmake_configuration,
                     project_cmake_configuration,
                     p['name']
                 ),
                 ''
             )
Example #2
0
    def __parse_configurations_of_solution(context, sln_text, solution_data):
        solution_configurations_re = re.compile(
            r'GlobalSection\(SolutionConfigurationPlatforms\) = '
            r'preSolution((?:.|\n)*?)EndGlobalSection')

        solution_configurations_matches = solution_configurations_re.findall(
            sln_text)
        solution_data['sln_configurations'] = []
        sln_configuration_re = re.compile(r'([\w -|]+) = ([\w -|]+)')
        for solution_configuration_match in solution_configurations_matches:
            configurations = sln_configuration_re.findall(
                solution_configuration_match)
            for sln_configuration in configurations:
                cmake_configuration = make_cmake_configuration(
                    context, sln_configuration[0])
                solution_data['sln_configurations'].append(cmake_configuration)
                message(
                    context,
                    '    Found sln setting "{}"'.format(cmake_configuration),
                    '')
                arch = cmake_configuration.split('|')[1]
                if arch == 'x86' and not context.is_android:
                    message(
                        context,
                        'Solution architecture is x86 and may be mapped onto Win32 at projects.'
                        'To avoid problems rename x86 -> Win32.', 'warn')
                context.supported_architectures.add(arch)
    def __parse_project_configuration_include(context, attr_name, setting,
                                              project_configuration_node):
        del attr_name, project_configuration_node

        cmake_setting = make_cmake_configuration(context, setting)
        setting = tuple(cmake_setting.split('|'))

        if setting not in context.configurations_to_parse:
            return

        context.current_setting = setting
        context.utils.init_context_current_setting(context)
        context.current_setting = (None, None)
    def __parse_configuration_name(self, context, attr_name, configuration_name, node):
        del attr_name

        cmake_setting = make_cmake_configuration(context, configuration_name)
        setting = tuple(cmake_setting.split('|'))

        if setting not in context.configurations_to_parse:
            context.current_setting = (None, None)
            raise StopParseException()

        context.current_setting = setting
        self.common_diagnostics_value = None
        self.common_runtime_checks_value = None
        context.utils.init_context_current_setting(context)
        self.reset_current_setting_after_parsing_node(node)
    def __parse_condition(self, context, attr_name, condition_value, node):
        del attr_name

        found = re.search(r".*=='(.*)'", condition_value)
        if not found:
            return

        cmake_setting = make_cmake_configuration(context, found.group(1))
        setting = tuple(cmake_setting.split('|'))
        if setting in context.settings:
            context.current_setting = setting
            context.flags.prepare_context_for_flags(context)
            self.reset_current_setting_after_parsing_node(node)
        else:
            context.current_setting = (None, None)
            raise StopParseException()