aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-srch-releaser <robot-srch-releaser@yandex-team.com>2023-09-12 21:05:25 +0300
committerrobot-srch-releaser <robot-srch-releaser@yandex-team.com>2023-09-12 21:52:59 +0300
commit780cb95adbe3fda525a69fa319bb44e52c5d89ad (patch)
tree1c4400144ff0946658b2e80da75d416a7fe386f2
parentc8d096252888a36a59d8f192945c4a09e9c6cc88 (diff)
downloadydb-780cb95adbe3fda525a69fa319bb44e52c5d89ad.tar.gz
Rollback: rXXXXXX
[diff-resolver:snermolaev] Sandbox task: https://sandbox.yandex-team.ru/task/1925190358/view Task author: robot-srch-releaser@ Commit was made by robot-srch-releaser@, but committer is deshevoy@ Description: Note: mandatory check (NEED_CHECK) was skipped
-rw-r--r--build/conf/license.conf6
-rw-r--r--build/conf/perl.conf106
-rw-r--r--build/conf/project_specific/alice/nlg.conf25
-rw-r--r--build/conf/project_specific/esp.conf136
-rw-r--r--build/conf/project_specific/maps/aar.conf338
-rw-r--r--build/conf/project_specific/maps/asrc.conf121
-rw-r--r--build/conf/project_specific/maps/sproto.conf21
-rw-r--r--build/conf/project_specific/uservices.conf41
-rw-r--r--build/conf/rules.conf74
-rw-r--r--build/ymake.core.conf15
-rwxr-xr-xbuild/ymake_conf.py24
11 files changed, 888 insertions, 19 deletions
diff --git a/build/conf/license.conf b/build/conf/license.conf
index cfd739bda8..eb8b7dbcf1 100644
--- a/build/conf/license.conf
+++ b/build/conf/license.conf
@@ -447,9 +447,3 @@ macro LICENSE_RESTRICTION(TYPE, RESTRICTIONS...) {
SET_APPEND(MODULE_LICENSES_RESTRICTION_TYPES $TYPE)
SET_APPEND(MODULE_LICENSES_RESTRICTIONS $RESTRICTIONS)
}
-
-macro LICENSE_RESTRICTION_EXCEPTIONS(EXCEPT...) {
- SET_APPEND(MODULE_LICENSES_RESTRICTION_EXCEPTIONS $EXCEPT)
-}
-
-MODULE_LICENSES_RESTRICTION_EXCEPTIONS=
diff --git a/build/conf/perl.conf b/build/conf/perl.conf
new file mode 100644
index 0000000000..681f60fc0b
--- /dev/null
+++ b/build/conf/perl.conf
@@ -0,0 +1,106 @@
+# tag:perl-specific
+when ($USE_LOCAL_TOOLS == "yes") {
+ PERL=$LOCAL_PERL
+ PERL_VERSION=$LOCAL_PERL_VERSION
+ PERL_PRIVLIB=$LOCAL_PERL_PRIVLIB
+ PERL_ARCHLIB=$LOCAL_PERL_ARCHLIB
+ when ($LOCAL_PERL_LIBS) {
+ PERL_LIBS=$LOCAL_PERL_LIBS
+ }
+}
+otherwise {
+ PERL=NO-PERL-SELECTED
+ PERL_VERSION=NO-PERL-SELECTED-VERSION
+ PERL_PRIVLIB=NO-PERL-SELECTED-PRIVLIB
+ PERL_ARCHLIB=NO-PERL-SELECTED-ARCHLIB
+}
+
+# tag:perl-specific
+PERL_LD_LIBRARY_PATH=
+PERL_INCLUDE=
+USE_PERL_SYSTEM=yes
+when ($USE_PERL_SYSTEM == "yes") {
+ select ($PERL_SDK) {
+ "ubuntu-12" ? {
+ PERL_VERSION=5.14
+ PERL_ROOT=${SYSTEM_PERL_514_RESOURCE_GLOBAL}/perl${PERL_VERSION}
+ PERL_LIB_ARCH=
+ }
+ "ubuntu-14" ? {
+ PERL_VERSION=5.18
+ PERL_ROOT=${SYSTEM_PERL_518_RESOURCE_GLOBAL}/perl${PERL_VERSION}
+ PERL_LIB_ARCH=
+ }
+ "ubuntu-16" ? {
+ PERL_VERSION=5.22
+ PERL_ROOT=${SYSTEM_PERL_522_RESOURCE_GLOBAL}/perl${PERL_VERSION}
+ PERL_LIB_ARCH=/x86_64-linux-gnu
+ }
+ "ubuntu-18" ? {
+ PERL_VERSION=5.26
+ PERL_ROOT=${SYSTEM_PERL_526_RESOURCE_GLOBAL}/perl${PERL_VERSION}
+ PERL_LIB_ARCH=/x86_64-linux-gnu
+ }
+ "ubuntu-20" ? {
+ PERL_VERSION=5.30
+ PERL_ROOT=${SYSTEM_PERL_530_RESOURCE_GLOBAL}/usr
+ PERL_LIB_ARCH=/x86_64-linux-gnu
+ }
+ }
+
+ PERL=${PERL_ROOT}/bin/perl
+ PERL_ARCHLIB=${PERL_ROOT}/lib$PERL_LIB_ARCH/perl/${PERL_VERSION}
+ PERL_PRIVLIB=${PERL_ROOT}/share/perl/${PERL_VERSION}
+ PERL_LIBS=${PERL_ROOT}/lib${PERL_LIB_ARCH}
+ PERL_LD_LIBRARY_PATH=${env:"LD_LIBRARY_PATH=${PERL_ROOT}/lib"}
+
+ # Perl searches it's modules in INC@ paths. They can not be sysrooted or disabled (at least I haven't found a way),
+ # so default Perl module directories should be prepended to perl command lines when using non-local perl.
+ PERL_INCLUDE=-I${PERL_ARCHLIB} -I${PERL_PRIVLIB}
+}
+
+# tag:perl-specific
+PERL_DEFAULT_PEERDIR=yes
+when ($PERL_DEFAULT_PEERDIR == "yes") {
+ when (($PERLXS == "yes") || ($PERLXSCPP == "yes") || ($USE_PERL == "yes")) {
+ PEERDIR+=build/platform/perl
+ }
+}
+
+# tag:perl-specific
+PERLSUFFIX=-csuffix .cpp
+PERLOUTPUT=${stdout;output:SRC.cpp}
+when ($PERLC == "yes") {
+ PERLSUFFIX=-csuffix .c
+ PERLOUTPUT=${stdout;output:SRC.c}
+}
+XSUBPPFLAGS=
+_XSTYPEMAPS=
+
+macro XSTYPEMAPS(Names...) {
+ SET_APPEND(_XSTYPEMAPS $Names)
+}
+
+# tag:perl-specific
+### @usage: USE_PERL_LIB()
+### Add dependency on Perl to your LIBRARY
+macro USE_PERL_LIB() {
+ PEERDIR(build/platform/perl)
+}
+
+# tag:perl-specific
+### @usage: USE_PERL_514_LIB()
+### Add dependency on Perl 5.14 to your LIBRARY
+macro USE_PERL_514_LIB() {
+ SET(PERL_SDK ubuntu-12)
+ SET(PERL_DEFAULT_PEERDIR no)
+ PEERDIR(build/platform/perl/5.14)
+}
+
+# tag:perl-specific
+### @usage: ADD_PERL_MODULE(Dir ModuleName)
+### Add dependency on specified Perl module to the library
+macro ADD_PERL_MODULE(Dir, Module) {
+ PEERDIR($Dir)
+ SET_APPEND(modules $Module)
+}
diff --git a/build/conf/project_specific/alice/nlg.conf b/build/conf/project_specific/alice/nlg.conf
new file mode 100644
index 0000000000..a04b181c9e
--- /dev/null
+++ b/build/conf/project_specific/alice/nlg.conf
@@ -0,0 +1,25 @@
+# tag:nlg
+### @usage: COMPILE_NLG(NLG_CONFIG nlg_config.json, [TRANSLATIONS_JSON translations.json], Files...)
+###
+### Generate and compile .nlg templates (Jinja2-based).
+###
+### Alice-specific macro.
+macro COMPILE_NLG(NLG_CONFIG="", TRANSLATIONS_JSON="", FILES...) {
+ when ($NLG_CONFIG) {
+ NLG_CONFIG_JSON_OPT=--nlg-config-json
+ }
+ otherwise {
+ NLG_CONFIG_JSON_OPT=
+ }
+
+ when ($TRANSLATIONS_JSON) {
+ TRANSLATIONS_JSON_OPT=--translations-json
+ }
+ otherwise {
+ TRANSLATIONS_JSON_OPT=
+ }
+
+ PEERDIR(alice/nlg/library/nlg_project_runtime)
+ RUN_PROGRAM(alice/nlg/tools/codegen compile-cpp --import-dir ${ARCADIA_ROOT} --out-dir ${ARCADIA_BUILD_ROOT} --include-prefix ${MODDIR} $NLG_CONFIG_JSON_OPT $NLG_CONFIG $TRANSLATIONS_JSON_OPT $TRANSLATIONS_JSON $FILES IN $NLG_CONFIG $TRANSLATIONS_JSON $FILES OUT_NOAUTO register.cpp localizable_phrases.pb.txt ${suf=.pb.txt:FILES} OUT nlg_renderer_factory.cpp nlg_renderer_factory.h translations.cpp translations.h ${suf=.cpp:FILES} ${suf=.h:FILES})
+ SRCS(GLOBAL register.cpp)
+}
diff --git a/build/conf/project_specific/esp.conf b/build/conf/project_specific/esp.conf
new file mode 100644
index 0000000000..ce939d1629
--- /dev/null
+++ b/build/conf/project_specific/esp.conf
@@ -0,0 +1,136 @@
+ESP_KCONFIGS=
+ESP_KCONFIGS_PROJBUILD=
+ESP_LDFRAGMENTS=
+ESP_SDKCONFIG_RENAMES=
+
+macro ESP_KCONFIG(Kconfig) {
+ SET_APPEND(ESP_KCONFIGS \${input;hide:$Kconfig})
+ SET_APPEND(ESP_KCONFIGS_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Kconfig})
+}
+
+macro ESP_KCONFIG_PROJBUILD(Kconfig) {
+ SET_APPEND(ESP_KCONFIGS_PROJBUILD \${input;hide:$Kconfig})
+ SET_APPEND(ESP_KCONFIGS_PROJBUILD_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Kconfig})
+}
+
+macro ESP_LDFRAGMENTS(Fragments...) {
+ SET_APPEND(ESP_LDFRAGMENTS ${pre=\$\{input\;hide\:\";suf=\"\}:Fragments})
+ SET_APPEND(ESP_LDFRAGMENTS_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Fragments})
+}
+
+macro ESP_SDKCONFIG_RENAME(Rename) {
+ SET_APPEND(ESP_SDKCONFIG_RENAMES \${input;hide:$Rename})
+ SET_APPEND(ESP_SDKCONFIG_RENAMES_GLOBAL ${pre=$ARCADIA_ROOT/$MODDIR/:Rename})
+}
+
+ESP_LINK_LIB=$LINK_LIB $ESP_KCONFIGS $ESP_KCONFIGS_PROJBUILD $ESP_LDFRAGMENTS $ESP_SDKCONFIG_RENAMES
+
+ESP_CONFIG=contrib/libs/esp-idf/config
+
+module ESP_LIBRARY: LIBRARY {
+ .CMD=ESP_LINK_LIB
+ .GLOBAL=ESP_KCONFIGS ESP_KCONFIGS_PROJBUILD ESP_LDFRAGMENTS ESP_SDKCONFIG_RENAMES
+
+ ADDINCL(GLOBAL $ESP_CONFIG)
+}
+
+ESP_KCONFIGS_CMD=$WRITER_PY --file ${tmp:"kconfigs.in"} -m ${pre="source \"";suf="\"":ESP_KCONFIGS_GLOBAL}
+
+ESP_KCONFIGS_PROJBUILD_CMD=$WRITER_PY --file ${tmp:"kconfigs_projbuild.in"} -m ${pre="source \"";suf="\"":ESP_KCONFIGS_PROJBUILD_GLOBAL}
+
+ESP_SDKCONFIG_DEFAULTS=contrib/libs/esp-idf/sdkconfig.defaults
+
+macro _ESP_CONFGEN_DEFAULTS_HELPER(Defaults...) {
+ .CMD=${pre=--defaults :Defaults}
+}
+
+macro _ESP_CONFGEN_DEFAULTS_ARGS(Defaults...) {
+ .CMD=$_ESP_CONFGEN_DEFAULTS_HELPER(${input:Defaults})
+}
+
+ESP_CONFGEN_CMD= \
+ ${tool:"contrib/libs/esp-idf/tools/kconfig_new/confgen"} \
+ $_ESP_CONFGEN_DEFAULTS_ARGS($ESP_SDKCONFIG_DEFAULTS) \
+ --kconfig ${input:"contrib/libs/esp-idf/Kconfig"} \
+ --sdkconfig-rename ${input:"contrib/libs/esp-idf/sdkconfig.rename"} \
+ --env IDF_CMAKE=y \
+ --env IDF_TARGET=esp32c3 \
+ --env IDF_ENV_FPGA= \
+ --env IDF_PATH=$ARCADIA_ROOT/contrib/libs/esp-idf \
+ --env COMPONENT_KCONFIGS_SOURCE_FILE=${tmp:"kconfigs.in"} \
+ --env COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE=${tmp:"kconfigs_projbuild.in"} \
+ --env COMPONENT_SDKCONFIG_RENAMES=${join=" ":ESP_SDKCONFIG_RENAMES_GLOBAL} \
+ --output config ${output:"sdkconfig"} \
+ --output header ${output:"sdkconfig.h"}
+
+ESP_LIBRARIES_CMD=$WRITER_PY --file ${tmp:"ldgen_libraries"} -m $PEERS
+
+ESP_LDGEN_CMD= \
+ ${tool:"contrib/libs/esp-idf/tools/ldgen"} \
+ --config ${tmp:"sdkconfig"} \
+ --fragments $ESP_LDFRAGMENTS_GLOBAL \
+ --input ${input:"contrib/libs/esp-idf/components/esp_system/ld/esp32c3/sections.ld.in"} \
+ --output ${output:"sections.ld"} \
+ --kconfig ${input:"contrib/libs/esp-idf/Kconfig"} \
+ --env IDF_CMAKE=y \
+ --env IDF_TARGET=esp32c3 \
+ --env IDF_ENV_FPGA= \
+ --env IDF_PATH=$ARCADIA_ROOT/contrib/libs/esp-idf \
+ --env COMPONENT_KCONFIGS_SOURCE_FILE=${tmp:"kconfigs.in"} \
+ --env COMPONENT_KCONFIGS_PROJBUILD_SOURCE_FILE=${tmp:"kconfigs_projbuild.in"} \
+ --libraries-file ${tmp:"ldgen_libraries"} \
+ --objdump $OBJDUMP_TOOL
+
+ESP_FLASH_SIZE=4MB
+
+macro _ESP_ELF2IMAGE(Elf, Args...) {
+ .CMD=${cwd:BINDIR} ${tool:"contrib/tools/esptool/esptool"} --chip esp32c3 elf2image $Args --flash_mode dio --flash_freq 80m --flash_size $ESP_FLASH_SIZE --min-rev 3 -o ${output;noext:Elf.bin} $Elf
+}
+
+ESP_PARTITION_TABLE_OFFSET=0x8000
+ESP_PARTITION_TABLE=partitions.csv
+
+ESP_GEN_ESP32PART_CMD= \
+ ${tool:"contrib/libs/esp-idf/components/partition_table/gen_esp32part"} \
+ --flash-size $ESP_FLASH_SIZE \
+ --offset $ESP_PARTITION_TABLE_OFFSET \
+ --secure \
+ ${input:ESP_PARTITION_TABLE} \
+ ${output:"partition-table.bin"}
+
+ESP_LINK_EXE= \
+ && $ESP_KCONFIGS_CMD \
+ && $ESP_KCONFIGS_PROJBUILD_CMD \
+ && $ESP_CONFGEN_CMD \
+ && $ESP_LIBRARIES_CMD \
+ && $ESP_LDGEN_CMD \
+ && $ESP_GEN_ESP32PART_CMD \
+ && $LINK_EXE \
+ && $_ESP_ELF2IMAGE($MODULE_PREFIX$REALPRJNAME, "--secure-pad-v2")
+
+### @usage: ESP_PROGRAM([progname])
+###
+### Program module for Espressif microcontrollers.
+### Converts ELF to binary image file suitable for flashing.
+### Currently, only ESP32-C3 is supported.
+module ESP_PROGRAM: PROGRAM {
+ .CMD=ESP_LINK_EXE
+ .GLOBAL=ESP_KCONFIGS ESP_KCONFIGS_PROJBUILD ESP_LDFRAGMENTS ESP_SDKCONFIG_RENAMES
+ ALLOCATOR(FAKE)
+ NO_PLATFORM()
+ LINKER_SCRIPT_VALUE+=-T$ARCADIA_BUILD_ROOT/$MODDIR/sections.ld
+}
+
+ESP_BOOTLOADER_LINK_EXE= \
+ && $LINK_EXE \
+ && $_ESP_ELF2IMAGE($MODULE_PREFIX$REALPRJNAME, "--pad-to-size", "4KB")
+
+module ESP_BOOTLOADER: PROGRAM {
+ .CMD=ESP_BOOTLOADER_LINK_EXE
+ ALLOCATOR(FAKE)
+ NO_PLATFORM()
+}
+
+when ($ESP_BOOTLOADER_BUILD == "yes") {
+ CFLAGS+=-DBOOTLOADER_BUILD -fno-stack-protector
+}
diff --git a/build/conf/project_specific/maps/aar.conf b/build/conf/project_specific/maps/aar.conf
new file mode 100644
index 0000000000..6f03e07c1f
--- /dev/null
+++ b/build/conf/project_specific/maps/aar.conf
@@ -0,0 +1,338 @@
+
+_GRADLE_FLAGS_VALUE=
+### @usage: GRADLE_FLAGS(flags...) # internal
+###
+### SEt additional flags for gradle
+macro GRADLE_FLAGS(FLAGS...) {
+ SET_APPEND(_GRADLE_FLAGS_VALUE $FLAGS)
+}
+
+### @usage: PROGUARD_RULES(ProguardRuleFiles...)
+###
+### This macro is strictly prohibited to use outside of mapsmobi project
+macro PROGUARD_RULES(RULES...) {
+ SET_APPEND(_PROGUARD_RULES_GLOBAL $RULES)
+}
+
+### @usage: AARS(Aars...)
+###
+### This macro is strictly prohibited to use outside of mapsmobi project
+macro AARS(DEPS...) {
+ SET_APPEND(_AARS_GLOBAL $DEPS)
+}
+
+### @usage: MOBILE_DLL() # internal
+module MOBILE_DLL: DLL {
+ .CMD=LINK_MOBILE_DLL
+
+ PEERDIR(build/external_resources/android_sdk)
+ PEERDIR(build/external_resources/gradle)
+ PEERDIR(build/platform/java/jdk)
+ PEERDIR($JDK_RESOURCE_PEERDIR)
+
+ SET(BIN_AAR_DIR $BINDIR/aar)
+ SET(BIN_TMP_DIR $BINDIR/tmp)
+}
+
+_MOBILE_TEST_APK_AAR_MANIFEST_VALUE=
+### @usage: MOBILE_TEST_APK_AAR_MANIFEST(file) # internal
+macro MOBILE_TEST_APK_AAR_MANIFEST(FILE) {
+ SET(_MOBILE_TEST_APK_AAR_MANIFEST_VALUE $FILE)
+}
+
+_MOBILE_TEST_APK_AAR_PROGUARD_RULES_VALUE=
+### @usage: MOBILE_TEST_APK_AAR_PROGUARD_RULES(file) # internal
+macro MOBILE_TEST_APK_AAR_PROGUARD_RULES(FILE) {
+ SET(_MOBILE_TEST_APK_AAR_PROGUARD_RULES_VALUE $FILE)
+}
+
+_MOBILE_TEST_APK_AAR_AARS_VALUE=
+### @usage: MOBILE_TEST_APK_AAR_AARS(filenames...) # internal
+macro MOBILE_TEST_APK_AAR_AARS(AARS...) {
+ SET_APPEND(_MOBILE_TEST_APK_AAR_AARS_VALUE $AARS)
+}
+
+_MOBILE_TEST_APK_AAR_BUNDLES_VALUE=
+### @usage: MOBILE_TEST_APK_AAR_BUNDLES(filenames...) # internal
+macro MOBILE_TEST_APK_AAR_BUNDLES(BUNDLES...) {
+ SET_APPEND(_MOBILE_TEST_APK_AAR_BUNDLES_VALUE $BUNDLES)
+ BUNDLE_EXTRA_INPUTS($BUNDLES)
+}
+
+_MOBILE_TEST_APK_TEMPLATE_DIR=
+### @usage: MOBILE_TEST_APK_TEMPLATE(dir filenames...) # internal
+macro MOBILE_TEST_APK_TEMPLATE(TEMPLATE_DIR, INPUTS...) {
+ SET(_MOBILE_TEST_APK_TEMPLATE_DIR $TEMPLATE_DIR)
+ BUNDLE_EXTRA_INPUTS(${pre=$TEMPLATE_DIR/:INPUTS})
+}
+
+_MOBILE_TEST_APK_CMDLINE=\
+$FS_TOOLS md $BIN_TMP_DIR \
+&& $FS_TOOLS md $BINDIR/.android \
+&& $COPY_CMD $GRADLE_DEBUG_STORE_RESOURCE_GLOBAL/debug.keystore $BINDIR/.android/debug.keystore \
+&& $FS_TOOLS md $BINDIR/jni_libs/$ARCH_NAME \
+&& $YMAKE_PYTHON ${input:"build/scripts/extract_asrc.py"} --output $BIN_TMP_DIR --input ${suf=.asrc:PEERS} \
+&& $MOVE_FILE $OUTPUT $BINDIR/jni_libs/$ARCH_NAME/${pre=lib;suf=.so:_MOBILE_TEST_APK_LIBRARY_NAME} \
+&& $FS_TOOLS md $BIN_AAR_DIR \
+&& $YMAKE_PYTHON ${input:"build/scripts/gen_aar_gradle_script.py"} \
+${input;hide:EXTRA_INPUTS} \
+--aidl-dirs $BIN_TMP_DIR/aidl \
+--assets-dirs $BIN_TMP_DIR/assets \
+--java-dirs $BIN_TMP_DIR/src \
+--jni-libs-dirs $BINDIR/jni_libs \
+--res-dirs $BIN_TMP_DIR/res \
+--manifest ${input:_MOBILE_TEST_APK_AAR_MANIFEST_VALUE} \
+--proguard-rules ${input:_MOBILE_TEST_APK_AAR_PROGUARD_RULES_VALUE} ${input:_PROGUARD_RULES_GLOBAL} \
+--aars $_MOBILE_TEST_APK_AAR_AARS_VALUE $_AARS_GLOBAL \
+--bundles $_MOBILE_TEST_APK_AAR_BUNDLES_VALUE \
+--output-dir $BIN_AAR_DIR \
+--bundle-name unittest \
+--maven-repos ${MAPSMOBI_MAVEN_REPO_RESOURCE_GLOBAL} \
+&& ${cwd:BIN_AAR_DIR} ${GRADLE_RESOURCE_GLOBAL}/bin/gradle $_GRADLE_FLAGS_VALUE --no-daemon --offline -g $BIN_GRADLE_USER_HOME_DIR assemble${_BUNDLE_BUILD_TYPE} ${env:"ANDROID_HOME=$ANDROID_SDK_RESOURCE_GLOBAL/android_sdk"} ${env:"JAVA_HOME=$JDK_RESOURCE"} ${env:"ANDROID_SDK_HOME=$BINDIR"} \
+&& $FS_TOOLS md $BIN_APK_DIR \
+&& $FS_TOOLS md $BIN_APK_DIR/res \
+&& $COPY_CMD $_MOBILE_TEST_APK_TEMPLATE_DIR/Manifest.xml $BIN_APK_DIR/Manifest.xml \
+&& $YMAKE_PYTHON ${input:"build/scripts/gen_test_apk_gradle_script.py"} \
+${input;hide:EXTRA_INPUTS} \
+--app-id $REALPRJNAME \
+--assets-dirs $_MOBILE_TEST_APK_ASSETS_DIRS_VALUE \
+--java-dirs $_MOBILE_TEST_APK_TEMPLATE_DIR/java \
+--jni-libs-dirs \
+--res-dirs $BIN_APK_DIR/res $_MOBILE_TEST_APK_TEMPLATE_DIR/res $BIN_TMP_DIR/res \
+--manifest Manifest.xml \
+--aars \
+--output-dir $BIN_APK_DIR \
+--bundle-name $REALPRJNAME \
+--bundles $BIN_AAR_DIR/build/outputs/aar/unittest-${tolower:_BUNDLE_BUILD_TYPE}.aar $_MOBILE_TEST_APK_AAR_BUNDLES_VALUE \
+--library-name $_MOBILE_TEST_APK_LIBRARY_NAME \
+--maven-repos ${MAPSMOBI_MAVEN_REPO_RESOURCE_GLOBAL} \
+&& ${cwd:BIN_APK_DIR} ${GRADLE_RESOURCE_GLOBAL}/bin/gradle $_GRADLE_FLAGS_VALUE --no-daemon --offline -g $BIN_GRADLE_USER_HOME_DIR assembleDebug ${env:"ANDROID_HOME=$ANDROID_SDK_RESOURCE_GLOBAL/android_sdk"} ${env:"JAVA_HOME=$JDK_RESOURCE"} ${env:"ANDROID_SDK_HOME=$BINDIR"} \
+&& $COPY_CMD $BIN_APK_DIR/build/outputs/apk/${tolower:_BUNDLE_BUILD_TYPE}/$REALPRJNAME.apk ${OUTPUT}
+
+_MOBILE_TEST_APK_EXTRA_INPUTS_VALUE=
+
+macro _MOBILE_TEST_APK_CMD_IMPL(OUTPUT, EXTRA_INPUTS...) {
+ .CMD=$_MOBILE_TEST_APK_CMDLINE
+}
+
+_MOBILE_TEST_APK_CMD=$_MOBILE_TEST_APK_CMD_IMPL($TARGET $_BUNDLE_EXTRA_INPUTS_VALUE)
+
+LINK_MOBILE_TEST_APK=$LINK_DYN_LIB && $_MOBILE_TEST_APK_CMD
+
+### @usage: MOBILE_TEST_APK() # internal
+module MOBILE_TEST_APK: DLL {
+ .CMD=LINK_MOBILE_TEST_APK
+ .GLOBAL=_AARS _PROGUARD_RULES
+
+ PEERDIR(build/external_resources/android_sdk)
+ PEERDIR(build/external_resources/gradle)
+ PEERDIR(build/platform/java/jdk)
+ PEERDIR($JDK_RESOURCE_PEERDIR)
+
+ SET(MODULE_PREFIX)
+ SET(MODULE_SUFFIX .apk)
+
+ SET(BIN_AAR_DIR $BINDIR/aar)
+ SET(BIN_APK_DIR $BINDIR/apk)
+ SET(BIN_TMP_DIR $BINDIR/tmp)
+ SET(BIN_GRADLE_USER_HOME_DIR $BINDIR/gradle)
+
+ SET(_MOBILE_TEST_APK_LIBRARY_NAME unittests)
+
+ when ($OS_ANDROID == "yes") {
+ when ($ARCH_ARM7 == "yes") {
+ ARCH_NAME=armeabi-v7a
+ }
+ elsewhen ($ARCH_ARM64 == "yes") {
+ ARCH_NAME=arm64-v8a
+ }
+ elsewhen ($ARCH_I386 == "yes") {
+ ARCH_NAME=x86
+ }
+ elsewhen ($ARCH_X86_64 == "yes") {
+ ARCH_NAME=x86_64
+ }
+ otherwise {
+ ARCH_NAME=unsupported
+ }
+ }
+}
+
+
+### @usage: MOBILE_BOOST_TEST_APK() # internal
+module MOBILE_BOOST_TEST_APK: MOBILE_TEST_APK {
+ PEERDIR(devtools/dummy_arcadia/test/test_apk/template)
+ PEERDIR(build/external_resources/mapsmobi_maven_repo)
+ ADD_YTEST($MODULE_PREFIX$REALPRJNAME boost.test)
+
+ MOBILE_TEST_APK_TEMPLATE(${ARCADIA_ROOT}/devtools/dummy_arcadia/test/test_apk/template Manifest.xml java/com/yandex/test/unittests/RunTestsActivity.java java/com/yandex/test/unittests/CrashHandler.java res/values/strings.xml)
+}
+
+when ($BT_RELEASE) {
+ _BUNDLE_BUILD_TYPE=Release
+}
+otherwise {
+ _BUNDLE_BUILD_TYPE=Debug
+}
+
+_AAR_EXTRA_INPUTS_VALUE=
+
+_AAR_MANIFEST_VALUE=
+### @usage: AAR_MANIFEST(filename) # internal
+macro AAR_MANIFEST(FILE) {
+ SET(_AAR_MANIFEST_VALUE $FILE)
+}
+
+_AAR_PROGUARD_RULES_VALUE=
+### @usage: AAR_PROGUARD_RULES(filename) # internal
+macro AAR_PROGUARD_RULES(FILE) {
+ SET(_AAR_PROGUARD_RULES_VALUE $FILE)
+}
+
+_AAR_AARS_VALUE=
+### @usage: AAR_AARS(aars...) # internal
+macro AAR_AARS(Aars...) {
+ SET_APPEND(_AAR_AARS_VALUE $Aars)
+}
+
+_AAR_COMPILE_ONLY_AARS_VALUE=
+### @usage: AAR_COMPILE_ONLY_AARS(compile_only_aars...) # internal
+macro AAR_COMPILE_ONLY_AARS(Aars...) {
+ SET_APPEND(_AAR_COMPILE_ONLY_AARS_VALUE $Aars)
+}
+
+
+_AAR_AIDL_DIRS_VALUE=
+### @usage: AAR_AIDL_SRCS(dir filenames...) # internal
+macro AAR_AIDL_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_AAR_AIDL_DIRS_VALUE $PREFIX)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_AAR_ASSETS_DIRS_VALUE=
+### @usage: AAR_ASSETS_SRCS(dir filenames...) # internal
+macro AAR_ASSETS_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_AAR_ASSETS_DIRS_VALUE $PREFIX)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_AAR_BUNDLES_VALUE=
+### @usage: AAR_BUNDLES(filenames...) # internal
+macro AAR_BUNDLES(BUNDLES...) {
+ SET_APPEND(_AAR_BUNDLES_VALUE $BUNDLES)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE $BUNDLES)
+}
+
+_AAR_JNI_LIB_DIRS_VALUE=
+### @usage: AAR_JNI_LIBS(dir filenames...) # internal
+macro AAR_JNI_LIBS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_AAR_JNI_LIB_DIRS_VALUE $PREFIX)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_AAR_JAVA_DIRS_VALUE=
+### @usage: AAR_JAVA_SRCS(dir filenames...) # internal
+macro AAR_JAVA_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_AAR_JAVA_DIRS_VALUE $PREFIX)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_AAR_RES_DIRS_VALUE=
+### @usage: AAR_RES_SRCS(dir filenames...) # internal
+macro AAR_RES_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_AAR_RES_DIRS_VALUE $PREFIX)
+ SET_APPEND(_AAR_EXTRA_INPUTS_VALUE ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_AAR_LOCAL_MAVEN_REPO_VALUE=
+### @usage: AAR_LOCAL_MAVEN_REPO(repo...)
+macro AAR_LOCAL_MAVEN_REPO(REPO...) {
+ SET_APPEND(_AAR_LOCAL_MAVEN_REPO_VALUE $REPO)
+}
+
+_AAR_GRADLE_SCRIPT_GENERATOR_VALUE=
+### @usage: AAR_GRADLE_SCRIPT_GENERATOR(python_script)
+macro AAR_GRADLE_SCRIPT_GENERATOR(GENERATOR) {
+ SET(_AAR_GRADLE_SCRIPT_GENERATOR_VALUE $GENERATOR)
+}
+
+when ($AAR_NO_STRIP) {
+ _AAR_NO_STRIP_VALUE=--do-not-strip
+}
+otherwise {
+ _AAR_NO_STRIP_VALUE=
+}
+
+_AAR_CMDLINE=\
+$FS_TOOLS md $BIN_TMP_DIR \
+&& $FS_TOOLS md $BINDIR/.android \
+&& $COPY_CMD $GRADLE_DEBUG_STORE_RESOURCE_GLOBAL/debug.keystore $BINDIR/.android/debug.keystore \
+&& $YMAKE_PYTHON ${input:"build/scripts/extract_asrc.py"} --output $BIN_TMP_DIR --input ${suf=.asrc:PEERS} \
+&& $YMAKE_PYTHON ${input:_AAR_GRADLE_SCRIPT_GENERATOR_VALUE} \
+${input;hide:EXTRA_INPUTS} \
+--aidl-dirs $_AAR_AIDL_DIRS_VALUE $BIN_TMP_DIR/aidl \
+--assets-dirs $_AAR_ASSETS_DIRS_VALUE $BIN_TMP_DIR/assets \
+--java-dirs $_AAR_JAVA_DIRS_VALUE $BIN_TMP_DIR/src \
+--jni-libs-dirs $_AAR_JNI_LIB_DIRS_VALUE $BIN_TMP_DIR/jni_libs \
+--res-dirs $_AAR_RES_DIRS_VALUE $BIN_TMP_DIR/res \
+--manifest ${input:_AAR_MANIFEST_VALUE} \
+--proguard-rules ${input:_AAR_PROGUARD_RULES_VALUE} ${input:_PROGUARD_RULES_GLOBAL} \
+--aars $_AAR_AARS_VALUE $_AARS_GLOBAL \
+--compile-only-aars $_AAR_COMPILE_ONLY_AARS_VALUE \
+--bundles $_AAR_BUNDLES_VALUE \
+--output-dir $BINDIR \
+--bundle-name $REALPRJNAME \
+--peers $PEERS \
+--maven-repos $_AAR_LOCAL_MAVEN_REPO_VALUE \
+$_AAR_NO_STRIP_VALUE \
+&& ${cwd:BINDIR} ${GRADLE_RESOURCE_GLOBAL}/bin/gradle $_GRADLE_FLAGS_VALUE --no-daemon --offline -g $BIN_GRADLE_USER_HOME_DIR bundle${_BUNDLE_BUILD_TYPE}Aar ${env:"ANDROID_HOME=$ANDROID_SDK_RESOURCE_GLOBAL/android_sdk"} ${env:"JAVA_HOME=$JDK_RESOURCE"} ${env:"ANDROID_SDK_HOME=$BINDIR"} $VCS_INFO_DISABLE_CACHE__NO_UID__ \
+&& ${cwd:BINDIR} $COPY_CMD build/outputs/aar/${REALPRJNAME}-${tolower:_BUNDLE_BUILD_TYPE}.aar $TARGET \
+&& ${cwd:BINDIR} $COPY_CMD build/${suf=-pom.xml:REALPRJNAME} ${output;suf=-pom.xml:REALPRJNAME} \
+&& ${cwd:BINDIR} $COPY_CMD build/libs/${suf=-sources.jar:REALPRJNAME} ${output;suf=-sources.jar:REALPRJNAME}
+
+macro _AAR_CMD_IMPL(EXTRA_INPUTS...) {
+ .CMD=$_AAR_CMDLINE && $GENERATE_MF
+}
+
+AAR_CMD=$_AAR_CMD_IMPL($_AAR_EXTRA_INPUTS_VALUE)
+
+### @usage: AAR() # internal
+module AAR: _BASE_UNIT {
+ .CMD=AAR_CMD
+ .GLOBAL=_AARS _PROGUARD_RULES
+ .PEERDIR_POLICY=as_build_from
+ .FINAL_TARGET=yes
+
+ SET(MODULE_PREFIX)
+ SET(MODULE_SUFFIX .aar)
+ SET(DONT_RESOLVE_INCLUDES yes)
+ SET(NEED_PLATFORM_PEERDIRS no)
+ NO_PLATFORM()
+
+ PEERDIR(build/external_resources/android_sdk)
+ PEERDIR(build/external_resources/gradle)
+ PEERDIR(build/platform/java/jdk)
+ PEERDIR($JDK_RESOURCE_PEERDIR)
+
+ SET(BIN_TMP_DIR $BINDIR/tmp)
+ SET(BIN_GRADLE_USER_HOME_DIR $BINDIR/gradle)
+}
+
+_SECONDARY_OUTPUT_VALUE=
+
+### @usage: SECONDARY_OUTPUT(filename) # internal
+###
+### The use of this macro is strictly prohibited!!!
+macro SECONDARY_OUTPUT(OUTPUT) {
+ SET(_SECONDARY_OUTPUT_VALUE $OUTPUT)
+}
+
+_AAR_PROXY_LIBRARY_CMD=$LINK_LIB && $COPY_CMD $_SECONDARY_OUTPUT_VALUE ${input;hide:_SECONDARY_OUTPUT_VALUE} ${output:REALPRJNAME.aar}
+
+### @usage: AAR_PROXY_LIBRARY() # internal
+###
+### The use of this module is strictly prohibited!!!
+module AAR_PROXY_LIBRARY: _PROXY_LIBRARY {
+ .ALLOWED=SECONDARY_OUTPUT
+ .CMD=_AAR_PROXY_LIBRARY_CMD
+}
diff --git a/build/conf/project_specific/maps/asrc.conf b/build/conf/project_specific/maps/asrc.conf
new file mode 100644
index 0000000000..c910e6abff
--- /dev/null
+++ b/build/conf/project_specific/maps/asrc.conf
@@ -0,0 +1,121 @@
+_BUNDLE_DELIM_JAVA=__DELIM_JAVA__
+_BUNDLE_DELIM_RES=__DELIM_RES__
+_BUNDLE_DELIM_ASSETS=__DELIM_ASSETS__
+_BUNDLE_DELIM_AIDL=__DELIM_AIDL__
+
+_BUNDLE_EXTRA_INPUTS_VALUE=
+### @usage: BUNDLE_EXTRA_INPUTS(filenames...) # internal
+macro BUNDLE_EXTRA_INPUTS(INPUTS...) {
+ SET_APPEND(_BUNDLE_EXTRA_INPUTS_VALUE $INPUTS)
+}
+
+_BUNDLE_AIDL_SRCS_VALUE=
+### @usage: BUNDLE_AIDL_SRCS(dirname filenames...) # internal
+macro BUNDLE_AIDL_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_BUNDLE_AIDL_SRCS_VALUE $_BUNDLE_DELIM_AIDL $PREFIX ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+ BUNDLE_EXTRA_INPUTS(${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_BUNDLE_JAVA_SRCS_VALUE=
+### @usage: BUNDLE_JAVA_SRCS(dirname filenames...) # internal
+macro BUNDLE_JAVA_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_BUNDLE_JAVA_SRCS_VALUE $_BUNDLE_DELIM_JAVA $PREFIX ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+ BUNDLE_EXTRA_INPUTS(${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_BUNDLE_RES_SRCS_VALUE=
+### @usage: BUNDLE_RES_SRCS(dirname filenames...) # internal
+macro BUNDLE_RES_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_BUNDLE_RES_SRCS_VALUE $_BUNDLE_DELIM_RES $PREFIX ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+ BUNDLE_EXTRA_INPUTS(${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_BUNDLE_ASSETS_SRCS_VALUE=
+### @usage: BUNDLE_ASSETS_SRCS(dirname filenames...) # internal
+macro BUNDLE_ASSETS_SRCS(PREFIX, ABSOLUTE[], FILES...) {
+ SET_APPEND(_BUNDLE_ASSETS_SRCS_VALUE $_BUNDLE_DELIM_ASSETS $PREFIX ${pre=$PREFIX/:FILES} ${ABSOLUTE})
+ BUNDLE_EXTRA_INPUTS(${pre=$PREFIX/:FILES} ${ABSOLUTE})
+}
+
+_BUNDLE_SRCS_VALUE=$_BUNDLE_AIDL_SRCS_VALUE $_BUNDLE_ASSETS_SRCS_VALUE $_BUNDLE_JAVA_SRCS_VALUE $_BUNDLE_RES_SRCS_VALUE
+
+macro _COMPILE_ASRC_IMPL(EXTRA_INPUTS...) {
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/link_asrc.py"} --work $BINDIR --input $_BUNDLE_SRCS_VALUE ${input;hide:EXTRA_INPUTS} --output $TARGET ${kv;hide:"p AC"} $kv;hide:"pc light-blue"} ${kv;hide:"show_out"}
+}
+
+_COMPILE_ASRC=$_COMPILE_ASRC_IMPL($_ASRC_EXTRA_INPUTS_VALUE)
+
+COMPILE_ASRC_MF=$_COMPILE_ASRC && $GENERATE_MF
+
+### @usage: ASRC_LIBRARY() # internal
+module ASRC_LIBRARY: _BASE_UNIT {
+ .CMD=COMPILE_ASRC_MF
+ .PEERDIR_POLICY=as_include
+ .FINAL_TARGET=no
+ PEERDIR_TAGS=JAVA_PROTO JAVA_IDL
+ MODULE_TYPE=LIBRARY
+ SET(MODULE_SUFFIX .asrc)
+ SET(DONT_RESOLVE_INCLUDES yes)
+ SET(NEED_PLATFORM_PEERDIRS no)
+
+ NO_RUNTIME()
+}
+
+macro _MOBILE_LIBRARY_PREREQUISITES_IMPL(OUTPUT, EXTRA_INPUTS...) {
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/link_asrc.py"} --work $BINDIR --input $_BUNDLE_SRCS_VALUE --output $OUTPUT ${kv;hide:"p AC"} ${kv;hide:"pc lite-blue"} ${kv;hide:"show_out"}
+}
+
+macro _MOBILE_LIBRARY_PREREQUISITES_CMD(OUTPUT, EXTRA_INPUTS...) {
+ .CMD=${output;hide:OUTPUT} ${input;hide:EXTRA_INPUTS} ${kv;hide:"p AC"} ${kv;hide:"pc lite-blue"} ${kv;hide:"show_out"} $_MOBILE_LIBRARY_PREREQUISITES_IMPL($OUTPUT $EXTRA_INPUTS)
+}
+
+when ($OS_ANDROID == "yes") {
+ LINK_MOBILE_LIB=$LINK_LIB && $_MOBILE_LIBRARY_PREREQUISITES_CMD(${BINDIR}/$MODULE_PREFIX$REALPRJNAME$MODULE_SUFFIX.asrc $_BUNDLE_EXTRA_INPUTS_VALUE)
+}
+otherwise {
+ LINK_MOBILE_LIB=$LINK_LIB
+}
+
+### @usage: MOBILE_LIBRARY() # internal
+module MOBILE_LIBRARY: LIBRARY {
+ .CMD=LINK_MOBILE_LIB
+ DISABLE(NEED_ADD_FAKE_SRC)
+}
+
+_JSRC_PROXY_MOBILE_LIBRARY_CMDLINE=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/link_asrc.py"} --work $BINDIR --jsrcs ${ext=.jsrc;tags_in=local:PEERS} --input $_BUNDLE_SRCS_VALUE ${input;hide:EXTRA_INPUTS} --output ${output;pre=$MODULE_PREFIX;suf=$MODULE_SUFFIX.asrc:REALPRJNAME} ${kv;hide:"p AC"} ${kv;hide:"pc lite-blue"} ${kv;hide:"show_out"}
+
+macro _JSRC_PROXY_MOBILE_LIBRARY_CMD_IMPL(EXTRA_INPUTS...) {
+ .CMD=$_JSRC_PROXY_MOBILE_LIBRARY_CMDLINE
+}
+
+JSRC_PROXY_MOBILE_LIBRARY_CMD=$LINK_LIB && $_JSRC_PROXY_MOBILE_LIBRARY_CMD_IMPL($_BUNDLE_EXTRA_INPUTS_VALUE)
+
+### @usage: JSRC_PROXY_MOBILE_LIBRARY() # internal
+module JSRC_PROXY_MOBILE_LIBRARY: MOBILE_LIBRARY {
+ .CMD=JSRC_PROXY_MOBILE_LIBRARY_CMD
+ .PEERDIR_POLICY=as_build_from
+ .PROXY=yes
+
+ SET(MODULE_TYPE LIBRARY)
+ DISABLE(NEED_ADD_FAKE_SRC)
+
+ PEERDIR_TAGS=JAVA_PROTO JAVA_IDL
+
+ SET(BIN_TMP_DIR ${BINDIR}/tmp)
+
+ NO_UTIL()
+}
+
+_MOBILE_DLL_PREREQUISITES_CMDLINE=${cwd:ARCADIA_BUILD_ROOT} $YMAKE_PYTHON ${input:"build/scripts/link_asrc.py"} --work $BINDIR --asrcs ${PEERS.arcs} --input $_BUNDLE_SRCS_VALUE ${input;hide:EXTRA_INPUTS} --output ${output;pre=$MODULE_PREFIX;suf=$MODULE_SUFFIX.asrc:REALPRJNAME} ${kv;hide:"p AC"} ${kv;hide:"pc lite-blue"} ${kv;hide:"show_out"}
+
+macro _MOBILE_DLL_PREREQUISITES_CMD(EXTRA_INPUTS...) {
+ .CMD=$_MOBILE_DLL_PREREQUISITES_CMDLINE
+}
+
+when ($OS_ANDROID == "yes") {
+ LINK_MOBILE_DLL=$LINK_DYN_LIB && $_MOBILE_DLL_PREREQUISITES_CMD($_BUNDLE_EXTRA_INPUTS_VALUE)
+}
+otherwise {
+ LINK_MOBILE_DLL=$LINK_DYN_LIB
+}
+
diff --git a/build/conf/project_specific/maps/sproto.conf b/build/conf/project_specific/maps/sproto.conf
new file mode 100644
index 0000000000..95234b5f75
--- /dev/null
+++ b/build/conf/project_specific/maps/sproto.conf
@@ -0,0 +1,21 @@
+### @usage: EXPORT_YMAPS_PROTO() # maps-specific
+###
+### Maps-specific .proto handling: IMPORT_YMAPS_PROTO() + maps protobuf namespace.
+macro EXPORT_YMAPS_PROTO() {
+ PROTO_NAMESPACE(maps/doc/proto)
+}
+
+macro _YMAPS_GENERATE_SPROTO_HEADER(File) {
+ .CMD=${cwd;rootdir;input:File} ${tool:"maps/libs/sproto/sprotoc"} -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_PATH --sproto_out=$ARCADIA_BUILD_ROOT/$PROTO_NAMESPACE ${input;rootrel:File} ${output;hide;norel;nopath;noext:File.sproto.h} ${kv;hide:"p PB"} ${kv;hide:"pc yellow"}
+ .PEERDIR=maps/libs/sproto
+}
+
+### @usage: YMAPS_SPROTO(ProtoFiles...) # maps-specific
+###
+### Maps-specific .proto handling: generate .sproto.h files using maps/libs/sproto/sprotoc.
+macro YMAPS_SPROTO(FILES...) {
+ SET(PROTO_HEADER_EXTS .pb.h .sproto.h)
+ foreach (FILE : $FILES) {
+ [.proto]=$_YMAPS_GENERATE_SPROTO_HEADER($FILE)
+ }
+}
diff --git a/build/conf/project_specific/uservices.conf b/build/conf/project_specific/uservices.conf
new file mode 100644
index 0000000000..71c0a6f89e
--- /dev/null
+++ b/build/conf/project_specific/uservices.conf
@@ -0,0 +1,41 @@
+macro _MOVE(Src, OUT="", OUT_NOAUTO="", CPP_DEPS[], OUTPUT_INCLUDES[]) {
+ .CMD=$MOVE_FILE ${input:Src} ${output;norel:OUT} ${output;noauto;norel:OUT_NOAUTO} ${induced_deps=h+cpp;hide:CPP_DEPS} ${output_include;hide:OUTPUT_INCLUDES} ${kv;hide:"p MV"} ${kv;hide:"pc light-cyan"}
+}
+
+macro USRV_BUILD(FROM="Please specify generated .tar-file as FROM", DEPS_FILE="NO_DEPS", OUT_NOAUTO[], Files...) {
+ .CMD=${tool:"taxi/uservices/arc-gen/unpack-tar"} --source ${input:FROM} --target ${BINDIR} --suffix .usrv ${Files} ${OUT_NOAUTO} ${output;noauto;hide;suf=.usrv:OUT_NOAUTO} ${output;noauto;hide;suf=.usrv:Files} ${kv;hide:"p USB"} ${kv;hide:"pc light-cyan"}
+ _PROCESS_USRV_FILES(${DEPS_FILE} ${Files} OUT_NOAUTO ${OUT_NOAUTO})
+}
+
+macro _PROCESS_USRV_FILES(DepsFile, Files...) {
+ SET_APPEND(_MAKEFILE_INCLUDE_LIKE_DEPS ${DepsFile})
+}
+
+macro _USRV_ALL_SRCS_HELPER(SUFFIX, RECURSIVE?"/**/*${SUFFIX}.(c|cc|cpp|h|hpp|hxx|make)":"/*${SUFFIX}.(c|cc|cpp|h|hpp|hxx|make)", DIRS[], EXCLUDE[]) {
+ _GLOB(_ALL_USRV_SOURCES ${suf=${RECURSIVE}:DIRS} EXCLUDE $EXCLUDE)
+ SRCS($_ALL_USRV_SOURCES)
+}
+
+macro SET_LIST_PRE_SUF(OUT, PRE, SUF, IN...) {
+ SET($OUT ${pre=${PRE};suf=${SUF}:IN})
+}
+
+### @usage: USRV_ALL_SRCS([RECURSIVE] [Dirs...] [EXCLUDE <globs...>])
+###
+### SRCS for all C++ sources in current or given directories.
+### C++ files are ones with following extensions: `.c`, `.cc`, `.cpp`, `.h`, `.hpp` and `.hxx`.
+###
+### If dirs are omitted the current one is used.
+###
+### @params:
+### - `Dirs` - start directories for files lookup
+### - `RECURSIVE`- makes lookup recursive with resprect to Dirs
+### - `SUFFIX` - file name should end with the provided suffix
+### - `EXCLUDE` - glob pattern to be excluded from results. In recursive mode use recursive pattern (`**`) to
+### exclude files in subdirectories
+###
+### Note: Only one such macro per module is allowed
+### Note: Macro is designed to reject any ya.make files in Dirs except current one
+macro USRV_ALL_SRCS(RECURSIVE?"RECURSIVE":"", SUFFIX="", EXCLUDE[], Dirs...) {
+ _USRV_ALL_SRCS_HELPER(${SUFFIX} ${RECURSIVE} DIRS ./${Dirs} EXCLUDE ya.make $EXCLUDE)
+}
diff --git a/build/conf/rules.conf b/build/conf/rules.conf
new file mode 100644
index 0000000000..383f47ce7a
--- /dev/null
+++ b/build/conf/rules.conf
@@ -0,0 +1,74 @@
+when ($OPENSOURCE == "yes") {
+ PEERDIRS_RULES_PATH=
+}
+otherwise {
+ PEERDIRS_RULES_PATH=\
+ build/rules/junk.policy \
+ build/rules/go/contrib.policy \
+ build/rules/go/vendor.policy \
+ build/rules/base_layers.policy \
+ build/rules/contrib_deprecated.policy \
+ build/rules/contrib_java.policy \
+ build/rules/contrib_python.policy \
+ build/rules/contrib_restricted.policy \
+ build/rules/contrib_deps.policy \
+ build/rules/library_deps.policy \
+ build/rules/library_deprecated.policy \
+ build/rules/passport.policy \
+ build/rules/yt.policy \
+ build/rules/catboost.policy \
+ build/rules/maps/maps.policy \
+ build/rules/yp.policy \
+ build/rules/alice.policy \
+ build/rules/kikimr.policy \
+ build/rules/market.policy \
+ build/rules/yadi.policy
+}
+
+CHECK_INTERNAL=yes
+INTERNAL_EXCEPTIONS=\
+ contrib \
+ search/begemot/rules/internal \
+ mssngr/router/lib/protos/internal \
+ mssngr/router/lib/registry/method/internal \
+ cv/imageproc/ocr/api/mobile_c/internal \
+ kernel/ugc/security/lib/internal \
+ maps/mobile/libs/mapkit/internal
+
+_BLACKLISTS=
+when ($DISABLE_BLACKLIST == "yes" || $OPENSOURCE == "yes") {
+ _BLACKLISTS=
+}
+elsewhen ($CUSTOM_BLACKLIST != "") {
+ _BLACKLISTS=$CUSTOM_BLACKLIST
+}
+elsewhen ($AUTOCHECK == "yes" || $TEST_BLACKLIST_AUTOCHECK == "yes") {
+ _BLACKLISTS+=build/rules/autocheck.blacklist
+}
+otherwise {
+ _BLACKLISTS+=build/rules/local.blacklist
+}
+
+_ISOLATED_PROJECTS=
+when ($DISABLE_ISOLATED_PROJECTS == "yes" || $OPENSOURCE == "yes") {
+ _ISOLATED_PROJECTS=
+}
+elsewhen ($CUSTOM_ISOLATED_PROJECTS != "") {
+ _ISOLATED_PROJECTS=$CUSTOM_ISOLATED_PROJECTS
+}
+elsewhen ($AUTOCHECK == "yes" || $TEST_ISOLATED_PROJECTS_AUTOCHECK == "yes") {
+## The block below is parsed by CI machinery to limit CI checks
+## Please contact CI on any modification! Do not alter the block structure!
+## - Keep one file per line with first line without file
+## - Keep comments text and layout intact
+## - Do not move or rename this file without CI team aggreement
+## BEGIN AUTOCHECK ISOLATED PROJECTS -- DO NOT EDIT COMMENT AND KEEP THE CODE STRUCTURE!
+ _ISOLATED_PROJECTS=\
+ build/rules/autocheck.isolated_projects \
+ build/rules/taxi_backend_py3/taxi_backend_py3.isolated_projects \
+ build/rules/taxi_uservices/taxi_uservices.isolated_projects
+## END AUTOCHECK ISOLATED PROJECTS -- DO NOT EDIT COMMENT AND KEEP THE CODE STRUCTURE!
+}
+otherwise {
+ _ISOLATED_PROJECTS+=build/rules/local.isolated_projects
+}
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index 04c990de77..e5e8401e6b 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -46,15 +46,18 @@ MODULE_SUFFIX=
@import "${CONF_ROOT}/conf/settings.conf"
@import "${CONF_ROOT}/conf/opensource.conf"
+@import "${CONF_ROOT}/conf/rules.conf"
@import "${CONF_ROOT}/conf/sysincl.conf"
@import "${CONF_ROOT}/conf/license.conf"
@import "${CONF_ROOT}/conf/ts/ts.conf"
@import "${CONF_ROOT}/conf/docs.conf"
@import "${CONF_ROOT}/conf/swig.conf"
+@import "${CONF_ROOT}/conf/perl.conf"
@import "${CONF_ROOT}/conf/proto.conf"
@import "${CONF_ROOT}/conf/fbs.conf"
@import "${CONF_ROOT}/conf/project_specific/other.conf"
+@import "${CONF_ROOT}/conf/project_specific/uservices.conf"
@import "${CONF_ROOT}/conf/project_specific/yt.conf"
USE_GLOBAL_CMD=no
@@ -5133,6 +5136,14 @@ module _PROXY_LIBRARY: LIBRARY {
@import "${CONF_ROOT}/conf/project_specific/yql_udf.conf"
+# tag:alice-specific
+@import "${CONF_ROOT}/conf/project_specific/alice/nlg.conf"
+
+# tag:maps-specific
+@import "${CONF_ROOT}/conf/project_specific/maps/asrc.conf"
+@import "${CONF_ROOT}/conf/project_specific/maps/aar.conf"
+@import "${CONF_ROOT}/conf/project_specific/maps/sproto.conf"
+
_PRIMARY_OUTPUT_VALUE=
# tag:internal
@@ -5810,6 +5821,8 @@ module MCU_PROGRAM: PROGRAM {
.CMD=MCU_LINK_EXE
}
+@import "${CONF_ROOT}/conf/project_specific/esp.conf"
+
# tag:flags tag:internal tag:windows-specific
### @usage: _MSVC_FLAGS_WINDOWS_IMPL(target_platform compiler_flags) # internal
###
@@ -5901,3 +5914,5 @@ macro CLANG_EMIT_AST_CXX_RUN_TOOL(SOURCES[], OPTS[], Tool, IN{input}[], IN_NOPAR
}
@import "${CONF_ROOT}/conf/misc.conf"
+
+@import "${CONF_ROOT}/internal/conf/internal.conf"
diff --git a/build/ymake_conf.py b/build/ymake_conf.py
index 8607b8365f..c4089df22c 100755
--- a/build/ymake_conf.py
+++ b/build/ymake_conf.py
@@ -25,14 +25,6 @@ def init_logger(verbose):
logging.basicConfig(level=logging.DEBUG if verbose else logging.INFO)
-def find_conf(conf_file):
- script_dir = os.path.dirname(__file__)
- full_path = os.path.join(script_dir, conf_file)
- if os.path.exists(full_path):
- return full_path
- return None
-
-
class DebugString(object):
def __init__(self, get_string_func):
self.get_string_func = get_string_func
@@ -786,6 +778,17 @@ class YMake(object):
def print_settings(self):
emit_with_ignore_comment('ARCADIA_ROOT', self.arcadia.root)
+ @staticmethod
+ def _find_conf(conf_file):
+ script_dir = os.path.dirname(__file__)
+ full_path = os.path.join(script_dir, conf_file)
+ if os.path.exists(full_path):
+ return full_path
+ return None
+
+ def _find_core_conf(self):
+ return self._find_conf('ymake.core.conf')
+
class System(object):
def __init__(self, platform):
@@ -2533,11 +2536,6 @@ def main():
build = Build(arcadia, options.build_type, options.toolchain_params, force_ignore_local_files=not options.local_distbuild)
build.print_build()
- _INTERNAL_CONF = 'internal/conf/internal.conf'
- internal_conf_full_path = find_conf(_INTERNAL_CONF)
- if internal_conf_full_path and not is_positive('DISABLE_YMAKE_CONF_CUSTOMIZATION'):
- print('@import "${{CONF_ROOT}}/{}"'.format(_INTERNAL_CONF))
-
emit_with_ignore_comment('CONF_SCRIPT_DEPENDS', __file__)