cmake: Some minor style changes
This commit is contained in:
parent
493e505d58
commit
5c603a900b
|
@ -24,10 +24,10 @@ from ..mparser import Token, BaseNode, CodeBlockNode, FunctionNode, ArrayNode, A
|
|||
from ..backend.backends import Backend
|
||||
from ..dependencies.base import CMakeDependency, ExternalProgram
|
||||
from subprocess import Popen, PIPE, STDOUT
|
||||
from typing import Dict, List
|
||||
from typing import List
|
||||
import os, re
|
||||
|
||||
CMAKE_BACKEND_GENERATOR_MAP = {
|
||||
backend_generator_map = {
|
||||
'ninja': 'Ninja',
|
||||
'xcode': 'Xcode',
|
||||
'vs2010': 'Visual Studio 10 2010',
|
||||
|
@ -35,7 +35,7 @@ CMAKE_BACKEND_GENERATOR_MAP = {
|
|||
'vs2017': 'Visual Studio 15 2017',
|
||||
}
|
||||
|
||||
CMAKE_LANGUAGE_MAP = {
|
||||
language_map = {
|
||||
'c': 'C',
|
||||
'cpp': 'CXX',
|
||||
'cuda': 'CUDA',
|
||||
|
@ -45,7 +45,7 @@ CMAKE_LANGUAGE_MAP = {
|
|||
'swift': 'Swift',
|
||||
}
|
||||
|
||||
CMAKE_TGT_TYPE_MAP = {
|
||||
target_type_map = {
|
||||
'STATIC_LIBRARY': 'static_library',
|
||||
'MODULE_LIBRARY': 'shared_module',
|
||||
'SHARED_LIBRARY': 'shared_library',
|
||||
|
@ -53,10 +53,12 @@ CMAKE_TGT_TYPE_MAP = {
|
|||
'OBJECT_LIBRARY': 'static_library',
|
||||
}
|
||||
|
||||
CMAKE_TGT_SKIP = ['UTILITY']
|
||||
skip_targets = ['UTILITY']
|
||||
|
||||
skip_input_extensions = ['.rule']
|
||||
|
||||
class ConverterTarget:
|
||||
lang_cmake_to_meson = {val.lower(): key for key, val in CMAKE_LANGUAGE_MAP.items()}
|
||||
lang_cmake_to_meson = {val.lower(): key for key, val in language_map.items()}
|
||||
|
||||
def __init__(self, target: CMakeTarget, env: Environment):
|
||||
self.env = env
|
||||
|
@ -116,7 +118,7 @@ class ConverterTarget:
|
|||
def postprocess(self, output_target_map: dict, root_src_dir: str, subdir: str, install_prefix: str) -> None:
|
||||
# Detect setting the C and C++ standard
|
||||
for i in ['c', 'cpp']:
|
||||
if not i in self.compile_opts:
|
||||
if i not in self.compile_opts:
|
||||
continue
|
||||
|
||||
temp = []
|
||||
|
@ -158,8 +160,12 @@ class ConverterTarget:
|
|||
|
||||
build_dir_rel = os.path.relpath(self.build_dir, os.path.join(self.env.get_build_dir(), subdir))
|
||||
self.includes = list(set([rel_path(x) for x in set(self.includes)] + [build_dir_rel]))
|
||||
self.sources = [rel_path(x) for x in self.sources if not x.endswith('.rule')]
|
||||
self.generated = [rel_path(x) for x in self.generated if not x.endswith('.rule')]
|
||||
self.sources = [rel_path(x) for x in self.sources]
|
||||
self.generated = [rel_path(x) for x in self.generated]
|
||||
|
||||
# Filter out CMake rule files
|
||||
self.sources = [x for x in self.sources if not any([x.endswith(y) for y in skip_input_extensions])]
|
||||
self.generated = [x for x in self.generated if not any([x.endswith(y) for y in skip_input_extensions])]
|
||||
|
||||
# Make sure '.' is always in the include directories
|
||||
if '.' not in self.includes:
|
||||
|
@ -182,7 +188,7 @@ class ConverterTarget:
|
|||
break
|
||||
|
||||
def meson_func(self) -> str:
|
||||
return CMAKE_TGT_TYPE_MAP.get(self.type.upper())
|
||||
return target_type_map.get(self.type.upper())
|
||||
|
||||
def log(self) -> None:
|
||||
mlog.log('Target', mlog.bold(self.name))
|
||||
|
@ -235,14 +241,14 @@ class CMakeInterpreter:
|
|||
if not cmake_exe.found():
|
||||
raise CMakeException('Unable to find CMake')
|
||||
|
||||
generator = CMAKE_BACKEND_GENERATOR_MAP[self.backend_name]
|
||||
generator = backend_generator_map[self.backend_name]
|
||||
cmake_args = cmake_exe.get_command()
|
||||
|
||||
# Map meson compiler to CMake variables
|
||||
for lang, comp in self.build.compilers.items():
|
||||
if lang not in CMAKE_LANGUAGE_MAP:
|
||||
if lang not in language_map:
|
||||
continue
|
||||
cmake_lang = CMAKE_LANGUAGE_MAP[lang]
|
||||
cmake_lang = language_map[lang]
|
||||
exelist = comp.get_exelist()
|
||||
if len(exelist) == 1:
|
||||
cmake_args += ['-DCMAKE_{}_COMPILER={}'.format(cmake_lang, exelist[0])]
|
||||
|
@ -284,7 +290,7 @@ class CMakeInterpreter:
|
|||
self.configure(extra_cmake_options)
|
||||
|
||||
with self.client.connect():
|
||||
generator = CMAKE_BACKEND_GENERATOR_MAP[self.backend_name]
|
||||
generator = backend_generator_map[self.backend_name]
|
||||
self.client.do_handshake(self.src_dir, self.build_dir, generator, 1)
|
||||
|
||||
# Do a second configure to initialise the server
|
||||
|
@ -320,7 +326,7 @@ class CMakeInterpreter:
|
|||
if not self.project_name:
|
||||
self.project_name = j.name
|
||||
for k in j.targets:
|
||||
if k.type not in CMAKE_TGT_SKIP:
|
||||
if k.type not in skip_targets:
|
||||
self.targets += [ConverterTarget(k, self.env)]
|
||||
|
||||
output_target_map = {x.full_name: x for x in self.targets}
|
||||
|
@ -391,8 +397,8 @@ class CMakeInterpreter:
|
|||
# Generate the root code block and the project function call
|
||||
root_cb = CodeBlockNode(token())
|
||||
root_cb.lines += [function('project', [self.project_name] + self.languages)]
|
||||
|
||||
processed = {}
|
||||
|
||||
def process_target(tgt: ConverterTarget):
|
||||
# First handle inter target dependencies
|
||||
link_with = []
|
||||
|
|
Loading…
Reference in New Issue