X-Git-Url: https://gitweb.ps.run/ps-cgit/blobdiff_plain/e83b51b4f6bd53efea0c772e6ecdf1c5605ca611..9999b0a3e915c76a52be433830660e803ef71cb0:/cgit.mk?ds=sidebyside diff --git a/cgit.mk b/cgit.mk index 9d6dea8..056c3f9 100644 --- a/cgit.mk +++ b/cgit.mk @@ -25,6 +25,50 @@ ifdef NO_C99_FORMAT CFLAGS += -DNO_C99_FORMAT endif +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 + + CGIT_OBJ_NAMES += cgit.o CGIT_OBJ_NAMES += cache.o CGIT_OBJ_NAMES += cmd.o @@ -61,9 +105,6 @@ $(CGIT_VERSION_OBJS): $(CGIT_PREFIX)VERSION $(CGIT_VERSION_OBJS): EXTRA_CPPFLAGS = \ -DCGIT_VERSION='"$(CGIT_VERSION)"' -CGIT_LIBS += -ldl - - # Git handles dependencies using ":=" so dependencies in CGIT_OBJ are not # handled by that and we must handle them ourselves. cgit_dep_files := $(foreach f,$(CGIT_OBJS),$(dir $f).depend/$(notdir $f).d) @@ -90,4 +131,5 @@ $(CGIT_OBJS): %.o: %.c GIT-CFLAGS $(CGIT_PREFIX)CGIT-CFLAGS $(missing_dep_dirs) $(QUIET_CC)$(CC) -o $*.o -c $(dep_args) $(ALL_CFLAGS) $(EXTRA_CPPFLAGS) $(CGIT_CFLAGS) $< $(CGIT_PREFIX)cgit: $(CGIT_OBJS) GIT-LDFLAGS $(GITLIBS) + @echo 1>&1 " * $(LUA_MESSAGE)" $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS) $(CGIT_LIBS)