summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvpozdyayev <[email protected]>2025-06-11 04:36:40 +0300
committervpozdyayev <[email protected]>2025-06-11 04:52:32 +0300
commit68ce4f15db0a22fea23ad99e695f8a98f356ccec (patch)
treed8abe100e1fc3896eda546d12d0fb00fd4549cbc
parent71abbaff6c6f23d60e848fe31ead83f018fe117d (diff)
Enable the new command engine in miscellaneous macros, batch #2, v.2
commit_hash:b48f0169c21a41cdbc428f6cd9240e6b26963b6b
-rw-r--r--build/conf/bison_lex.conf19
-rw-r--r--build/conf/docs.conf1
-rw-r--r--build/conf/fbs.conf10
-rw-r--r--build/conf/go.conf28
-rw-r--r--build/conf/java.conf7
-rw-r--r--build/conf/project_specific/yt.conf1
-rw-r--r--build/conf/proto.conf25
-rw-r--r--build/conf/python.conf8
-rw-r--r--build/conf/swig.conf6
-rw-r--r--build/ymake.core.conf107
10 files changed, 163 insertions, 49 deletions
diff --git a/build/conf/bison_lex.conf b/build/conf/bison_lex.conf
index e2ba58727d6..1767d277f61 100644
--- a/build/conf/bison_lex.conf
+++ b/build/conf/bison_lex.conf
@@ -37,8 +37,8 @@ _FLEX_TOOL_DIR=
_FLEX_HEADER=
when ($_BISON_FLEX_SET_DEFAULTS == "yes") {
- _BISON_HEADER=--defines=${nopath;noext;main;addincl;norel;output;suf=$_BISON_HEADER_SUFFIX:SRC}
- _BISON_PP=$YMAKE_PYTHON3 ${input:"build/scripts/preprocess.py"} $_ADD_HIDDEN_INPUTS($_CPP_BISON_SKELS) ${nopath;noext;tmp;suf=$_BISON_HEADER_SUFFIX:SRC}
+ _BISON_HEADER=--defines=${addincl;main;norel;output;suf=$_BISON_HEADER_SUFFIX;nopath;noext:SRC}
+ _BISON_PP=$YMAKE_PYTHON3 ${input:"build/scripts/preprocess.py"} $_ADD_HIDDEN_INPUTS($_CPP_BISON_SKELS) ${tmp;suf=$_BISON_HEADER_SUFFIX;nopath;noext:SRC}
_FLEX_TOOL=${tool:"contrib/tools/flex-old"}
_FLEX_TOOL_DIR=contrib/tools/flex-old
_FLEX_HEADER=
@@ -93,8 +93,8 @@ macro FLEX_GEN_CPP() {
### Use SUFF (including extension) to name Bison defines header file. The default is just `.h`.
macro BISON_HEADER(Suffix) {
SET(_BISON_HEADER_SUFFIX $Suffix)
- SET(_BISON_HEADER --defines=\${nopath;noext;main;addincl;norel;output;suf=$_BISON_HEADER_SUFFIX:SRC})
- SET(_BISON_PP $YMAKE_PYTHON3 \${input:"build/scripts/preprocess.py"} $_ADD_HIDDEN_INPUTS($_CPP_BISON_SKELS) \${nopath;noext;tmp;suf=$_BISON_HEADER_SUFFIX:SRC})
+ SET(_BISON_HEADER --defines=\${main;addincl;norel;output;suf=$_BISON_HEADER_SUFFIX;nopath;noext:SRC})
+ SET(_BISON_PP $YMAKE_PYTHON3 \${input:"build/scripts/preprocess.py"} $_ADD_HIDDEN_INPUTS($_CPP_BISON_SKELS) \${tmp;suf=$_BISON_HEADER_SUFFIX;nopath;noext:SRC})
}
@@ -123,7 +123,7 @@ macro USE_MODERN_FLEX() {
macro USE_MODERN_FLEX_WITH_HEADER(Suffix) {
SET(_FLEX_TOOL \${tool:"contrib/tools/flex"} --m4=\${tool:"contrib/tools/m4"})
SET(_FLEX_TOOL_DIR contrib/tools/flex)
- SET(_FLEX_HEADER --header-file=\${nopath;noext;main;addincl;norel;output;suf=$Suffix:SRC})
+ SET(_FLEX_HEADER --header-file=\${main;addincl;norel;output;suf=$Suffix;nopath;noext:SRC})
}
### @usage: USE_OLD_FLEX()
@@ -134,20 +134,25 @@ macro USE_OLD_FLEX() {
SET(_FLEX_TOOL_DIR contrib/tools/flex-old)
}
+_SRC_y_env=M4=${tool:M4_PATH} BISON_PKGDATADIR=${ARCADIA_ROOT}/${_BISON_DATA_DIR}
macro _SRC("y", SRC, SRCFLAGS...) {
.PEERDIR=build/induced/by_bison
- .CMD=${tool:"contrib/tools/bison"} $BISON_FLAGS ${env:"M4=${tool:M4_PATH}"} ${env:"BISON_PKGDATADIR=${ARCADIA_ROOT}/${_BISON_DATA_DIR}"} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${nopath;output;suf=$_BISON_GEN_EXT:SRC} ${input:SRC} ${SRCFLAGS} ${hide;kv:"p YC"} ${hide;kv:"pc light-green"} && $_BISON_PP
+ .CMD=${tool:"contrib/tools/bison"} $BISON_FLAGS ${env:_SRC_y_env} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${output;suf=$_BISON_GEN_EXT;nopath:SRC} ${input:SRC} ${SRCFLAGS} ${hide;kv:"p YC"} ${hide;kv:"pc light-green"} && $_BISON_PP
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro target_bison_parser && target_macroses-args PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o;nopath;noext:SRC} ${hide;nopath;noext;output;suf=.h:SRC} ${hide;nopath;noext;addincl;output;suf=.h:SRC} && platform_vars-BISON_FLAGS ${quo:BISON_FLAGS} && conan-tool_requires m4/1.4.19 && conan-imports 'bin, m4* -> ./bin/m4/bin' && conan-tool_requires bison/3.8.2 && conan-imports 'bin, bison* -> ./bin/bison/bin' && conan-imports 'res, * -> ./bin/bison/res'
}
macro _SRC("ypp", SRC, SRCFLAGS...) {
.PEERDIR=build/induced/by_bison
- .CMD=$_SRC(y $SRC $SRCFLAGS)
+ # TODO overloading support and redirection to `$_SRC(y $SRC $SRCFLAGS)`
+ .CMD=${tool:"contrib/tools/bison"} $BISON_FLAGS ${env:_SRC_y_env} $_BISON_HEADER ${hide:_BISON_GEN_EXT} -o ${output;suf=$_BISON_GEN_EXT;nopath:SRC} ${input:SRC} ${SRCFLAGS} ${hide;kv:"p YC"} ${hide;kv:"pc light-green"} && $_BISON_PP
+ .STRUCT_CMD=yes
.SEM=$_SRC(y $SRC $SRCFLAGS)
}
macro _SRC("l", SRC, SRCFLAGS...) {
.CMD=$_FLEX_TOOL $LEX_FLAGS ${SRCFLAGS} $_FLEX_HEADER ${hide:_FLEX_GEN_EXT} -o${output;suf=$_FLEX_GEN_EXT:SRC} ${hide;output_include:"util/system/compiler.h"} ${input:SRC} ${hide;kv:"p LX"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.ADDINCL=$_FLEX_TOOL_DIR
.SEM=target_macroses-ITEM && target_macroses-macro target_flex_lexers && target_macroses-args ${hide;tool:_FLEX_TOOL} ${hide;output;suf=${OBJ_SUF}.o:SRC} ${input:SRC} && platform_vars-LEX_FLAGS ${quo:LEX_FLAGS}
}
diff --git a/build/conf/docs.conf b/build/conf/docs.conf
index 29d1eb8a854..c1fdcbd10e9 100644
--- a/build/conf/docs.conf
+++ b/build/conf/docs.conf
@@ -12,6 +12,7 @@ TOUCH_DOCS_MF=$TOUCH_DOCS && $GENERATE_MF
### Copy files from src_dir to $BINDIR/dst_dir
macro DOCS_COPY_FILES(FROM="${CURDIR}", NAMESPACE=".", FILES...) {
.CMD=$YMAKE_PYTHON3 ${input:"build/scripts/copy_docs_files.py"} ${hide;input:"build/scripts/process_command_files.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --src-dir $FROM --dst-dir $BINDIR/$NAMESPACE $FILES ${hide;context=TEXT;input=TEXT;pre=${FROM}/:FILES} ${hide;output;pre=${NAMESPACE}/:FILES}
+ .STRUCT_CMD=yes
}
# tag:docs
diff --git a/build/conf/fbs.conf b/build/conf/fbs.conf
index 667f3d2537c..ce131b64aa1 100644
--- a/build/conf/fbs.conf
+++ b/build/conf/fbs.conf
@@ -22,11 +22,13 @@ _PY_FBS_DEPS=contrib/python/flatbuffers
### processed when --add-flatbuf-result flag is specified on the command line
### for 'ya make ...' (tar archive is extracted to output directory).
macro FBS_TO_PYSRC(OUT_NAME, IN_FBS_FILES...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --python --no-warnings --python-typing --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${noauto;output;tared;suf=.py3.fbs.pysrc:OUT_NAME} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --python --no-warnings --python-typing --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${tared;noauto;output;suf=.py3.fbs.pysrc:OUT_NAME} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .STRUCT_CMD=yes
}
macro FBS_TO_PY2SRC(OUT_NAME, IN_FBS_FILES...) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:"contrib/deprecated/flatc"} --python --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${noauto;output;tared;suf=.py2.fbs.pysrc:OUT_NAME} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:"contrib/deprecated/flatc"} --python --gen-mutable ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR} ${input:IN_FBS_FILES} && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --exts .py --input $BINDIR --output ${tared;noauto;output;suf=.py2.fbs.pysrc:OUT_NAME} ${hide;kv:"p FP"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .STRUCT_CMD=yes
}
# tag:fbs tag:go-specific
@@ -57,7 +59,8 @@ macro _CPP_FLATC64_CMD(SRC, SRCFLAGS...) {
### --add-protobuf-result flag is specified on the command line for 'ya make ...'
### (tar archive is extracted to output directory).
macro _GO_FLATC_CMD(SRC, PACKAGE_NAME) {
- .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --go --gen-mutable --go-namespace ${PACKAGE_NAME} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR}/_generated ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/postprocess_go_fbs.py"} --arcadia-prefix ${GO_ARCADIA_PROJECT_PREFIX} --input-dir ${BINDIR} --map $_FBS_NAMESPACE_MAP_GLOBAL && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --flat --input ${BINDIR}/_generated --output ${output;noext;tared;suf=.fbs.gosrc:SRC} --exts .go ${hide;kv:"p FG"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:FLATC} --go --gen-mutable --go-namespace ${PACKAGE_NAME} ${FLATC_FLAGS_VALUE} ${pre=-I :_FLATC__INCLUDE} -o ${BINDIR}/_generated ${input:SRC} && $YMAKE_PYTHON3 ${input:"build/scripts/postprocess_go_fbs.py"} --arcadia-prefix ${GO_ARCADIA_PROJECT_PREFIX} --input-dir ${BINDIR} --map $_FBS_NAMESPACE_MAP_GLOBAL && $YMAKE_PYTHON3 ${input:"build/scripts/tar_sources.py"} --flat --input ${BINDIR}/_generated --output ${tared;output;suf=.fbs.gosrc;noext:SRC} --exts .go ${hide;kv:"p FG"} ${hide;kv:"pc light-green"} ${hide;kv:"tared_kind nodir"} ${hide:FBS_FAKEID}
+ .STRUCT_CMD=yes
.PEERDIR=${_GO_FLATC_IMPORTS}
}
@@ -151,6 +154,7 @@ macro FBS_CMD(SRC, SRCFLAGS...) {
### Produce flatbuf schema out of protobuf description.
macro PROTO2FBS(File) {
.CMD=${cwd:BINDIR} ${tool:FLATC} -I . -I ${ARCADIA_ROOT} --proto ${input:File} ${hide;norel;output;suf=.fbs;noext:File} ${hide;kv:"p FBS"} ${hide;kv:"pc yellow"} && $MOVE_FILE ${BINDIR}/${suf=.fbs;nopath;noext:File} ${norel;output;suf=.fbs;noext:File}
+ .STRUCT_CMD=yes
}
_CPP_FLATC_CMDLINE=$_CPP_FLATC_CMD($SRC $SRCFLAGS)
diff --git a/build/conf/go.conf b/build/conf/go.conf
index 317e5bbbc05..0ec6cc201f2 100644
--- a/build/conf/go.conf
+++ b/build/conf/go.conf
@@ -211,17 +211,20 @@ macro _GO_GEN_COVER_GO(GO_FILE, GO_COVER_OUTPUT, VAR_ID) {
# tag:go-specific
macro _GO_COMPILE_SYMABIS(FLAGS[], ASM_FILES...) {
.CMD=${hide:_CGO_FAKEID} $GO_TOOLS_ROOT/pkg/tool/$_GO_TC_PATH/asm $_GO_COMPILE_SYMABIS_TRIMPATH__NO_UID__ ${pre=-I :_C__INCLUDE} -I $GO_TOOLS_ROOT/pkg/include -D GOOS_${GO_TARG_OS} -D GOARCH_${GO_TARG_ARCH} $FLAGS $GO_ASM_FLAGS_VALUE -gensymabis -o ${output:"gen.symabis"} ${input:ASM_FILES} ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
.ADDINCL=build/scripts/go_fake_include
}
# tag:go-specific
macro _GO_COMPILE_CGO1(NAME, FLAGS[], FILES...) {
.CMD=${hide:_CGO_FAKEID} ${cwd:ARCADIA_ROOT} $YMAKE_PYTHON3 ${input:"build/scripts/cgo1_wrapper.py"} $_GO_CGO1_WRAPPER_FLAGS --build-root ${ARCADIA_BUILD_ROOT} --source-root ${ARCADIA_ROOT} --cgo1-files ${output;suf=.cgo1.go;noext:FILES} --cgo2-files ${noauto;output;suf=.cgo2.c;noext:FILES} -- ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -objdir $BINDIR -importpath $NAME $GO_CGO1_FLAGS_VALUE $FLAGS -- $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} ${CGO_CFLAGS_VALUE} ${input:FILES} ${hide;output:"_cgo_export.h"} ${hide;output:"_cgo_export.c"} ${hide;output:"_cgo_gotypes.go"} ${hide;noauto;output:"_cgo_main.c"} $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
}
# tag:go-specific
macro _GO_COMPILE_CGO2(NAME, C_FILES[], S_FILES[], OBJ_FILES[], FILES...) {
.CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${tobindir;input:"_cgo_main.c"} -c -o ${noauto;tmp;suf=${OBJECT_SUF}:"_cgo_main.c"} && $YMAKE_PYTHON3 ${input:"build/scripts/link_o.py"} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${noauto;tmp;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${noauto;tmp;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;suf=.cgo2.c${OBJECT_SUF};nopath;noext:FILES} ${input;suf=${OBJECT_SUF}:C_FILES} ${input;suf=.o:S_FILES} ${input:OBJ_FILES} $CGO_LDFLAGS_VALUE && ${GO_TOOLS_ROOT}/pkg/tool/$_GO_TC_PATH/cgo -dynpackage $NAME -dynimport ${noauto;tmp;suf=${OBJECT_SUF}:"_cgo_"} -dynout ${output:"_cgo_import.go"} -dynlinker $GO_CGO2_FLAGS_VALUE $GO_TOOLCHAIN_ENV ${hide;kv:"p go"} ${hide;kv:"pc light-blue"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
_USE_LINKER()
}
@@ -547,7 +550,7 @@ _GO_PROTO_GRPC_GATEWAY_OUTS=
# tag:go-specific
macro _GO_GRPC_GATEWAY_SRCS_IMPL(Files...) {
foreach (File : $Files) {
- [.proto]=$_GO_PROTO_CMD_IMPL($File $_GO_PROTO_GRPC_GATEWAY_OPTS $_GO_PROTO_GRPC_GATEWAY_OUTS)
+ _GO_GRPC_GATEWAY_SRCS_IMPL_DISPATCH(${lastext:File} $File)
}
PEERDIR(${GOSTD}/context ${GOSTD}/io ${GOSTD}/net/http)
@@ -556,6 +559,12 @@ macro _GO_GRPC_GATEWAY_SRCS_IMPL(Files...) {
PEERDIR(vendor/github.com/grpc-ecosystem/grpc-gateway/utilities)
PEERDIR(vendor/google.golang.org/grpc/metadata)
}
+macro _GO_GRPC_GATEWAY_SRCS_IMPL_DISPATCH(Ext, File) {
+}
+macro _GO_GRPC_GATEWAY_SRCS_IMPL_DISPATCH("proto", File) {
+ .CMD=$_GO_PROTO_CMD_IMPL($File $_GO_PROTO_GRPC_GATEWAY_OPTS $_GO_PROTO_GRPC_GATEWAY_OUTS)
+ .STRUCT_CMD=yes
+}
# tag:go-specific
macro _SETUP_GO_GRPC_GATEWAY() {
@@ -612,7 +621,7 @@ _GO_PROTO_GRPC_GATEWAY_V2_OUTS=
# tag:go-specific
macro _GO_GRPC_GATEWAY_V2_SRCS_IMPL(Files...) {
foreach (File : $Files) {
- [.proto]=$_GO_PROTO_CMD_IMPL($File $_GO_PROTO_GRPC_GATEWAY_V2_OPTS $_GO_PROTO_GRPC_GATEWAY_V2_OUTS)
+ _GO_GRPC_GATEWAY_V2_SRCS_IMPL_DISPATCH(${lastext:File} $File)
}
PEERDIR(${GOSTD}/context ${GOSTD}/errors ${GOSTD}/io ${GOSTD}/net/http)
@@ -622,6 +631,12 @@ macro _GO_GRPC_GATEWAY_V2_SRCS_IMPL(Files...) {
PEERDIR(vendor/google.golang.org/grpc/metadata)
PEERDIR(vendor/google.golang.org/protobuf/proto)
}
+macro _GO_GRPC_GATEWAY_V2_SRCS_IMPL_DISPATCH(Ext, File) {
+}
+macro _GO_GRPC_GATEWAY_V2_SRCS_IMPL_DISPATCH("proto", File) {
+ .CMD=$_GO_PROTO_CMD_IMPL($File $_GO_PROTO_GRPC_GATEWAY_V2_OPTS $_GO_PROTO_GRPC_GATEWAY_V2_OUTS)
+ .STRUCT_CMD=yes
+}
# tag:go-specific
macro _SETUP_GO_GRPC_GATEWAY_V2() {
@@ -1031,7 +1046,9 @@ module GO_TEST: GO_PROGRAM {
}
# tag:go-specific
-_GO_TOOL_ENV=${env:"PATH=${GO_TOOLS_ROOT}/bin"} ${env:"GOROOT=${GO_TOOLS_ROOT}"} ${env:"GOCACHE=${BINDIR}/.gocache"}
+_GO_TOOL_ENV_PATH=PATH=${GO_TOOLS_ROOT}/bin
+_GO_TOOL_ENV_ROOT=GOROOT=${GO_TOOLS_ROOT}
+_GO_TOOL_ENV=${env:_GO_TOOL_ENV_PATH} ${env:_GO_TOOL_ENV_ROOT} ${env:"GOCACHE=${BINDIR}/.gocache"}
# tag:go-specific
_GO_GO_MOD=${ARCADIA_ROOT}/go.mod
@@ -1104,6 +1121,7 @@ macro _GO_MOCKGEN_MOCKS_IMPL(GEN_TOOL) {
PEERDIR(vendor/go.uber.org/mock/gomock)
.CMD=${cwd:BINDIR} ${tool:GEN_TOOL} -output gob.data && ${cwd:BINDIR} ${tool:_GO_TOOL_MOCKGEN} -package ${MOCKGEN_PACKAGE} -model_gob gob.data ${stdout;output:"main.go"} $_GO_TOOL_ENV ${hide;kv:"p GM"} ${hide;kv:"pc blue"}
+ .STRUCT_CMD=yes
}
# tag:go-specific
@@ -1123,7 +1141,7 @@ _GO_MOCKGEN_SOURCE_CMDLINE=\
$COPY_CMD ${context=TEXT;input=TEXT:SOURCE} ${BINDIR}/.arcadia/$SOURCE && \
${cwd;suf=/.arcadia:BINDIR} ${tool:_GO_TOOL_MOCKGEN} -package ${MOCKGEN_PACKAGE} -source ${rootrel;context=TEXT;input=TEXT:SOURCE} ${ARGS} \
$_GO_TOOL_ENV ${stdout;output;suf=.source.gen.go;noext:FILENAME} \
- ${hide;context=TEXT;input=TEXT;suf=/.arcadia/go.mod:BINDIR} ${hide;context=TEXT;input=TEXT;suf=/.arcadia/vendor/modules.txt:BINDIR} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} \
+ ${hide;context=TEXT;input=TEXT:IN_NOPARSE} \
${hide;kv:"p GS"} ${hide;kv:"pc blue"}
# tag:go-specific
@@ -1132,6 +1150,7 @@ macro _GO_MOCKGEN_SOURCE_IMPL(SOURCE, FILENAME, ARGS[], IN_NOPARSE[]) {
PEERDIR(${GOSTD}/context)
PEERDIR(vendor/go.uber.org/mock/gomock)
.CMD=$_GO_MOCKGEN_SOURCE_CMDLINE
+ .STRUCT_CMD=yes
}
# tag:go-specific
@@ -1146,6 +1165,7 @@ macro GO_MOCKGEN_SOURCE(FILE, ARGS[], IN_NOPARSE[]) {
macro _GO_OAPI_CODEGEN_IMPL(TOOL, IN, FILENAME, GENERATE="", PACKAGE="", TEMPLATES="", CONFIG="", IN_NOPARSE[], Args...) {
.CMD=${cwd:ARCADIA_BUILD_ROOT} ${tool:TOOL} ${pre=--generate :GENERATE} ${pre=--package :PACKAGE} ${pre=--templates :TEMPLATES} ${pre=--config :CONFIG} $Args ${context=TEXT;input=TEXT:IN} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} ${stdout;output:FILENAME} ${_GO_TOOL_ENV} ${hide;kv:"p GC"} ${hide;kv:"pc blue"}
+ .STRUCT_CMD=yes
}
# tag:go-specific
diff --git a/build/conf/java.conf b/build/conf/java.conf
index fedb570820f..c0d96f8cc32 100644
--- a/build/conf/java.conf
+++ b/build/conf/java.conf
@@ -508,13 +508,14 @@ macro _DO_2_RUN_JAR_PROGRAM(IN_DIRS_VAR="uniq_", IN_DIRS_INPUTS[], IN{input}[],
_LATE_GLOB(${IN_DIRS_VAR} ${suf=/**/*:IN_DIR})
_CHECK_RUN_JAVA_PROG_CLASSPATH($CLASSPATH)
.PEERDIR=build/platform/java/jdk $JDK_RESOURCE_PEERDIR
- .CMD=${hide;kv:"p RJ"} ${hide;kv:"pc blue"} ${hide:JAVA_FAKEID} ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/mkdir.py"} ${OUT_DIR} && ${cwd:CWD} $YMAKE_PYTHON ${input:"build/scripts/setup_java_tmpdir.py"} $YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} ${pre=--file=:STDOUT} ${hide;output:STDOUT} ${pre=--file=:STDOUT_NOAUTO} ${hide;noauto;output:STDOUT_NOAUTO} $YMAKE_PYTHON ${input:"build/scripts/fix_java_command_file_cp.py"} --build-root ${ARCADIA_BUILD_ROOT} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} ${Args} && $_GENTAR_HELPER(HASH_SUF $HASH_SUF OUT_DIR $OUT_DIR) ${hide;input:IN} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} ${hide;noauto;output:OUT_NOAUTO} ${hide;output:OUT} ${hide;tool:TOOL} ${IN_DIRS_INPUTS}
- .SEM=runs-ITEM && runs-args ${Args} && runs-classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} && runs-cwd ${CWD} ${hide;cwd:CWD} && runs-in ${IN} ${hide;input:IN} && runs-in_dir ${IN_DIR} && runs-in_dirs_inputs ${IN_DIRS_INPUTS} && runs-in_noparse ${IN_NOPARSE} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} && runs-out ${OUT} ${hide;output:OUT} ${OUT_NOAUTO} ${hide;noauto;output:OUT_NOAUTO} $_GENTAR_HELPER(HASH_SUF $HASH_SUF OUT_DIR $OUT_DIR) && runs-out_dir ${OUT_DIR} && runs-tool ${tool:TOOL}
+ .CMD=${hide;kv:"p RJ"} ${hide;kv:"pc blue"} ${hide:JAVA_FAKEID} ${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/mkdir.py"} ${OUT_DIR} && ${cwd:CWD} $YMAKE_PYTHON ${input:"build/scripts/setup_java_tmpdir.py"} $YMAKE_PYTHON ${input:"build/scripts/stdout2stderr.py"} ${pre=--file=:STDOUT} ${hide;output:STDOUT} ${pre=--file=:STDOUT_NOAUTO} ${hide;noauto;output:STDOUT_NOAUTO} $YMAKE_PYTHON ${input:"build/scripts/fix_java_command_file_cp.py"} --build-root ${ARCADIA_BUILD_ROOT} $JDK_RESOURCE/bin/java -Dfile.encoding=utf8 -classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} ${Args} && $_GENTAR_HELPER(HASH_SUF $HASH_SUF OUT_DIR $OUT_DIR) ${hide;input:IN} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} ${hide;noauto;output:OUT_NOAUTO} ${hide;output:OUT} ${hide;tool:TOOL} ${hide;input:IN_DIRS_INPUTS}
+ .STRUCT_CMD=yes
+ .SEM=runs-ITEM && runs-args ${Args} && runs-classpath ${RUN_JAR_PROG_CP_PRE}${tool:CLASSPATH}${RUN_JAR_PROG_CP_SUF} && runs-cwd ${CWD} ${hide;cwd:CWD} && runs-in ${IN} ${hide;input:IN} && runs-in_dir ${IN_DIR} && runs-in_noparse ${IN_NOPARSE} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} && runs-out ${OUT} ${hide;output:OUT} ${OUT_NOAUTO} ${hide;noauto;output:OUT_NOAUTO} $_GENTAR_HELPER(HASH_SUF $HASH_SUF OUT_DIR $OUT_DIR) && runs-out_dir ${OUT_DIR} && runs-tool ${tool:TOOL}
}
# tag:java-specific
macro _DO_1_RUN_JAR_PROGRAM(IN_DIRS_VAR="uniq", Args...) {
- _DO_2_RUN_JAR_PROGRAM($Args IN_DIRS_VAR $IN_DIRS_VAR IN_DIRS_INPUTS ${"$"}{hide;input:$IN_DIRS_VAR} HASH_SUF .${hash:Args}.gentar)
+ _DO_2_RUN_JAR_PROGRAM($Args IN_DIRS_VAR $IN_DIRS_VAR IN_DIRS_INPUTS ${$IN_DIRS_VAR} HASH_SUF .${hash:Args}.gentar)
}
# tag:java-specific
diff --git a/build/conf/project_specific/yt.conf b/build/conf/project_specific/yt.conf
index c7eaa36050f..9b8c4a123b8 100644
--- a/build/conf/project_specific/yt.conf
+++ b/build/conf/project_specific/yt.conf
@@ -1,5 +1,6 @@
macro GENERATE_YT_RECORD(Yaml, OUTPUT_INCLUDES[]) {
.CMD=${tool:"yt/yt/tools/record_codegen"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${norel;output;suf=.record.cpp;noext:Yaml} ${hide;norel;output;suf=.record.h;noext:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${hide;output_include:OUTPUT_INCLUDES} ${hide;output_include:"yt/yt/client/table_client/record_codegen_deps.h"} ${hide;kv:"p RC"}
+ .STRUCT_CMD=yes
.SEM=custom_runs-ITEM && custom_runs-outputs ${norel;output;suf=.record.cpp;noext:Yaml} ${norel;output;suf=.record.h;noext:Yaml} && custom_runs-depends ${input:Yaml} ${input:"yt/yt/tools/record_codegen/__main__.py"} ${input:"yt/python/yt/record_codegen_helpers/__init__.py"} && custom_runs-env "PYTHONPATH=$ENV{PYTHONPATH}:${ARCADIA_ROOT}/yt/python/yt" && custom_runs-command ${Python3_EXECUTABLE} ${input:"yt/yt/tools/record_codegen/__main__.py"} --input ${input:Yaml} --output-root $ARCADIA_BUILD_ROOT --output-cpp ${norel;output;suf=.record.cpp;noext:Yaml} ${pre=--output-include :OUTPUT_INCLUDES} ${hide;norel;output;suf=.record.h;noext:Yaml} && custom_runs-cmake_packages-ITEM && custom_runs-cmake_packages-name Python3
PEERDIR(yt/yt/client)
}
diff --git a/build/conf/proto.conf b/build/conf/proto.conf
index b6d6fbfe80b..680251e289c 100644
--- a/build/conf/proto.conf
+++ b/build/conf/proto.conf
@@ -148,10 +148,12 @@ macro _PROTO_PLUGIN_ARGS_BASE(Name, Tool, OutParm...) {
.SEM=$_SEM_IGNORED
}
+_PY_PROTO_OUTS_INTERNAL_KV=ext_out_name_for_${suf=__int${_PYTHON_VER}__;nopath;noext:File} ${nopath;noext:File}
+
# tag:proto tag:python-specific
macro _ADD_PY_PROTO_OUT(Suf) {
SET_APPEND(PY_PROTO_OUTS \${hide;noauto;norel;output;suf=$Suf;nopath;noext:File})
- SET_APPEND(PY_PROTO_OUTS_INTERNAL \${hide;noauto;norel;output;suf=__int${_PYTHON_VER}__$Suf;nopath;noext:File} \${hide;kv:"ext_out_name_for_\${suf=__int${_PYTHON_VER}__$Suf;nopath;noext:File} \${suf=$Suf;nopath;noext:File}"})
+ SET_APPEND(PY_PROTO_OUTS_INTERNAL \${hide;noauto;norel;output;suf=__int${_PYTHON_VER}__$Suf;nopath;noext:File} \${hide;kv;suf=$Suf:_PY_PROTO_OUTS_INTERNAL_KV})
# XXX fix variable expansion in plugins
SET(PY_PROTO_SUFFIXES $PY_PROTO_SUFFIXES $Suf)
}
@@ -384,8 +386,10 @@ macro GO_PROTO_PLUGIN(NAME, EXT, TOOL, DEPS[]) {
GO_PROTO_CMDLINE=${cwd;rootdir;input:File} $YMAKE_PYTHON3 ${input:"build/scripts/go_proto_wrapper.py"} --arcadia-prefix $GO_ARCADIA_PROJECT_PREFIX --contrib-prefix $GO_CONTRIB_PROJECT_PREFIX --namespace ./$PROTO_NAMESPACE $_GO_PROTO_CHECK_OUTPUT --proto ${rootrel;input:File} -- $PROTOC -I=./$PROTO_NAMESPACE -I=$ARCADIA_ROOT/$PROTO_NAMESPACE ${pre=-I=:_PROTO__INCLUDE} -I=$ARCADIA_BUILD_ROOT -I=$PROTOBUF_INCLUDE_PATH $_PROTOC_FLAGS ${hide:PROTO_FAKEID}
# tag:go-specific tag:proto
-macro _GO_PROTO_CMD_IMPL(File, ENV[], OPTS...) {
+macro _GO_PROTO_CMD_IMPL(File, ENV{env}[], OPTS...) {
+ # the "{env}" above is used to enforce inlining of OPTS, which is necessary due to the `${tool:...}` part
.CMD=$GO_PROTO_CMDLINE $OPTS ${env:ENV} ${hide;kv:"p PB"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.PEERDIR=${GO_PROTOBUF_IMPORTS} ${GO_PROTOBUF_WELLKNOWN_TYPES}
.ADDINCL=FOR proto ${PROTOBUF_INCLUDE_PATH}
}
@@ -393,6 +397,7 @@ macro _GO_PROTO_CMD_IMPL(File, ENV[], OPTS...) {
# tag:go-specific tag:proto
macro _GO_PROTO_CMD(File) {
.CMD=$_GO_PROTO_CMD_IMPL($File $GO_PROTO_OPTS $GO_PROTO_OUTS ENV $_GO_PROTO_ENV)
+ .STRUCT_CMD=yes
}
# tag:proto tag:docs-specific
@@ -405,7 +410,8 @@ macro _DOCS_PROTO_CMD(File) {
###
### Generate .yson.go from .proto using yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen
macro YT_ORM_PROTO_YSON(OUT_OPTS[], Files...) {
- .CMD=${cwd:BINDIR} $PROTOC --plugin=protoc-gen-custom=${tool:"yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen"} -I=${ARCADIA_ROOT}/${PROTO_NAMESPACE} ${pre=-I=:_PROTO__INCLUDE} -I=${ARCADIA_ROOT} --custom_out="$OUT_OPTS paths=base_name:." --custom_opt="goroot=${GO_TOOLS_ROOT}" $_PROTOC_FLAGS ${input:Files} ${hide;noauto;output;suf=.yson.go;nopath;noext:Files} ${hide:PROTO_FAKEID}
+ .CMD=${cwd:BINDIR} $PROTOC --plugin=protoc-gen-custom=${tool:"yt/yt/orm/go/codegen/yson/internal/proto-yson-gen/cmd/proto-yson-gen"} -I=${ARCADIA_ROOT}/${PROTO_NAMESPACE} ${pre=-I=:_PROTO__INCLUDE} -I=${ARCADIA_ROOT} --custom_out="${join= :OUT_OPTS} paths=base_name:." --custom_opt="goroot=${GO_TOOLS_ROOT}" $_PROTOC_FLAGS ${input:Files} ${hide;noauto;output;suf=.yson.go;nopath;noext:Files} ${hide:PROTO_FAKEID}
+ .STRUCT_CMD=yes
.ADDINCL=FOR proto ${ARCADIA_ROOT}/${MODDIR} FOR proto ${ARCADIA_ROOT}/${GO_TEST_IMPORT_PATH} FOR proto yt ${ARCADIA_BUILD_ROOT}/yt FOR proto ${PROTOBUF_INCLUDE_PATH}
.PEERDIR=$GOSTD/strings $GOSTD/fmt $GOSTD/errors $GOSTD/encoding/json library/go/core/xerrors yt/go/yson yt/go/yterrors yt/yt/orm/go/codegen/yson/ytypes contrib/libs/protobuf
@@ -480,11 +486,15 @@ macro _PY_PROTO_CMD_BASE(File, Suf, Args...) {
# tag:proto tag:python-specific
macro _PY_PROTO_CMD(File) {
.CMD=${cwd;rootdir;input:File} $_PY_PROTO_CMD_BASE($File _pb2.py $PY_PROTO_OPTS $PY_PROTO_OUTS $PY_PROTO_MYPY_PLUGIN)
+ .STRUCT_CMD=yes
}
+_PY_PROTO_CMD_INTERNAL_KV=ext_out_name_for_${suf=__int${_PYTHON_VER}___pb2.py;nopath;noext:File} ${suf=_pb2.py;nopath;noext:File}
+
# tag:proto tag:python-specific
macro _PY_PROTO_CMD_INTERNAL(File) {
- .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_PROTO_SUFFIXES $PY_PROTO_MYPY_SUFFIX --input ${rootrel;input:File} --ns /$PROTO_NAMESPACE -- $_PY_PROTO_CMD_BASE($File __int${_PYTHON_VER}___pb2.py $PY_PROTO_OPTS $PY_PROTO_OUTS_INTERNAL ${hide;kv:"ext_out_name_for_${suf=__int${_PYTHON_VER}___pb2.py;nopath;noext:File} ${suf=_pb2.py;nopath;noext:File}"} $PY_PROTO_MYPY_PLUGIN_INTERNAL)
+ .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_PROTO_SUFFIXES $PY_PROTO_MYPY_SUFFIX --input ${rootrel;input:File} --ns /$PROTO_NAMESPACE -- $_PY_PROTO_CMD_BASE($File __int${_PYTHON_VER}___pb2.py $PY_PROTO_OPTS $PY_PROTO_OUTS_INTERNAL ${hide;kv:_PY_PROTO_CMD_INTERNAL_KV} $PY_PROTO_MYPY_PLUGIN_INTERNAL)
+ .STRUCT_CMD=yes
}
# tag:proto tag:java-specific
@@ -543,9 +553,12 @@ macro _PY_EVLOG_CMD(File) {
.CMD=${cwd;rootdir;input:File} $_PY_EVLOG_CMD_BASE($File _ev_pb2.py)
}
+_PY_EVLOG_CMD_INTERNAL_KV=ext_out_name_for_${suf=__int${_PYTHON_VER}___ev_pb2.py;nopath;noext:File} ${suf=_ev_pb2.py;nopath;noext:File}
+
# tag:python-specific tag:proto
macro _PY_EVLOG_CMD_INTERNAL(File) {
- .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_EVLOG_SUFFIXES --input ${rootrel;input:File} --ns /$PROTO_NAMESPACE -- $_PY_EVLOG_CMD_BASE($File __int${_PYTHON_VER}___ev_pb2.py ${hide;kv:"ext_out_name_for_${suf=__int${_PYTHON_VER}___ev_pb2.py;nopath;noext:File} ${suf=_ev_pb2.py;nopath;noext:File}"})
+ .CMD=${cwd;rootdir;input:File} $GEN_PY_PROTOS --suffixes $PY_EVLOG_SUFFIXES --input ${rootrel;input:File} --ns /$PROTO_NAMESPACE -- $_PY_EVLOG_CMD_BASE($File __int${_PYTHON_VER}___ev_pb2.py ${hide;kv:_PY_EVLOG_CMD_INTERNAL_KV})
+ .STRUCT_CMD=yes
}
# tag:java-specific tag:proto
@@ -645,12 +658,14 @@ macro _GENERATE_PY_EVS_INTERNAL(FILES...) {
### TODO: proper implementation needed
macro LIST_PROTO(TO="files.proto", Files...) {
.CMD=$YMAKE_PYTHON3 ${input:"build/scripts/list.py"} ${Files} ${hide;input:Files} ${stdout;noauto;output:TO} ${hide;from_input;output_include:Files}
+ .STRUCT_CMD=yes
_COMPILE_LIST_PROTO(${TO})
_EXPOSE(${TO})
}
macro _COMPILE_LIST_PROTO(SRC) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${hide;input:SRC} ${output;suf=.pb.h;noext:SRC}
+ .STRUCT_CMD=yes
}
# tag:proto
diff --git a/build/conf/python.conf b/build/conf/python.conf
index d2e77f36ec9..a06e77ed2b2 100644
--- a/build/conf/python.conf
+++ b/build/conf/python.conf
@@ -627,10 +627,12 @@ module PY2_LIBRARY: _LIBRARY {
.RESTRICTED=PYTHON3_ADDINCL USE_PYTHON3 PYTHON2_ADDINCL OPTIMIZE_PY_PROTOS NO_OPTIMIZE_PY_PROTOS STYLE_PYTHON
USE_GLOBAL_CMD=yes
+ _PY_PROTO_MYPY_PLUGIN_INTERNAL_KV=ext_out_name_for_${suf=__intpy2___pb2.pyi;nopath;noext:File} ${suf=_pb2.pyi;nopath;noext:File}
+
when ($PY_PROTO_MYPY_ENABLED == "yes") {
PY_PROTO_MYPY_SUFFIX=_pb2.pyi
PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=_pb2.pyi;nopath;noext:File}
- PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=__intpy2___pb2.pyi;nopath;noext:File} ${hide;kv:"ext_out_name_for_${suf=__intpy2___pb2.pyi;nopath;noext:File} ${suf=_pb2.pyi;nopath;noext:File}"})
+ PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=__intpy2___pb2.pyi;nopath;noext:File} ${hide;kv:_PY_PROTO_MYPY_PLUGIN_INTERNAL_KV}
}
SET(MODULE_LANG PY2)
@@ -674,10 +676,12 @@ module PY3_LIBRARY: _LIBRARY {
PYTHON_TYPE_FOR_CYTHON=PY3
ANTLR_PYTHON=Python3
+ _PY_PROTO_MYPY_PLUGIN_INTERNAL_KV=ext_out_name_for_${suf=__intpy3___pb2.pyi;nopath;noext:File} ${suf=_pb2.pyi;nopath;noext:File}
+
when ($PY_PROTO_MYPY_ENABLED == "yes") {
PY_PROTO_MYPY_SUFFIX=_pb2.pyi
PY_PROTO_MYPY_PLUGIN=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=_pb2.pyi;nopath;noext:File}
- PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=__intpy3___pb2.pyi;nopath;noext:File} ${hide;kv:"ext_out_name_for_${suf=__intpy3___pb2.pyi;nopath;noext:File} ${suf=_pb2.pyi;nopath;noext:File}"})
+ PY_PROTO_MYPY_PLUGIN_INTERNAL=$PY_PROTO_MYPY_PLUGIN_BASE ${hide;noauto;norel;output;suf=__intpy3___pb2.pyi;nopath;noext:File} ${hide;kv:_PY_PROTO_MYPY_PLUGIN_INTERNAL_KV}
}
SET(MODULE_LANG PY3)
diff --git a/build/conf/swig.conf b/build/conf/swig.conf
index 9b1796a5f2a..bb0e961f25c 100644
--- a/build/conf/swig.conf
+++ b/build/conf/swig.conf
@@ -8,9 +8,9 @@ SWIG_IMPLICIT_INCLUDES = swig.swg go.swg java.swg perl5.swg python.swg
_SWIG_CMD=$_SWIG_PYTHON_CMD
_SWIG_SEM_TO_MODULE_LINK=${hide;output;suf=.o:SRC}
-_SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${hide;noauto;output;add_to_outs;tobindir;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+_SWIG_PYTHON_CMD=${_SWIG_TOOL} -module ${REALPRJNAME} -cpperraswarn -c++ -python -interface ${MODULE_PREFIX}${REALPRJNAME} -o ${main;output;suf=_wrap.swg.cpp;noext:SRC} ${hide;noauto;add_to_outs;tobindir;output;suf=.py:REALPRJNAME} -outdir ${BINDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
-_SWIG_PERL_CMD=${_SWIG_TOOL} -c++ -cpperraswarn -module ${REALPRJNAME} -shadow -perl -o ${output;noext;main;suf=_wrap.swg.cpp:SRC} ${hide;noauto;output;add_to_outs;tobindir;suf=.pm:REALPRJNAME} -outdir ${ARCADIA_BUILD_ROOT}/${MODDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+_SWIG_PERL_CMD=${_SWIG_TOOL} -c++ -cpperraswarn -module ${REALPRJNAME} -shadow -perl -o ${main;output;suf=_wrap.swg.cpp;noext:SRC} ${hide;noauto;add_to_outs;tobindir;output;suf=.pm:REALPRJNAME} -outdir ${ARCADIA_BUILD_ROOT}/${MODDIR} ${pre=-I:_SWIG__INCLUDE} ${input:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
_SWIG_JNI_CPP_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --out-header ${main;output;suf=_wrap.swg.h;noext:SRC} --package-by-file ru/yandex/${rootrel;input:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${output;suf=_wrap.swg.cpp;noext:SRC} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
_SWIG_JNI_JAVA_CMD=$YMAKE_PYTHON3 ${input:"build/scripts/jni_swig.py"} --swig ${_SWIG_TOOL} --default-module ${nopath;noext:SRC} --src ${input:SRC} --package-by-file ru/yandex/${rootrel;input:SRC} --jsrc ${main;output;suf=.jsrc:SRC} -- ${pre=-I:_SWIG__INCLUDE} -o ${BINDIR}/unused.cpp ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
@@ -28,6 +28,7 @@ when ($USE_SYSTEM_JDK == "yes" || $OS_ANDROID == "yes") {
### provides DstSubPrefix_swg python module.
macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
.CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -c++ -python -module ${nopath:DstSubPrefix} -interface ${suf=_swg;nopath:DstSubPrefix} -o ${output;suf=.swg.cpp:DstSubPrefix} ${input:Src} ${hide;noauto;output;suf=.py:DstSubPrefix} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.PEERDIR=contrib/tools/swig/Lib/python
}
@@ -37,6 +38,7 @@ macro _SWIG_PYTHON_CPP(Src, DstSubPrefix) {
### Like _SWIG_PYTHON_CPP but generate DstSubPrefix_swg.c.
macro _SWIG_PYTHON_C(Src, DstSubPrefix) {
.CMD=$_SWIG_TOOL -I$ARCADIA_BUILD_ROOT -I$ARCADIA_ROOT -I$_SWIG_LIBRARY_ABS/python -I$_SWIG_LIBRARY_ABS -python -module ${nopath:DstSubPrefix} -interface ${suf=_swg;nopath:DstSubPrefix} -o ${output;suf=.swg.c:DstSubPrefix} ${input:Src} ${hide;noauto;output;suf=.py:DstSubPrefix} ${hide;kv:"p SW"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.PEERDIR=contrib/tools/swig/Lib/python
}
diff --git a/build/ymake.core.conf b/build/ymake.core.conf
index de0f9594462..3158b68f9b0 100644
--- a/build/ymake.core.conf
+++ b/build/ymake.core.conf
@@ -416,6 +416,7 @@ when ($OS_EMSCRIPTEN == "yes") {
### @see https://a.yandex-team.ru/arc/trunk/arcadia/build/scripts/check_config_h.py for exact details
macro CHECK_CONFIG_H(Conf) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/check_config_h.py"} ${rootrel;input:Conf} ${hide;from_input;output_include:Conf} ${output;suf=.config.cpp;nopath;noext:Conf} ${hide;kv:"p CH"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=${hide;rootrel;input:Conf} ${hide;output;suf=.config.cpp;nopath;noext:Conf}
}
@@ -2708,6 +2709,7 @@ macro ALL_RESOURCE_FILES_FROM_DIRS(PREFIX="", STRIP="", DIRS...) {
macro _BUNDLE_TARGET(Target, Destination, Suffix) {
.CMD=$MOVE_FILE ${result:Target}$Suffix ${noauto;output:Destination} ${hide;kv:"p BN"} ${hide;kv:"pc light-cyan"} $VCS_INFO_DISABLE_CACHE__NO_UID__
+ .STRUCT_CMD=yes
# In Cmd use MOVE, but for ya ide gradle this is prebuilt foreign target, and for use it many times, use COPY symlink to bundle
.SEM=target_commands-ITEM && target_commands-macro copy_file && target_commands-args ${result:Target}$Suffix ${noauto;output:Destination} && target_commands-flags src_is_depend
}
@@ -2819,6 +2821,7 @@ macro SIZE(Type) {
### You should specify file name with the extension as Out. Further processing will be done according this extension.
macro JOIN_SRCS(Out, Src...) {
.CMD=$YMAKE_PYTHON3 ${input:"build/scripts/gen_join_srcs.py"} ${hide;input:"build/scripts/process_command_files.py"} ${output:Out} --ya-start-command-file ${rootrel;context=TEXT;input=TEXT:Src} --ya-end-command-file ${hide;from_input;output_include:Src} ${hide;kv:"p JS"} ${hide;kv:"pc magenta"}
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro target_joined_source && target_macroses-args $Out ${input:Src} ${hide;output;suf=.o:Out} ${hide;input:"build/scripts/gen_join_srcs.py"} ${hide;input:"build/scripts/process_command_files.py"}
_CONDITIONAL_SRCS($TIDY_VALUE $Src)
}
@@ -3004,6 +3007,7 @@ _EMPTY_CMD=
# tag:src-processing
macro _SRC("swg", SRC, SRCFLAGS...) {
.CMD=${_SWIG_CMD}
+ .STRUCT_CMD=yes
.PEERDIR=${_SWIG_PEERDIR}
.SEM=conan-tool_requires swig/4.0.2 && conan-imports 'bin, *swig* -> ./bin' ${hide;input:SRC} ${_SWIG_SEM_TO_MODULE_LINK}
}
@@ -3018,7 +3022,7 @@ when($LINUX == "yes" || $ANDROID == "yes") {
RODATA_ELF_FLAGS=--elf
}
-RODATA_COMPILE=$YMAKE_PYTHON3 ${input:"build/scripts/rodata2asm.py"} $RODATA_ELF_FLAGS ${RODATA_SYMBOL_PREFIX}${noext;nopath:SRC} ${input:SRC} ${tmp;suf=.asm:SRC} ${hide:OBJECT_SUF} && $_SRC_yasm_helper(${tmp;suf=.asm:SRC})
+RODATA_COMPILE=$YMAKE_PYTHON3 ${input:"build/scripts/rodata2asm.py"} $RODATA_ELF_FLAGS ${RODATA_SYMBOL_PREFIX}${noext;nopath:SRC} ${input:SRC} ${tmp;suf=.asm:SRC} ${hide:OBJECT_SUF} && $_SRC_yasm_helper(${suf=.asm:SRC} ${tmp;suf=.asm:SRC})
when (($ARCH_AARCH64 || $ARCH_ARM || $ARCH_PPC64LE || $ARCH_RISCV32) == "yes") {
RODATA_COMPILE=$YMAKE_PYTHON3 ${input:"build/scripts/rodata2cpp.py"} ${noext;nopath:SRC} ${input:SRC} ${output;suf=.cpp:SRC}
}
@@ -3026,6 +3030,7 @@ when (($ARCH_AARCH64 || $ARCH_ARM || $ARCH_PPC64LE || $ARCH_RISCV32) == "yes") {
# tag:src-processing
macro _SRC("rodata", SRC, SRCFLAGS...) {
.CMD=$RODATA_COMPILE && ${hide;kv:"p RD"} ${hide;kv:"pc light-green"}
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro target_rodata_sources && target_macroses-args PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} ${hide;input:"build/scripts/rodata2cpp.py"}
}
@@ -3066,41 +3071,48 @@ macro _SRC("sfdl", SRC, SRCFLAGS...) {
}
macro _XS_SRCS(SRC, TYPEMAPS[], SRCFLAGS...) {
- .CMD=$PERL_LD_LIBRARY_PATH $PERL $PERL_INCLUDE ${suf=/ExtUtils/xsubpp:PERL_PRIVLIB} -typemap ${suf=/ExtUtils/typemap:PERL_PRIVLIB} $PERLSUFFIX $XSUBPPFLAGS ${pre=-typemap :TYPEMAPS} ${hide;input:TYPEMAPS} ${SRCFLAGS} ${input:SRC} ${PERLOUTPUT} ${hide;kv:"p XS"} ${hide;kv:"pc yellow"}
+ .CMD=${env:PERL_LD_LIBRARY_PATH} $PERL $PERL_INCLUDE ${suf=/ExtUtils/xsubpp:PERL_PRIVLIB} -typemap ${suf=/ExtUtils/typemap:PERL_PRIVLIB} $PERLSUFFIX $XSUBPPFLAGS ${pre=-typemap :TYPEMAPS} ${hide;input:TYPEMAPS} ${SRCFLAGS} ${input:SRC} ${PERLOUTPUT} ${hide;kv:"p XS"} ${hide;kv:"pc yellow"}
}
# tag:src-processing
macro _SRC("xs", SRC, SRCFLAGS...) {
- .CMD=$_XS_SRCS($SRC TYPEMAPS $_XSTYPEMAPS $SRCFLAGS)
+ .CMD=$_XS_SRCS($SRC $SRCFLAGS TYPEMAPS $_XSTYPEMAPS)
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("gperf", SRC, SRCFLAGS...) {
.CMD=$RUN_NO_SANITIZE ${tool:"contrib/tools/gperf"} $GP_FLAGS ${SRCFLAGS} ${pre=-Nin_;suf=_set;nopath;noallext:SRC} ${input:SRC} ${stdout;output;defext=.gperf.cpp;nopath;noext:SRC} ${hide;kv:"p GP"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("rl", SRC, SRCFLAGS...) {
.CMD=$RUN_NO_SANITIZE ${tool:"contrib/tools/ragel5/ragel"} $RAGEL_FLAGS ${SRCFLAGS} -o ${tmp;suf=.tmp:SRC} ${input:SRC} && $RUN_NO_SANITIZE ${tool:"contrib/tools/ragel5/rlgen-cd"} $RLGEN_FLAGS -o ${output;defext=.rl5.cpp;nopath;noext:SRC} ${tmp;suf=.tmp:SRC} ${hide;kv:"p R5"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
macro _SRC("xsyn", SRC, SRCFLAGS...) {
.CMD=$YMAKE_PYTHON ${input:"library/cpp/xml/parslib/xsyn2ragel.py"} ${input:SRC} ${input:"library/cpp/xml/parslib/xmlpars.xh"} dontuse ${stdout;output;suf=.h.rl5:SRC} ${hide;kv:"p XN"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("rl5", SRC, SRCFLAGS...) {
.CMD=$_SRC(rl $SRC $SRCFLAGS)
+ #.STRUCT_CMD=yes # TODO overloading support for redirection
}
# tag:src-processing
macro _SRC("asp", SRC, SRCFLAGS...) {
.CMD=$RUN_NO_SANITIZE ${tool:"tools/html2cpp"} ${input:SRC} ${output;suf=.cpp:SRC} ${hide;kv:"p HT"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("rl6", SRC, SRCFLAGS...) {
.CMD=$RUN_NO_SANITIZE ${tool:"contrib/tools/ragel6"} $RAGEL6_FLAGS ${SRCFLAGS} -L -I${ARCADIA_ROOT} -o ${output;defext=.rl6.cpp;nopath;noext:SRC} ${input:SRC} ${hide;kv:"p R6"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro target_ragel_lexers && target_macroses-args PRIVATE ${input:SRC} ${hide;output;suf=${OBJ_SUF}.o:SRC} $RAGEL6_FLAGS ${SRCFLAGS} && platform_vars-RAGEL_FLAGS "-L -I $S/" && conan-tool_requires ragel/6.10 && conan-imports 'bin, ragel* -> ./bin' ${hide;input:"build/scripts/run_tool.py"}
}
@@ -3112,12 +3124,14 @@ macro _SRC("xsyn", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("ev", SRC, SRCFLAGS...) {
.CMD=$EVLOG_CMD($SRC)
+ .STRUCT_CMD=yes
.SEM=$EVLOG_CMD($SRC)
}
# tag:src-processing
macro _SRC("proto", SRC, SRCFLAGS...) {
.CMD=$PROTO_CMD($SRC)
+ .STRUCT_CMD=yes
.SEM=$PROTO_CMD($SRC)
}
@@ -3125,13 +3139,15 @@ macro _SRC("proto", SRC, SRCFLAGS...) {
macro _SRC("gztproto", SRC, SRCFLAGS...) {
# _PROTO__INCLUDE is before ARCADIA_ROOT in includes because in gazetteer we don't use builtins now and paths' canonization (resolving) depends on order of roots.
# descriptor.proto must be resolved as google/protobuf/descriptor.proto
- .CMD=${tool:"dict/gazetteer/converter"} -I$PROTOBUF_INCLUDE_PATH ${pre="-I":_PROTO__INCLUDE} -I$ARCADIA_ROOT ${SRCFLAGS} ${input:SRC} ${norel;output;suf=.proto;nopath;noext:SRC} ${hide;kv:"p GZ"} ${hide;kv:"pc yellow"}
+ .CMD=${tool:"dict/gazetteer/converter"} -I$PROTOBUF_INCLUDE_PATH ${pre=-I:_PROTO__INCLUDE} -I$ARCADIA_ROOT ${SRCFLAGS} ${input:SRC} ${norel;output;suf=.proto;nopath;noext:SRC} ${hide;kv:"p GZ"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.PEERDIR=kernel/gazetteer/proto
}
# tag:src-processing
macro _SRC("cfgproto", SRC, SRCFLAGS...) {
.CMD=$_CPP_CFGPROTO_CMD($SRC)
+ .STRUCT_CMD=yes
}
@@ -3156,6 +3172,7 @@ otherwise {
macro _SRC("pyx", SRC, SRCFLAGS...) {
# Copy-paste from BUILDWITH_CYTHON
.CMD=$RUN_CYTHON_SCRIPT $CYTHON_OPTIONS --cplus ${CYTHON_CPP_OUTPUT_INCLUDES} ${pre=-I:_CYTHON__INCLUDE} ${input:SRC} -o ${tobindir;output;suf=${OBJ_SUF}.cpp:SRC} $CYTHON_OUTPUT_INCLUDES ${SRCFLAGS} ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_options-privates-ITEM && target_options-privates-option target_cython_sources && target_options-privates-args ${input:Src} ${hide;tobindir;output;suf=.fake.o:Src} && target_macroses-ITEM && target_macroses-macro target_cython_options && target_macroses-args $CYTHON_OPTIONS --cplus ${SRCFLAGS} ${CYTHON_CPP_OUTPUT_INCLUDES} && target_macroses-ITEM && target_macroses-macro target_cython_include_directories && target_macroses-args $_CYTHON__INCLUDE && target_macroses-ITEM && target_macroses-macro set_python_type_for_cython && target_macroses-args $PYTHON_TYPE_FOR_CYTHON
.ADDINCL=$_CYTHON_SYS_INCLUDES
}
@@ -3174,12 +3191,14 @@ macro MANUAL_GENERATION(Outs...) {
# tag:src-processing
macro _SRC("sc", SRC, SRCFLAGS...) {
.CMD=${tool:"tools/domschemec"} --in ${input:SRC} --out ${norel;output;suf=.h:SRC} ${hide;output_include:"library/cpp/domscheme/runtime.h"} ${SRCFLAGS} ${hide;kv:"p SC"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.PEERDIR=library/cpp/domscheme
}
# tag:src-processing
macro _SRC("ssqls", SRC, SRCFLAGS...) {
- .CMD=${tool:"metrika/core/tools/ssqls"} ${input;notransformbuilddir:SRC} -S $ARCADIA_ROOT -B $ARCADIA_BUILD_ROOT $SRCFLAGS ${hide;output;suf=.cpp;noext:SRC} ${hide;output;suf=.h;noext:SRC} ${hide;kv:"p SS"} ${hide;kv:"pc yellow"}
+ .CMD=${tool:"metrika/core/tools/ssqls"} ${notransformbuilddir;input:SRC} -S $ARCADIA_ROOT -B $ARCADIA_BUILD_ROOT $SRCFLAGS ${hide;output;suf=.cpp;noext:SRC} ${hide;output;suf=.h;noext:SRC} ${hide;kv:"p SS"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
macro _SRC_f_new(SRC, SRCFLAGS...) {
@@ -3205,21 +3224,23 @@ macro AR_PLUGIN(name) {
### of all arguments, in JSON format
macro LD_PLUGIN(Name) {
.CMD=$COPY_CMD ${context=TEXT;input=TEXT:Name} ${global;noauto;output;suf=.pyplugin:Name}
+ .STRUCT_CMD=yes
.SEM=_SEM_IGNORED
}
USE_FLANG=no
when ($USE_FLANG == "yes") {
- _SRC_FLANG=$_SRC_f_new($SRC, $SRCFLAGS)
+ _SRC_FLANG=$_SRC_f_new($SRC $SRCFLAGS)
}
otherwise {
- _SRC_FLANG=$_SRC_f_old($SRC, $SRCFLAGS)
+ _SRC_FLANG=$_SRC_f_old($SRC $SRCFLAGS)
}
# tag:src-processing
macro _SRC("f", SRC, SRCFLAGS...) {
.CMD=$_SRC_FLANG
+ .STRUCT_CMD=yes
.PEERDIR=contrib/libs/libf2c
.ADDINCL=contrib/libs/libf2c
}
@@ -3298,18 +3319,21 @@ macro _SRC("masm", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("yasm", SRC, SRCFLAGS...) {
.CMD=$_SRC_yasm($SRC $SRCFLAGS PREINCLUDES $YASM_PREINCLUDES_VALUE)
+ .STRUCT_CMD=yes
.SEM=$_YASM_SEM
}
# tag:src-processing
macro _SRC("asm", SRC, SRCFLAGS...) {
.CMD=$_SRC_ASM($SRC $SRCFLAGS PREINCLUDES $YASM_PREINCLUDES_VALUE)
+ .STRUCT_CMD=yes
.SEM=$_ASM_SEM
}
# tag:src-processing
macro _SRC("lua", SRC, SRCFLAGS...) {
.CMD=${cwd:LUAJIT_PATH} ${tool:"contrib/libs/luajit/compiler"} -b -g ${input:SRC} ${SRCFLAGS} ${global;output;suf=.o:SRC} ${hide;kv:"p LJ"} ${hide;kv:"pc light-cyan"}
+ .STRUCT_CMD=yes
.PEERDIR=$LUAJIT_PATH
}
@@ -3330,18 +3354,21 @@ macro _SRC("cu", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("fbs", SRC, SRCFLAGS...) {
- .CMD=$FBS_CMD($SRC, $SRCFLAGS)
+ .CMD=$FBS_CMD($SRC $SRCFLAGS)
+ .STRUCT_CMD=yes
.SEM=$FBS_CMD($SRC, $SRCFLAGS)
}
# tag:src-processing
macro _SRC("fbs64", SRC, SRCFLAGS...) {
- .CMD=$_CPP_FLATC64_CMD($SRC, $SRCFLAGS)
+ .CMD=$_CPP_FLATC64_CMD($SRC $SRCFLAGS)
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("pysrc", SRC, SRCFLAGS...) {
- .CMD=$_SRC_PYSRC($SRC, $SRCFLAGS)
+ .CMD=$_SRC_PYSRC($SRC $SRCFLAGS)
+ .STRUCT_CMD=yes
}
# tag:src-processing
@@ -3513,6 +3540,7 @@ otherwise {
# tag:src-processing
macro _SRC("po", SRC, SRCFLAGS...) {
.CMD=$YMAKE_PYTHON ${input:"contrib/tools/python/src/Tools/i18n/msgfmt.py"} -o $_MO_OUTPUT ${input:SRC}
+ .STRUCT_CMD=yes
}
# tag:ydl-specific
@@ -3804,6 +3832,7 @@ macro SRC_C_NO_LTO(FILE, FLAGS...) {
### Generates .cpp file from .pyx.
macro BUILDWITH_CYTHON_CPP(Src, Options...) {
.CMD=$RUN_CYTHON_SCRIPT $CYTHON_OPTIONS ${Options} --cplus ${CYTHON_CPP_OUTPUT_INCLUDES} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} -o ${tobindir;output;suf=${OBJ_SUF}.cpp:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_options-privates-ITEM && target_options-privates-option target_cython_sources && target_options-privates-args ${input:Src} ${hide;tobindir;output;suf=.fake.o:Src} && target_macroses-ITEM && target_macroses-macro target_cython_options && target_macroses-args $CYTHON_OPTIONS ${Options} --cplus ${CYTHON_CPP_OUTPUT_INCLUDES} && target_macroses-ITEM && target_macroses-macro target_cython_include_directories && target_macroses-args $_CYTHON__INCLUDE && target_macroses-ITEM && target_macroses-macro set_python_type_for_cython && target_macroses-args $PYTHON_TYPE_FOR_CYTHON
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3815,6 +3844,7 @@ macro BUILDWITH_CYTHON_CPP(Src, Options...) {
### If Dep changes the .cpp file will be re-generated.
macro _BUILDWITH_CYTHON_CPP_DEP(Src, Dep, Options...) {
.CMD=$RUN_CYTHON_SCRIPT $CYTHON_OPTIONS ${Options} --cplus ${CYTHON_CPP_OUTPUT_INCLUDES} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} ${hide;input:Dep} -o ${tobindir;output;suf=${OBJ_SUF}.cpp:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_options-privates-ITEM && target_options-privates-option target_cython_sources && target_options-privates-args ${input:Src} ${hide;input:Dep} ${hide;tobindir;output;suf=.fake.o:Src} && target_macroses-ITEM && target_macroses-macro target_cython_options && target_macroses-args $CYTHON_OPTIONS ${Options} --cplus ${CYTHON_CPP_OUTPUT_INCLUDES} && target_macroses-ITEM && target_macroses-macro target_cython_include_directories && target_macroses-args $_CYTHON__INCLUDE && target_macroses-ITEM && target_macroses-macro set_python_type_for_cython && target_macroses-args $PYTHON_TYPE_FOR_CYTHON
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3835,6 +3865,7 @@ macro _BUILDWITH_CYTHON_CPP_H(Src, Dep, Options...) {
### Generates .c file from .pyx.
macro BUILDWITH_CYTHON_C(Src, Options...) {
.CMD=$RUN_CYTHON_SCRIPT $CYTHON_OPTIONS ${Options} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} -o ${tobindir;output;suf=${OBJ_SUF}.c:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_options-privates-ITEM && target_options-privates-option target_cython_sources && target_options-privates-args ${input:Src} ${hide;tobindir;output;suf=.fake.o:Src} && target_macroses-ITEM && target_macroses-macro target_cython_options && target_macroses-args $CYTHON_OPTIONS ${Options} ${CYTHON_OUTPUT_INCLUDES} && target_macroses-ITEM && target_macroses-macro target_cython_include_directories && target_macroses-args $_CYTHON__INCLUDE && target_macroses-ITEM && target_macroses-macro set_python_type_for_cython && target_macroses-args $PYTHON_TYPE_FOR_CYTHON
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3846,6 +3877,7 @@ macro BUILDWITH_CYTHON_C(Src, Options...) {
### If Dep changes the .c file will be re-generated.
macro _BUILDWITH_CYTHON_C_DEP(Src, Dep, Options...) {
.CMD=$RUN_CYTHON_SCRIPT $CYTHON_OPTIONS ${Options} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} ${hide;input:Dep} -o ${tobindir;output;suf=${OBJ_SUF}.c:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_options-privates-ITEM && target_options-privates-option target_cython_sources && target_options-privates-args ${input:Src} ${hide;input:Dep} ${hide;tobindir;output;suf=.fake.o:Src} && target_macroses-ITEM && target_macroses-macro target_cython_options && target_macroses-args $CYTHON_OPTIONS ${Options} ${CYTHON_OUTPUT_INCLUDES} && target_macroses-ITEM && target_macroses-macro target_cython_include_directories && target_macroses-args $_CYTHON__INCLUDE && target_macroses-ITEM && target_macroses-macro set_python_type_for_cython && target_macroses-args $PYTHON_TYPE_FOR_CYTHON
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3856,6 +3888,7 @@ macro _BUILDWITH_CYTHON_C_DEP(Src, Dep, Options...) {
### BUILDWITH_CYTHON_C without .pyx infix and with cdef public .h file.
macro _BUILDWITH_CYTHON_C_H(Src, Dep, Options...) {
.CMD=$RUN_CYTHON_SCRIPT_H $CYTHON_OPTIONS ${Options} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} ${hide;input:Dep} -o ${tobindir;output;suf=.c;noext:Src} ${hide;addincl;tobindir;output;suf=.h;noext:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3865,6 +3898,7 @@ macro _BUILDWITH_CYTHON_C_H(Src, Dep, Options...) {
### BUILDWITH_CYTHON_C_H with cdef api _api.h file.
macro _BUILDWITH_CYTHON_C_API_H(Src, Dep, Options...) {
.CMD=$RUN_CYTHON_SCRIPT_H $CYTHON_OPTIONS ${Options} ${pre=-I:_CYTHON__INCLUDE} ${input:Src} ${hide;input:Dep} -o ${tobindir;output;suf=.c;noext:Src} ${hide;addincl;tobindir;output;suf=.h;noext:Src} ${hide;addincl;tobindir;output;defext=_api.h;noext:Src} $CYTHON_OUTPUT_INCLUDES ${hide;kv:"p CY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
ADDINCL($_CYTHON_SYS_INCLUDES)
}
@@ -3873,6 +3907,7 @@ macro _BUILDWITH_CYTHON_C_API_H(Src, Dep, Options...) {
### Compile .rl file using Ragel6.
macro BUILDWITH_RAGEL6(Src, Options...) {
.CMD=$RUN_NO_SANITIZE ${tool:"contrib/tools/ragel6"} $RAGEL6_FLAGS ${Options} -I${ARCADIA_ROOT} -o ${output;defext=.rl6.cpp;nopath;noext:Src} ${input:Src} ${hide;kv:"p R6"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:python-processing tag:internal
@@ -3884,6 +3919,7 @@ macro BUILDWITH_RAGEL6(Src, Options...) {
### Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/pysrcs/#makrospyregister
macro _PY_REGISTER(Func) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_py_reg.py"} $Func ${noauto;output;suf=.reg.cpp:Func} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
SRCS(GLOBAL $Func.reg.cpp)
}
@@ -3895,6 +3931,7 @@ macro _PY_REGISTER(Func) {
### Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/pysrcs/#makrospyregister
macro _PY3_REGISTER(Func) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_py3_reg.py"} $Func ${noauto;output;suf=.reg3.cpp:Func} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
SRCS(GLOBAL $Func.reg3.cpp)
}
@@ -3906,6 +3943,7 @@ macro _PY3_REGISTER(Func) {
### Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/pysrcs/#makrospyregister
macro _PY_COMPILE_BYTECODE(SrcX, Src, Dst) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/py_compile.py"} $SrcX ${input:Src} ${noauto;output;suf=.yapyc:Dst} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:python-processing tag:internal
@@ -3916,10 +3954,11 @@ macro _PY_COMPILE_BYTECODE(SrcX, Src, Dst) {
### Documentation: https://wiki.yandex-team.ru/devtools/commandsandvars/pysrcs/#makrospyregister
macro _PY3_COMPILE_BYTECODE(SrcX, Src, Dst) {
.CMD=${env:"PYTHONHASHSEED=0"} ${tool:"tools/py3cc"} $SrcX ${input:Src} ${noauto;output;suf=.yapyc3:Dst} ${hide;kv:"p PY"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
macro _ARCHIVE_SEM_HELPER(FLAGS[], OUT, Files...) {
- .SEM=custom_runs-ITEM && custom_runs-outputs ${OUT} && custom_runs-depends $ARCH_TOOL ${join= :Files} && custom_runs-command $ARCH_TOOL $FLAGS ${join=\: :Files}: -o ${OUT}
+ .SEM=custom_runs-ITEM && custom_runs-outputs ${OUT} && custom_runs-depends $ARCH_TOOL ${join= :Files} && custom_runs-command $ARCH_TOOL $FLAGS ${suf=\::Files} -o ${OUT}
}
### @usage: ARCHIVE_ASM(NAME archive_name files...)
@@ -3928,13 +3967,16 @@ macro _ARCHIVE_SEM_HELPER(FLAGS[], OUT, Files...) {
### 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_ASM(NAME="", DONTCOMPRESS?"-p":"", Files...) {
- .CMD=$ARCH_TOOL -q $DONTCOMPRESS ${input;join=\: :Files}: -o ${output;suf=$OBJ_SUF.rodata:NAME} ${hide;kv:"p AR"} ${hide;kv:"pc light-cyan"}
+ .CMD=$ARCH_TOOL -q $DONTCOMPRESS ${suf=\:;input:Files} -o ${output;suf=$OBJ_SUF.rodata:NAME} ${hide;kv:"p AR"} ${hide;kv:"pc light-cyan"}
+ .STRUCT_CMD=yes
.SEM=$_ARCHIVE_SEM_HELPER(${output;suf=$OBJ_SUF.rodata:NAME} ${input:Files} FLAGS -q $DONTCOMPRESS)
+ .STRUCT_SEM=yes
}
# tag:yweb-specific
macro PIRE_INLINE_CMD(SRC) {
.CMD=${tool:"library/cpp/regex/pire/inline"} -o ${output:SRC} ${input:SRC} ${hide;output_include:SRC} ${hide;kv:"p PI"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
# tag:yweb-specific
@@ -3950,7 +3992,8 @@ macro PIRE_INLINE(FILES...) {
###
### Example: https://wiki.yandex-team.ru/yatool/howtowriteyamakefiles/#a1ispolzujjtekomanduarchive
macro ARCHIVE(NAME="", DONTCOMPRESS?"-p":"", Files...) {
- .CMD=$ARCH_TOOL -q -x $DONTCOMPRESS ${input;join=\: :Files}: -o ${addincl;noauto;output:NAME} ${hide;kv:"p AR"} ${hide;kv:"pc light-red"}
+ .CMD=$ARCH_TOOL -q -x $DONTCOMPRESS ${suf=\:;input:Files} -o ${addincl;noauto;output:NAME} ${hide;kv:"p AR"} ${hide;kv:"pc light-red"}
+ .STRUCT_CMD=yes
.SEM=$_ARCHIVE_SEM_HELPER(${addincl;noauto;output:NAME} ${input:Files} FLAGS -q -x $DONTCOMPRESS) && target_options-privates-ITEM && target_options-privates-option target_sources && target_options-privates-args $BINDIR/$NAME
}
@@ -3962,6 +4005,7 @@ macro ARCHIVE(NAME="", DONTCOMPRESS?"-p":"", Files...) {
### Example: https://wiki.yandex-team.ru/yatool/howtowriteyamakefiles/#a1ispolzujjtekomanduarchive
macro ARCHIVE_BY_KEYS(NAME="", KEYS="", DONTCOMPRESS?"-p":"", Files...) {
.CMD=$ARCH_TOOL -q -x $DONTCOMPRESS ${input:Files} -k $KEYS -o ${addincl;noauto;output:NAME} ${hide;kv:"p AR"} ${hide;kv:"pc light-red"}
+ .STRUCT_CMD=yes
}
#scripts
@@ -4031,6 +4075,7 @@ DECIMAL_MD5_FIXED=
### <calculated_md5_hash> will be md5 hash for all inputs passed to this macro.
macro DECIMAL_MD5_LOWER_32_BITS(File, FUNCNAME="", Opts...) {
.CMD=$YMAKE_PYTHON ${input:DECIMAL_MD5_SCRIPT} --fixed-output=${DECIMAL_MD5_FIXED} --func-name=${FUNCNAME} --lower-bits 32 --source-root=$ARCADIA_ROOT ${context=TEXT;input=TEXT:Opts} ${stdout;output:File} ${hide;kv:"p SV"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
}
# tag:internal
@@ -4048,6 +4093,7 @@ macro CFG_VARS() {
### Used implicitly for .in-files processing.
macro CONFIGURE_FILE(Src, Dst) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/configure_file.py"} ${input:Src} ${addincl;output:Dst} $CFG_VARS ${hide;kv:"p CF"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=dir_macroses-ITEM && dir_macroses-macro set_vars && dir_macroses-args ${CFG_VARS} && target_commands-ITEM && target_commands-macro configure_file && target_commands-args $S/${rootrel;input:Src} $B/${addincl;output;rootrel:Dst}
}
@@ -4308,6 +4354,7 @@ macro _LUAJIT_OBJDUMP(Src, OUT="") {
LUAJIT_21_PATH=${ARCADIA_ROOT}/contrib/libs/luajit_21
macro _LUAJIT_21_OBJDUMP(Src, OUT="") {
.CMD=${cwd:LUAJIT_21_PATH} ${tool:"contrib/libs/luajit_21/compiler"} -b -g ${input:Src} ${noauto;output:OUT} ${hide;kv:"p LJ"} ${hide;kv:"pc light-cyan"}
+ .STRUCT_CMD=yes
}
# tag:lua-specific
@@ -4323,6 +4370,7 @@ macro _LUAJIT_OPENRESTY_OBJDUMP(Src, OUT="") {
### Documentation: https://wiki.yandex-team.ru/yatool/HowToWriteYaMakeFiles/
macro GENERATE_ENUM_SERIALIZATION(File) {
.CMD=$ENUM_PARSER_TOOL ${input:File} --include-path ${rootrel;input:File} --output ${output;suf=_serialized.cpp:File} ${hide;from_input;output_include:File} ${hide;output_include:"util/generic/serialized_enum.h"} ${hide;kv:"p EN"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro generate_enum_serilization && target_macroses-args ${input:File} ${hide;output;suf=_serialized.o:File} INCLUDE_HEADERS ${rootrel;input:File} ${hide;tool:"tools/enum_parser/enum_parser"}
PEERDIR(tools/enum_parser/enum_serialization_runtime)
}
@@ -4335,6 +4383,7 @@ macro GENERATE_ENUM_SERIALIZATION(File) {
### Documentation: https://wiki.yandex-team.ru/yatool/HowToWriteYaMakeFiles/
macro GENERATE_ENUM_SERIALIZATION_WITH_HEADER(File) {
.CMD=$ENUM_PARSER_TOOL ${input:File} --include-path ${rootrel;input:File} --output ${output;suf=_serialized.cpp:File} --header ${output;suf=_serialized.h:File} ${hide;from_input;output_include:File} ${hide;kv:"p EN"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=target_macroses-ITEM && target_macroses-macro generate_enum_serilization && target_macroses-args ${input:File} ${hide;output;suf=_serialized.o:File} GEN_HEADER ${output;suf=_serialized.h:File} INCLUDE_HEADERS ${rootrel;input:File} ${hide;tool:"tools/enum_parser/enum_parser"}
PEERDIR(tools/enum_parser/enum_serialization_runtime)
}
@@ -4344,6 +4393,7 @@ macro GENERATE_ENUM_SERIALIZATION_WITH_HEADER(File) {
### Creates a header file DebianVersion.h define the DEBIAN_VERSION taken from the File.
macro DEB_VERSION(File) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/mkver.py"} ${input:File} ${stdout;output:"DebianVersion.h"} ${hide;kv:"p CL"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
}
### @usage: NEED_CHECK()
@@ -4440,7 +4490,7 @@ macro SYMLINK(From, To) {
}
macro _FMT_INDUCED_DEPS(For, Deps...) {
- .CMD=${induced_deps=$For;hide:Deps}
+ .CMD=${hide;induced_deps=$For:Deps}
}
### @usage: PREPARE_INDUCED_DEPS(VAR Type Files...)
@@ -4688,6 +4738,7 @@ macro _RUN_ANTLR_BASE(IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUT
### so you shall place it immediately after resource_id.
macro FROM_SANDBOX(Id, OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], FILE?"--copy-to-dir":"--untar-to", AUTOUPDATED="", PREFIX=".", RENAME[], EXECUTABLE?"--executable":"", SBR="sbr:") {
.CMD=${hide:SANDBOX_FAKEID} ${cwd:BINDIR} ${resource;pre=$SBR:Id} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_sandbox.py"} --resource-file $(RESOURCE_ROOT)/sbr/$Id/resource --resource-id $Id $FILE $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${hide;requirements:"network:full"} ${hide;kv:"p SB"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
ADD_CHECK(check.resource $Id)
}
@@ -4707,6 +4758,7 @@ macro LARGE_FILES(AUTOUPDATED?, Files...) {
### Process file archive as [FROM_SANDBOX()](#macro_FROM_SANDBOX).
macro FROM_ARCHIVE(Src, OUT{output}[], OUT_NOAUTO{output}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], PREFIX=".", RENAME[], EXECUTABLE?"--executable":"") {
.CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/fetch_from_archive.py"} "--archive" ${input:Src} "--file-name" ${suf=-:Src} "--untar-to" $PREFIX ${pre=--rename :RENAME} $EXECUTABLE -- $OUT $OUT_NOAUTO ${hide;input:"build/scripts/fetch_from.py"} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${hide;kv:"p FA"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
}
when ($MSVC == "yes") {
@@ -4798,6 +4850,7 @@ macro LLVM_COMPILE_C(Input, Output, Opts...) {
### Note: Output name is used as is, no extension added.
macro BPF(Input, Output, Opts...) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/clang_wrapper.py"} $WINDOWS ${CLANG_RESOURCE_GLOBAL}/bin/clang ${pre=-I:_C__INCLUDE} $C_FLAGS_PLATFORM -target bpf -c ${input:Input} -o ${noauto;output:Output} $Opts ${hide;kv:"p BP"} ${hide;kv:"pc light-green"}
+ .STRUCT_CMD=yes
PEERDIR(build/platform/clang)
}
@@ -4831,6 +4884,7 @@ macro LLVM_COMPILE_LL(Input, Output, Opts...) {
### Note: Unlike many other macros output argument goes first. Output name is used as is, no extension added.
macro LLVM_LINK(Output, Inputs...) {
.CMD=${CLANG_BC_ROOT}/bin/llvm-link ${input:Inputs} -o ${noauto;output:Output} ${hide;kv:"p LD"} ${hide;kv:"pc light-red"}
+ .STRUCT_CMD=yes
.SEM=custom_runs-ITEM && custom_runs-depends ${input:Inputs} && custom_runs-command ${LLVMLINK} ${input:Inputs} -o ${noauto;output:Output} && custom_runs-outputs ${noauto;output:Output}
PEERDIR(build/platform/clang)
}
@@ -4841,6 +4895,7 @@ macro LLVM_LINK(Output, Inputs...) {
### Note: Output name is used as is, no extension added.
macro LLVM_OPT(Input, Output, Opts...) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/llvm_opt_wrapper.py"} ${CLANG_BC_ROOT}/bin/opt ${input:Input} -o ${noauto;output:Output} $Opts ${hide;kv:"p OP"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
.SEM=custom_runs-ITEM && custom_runs-depends ${input:Input} && custom_runs-command ${LLVMOPT} ${input:Input} -o ${noauto;output:Output} $Opts && custom_runs-outputs ${noauto;output:Output}
PEERDIR(build/platform/clang)
}
@@ -4966,13 +5021,13 @@ YASM_FLAGS=
YASM_PREINCLUDES_VALUE=
# tag:yasm-specific
-macro _SRC_yasm_helper(SRC, PREINCLUDES[], SRCFLAGS...) {
- .CMD=${tool:"contrib/tools/yasm"} -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE $YASM_DEBUG_INFO $YASM_DEBUG_INFO_DISABLE_CACHE__NO_UID__ -D ${pre=_;suf=_:HARDWARE_TYPE} -D_YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE $YASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS -o ${output;suf=${OBJECT_SUF};noext:SRC} ${pre=-P :PREINCLUDES} ${hide;input:PREINCLUDES} ${SRC} ${hide;kv:"p AS"} ${hide;kv:"pc light-green"}
+macro _SRC_yasm_helper(SRC, SRCIN, PREINCLUDES[], SRCFLAGS...) {
+ .CMD=${tool:"contrib/tools/yasm"} -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} $_YASM_PLATFORM_FLAGS_VALUE $YASM_DEBUG_INFO $YASM_DEBUG_INFO_DISABLE_CACHE__NO_UID__ -D ${pre=_;suf=_:HARDWARE_TYPE} -D_YASM_ $ASM_PREFIX_VALUE $_YASM_PREDEFINED_FLAGS_VALUE $YASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS -o ${output;suf=${OBJECT_SUF};noext:SRC} ${pre=-P :PREINCLUDES} ${hide;input:PREINCLUDES} ${SRCIN} ${hide;kv:"p AS"} ${hide;kv:"pc light-green"}
}
# tag:yasm-specific
macro _SRC_yasm(SRC, PREINCLUDES[], SRCFLAGS...) {
- .CMD=$_SRC_yasm_helper(${input:SRC} $SRCFLAGS PREINCLUDES $PREINCLUDES)
+ .CMD=$_SRC_yasm_helper($SRC ${input:SRC} $SRCFLAGS PREINCLUDES $PREINCLUDES)
}
# tag:nasm-specific
@@ -4980,27 +5035,27 @@ NASM_FLAGS=
# tag:nasm-specific
macro _SRC_nasm_helper(SRC, SRCFLAGS...) {
- .CMD=${NASM_RESOURCE_GLOBAL}/bin/nasm -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} -D ${pre=_;suf=_:HARDWARE_TYPE} $NASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS -o ${output;suf=${OBJECT_SUF};noext:SRC} ${SRC} ${hide;kv:"p AS"} ${hide;kv:"pc light-green"}
+ .CMD=${NASM_RESOURCE_GLOBAL}/bin/nasm -f ${_YASM_FMT_VALUE}${HARDWARE_ARCH} -D ${pre=_;suf=_:HARDWARE_TYPE} $NASM_FLAGS ${pre=-I :_ASM__INCLUDE} $SRCFLAGS -o ${output;suf=${OBJECT_SUF};noext:SRC} ${input:SRC} ${hide;kv:"p AS"} ${hide;kv:"pc light-green"}
}
# tag:nasm-specific
macro _SRC_nasm(SRC, PREINCLUDES[], SRCFLAGS...) {
- .CMD=$_SRC_nasm_helper(${input:SRC}, $SRCFLAGS)
+ .CMD=$_SRC_nasm_helper($SRC $SRCFLAGS)
}
# tag:src-processing
when ($USE_NASM_ASSEMBLER == "yes") {
- _SRC_ASM_CMDLINE=$_SRC_nasm($SRC $SRCFLAGS)
+ _SRC_ASM_CMDLINE=$_SRC_nasm($SRC $SRCFLAGS PREINCLUDES $PREINCLUDES)
}
elsewhen ($USE_YASM_ASSEMBLER == "yes") {
- _SRC_ASM_CMDLINE=$_SRC_yasm($SRC $SRCFLAGS)
+ _SRC_ASM_CMDLINE=$_SRC_yasm($SRC $SRCFLAGS PREINCLUDES $PREINCLUDES)
}
otherwise {
_SRC_ASM_CMDLINE=
}
# tag:src-processing
-macro _SRC_ASM(SRC, SRCFLAGS...) {
+macro _SRC_ASM(SRC, PREINCLUDES[], SRCFLAGS...) {
.CMD=$_SRC_ASM_CMDLINE
}
@@ -5065,7 +5120,7 @@ macro RUN_ANTLR4_GO(GRAMMAR, DEPS[], LISTENER?"GRAMMAR":"_ANTLR4_EMPTY", VISITOR
###
### Macro to invoke ANTLR4 generator (Python). The Python3 will be used for PY3_LIBRARY/PY3_PROGRAM/PY3TEST, Python2 will be used in all other cases.
macro RUN_ANTLR4_PYTHON(GRAMMAR, LISTENER?"GRAMMAR":"_ANTLR4_EMPTY", VISITOR?"GRAMMAR":"_ANTLR4_EMPTY", SUBDIR=".", EXTRA_OUTS[], _ANTLR4_EMPTY="", Args...) {
- RUN_ANTLR4(${GRAMMAR} -Dlanguage=$ANTLR_PYTHON -o ${BINDIR}/${SUBDIR} ${_ANTLR4_VISITOR_$VISITOR} ${_ANTLR4_LISTENER_$LISTENER} ${Args} CWD ${BINDIR} IN ${GRAMMAR} OUT_NOAUTO ${nopath;noext;pre=${SUBDIR}/;suf=Lexer.py:GRAMMAR} ${nopath;noext;pre=${SUBDIR}/;suf=Parser.py:GRAMMAR} ${nopath;noext;pre=${SUBDIR}/;suf=Listener.py:$LISTENER} ${nopath;noext;pre=${SUBDIR}/;suf=Visitor.py:$VISITOR} ${pre=${SUBDIR}/:EXTRA_OUTS})
+ RUN_ANTLR4(${GRAMMAR} -Dlanguage=$ANTLR_PYTHON -o ${BINDIR}/${SUBDIR} ${_ANTLR4_VISITOR_$VISITOR} ${_ANTLR4_LISTENER_$LISTENER} ${Args} CWD ${BINDIR} IN ${GRAMMAR} OUT_NOAUTO ${pre=${SUBDIR}/;suf=Lexer.py;nopath;noext:GRAMMAR} ${pre=${SUBDIR}/;suf=Parser.py;nopath;noext:GRAMMAR} ${pre=${SUBDIR}/;suf=Listener.py;nopath;noext:$LISTENER} ${pre=${SUBDIR}/;suf=Visitor.py;nopath;noext:$VISITOR} ${pre=${SUBDIR}/:EXTRA_OUTS})
PEERDIR(contrib/python/antlr4)
}
@@ -5111,6 +5166,7 @@ macro TASKLET_REG(Name, Lang, Impl, Includes...) {
}
.CMD=$YMAKE_PYTHON ${input:"build/scripts/gen_tasklet_reg.py"} $Name -l $Lang -i $Impl ${noauto;output;suf=.task.cpp:Name} $Includes ${hide;output_include:Includes} $TASKLET_REG_INCLUDES ${hide;kv:"p TT"} ${hide;kv:"pc yellow"}
+ .STRUCT_CMD=yes
SRCS(GLOBAL $Name.task.cpp)
}
@@ -5143,6 +5199,7 @@ otherwise {
### TODO(DEVTOOLS-9000) proper implementation needed
macro _EXPOSE(Args...) {
.CMD=$YMAKE_PYTHON ${input:"build/scripts/touch.py"} ${output;suf=$_HASH_HELPER($Args).ya_exposed:"empty_"} ${hide;input:Args}
+ .STRUCT_CMD=yes
}
# tag:internal
@@ -5600,11 +5657,13 @@ macro _SRC("xib", SRC, SRCFLAGS...) {
# tag:src-processing
macro _SRC("msg", SRC, SRCFLAGS...) {
.CMD=$ROS_MSG_CMD($SRC)
+ .STRUCT_CMD=yes
}
# tag:src-processing
macro _SRC("srv", SRC, SRCFLAGS...) {
.CMD=$ROS_SRV_CMD($SRC)
+ .STRUCT_CMD=yes
}
ACTOOL_PATH=$XCODE_TOOLS_ROOT_RESOURCE_GLOBAL/Xcode/Contents/Developer/usr/bin/ibtool
@@ -5900,6 +5959,7 @@ macro HEADERS(EXCLUDE[], Dirs...) {
### Note: Generated AST files generated into BINDIR according to corresponding .cpp file names listed in SOURCES parameter.
macro CLANG_EMIT_AST_CXX_RUN_TOOL(SOURCES[], OPTS[], Tool, IN{input}[], IN_NOPARSE{input}[], OUT{output}[], OUT_NOAUTO{output}[], TOOL{tool}[], OUTPUT_INCLUDES[], INDUCED_DEPS[], IN_DEPS[], STDOUT="", STDOUT_NOAUTO="", CWD="", ENV[], Args...) {
.CMD=${cwd:BINDIR} $YMAKE_PYTHON ${input:"build/scripts/clang_wrapper.py"} $WINDOWS ${CLANG_RESOURCE_GLOBAL}/bin/clang++ ${pre=-I:_C__INCLUDE} $CXXFLAGS $C_FLAGS_PLATFORM $LLVM_OPTS -emit-ast -c ${input:SOURCES} ${hide;tmp;suf=.ast;noext;nopath:SOURCES} $OPTS ${hide;kv:"p ST"} ${hide;kv:"pc light-green"} && ${cwd:CWD} ${env:ENV} ${tool:Tool} $Args ${hide;input:IN} ${hide;context=TEXT;input=TEXT:IN_NOPARSE} ${hide;input:IN_DEPS} ${hide;output_include:OUTPUT_INCLUDES} $INDUCED_DEPS ${hide;tool:TOOL} ${hide;output:OUT} ${hide;noauto;output:OUT_NOAUTO} ${stdout;output:STDOUT} ${stdout;noauto;output:STDOUT_NOAUTO} ${hide;kv:"p PR"} ${hide;kv:"pc yellow"} ${hide;kv:"show_out"}
+ .STRUCT_CMD=yes
PEERDIR(build/platform/clang)
}
@@ -5955,6 +6015,7 @@ macro LINK_EXCLUDE_LIBRARIES(Libs...) {
###
macro GENERATE_IMPLIB(Lib, Path, SONAME="", DLOPEN_CALLBACK="_") {
.CMD=${tool:"contrib/tools/implib"} --target $HARDWARE_TYPE --dlopen-callback $DLOPEN_CALLBACK --outdir $BINDIR ${pre=--library-load-name :SONAME} $Path ${hide;output;suf=.init.c;nopath:Path} ${hide;output;suf=.tramp.S;nopath:Path}
+ .STRUCT_CMD=yes
LINK_EXCLUDE_LIBRARIES($Lib)
}