*Do not edit, this file is generated from comments to macros definitions using `ya dump conf-docs`.*
# ya.make commands
General info: [How to write ya.make files](https://wiki.yandex-team.ru/yatool/HowToWriteYaMakeFiles)
## Table of contents
* [Multimodules](#multimodules)
- Multimodule [DLL_JAVA](#multimodule_DLL_JAVA)
- Multimodule [DOCS](#multimodule_DOCS)
- Multimodule [FBS_LIBRARY](#multimodule_FBS_LIBRARY)
- Multimodule [JAR_PROGRAM](#multimodule_JAR_PROGRAM)
- Multimodule [JAVA_CONTRIB_PROGRAM](#multimodule_JAVA_CONTRIB_PROGRAM)
- Multimodule [JAVA_PROGRAM](#multimodule_JAVA_PROGRAM)
- Multimodule [JTEST](#multimodule_JTEST)
- Multimodule [JTEST_FOR](#multimodule_JTEST_FOR)
- Multimodule [JTEST_YMAKE](#multimodule_JTEST_YMAKE)
- Multimodule [JUNIT5](#multimodule_JUNIT5)
- Multimodule [JUNIT5_YMAKE](#multimodule_JUNIT5_YMAKE)
- Multimodule [MAPS_IDL_LIBRARY](#multimodule_MAPS_IDL_LIBRARY)
- Multimodule [MKDOCS](#multimodule_MKDOCS)
- Multimodule [PROTO_LIBRARY](#multimodule_PROTO_LIBRARY)
- Multimodule [PY23_LIBRARY](#multimodule_PY23_LIBRARY)
- Multimodule [PY23_NATIVE_LIBRARY](#multimodule_PY23_NATIVE_LIBRARY)
- Multimodule [PY23_TEST](#multimodule_PY23_TEST)
- Multimodule [PY3TEST](#multimodule_PY3TEST)
- Multimodule [PY3_PROGRAM](#multimodule_PY3_PROGRAM)
- Multimodule [SANDBOX_PY23_TASK](#multimodule_SANDBOX_PY23_TASK)
- Multimodule [SANDBOX_PY3_TASK](#multimodule_SANDBOX_PY3_TASK)
- Multimodule [SANDBOX_TASK](#multimodule_SANDBOX_TASK)
- Multimodule [SSQLS_LIBRARY](#multimodule_SSQLS_LIBRARY)
- Multimodule [YQL_UDF](#multimodule_YQL_UDF)
* [Modules](#modules)
- Module [BOOSTTEST](#module_BOOSTTEST)
- Module [BOOSTTEST_WITH_MAIN](#module_BOOSTTEST_WITH_MAIN)
- Module [CI_GROUP](#module_CI_GROUP)
- Module [CONTAINER](#module_CONTAINER)
- Module [CONTAINER_LAYER](#module_CONTAINER_LAYER)
- Module [CPP_STYLE_TEST](#module_CPP_STYLE_TEST)
- Module [CUSTOM_BUILD_LIBRARY](#module_CUSTOM_BUILD_LIBRARY)
- Module [DEFAULT_IOS_INTERFACE](#module_DEFAULT_IOS_INTERFACE)
- Module [DLL](#module_DLL)
- Module [DLL_TOOL](#module_DLL_TOOL)
- Module [DOCS_LIBRARY](#module_DOCS_LIBRARY)
- Module [EXECTEST](#module_EXECTEST)
- Module [FAT_OBJECT](#module_FAT_OBJECT)
- Module [FUZZ](#module_FUZZ)
- Module [GO_DLL](#module_GO_DLL)
- Module [GO_LIBRARY](#module_GO_LIBRARY)
- Module [GO_PROGRAM](#module_GO_PROGRAM)
- Module [GO_TEST](#module_GO_TEST)
- Module [GTEST](#module_GTEST)
- Module [GTEST_UGLY](#module_GTEST_UGLY)
- Module [G_BENCHMARK](#module_G_BENCHMARK)
- Module [IOS_INTERFACE](#module_IOS_INTERFACE)
- Module [JAVA_CONTRIB](#module_JAVA_CONTRIB)
- Module [JAVA_CONTRIB_PROXY](#module_JAVA_CONTRIB_PROXY)
- Module [JAVA_LIBRARY](#module_JAVA_LIBRARY)
- Module [LIBRARY](#module_LIBRARY)
- Module [MCU_PROGRAM](#module_MCU_PROGRAM)
- Module [PACKAGE](#module_PACKAGE)
- Module [PROGRAM](#module_PROGRAM)
- Module [PROTO_DESCRIPTIONS](#module_PROTO_DESCRIPTIONS)
- Module [PROTO_REGISTRY](#module_PROTO_REGISTRY)
- Module [PY2MODULE](#module_PY2MODULE)
- Module [PY2TEST](#module_PY2TEST)
- Module [PY2_LIBRARY](#module_PY2_LIBRARY)
- Module [PY2_PROGRAM](#module_PY2_PROGRAM)
- Module [PY3MODULE](#module_PY3MODULE)
- Module [PY3TEST_BIN](#module_PY3TEST_BIN)
- Module [PY3_LIBRARY](#module_PY3_LIBRARY)
- Module [PY3_PROGRAM_BIN](#module_PY3_PROGRAM_BIN)
- Module [PYCR_PROGRAM](#module_PYCR_PROGRAM)
- Module [PYTEST_BIN](#module_PYTEST_BIN)
- Module [PY_ANY_MODULE](#module_PY_ANY_MODULE)
- Module [RECURSIVE_LIBRARY](#module_RECURSIVE_LIBRARY)
- Module [RESOURCES_LIBRARY](#module_RESOURCES_LIBRARY)
- Module [R_MODULE](#module_R_MODULE)
- Module [SO_PROGRAM](#module_SO_PROGRAM)
- Module [TS_BUNDLE](#module_TS_BUNDLE)
- Module [TS_LIBRARY](#module_TS_LIBRARY)
- Module [UDF](#module_UDF)
- Module [UDF_LIB](#module_UDF_LIB)
- Module [UNION](#module_UNION)
- Module [UNITTEST](#module_UNITTEST)
- Module [UNITTEST_FOR](#module_UNITTEST_FOR)
- Module [UNITTEST_WITH_CUSTOM_ENTRY_POINT](#module_UNITTEST_WITH_CUSTOM_ENTRY_POINT)
- Module [YCR_PROGRAM](#module_YCR_PROGRAM)
- Module [YQL_PYTHON3_UDF](#module_YQL_PYTHON3_UDF)
- Module [YQL_PYTHON3_UDF_TEST](#module_YQL_PYTHON3_UDF_TEST)
- Module [YQL_PYTHON_UDF](#module_YQL_PYTHON_UDF)
- Module [YQL_PYTHON_UDF_PROGRAM](#module_YQL_PYTHON_UDF_PROGRAM)
- Module [YQL_PYTHON_UDF_TEST](#module_YQL_PYTHON_UDF_TEST)
- Module [YQL_UDF_MODULE](#module_YQL_UDF_MODULE)
- Module [YQL_UDF_TEST](#module_YQL_UDF_TEST)
- Module [YT_UNITTEST](#module_YT_UNITTEST)
- Module [Y_BENCHMARK](#module_Y_BENCHMARK)
* [Macros](#macros)
- Macros [AARS](#macro_AARS) .. [ADD_COMPILABLE_TRANSLATE](#macro_ADD_COMPILABLE_TRANSLATE)
- Macros [ADD_COMPILABLE_TRANSLIT](#macro_ADD_COMPILABLE_TRANSLIT) .. [ALL_RESOURCE_FILES](#macro_ALL_RESOURCE_FILES)
- Macros [ALL_SRCS](#macro_ALL_SRCS) .. [BPF](#macro_BPF)
- Macros [BPF_STATIC](#macro_BPF_STATIC) .. [BUNDLE](#macro_BUNDLE)
- Macros [CFLAGS](#macro_CFLAGS) .. [COLLECT_FRONTEND_FILES](#macro_COLLECT_FRONTEND_FILES)
- Macros [COLLECT_JINJA_TEMPLATES](#macro_COLLECT_JINJA_TEMPLATES) .. [CONLYFLAGS](#macro_CONLYFLAGS)
- Macros [COPY](#macro_COPY) .. [CREATE_INIT_PY_STRUCTURE](#macro_CREATE_INIT_PY_STRUCTURE)
- Macros [CREDITS_DISCLAIMER](#macro_CREDITS_DISCLAIMER) .. [DECIMAL_MD5_LOWER_32_BITS](#macro_DECIMAL_MD5_LOWER_32_BITS)
- Macros [DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE](#macro_DECLARE_EXTERNAL_HOST_RESOURCES_BUNDLE) .. [DLL_FOR](#macro_DLL_FOR)
- Macros [DOCS_BUILDER](#macro_DOCS_BUILDER) .. [ELSEIF](#macro_ELSEIF)
- Macros [EMBED_JAVA_VCS_INFO](#macro_EMBED_JAVA_VCS_INFO) .. [EXPORT_ALL_DYNAMIC_SYMBOLS](#macro_EXPORT_ALL_DYNAMIC_SYMBOLS)
- Macros [EXPORT_YMAPS_PROTO](#macro_EXPORT_YMAPS_PROTO) .. [FILES](#macro_FILES)
- Macros [FLATC_FLAGS](#macro_FLATC_FLAGS) .. [FUZZ_DICTS](#macro_FUZZ_DICTS)
- Macros [FUZZ_OPTS](#macro_FUZZ_OPTS) .. [GO_BENCH_TIMEOUT](#macro_GO_BENCH_TIMEOUT)
- Macros [GO_CGO1_FLAGS](#macro_GO_CGO1_FLAGS) .. [GO_GRPC_GATEWAY_SWAGGER_SRCS](#macro_GO_GRPC_GATEWAY_SWAGGER_SRCS)
- Macros [GO_LDFLAGS](#macro_GO_LDFLAGS) .. [GO_TEST_EMBED_PATTERN](#macro_GO_TEST_EMBED_PATTERN)
- Macros [GO_TEST_FOR](#macro_GO_TEST_FOR) .. [IF](#macro_IF)
- Macros [INCLUDE](#macro_INCLUDE) .. [JAR_INCLUDE](#macro_JAR_INCLUDE)
- Macros [JAR_RESOURCE](#macro_JAR_RESOURCE) .. [JAVA_TEST](#macro_JAVA_TEST)
- Macros [JAVA_TEST_DEPS](#macro_JAVA_TEST_DEPS) .. [LICENSE_TEXTS](#macro_LICENSE_TEXTS)
- Macros [LINKER_SCRIPT](#macro_LINKER_SCRIPT) .. [LLVM_COMPILE_LL](#macro_LLVM_COMPILE_LL)
- Macros [LLVM_LINK](#macro_LLVM_LINK) .. [MAVEN_GROUP_ID](#macro_MAVEN_GROUP_ID)
- Macros [MESSAGE](#macro_MESSAGE) .. [NO_CHECK_IMPORTS](#macro_NO_CHECK_IMPORTS)
- Macros [NO_CLANG_COVERAGE](#macro_NO_CLANG_COVERAGE) .. [NO_JOIN_SRC](#macro_NO_JOIN_SRC)
- Macros [NO_LIBC](#macro_NO_LIBC) .. [NO_RUNTIME](#macro_NO_RUNTIME)
- Macros [NO_SANITIZE](#macro_NO_SANITIZE) .. [ORIGINAL_SOURCE](#macro_ORIGINAL_SOURCE)
- Macros [OWNER](#macro_OWNER) .. [PIRE_INLINE_CMD](#macro_PIRE_INLINE_CMD)
- Macros [PREPARE_INDUCED_DEPS](#macro_PREPARE_INDUCED_DEPS) .. [PYTHON](#macro_PYTHON)
- Macros [PYTHON2_ADDINCL](#macro_PYTHON2_ADDINCL) .. [PY_MAIN](#macro_PY_MAIN)
- Macros [PY_NAMESPACE](#macro_PY_NAMESPACE) .. [REAL_LINK_EXE_IMPL](#macro_REAL_LINK_EXE_IMPL)
- Macros [RECURSE](#macro_RECURSE) .. [RESOURCE_FILES](#macro_RESOURCE_FILES)
- Macros [RESTRICT_LICENSES](#macro_RESTRICT_LICENSES) .. [RUN_PROGRAM](#macro_RUN_PROGRAM)
- Macros [RUN_PYTHON](#macro_RUN_PYTHON) .. [SET_APPEND_WITH_GLOBAL](#macro_SET_APPEND_WITH_GLOBAL)
- Macros [SET_COMPILE_OUTPUTS_MODIFIERS](#macro_SET_COMPILE_OUTPUTS_MODIFIERS) .. [SRCS](#macro_SRCS)
- Macros [SRC_C_AVX](#macro_SRC_C_AVX) .. [SRC_C_SSE41](#macro_SRC_C_SSE41)
- Macros [SRC_C_SSSE3](#macro_SRC_C_SSSE3) .. [SYMLINK](#macro_SYMLINK)
- Macros [SYSTEM_PROPERTIES](#macro_SYSTEM_PROPERTIES) .. [TIMEOUT](#macro_TIMEOUT)
- Macros [UBERJAR](#macro_UBERJAR) .. [UPDATE_VCS_JAVA_INFO_NODEP](#macro_UPDATE_VCS_JAVA_INFO_NODEP)
- Macros [USE_COMMON_GOOGLE_APIS](#macro_USE_COMMON_GOOGLE_APIS) .. [USE_PLANTUML](#macro_USE_PLANTUML)
- Macros [USE_PYTHON2](#macro_USE_PYTHON2) .. [WINDOWS_MANIFEST](#macro_WINDOWS_MANIFEST)
- Macros [WITHOUT_LICENSE_TEXTS](#macro_WITHOUT_LICENSE_TEXTS) .. [YABS_GENERATE_PHANTOM_CONF_PATCH](#macro_YABS_GENERATE_PHANTOM_CONF_PATCH)
- Macros [YABS_GENERATE_PHANTOM_CONF_TEST_CHECK](#macro_YABS_GENERATE_PHANTOM_CONF_TEST_CHECK) .. [YT_SPEC](#macro_YT_SPEC)
## Multimodules
###### Multimodule [DLL\_JAVA][]()
DLL built using swig for Java. Produces dynamic library and a .jar.
Dynamic library is treated the same as in the case of PEERDIR from Java to DLL.
.jar goes on the classpath.
Documentation: https://wiki.yandex-team.ru/yatool/java/#integracijascpp/pythonsborkojj
###### Multimodule [DOCS][]()
Documentation project multimodule.
When built directly, via RECURSE, DEPENDS or BUNDLE the output artifact is docs.tar.gz with statically generated site.
When PEERDIRed from other DOCS() module behaves like a UNION (supplying own content and dependencies to build target).
Peerdirs from modules other than DOCS are not accepted.
Most usual macros are not accepted, only used with the macros DOCS\_DIR(), DOCS\_CONFIG(), DOCS\_VARS().
@see: [DOCS\_DIR()](#macro\_DOCS\_DIR), [DOCS\_CONFIG()](#macro\_DOCS\_CONFIG), [DOCS\_VARS()](#macro\_DOCS\_VARS).
###### Multimodule [FBS\_LIBRARY][]()
Build some variant of Flatbuffers library.
The particular variant is selected based on where PEERDIR to FBS\_LIBRARY
comes from.
Now supported 5 variants: C++, Java, Python 2.x, Python 3.x and Go.
When PEERDIR comes from module for particular language appropriate variant
is selected.
Notes: FBS\_NAMESPACE must be specified in all dependent FBS\_LIBRARY modules
if build of Go code is requested.
###### Multimodule [JAR\_PROGRAM][]
Not documented yet.
###### Multimodule [JAVA\_CONTRIB\_PROGRAM][]
Not documented yet.
###### Multimodule [JAVA\_PROGRAM][]()
The module describing java programs build.
Output artifacts: .jar and directory with all the jar to the classpath of the formation.
Documentation: https://wiki.yandex-team.ru/yatool/java/
###### Multimodule [JTEST][]
Not documented yet.
###### Multimodule [JTEST\_FOR][]
Not documented yet.
###### Multimodule [JTEST\_YMAKE][]
Not documented yet.
###### Multimodule [JUNIT5][]
Not documented yet.
###### Multimodule [JUNIT5\_YMAKE][]
Not documented yet.
###### Multimodule [MAPS\_IDL\_LIBRARY][]()
Definition of multimodule that builds various variants of libraries.
The particular variant is selected based on where PEERDIR to IDL\_LIBRARY comes from.
Now supported 2 variants: C++, Java
Java version is not really a library but an archive of generated Java sources
###### Multimodule [MKDOCS][]()
Documentation project multimodule.
When built directly, via RECURSE, DEPENDS or BUNDLE the output artifact is docs.tar.gz with statically generated site (using mkdocs as builder).
When PEERDIRed from other MKDOCS() module behaves like a UNION (supplying own content and dependencies to build target).
Peerdirs from modules other than MKDOCS are not accepted.
Most usual macros are not accepted, only used with the macros DOCS\_DIR(), DOCS\_CONFIG(), DOCS\_VARS().
@see: [DOCS\_DIR()](#macro\_DOCS\_DIR), [DOCS\_CONFIG()](#macro\_DOCS\_CONFIG), [DOCS\_VARS()](#macro\_DOCS\_VARS).
###### Multimodule [PROTO\_LIBRARY][]()
Build some varian of protocol buffers library.
The particular variant is selected based on where PEERDIR to PROTO\_LIBRARY comes from.
Now supported 5 variants: C++, Java, Python 2.x, Python 3.x and Go.
When PEERDIR comes from module for particular language appropriate variant is selected.
PROTO\_LIBRARY also supports emission of GRPC code if GRPC() macro is specified.
Notes:
- Python versions emit C++ code in addition to Python as optimization.
- In some PROTO\_LIBRARY-es Java or Python versions are excluded via EXCLUDE\_TAGS macros due to incompatibilities.
- Use from DEPENDS or BUNDLE is not allowed
Documentation: https://wiki.yandex-team.ru/yatool/proto\_library/
See: [GRPC()](#macro\_GRPC), [OPTIMIZE\_PY\_PROTOS()](#macro\_OPTIMIZE\_PY\_PROTOS), [INCLUDE\_TAGS()](#macro\_INCLUDE\_TAGS), [EXCLUDE\_TAGS()](#macro\_EXCLUDE\_TAGS)
###### Multimodule [PY23\_LIBRARY][]([name])
Build PY2\_LIBRARY or PY3\_LIBRARY depending on incoming PEERDIR.
Direct build or build by RECURSE creates both variants.
This multimodule doesn't define any final targets, so use from DEPENDS or BUNDLE is not allowed.
Documentation: https://wiki.yandex-team.ru/arcadia/python/pysrcs
###### Multimodule [PY23\_NATIVE\_LIBRARY][]([name])
Build LIBRARY compatible with either Python 2.x or Python 3.x depending on incoming PEERDIR.
This multimodule doesn't depend on Arcadia Python binary build. It is intended only for C++ code and cannot contain PY\_SRCS and USE\_PYTHON2 macros.
Use these multimodule instead of PY23\_LIBRARY if the C++ extension defined in it will be used in PY2MODULE.
While it doesn't bring Arcadia Python dependency itself, it is still compatible with Arcadia Python build and can be PEERDIR-ed from PY2\_LIBRARY and alikes.
Proper version will be selected according to Python version of the module PEERDIR comes from.
This mulrtimodule doesn't define any final targets so cannot be used from DEPENDS or BUNDLE macros.
For more information read https://wiki.yandex-team.ru/arcadia/python/pysrcs/#pysrcssrcsipy23nativelibrary
@see [LIBRARY()](#module\_LIBRARY), [PY2MODULE()](#module\_PY2MODULE)
###### Multimodule [PY23\_TEST][]
Not documented yet.
###### Multimodule [PY3TEST][]([name])
The test module for Python 3.x based on py.test
This module is compatible only with PYTHON3-tagged modules and selects peers from multimodules accordingly.
This module is only compatible with Arcadia Python build (to avoid tests duplication from Python2/3-tests). For non-Arcadia python use PYTEST.
Documentation: https://wiki.yandex-team.ru/yatool/test/#testynapytest
Documentation about the Arcadia test system: https://wiki.yandex-team.ru/yatool/test/
###### Multimodule [PY3\_PROGRAM][]([progname])
Python 3.x binary program. Links all Python 3.x libraries and Python 3.x interpreter into itself to form regular executable.
If name is not specified it will be generated from the name of the containing project directory.
This only compatible with PYTHON3-tagged modules and selects those from multimodules.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Multimodule [SANDBOX\_PY23\_TASK][]
Not documented yet.
###### Multimodule [SANDBOX\_PY3\_TASK][]([Name])
Multimodule describing Sandbox task (Python3 code that can be executed by Sandbox system).
When being a final target, this multimodule builds Sandbox binary task. It may PEERDIR other SANDBOX\_PY3\_TASKs as libraries.
The final artifact is provided when SANDBOX\_PY3\_TASK is referred to by DEPENDS and BUNDLE macros.
As PEERDIR target, it works like regular PY3\_LIBRARY with predefined dependencies on Sandbox SDK to allow code reuse among SANDBOX\_PY3\_TASKs.
Currently Sandbox supports Python 3.x only in binary tasks, both variants will be compatible only with Python 3.x and py23 libraries
and will select multimodule variants accordingly.
Documentation: https://wiki.yandex-team.ru/sandbox/tasks/binary
###### Multimodule [SANDBOX\_TASK][]([Name])
Multimodule describing Sandbox task (Python code that can be executed by Sandbox system).
When being a final target, this multimodule builds Sandbox binary task. It may PEERDIR other SANDBOX\_TASKs as libraries.
The final artifact is provided when SANDBOX\_TASK is referred to by DEPENDS and BUNDLE macros.
As PEERDIR target, it works like regular PY2\_LIBRARY with predefined dependencies on Sandbox SDK to allow code reuse among SANDBOX\_TASKs.
Currently Sandbox supports only Python 2.x, so both variants will be compatible only with Python 2.x modules
and will select multimodule variants accordingly.
Documentation: https://wiki.yandex-team.ru/sandbox/tasks/binary
###### Multimodule [SSQLS\_LIBRARY][]
Not documented yet.
###### Multimodule [YQL\_UDF][](name)
User-defined function for YQL
Multimodule which is YQL\_UDF\_MODULE when built directly or referred by BUNDLE and DEPENDS macros.
If used by PEERDIRs it is usual static LIBRARY with default YQL dependencies, allowing code reuse between UDFs.
@see: [YQL\_UDF\_MODULE()](#module\_YQL\_UDF\_MODULE)
## Modules
###### Module [BOOSTTEST][]([name]) _#deprecated_
Test module based on boost/test/unit\_test.hpp.
As with entire boost library usage of this technology is deprecated in Arcadia and restricted with configuration error in most of projects.
No new module of this type should be introduced unless it is explicitly approved by C++ committee.
###### Module [BOOSTTEST\_WITH\_MAIN][]([name]) _#deprecated_
Same as BOOSTTEST (see above), but comes with builtin int main(argc, argv) implementation
###### Module [CI\_GROUP][]()
Module collects what is described directly inside it transitively by PEERDIRs.
No particular layout of built artifacts is implied. This module is needed primarily for CI dependency analysis and may not trigger builds at all.
Is only used together with the macro PEERDIR() and FILES(). Don't use SRCS inside CI\_GROUP().
###### Module [CONTAINER][]: \_BARE\_UNIT
Not documented yet.
###### Module [CONTAINER\_LAYER][]: \_BARE\_UNIT
Not documented yet.
###### Module [CPP\_STYLE\_TEST][]: PY3TEST\_BIN
Not documented yet.
###### Module [CUSTOM\_BUILD\_LIBRARY][]: LIBRARY
Not documented yet.
###### Module [DEFAULT\_IOS\_INTERFACE][]: IOS\_INTERFACE
Not documented yet.
###### Module [DLL][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
Dynamic library module definition.
1. major\_ver and minor\_ver must be integers.
2. EXPORTS allows you to explicitly specify the list of exported functions. This accepts 2 kind of files: .exports with pairs and JSON-line .symlist files
3. PREFIX allows you to change the prefix of the output file (default DLL has the prefix "lib").
DLL cannot participate in linking to programs but can be used from Java or as final artifact (packaged and deployed).
###### Module [DLL\_TOOL][]
DLL\_TOOL is a DLL that can be used as a LD\_PRELOAD tool.
###### Module [DOCS\_LIBRARY][]: \_DOCS\_BARE\_UNIT
Not documented yet.
###### Module [EXECTEST][]()
Module definition of generic test that executes a binary.
Use macro RUN to specify binary to run.
@example:
EXECTEST()
OWNER(g:yatool)
RUN(
cat input.txt
)
DATA(
arcadia/devtools/ya/test/tests/exectest/data
)
DEPENDS(
devtools/dummy_arcadia/cat
)
TEST_CWD(devtools/ya/test/tests/exectest/data)
END()
More examples: https://wiki.yandex-team.ru/yatool/test/#exec-testy
@see: [RUN()](#macro\_RUN)
###### Module [FAT\_OBJECT][]()
The "fat" object module. It will contain all its transitive dependencies reachable by PEERDIRs:
static libraries, local (from own SRCS) and global (from peers') object files.
Designed for use in XCode projects for iOS.
###### Module [FUZZ][]()
In order to start using Fuzzing in Arcadia, you need to create a FUZZ module with the implementation of the function LLVMFuzzerTestOneInput().
This module should be reachable by RECURSE from /autocheck project in order for the corpus to be regularly updated.
AFL and Libfuzzer are supported in Arcadia via a single interface, but the automatic fuzzing still works only through Libfuzzer.
Example: https://a.yandex-team.ru/arc/trunk/arcadia/contrib/libs/re2/re2/fuzzing/re2\_fuzzer.cc?rev=2919463#L58
Documentation: https://wiki.yandex-team.ru/yatool/fuzzing/
###### Module [GO\_DLL][](name major\_ver [minor\_ver] [PREFIX prefix])
Go ishared object module definition.
Compile and link Go module to a shared object.
Will select Go implementation on PEERDIR to PROTO\_LIBRARY.
###### Module [GO\_LIBRARY][]([name])
Go library module definition.
Compile Go module as a library suitable for PEERDIR from other Go modules.
Will select Go implementation on PEERDIR to PROTO\_LIBRARY.
###### Module [GO\_PROGRAM][]([name])
Go program module definition.
Compile and link Go module to an executable program.
Will select Go implementation on PEERDIR to PROTO\_LIBRARY.
###### Module [GO\_TEST][]([name])
Go test module definition.
Compile and link Go module as a test suitable for running with Arcadia testing support.
All usual testing support macros like DATA, DEPENDS, SIZE, REQUIREMENTS etc. are supported.
Will select Go implementation on PEERDIR to PROTO\_LIBRARY.
###### Module [GTEST][]([name])
Unit test module based on library/cpp/testing/gtest.
It is recommended not to specify the name.
Documentation: https://docs.yandex-team.ru/arcadia-cpp/cpp\_test
###### Module [GTEST\_UGLY][]([name])
Deprecated, do not use in new projects. Use GTEST instead.
The test module based on gtest (contrib/libs/gtest contrib/libs/gmock).
Use public documentation on gtest for details.
Documentation about the Arcadia test system: https://wiki.yandex-team.ru/yatool/test/
###### Module [G\_BENCHMARK][]([benchmarkname])
Benchmark test based on the google benchmark.
For more details see: https://a.yandex-team.ru/arc/trunk/arcadia/contrib/libs/benchmark/README.md
###### Module [IOS\_INTERFACE][]()
iOS GUI module definition
###### Module [JAVA\_CONTRIB][]: \_JAR\_BASE
Not documented yet.
###### Module [JAVA\_CONTRIB\_PROXY][]: \_JAR\_BASE
Not documented yet.
###### Module [JAVA\_LIBRARY][]()
The module describing java library build.
Documentation: https://wiki.yandex-team.ru/yatool/java/
###### Module [LIBRARY][]()
The regular static library module.
The LIBRARY() is intermediate module, so when built directly it won't build its dependencies.
It transitively provides its PEERDIRs to ultimate final target, where all LIBRARY() modules are built and linked together.
This is C++ library, and it selects peers from multimodules accordingly.
It makes little sense to mention LIBRARY in DEPENDS or BUNDLE, package and deploy it since it is not a standalone entity.
In order to use library in tests PEERDIR it to link into tests.
If you think you need to distribute static library please contact devtools@ for assistance.
###### Module [MCU\_PROGRAM][]([progname])
Program module for microcontrollers. Converts ELF to Intel HEX, Motorola S-record and raw binary file formats.
If name is not specified it will be generated from the name of the containing project directory.
###### Module [PACKAGE][](name)
Module collects what is described directly inside it, builds and collects all its transitively available PEERDIRs.
As a result, build directory of the project gets the structure of the accessible part of Arcadia, where the build result of each PEERDIR is placed to relevant Arcadia subpath.
The data can be optionally packed if macro PACK() is used.
Is only used together with the macros FILES(), PEERDIR(), COPY(), FROM\_SANDBOX(), RUN\_PROGRAM or BUNDLE(). Don't use SRCS inside a PACKAGE.
Documentation: https://wiki.yandex-team.ru/yatool/large-data/
@see: [PACK()](#macro\_PACK)
###### Module [PROGRAM][]([progname])
Regular program module.
If name is not specified it will be generated from the name of the containing project directory.
###### Module [PROTO\_DESCRIPTIONS][]: \_BARE\_UNIT
Not documented yet.
###### Module [PROTO\_REGISTRY][]: PROTO\_DESCRIPTIONS
Not documented yet.
###### Module [PY2MODULE][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
The Python external module for Python2 and any system Python
1. major\_ver and minor\_ver must be integers.
2. The resulting .so will have the prefix "lib".
3. Processing EXPORTS and PREFIX is the same as for DLL module
This is native DLL, so it will select C++ version from PROTO\_LIBRARY.
Note: this module will always PEERDIR Python2 version of PY23\_NATIVE\_LIBRARY.
Do not PEERDIR PY2\_LIBRARY or PY23\_LIBRARY: this will link Python in and render artifact unusable as Python module.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [PY2TEST][]([name])
The test module for Python 2.x based on py.test
This module is compatible only with PYTHON2-tagged modules and selects peers from multimodules accordingly.
This module is compatible with non-Arcadia Python builds.
Documentation: https://wiki.yandex-team.ru/yatool/test/#python
Documentation about the Arcadia test system: https://wiki.yandex-team.ru/yatool/test/
###### Module [PY2\_LIBRARY][]() _# deprecated_
Deprecated. Use PY23\_LIBRARY or PY3\_LIBRARY instead.
Python 2.x binary built library. Builds sources from PY\_SRCS to data suitable for PY2\_PROGRAM.
Adds dependencies to Python 2.x runtime library from Arcadia.
This module is only compatible with PYTHON2-tagged modules and selects those from multimodules.
This module is only compatible with Arcadia Python build.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [PY2\_PROGRAM][]([progname]) _# deprecated_
Deprecated. Use PY3\_PROGRAM instead.
Python 2.x binary program. Links all Python 2.x libraries and Python 2.x interpreter into itself to form regular executable.
If name is not specified it will be generated from the name of the containing project directory.
This only compatible with PYTHON2-tagged modules and selects those from multimodules.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [PY3MODULE][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
The Python external module for Python3 and any system Python
1. major\_ver and minor\_ver must be integers.
2. The resulting .so will have the prefix "lib".
3. Processing EXPORTS and PREFIX is the same as for DLL module
This is native DLL, so it will select C++ version from PROTO\_LIBRARY.
Note: this module will always PEERDIR Python3 version of PY23\_NATIVE\_LIBRARY.
Do not PEERDIR PY3\_LIBRARY or PY23\_LIBRARY: this will link Python in and render artifact unusable as Python module.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [PY3TEST\_BIN][]() _#deprecated_
Same as PY3TEST. Don't use this, use PY3TEST instead.
###### Module [PY3\_LIBRARY][]()
Python 3.x binary library. Builds sources from PY\_SRCS to data suitable for PY2\_PROGRAM
Adds dependencies to Python 2.x runtime library from Arcadia.
This module is only compatible with PYTHON3-tagged modules and selects those from multimodules.
This module is only compatible with Arcadia Python build.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [PY3\_PROGRAM\_BIN][]([progname])
Use instead of PY3\_PROGRAM only if ya.make with PY3\_PROGRAM() included in another ya.make
In all other cases use PY3\_PROGRAM
###### Module [PYCR\_PROGRAM][]([progname])
pycare-specific program module. Generates pycare configs in addition to producing the program.
If name is not specified it will be generated from the name of the containing project directory.
###### Module [PYTEST\_BIN][]() _#deprecated_
Same as PY2TEST. Don't use this, use PY2TEST instead.
###### Module [PY\_ANY\_MODULE][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
The Python external module for any versio of Arcadia or system Python.
1. major\_ver and minor\_ver must be integers.
2. The resulting .so will have the prefix "lib".
3. Processing EXPORTS and PREFIX is the same as for DLL module
This is native DLL, so it will select C++ version from PROTO\_LIBRARY.
Note: Use PYTHON2\_MODULE()/PYTHON3\_MODULE() in order to PEERDIR proper version of PY23\_NATIVE\_LIBRARY.
Do not PEERDIR any PY\*\_LIBRARY: this will link Python in and render artifact unusable as Python module.
Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/py\_srcs/
###### Module [RECURSIVE\_LIBRARY][]()
The recursive ("fat") library module. It will contain all its transitive dependencies reachable by PEERDIRs:
from static libraries, local (from own SRCS) and global (from peers') object files.
Designed for use in XCode projects for iOS.
###### Module [RESOURCES\_LIBRARY][]()
Definition of a module that brings its content from external source (Sandbox) via DECLARE\_EXTERNAL\_RESOURCE macro.
This can participate in PEERDIRs of others as library but it cannot have own sources and PEERDIRs.
@see: [DECLARE\_EXTERNAL\_RESOURCE()](#macro\_DECLARE\_EXTERNAL\_RESOURCE)
###### Module [R\_MODULE][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
The external module for R language.
1. major\_ver and minor\_ver must be integers.
2. The resulting .so will have the prefix "lib".
3. Processing EXPORTS and PREFIX is the same as for DLL module
This is native DLL, so it will select C++ version from PROTO\_LIBRARY.
###### Module [SO\_PROGRAM][](name major\_ver [minor\_ver] [EXPORTS symlist\_file] [PREFIX prefix])
Executable dynamic library module definition.
1. major\_ver and minor\_ver must be integers.
2. EXPORTS allows you to explicitly specify the list of exported functions. This accepts 2 kind of files: .exports with pairs and JSON-line .symlist files
3. PREFIX allows you to change the prefix of the output file.
###### Module [TS\_BUNDLE][]([name])
The Webpack bundle, bundles JavaScript code.
Build results are bundle.tar, typings and source mappings (depending on local tsconfig.json settings).
@see [NODE\_MODULES()](#macro\_NODE\_MODULES)
@example
TS_BUNDLE()
SRCS(src/index.ts)
NODE_MODULES()
END()
###### Module [TS\_LIBRARY][]([name])
The TypeScript/JavaScript library module, compiles TypeScript sources to JavaScript.
Build results are JavaScript files, typings and source mappings (depending on local tsconfig.json settings).
@see [NODE\_MODULES()](#macro\_NODE\_MODULES)
@example
TS_LIBRARY()
SRCS(src/index.ts)
NODE_MODULES()
END()
###### Module [UDF][](name [EXPORTS symlist\_file] [PREFIX prefix]) _# deprecated_
The KiWi UDF module.
Processing EXPORTS and PREFIX is the same as for DLL.
https://wiki.yandex-team.ru/robot/manual/kiwi/userguide/#polzovatelskiefunkciiudftriggerykwcalc
###### Module [UDF\_LIB][]([name]) _# deprecated_
The LIBRARY module for KiWi UDF, so has default PEERDIR to yweb/robot/kiwi/kwcalc/udflib.
###### Module [UNION][](name)
Collection of PEERDIR dependencies, files and artifacts.
UNION doesn't build its peers, just provides those to modules depending on it.
When specified in DEPENDS() macro the UNION is transitively closed, building all its peers and providing those by own paths (without adding this module path like PACKAGE does).
Is only used together with the macros like FILES(), PEERDIR(), COPY(), FROM\_SANDBOX(), RUN\_PROGRAM or BUNDLE(). Don't use SRCS inside a UNION.
Documentation: https://wiki.yandex-team.ru/yatool/large-data/
###### Module [UNITTEST][]([name])
Unit test module based on library/cpp/testing/unittest.
It is recommended not to specify the name.
Documentation: https://wiki.yandex-team.ru/yatool/test/#opisanievya.make1
###### Module [UNITTEST\_FOR][](path/to/lib)
Convenience extension of UNITTEST module.
The UNINTTEST module with additional SRCDIR + ADDINCL + PEERDIR on path/to/lib.
path/to/lib is the path to the directory with the LIBRARY project.
Documentation about the Arcadia test system: https://wiki.yandex-team.ru/yatool/test/
###### Module [UNITTEST\_WITH\_CUSTOM\_ENTRY\_POINT][]([name])
Generic unit test module.
###### Module [YCR\_PROGRAM][]([progname])
yacare-specific program module. Generates yacare configs in addition to producing the program.
If name is not specified it will be generated from the name of the containing project directory.
###### Module [YQL\_PYTHON3\_UDF][](name)
The extension module for YQL with Python 3.x UDF (User Defined Function for YQL).
Unlike YQL\_UDF this is plain DLL module, so PEERDIRs to it are not allowed.
Documentation: https://yql.yandex-team.ru/docs/yt/udf/python/
###### Module [YQL\_PYTHON3\_UDF\_TEST][](name)
The Python test for Python 3.x YQL UDF (User Defined Function for YQL). The code should be a proper YQL\_PYTHON3\_UDF.
This module will basically build itself as UDF and run as test using yql/tools/run\_python\_udf/run\_python\_udf tool.
Documentation: https://yql.yandex-team.ru/docs/yt/udf/python/
@see: [YQL\_PYTHON3\_UDF()](#module\_YQL\_PYTHON3\_UDF)
###### Module [YQL\_PYTHON\_UDF][](name)
Definition of the extension module for YQL with Python 2.x UDF (User Defined Function for YQL).
Unlike YQL\_UDF this is plain DLL module, so PEERDIRs to it are not allowed.
https://yql.yandex-team.ru/docs/yt/udf/python/
###### Module [YQL\_PYTHON\_UDF\_PROGRAM][](name)
Definition of the extension module for YQL with Python 2.x UDF (User Defined Function for YQL).
Unlike YQL\_UDF this is plain DLL module, so PEERDIRs to it are not allowed.
https://yql.yandex-team.ru/docs/yt/udf/python/
###### Module [YQL\_PYTHON\_UDF\_TEST][](name)
The Python test for Python YQL UDF (Python User Defined Function for YQL). The code should be a proper YQL\_PYTHON\_UDF.
This module will basically build itself as UDF and run as test using yql/tools/run\_python\_udf/run\_python\_udf tool.
Documentation: https://yql.yandex-team.ru/docs/yt/udf/python/
@example: https://a.yandex-team.ru/arc/trunk/arcadia/yql/udfs/test/simple/ya.make
@see: [YQL\_PYTHON\_UDF()](#module\_YQL\_PYTHON\_UDF)
###### Module [YQL\_UDF\_MODULE][](name)
The extension module for YQL with C++ UDF (User Defined Function YQL)
https://yql.yandex-team.ru/docs/yt/udf/cpp/
###### Module [YQL\_UDF\_TEST][]([name])
The module to test YQL C++ UDF.
Documentation: https://yql.yandex-team.ru/docs/yt/libraries/testing/
Documentation about the Arcadia test system: https://wiki.yandex-team.ru/yatool/test/
###### Module [YT\_UNITTEST][]([name])
YT Unit test module based on mapreduce/yt/library/utlib
###### Module [Y\_BENCHMARK][]([benchmarkname])
Benchmark test based on the library/cpp/testing/benchmark.
For more details see: https://wiki.yandex-team.ru/yatool/test/#zapuskbenchmark
## Macros
###### Macro [AARS][](Aars...)
This macro is strictly prohibited to use outside of mapsmobi project
###### Macro [AAR\_GRADLE\_SCRIPT\_GENERATOR][](python\_script)
Not documented yet.
###### Macro [AAR\_LOCAL\_MAVEN\_REPO][](repo...)
Not documented yet.
###### Macro [ACCELEO][](XSD{input}[], MTL{input}[], MTL\_ROOT="${MODDIR}", LANG{input}[], OUT{output}[], OUT\_NOAUTO{output}[], OUTPUT\_INCLUDES[], DEBUG?"stdout2stderr":"stderr2stdout")
Not documented yet.
###### Macro [ADDINCL][]([FOR ][GLOBAL dir]\* dirlist) _# builtin_
The macro adds the directories to include/import search path to compilation flags of the current project.
By default settings apply to C/C++ compilation namely sets -I flag, use FOR argument to change target command.
@params:
`FOR ` - adds inclues/import serach path for othe language. E.g. `FOR proto` adds import search path for .proto files processing.
`GLOBAL` - extends the search for headers (-I) on the dependent projects.
###### Macro [ADDINCLSELF][]()
The macro adds the -I flag to the source compilation flags of the current project.
###### Macro [ADD\_CHECK][]
Not documented yet.
###### Macro [ADD\_CHECK\_PY\_IMPORTS][]
Not documented yet.
###### Macro [ADD\_CLANG\_TIDY][]()
Not documented yet.
###### Macro [ADD\_COMPILABLE\_TRANSLATE][](Dict Name Options...)
Generate translation dictionary code to transdict.LOWER(Name).cpp that will than be compiled into library
###### Macro [ADD\_COMPILABLE\_TRANSLIT][](TranslitTable NGrams Name Options...)
Generate transliteration dictionary code
This will emit both translit, untranslit and ngrams table codes those will be than further compiled into library
###### Macro [ADD\_DLLS\_TO\_JAR][]()
Not documented yet.
###### Macro [ADD\_PERL\_MODULE][](Dir ModuleName)
Add dependency on specified Perl module to the library
###### Macro [ADD\_PYTEST\_BIN][]
Not documented yet.
###### Macro [ADD\_PYTEST\_SCRIPT][]
Not documented yet.
###### Macro [ADD\_YTEST][]
Not documented yet.
###### Macro [ALLOCATOR][](Alloc) _# Default: LF_
Set memory allocator implementation for the PROGRAM()/DLL() module.
This may only be specified for programs and dlls, use in other modules leads to configuration errors.
Available allocators are: "LF", "LF\_YT", "LF\_DBG", "YT", "J", "B", "BM", "C", "TCMALLOC", "GOOGLE", "LOCKLESS", "SYSTEM", "FAKE", "MIM", "HU".
- LF - lfalloc (https://a.yandex-team.ru/arc/trunk/arcadia/library/cpp/lfalloc)
- LF\_YT - Allocator selection for YT (https://a.yandex-team.ru/arc/trunk/arcadia/library/cpp/lfalloc/yt/ya.make)
- LF\_DBG - Debug allocator selection (https://a.yandex-team.ru/arc/trunk/arcadia/library/cpp/lfalloc/dbg/ya.make)
- YT - The YTAlloc allocator (https://a.yandex-team.ru/arc/trunk/arcadia/library/cpp/ytalloc/impl/ya.make)
- J - The JEMalloc allocator (https://a.yandex-team.ru/arc/trunk/arcadia/library/malloc/jemalloc)
- B - The balloc allocator named Pyotr Popov and Anton Samokhvalov
- Discussion: https://ironpeter.at.yandex-team.ru/replies.xml?item\_no=126
- Code: https://a.yandex-team.ru/arc/trunk/arcadia/library/cpp/balloc
- BM - The balloc for market (agri@ commits from july 2018 till November 2018 saved)
- C - Like B, but can be disabled for each thread to LF or SYSTEM one (B can be disabled only to SYSTEM)
- MIM - Microsoft's mimalloc (actual version) (https://a.yandex-team.ru/arc/trunk/arcadia/library/malloc/mimalloc)
- TCMALLOC - Google TCMalloc (actual version) (https://a.yandex-team.ru/arc/trunk/arcadia/library/malloc/tcmalloc)
- GOOGLE - Google TCMalloc (https://a.yandex-team.ru/arc/trunk/arcadia/library/malloc/galloc)
- LOCKLESS - Allocator based upon lockless queues (https://a.yandex-team.ru/arc/trunk/arcadia/library/malloc/lockless)
- SYSTEM - Use target system allocator
- FAKE - Don't link with any allocator
More about allocators in Arcadia: https://wiki.yandex-team.ru/arcadia/allocators/
###### Macro [ALL\_PYTEST\_SRCS][]([RECURSIVE] [Dirs...])
Puts all .py-files from given Dirs (relative to projects') into TEST\_SRCS of the current module.
If Dirs is omitted project directory is used
`RECURSIVE` makes lookup recursive with respect to Dirs
Note: Only one such macro per module is allowed
Note: Macro is designed to reject any ya.make files in Dirs except current one
@see [TEST\_SRCS()](#macro\_TEST\_SRCS)
###### Macro [ALL\_PY\_SRCS][]([RECURSIVE] { | TOP\_LEVEL | NAMESPACE ns} [Dirs...])
Puts all .py-files from given Dirs (relative to projects') into PY\_SRCS of the current module.
If Dirs is ommitted project directory is used
`RECURSIVE` makes lookup recursive with resprect to Dirs
`TOP\_LEVEL` and `NAMESPACE` are forwarded to `PY\_SRCS`
Note: Only one such macro per module is allowed
Note: Macro is designed to reject any ya.make files in Dirs except current one
@see [PY\_SRCS()](#macro\_PY\_SRCS)
###### Macro [ALL\_RESOURCE\_FILES][](Ext [PREFIX {prefix}] [STRIP {strip}] Dirs...)
This macro collects all files with extension `Ext` and
Passes them to `RESOURCE\_FILES` macro as relative to current directory
`PREFIX` and `STRIP` have the same meaning as in `ROURCES\_FILES`, both are applied over moddir-relative paths
Note: This macro can be used multiple times per ya.make, but only once for each Ext value
Note: Wildcards are not allowed neither as Ext nor in Dirs
###### Macro [ALL\_SRCS][]([GLOBAL] filenames...)
Make all source files listed as GLOBAL or not depending on the keyword GLOBAL
Call to ALL\_SRCS macro is equivalent to call to GLOBAL\_SRCS macro when GLOBAL keyword is specified
as the first argument and is equivalent to call to SRCS macro otherwise.
@example:
LIBRARY()
SET(MAKE_IT_GLOBAL GLOBAL)
ALL_SRCS(${MAKE_IT_GLOBAL} foo.cpp bar.cpp)
END()
@see: [GLOBAL\_SRCS()](#macro\_GLOBAL\_SRCS), [SRCS()](#macro\_SRCS)
###### Macro [ANNOTATION\_PROCESSOR][](processors...)
The macro is in development.
Used to specify annotation processors to build JAVA\_PROGRAM() and JAVA\_LIBRARY().
###### Macro [APPHOST][]()
Emit APPHOST service code for all .proto files in a PROTO\_LIBRARY.
This works only for C++ and Java at the moment.
###### Macro [ARCHIVE][](archive\_name [DONT\_COMPRESS] files...)
Add arbitrary data to a modules. Unlike RESOURCE macro the result should be futher processed by othet macros in the module.
Example: https://wiki.yandex-team.ru/yatool/howtowriteyamakefiles/#a1ispolzujjtekomanduarchive
###### Macro [ARCHIVE\_ASM][](NAME archive\_name files...)
Similar to the macro ARCHIVE, but:
1. works faster and it is better to use for large files.
2. Different syntax (see examples in codesearch or users/pg/tests/archive\_test)
###### Macro [ARCHIVE\_BY\_KEYS][](archive\_name key [DONT\_COMPRESS] files...)
Add arbitrary data to a module be accessible by specified key.
Unlike RESOURCE macro the result should be futher processed by othet macros in the module.
Example: https://wiki.yandex-team.ru/yatool/howtowriteyamakefiles/#a1ispolzujjtekomanduarchive
###### Macro [ASM\_PREINCLUDE][](AsmFiles...)
Supply additional .asm files to all assembler calls within a module
###### Macro [ASSERT][]
Not documented yet.
###### Macro [BASE\_CODEGEN][](tool\_path prefix)
Generator ${prefix}.cpp + ${prefix}.h files based on ${prefix}.in.
###### Macro [BPF][](Input Output Opts...)
Emit eBPF bytecode from .c file.
Note: Output name is used as is, no extension added.
###### Macro [BPF\_STATIC][](Input Output Opts...)
Emit eBPF bytecode from .c file.
Note: Output name is used as is, no extension added.
###### Macro [BUILDWITH\_CYTHON\_C][](Src Options...)
Generates .c file from .pyx.
###### Macro [BUILDWITH\_CYTHON\_CPP][](Src Options...)
Generates .cpp file from .pyx.
###### Macro [BUILDWITH\_RAGEL6][](Src Options...)
Compile .rl file using Ragel6.
###### Macro [BUILD\_CATBOOST][](cbmodel cbname)
Generate catboost model and access code.
cbmodel - CatBoost model file name (\*.cmb).
cbname - name for a variable (of NCatboostCalcer::TCatboostCalcer type) to be available in CPP code.
CatBoost specific macro.
###### Macro [BUILD\_MN][]([CHECK] [PTR] [MULTI] mninfo mnname) _# matrixnet_
Generate MatrixNet data and access code using single command.
Alternative macro BUILD\_MNS() works faster and better for large files.
###### Macro [BUILD\_MNS][]([CHECK] NAME listname mninfos...) _# matrixnet_
Generate MatrixNet data and access code using separate commands for support code, interface and data.
Faster version of BUILD\_MN() macro for large files.
###### Macro [BUILD\_ONLY\_IF][](variables) _# builtin_
Print warning if all variables are false. For example, BUILD\_ONLY\_IF(LINUX WIN32)
###### Macro [BUILD\_YDL\_DESC][](Input Symbol Output)
Generate a descriptor for a Symbol located in a ydl module Input, and put it to the file Output.
@example:
PACKAGE()
BUILD_YDL_DESC(../types.ydl Event Event.ydld)
END()
This will parse file ../types.ydl, generate a descriptor for a symbol Event defined in the said file, and put the descriptor to the Event.ydld.
###### Macro [BUNDLE][](...)
Brings build artefact from module Dir under optional Name to the current module (e.g. UNION)
If NAME is not specified, the name of the Dir's build artefact will be preserved
It makes little sense to specify BUNDLE on non-final targets and so this may stop working without prior notice.
Bundle on multimodule will select final target among multimodule variants and will fail if there are none or more than one.
###### Macro [CFLAGS][]([GLOBAL compiler\_flag]\* compiler\_flags)
Add the specified flags to the compilation command of C and C++ files.
@params: GLOBAL - Propagates these flags to dependent projects
Note: remember about the incompatibility flags for clang and cl (to set flags specifically for cl.exe use MSVC\_FLAGS).
###### Macro [CGO\_CFLAGS][](Flags...)
Compiler flags specific to CGO compilation
###### Macro [CGO\_LDFLAGS][](Files...)
Linker flags specific to CGO linking
###### Macro [CGO\_SRCS][](Files...)
.go sources to be built with CGO
###### Macro [CHECK\_CONTRIB\_CREDITS][]
Not documented yet.
###### Macro [CHECK\_DEPENDENT\_DIRS][](DENY|ALLOW\_ONLY ([ALL|PEERDIRS|GLOB] dir)...)
Specify project transitive dependencies constraints.
@params:
1. DENY: current module can not depend on module from any specified directory neither directly nor transitively.
2. ALLOW\_ONLY: current module can not depend on module from a dir not specified in the directory list neither directly nor transitively.
3. ALL: directory constraints following after this modifier are applied to both transitive PEERDIR dependencies and tool dependencies.
4. PEERDIRS: directory constraints following after this modifier are applied to transitive PEERDIR dependencies only.
5. GLOB: next directory constraint is an ANT glob pattern.
6. EXCEPT: next constraint is an exception for the rest of other rules.
Directory constraints added before either ALL or PEERDIRS modifier is used are treated as ALL directory constraints.
Note: Can be used multiple times on the same module all specified constraints will be checked.
All macro invocation for the same module must use same constraints type (DENY or ALLOW\_ONLY)
###### Macro [CHECK\_JAVA\_DEPS][]()
Check for different classes with duplicate name in classpath.
Documentation: https://wiki.yandex-team.ru/yatool/test/
###### Macro [CLANG\_EMIT\_AST\_CXX][](Input Output Opts...)
Emit Clang AST from .cpp file. CXXFLAGS and LLVM\_OPTS are passed in, while CFLAGS and C\_FLAGS\_PLATFORM are not.
Note: Output name is used as is, no extension added.
###### Macro [CMAKE\_EXPORTED\_TARGET\_NAME][](Name)
Forces to use the name given as cmake target name without changing the name of output artefact.
This macro should be used to resolve target name conflicts in exported cmake project when
changing module name is not applicable. For example both CUDA and non-CUDA py modules for
catboost should have same name lib\_catboost.so and both of them are defined as PY\_ANY\_MODULE(\_catboost).
adding CMAKE\_EXPORTED\_TARGET\_NAME(\_catboost\_non\_cuda) to the non CUDA module ya.make file
changes exported cmake target name but preserve generated artefact file name.
###### Macro [COLLECT\_FRONTEND\_FILES][](Varname, Dir)
Recursively collect files with typical frontend extensions from Dir and save the result into variable Varname
###### Macro [COLLECT\_JINJA\_TEMPLATES][](varname path)
This macro collects all jinja and yaml files in the directory specified by second argument and
stores result in the variable with mane specified by first parameter.
###### Macro [COLLECT\_YDB\_API\_SPECS\_LEGACY][](VarName Paths...) _#deprecated_
This macro is ugly hack for legacy YDB go API codegen, any other uses are prohibited
###### Macro [COMPILE\_C\_AS\_CXX][]()
Compile .c files as .cpp ones within a module.
###### Macro [COMPILE\_LUA][](Src, [NAME ])
Compile LUA source file to object code using LUA 2.0
Optionally override import name which is by default reflects Src name
###### Macro [COMPILE\_LUA\_21][](Src, [NAME ])
Compile LUA source file to object code using LUA 2.1
Optionally override import name which is by default reflects Src name
###### Macro [COMPILE\_NLG][](Src...)
Generate and compile .nlg templates (Jinja2-based) and interface for megamind runtime.
Alice-specific macro
###### Macro [COMPILE\_SWIFT\_MODULE][](SRCS{input}[], BRIDGE\_HEADER{input}="", Flags...)
Not documented yet.
###### Macro [CONFIGURE\_FILE][](from to)
Copy file with the replacement of configuration variables in form of @ANY\_CONF\_VAR@ with their values.
The values are collected during configure stage, while replacement itself happens during build stage.
Used implicitly for .in-files processing.
###### Macro [CONFTEST\_LOAD\_POLICY\_LOCAL][]()
Loads conftest.py files in a way that pytest does it
###### Macro [CONLYFLAGS][]([GLOBAL compiler\_flag]\* compiler\_flags)
Add the specified flags to the compilation command of .c (but not .cpp) files.
@params: GLOBAL - Distributes these flags on dependent projects
###### Macro [COPY][]
Not documented yet.
###### Macro [COPY\_FILE][](File Destination [AUTO] [OUTPUT\_INCLUDES Deps...])
Copy file to build root. It is possible to change both location and the name.
Parameters:
- File - Source file name.
- Destination - Output file name.
- AUTO - Consider copied file for further processing automatically.
- OUTPUT\_INCLUDES output\_includes... - Output file dependencies.
- INDUCED\_DEPS $VARs... - Dependencies for generated files. Unlike `OUTPUT\_INCLUDES` these may target files further in processing chain.
In order to do so VAR should be filled by PREPARE\_INDUCED\_DEPS macro, stating target files (by type)
and set of dependencies
The file will be just copied if AUTO boolean parameter is not specified. You should explicitly
mention it in SRCS under new name (or specify AUTO boolean parameter) for further processing.
###### Macro [COPY\_FILE\_WITH\_CONTEXT][](FILE DEST [AUTO] [OUTPUT\_INCLUDES DEPS...])
Copy file to build root the same way as it is done for COPY\_FILE, but also
propagates the context of the source file.
###### Macro [CPP\_ADDINCL][](Dirs...)
Not documented yet.
###### Macro [CPP\_ENUMS\_SERIALIZATION][]
Not documented yet.
###### Macro [CPP\_PROTO\_PLUGIN][](Name Tool Suf DEPS )
Define protoc plugin for C++ with given Name that emits code into 1 extra output
using Tool. Extra dependencies are passed via DEPS.
###### Macro [CPP\_PROTO\_PLUGIN0][](Name Tool DEPS )
Define protoc plugin for C++ with given Name that emits code into regular outputs
using Tool. Extra dependencies are passed via DEPS.
###### Macro [CPP\_PROTO\_PLUGIN2][](Name Tool Suf1 Suf2 DEPS )
Define protoc plugin for C++ with given Name that emits code into 2 extra outputs
using Tool. Extra dependencies are passed via DEPS.
###### Macro [CREATE\_BUILDINFO\_FOR][](GenHdr)
Creates header file to access some information about build specified via configuration variables.
Unlike CREATE\_SVNVERSION\_FOR() it doesn't take revion information from VCS, it uses revision and SandboxTaskId passed via -D options to ya make
###### Macro [CREATE\_INIT\_PY\_STRUCTURE][]
Not documented yet.
###### Macro [CREDITS\_DISCLAIMER][]
Not documented yet.
###### Macro [CTEMPLATE\_VARNAMES][](File)
Generate File.varnames.h using contrib/libs/ctemplate/make\_tpl\_varnames\_h
Documentation: https://a.yandex-team.ru/arc/trunk/arcadia/contrib/libs/ctemplate/README.md
###### Macro [CUDA\_NVCC\_FLAGS][](compiler flags)
Add the specified flags to the compile line .cu-files.
###### Macro [CUSTOM\_LINK\_STEP\_SCRIPT][](name)
Specifies name of a script for custom link step. The scripts
should be placed in the build/scripts directory and are subject to
review by devtools@.
###### Macro [CXXFLAGS][](compiler\_flags)
Add the specified flags to the compilation command of .cpp (but not .c) files.
###### Macro [DARWIN\_SIGNED\_RESOURCE][](Resource, Relpath)
Not documented yet.
###### Macro [DARWIN\_STRINGS\_RESOURCE][](Resource, Relpath)
Not documented yet.
###### Macro [DATA][]([path...])
Specifies the path to the data necessary test.
Valid values are: arcadia/ , arcadia\_tests\_data/ and sbr://.
In the latter case resource will be brought to the working directory of the test before it is started
Used only inside TEST modules.
Documentation: https://wiki.yandex-team.ru/yatool/test/#dannyeizrepozitorija
###### Macro [DEB\_VERSION][](File)
Creates a header file DebianVersion.h define the DEBIAN\_VERSION taken from the File.
###### Macro [DECIMAL\_MD5\_LOWER\_32\_BITS][]( [FUNCNAME funcName] [inputs...])
Generates .cpp file with one defined function 'const char\* () { return ""; }'.
will be md5 hash for all inputs passed to this macro.
###### Macro [DECLARE\_EXTERNAL\_HOST\_RESOURCES\_BUNDLE][](name sbr:id FOR platform1 sbr:id FOR platform2...) _#builtin_
Associate name with sbr-id on platform.
Ask devtools@yandex-team.ru if you need more information
###### Macro [DECLARE\_EXTERNAL\_HOST\_RESOURCES\_PACK][](RESOURCE\_NAME name sbr:id FOR platform1 sbr:id FOR platform2... RESOURCE\_NAME name1 sbr:id1 FOR platform1...) _#builtin_
Associate name with sbr-id on platform.
Ask devtools@yandex-team.ru if you need more information
###### Macro [DECLARE\_EXTERNAL\_RESOURCE][](name sbr:id name1 sbr:id1...) _#builtin_
Associate name with sbr-id.
Ask devtools@yandex-team.ru if you need more information
###### Macro [DEFAULT][](varname value) _#builtin_
Sets varname to value if value is not set yet
###### Macro [DEPENDENCY\_MANAGEMENT][](path/to/lib1 path/to/lib2 ...)
Lock version of the library from the contrib/java at some point, so that all unversioned PEERDIRs to this library refer to the specified version.
For example, if the module has PEERDIR (contrib/java/junit/junit), and
1. specifies DEPENDENCY\_MANAGEMENT(contrib/java/junit/junit/4.12),
the PEERDIR is automatically replaced by contrib/java/junit/junit/4.12;
2. doesn't specify DEPENDENCY\_MANAGEMENT, PEERDIR automatically replaced
with the default from contrib/java/junit/junit/ya.make.
These defaults are always there and are supported by maven-import, which puts
there the maximum version available in contrib/java.
The property is transitive. That is, if module A PEERDIRs module B, and B has PEERDIR(contrib/java/junit/junit), and this junit was replaced by junit-4.12, then junit-4.12 will come to A through B.
If some module has both DEPENDENCY\_MANAGEMENT(contrib/java/junit/junit/4.12) and PERDIR(contrib/java/junit/junit/4.11), the PEERDIR wins.
Documentation: https://wiki.yandex-team.ru/yatool/java/
###### Macro [DEPENDS][](path1 [path2...]) _# builtin_
Buildable targets that should be brought to the test run. This dependency isonly used when tests run is requested. It will build the specified modules andbring them to the working directory of the test (in their Arcadia paths). Itis reasonable to specify only final targets her (like programs, DLLs orpackages). DEPENDS to UNION is the only exception: UNIONs aretransitively closed at DEPENDS bringing all dependencies to the test.
DEPENDS on multimodule will select and bring single final target. If more noneor more than one final target available in multimodule DEPENDS to it willproduce configuration error.
###### Macro [DIRECT\_DEPS\_ONLY][]
Add direct PEERDIR's only in java compile classpath
###### Macro [DISABLE][](varname) _#builtin_
Sets varname to 'no'
###### Macro [DISABLE\_DATA\_VALIDATION][]()
Not documented yet.
###### Macro [DLL\_FOR][](path/to/lib [libname] [major\_ver [minor\_ver]] [EXPORTS symlist\_file]) _#builtin_
DLL module definition based on specified LIBRARY
###### Macro [DOCS\_BUILDER][](tool) _# deprecated_
Not documented yet.
###### Macro [DOCS\_CONFIG][](path)
Specify path to config file for DOCS multimodule if it differs from default path.
If used for [MKDOCS](#multimodule\_MKDOCS) multimodule the default path is "%%project\_directory%%/mkdocs.yml".
If used for [DOCS](#multimodule\_DOCS) multimodule the default path is "%%project\_directory%%/.yfm".
Path must be either Arcadia root relative.
@see: [DOCS](#multimodule\_DOCS)
###### Macro DOCS\_COPY\_FILE(FROM src\_dir [NAMESPCE dst\_dir] files...)
Copy files from src\_dir to $BINDIR/dst\_dir
###### Macro [DOCS\_DIR][](path)
Specify directory with source .md files for DOCS multimodule if it differs from project directory.
Path must be Arcadia root relative.
@see: [DOCS](#multimodule\_DOCS)
###### Macro [DOCS\_INCLUDE\_SOURCES][](path...)
Specify a list of paths to source code files which will be used as text includes in a documentation project.
Paths must be Arcadia root relative.
@see: [DOCS](#multimodule\_DOCS)
###### Macro [DOCS\_VARS][](variable1=value1 variable2=value2 ...)
Specify a set of default values of template variables for DOCS multimodule.
There must be no spaces around "=". Values will be treated as strings.
@see: [DOCS](#multimodule\_DOCS)
###### Macro [DUMPERF\_CODEGEN][](Prefix)
A special case BASE\_CODEGEN, in which the extsearch/images/robot/tools/dumperf/codegen tool is used
###### Macro [DYNAMIC\_LIBRARY\_FROM][](Paths)
Use specified libraries as sources of DLL
###### Macro IF(condition) .. [ELSE][]IF(other\_condition) .. ELSE() .. ENDIF() _#builtin_
Apply macros if none of previous conditions hold
###### Macro IF(condition) .. [ELSEIF][](other\_condition) .. ELSE() .. ENDIF() _#builtin_
Apply macros if other\_condition holds while none of previous conditions hold
###### Macro [EMBED\_JAVA\_VCS\_INFO][]()
Embed manifest with vcs info into `EXTERNAL\_JAVA\_LIBRARY`
By default this is disabled.
###### Macro [ENABLE][](varname) _#builtin_
Sets varname to 'yes'
###### Macro [ENABLE\_PREVIEW][]()
Enable java preview features.
###### Macro [END][]() _# builtin_
The end of the module
###### Macro IF(condition) .. ELSEIF(other\_condition) .. ELSE() .. [ENDIF][]() _#builtin_
End of conditional construct
###### Macro [ENV][](key[=value])
Sets env variable key to value (gets value from system env by default).
###### Macro [EXCLUDE][]
EXCLUDE(prefixes)
The macro is in development.
Specifies which libraries should be excluded from the classpath.
###### Macro [EXCLUDE\_TAGS][](tags...) _# builtin_
Instantiate from multimodule all variants except ones with tags listed
###### Macro [EXPORTS\_SCRIPT][](exports\_file)
Specify exports script within PROGRAM, DLL and DLL-derived modules.
This accepts 2 kind of files: .exports with pairs and JSON-line .symlist files.
The other option use EXPORTS parameter of the DLL module itself.
@see: [DLL](#module\_DLL)
###### Macro [EXPORT\_ALL\_DYNAMIC\_SYMBOLS][]()
Export all non-hidden symbols as dynamic when linking a PROGRAM.
###### Macro [EXPORT\_YMAPS\_PROTO][]() _# maps-specific_
Maps-specific .proto handling: IMPORT\_YMAPS\_PROTO() + maps protobuf namespace.
###### Macro [EXPOSE][](OutputsToExport...)
Allows to mark outputs of macro command as unused in the current module but intended
to be used in modules consuming current via PEERDIR.
TODO(DEVTOOLS-9000) proper implementation needed
###### Macro [EXTERNAL\_JAR][]
Not documented yet.
###### Macro [EXTERNAL\_RESOURCE][](...) _#builtin, deprecated_
Don't use this. Use RESOURCE\_LIBRARY or FROM\_SANDBOX instead
###### Macro [EXTRADIR][](...) _#builtin, deprecated_
Ignored
###### Macro [EXTRALIBS][](liblist) _# builtin_
Add external dynamic libraries during program linkage stage
###### Macro [EXTRALIBS\_STATIC][](Libs...)
Add the specified external static libraries to the program link
###### Macro [FAT\_RESOURCE][]
Not documented yet.
###### Macro [FBS\_NAMESPACE][](NAMESPACE, PATH...)
Not documented yet.
###### Macro [FILES][]
Not documented yet.
###### Macro [FLATC\_FLAGS][](flags...)
Add flags to flatc command line
###### Macro [FLAT\_JOIN\_SRCS\_GLOBAL][](Out Src...)
Join set of sources into single file named Out and send it for further processing as if it were listed as SRCS(GLOBAL Out).
This macro places all files into single file, so will work with any sources.
You should specify file name with the extension as Out. Further processing will be done according to this extension.
###### Macro [FORK\_SUBTESTS][]()
Splits the test run in chunks on subtests.
The number of chunks can be overridden using the macro SPLIT\_FACTOR.
Allows to run tests in parallel. Supported in UNITTEST, JTEST/JUNIT5 and PY2TEST/PY3TEST modules.
Documentation about the system test: https://wiki.yandex-team.ru/yatool/test/
###### Macro [FORK\_TESTS][]()
Splits a test run on chunks by test classes.
The number of chunks can be overridden using the macro SPLIT\_FACTOR.
Allows to run tests in parallel. Supported in UNITTEST, JTEST/JUNIT5 and PY2TEST/PY3TEST modules.
Documentation about the system test: https://wiki.yandex-team.ru/yatool/test/
###### Macro [FORK\_TEST\_FILES][]()
Only for PY2TEST and PY3TEST: splits a file executable with the tests on chunks in the files listed in TEST\_SRCS
Compatible with FORK\_(SUB)TESTS.
Documentation about the system test: https://wiki.yandex-team.ru/yatool/test/
###### Macro [FROM\_ARCHIVE][](Src [RENAME ] OUT\_[NOAUTO]