Add -bundle_loader
to mjit compilation args on macOS
This commit is contained in:
parent
184fd94d7e
commit
00f411c58a
Notes:
git
2022-08-04 16:29:44 +09:00
12
mjit.c
12
mjit.c
@ -811,8 +811,16 @@ start_compiling_c_to_so(const char *c_file, const char *so_file)
|
|||||||
# endif
|
# endif
|
||||||
c_file, NULL
|
c_file, NULL
|
||||||
};
|
};
|
||||||
char **args = form_args(7, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS, cc_added_args,
|
|
||||||
so_args, CC_LIBS, CC_DLDFLAGS_ARGS, CC_LINKER_ARGS);
|
# if defined(__MACH__)
|
||||||
|
extern VALUE rb_libruby_selfpath;
|
||||||
|
const char *loader_args[] = {"-bundle_loader", StringValuePtr(rb_libruby_selfpath), NULL};
|
||||||
|
# else
|
||||||
|
const char *loader_args[] = {NULL};
|
||||||
|
# endif
|
||||||
|
|
||||||
|
char **args = form_args(8, CC_LDSHARED_ARGS, CC_CODEFLAG_ARGS, cc_added_args,
|
||||||
|
so_args, loader_args, CC_LIBS, CC_DLDFLAGS_ARGS, CC_LINKER_ARGS);
|
||||||
if (args == NULL) return -1;
|
if (args == NULL) return -1;
|
||||||
|
|
||||||
rb_vm_t *vm = GET_VM();
|
rb_vm_t *vm = GET_VM();
|
||||||
|
18
ruby.c
18
ruby.c
@ -22,7 +22,7 @@
|
|||||||
# include <sys/cygwin.h>
|
# include <sys/cygwin.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(LOAD_RELATIVE) && defined(HAVE_DLADDR)
|
#if (defined(LOAD_RELATIVE) || defined(__MACH__)) && defined(HAVE_DLADDR)
|
||||||
# include <dlfcn.h>
|
# include <dlfcn.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -534,7 +534,7 @@ str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to)
|
|||||||
|
|
||||||
void ruby_init_loadpath(void);
|
void ruby_init_loadpath(void);
|
||||||
|
|
||||||
#if defined(LOAD_RELATIVE)
|
#if defined(LOAD_RELATIVE) || defined(__MACH__)
|
||||||
static VALUE
|
static VALUE
|
||||||
runtime_libruby_path(void)
|
runtime_libruby_path(void)
|
||||||
{
|
{
|
||||||
@ -615,6 +615,10 @@ runtime_libruby_path(void)
|
|||||||
#define INITIAL_LOAD_PATH_MARK rb_intern_const("@gem_prelude_index")
|
#define INITIAL_LOAD_PATH_MARK rb_intern_const("@gem_prelude_index")
|
||||||
|
|
||||||
VALUE ruby_archlibdir_path, ruby_prefix_path;
|
VALUE ruby_archlibdir_path, ruby_prefix_path;
|
||||||
|
#if defined(__MACH__)
|
||||||
|
// A path to libruby.dylib itself or where it's statically linked to.
|
||||||
|
VALUE rb_libruby_selfpath;
|
||||||
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
ruby_init_loadpath(void)
|
ruby_init_loadpath(void)
|
||||||
@ -622,6 +626,14 @@ ruby_init_loadpath(void)
|
|||||||
VALUE load_path, archlibdir = 0;
|
VALUE load_path, archlibdir = 0;
|
||||||
ID id_initial_load_path_mark;
|
ID id_initial_load_path_mark;
|
||||||
const char *paths = ruby_initial_load_paths;
|
const char *paths = ruby_initial_load_paths;
|
||||||
|
#if defined(LOAD_RELATIVE) || defined(__MACH__)
|
||||||
|
VALUE libruby_path = runtime_libruby_path();
|
||||||
|
# if defined(__MACH__)
|
||||||
|
rb_libruby_selfpath = libruby_path;
|
||||||
|
rb_gc_register_address(&rb_libruby_selfpath);
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined LOAD_RELATIVE
|
#if defined LOAD_RELATIVE
|
||||||
#if !defined ENABLE_MULTIARCH
|
#if !defined ENABLE_MULTIARCH
|
||||||
# define RUBY_ARCH_PATH ""
|
# define RUBY_ARCH_PATH ""
|
||||||
@ -635,7 +647,7 @@ ruby_init_loadpath(void)
|
|||||||
size_t baselen;
|
size_t baselen;
|
||||||
const char *p;
|
const char *p;
|
||||||
|
|
||||||
sopath = runtime_libruby_path();
|
sopath = libruby_path;
|
||||||
libpath = RSTRING_PTR(sopath);
|
libpath = RSTRING_PTR(sopath);
|
||||||
|
|
||||||
p = strrchr(libpath, '/');
|
p = strrchr(libpath, '/');
|
||||||
|
Loading…
x
Reference in New Issue
Block a user