diff options
| author | ruki <[email protected]> | 2021-09-18 10:27:54 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2021-09-18 10:27:54 +0800 |
| commit | 73fc586b83edbbaf71f01ea893e47dc4ae1407ef (patch) | |
| tree | dea66de3b045100e40426b78be47458f0897e7d5 /xmake | |
| parent | aeeeca0fb547b157501045c0ddd44b0258619a2b (diff) | |
add getfenv and setfenv for lua
Diffstat (limited to 'xmake')
| -rw-r--r-- | xmake/core/_xmake_main.lua | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/xmake/core/_xmake_main.lua b/xmake/core/_xmake_main.lua index af9b51114..94045a2f5 100644 --- a/xmake/core/_xmake_main.lua +++ b/xmake/core/_xmake_main.lua @@ -36,6 +36,42 @@ xmake._WORKING_DIR = os.curdir() xmake._FEATURES = _FEATURES xmake._LUAJIT = _LUAJIT +-- init setfenv/getfenv for lua +if not getfenv then + function getfenv(fn) + local i = 1 + while true do + local name, val = debug.getupvalue(fn, i) + if name == "_ENV" then + return val + elseif not name then + break + end + i = i + 1 + end + end +end +if not setfenv then + function setfenv(fn, env) + local i = 1 + while true do + local name = debug.getupvalue(fn, i) + if name == "_ENV" then + debug.upvaluejoin(fn, i, (function() + return env + end), 1) + break + elseif not name then + break + end + + i = i + 1 + end + return fn + end +end + +-- load the given lua file function _loadfile_impl(filepath, mode, opt) -- init options |
