diff options
-rw-r--r-- | SConstruct | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/SConstruct b/SConstruct index 450a309c6f5..5b11393eded 100644 --- a/SConstruct +++ b/SConstruct @@ -4965,7 +4965,10 @@ env.AddPackageNameAlias( name="mh-debugsymbols", ) -def rpath_generator(env, source, target, for_signature): +env['RPATH_ESCAPED_DOLLAR_ORIGIN'] = '\\$$$$ORIGIN' + + +def prefix_libdir_rpath_generator(env, source, target, for_signature): # If the PREFIX_LIBDIR has an absolute path, we will use that directly as # RPATH because that indicates the final install destination of the libraries. prefix_libdir = env.subst('$PREFIX_LIBDIR') @@ -4977,16 +4980,18 @@ def rpath_generator(env, source, target, for_signature): lib_rel = os.path.relpath(prefix_libdir, env.subst('$PREFIX_BINDIR')) if env['PLATFORM'] == 'posix':\ - return [env.Literal(f"\\$$ORIGIN/{lib_rel}")] + return f"$RPATH_ESCAPED_DOLLAR_ORIGIN/{lib_rel}" if env['PLATFORM'] == 'darwin': - return [f"@loader_path/{lib_rel}",] + return f"@loader_path/{lib_rel}" + -env['RPATH_GENERATOR'] = rpath_generator +if get_option('link-model').startswith('dynamic'): + env['PREFIX_LIBDIR_RPATH_GENERATOR'] = prefix_libdir_rpath_generator if env['PLATFORM'] == 'posix': env.AppendUnique( - RPATH='$RPATH_GENERATOR', + RPATH=['$PREFIX_LIBDIR_RPATH_GENERATOR'], LINKFLAGS=[ # Most systems *require* -z,origin to make origin work, but android # blows up at runtime if it finds DF_ORIGIN_1 in DT_FLAGS_1. @@ -5007,12 +5012,12 @@ elif env['PLATFORM'] == 'darwin': # so we setup RPATH and LINKFLAGS ourselves. env['RPATHPREFIX'] = '-Wl,-rpath,' env['RPATHSUFFIX'] = '' - env['RPATH'] = '$RPATH_GENERATOR' env.AppendUnique( LINKFLAGS="${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}", SHLINKFLAGS=[ "-Wl,-install_name,@rpath/${TARGET.file}", ], + RPATH=['$PREFIX_LIBDIR_RPATH_GENERATOR'], ) env.Default(env.Alias("install-default")) |