diff options
author | dimdim11 <dimdim11@yandex-team.com> | 2024-06-19 14:14:24 +0300 |
---|---|---|
committer | dimdim11 <dimdim11@yandex-team.com> | 2024-06-19 14:38:13 +0300 |
commit | fdb6f10ed1dca7f615dcb1583f8a5c63e7daf794 (patch) | |
tree | 91374f41971c5cb0cdc70cb4b2bf021ee080e50b | |
parent | 4a6f80f62831cd09a8f471aa31a786963ffbec9c (diff) | |
download | ydb-fdb6f10ed1dca7f615dcb1583f8a5c63e7daf794.tar.gz |
Many fixes for cmake generator based on jinja templates
Many fixes: tools, allocators, includes, packages, templates
a55ec056dec27f071f0fe5c5ca3c953e961b7c31
5 files changed, 43 insertions, 31 deletions
diff --git a/build/export_generators/cmake/dir_includes.jinja b/build/export_generators/cmake/dir_includes.jinja index f49dedaf1c..04a3aa8576 100644 --- a/build/export_generators/cmake/dir_includes.jinja +++ b/build/export_generators/cmake/dir_includes.jinja @@ -1,7 +1,7 @@ -{%- if includes is defined %} -{% for incl in includes -%} -include({{ incl }}) -{% endfor -%} +{%- if dir_includes is defined %} +{% for dir_include in dir_includes -%} +include({{ dir_include }}) +{% endfor -%} {%- endif -%} {%- if subdirs|length %} diff --git a/build/export_generators/cmake/dir_packages.jinja b/build/export_generators/cmake/dir_packages.jinja index d3898bcf10..5464f05504 100644 --- a/build/export_generators/cmake/dir_packages.jinja +++ b/build/export_generators/cmake/dir_packages.jinja @@ -1,26 +1,37 @@ -{%- set packages = [] -%} -{%- if (target.packages is defined) and (target.packages|length) -%} -{%- set packages = packages + target.packages -%} -{%- endif -%} -{%- if (target.mpackages is defined) and (target.mpackages|length) -%} -{%- if packages|length -%} -{#- Skip duplicating packages -#} -{%- set mpackages = target.mpackages|rejectattr('name', 'in', packages|map(attribute='name')) -%} -{%- if mpackages|length -%} -{%- set packages = packages + mpackages -%} -{%- endif -%} -{%- else -%} -{%- set packages = packages + target.mpackages -%} -{%- endif -%} -{%- endif -%} -{%- if packages|length -%} -{%- for package in packages -%} +{%- macro RenderPackages(target) -%} +{%- set packages = [] -%} +{%- if (target.packages is defined) and (target.packages|length) -%} +{%- set packages = packages + target.packages -%} +{%- endif -%} +{%- if (target.mpackages is defined) and (target.mpackages|length) -%} +{%- if packages|length -%} +{#- Skip duplicating packages -#} +{%- set mpackages = target.mpackages|rejectattr('name', 'in', packages|map(attribute='name')) -%} +{%- if mpackages|length -%} +{%- set packages = packages + mpackages -%} +{%- endif -%} +{%- else -%} +{%- set packages = packages + target.mpackages -%} +{%- endif -%} +{%- endif -%} +{%- if packages|length -%} +{%- for package in packages -%} find_package({{ package.name }} REQUIRED -{%- if package.components|length %} COMPONENTS -{%- for component in package.components %} +{%- if package.components|length %} COMPONENTS +{%- for component in package.components %} {{ component }} -{% endfor -%} -{%- endif -%} +{% endfor -%} +{%- endif -%} ) -{% endfor -%} +{% endfor -%} +{%- endif -%} +{%- endmacro -%} + +{%- if target is defined -%} +{{ RenderPackages(target) }} +{%- endif -%} +{%- if extra_targets is defined -%} +{%- for extra_target in extra_targets -%} +{{ RenderPackages(extra_target) }} +{%- endfor -%} {%- endif -%} diff --git a/build/export_generators/cmake/generator.toml b/build/export_generators/cmake/generator.toml index 9089f552c6..68eab4ac1d 100644 --- a/build/export_generators/cmake/generator.toml +++ b/build/export_generators/cmake/generator.toml @@ -115,6 +115,7 @@ dir_macroses="list" dir_macroses-ITEM="dict" dir_macroses-macro="str" dir_macroses-args="list" +dir_includes="set" [attrs.target] # DEPRECATED - Skipped old hardcoded-cmake attributes diff --git a/build/export_generators/cmake/target_links.jinja b/build/export_generators/cmake/target_links.jinja index ce082a704f..4bce4d28ac 100644 --- a/build/export_generators/cmake/target_links.jinja +++ b/build/export_generators/cmake/target_links.jinja @@ -28,15 +28,15 @@ {%- endif -%} {%- endif -%} {%- if (current_target.allocators is defined) and (current_target.allocators|length) -%} -{%- if (macro == "add_executable") or (macro == "add_library" and ("SHARED" in macro_args)) -%} +{%- if (current_target.macro == "add_executable") or (current_target.macro == "add_library" and ("SHARED" in current_target.macro_args)) -%} {#- support allocators -#} -{%- set allocators = allocators + current_target.allocators|sum -%} +{%- set allocators = allocators + current_target.allocators -%} {%- else -%} {#- not supported allocators -#} {%- if current_target.is_fake_module -%} -{%- set interfaces = interfaces + current_target.allocators|sum -%} +{%- set interfaces = interfaces + current_target.allocators -%} {%- else -%} -{%- set publics = publics + current_target.allocators|sum -%} +{%- set publics = publics + current_target.allocators -%} {%- endif -%} {%- endif -%} {%- endif -%} diff --git a/build/export_generators/cmake/target_properties.jinja b/build/export_generators/cmake/target_properties.jinja index e906c0008a..05b4baaed3 100644 --- a/build/export_generators/cmake/target_properties.jinja +++ b/build/export_generators/cmake/target_properties.jinja @@ -1,4 +1,4 @@ -{% for property in current_target.properties -%} +{%- for property in current_target.properties -%} set_property(TARGET {{ name }} PROPERTY {{ property.name }} {%- for value in property.value %} {{ value }} |