Skip to content

Commit 260fc0f

Browse files
author
pg
committed
Untitled commit
commit_hash:738c0e3b90d7c428015a34c302c8bcba5b98b759
1 parent 680029a commit 260fc0f

File tree

3 files changed

+24
-6
lines changed

3 files changed

+24
-6
lines changed

build/conf/linkers/ld.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ LINK_SCRIPT_EXE_FLAGS=
213213

214214
REAL_LINK_EXE_CMDLINE =\
215215
$YMAKE_PYTHON ${input:"build/scripts/link_exe.py"} \
216+
REAL_LINK_EXE_CMDLINE+=--start-plugins ${ext=.pyplugin:SRCS_GLOBAL} --end-plugins
216217
REAL_LINK_EXE_CMDLINE+=--clang-ver $CLANG_VER
217218
REAL_LINK_EXE_CMDLINE+=$_LD_LINKER_OUTPUT
218219
REAL_LINK_EXE_CMDLINE+=\

build/scripts/link_exe.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import os
33
import os.path
44
import sys
5+
import json
56
import subprocess
67
import optparse
78
import textwrap
@@ -321,7 +322,7 @@ def fix_blas_resolving(cmd):
321322
return cmd
322323

323324

324-
def parse_args():
325+
def parse_args(args):
325326
parser = optparse.OptionParser()
326327
parser.disable_interspersed_args()
327328
parser.add_option('--musl', action='store_true')
@@ -341,11 +342,23 @@ def parse_args():
341342
parser.add_option('--whole-archive-libs', action='append')
342343
parser.add_option('--exclude-libs', action='append')
343344
thinlto_cache.add_options(parser)
344-
return parser.parse_args()
345+
return parser.parse_args(args)
345346

346347

347348
if __name__ == '__main__':
348-
opts, args = parse_args()
349+
args = sys.argv[1:]
350+
ib = args.index('--start-plugins')
351+
ie = args.index('--end-plugins')
352+
plugins = args[ib + 1:ie]
353+
args = args[:ib] + args[ie + 1:]
354+
355+
for p in plugins:
356+
res = subprocess.check_output([sys.executable, p] + args).decode().strip()
357+
358+
if res:
359+
args = json.loads(res)
360+
361+
opts, args = parse_args(args)
349362
args = pcf.skip_markers(args)
350363

351364
cmd = fix_blas_resolving(args)

build/ymake.core.conf

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,7 +1077,7 @@ macro LINK_EXEC_DYN_LIB_IMPL(WHOLE_ARCHIVE_PEERS...) {
10771077
###
10781078
### The base of all linkable modules: programs, DLLs etc. Describes common linking logic.
10791079
module _LINK_UNIT: _BASE_UNIT {
1080-
.EXTS=.o .obj .supp .sbom .tidyjson .ld .a .lib
1080+
.EXTS=.o .obj .supp .sbom .tidyjson .ld .a .lib .pyplugin
10811081
.CMD=$LINK_EXE
10821082
.STRUCT_CMD=yes
10831083
.ALLOWED=EXTRALIBS OBJADDE_GLOBAL RESOURCE_FILES
@@ -1800,7 +1800,7 @@ module _LIBRARY: _BASE_UNIT {
18001800
.STRUCT_CMD=yes
18011801
.NODE_TYPE=Library
18021802
.PEERDIR_POLICY=as_include
1803-
.EXTS=.o .obj .a .mf .supp .sbom .tidyjson .ld .lib .sdcmeta
1803+
.EXTS=.o .obj .a .mf .supp .sbom .tidyjson .ld .lib .sdcmeta .pyplugin
18041804
.ALLOWED=GRPC USE_SKIFF EXTRALIBS OBJADDE_GLOBAL RESOURCE_FILES
18051805
.GLOBAL=USER_CFLAGS USER_CXXFLAGS USER_CONLYFLAGS LDFLAGS SRCS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB _LINK_EXCLUDE_LIBRARIES
18061806
.RESTRICTED=ALLOCATOR SIZE TAG DATA TEST_DATA DEPENDS FORK_TESTS FORK_SUBTESTS SPLIT_FACTOR TEST_CWD RUN TIMEOUT SPLIT_DWARF
@@ -1951,7 +1951,7 @@ module RESOURCES_LIBRARY: _BARE_UNIT {
19511951
.ALIASES=EXTRALIBS=PY_EXTRALIBS
19521952
.NODE_TYPE=Library
19531953
.PEERDIR_POLICY=as_include
1954-
.EXTS=.o .obj .a .mf .supp .sbom .tidyjson .ld .lib
1954+
.EXTS=.o .obj .a .mf .supp .sbom .tidyjson .ld .lib .pyplugin
19551955
.GLOBAL=USER_CFLAGS USER_CXXFLAGS USER_CONLYFLAGS LDFLAGS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB SRCS
19561956

19571957

@@ -3136,6 +3136,10 @@ macro _SRC_f_old(SRC, SRCFLAGS...) {
31363136
.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"}
31373137
}
31383138

3139+
macro LD_PLUGIN(name) {
3140+
SRCS(GLOBAL $name.pyplugin)
3141+
}
3142+
31393143
USE_FLANG=no
31403144

31413145
when ($USE_FLANG == "yes") {

0 commit comments

Comments
 (0)