Re: lua vs luajit vs both

2014-01-14 Thread John Keeping
On Tue, Jan 14, 2014 at 02:02:40AM +0100, Jason A. Donenfeld wrote:
 I've gone ahead and merged the lua work to master, for testing and
 subsequent cleanup before release.
 
 Regarding to jit or not to jit, I currently have this fancy autodetection
 logic:
 http://git.zx2c4.com/cgit/commit/?id=3488d124052f5c3ddef303ed5306ad6a458794c1
 
 John -- I'm waiting for your input on the parent email, as you seem to be
 the originator of the opinion that both are good.

It was more of a there doesn't seem much overhead to supporting both,
since the API is the same.  I think the Makefile should take an
approach more like this though:

ifdef NO_LUA
CGIT_CFLAGS += -DNO_LUA
else if defined(USE_LUAJIT)
# LuaJIT code goes here
else
# Lua code goes here
endif

Basically, use vanilla Lua by default by provide an easy way for users
to switch to LuaJIT if they want.
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit


Re: lua vs luajit vs both

2014-01-14 Thread Jason A. Donenfeld


On Tue, Jan 14, 2014 at 10:08 AM, John Keeping j...@keeping.me.uk wrote:
 It was more of a there doesn't seem much overhead to supporting both,
 since the API is the same.  I think the Makefile should take an
 approach more like this though:

 ifdef NO_LUA
 CGIT_CFLAGS += -DNO_LUA
 else if defined(USE_LUAJIT)
 # LuaJIT code goes here
 else
 # Lua code goes here
 endif

Okay we've got this fancy autodetection logic now. From the README:

 If you'd like to compile without Lua support, you may use:
$ make NO_LUA=1
 And if you'd like to specify a Lua implementation, you may use:
$ make LUA_IMPLEMENTATION=JIT
 for using the LuaJIT project. Or:

$ make LUA_IMPLEMENTATION=VANILLA
 for the mainline Lua project. If you specify neither implementation, it will
 be auto-detected, preferring LuaJIT if both are present.

From cgit.mk:

 ifdef NO_LUA
 LUA_MESSAGE := linking without specified Lua support
 CGIT_CFLAGS += -DNO_LUA
 else
 LUAJIT_CFLAGS := $(shell pkg-config --cflags luajit 2/dev/null)
 LUAJIT_LIBS := $(shell pkg-config --libs luajit 2/dev/null)
 LUA_LIBS := $(shell pkg-config --libs lua 2/dev/null)
 LUA_CFLAGS := $(shell pkg-config --cflags lua 2/dev/null)
 ifeq (JIT,$(LUA_IMPLEMENTATION))
 ifeq ($(strip $(LUAJIT_LIBS)),)
  $(error LuaJIT specified via LUA_IMPLEMENTATION=JIT, but library 
 could not be found.)
 endif
 LUA_MESSAGE := linking with selected LuaJIT
 CGIT_LIBS += $(LUAJIT_LIBS)
 CGIT_CFLAGS += $(LUAJIT_CFLAGS)
 else ifeq (VANILLA,$(LUA_IMPLEMENTATION))
 ifeq ($(strip $(LUA_LIBS)),)
  $(error Lua specified via LUA_IMPLEMENTATION=VANILLA, but library 
 could not be found.)
 endif
 LUA_MESSAGE := linking with selected Lua
 CGIT_LIBS += $(LUA_LIBS)
 CGIT_LIBS += $(LUA_CFLAGS)
 else ifneq ($(strip $(LUAJIT_LIBS)),)
 LUA_MESSAGE := linking with autodetected LuaJIT
 CGIT_LIBS += $(LUAJIT_LIBS)
 CGIT_CFLAGS += $(LUAJIT_CFLAGS)
 else ifneq ($(strip $(LUA_LIBS)),)
 LUA_MESSAGE := linking with autodetected Lua
 CGIT_LIBS += $(LUA_LIBS)
 CGIT_CFLAGS += $(LUA_CFLAGS)
 else
 LUA_MESSAGE := linking without autodetected Lua support
 NO_LUA := YesPlease
 CGIT_CFLAGS += -DNO_LUA
 endif

 endif

 # Add -ldl to linker flags on non-BSD systems.
 ifeq ($(findstring BSD,$(uname_S)),)
 CGIT_LIBS += -ldl
 endif

How's this look to you? The correct way to be doing things?
___
CGit mailing list
CGit@lists.zx2c4.com
http://lists.zx2c4.com/mailman/listinfo/cgit