aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorpg <pg@yandex-team.com>2025-02-11 19:28:55 +0300
committerpg <pg@yandex-team.com>2025-02-11 19:46:13 +0300
commit9c9d92fa09369c85d2acc077d598f79a841b7153 (patch)
tree673e8528d7345b711709466a3ca44c76720c11c7 /build
parent0403e4ce9782569601e2cb7d688c2e778665c5c1 (diff)
downloadydb-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.conf11
-rw-r--r--build/scripts/link_lib.py16
-rw-r--r--build/ymake.core.conf4
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)
}