diff options
author | pg <pg@yandex-team.com> | 2025-02-26 20:01:13 +0300 |
---|---|---|
committer | pg <pg@yandex-team.com> | 2025-02-26 20:56:14 +0300 |
commit | 73f2e377bb4a5061f08f495a61340b482d355565 (patch) | |
tree | 8cd52119cd045f030f4c35dc718229d382d2f233 | |
parent | 725f044263c17a834658ee8bc14d2839d829914b (diff) | |
download | ydb-73f2e377bb4a5061f08f495a61340b482d355565.tar.gz |
v2
commit_hash:b1ef83d5b70569b92f918e825d5e290cc8e3c886
-rw-r--r-- | build/conf/go.conf | 2 | ||||
-rw-r--r-- | build/scripts/link_o.py | 29 |
2 files changed, 30 insertions, 1 deletions
diff --git a/build/conf/go.conf b/build/conf/go.conf index 4862f881c1..1b1449b631 100644 --- a/build/conf/go.conf +++ b/build/conf/go.conf @@ -218,7 +218,7 @@ macro _GO_COMPILE_CGO1(NAME, FLAGS[], FILES...) { # 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 ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}: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 ${tmp;noauto;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"} + .CMD=${hide:_CGO_FAKEID} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} $CGO_CFLAGS_VALUE ${input;tobindir:"_cgo_main.c"} -c -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} && $YMAKE_PYTHON ${input:"build/scripts/link_o.py"} $C_COMPILER $C_FLAGS_PLATFORM ${pre=-I:_C__INCLUDE} -o ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_"} $LDFLAGS $LDFLAGS_GLOBAL $CGO2_LDFLAGS_VALUE ${hide;input:"_cgo_export.h"} ${tmp;noauto;suf=${OBJECT_SUF}:"_cgo_main.c"} ${input;suf=${OBJECT_SUF}:"_cgo_export.c"} ${input;nopath;noext;suf=.cgo2.c${OBJECT_SUF}: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 ${tmp;noauto;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"} _USE_LINKER() } diff --git a/build/scripts/link_o.py b/build/scripts/link_o.py new file mode 100644 index 0000000000..298f7ee16c --- /dev/null +++ b/build/scripts/link_o.py @@ -0,0 +1,29 @@ +import subprocess +import sys +import os + + +def flt(args): + for a in args: + if a == '-o': + yield '-Wl,-r' + yield '-fuse-ld=lld' + yield '-nodefaultlibs' + yield '-nostartfiles' + yield '-Wl,-no-pie' + yield '-o' + elif a.endswith('.o'): + yield a + elif '--ld' in a: + yield a + elif '--target' in a: + yield a + + +if '-apple-macos' in str(sys.argv): + cmd = sys.argv[1:] +else: + cmd = [sys.argv[1]] + list(flt(sys.argv[2:])) + + +subprocess.check_call(cmd) |