summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile105
1 files changed, 89 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index 71e4ae8..2fa7ca4 100644
--- a/Makefile
+++ b/Makefile
@@ -2,12 +2,59 @@ all: lua-5.1-try lua-5.2-try
install: lua-5.1-try-install lua-5.2-try-install
+ifeq ($(strip $(shell which pkg-config > /dev/null || echo NONE)),NONE)
+ $(error This makefile requires pkg-config)
+endif
+
+ifeq ($(strip $(shell which $(CC) > /dev/null || echo NONE)),NONE)
+ $(info Luxio: Hmm, CC make variable contains nonsense. Overriding to gcc.)
+ CC := gcc
+endif
+
+# This isn't nice. Find a nice way.
+HOST_OS := $(shell uname -s)
+
+ifeq ($(HOST_OS),Linux)
+ EXTRA_LIBS := -lrt
+else
+ EXTRA_LIBS :=
+endif
+
+NAKED_LUA_VER := $(shell (pkg-config --exists lua && \
+ pkg-config --modversion lua || \
+ pkg-config --variable V lua) | cut -d. -f1-2)
+
+# fine appropriate Lua interpreter
+LUA_REPL := $(shell (which lua5.1 > /dev/null 2>&1 && echo lua5.1) || \
+ (which lua-5.1 > /dev/null 2>&1 && echo lua-5.1) || \
+ (which lua51 > /dev/null 2>&1 && echo lua51) || \
+ (lua -e"print(_VERSION)" | grep -q 5.1 && echo lua) || \
+ (which lua-5.2 > /dev/null 2>&1 && echo lua-5.2) || \
+ (which lua52 > /dev/null 2>&1 && echo lua52))
+
# find appropriate Lua libraries
LUA51_PKG := $(shell (pkg-config --exists lua5.1 && echo lua5.1) || \
- (pkg-config --exists lua-5.1 && echo lua-5.1))
-ifneq ($(LUA51_PKG),)
+ (pkg-config --exists lua-5.1 && echo lua-5.1) || \
+ (pkg-config --exists lua51 && echo lua51) || \
+ (echo "NONE"))
+
+
+LUA51_PKG := $(strip $(LUA51_PKG))
+
+ifeq ($(LUA51_PKG),NONE)
+ ifeq ($(NAKED_LUA_VER),5.1)
+ LUA51_PKG := lua
+ endif
+endif
+
+ifneq ($(LUA51_PKG),NONE)
+ $(info Luxio: Lua 5.1 package name on this system is $(LUA51_PKG))
+ LUA51_HAS_MODINST := $(shell test x`pkg-config --variable INSTALL_LMOD $(LUA51_PKG)` != x && echo YES)
LUA51_INC := $(shell pkg-config --cflags $(LUA51_PKG))
LUA51_LIB := $(shell pkg-config --libs $(LUA51_PKG))
+ ifeq ($(LUA51_HAS_MODINST),)
+ LOCAL := YES
+ endif
ifeq ($(LOCAL),)
LUA51_LMOD_INST := $(shell pkg-config --variable=INSTALL_LMOD $(LUA51_PKG))
LUA51_CMOD_INST := $(shell pkg-config --variable=INSTALL_CMOD $(LUA51_PKG))
@@ -19,16 +66,32 @@ ifneq ($(LUA51_PKG),)
lua-5.1-try-install: lua-5.1-install
else
lua-5.1-try:
- @echo Lua 5.1 could not be found, so luxio was not built for it.
+ @echo Luxio: Lua 5.1 could not be found, so luxio was not built for it.
lua-5.1-try-install:
- @echo Lua 5.1 could not be found, so luxio was not installed for it.
+ @echo Luxio: Lua 5.1 could not be found, so luxio was not installed for it.
endif
LUA52_PKG := $(shell (pkg-config --exists lua5.2 && echo lua5.2) || \
- (pkg-config --exists lua-5.2 && echo lua-5.2))
-ifneq ($(LUA52_PKG),)
+ (pkg-config --exists lua-5.2 && echo lua-5.2) || \
+ (pkg-config --exists lua52 && echo lua52) || \
+ (echo "NONE"))
+
+LUA52_PKG := $(strip $(LUA52_PKG))
+
+ifeq ($(LUA52_PKG),NONE)
+ ifeq ($(NAKED_LUA_VER),5.2)
+ LUA52_PKG := lua
+ endif
+endif
+
+ifneq ($(LUA52_PKG),NONE)
+ $(info Luxio: Lua 5.2 package name on this system is $(LUA52_PKG))
+ LUA52_HAS_MODINST := $(shell test x`pkg-config --variable INSTALL_LMOD $(LUA52_PKG)` != x && echo YES)
LUA52_INC := $(shell pkg-config --cflags $(LUA52_PKG))
LUA52_LIB := $(shell pkg-config --libs $(LUA52_PKG))
+ ifeq ($(LUA52_HAS_MODINST),)
+ LOCAL := YES
+ endif
ifeq ($(LOCAL),)
LUA52_LMOD_INST := $(shell pkg-config --variable=INSTALL_LMOD $(LUA52_PKG))
LUA52_CMOD_INST := $(shell pkg-config --variable=INSTALL_CMOD $(LUA52_PKG))
@@ -40,14 +103,13 @@ ifneq ($(LUA52_PKG),)
lua-5.2-try-install: lua-5.2-install
else
lua-5.2-try:
- @echo Lua 5.2 could not be found, so luxio was not built for it.
+ @echo Luxio: Lua 5.2 could not be found, so luxio was not built for it.
lua-5.2-try-install:
- @echo Lua 5.2 could not be found, so luxio was not installed for it.
+ @echo Luxio: Lua 5.2 could not be found, so luxio was not installed for it.
endif
CFLAGS ?= -O2 -Wall
-CC ?= gcc
INSTALL := /usr/bin/install
LUALIBS := $(patsubst %,luxio/%.lua, \
@@ -55,12 +117,12 @@ LUALIBS := $(patsubst %,luxio/%.lua, \
clean:
- $(RM) *.so *.o luxio_constants.h
+ $(RM) *.so *.o luxio_constants.h luxio-5.1 luxio-5.2
luxio_constants.h: luxio_constants.h.in const-proc.lua
- lua5.1 ./const-proc.lua < $^ > $@
+ $(LUA_REPL) ./const-proc.lua < $^ > $@
-lua-5.1: luxio-5.1.so
+lua-5.1: luxio-5.1.so luxio-5.1
ln -s -f luxio-5.1.so luxio.so
lua-5.1-install: lua-5.1
@@ -68,11 +130,16 @@ lua-5.1-install: lua-5.1
$(INSTALL) -m 755 luxio-5.1.so $(DESTDIR)$(LUA51_CMOD_INST)/luxio.so
$(INSTALL) -d $(DESTDIR)$(LUA51_LMOD_INST)/luxio
$(INSTALL) -m 644 $(LUALIBS) $(DESTDIR)$(LUA51_LMOD_INST)/luxio/
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
+ $(INSTALL) luxio-5.1 $(DESTDIR)$(PREFIX)/bin/luxio-5.1
luxio-5.1.so: luxio-5.1.o
- $(CC) $(LDFLAGS) -shared -Wl,--no-as-needed -o luxio-5.1.so $(LUA51_LIB) -lrt $^
+ $(CC) $(LDFLAGS) -shared -o luxio-5.1.so $^ $(LUA51_LIB) $(EXTRA_LIBS)
+
+luxio-5.1: lua-5.1.c luxio-5.1.o
+ $(CC) -o luxio-5.1 $(CFLAGS) $(LUA51_INC) $(LDFLAGS) lua-5.1.c luxio-5.1.o $(LUA51_LIB) $(EXTRA_LIBS)
-lua-5.2: luxio-5.2.so
+lua-5.2: luxio-5.2.so luxio-5.2
ln -s -f luxio-5.2.so luxio.so
lua-5.2-install: lua-5.2
@@ -80,10 +147,16 @@ lua-5.2-install: lua-5.2
$(INSTALL) -m 755 luxio-5.2.so $(DESTDIR)$(LUA52_CMOD_INST)/luxio.so
$(INSTALL) -d $(DESTDIR)$(LUA52_LMOD_INST)/luxio
$(INSTALL) -m 644 $(LUALIBS) $(DESTDIR)$(LUA52_LMOD_INST)/luxio/
-
+ $(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
+ $(INSTALL) luxio-5.2 $(DESTDIR)$(PREFIX)/bin/luxio-5.2
luxio-5.2.so: luxio-5.2.o
- $(CC) $(LDFLAGS) -shared -Wl,--no-as-needed -o luxio-5.2.so $(LUA52_LIB) -lrt $^
+ $(CC) $(LDFLAGS) -shared -o luxio-5.2.so $^ $(LUA52_LIB) $(EXTRA_LIBS)
+
+luxio-5.2: lua-5.2.c luxio-5.2.o
+ $(CC) -o luxio-5.2 $(CFLAGS) $(LDFLAGS) $(LUA52_INC) lua-5.2.c luxio-5.2.o $(LUA52_LIB) $(EXTRA_LIBS)
+
+###
luxio-5.1.o: luxio.c luxio_constants.h
$(CC) $(CFLAGS) -fPIC $(LUA51_INC) -c $< -o $@