working on builder
This commit is contained in:
parent
363b34fff4
commit
91d1145e61
@ -98,6 +98,8 @@ local date_selected = 0
|
|||||||
local sel_time = os.date ("*t")
|
local sel_time = os.date ("*t")
|
||||||
local sel_date = sel_time
|
local sel_date = sel_time
|
||||||
|
|
||||||
|
local popup_active = ffi.new("int[1]")
|
||||||
|
|
||||||
-- --------------------------------------------------------------------------------------
|
-- --------------------------------------------------------------------------------------
|
||||||
|
|
||||||
local function draw_demo_ui(ctx)
|
local function draw_demo_ui(ctx)
|
||||||
@ -822,7 +824,6 @@ local function draw_demo_ui(ctx)
|
|||||||
|
|
||||||
color = ffi.new("struct nk_color[1]", {{255,0,0, 255}})
|
color = ffi.new("struct nk_color[1]", {{255,0,0, 255}})
|
||||||
select = ffi.new("int[4]")
|
select = ffi.new("int[4]")
|
||||||
popup_active = ffi.new("int[1]")
|
|
||||||
inp = ctx[0].input
|
inp = ctx[0].input
|
||||||
bounds = ffi.new("struct nk_rect[1]")
|
bounds = ffi.new("struct nk_rect[1]")
|
||||||
|
|
||||||
@ -868,10 +869,10 @@ local function draw_demo_ui(ctx)
|
|||||||
|
|
||||||
if (nk.nk_contextual_begin(ctx, 0, nk.nk_vec2(350, 60), bounds) == true) then
|
if (nk.nk_contextual_begin(ctx, 0, nk.nk_vec2(350, 60), bounds) == true) then
|
||||||
nk.nk_layout_row_dynamic(ctx, 30, 4)
|
nk.nk_layout_row_dynamic(ctx, 30, 4)
|
||||||
color.r = nk.nk_propertyi(ctx, "#r", 0, color.r, 255, 1, 1)
|
color[0].r = nk.nk_propertyi(ctx, "#r", 0, color[0].r, 255, 1, 1)
|
||||||
color.g = nk.nk_propertyi(ctx, "#g", 0, color.g, 255, 1, 1)
|
color[0].g = nk.nk_propertyi(ctx, "#g", 0, color[0].g, 255, 1, 1)
|
||||||
color.b = nk.nk_propertyi(ctx, "#b", 0, color.b, 255, 1, 1)
|
color[0].b = nk.nk_propertyi(ctx, "#b", 0, color[0].b, 255, 1, 1)
|
||||||
color.a = nk.nk_propertyi(ctx, "#a", 0, color.a, 255, 1, 1)
|
color[0].a = nk.nk_propertyi(ctx, "#a", 0, color[0].a, 255, 1, 1)
|
||||||
nk.nk_contextual_end(ctx)
|
nk.nk_contextual_end(ctx)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -881,29 +882,29 @@ local function draw_demo_ui(ctx)
|
|||||||
nk.nk_label(ctx, "Popup:", nk.NK_TEXT_LEFT)
|
nk.nk_label(ctx, "Popup:", nk.NK_TEXT_LEFT)
|
||||||
nk.nk_layout_row_push(ctx, 50)
|
nk.nk_layout_row_push(ctx, 50)
|
||||||
if (nk.nk_button_label(ctx, "Popup")) then
|
if (nk.nk_button_label(ctx, "Popup")) then
|
||||||
popup_active = 1
|
popup_active[0] = 1
|
||||||
end
|
end
|
||||||
nk.nk_layout_row_end(ctx)
|
nk.nk_layout_row_end(ctx)
|
||||||
|
|
||||||
if (popup_active == 1) then
|
if (popup_active[0] == 1) then
|
||||||
|
|
||||||
local s = ffi.new("struct nk_rect[1]",{{20, 100, 220, 90}})
|
local s = ffi.new("struct nk_rect[1]",{{20, 100, 220, 90}})
|
||||||
if (nk.nk_popup_begin(ctx, nk.NK_POPUP_STATIC, "Error", 0, s) == true) then
|
if (nk.nk_popup_begin(ctx, nk.NK_POPUP_STATIC, "Error", 0, s[0]) == true) then
|
||||||
|
|
||||||
nk.nk_layout_row_dynamic(ctx, 25, 1)
|
nk.nk_layout_row_dynamic(ctx, 25, 1)
|
||||||
nk.nk_label(ctx, "A terrible error as occured", nk.NK_TEXT_LEFT)
|
nk.nk_label(ctx, "A terrible error as occured", nk.NK_TEXT_LEFT)
|
||||||
nk.nk_layout_row_dynamic(ctx, 25, 2)
|
nk.nk_layout_row_dynamic(ctx, 25, 2)
|
||||||
if (nk.nk_button_label(ctx, "OK")) then
|
if (nk.nk_button_label(ctx, "OK")) then
|
||||||
popup_active = 0
|
popup_active[0] = 0
|
||||||
nk.nk_popup_close(ctx)
|
nk.nk_popup_close(ctx)
|
||||||
end
|
end
|
||||||
if (nk.nk_button_label(ctx, "Cancel")) then
|
if (nk.nk_button_label(ctx, "Cancel")) then
|
||||||
popup_active = 0
|
popup_active[0] = 0
|
||||||
nk.nk_popup_close(ctx)
|
nk.nk_popup_close(ctx)
|
||||||
end
|
end
|
||||||
nk.nk_popup_end(ctx)
|
nk.nk_popup_end(ctx)
|
||||||
else
|
else
|
||||||
popup_active = nk.nk_false
|
popup_active[0] = nk.nk_false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
77
tools/build/rbuilder/utils/build.lua
Normal file
77
tools/build/rbuilder/utils/build.lua
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
-- A simple build script using lua to make a standalone exe using srlua
|
||||||
|
|
||||||
|
-- Use ffi for arch and os detection
|
||||||
|
local ffi = require("ffi")
|
||||||
|
|
||||||
|
-- ----------------------------------------------------------------------------------
|
||||||
|
local function run_cmd(command)
|
||||||
|
print(command)
|
||||||
|
local fh = io.popen( command, "r" )
|
||||||
|
if(fh) then
|
||||||
|
local output = fh:read("*a")
|
||||||
|
fh:close()
|
||||||
|
io.write(output)
|
||||||
|
print("[Success]")
|
||||||
|
else
|
||||||
|
print("[Error] Cannot execute command: "..command)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ----------------------------------------------------------------------------------
|
||||||
|
-- srlua and glue for each os
|
||||||
|
local plaform_cmds = {
|
||||||
|
["Windows"] = {
|
||||||
|
srlua = ".\\tools\\srlua\\win64\\srlua.exe",
|
||||||
|
glue = ".\\tools\\srlua\\win64\\glue.exe",
|
||||||
|
ext = ".exe",
|
||||||
|
sep = "\\",
|
||||||
|
luajit = ".\\bin\\win64\\luajit.exe",
|
||||||
|
src_dll = ".\\bin\\win64\\*.dll",
|
||||||
|
src_cfg = ".\\config",
|
||||||
|
},
|
||||||
|
["OSX"] = {
|
||||||
|
srlua = "./tools/srlua/macos/srlua",
|
||||||
|
glue = "./tools/srlua/macos/glue",
|
||||||
|
ext = "",
|
||||||
|
sep = "/",
|
||||||
|
luajit = "./bin/macos/luajit",
|
||||||
|
src_dll = "./bin/macos/*.dylib",
|
||||||
|
src_cfg = "./config",
|
||||||
|
},
|
||||||
|
["Linux"] = {
|
||||||
|
srlua = "./tools/srlua/linux/srlua",
|
||||||
|
glue = "./tools/srlua/linux/glue",
|
||||||
|
ext = "",
|
||||||
|
sep = "/",
|
||||||
|
luajit = "./bin/linux/luajit",
|
||||||
|
src_dll = "./bin/linux/*.so",
|
||||||
|
src_cfg = "./config",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
local cmds = plaform_cmds[ffi.os]
|
||||||
|
local outputfolder = "."..cmds.sep.."tools"..cmds.sep.."bin"..cmds.sep..string.lower(ffi.os)..cmds.sep
|
||||||
|
local outputexe = "minikeybd_"..ffi.os..cmds.ext
|
||||||
|
|
||||||
|
-- Have to build a bytecode "chunk" first.
|
||||||
|
local buildchunk = cmds.luajit.." ."..cmds.sep.."tools"..cmds.sep.."combine.lua "
|
||||||
|
buildchunk = buildchunk.."."..cmds.sep.."lua"..cmds.sep.."minikeybd.lua -L "
|
||||||
|
buildchunk = buildchunk.."."..cmds.sep.."ffi"..cmds.sep.."hidwin.lua "
|
||||||
|
buildchunk = buildchunk.."."..cmds.sep.."ffi"..cmds.sep.."lusb.lua "
|
||||||
|
buildchunk = buildchunk.."."..cmds.sep.."lua"..cmds.sep.."mapcodes.lua "
|
||||||
|
buildchunk = buildchunk.."."..cmds.sep.."lua"..cmds.sep.."wchar_win.lua "
|
||||||
|
run_cmd(buildchunk)
|
||||||
|
|
||||||
|
-- Build the exe
|
||||||
|
local command = cmds.glue.." "..cmds.srlua.." luac.out "..outputfolder..outputexe
|
||||||
|
run_cmd(command)
|
||||||
|
|
||||||
|
local copycmd = "cp -rf "..cmds.src_dll.." "..outputfolder
|
||||||
|
if(ffi.os == "Windows") then copycmd = "xcopy /C /I /Y "..cmds.src_dll.." "..outputfolder end
|
||||||
|
-- Copy in the dlls/dylib/sos
|
||||||
|
run_cmd(copycmd)
|
||||||
|
|
||||||
|
-- Copy in config folder
|
||||||
|
local copyconfig = "cp -rf "..cmds.src_cfg.." "..outputfolder..cmds.sep.."config"
|
||||||
|
if(ffi.os == "Windows") then copyconfig = "xcopy /S /E /C /I /Y "..cmds.src_cfg.." "..outputfolder.."config" end
|
||||||
|
run_cmd(copyconfig)
|
||||||
74
tools/build/rbuilder/utils/combine.lua
Normal file
74
tools/build/rbuilder/utils/combine.lua
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
-- usage: lua luac.lua [file.lua]* [-L [module.lua]*]
|
||||||
|
--
|
||||||
|
-- creates a precompiled chunk that preloads all modules listed after
|
||||||
|
-- -L and then runs all programs listed before -L.
|
||||||
|
--
|
||||||
|
-- assumptions:
|
||||||
|
-- file xxx.lua contains module xxx
|
||||||
|
-- '/' is the directory separator (could have used package.config)
|
||||||
|
-- int and size_t take 4 bytes (could have read sizes from header)
|
||||||
|
-- does not honor package.path
|
||||||
|
--
|
||||||
|
-- Luiz Henrique de Figueiredo <lhf@tecgraf.puc-rio.br>
|
||||||
|
-- Tue Aug 5 22:57:33 BRT 2008
|
||||||
|
-- This code is hereby placed in the public domain.
|
||||||
|
--
|
||||||
|
-- This has been hevily midified to utilize a different method to concatenate the
|
||||||
|
-- chunks without losing the package module mapping.
|
||||||
|
-- ref: https://www.lua-users.org/wiki/LuaCompilerInLua
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
local NAME="luac"
|
||||||
|
local OUTPUT=NAME..".out"
|
||||||
|
|
||||||
|
local n=#arg
|
||||||
|
local m=n
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
-- Load a chunk manually so we can name it
|
||||||
|
local function loader(filepath)
|
||||||
|
local data = ""
|
||||||
|
local fh = io.open(filepath, "r")
|
||||||
|
if(fh) then
|
||||||
|
data = fh:read("*a")
|
||||||
|
fh:close()
|
||||||
|
end
|
||||||
|
return data
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
-- Process args
|
||||||
|
for i=1,n do
|
||||||
|
if arg[i]=="-L" then m=i-1 break end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
-- Iterate libs to prepend them to the chunk list
|
||||||
|
local ts = {}
|
||||||
|
table.insert(ts, 1, "local t=package.preload;")
|
||||||
|
|
||||||
|
for i=m+2,n do
|
||||||
|
local modulename = string.gsub(arg[i], "^%.[/\\]", "")
|
||||||
|
modulename = string.gsub(modulename, "[/\\]", "%.")
|
||||||
|
modulename = string.gsub(modulename, "%.lua", "")
|
||||||
|
|
||||||
|
local loaded_chunk = assert(load( loader(arg[i]),modulename ))
|
||||||
|
table.insert(ts, ("t['%s']=load(%q);"):format(modulename, string.dump(loaded_chunk)) )
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
-- Add core scripts that will be executed
|
||||||
|
for i=1,m do
|
||||||
|
table.insert(ts, ("load(%q)(...);"):format(string.dump(assert(loadfile(arg[i])))) )
|
||||||
|
end
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
|
-- Assemble chunks into one file to dump.
|
||||||
|
local chunks = assert(load(table.concat(ts)))
|
||||||
|
local f=assert(io.open(OUTPUT,"wb"))
|
||||||
|
local data = string.dump(chunks)
|
||||||
|
f:write(data)
|
||||||
|
assert(f:close())
|
||||||
|
|
||||||
|
-- ---------------------------------------------------------------------------------------------------
|
||||||
46
tools/build/rbuilder/utils/hash_loader.lua
Normal file
46
tools/build/rbuilder/utils/hash_loader.lua
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
module(..., package.seeall)
|
||||||
|
|
||||||
|
local crypto = require 'crypto'
|
||||||
|
|
||||||
|
local dtypes = {"md5", "md4", "md2", "sha1", "sha", "sha256", "sha512"}
|
||||||
|
|
||||||
|
local function load(modulename)
|
||||||
|
-- Find source
|
||||||
|
local filename
|
||||||
|
local file,hashfile,hashtype
|
||||||
|
local errmsg = ""
|
||||||
|
for path in string.gmatch(package.path..";", "([^;]*);") do
|
||||||
|
filename = string.gsub(path, "%?", (string.gsub(modulename, "%.", "\\")))
|
||||||
|
file = io.open(filename, "rb")
|
||||||
|
-- If we found a module check if it has a hash file
|
||||||
|
if file then
|
||||||
|
for _,dtype in ipairs(dtypes) do
|
||||||
|
hashfile = io.open(filename.."."..dtype, "rb")
|
||||||
|
if hashfile then
|
||||||
|
hashtype = dtype
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if hashfile then
|
||||||
|
break
|
||||||
|
end
|
||||||
|
errmsg = errmsg.."\n\tno file '"..filename.."' (signed)"
|
||||||
|
end
|
||||||
|
if not file then
|
||||||
|
return errmsg
|
||||||
|
end
|
||||||
|
-- Read source file
|
||||||
|
local source = file:read("*a")
|
||||||
|
-- Read saved hash
|
||||||
|
local hash = hashfile:read("*a"):gsub("[^%x]", "")
|
||||||
|
-- Check that the saved hash match the file hash
|
||||||
|
assert(crypto.evp.digest(hashtype, source)==hash,
|
||||||
|
"module "..modulename.." (from file '"..filename.."')"
|
||||||
|
.." does not match its "..hashtype.." hash")
|
||||||
|
-- Compile and return the module
|
||||||
|
return assert(loadstring(source, filename))
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Install the loader so that it's called just before the normal Lua loader
|
||||||
|
table.insert(package.loaders, 2, load)
|
||||||
Loading…
Reference in New Issue
Block a user