🔧 build: 修改 makefile

develop
xiaojin 5 years ago
parent 3818bdcad8
commit 841999c589

@ -1,19 +0,0 @@
Copyright (C) 2010-2013 nsf <no.smile.face@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

@ -21,6 +21,9 @@ SHIFTTIMER_SO = $(LUA_CLIB_PATH)/shiftimer.so
CLUA_SO = $(LUA_CLIB_PATH)/clua.so
AOI_SO = $(LUA_CLIB_PATH)/aoi.so
ECS_SO = $(LUA_CLIB_PATH)/ecs.so
LUASOCKET_SO = $(LUA_CLIB_PATH)/socket.so
TERMFX_SO = $(LUA_CLIB_PATH)/termfx.so
RC4_SO = $(LUA_CLIB_PATH)/rc4.so
#####################################################
all: $(LFS_SO) \
@ -31,6 +34,9 @@ all: $(LFS_SO) \
$(SHIFTTIMER_SO) \
$(AOI_SO) \
$(ECS_SO) \
$(LUASOCKET_SO) \
$(TERMFX_SO) \
$(RC4_SO) \
$(CLUA_SO)
#####################################################
@ -61,11 +67,25 @@ $(CLUA_SO):
$(ECS_SO):
cd lua-ecs && $(MAKE) PLAT=$(PLAT)
#####################################################
$(RC4_SO):
cd lua-rc4 && $(MAKE) PLAT=$(PLAT)
$(TERMFX_SO):
cd lua-termfx && $(MAKE)
cp -f lua-termfx/termfx.so $@
$(LUASOCKET_SO):
cd luasocket && $(MAKE) DEBUG=DEBUG PLAT=$(PLAT) LUAINC_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/ CDIR_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/ LDIR_$(PLAT)=$(SKYNET_ROOT)/3rd/lua/
cp -f luasocket/src/socket-3.0-rc1.so $@
#####################################################
cleanall:
rm -f $(LUA_CLIB_PATH)/*.so && \
rm -rf $(LUA_CLIB_PATH)/*.dSYM && \
rm -f $(LUA_CLIB_PATH)/*.o
rm -f $(LUA_CLIB_PATH)/*.o && \
cd lua-termfx && $(MAKE) clean && \
cd .. && \
cd luasocket && $(MAKE) clean && \
cd ../../
.PHONY: all cleanall

@ -1,26 +1,30 @@
PROJECT = rc4
SRC = .
INC = -I. -I/usr/local/include
CC = gcc
CC_FLAGS = -O2 -fPIC $(INC) -Wall -Wextra -c
SKYNET_ROOT ?= ../../skynet
include $(SKYNET_ROOT)/platform.mk
SRC_C = $(foreach dir, $(SRC), $(wildcard $(dir)/*.c))
OBJ_C = $(patsubst %.c, %.o, $(SRC_C))
OBJ = $(OBJ_C)
PLAT ?= none
.PHONY : all
all: $(PROJECT).so
TARGET = ../../luaclib/rc4.so
$(PROJECT).so: $(OBJ)
ld -shared $(OBJ) -o $(PROJECT).so
ifdef OUTPUT
cp -f $(PROJECT).so $(OUTPUT)
ifeq ($(PLAT), macosx)
CFLAGS = -g -O2 -dynamiclib -Wl,-undefined,dynamic_lookup
else
ifeq ($(PLAT), linux)
CFLAGS = -g -O2 -shared -fPIC
endif
endif
LUA_LIB ?= $(SKYNET_ROOT)/3rd/lua/
LUA_INC ?= $(SKYNET_ROOT)/3rd/lua/
SKYNET_SRC ?= $(SKYNET_ROOT)/skynet-src
SRC = .
.PHONY: all clean
all: $(TARGET)
$(OBJ_C) : %.o : %.c
$(CC) $(CC_FLAGS) -o $@ $<
$(TARGET): $(foreach dir, $(SRC), $(wildcard $(dir)/*.c))
$(CC) $(CFLAGS) $(SHARED) -I$(LUA_INC) -I$(SKYNET_SRC) $^ -o $@
.PHONY : clean
clean:
rm -f $(PROJECT).so $(OBJ)
rm -f *.o $(TARGET)

@ -3,14 +3,15 @@
# Gunnar Zötl <gz@tset.de>, 2014-2015.
# Released under the terms of the MIT license. See file LICENSE for details.
TERMBOX = ../../3rd//termbox_next
TERMBOX = ../../3rd/termbox_next
SKYNET_ROOT ?= ../../skynet
# try some automatic discovery. If that does not work for you, just set
# the following values manually.
OS = $(shell uname -s)
LUAVERSION = $(shell lua -e "print(string.match(_VERSION, '%d+%.%d+'))")
LUA_BINDIR = $(shell dirname `which lua`)
LUAROOT = $(shell dirname $(LUA_BINDIR))
# LUA_BINDIR = $(shell dirname `which lua`)
# LUAROOT = $(shell dirname $(LUA_BINDIR))
OBJS = termfx.o termfx_color.o tbutils.o
@ -18,8 +19,9 @@ TARGET = termfx.so
CC = gcc
CFLAGS = -fPIC -Wall
LUA_INCDIR = $(LUAROOT)/include
LUA_LIBDIR = $(LUAROOT)/lib
LUA_INCDIR ?= $(SKYNET_ROOT)/3rd/lua/
LUA_LIBDIR ?= $(SKYNET_ROOT)/3rd/lua/
# OS specialities
ifeq ($(OS),Darwin)

@ -21,3 +21,13 @@ print("profile", profile)
local clua = require "clua"
print("clua", clua)
local rc4 = require "rc4.c"
print("rc4", rc4)
local termfx = require "termfx"
print("termfx", termfx)
local socket = require "socket"
print("socket", socket)

@ -1,81 +1,93 @@
-- sample for termfx
-- Gunnar Zötl <gz@tset.de>, 2014-2015
-- Released under the terms of the MIT license. See file LICENSE for details.
tfx = require "termfx"
tfx.init()
function makespr(s, fg, bg)
local c = "-:+=%ZXH#"
local spr = tfx.newbuffer(s, s/2)
spr:attributes(fg, bg)
for y=1, s/2 do
for x=1, s do
local lx, ly = (x-0.5)/s, (2*y-1)/s
local v = math.floor((math.sin(lx*math.pi) + math.sin(ly*math.pi)) / 2 * #c)
local ch = string.sub(c, v, v)
spr:setcell(x, y, ch)
end
end
return spr
local c = "-:+=%ZXH#"
local spr = tfx.newbuffer(s, s / 2)
spr:attributes(fg, bg)
for y = 1, s / 2 do
for x = 1, s do
local lx, ly = (x - 0.5) / s, (2 * y - 1) / s
local v = math.floor((math.sin(lx * math.pi) + math.sin(ly * math.pi)) / 2 * #c)
local ch = string.sub(c, v, v)
spr:setcell(x, y, ch)
end
end
return spr
end
tfx.outputmode(tfx.output.NORMAL)
ok, err = pcall(function()
local sprites = {}
local blit2screen = true
local sprites = {}
local blit2screen = true
for i=1, 5 do
sprites[i] = makespr(2^(i+2), i+1, tfx.color.BLACK)
end
for i = 1, 5 do
sprites[i] = makespr(2 ^ (i + 2), i + 1, tfx.color.BLACK)
end
local snum = 1
local spr = sprites[snum]
local sw, sh = spr:width(), spr:height()
local x, y = 1-sw, 1-sh
local xo, yo = 1, 1
local fw, fh = tfx.width(), tfx.height()
local target = tfx.newbuffer(fw - 2, fh - 2)
local w, h = target:width(), target:height()
local snum = 1
local spr = sprites[snum]
local sw, sh = spr:width(), spr:height()
local x, y = 1 - sw, 1 - sh
local xo, yo = 1, 1
local fw, fh = tfx.width(), tfx.height()
local target = tfx.newbuffer(fw - 2, fh - 2)
local w, h = target:width(), target:height()
repeat
repeat
if blit2screen then
tfx.clear(tfx.color.WHITE, tfx.color.BLACK)
tfx.blit(x, y, spr)
else
tfx.clear(tfx.color.WHITE, tfx.color.RED)
target:clear(tfx.color.WHITE, tfx.color.BLACK)
target:blit(x, y, spr)
tfx.blit(2, 2, target)
end
if blit2screen then
tfx.clear(tfx.color.WHITE, tfx.color.BLACK)
tfx.blit(x, y, spr)
else
tfx.clear(tfx.color.WHITE, tfx.color.RED)
target:clear(tfx.color.WHITE, tfx.color.BLACK)
target:blit(x, y, spr)
tfx.blit(2, 2, target)
end
x = x + xo
if x > w or x < 1-sw then xo = -xo end
y = y + yo
if y > h or y < 1-sh then yo = -yo end
x = x + xo
if x > w or x < 1 - sw then
xo = -xo
end
y = y + yo
if y > h or y < 1 - sh then
yo = -yo
end
tfx.printat(1, tfx.height(), "print 1.."..#sprites.." for sprite size, t to toggle blit to screen or buffer, q to quit")
tfx.printat(1, 1, "Current size: "..snum.." ("..spr:width().."x"..spr:height()..")")
tfx.printat(1, tfx.height(),
"print 1.." .. #sprites .. " for sprite size, t to toggle blit to screen or buffer, q to quit")
tfx.printat(1, 1, "Current size: " .. snum .. " (" .. spr:width() .. "x" .. spr:height() .. ")")
tfx.present()
evt = tfx.pollevent(333)
snum = evt and tonumber(evt.char) or snum
if snum >= 1 and snum <= #sprites then
spr = sprites[snum]
sw, sh = spr:width(), spr:height()
if x < 1-sw then x = 1-sw xo = 1 end
if y < 1-sh then y = 1-sh yo = 1 end
end
tfx.present()
evt = tfx.pollevent(333)
snum = evt and tonumber(evt.char) or snum
if snum >= 1 and snum <= #sprites then
spr = sprites[snum]
sw, sh = spr:width(), spr:height()
if x < 1 - sw then
x = 1 - sw
xo = 1
end
if y < 1 - sh then
y = 1 - sh
yo = 1
end
end
if evt and evt.char == 't' then
blit2screen = not blit2screen
end
if evt and evt.char == 't' then
blit2screen = not blit2screen
end
until evt and evt.type == "key" and evt.char == "q"
until evt and evt.type == "key" and evt.char == "q"
end)
tfx.shutdown()
if not ok then print("Error: "..err) end
if not ok then
print("Error: " .. err)
end

@ -1,7 +1,6 @@
-- sample for termfx
-- Gunnar Zötl <gz@tset.de>, 2014-2015
-- Released under the terms of the MIT license. See file LICENSE for details.
--[[ screenshot.lua
a simple screenshot facility for termfx programs, outputs html in
a string. Cell colors and attributes are preserved. Note, this only
@ -21,68 +20,71 @@
html = screenshot(buf)
-- then write it to a file, surrounded by a html template as necessary.
--]]
local tfx = require "termfx"
--]] local tfx = require "termfx"
local function to_html(scr)
local fg, bg
local res = { "<pre>" }
for y=1, scr.h do
for x=1, scr.w do
local cel = scr[y][x]
if fg ~= cel.fg or bg ~= cel.bg then
if fg then
res[#res+1] = "</span>"
end
local fgcol, fgattr = tfx.colorinfo(cel.fg % 256), math.floor(cel.fg / 256)
local bgcol = tfx.colorinfo(cel.bg % 256)
local style, weight = "", ""
if fgattr % 2 == 1 then
weight = "; font-weight: bold"
end
fgattr = fgattr / 2
if fgattr % 2 == 1 then
style = "; text-decoration: underline"
end
fgattr = fgattr / 2
if fgattr % 2 == 1 then
fgcol, bgcol = bgcol, fgcol
end
local fg, bg
local res = {"<pre>"}
for y = 1, scr.h do
for x = 1, scr.w do
local cel = scr[y][x]
if fg ~= cel.fg or bg ~= cel.bg then
if fg then
res[#res + 1] = "</span>"
end
local fgcol, fgattr = tfx.colorinfo(cel.fg % 256), math.floor(cel.fg / 256)
local bgcol = tfx.colorinfo(cel.bg % 256)
local style, weight = "", ""
if fgattr % 2 == 1 then
weight = "; font-weight: bold"
end
fgattr = fgattr / 2
if fgattr % 2 == 1 then
style = "; text-decoration: underline"
end
fgattr = fgattr / 2
if fgattr % 2 == 1 then
fgcol, bgcol = bgcol, fgcol
end
res[#res+1] = string.format('<span style="color: %s; background-color: %s', fgcol, bgcol)
res[#res+1] = weight .. style
res[#res+1] = '">'
fg = cel.fg
bg = cel.bg
end
res[#res+1] = string.format('%c', cel.ch)
end
res[#res+1] = "<br>"
end
res[#res+1] = "</span></pre>"
return table.concat(res)
res[#res + 1] = string.format('<span style="color: %s; background-color: %s', fgcol, bgcol)
res[#res + 1] = weight .. style
res[#res + 1] = '">'
fg = cel.fg
bg = cel.bg
end
res[#res + 1] = string.format('%c', cel.ch)
end
res[#res + 1] = "<br>"
end
res[#res + 1] = "</span></pre>"
return table.concat(res)
end
local function screenshot(buf)
local w, h, getcell
if buf then
w, h = buf:size()
getcell = function(x, y) return buf:getcell(x, y) end
else
w, h = tfx.size()
getcell = tfx.getcell
end
local w, h, getcell
if buf then
w, h = buf:size()
getcell = function(x, y)
return buf:getcell(x, y)
end
else
w, h = tfx.size()
getcell = tfx.getcell
end
local res = {w = w, h = h}
for y=1, h do
res[y] = {}
for x=1, w do
res[y][x] = getcell(x, y)
end
end
local res = {
w = w,
h = h,
}
for y = 1, h do
res[y] = {}
for x = 1, w do
res[y][x] = getcell(x, y)
end
end
return to_html(res)
return to_html(res)
end
return screenshot

@ -1,7 +1,6 @@
-- sample for termfx
-- Gunnar Zötl <gz@tset.de>, 2014-2015
-- Released under the terms of the MIT license. See file LICENSE for details.
--[[
simpleui.lua
@ -30,104 +29,114 @@ local _M = {}
local tfx = require "termfx"
local function draw_box(x, y, w, h)
local ccell = tfx.newcell('+')
local hcell = tfx.newcell('-')
local vcell = tfx.newcell('|')
for i = x, x+w do
tfx.setcell(i, y-1, hcell)
tfx.setcell(i, y+h, hcell)
end
for i = y, y+h do
tfx.setcell(x-1, i, vcell)
tfx.setcell(x+w, i, vcell)
end
tfx.setcell(x-1, y-1, ccell)
tfx.setcell(x-1, y+h, ccell)
tfx.setcell(x+w, y-1, ccell)
tfx.setcell(x+w, y+h, ccell)
tfx.rect(x, y, w, h, ' ', fg, bg)
local ccell = tfx.newcell('+')
local hcell = tfx.newcell('-')
local vcell = tfx.newcell('|')
for i = x, x + w do
tfx.setcell(i, y - 1, hcell)
tfx.setcell(i, y + h, hcell)
end
for i = y, y + h do
tfx.setcell(x - 1, i, vcell)
tfx.setcell(x + w, i, vcell)
end
tfx.setcell(x - 1, y - 1, ccell)
tfx.setcell(x - 1, y + h, ccell)
tfx.setcell(x + w, y - 1, ccell)
tfx.setcell(x + w, y + h, ccell)
tfx.rect(x, y, w, h, ' ', fg, bg)
end
_M.box = draw_box
local function frame(w, h)
local tw, th = tfx.size()
if w + 2 > tw then w = tw - 2 end
if h + 2 > th then h = th - 2 end
local x = math.floor((tw - w) / 2)
local y = math.floor((th - h) / 2)
draw_box(x, y, w, h)
return x, y, w, h
local tw, th = tfx.size()
if w + 2 > tw then
w = tw - 2
end
if h + 2 > th then
h = th - 2
end
local x = math.floor((tw - w) / 2)
local y = math.floor((th - h) / 2)
draw_box(x, y, w, h)
return x, y, w, h
end
function _M.ask(msg)
local mw = #msg
if mw < 6 then mw = 6 end
local x, y, w, h = frame(mw, 3)
tfx.printat(x, y, msg, w)
local p = x + math.floor((w - 6) / 2)
tfx.attributes(tfx.color.BLACK, tfx.color.GREEN)
tfx.printat(p, y+2, "Yes")
tfx.attributes(tfx.color.BLACK, tfx.color.RED)
tfx.printat(p+4, y+2, "No")
tfx.present()
local answer = nil
while answer == nil do
local evt = tfx.pollevent()
if evt.char == 'y' or evt.char == 'Y' then
answer = true
elseif evt.char == 'n' or evt.char == 'N' then
answer = false
end
end
return answer
local mw = #msg
if mw < 6 then
mw = 6
end
local x, y, w, h = frame(mw, 3)
tfx.printat(x, y, msg, w)
local p = x + math.floor((w - 6) / 2)
tfx.attributes(tfx.color.BLACK, tfx.color.GREEN)
tfx.printat(p, y + 2, "Yes")
tfx.attributes(tfx.color.BLACK, tfx.color.RED)
tfx.printat(p + 4, y + 2, "No")
tfx.present()
local answer = nil
while answer == nil do
local evt = tfx.pollevent()
if evt.char == 'y' or evt.char == 'Y' then
answer = true
elseif evt.char == 'n' or evt.char == 'N' then
answer = false
end
end
return answer
end
function _M.message(msg)
local mw = #msg
local x, y, w, h = frame(mw, 3)
tfx.printat(x, y, msg, w)
local p = x + math.floor((w - 2) / 2)
tfx.attributes(tfx.color.BLACK, tfx.color.GREEN)
tfx.printat(p, y+2, "Ok")
tfx.present()
local evt
repeat
evt = tfx.pollevent()
until evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC
local mw = #msg
local x, y, w, h = frame(mw, 3)
tfx.printat(x, y, msg, w)
local p = x + math.floor((w - 2) / 2)
tfx.attributes(tfx.color.BLACK, tfx.color.GREEN)
tfx.printat(p, y + 2, "Ok")
tfx.present()
local evt
repeat
evt = tfx.pollevent()
until evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC
end
function _M.select(msg, tbl)
local mw = #msg
local mh = #tbl
if mh > 9 then mh = 9 end
for i=1, mh do
if mw < #tbl[i] + 2 then mw = #tbl[i] + 2 end
end
local x, y, w, h = frame(mw, mh+2)
tfx.printat(x, y, msg, w)
for i=1, mh do
tfx.printat(x, y+1+i, i.." "..tbl[i], w)
end
tfx.present()
local answer = nil
while answer == nil do
local evt = tfx.pollevent()
if evt.char >= '1' and evt.char <= tostring(mh) then
answer = tbl[tonumber(evt.char)]
elseif evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC then
answer = false
end
end
return answer
local mw = #msg
local mh = #tbl
if mh > 9 then
mh = 9
end
for i = 1, mh do
if mw < #tbl[i] + 2 then
mw = #tbl[i] + 2
end
end
local x, y, w, h = frame(mw, mh + 2)
tfx.printat(x, y, msg, w)
for i = 1, mh do
tfx.printat(x, y + 1 + i, i .. " " .. tbl[i], w)
end
tfx.present()
local answer = nil
while answer == nil do
local evt = tfx.pollevent()
if evt.char >= '1' and evt.char <= tostring(mh) then
answer = tbl[tonumber(evt.char)]
elseif evt.key == tfx.key.ENTER or evt.key == tfx.key.SPACE or evt.key == tfx.key.ESC then
answer = false
end
end
return answer
end
return _M

Loading…
Cancel
Save