meson_to_hermetic: Add build state tracker
First part of capturing the transient state of build configs. Currently adds prototype classes, does not assign any values yet. Test: Run build-<platform>-turnip.sh Bug: 357080225 Change-Id: I3a5e04610041f93c1b2b9079296085386a372c19
This commit is contained in:
parent
53e17f1524
commit
667533d690
5 changed files with 90 additions and 12 deletions
|
|
@ -72,6 +72,7 @@ platforms = 'none'
|
||||||
gallium-drivers = 'swrast'
|
gallium-drivers = 'swrast'
|
||||||
vulkan-drivers = ''
|
vulkan-drivers = ''
|
||||||
glx = 'disabled'
|
glx = 'disabled'
|
||||||
|
shared-glapi = 'disabled'
|
||||||
|
|
||||||
[project_config.host_machine]
|
[project_config.host_machine]
|
||||||
cpu_family = 'x86_64'
|
cpu_family = 'x86_64'
|
||||||
|
|
|
||||||
51
meson_to_hermetic/meson_build_state.py
Normal file
51
meson_to_hermetic/meson_build_state.py
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
"""
|
||||||
|
Copyright 2024 Google LLC
|
||||||
|
SPDX-License-Identifier: MIT
|
||||||
|
"""
|
||||||
|
|
||||||
|
class StaticLibrary:
|
||||||
|
"""
|
||||||
|
Represents the cc_library_static / cc_library module in build files
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
"""
|
||||||
|
Attributes here favor a Soong attribute naming scheme
|
||||||
|
"""
|
||||||
|
self.name: str = ''
|
||||||
|
self.srcs: list[str] = []
|
||||||
|
# In Bazel, these headers are one merged list.
|
||||||
|
self.generated_headers: list[str] = []
|
||||||
|
self.generated_sources: list[str] = []
|
||||||
|
# In Bazel, these c options are copts
|
||||||
|
self.cstd: str = ''
|
||||||
|
self.cpp_std: str = ''
|
||||||
|
self.conlyflags: list[str] = []
|
||||||
|
self.cppflags: list[str] = []
|
||||||
|
|
||||||
|
self.deps: list[str] = []
|
||||||
|
self.target_compatible_with: list[str] = []
|
||||||
|
self.visibility: list[str] = []
|
||||||
|
|
||||||
|
self.local_include_dirs: list[str] = []
|
||||||
|
self.static_libs: list[str] = []
|
||||||
|
self.whole_static_libs: list[str] = []
|
||||||
|
self.shared_libs: list[str] = []
|
||||||
|
self.header_libs: list[str] = []
|
||||||
|
|
||||||
|
class CustomTarget:
|
||||||
|
"""
|
||||||
|
Denoted as genrule in both build files
|
||||||
|
"""
|
||||||
|
def __init__(self):
|
||||||
|
self.name: str = ''
|
||||||
|
self.srcs: list[str] = []
|
||||||
|
self.out: list[str] = [] # 'outs' in bazel
|
||||||
|
self.tools: list[str] = []
|
||||||
|
self.export_include_dirs: list[str] = []
|
||||||
|
self.cmd: str = ''
|
||||||
|
|
||||||
|
class PythonCustomTarget(CustomTarget):
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__()
|
||||||
|
self.imports: list[str] = []
|
||||||
|
self.version = {}
|
||||||
|
|
@ -331,3 +331,7 @@ def install_data(
|
||||||
sources=[],
|
sources=[],
|
||||||
):
|
):
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
|
def subdir(dir_=''):
|
||||||
|
return
|
||||||
|
|
|
||||||
|
|
@ -510,7 +510,17 @@ class Compiler(ABC):
|
||||||
|
|
||||||
|
|
||||||
class PkgConfigModule:
|
class PkgConfigModule:
|
||||||
def generate(self, lib, name='', description='', extra_cflags=None):
|
def generate(
|
||||||
|
self,
|
||||||
|
lib,
|
||||||
|
name='',
|
||||||
|
description='',
|
||||||
|
extra_cflags=None,
|
||||||
|
filebase='',
|
||||||
|
version='',
|
||||||
|
libraries=None,
|
||||||
|
libraries_private=None,
|
||||||
|
):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -240,7 +240,17 @@ class BazelGenerator(impl.Compiler):
|
||||||
|
|
||||||
|
|
||||||
class BazelPkgConfigModule(impl.PkgConfigModule):
|
class BazelPkgConfigModule(impl.PkgConfigModule):
|
||||||
def generate(self, lib, name='', description='', extra_cflags=None):
|
def generate(
|
||||||
|
self,
|
||||||
|
lib,
|
||||||
|
name='',
|
||||||
|
description='',
|
||||||
|
extra_cflags=None,
|
||||||
|
filebase='',
|
||||||
|
version='',
|
||||||
|
libraries=None,
|
||||||
|
libraries_private=None,
|
||||||
|
):
|
||||||
if extra_cflags is None:
|
if extra_cflags is None:
|
||||||
extra_cflags = []
|
extra_cflags = []
|
||||||
impl.fprint('# package library')
|
impl.fprint('# package library')
|
||||||
|
|
@ -274,7 +284,9 @@ class MesonTranslator:
|
||||||
print('CONFIG:', self._config_file)
|
print('CONFIG:', self._config_file)
|
||||||
self._init_metadata()
|
self._init_metadata()
|
||||||
_generator = (
|
_generator = (
|
||||||
SoongGenerator(self.config.cpu_family) if self._build.lower() == 'soong' else BazelGenerator(self.config.cpu_family)
|
SoongGenerator(self.config.cpu_family)
|
||||||
|
if self._build.lower() == 'soong'
|
||||||
|
else BazelGenerator(self.config.cpu_family)
|
||||||
)
|
)
|
||||||
self._generator: impl.Compiler = _generator
|
self._generator: impl.Compiler = _generator
|
||||||
return self
|
return self
|
||||||
|
|
@ -351,10 +363,6 @@ def close_output_file():
|
||||||
impl.close_output_file()
|
impl.close_output_file()
|
||||||
|
|
||||||
|
|
||||||
def load_config_file():
|
|
||||||
impl.load_config_file(meson_translator.config_file)
|
|
||||||
|
|
||||||
|
|
||||||
def add_subdirs_to_set(dir_, dir_set):
|
def add_subdirs_to_set(dir_, dir_set):
|
||||||
subdirs = os.listdir(dir_)
|
subdirs = os.listdir(dir_)
|
||||||
for subdir in subdirs:
|
for subdir in subdirs:
|
||||||
|
|
@ -419,7 +427,9 @@ def module_import(name: str):
|
||||||
return impl.PkgConfigModule()
|
return impl.PkgConfigModule()
|
||||||
if name == 'pkgconfig' and meson_translator.host_machine.lower() == 'linux':
|
if name == 'pkgconfig' and meson_translator.host_machine.lower() == 'linux':
|
||||||
return impl.PkgConfigModule()
|
return impl.PkgConfigModule()
|
||||||
exit(f'Unhandled module: "{name}" for host machine: "{meson_translator.host_machine}"')
|
exit(
|
||||||
|
f'Unhandled module: "{name}" for host machine: "{meson_translator.host_machine}"'
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def load_dependencies():
|
def load_dependencies():
|
||||||
|
|
@ -997,10 +1007,12 @@ def _get_command_args(
|
||||||
for command_item in command[1:]:
|
for command_item in command[1:]:
|
||||||
if isinstance(command_item, list):
|
if isinstance(command_item, list):
|
||||||
for item in command_item:
|
for item in command_item:
|
||||||
assert type(item) is impl.File
|
if type(item) is impl.File:
|
||||||
args.append(
|
args.append(
|
||||||
_location_wrapper(item.name) if location_wrap else item.name
|
_location_wrapper(item.name) if location_wrap else item.name
|
||||||
)
|
)
|
||||||
|
elif type(item) is str:
|
||||||
|
args.append(item)
|
||||||
continue
|
continue
|
||||||
|
|
||||||
assert type(command_item) is str
|
assert type(command_item) is str
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue