diff options
author | pg <pg@yandex-team.com> | 2025-02-11 19:28:55 +0300 |
---|---|---|
committer | pg <pg@yandex-team.com> | 2025-02-11 19:46:13 +0300 |
commit | 9c9d92fa09369c85d2acc077d598f79a841b7153 (patch) | |
tree | 673e8528d7345b711709466a3ca44c76720c11c7 /build | |
parent | 0403e4ce9782569601e2cb7d688c2e778665c5c1 (diff) | |
download | ydb-9c9d92fa09369c85d2acc077d598f79a841b7153.tar.gz |
Add ability to postprocess static libraries during the build.
commit_hash:792b08e2ac7c31269c1d0f21ab6ec2e062d67643
Diffstat (limited to 'build')
-rw-r--r-- | build/conf/linkers/ld.conf | 11 | ||||
-rw-r--r-- | build/scripts/link_lib.py | 16 | ||||
-rw-r--r-- | build/ymake.core.conf | 4 |
3 files changed, 29 insertions, 2 deletions
diff --git a/build/conf/linkers/ld.conf b/build/conf/linkers/ld.conf index 08f17a840f..2aa0f93b60 100644 --- a/build/conf/linkers/ld.conf +++ b/build/conf/linkers/ld.conf @@ -345,15 +345,22 @@ LINK_EXEC_DYN_LIB=\ $DWARF_COMMAND && \ $LINK_ADDITIONAL_SECTIONS_COMMAND +_LD_ARCHIVER_KV_PLUGIN= +when ($_AR_PLUGIN != "") { + _LD_ARCHIVER_KV_PLUGIN=--plugin ${input:_AR_PLUGIN} +} + _LD_LINK_LIB_EXTRA_INPUT= _LD_TAIL_LINK_LIB=$AUTO_INPUT $_LD_LINK_LIB_EXTRA_INPUT ${hide;kv:"p AR"} $TOOLCHAIN_ENV ${hide;kv:"pc light-red"} ${hide;kv:"show_out"} -_LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/link_lib.py"} ${quo:AR_TOOL} $AR_TYPE $_LD_LLVM_AR_FORMAT $ARCADIA_BUILD_ROOT $_LD_AR_PLUGIN +_LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/link_lib.py"} ${quo:AR_TOOL} $AR_TYPE $_LD_LLVM_AR_FORMAT $ARCADIA_BUILD_ROOT $_LD_AR_PLUGIN -- $_LD_ARCHIVER_KV_PLUGIN -- + when ($MAPSMOBI_BUILD_TARGET == "yes") { _LD_ARCHIVER+= "no-openssl3" -} +} otherwise { _LD_ARCHIVER+= "enable-openssl3" } + _LD_LIB_GENERATE_MF=$GENERATE_MF && when ($TIDY == "yes") { _LD_ARCHIVER=$YMAKE_PYTHON ${input:"build/scripts/clang_tidy_arch.py"} --source-root $ARCADIA_ROOT --build-root $ARCADIA_BUILD_ROOT --output-file diff --git a/build/scripts/link_lib.py b/build/scripts/link_lib.py index 388f82f870..b792540fd0 100644 --- a/build/scripts/link_lib.py +++ b/build/scripts/link_lib.py @@ -1,12 +1,25 @@ +from __future__ import print_function + import sys import subprocess import tempfile import os import shutil +import argparse class Opts(object): def __init__(self, args): + kvs = args.index('--') + kve = args.index('--', kvs + 1) + kv = args[kvs + 1:kve] + args = args[:kvs] + args[kve + 1:] + + parser = argparse.ArgumentParser() + parser.add_argument('--plugin') + kvargs = parser.parse_args(kv) + + self.ar_plugin = kvargs.plugin self.archiver = args[0] self.arch_type = args[1] self.llvm_ar_format = args[2] @@ -165,3 +178,6 @@ if __name__ == "__main__": if opts.enable_openssl3 != 'no-openssl3' and os.path.basename(opts.output) in ['libcontrib-libs-openssl.a', 'liblibs-openssl-crypto.a']: rename_syms(os.path.dirname(opts.archiver) + '/', opts.output) + + if opts.ar_plugin: + subprocess.check_call([sys.executable, opts.ar_plugin, opts.output, '--'] + sys.argv[1:]) diff --git a/build/ymake.core.conf b/build/ymake.core.conf index 9af1d61411..e29b47c469 100644 --- a/build/ymake.core.conf +++ b/build/ymake.core.conf @@ -3136,6 +3136,10 @@ macro _SRC_f_old(SRC, SRCFLAGS...) { .CMD=$YMAKE_PYTHON ${input:"build/scripts/f2c.py"} -t ${tool:"contrib/tools/f2c"} -c ${input:SRC} -o ${output:SRC.c} ${hide;output_include:"f2c.h"} ${hide;kv:"p FT"} ${hide;kv:"pc light-green"} } +macro AR_PLUGIN(name) { + SET(_AR_PLUGIN $name.pyplugin) +} + macro LD_PLUGIN(name) { SRCS(GLOBAL $name.pyplugin) } |