|
@@ -1103,6 +1103,8 @@ module _LINK_UNIT: _BASE_UNIT {
|
|
|
LINK_SCRIPT_EXE_FLAGS+=--objcopy-exe $OBJCOPY_TOOL
|
|
|
}
|
|
|
|
|
|
+ LINK_SCRIPT_EXE_FLAGS += ${pre=--exclude-libs :_LINK_EXCLUDE_LIBRARIES_GLOBAL}
|
|
|
+
|
|
|
when ($OPENSOURCE == "yes" && $AUTOCHECK == "yes") {
|
|
|
# FIXME: Replace AUTOCHECK == yes with _not a host platform_ check after YMAKE-218
|
|
|
MODULE_LICENSES_RESTRICTION_TYPES = ALLOW_ONLY
|
|
@@ -1137,7 +1139,7 @@ macro ADD_CLANG_TIDY() {
|
|
|
module _BASE_PROGRAM: _LINK_UNIT {
|
|
|
.SYMLINK_POLICY=EXE
|
|
|
.ALLOWED=INDUCED_DEPS WHOLE_ARCHIVE
|
|
|
- .GLOBAL=LDFLAGS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB
|
|
|
+ .GLOBAL=LDFLAGS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB _LINK_EXCLUDE_LIBRARIES
|
|
|
SET(MODULE_TYPE PROGRAM)
|
|
|
SET(MODULE_LANG CPP)
|
|
|
FORCE_COVERAGE_ENABLED=yes
|
|
@@ -1780,7 +1782,7 @@ module _LIBRARY: _BASE_UNIT {
|
|
|
.PEERDIR_POLICY=as_include
|
|
|
.EXTS=.o .obj .a .mf .supp .sbom .tidyjson .ld .lib .sdcmeta
|
|
|
.ALLOWED=GRPC USE_SKIFF EXTRALIBS OBJADDE_GLOBAL RESOURCE_FILES
|
|
|
- .GLOBAL=USER_CFLAGS USER_CXXFLAGS USER_CONLYFLAGS LDFLAGS SRCS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB
|
|
|
+ .GLOBAL=USER_CFLAGS USER_CXXFLAGS USER_CONLYFLAGS LDFLAGS SRCS _WHOLE_ARCHIVE_LIBS_VALUE RPATH OBJADDE_LIB _LINK_EXCLUDE_LIBRARIES
|
|
|
.RESTRICTED=ALLOCATOR SIZE TAG DATA TEST_DATA DEPENDS FORK_TESTS FORK_SUBTESTS SPLIT_FACTOR TEST_CWD RUN TIMEOUT SPLIT_DWARF
|
|
|
.ALIASES=EXTRALIBS=PY_EXTRALIBS
|
|
|
.FINAL_TARGET=no
|
|
@@ -5858,3 +5860,25 @@ macro TOOLCHAIN(Name) {
|
|
|
macro WITHOUT_VERSION() {
|
|
|
ENABLE(SKIP_VERSION_REQUIREMENTS)
|
|
|
}
|
|
|
+
|
|
|
+### @usage: LINK_EXCLUDE_LIBRARIES(Libs...)
|
|
|
+###
|
|
|
+### Exclude specified external dynamic libraries from linker command
|
|
|
+###
|
|
|
+### May be used to implement shims/mocks, e.g. a lazy loader
|
|
|
+###
|
|
|
+### @example:
|
|
|
+###
|
|
|
+### LIBRARY()
|
|
|
+###
|
|
|
+### SRCS(
|
|
|
+### # provide some shim/mock implementation for libcuda.so
|
|
|
+### )
|
|
|
+###
|
|
|
+### LINK_EXCLUDE_LIBRARIES(cuda)
|
|
|
+###
|
|
|
+### END()
|
|
|
+###
|
|
|
+macro LINK_EXCLUDE_LIBRARIES(Libs...) {
|
|
|
+ SET_APPEND(_LINK_EXCLUDE_LIBRARIES_GLOBAL $Libs)
|
|
|
+}
|