lua vs luajit vs both

Jason A. Donenfeld Jason at zx2c4.com
Tue Jan 14 19:06:34 CET 2014


>

On Tue, Jan 14, 2014 at 10:08 AM, John Keeping <john at 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?


More information about the CGit mailing list