aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimdim11 <dimdim11@yandex-team.com>2024-06-19 14:14:24 +0300
committerdimdim11 <dimdim11@yandex-team.com>2024-06-19 14:38:13 +0300
commitfdb6f10ed1dca7f615dcb1583f8a5c63e7daf794 (patch)
tree91374f41971c5cb0cdc70cb4b2bf021ee080e50b
parent4a6f80f62831cd09a8f471aa31a786963ffbec9c (diff)
downloadydb-fdb6f10ed1dca7f615dcb1583f8a5c63e7daf794.tar.gz
Many fixes for cmake generator based on jinja templates
Many fixes: tools, allocators, includes, packages, templates a55ec056dec27f071f0fe5c5ca3c953e961b7c31
-rw-r--r--build/export_generators/cmake/dir_includes.jinja8
-rw-r--r--build/export_generators/cmake/dir_packages.jinja55
-rw-r--r--build/export_generators/cmake/generator.toml1
-rw-r--r--build/export_generators/cmake/target_links.jinja8
-rw-r--r--build/export_generators/cmake/target_properties.jinja2
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 }}