aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordimdim11 <dimdim11@yandex-team.com>2024-05-15 23:03:15 +0300
committerdimdim11 <dimdim11@yandex-team.com>2024-05-15 23:11:41 +0300
commitefb3665db25f0dac8df031b5ca5df8b55bdf5ce6 (patch)
tree55f2cacc288da9ddd714252eb9aaed66317c9b8f
parent95043960ea8ba262f5b0bc21f57f1a0ec2958cca (diff)
downloadydb-efb3665db25f0dac8df031b5ca5df8b55bdf5ce6.tar.gz
CMake generator based on Jinja generator
99902937b544f5d8150a5c6132861e1bb52d3ced
-rw-r--r--build/conf/bison_lex.conf4
-rw-r--r--build/conf/fbs.conf2
-rw-r--r--build/conf/proto.conf2
-rw-r--r--build/export_generators/cmake/common_cmake_lists.jinja10
-rw-r--r--build/export_generators/cmake/conanfile.jinja36
-rw-r--r--build/export_generators/cmake/debug.jinja25
-rw-r--r--build/export_generators/cmake/dir_cmake_lists.jinja1
-rw-r--r--build/export_generators/cmake/generator.toml47
-rw-r--r--build/export_generators/cmake/merge_platforms_cmake_lists.jinja11
-rw-r--r--build/export_generators/cmake/root_cmake_lists.jinja35
-rw-r--r--build/export_generators/cmake/root_global_vars.jinja22
-rw-r--r--build/export_generators/gradle/build.gradle.kts.jinja6
-rw-r--r--build/export_generators/gradle/build.gradle.kts.proto.jinja8
-rw-r--r--build/export_generators/hardcoded-cmake/dir_cmake_lists.jinja6
-rw-r--r--build/export_generators/ide-gradle/build.gradle.kts.jinja14
-rw-r--r--build/export_generators/ide-gradle/build.gradle.kts.proto.jinja6
-rw-r--r--build/ymake.core.conf29
-rw-r--r--contrib/libs/libiconv/ya.make2
-rw-r--r--contrib/libs/linux-headers/ya.make2
-rw-r--r--contrib/libs/openssl/crypto/ya.make2
-rw-r--r--contrib/libs/openssl/ya.make2
-rw-r--r--contrib/libs/protobuf/ya.make2
-rw-r--r--contrib/libs/protoc/ya.make2
23 files changed, 192 insertions, 84 deletions
diff --git a/build/conf/bison_lex.conf b/build/conf/bison_lex.conf
index e8b980b4de..4fbce40991 100644
--- a/build/conf/bison_lex.conf
+++ b/build/conf/bison_lex.conf
@@ -134,7 +134,7 @@ macro USE_OLD_FLEX() {
macro _SRC("y", SRC, SRCFLAGS...) {
.PEERDIR=contrib/tools/bison/bison/induced
.CMD=${tool:"contrib/tools/bison/bison"} $BISON_FLAGS --m4=${tool:"contrib/tools/bison/m4"} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${nopath;output;suf=$_BISON_GEN_EXT:SRC} ${input:SRC} ${SRCFLAGS} ${kv;hide:"p YC"} ${kv;hide:"pc light-green"} && $_BISON_PP
- .SEM=target_bison_parser PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;output;hide:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && set_global_flags BISON_FLAGS $BISON_FLAGS && conan_require_tool m4/1.4.19 && conan_import '"bin, m4* -> ./bin/m4/bin"' && conan_require_tool bison/3.8.2 && conan_import '"bin, bison* -> ./bin/bison/bin"' && conan_import '"res, * -> ./bin/bison/res"'
+ .SEM=target_bison_parser PRIVATE ${input:SRC} ${output;nopath;noext;hide;suf=${OBJ_SUF}.o:SRC} ${nopath;noext;output;hide:SRC.h} ${nopath;noext;output;addincl;hide:SRC.h} && set_global_flags BISON_FLAGS $BISON_FLAGS && conan_require_tool m4/1.4.19 && conan_import '"bin, m4* -> ./bin/m4/bin"' && conan_require_tool bison/3.8.2 && conan_import '"bin, bison* -> ./bin/bison/bin"' && conan_import '"res, * -> ./bin/bison/res"' && platform_vars-BISON_FLAGS ${quo:BISON_FLAGS} && conan-tool_requires m4/1.4.19 && conan-imports 'bin, m4* -> ./bin/m4/bin' && conan-tool_requires bison/3.8.2 && conan-imports 'bin, bison* -> ./bin/bison/bin' && conan-imports 'res, * -> ./bin/bison/res'
}
macro _SRC("ypp", SRC, SRCFLAGS...) {
@@ -146,7 +146,7 @@ macro _SRC("ypp", SRC, SRCFLAGS...) {
macro _SRC("l", SRC, SRCFLAGS...) {
.CMD=$_FLEX_TOOL $LEX_FLAGS ${SRCFLAGS} $_FLEX_HEADER ${hide:_FLEX_GEN_EXT} -o${output;suf=$_FLEX_GEN_EXT:SRC} ${output_include;hide:"util/system/compiler.h"} ${input:SRC} ${kv;hide:"p LX"} ${kv;hide:"pc yellow"}
.ADDINCL=$_FLEX_TOOL_DIR
- .SEM=target_flex_lexers ${tool;hide:_FLEX_TOOL} ${output;hide;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && set_global_flags LEX_FLAGS $LEX_FLAGS
+ .SEM=target_flex_lexers ${tool;hide:_FLEX_TOOL} ${output;hide;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && set_global_flags LEX_FLAGS $LEX_FLAGS && platform_vars-LEX_FLAGS ${quo:LEX_FLAGS}
}
# tag:src-processing
diff --git a/build/conf/fbs.conf b/build/conf/fbs.conf
index 000ec9a1eb..9c7ddb47d5 100644
--- a/build/conf/fbs.conf
+++ b/build/conf/fbs.conf
@@ -39,7 +39,7 @@ _GO_FLATC_IMPORTS=\
# tag:fbs tag:cpp-specific
macro _CPP_FLATC_CMD(SRC, SRCFLAGS...) {
.CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cpp_flatc_wrapper.py"} ${tool:FLATC} --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${output;main;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${input:SRC} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${kv;hide:"p FL"} ${kv;hide:"pc light-green"} ${hide:FBS_FAKEID}
- .SEM=target_fbs_source PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${output;hide;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && set_global_flags FBS_CPP_FLAGS --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs ${input;hide:"build/scripts/cpp_flatc_wrapper.py"}
+ .SEM=target_fbs_source PRIVATE ${input:SRC} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} ${output;hide;norel:SRC.h} ${output;hide;norel:SRC.cpp} ${output;hide;noext;norel:SRC.iter.fbs.h} ${output;noauto;hide;noext;norel:SRC.bfbs} ${hide;tool:FLATC} && set_global_flags FBS_CPP_FLAGS --no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs && platform_vars-FBS_CPP_FLAGS "--no-warnings --cpp --keep-prefix --gen-mutable --schema -b --yandex-maps-iter --gen-object-api --filename-suffix .fbs" ${input;hide:"build/scripts/cpp_flatc_wrapper.py"}
.PEERDIR=contrib/libs/flatbuffers
}
diff --git a/build/conf/proto.conf b/build/conf/proto.conf
index ebd1641b4a..28c894d260 100644
--- a/build/conf/proto.conf
+++ b/build/conf/proto.conf
@@ -385,6 +385,7 @@ macro YT_ORM_PROTO_YSON(OUT_OPTS[], Files...) {
_SEM_CPP_PROTO_CMD=target_proto_messages PRIVATE ${input:File} $CPP_PROTO_OUTS_SEM ${output;hide;suf=${OBJ_SUF}.pb.o:File} $DEFAULT_PROTOC_TOOLS \
&& set_global_flags COMMON_PROTOC_FLAGS \
+ && platform_vars-COMMON_PROTOC_FLAGS "" \
&& target_proto_outs --cpp_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE $PROTOC_STYLEGUIDE_OUT \
&& target_proto_addincls ./$PROTO_NAMESPACE $ARCADIA_ROOT/$PROTO_NAMESPACE ${_PROTO__INCLUDE} $ARCADIA_BUILD_ROOT $PROTOBUF_PATH
@@ -403,6 +404,7 @@ macro _CPP_VANILLA_PROTO_CMD(File) {
_SEM_CPP_EV_CMD=target_ev_messages PRIVATE ${input:File} $CPP_EV_OUTS_SEM ${output;hide;suf=${OBJ_SUF}.pb.o:File} ${hide;tool:"tools/event2cpp/bin"} $DEFAULT_PROTOC_TOOLS \
&& set_global_flags COMMON_PROTOC_FLAGS \
+ && platform_vars-COMMON_PROTOC_FLAGS "" \
&& target_proto_outs --cpp_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE $PROTOC_STYLEGUIDE_OUT --event2cpp_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE \
&& target_proto_addincls ./$PROTO_NAMESPACE $ARCADIA_ROOT/$PROTO_NAMESPACE ${_PROTO__INCLUDE} $ARCADIA_BUILD_ROOT $PROTOBUF_PATH $ARCADIA_ROOT/library/cpp/eventlog
diff --git a/build/export_generators/cmake/common_cmake_lists.jinja b/build/export_generators/cmake/common_cmake_lists.jinja
deleted file mode 100644
index c70ae05632..0000000000
--- a/build/export_generators/cmake/common_cmake_lists.jinja
+++ /dev/null
@@ -1,10 +0,0 @@
-{% include '[generator]/disclaimer.jinja' %}
-
-{% set platforms_count = platform_names|length -%}
-{% if platforms_count > 0 -%}
-{% for i in range(platforms_count) %}
-{% if i != 0 %}else{% endif %}if ({{ platforms[platform_names[i]] }})
- include(CMakeLists.{{ platform_names[i] }}.txt)
-{%- endfor %}
-endif()
-{% endif -%}
diff --git a/build/export_generators/cmake/conanfile.jinja b/build/export_generators/cmake/conanfile.jinja
index 120c42d095..da69d8c062 100644
--- a/build/export_generators/cmake/conanfile.jinja
+++ b/build/export_generators/cmake/conanfile.jinja
@@ -1,20 +1,38 @@
[requires]
-{% for package in conan_packages -%}
+{%- if conan.requires is defined -%}
+{%- for package in conan.requires %}
{{ package }}
-{% endfor %}
+{%- endfor -%}
+{%- endif %}
+
[tool_requires]
-{% for package in conan_tool_packages -%}
+{%- if conan.tool_requires is defined -%}
+{%- for package in conan.tool_requires %}
{{ package }}
-{% endfor %}
+{%- endfor -%}
+{%- endif %}
+
[options]
-{% for option in conan_options -%}
+{%- if conan.options is defined -%}
+{%- for option in conan.options %}
{{ option }}
-{% endfor %}
+{%- endfor -%}
+{%- endif %}
+
[imports]
-{% for imp in conan_imports -%}
-{{ imp }}
-{% endfor %}
+{%- if conan.imports is defined -%}
+{%- for import_ in conan.imports %}
+{{ import_ }}
+{%- endfor -%}
+{%- endif %}
+
[generators]
cmake_find_package
cmake_paths
+{%- if conan.generators is defined -%}
+{%- for generator in conan.generators %}
+{{ generator }}
+{%- endfor -%}
+{%- endif %}
+{%- include "[generator]/debug.jinja" ignore missing -%}
diff --git a/build/export_generators/cmake/debug.jinja b/build/export_generators/cmake/debug.jinja
new file mode 100644
index 0000000000..28226878ba
--- /dev/null
+++ b/build/export_generators/cmake/debug.jinja
@@ -0,0 +1,25 @@
+{%- if dump_sems is defined %}
+
+#[===[
+vvvvvv SEMANTICS
+{#- replace(' ', ' ') is workaround, else `split` function in C++ receive invalid input -#}
+{%- set lines = split(dump_sems|replace(' ', ' '), '\n') -%}
+{%- for line in lines %}
+{{ line }}
+{%- endfor %}
+^^^^^^ SEMANTICS
+]===]
+{%- endif -%}
+
+{%- if dump_attrs is defined %}
+
+#[===[
+vvvvvv ATTRIBUTES
+{#- replace(' ', ' ') is workaround, else `split` function in C++ receive invalid input -#}
+{%- set lines = split(dump_attrs|replace(' ', ' '), '\n') -%}
+{%- for line in lines %}
+{{ line }}
+{%- endfor %}
+^^^^^^ ATTRIBUTES
+]===]
+{%- endif -%}
diff --git a/build/export_generators/cmake/dir_cmake_lists.jinja b/build/export_generators/cmake/dir_cmake_lists.jinja
index 93afa70506..c74db38d6b 100644
--- a/build/export_generators/cmake/dir_cmake_lists.jinja
+++ b/build/export_generators/cmake/dir_cmake_lists.jinja
@@ -38,3 +38,4 @@ add_subdirectory({{ subdir }})
{%- endfor -%}
{%- endif -%}
{%- include 'epilogue.cmake' ignore missing -%}
+{%- include "[generator]/debug.jinja" ignore missing -%}
diff --git a/build/export_generators/cmake/generator.toml b/build/export_generators/cmake/generator.toml
index da256b5a96..96d21b0314 100644
--- a/build/export_generators/cmake/generator.toml
+++ b/build/export_generators/cmake/generator.toml
@@ -42,26 +42,26 @@ copy=[
[targets.EMPTY]
template={ path="dir_cmake_lists.jinja", dest="CMakeLists{PLATFORM}.txt" }
-merge_platform_template={ path="common_cmake_lists.jinja", dest="CMakeLists.txt" }
+merge_platform_template={ path="merge_platforms_cmake_lists.jinja", dest="CMakeLists.txt" }
[targets.add_executable]
template={ path="dir_cmake_lists.jinja", dest="CMakeLists{PLATFORM}.txt" }
-merge_platform_template={ path="common_cmake_lists.jinja", dest="CMakeLists.txt" }
+merge_platform_template={ path="merge_platforms_cmake_lists.jinja", dest="CMakeLists.txt" }
[targets.add_global_library_for]
is_extra_target = true
[targets.add_library]
template={ path="dir_cmake_lists.jinja", dest="CMakeLists{PLATFORM}.txt" }
-merge_platform_template={ path="common_cmake_lists.jinja", dest="CMakeLists.txt" }
+merge_platform_template={ path="merge_platforms_cmake_lists.jinja", dest="CMakeLists.txt" }
[targets.add_shared_library]
template={ path="dir_cmake_lists.jinja", dest="CMakeLists{PLATFORM}.txt" }
-merge_platform_template={ path="common_cmake_lists.jinja", dest="CMakeLists.txt" }
+merge_platform_template={ path="merge_platforms_cmake_lists.jinja", dest="CMakeLists.txt" }
[targets.add_fat_object]
template={ path="dir_cmake_lists.jinja", dest="CMakeLists{PLATFORM}.txt" }
-merge_platform_template={ path="common_cmake_lists.jinja", dest="CMakeLists.txt" }
+merge_platform_template={ path="merge_platforms_cmake_lists.jinja", dest="CMakeLists.txt" }
[targets.add_recursive_library]
is_extra_target = true
@@ -70,12 +70,35 @@ is_extra_target = true
is_extra_target = true
[attrs.root]
-project_name="str"
-project_language_list="list"
-platform_vars="list"
-includes="sorted_set"
-use_conan="bool"
+# DEPRECATED - Skipped old hardcoded-cmake attributes
+conan_require="skip"
+conan_require_tool="skip"
+conan_import="skip"
+conan_options="skip"
+add_language="skip"
+set_global_flags="skip"
+
+# Really used attributes
+conan-requires="sorted_set"
+conan-tool_requires="sorted_set"
+conan-imports="sorted_set"
+conan-options="set"
+conan-generators="sorted_set"
+
+project_languages="set"
vanilla_protobuf="flag"
+includes="set"
+
+[attrs.platform]
+platform_vars-FAT_OBJECT_PREFIX="str"
+platform_vars-FAT_OBJECT_SUFFIX="str"
+platform_vars-RAGEL_FLAGS="str"
+platform_vars-YASM_FLAGS="str"
+platform_vars-CMAKE_CUDA_STANDARD="str"
+platform_vars-BISON_FLAGS="str"
+platform_vars-LEX_FLAGS="str"
+platform_vars-FBS_CPP_FLAGS="str"
+platform_vars-COMMON_PROTOC_FLAGS="str"
[attrs.dir]
@@ -111,8 +134,8 @@ attrs=[
"conan_config_install",
"conan_load_buildinfo",
"conan_parse_arguments",
- "conan_require",
- "conan_require_tool",
+ "conan-requires",
+ "conan-tool_requires",
"old_conan_cmake_install",
]
copy=["cmake/conan.cmake"]
diff --git a/build/export_generators/cmake/merge_platforms_cmake_lists.jinja b/build/export_generators/cmake/merge_platforms_cmake_lists.jinja
new file mode 100644
index 0000000000..627bfc17e7
--- /dev/null
+++ b/build/export_generators/cmake/merge_platforms_cmake_lists.jinja
@@ -0,0 +1,11 @@
+{% include '[generator]/disclaimer.jinja' %}
+
+{% if platform_names|length -%}
+{%- for platform_name in platform_names %}
+{% if not loop.first %}else{% endif %}if ({{ platform_conditions[platform_name] }})
+ include(CMakeLists.{{ platform_name }}.txt)
+{%- endfor %}
+endif()
+
+{% endif -%}
+{%- include "[generator]/debug.jinja" ignore missing -%}
diff --git a/build/export_generators/cmake/root_cmake_lists.jinja b/build/export_generators/cmake/root_cmake_lists.jinja
index be7bad4a09..838e0f3f7b 100644
--- a/build/export_generators/cmake/root_cmake_lists.jinja
+++ b/build/export_generators/cmake/root_cmake_lists.jinja
@@ -1,13 +1,21 @@
{% include '[generator]/disclaimer.jinja' %}
cmake_minimum_required(VERSION 3.15)
-project({{project_name}} LANGUAGES{% for value in project_language_list %} {{value}}{% endfor %})
+project({{ project_name }} LANGUAGES
+{%- for project_language in project_languages -%}
+{%- if project_language == "ASM" -%}
+{% set has_asm = true %}
+{%- else %} {{ project_language }}
+{%- endif -%}
+{%- if has_asm %} ASM
+{%- endif -%}
+{%- endfor -%})
set(BUILD_SHARED_LIBS Off)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_EXTENSIONS Off)
-set({{project_name}}_MAX_LINK_JOBS 5 CACHE STRING "Maximum parallel link jobs for Ninja generator")
-set_property(GLOBAL PROPERTY JOB_POOLS link_jobs=${{ '{' }}{{project_name}}_MAX_LINK_JOBS{{ '}' }})
+set({{ project_name }}_MAX_LINK_JOBS 5 CACHE STRING "Maximum parallel link jobs for Ninja generator")
+set_property(GLOBAL PROPERTY JOB_POOLS link_jobs=${{ '{' }}{{ project_name }}_MAX_LINK_JOBS{{ '}' }})
set(CMAKE_JOB_POOL_LINK link_jobs)
list(APPEND CMAKE_MODULE_PATH ${{ '{' }}PROJECT_BINARY_DIR{{ '}' }} ${{ '{' }}PROJECT_SOURCE_DIR{{ '}' }}/cmake)
@@ -26,7 +34,7 @@ include(cmake/global_vars.cmake)
include({{ incl }})
{% endfor -%}
{% endif -%}
-{% if use_conan %}
+{% if conan.requires or conan.tool_requires %}
if (CMAKE_CROSSCOMPILING)
include(${PROJECT_BINARY_DIR}/conan_paths.cmake)
else()
@@ -45,13 +53,14 @@ endif(){% endif %}
{%- if vanilla_protobuf %}
set(vanilla_protobuf "yes")
-{%- endif %}
-
-{% set platforms_count = platform_names|length -%}
-{% if platforms_count > 0 -%}
-{% for i in range(platforms_count) -%}
-{% if i != 0 %}else{% endif %}if ({{ platforms[platform_names[i]] }})
- include(CMakeLists.{{ platform_names[i] }}.txt)
-{% endfor -%}
+{%- endif -%}
+
+{%- if platform_names|length %}
+{% for platform_name in platform_names %}
+{% if not loop.first %}else{% endif %}if ({{ platform_conditions[platform_name] }})
+ include(CMakeLists.{{ platform_name }}.txt)
+{%- endfor %}
endif()
-{% endif %}
+
+{% endif -%}
+{%- include "[generator]/debug.jinja" ignore missing -%}
diff --git a/build/export_generators/cmake/root_global_vars.jinja b/build/export_generators/cmake/root_global_vars.jinja
index 4299a3004e..171b94ebce 100644
--- a/build/export_generators/cmake/root_global_vars.jinja
+++ b/build/export_generators/cmake/root_global_vars.jinja
@@ -1,12 +1,18 @@
-{% include '[generator]/disclaimer.jinja' %}
+{% include '[generator]/disclaimer.jinja' -%}
-{% set platforms_count = platform_names|length -%}
-{% if platforms_count > 0 -%}
-{% for i in range(platforms_count) %}
-{% if i != 0 %}else{% endif %}if ({{ platforms[platform_names[i]] }})
-{%- for var in platform_vars[i] %}
- set({% for arg in var %}{{arg}}{% if not loop.last %} {% endif %}{% endfor %})
-{%- endfor %}
+{% if platform_names|length -%}
+{%- for platform_name in platform_names %}
+{% if not loop.first %}else{% endif %}if ({{ platform_conditions[platform_name] }})
+{%- if platform_attrs[platform_name].platform_vars is defined -%}
+{%- set platform_vars = platform_attrs[platform_name].platform_vars -%}
+{%- set platform_var_names = keys(platform_vars) -%}
+{% for platform_var_name in platform_var_names %}
+ set({{ platform_var_name }} {{ platform_vars[platform_var_name] }})
+{%- endfor -%}
+{%- endif -%}
{%- endfor %}
endif()
+
{% endif %}
+
+{%- include "[generator]/debug.jinja" ignore missing -%}
diff --git a/build/export_generators/gradle/build.gradle.kts.jinja b/build/export_generators/gradle/build.gradle.kts.jinja
index dc03546f70..cea40219c0 100644
--- a/build/export_generators/gradle/build.gradle.kts.jinja
+++ b/build/export_generators/gradle/build.gradle.kts.jinja
@@ -41,6 +41,9 @@ dependencies {
{% endif -%}
{% for library in target.consumer -%}
{% set classpath = library.classpath -%}
+{% if classpath|replace('"','') == classpath -%}
+{% set classpath = '"' + classpath + '"' -%}
+{% endif -%}
{% if mainClass -%}
{% if library.excludes.consumer is defined %}
implementation({{ classpath }}) {
@@ -60,6 +63,9 @@ dependencies {
{% for extra_target in extra_targets -%}
{% for library in extra_target.consumer -%}
{% set classpath = library.classpath -%}
+{% if classpath|replace('"','') == classpath -%}
+{% set classpath = '"' + classpath + '"' -%}
+{% endif -%}
testImplementation({{ classpath }})
{% endfor -%}
{% endfor -%}
diff --git a/build/export_generators/gradle/build.gradle.kts.proto.jinja b/build/export_generators/gradle/build.gradle.kts.proto.jinja
index 654a53dd53..1d84696c13 100644
--- a/build/export_generators/gradle/build.gradle.kts.proto.jinja
+++ b/build/export_generators/gradle/build.gradle.kts.proto.jinja
@@ -27,8 +27,12 @@ java {
}
dependencies {
-{%- for library in target.consumer %}
- api({{ library.classpath }})
+{%- for library in target.consumer -%}
+{% set classpath = library.classpath -%}
+{% if classpath|replace('"','') == classpath -%}
+{% set classpath = '"' + classpath + '"' -%}
+{% endif %}
+ api({{ classpath }})
{%- endfor %}
{% if target.proto_namespace %}
protobuf(files(File(buildProtoDir, "{{ target.proto_namespace }}")))
diff --git a/build/export_generators/hardcoded-cmake/dir_cmake_lists.jinja b/build/export_generators/hardcoded-cmake/dir_cmake_lists.jinja
index 792be63865..93afa70506 100644
--- a/build/export_generators/hardcoded-cmake/dir_cmake_lists.jinja
+++ b/build/export_generators/hardcoded-cmake/dir_cmake_lists.jinja
@@ -37,10 +37,4 @@ add_subdirectory({{ subdir }})
{%- include '[generator]/target_cmake_lists.jinja' -%}
{%- endfor -%}
{%- endif -%}
-{# DEPRECATED - targets will be removed after release #}
-{%- if targets is defined -%}
-{%- for target in targets -%}
-{%- include '[generator]/target_cmake_lists.jinja' -%}
-{%- endfor -%}
-{%- endif -%}
{%- include 'epilogue.cmake' ignore missing -%}
diff --git a/build/export_generators/ide-gradle/build.gradle.kts.jinja b/build/export_generators/ide-gradle/build.gradle.kts.jinja
index 24ce43d266..fbca52659b 100644
--- a/build/export_generators/ide-gradle/build.gradle.kts.jinja
+++ b/build/export_generators/ide-gradle/build.gradle.kts.jinja
@@ -168,14 +168,18 @@ dependencies {
{%- if library.prebuilt and library.jar and (library.type != "contrib" or build_contribs) %}
implementation(files("$project_root/{{ library.jar }}"))
{%- else -%}
+{%- set classpath = library.classpath -%}
+{%- if classpath|replace('"','') == classpath -%}
+{%- set classpath = '"' + classpath + '"' -%}
+{%- endif -%}
{%- if library.type != "contrib" %}
{%- if library.testdep %}
implementation(project(path = ":{{ library.testdep | replace("/", ":") }}", configuration = "testArtifacts"))
{%- else %}
- implementation({{ library.classpath }})
+ implementation({{ classpath }})
{%- endif -%}
{%- else %}
- api({{ library.classpath }})
+ api({{ classpath }})
{%- endif -%}
{%- if library.excludes.consumer is defined %} {
{% for exclude in library.excludes.consumer if exclude.classpath -%}
@@ -193,10 +197,14 @@ dependencies {
{%- if library.prebuilt and library.jar and (library.type != "contrib" or build_contribs) %}
testImplementation(files("$project_root/{{ library.jar }}"))
{%- else -%}
+{%- set classpath = library.classpath -%}
+{%- if classpath|replace('"','') == classpath -%}
+{%- set classpath = '"' + classpath + '"' -%}
+{%- endif %}
{%- if library.type != "contrib" and library.testdep %}
testImplementation(project(path = ":{{ library.testdep | replace("/", ":") }}", configuration = "testArtifacts"))
{%- else %}
- testImplementation({{ library.classpath }})
+ testImplementation({{ classpath }})
{%- endif -%}
{%- if library.excludes.consumer is defined %} {
{% for exclude in library.excludes.consumer if exclude.classpath -%}
diff --git a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja
index 4b330c2d57..4818553a40 100644
--- a/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja
+++ b/build/export_generators/ide-gradle/build.gradle.kts.proto.jinja
@@ -68,11 +68,15 @@ dependencies {
{%- if library.prebuilt and library.jar and (library.type != "contrib" or target.handler.build_contribs) %}
implementation(files("$project_root/{{ library.jar }}"))
{%- else -%}
+{%- set classpath = library.classpath -%}
+{%- if classpath|replace('"','') == classpath -%}
+{%- set classpath = '"' + classpath + '"' -%}
+{%- endif %}
{%- if library.type != "contrib" %}
implementation
{%- else %}
api
-{%- endif -%}({{ library.classpath }})
+{%- endif -%}({{ classpath }})
{%- if library.excludes.consumer is defined %} {
{% for exclude in library.excludes.consumer -%}
{% set classpath = exclude.classpath|replace('"','') -%}
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index ea6ae5043b..a84445cd36 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -1836,6 +1836,7 @@ CPP_LIBRARY_SEM=add_library ${MODDIR} $CMAKE_TARGET_NAME ${hide:TARGET} ${hide:A
&& target_compile_options PUBLIC $USER_CFLAGS_GLOBAL_RAW $USER_CXXFLAGS_GLOBAL_RAW \
&& target_link_options INTERFACE $LDFLAGS_GLOBAL_RAW \
&& add_language C && add_language CXX \
+ && project_languages C && project_languages CXX \
&& target_sources PRIVATE ${MODULE_EXPLICIT_HEADERS}
CPP_OBJ_LIBRARY_SEM=add_global_library_for ${MODDIR} ${suf=.global:CMAKE_TARGET_NAME} $CMAKE_TARGET_NAME ${hide:GLOBAL_TARGET} ${hide:AUTO_INPUT} \
&& target_include_directories PUBLIC $_C__INCLUDE_GLOBAL \
@@ -1881,7 +1882,7 @@ module LIBRARY: _LIBRARY {
CPP_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
}
when ($CONAN_PKG_OPTS != "") {
- CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS
+ CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS && conan-options $CONAN_PKG_OPTS
}
when ($OPENSOURCE_EXPORT == "no") {
CPP_LIBRARY_SEM=IGNORED
@@ -1971,7 +1972,7 @@ module RESOURCES_LIBRARY: _BARE_UNIT {
RESOURCES_LIBRARY_SEM=$CMAKE_FIND_PKG && ${CPP_LIBRARY_INDUCED_SEM_PROPERTY} PUBLIC $CMAKE_LINK_TARGET $CONAN_REQUIRE $CONAN_OPTS_SEM && IGNORED
}
when ($CONAN_PKG_OPTS != "") {
- CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS
+ CONAN_OPTS_SEM=&& conan_options $CONAN_PKG_OPTS && conan-options $CONAN_PKG_OPTS
}
MODULE_SUFFIX=.pkg.fake
@@ -1983,7 +1984,9 @@ FAT_OBJECT_SEM=add_fat_object ${MODDIR} ${CMAKE_TARGET_NAME} ${hide:TARGET} ${hi
&& target_include_directories PRIVATE $_C__INCLUDE_OWNED \
&& target_compile_options PRIVATE $USER_CFLAGS $USER_CXXFLAGS $_SEM_EXTRA_CXX_FLAGS \
&& set_global_flags FAT_OBJECT_PREFIX ${MODULE_PREFIX} \
- && set_global_flags FAT_OBJECT_SUFFIX ${MODULE_SUFFIX}
+ && set_global_flags FAT_OBJECT_SUFFIX ${MODULE_SUFFIX} \
+ && platform_vars-FAT_OBJECT_PREFIX ${quo:MODULE_PREFIX} \
+ && platform_vars-FAT_OBJECT_SUFFIX ${quo:MODULE_SUFFIX}
### Do not turn visibility=hidden symbos into static symbos of partially linked object file
###
@@ -2990,7 +2993,7 @@ _EMPTY_CMD=
macro _SRC("swg", SRC, SRCFLAGS...) {
.CMD=${_SWIG_CMD}
.PEERDIR=${_SWIG_PEERDIR}
- .SEM=conan_require_tool swig/4.0.2 && conan_import '"bin, *swig* -> ./bin"' ${hide;input:SRC} ${_SWIG_SEM_TO_MODULE_LINK}
+ .SEM=conan_require_tool swig/4.0.2 && conan_import '"bin, *swig* -> ./bin"' && conan-tool_requires swig/4.0.2 && conan-imports 'bin, *swig* -> ./bin' ${hide;input:SRC} ${_SWIG_SEM_TO_MODULE_LINK}
}
RODATA_SYMBOL_PREFIX=
@@ -3016,7 +3019,7 @@ macro _SRC("rodata", SRC, SRCFLAGS...) {
macro _SRS_S_ASM(SRC, SRCFLAGS...) {
.CMD=$C_COMPILER_OLD $C_FLAGS_PLATFORM $CFLAGS $SFLAGS $SRCFLAGS -c -o ${output:SRC.o} ${input:SRC} $TOOLCHAIN_ENV ${pre=-I:_C__INCLUDE}
- .SEM=target_sources PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $_ADD_EXTRA_FLAGS($SRCFLAGS) && add_language ASM
+ .SEM=target_sources PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $_ADD_EXTRA_FLAGS($SRCFLAGS) && add_language ASM && project_languages ASM
}
# tag:src-processing
@@ -3082,7 +3085,7 @@ macro _SRC("asp", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("rl6", SRC, SRCFLAGS...) {
.CMD=$RUN_NO_SANITIZE ${tool:"contrib/tools/ragel6"} $RAGEL6_FLAGS ${SRCFLAGS} -L -I${ARCADIA_ROOT} -o ${output;nopath;noext;defext=.rl6.cpp:SRC} ${input:SRC} ${kv;hide:"p R6"} ${kv;hide:"pc yellow"}
- .SEM=target_ragel_lexers PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $RAGEL6_FLAGS ${SRCFLAGS} && set_global_flags RAGEL_FLAGS -L -I $S/ && conan_require_tool ragel/6.10 && conan_import '"bin, ragel* -> ./bin"' ${hide;input:"build/scripts/run_tool.py"}
+ .SEM=target_ragel_lexers PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $RAGEL6_FLAGS ${SRCFLAGS} && set_global_flags RAGEL_FLAGS -L -I $S/ && conan_require_tool ragel/6.10 && conan_import '"bin, ragel* -> ./bin"' && platform_vars-RAGEL_FLAGS "-L -I ${PROJECT_SOURCE_DIR}/" && conan-tool_requires ragel/6.10 && conan-imports 'bin, ragel* -> ./bin' ${hide;input:"build/scripts/run_tool.py"}
}
# tag:src-processing
@@ -3202,12 +3205,16 @@ MASM_SEM=target_sources PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC}
&& curdir_masm_flags ${MASMFLAGS}
YASM_SEM=target_yasm_source PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $YASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS ${pre=-P :PREINCLUDES} ${hide;input:"build/scripts/run_tool.py"} \
&& set_global_flags YASM_FLAGS -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE -D ${pre=_;suf=_:HARDWARE_TYPE} -D_YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE \
- && add_language ASM \
- && conan_require_tool yasm/1.3.0 && conan_import '"bin, *yasm* -> ./bin"' && conan_import '"bin, ytasm* -> ./bin"'
+ && platform_vars-YASM_FLAGS "-f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE -D ${pre=_;suf=_:HARDWARE_TYPE} -D _YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE" \
+ && add_language ASM && project_languages ASM \
+ && conan_require_tool yasm/1.3.0 && conan_import '"bin, *yasm* -> ./bin"' && conan_import '"bin, ytasm* -> ./bin"' \
+ && conan-tool_requires yasm/1.3.0 && conan-imports 'bin, *yasm* -> ./bin' && conan-imports 'bin, ytasm* -> ./bin'
ASM_SEM=target_yasm_source PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $YASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS ${hide;input:"build/scripts/run_tool.py"} \
&& set_global_flags YASM_FLAGS -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE -D ${pre=_;suf=_:HARDWARE_TYPE} -D_YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE \
- && add_language ASM \
- && conan_require_tool yasm/1.3.0 && conan_import '"bin, *yasm* -> ./bin"' && conan_import '"bin, ytasm* -> ./bin"'
+ && platform_vars-YASM_FLAGS "-f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE -D ${pre=_;suf=_:HARDWARE_TYPE} -D _YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE" \
+ && add_language ASM && project_languages ASM \
+ && conan_require_tool yasm/1.3.0 && conan_import '"bin, *yasm* -> ./bin"' && conan_import '"bin, ytasm* -> ./bin"' \
+ && conan-tool_requires yasm/1.3.0 && conan-imports 'bin, *yasm* -> ./bin' && conan-imports 'bin, ytasm* -> ./bin'
# tag:src-processing
macro _SRC("masm", SRC, SRCFLAGS...) {
.CMD=$_SRC_masm($SRC $SRCFLAGS)
@@ -3249,7 +3256,7 @@ otherwise {
# tag:src-processing
macro _SRC("cu", SRC, SRCFLAGS...) {
.CMD=$_SRC_CU_CMD
- .SEM=target_cuda_sources PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} && set_global_flags CMAKE_CUDA_STANDARD ${NVCC_STD_VER} && target_cuda_flags $CUDA_NVCC_FLAGS && target_cuda_cflags $USER_CXXFLAGS $SRCFLAGS $_SEM_EXTRA_CXX_FLAGS
+ .SEM=target_cuda_sources PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} && set_global_flags CMAKE_CUDA_STANDARD ${NVCC_STD_VER} && platform_vars-CMAKE_CUDA_STANDARD ${quo:NVCC_STD_VER} && target_cuda_flags $CUDA_NVCC_FLAGS && target_cuda_cflags $USER_CXXFLAGS $SRCFLAGS $_SEM_EXTRA_CXX_FLAGS
.PEERDIR=$_SRC_CU_PEERDIR
}
diff --git a/contrib/libs/libiconv/ya.make b/contrib/libs/libiconv/ya.make
index 6c6e4898be..5fb2655c64 100644
--- a/contrib/libs/libiconv/ya.make
+++ b/contrib/libs/libiconv/ya.make
@@ -18,7 +18,7 @@ IF (EXPORT_CMAKE)
CMAKE_TARGET
Iconv::Iconv
CONAN
- libiconv/1.15
+ libiconv/1.15 "&& conan-requires" libiconv/1.15
CONAN_OPTIONS
libiconv:shared=True
)
diff --git a/contrib/libs/linux-headers/ya.make b/contrib/libs/linux-headers/ya.make
index 7a7d74a66a..ac195d21a8 100644
--- a/contrib/libs/linux-headers/ya.make
+++ b/contrib/libs/linux-headers/ya.make
@@ -35,7 +35,7 @@ IF (OPENSOURCE_REPLACE_LINUX_HEADERS AND EXPORT_CMAKE)
OPENSOURCE_EXPORT_REPLACEMENT(
CMAKE linux-headers-generic
CMAKE_TARGET linux-headers-generic::linux-headers-generic
- CONAN linux-headers-generic/${OPENSOURCE_REPLACE_LINUX_HEADERS}
+ CONAN linux-headers-generic/${OPENSOURCE_REPLACE_LINUX_HEADERS} "&& conan-requires" linux-headers-generic/${OPENSOURCE_REPLACE_LINUX_HEADERS}
)
ELSE()
diff --git a/contrib/libs/openssl/crypto/ya.make b/contrib/libs/openssl/crypto/ya.make
index c6e9d82018..d5d764f331 100644
--- a/contrib/libs/openssl/crypto/ya.make
+++ b/contrib/libs/openssl/crypto/ya.make
@@ -19,7 +19,7 @@ IF (OPENSOURCE_REPLACE_OPENSSL)
CMAKE OpenSSL
CMAKE_PACKAGE_COMPONENT Crypto
CMAKE_TARGET OpenSSL::Crypto
- CONAN openssl/${OPENSOURCE_REPLACE_OPENSSL}
+ CONAN openssl/${OPENSOURCE_REPLACE_OPENSSL} "&& conan-requires" openssl/${OPENSOURCE_REPLACE_OPENSSL}
)
ENDIF() # IF (OPENSOURCE_REPLACE_OPENSSL)
diff --git a/contrib/libs/openssl/ya.make b/contrib/libs/openssl/ya.make
index 802b2c76c3..faec0b51eb 100644
--- a/contrib/libs/openssl/ya.make
+++ b/contrib/libs/openssl/ya.make
@@ -11,7 +11,7 @@ IF (OPENSOURCE_REPLACE_OPENSSL AND EXPORT_CMAKE)
OPENSOURCE_EXPORT_REPLACEMENT(
CMAKE OpenSSL
CMAKE_TARGET OpenSSL::OpenSSL
- CONAN openssl/${OPENSOURCE_REPLACE_OPENSSL}
+ CONAN openssl/${OPENSOURCE_REPLACE_OPENSSL} "&& conan-requires" openssl/${OPENSOURCE_REPLACE_OPENSSL}
)
ELSE()
diff --git a/contrib/libs/protobuf/ya.make b/contrib/libs/protobuf/ya.make
index b8ba3c36fc..0909d6b3b4 100644
--- a/contrib/libs/protobuf/ya.make
+++ b/contrib/libs/protobuf/ya.make
@@ -20,7 +20,7 @@ IF (OPENSOURCE_REPLACE_PROTOBUF AND EXPORT_CMAKE)
OPENSOURCE_EXPORT_REPLACEMENT(
CMAKE Protobuf
CMAKE_TARGET protobuf::libprotobuf protobuf::libprotoc
- CONAN protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_require_tool" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_import \"bin, protoc* -> ./bin\" && vanilla_protobuf"
+ CONAN protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan-requires" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_require_tool" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan-tool_requires" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_import \"bin, protoc* -> ./bin\" && conan-imports \"bin, protoc* -> ./bin\" && vanilla_protobuf"
)
ELSE()
diff --git a/contrib/libs/protoc/ya.make b/contrib/libs/protoc/ya.make
index 927ead0dbd..518ae0c171 100644
--- a/contrib/libs/protoc/ya.make
+++ b/contrib/libs/protoc/ya.make
@@ -18,7 +18,7 @@ IF (OPENSOURCE_REPLACE_PROTOBUF AND EXPORT_CMAKE)
OPENSOURCE_EXPORT_REPLACEMENT(
CMAKE Protobuf
CMAKE_TARGET protobuf::libprotobuf protobuf::libprotoc
- CONAN protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_require_tool" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_import \"bin, protoc* -> ./bin\" && vanilla_protobuf"
+ CONAN protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan-requires" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_require_tool" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan-tool_requires" protobuf/${OPENSOURCE_REPLACE_PROTOBUF} "&& conan_import \"bin, protoc* -> ./bin\" && conan-imports \"bin, protoc* -> ./bin\" && vanilla_protobuf"
)
ELSE()