diff options
author | vpozdyayev <[email protected]> | 2025-06-11 04:36:40 +0300 |
---|---|---|
committer | vpozdyayev <[email protected]> | 2025-06-11 04:52:32 +0300 |
commit | 68ce4f15db0a22fea23ad99e695f8a98f356ccec (patch) | |
tree | d8abe100e1fc3896eda546d12d0fb00fd4549cbc | |
parent | 71abbaff6c6f23d60e848fe31ead83f018fe117d (diff) |
Enable the new command engine in miscellaneous macros, batch #2, v.2
commit_hash:b48f0169c21a41cdbc428f6cd9240e6b26963b6b
-rw-r--r-- | build/conf/bison_lex.conf | 19 | ||||
-rw-r--r-- | build/conf/docs.conf | 1 | ||||
-rw-r--r-- | build/conf/fbs.conf | 10 | ||||
-rw-r--r-- | build/conf/go.conf | 28 | ||||
-rw-r--r-- | build/conf/java.conf | 7 | ||||
-rw-r--r-- | build/conf/project_specific/yt.conf | 1 | ||||
-rw-r--r-- | build/conf/proto.conf | 25 | ||||
-rw-r--r-- | build/conf/python.conf | 8 | ||||
-rw-r--r-- | build/conf/swig.conf | 6 | ||||
-rw-r--r-- | build/ymake.core.conf | 107 |
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) } |