mirror of
https://github.com/LuaJIT/LuaJIT.git
synced 2025-04-19 21:43:27 +00:00
Add an option to disable clib support in ffi
This commit is contained in:
parent
d0e88930dd
commit
3dced52147
@ -355,6 +355,8 @@ LJLIB_PUSH("ffi") LJLIB_SET(__metatable)
|
||||
|
||||
/* -- C library metamethods ----------------------------------------------- */
|
||||
|
||||
#ifndef LUAJIT_DISABLE_CLIB
|
||||
|
||||
#define LJLIB_MODULE_ffi_clib
|
||||
|
||||
/* Index C library by a name. */
|
||||
@ -425,6 +427,8 @@ LJLIB_CF(ffi_clib___gc)
|
||||
|
||||
#include "lj_libdef.h"
|
||||
|
||||
#endif
|
||||
|
||||
/* -- Callback function metamethods --------------------------------------- */
|
||||
|
||||
#define LJLIB_MODULE_ffi_callback
|
||||
@ -808,9 +812,13 @@ LJLIB_PUSH(top-5) LJLIB_SET(!) /* Store clib metatable in func environment. */
|
||||
|
||||
LJLIB_CF(ffi_load)
|
||||
{
|
||||
#ifndef LUAJIT_DISABLE_CLIB
|
||||
GCstr *name = lj_lib_checkstr(L, 1);
|
||||
int global = (L->base+1 < L->top && tvistruecond(L->base+1));
|
||||
lj_clib_load(L, tabref(curr_func(L)->c.env), name, global);
|
||||
#else
|
||||
lj_err_callermsg(L, "dlopen failed");
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -854,12 +862,16 @@ LUALIB_API int luaopen_ffi(lua_State *L)
|
||||
LJ_LIB_REG(L, NULL, ffi_meta);
|
||||
/* NOBARRIER: basemt is a GC root. */
|
||||
setgcref(basemt_it(G(L), LJ_TCDATA), obj2gco(tabV(L->top-1)));
|
||||
#ifndef LUAJIT_DISABLE_CLIB
|
||||
LJ_LIB_REG(L, NULL, ffi_clib);
|
||||
#endif
|
||||
LJ_LIB_REG(L, NULL, ffi_callback);
|
||||
/* NOBARRIER: the key is new and lj_tab_newkey() handles the barrier. */
|
||||
settabV(L, lj_tab_setstr(L, cts->miscmap, &cts->g->strempty), tabV(L->top-1));
|
||||
L->top--;
|
||||
#ifndef LUAJIT_DISABLE_CLIB
|
||||
lj_clib_default(L, tabV(L->top-1)); /* Create ffi.C default namespace. */
|
||||
#endif
|
||||
lua_pushliteral(L, LJ_OS_NAME);
|
||||
lua_pushliteral(L, LJ_ARCH_NAME);
|
||||
LJ_LIB_REG(L, NULL, ffi); /* Note: no global "ffi" created! */
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
#include "lj_obj.h"
|
||||
|
||||
#if LJ_HASFFI
|
||||
#if LJ_HASFFI && !defined(LUAJIT_DISABLE_CLIB)
|
||||
|
||||
#include "lj_gc.h"
|
||||
#include "lj_err.h"
|
||||
|
Loading…
Reference in New Issue
Block a user