summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Renner Berthing <esmil@mailme.dk>2011-03-10 00:37:19 +0100
committerEmil Renner Berthing <esmil@mailme.dk>2011-03-11 14:52:22 +0100
commit0b3d18658aa1a5236b0c6ecfb5939eaaa14376a2 (patch)
tree5ef7eb83140c09cef0cbe07338745c01a63d50bc
parent4164c50e0ebef7461548fa140073f88d8dcde295 (diff)
downloadlem-0b3d18658aa1a5236b0c6ecfb5939eaaa14376a2.tar.gz
lem-0b3d18658aa1a5236b0c6ecfb5939eaaa14376a2.tar.xz
lem-0b3d18658aa1a5236b0c6ecfb5939eaaa14376a2.zip
Makefile: support linking with shared Lua or LuaJIT library
..and install pkg-config file for libraries to use
-rw-r--r--.gitignore1
-rw-r--r--Makefile138
-rw-r--r--PKGBUILD.jit28
-rw-r--r--PKGBUILD.shared28
-rw-r--r--README.markdown10
-rw-r--r--config.FreeBSD3
-rw-r--r--config.Linux3
l---------include/lem/lauxlib.h1
l---------include/lem/lua.h1
l---------include/lem/luaconf.h1
-rw-r--r--lem.h4
-rw-r--r--lem.pc.in8
-rw-r--r--repl.lua2
13 files changed, 165 insertions, 63 deletions
diff --git a/.gitignore b/.gitignore
index f7e0e4f..66a4897 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,5 @@
src/
pkg/
config.h
+lem.pc
lem
diff --git a/Makefile b/Makefile
index 6084179..573fb18 100644
--- a/Makefile
+++ b/Makefile
@@ -1,28 +1,63 @@
-CC = gcc
-CFLAGS ?= -O2 -pipe -Wall -Wextra -Wno-variadic-macros -Wno-strict-aliasing
-STRIP = strip
-INSTALL = install
-SED = sed
-
-LUA_VERSION = 5.1
-DESTDIR =
-PREFIX = /usr/local
-BINDIR = $(PREFIX)/bin
-LIBDIR = $(PREFIX)/lib/lua/$(LUA_VERSION)
-INCDIR = $(PREFIX)/include
-
-OS = $(shell uname)
+CC = gcc
+CFLAGS ?= -O2 -pipe -Wall -Wextra -Wno-variadic-macros -Wno-strict-aliasing
+PKGCONFIG = pkg-config
+STRIP = strip
+INSTALL = install
+SED = sed
+UNAME = uname
+
+headers = lem.h config.h macros.h libev/ev.h
+programs = lem utils.so
+scripts = repl.lua lem-repl
+
+objects = event.o lem.o
+
+OS = $(shell $(UNAME))
+LUA = embedded
+LUA_VERSION = 5.1
+DESTDIR =
+PREFIX = /usr/local
+BINDIR = $(PREFIX)/bin
+INCDIR = $(PREFIX)/include
+PKG_CONFIG_PATH = $(PREFIX)/lib/pkgconfig
+
+ifeq ($(LUA),embedded)
+CFLAGS += -Ilua -DLUA_USE_LINUX -DLUA_ROOT='"$(PREFIX)/"'
+LIBRARIES = -lm
ifeq ($(OS), Linux)
-DL = -ldl
+LIBRARIES += -ldl
endif
-headers = lem.h config.h macros.h lua/luaconf.h lua/lua.h lua/lauxlib.h libev/ev.h
-programs = lem utils.so
-scripts = repl.lua lem-repl
+headers += lua/luaconf.h lua/lua.h lua/lauxlib.h
+# From lua/Makefile
+CORE_O = lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
+ lundump.o lvm.o lzio.o
+LIB_O = lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
+ lstrlib.o loadlib.o linit.o
+objects += $(CORE_O:%=lua/%) $(LIB_O:%=lua/%)
+
+LUA_PATH = $(PREFIX)/share/lua/$(LUA_VERSION)
+LUA_CPATH = $(PREFIX)/lib/lua/$(LUA_VERSION)
+LIB_INCLUDES = -I$(INCDIR) -I$(INCDIR)/lem
+else
+LUA_PATH = $(shell $(LUA) -e 'print(package.path:match("([^;]*/lua/$(LUA_VERSION))"))')
+LUA_CPATH = $(shell $(LUA) -e 'print(package.cpath:match("([^;]*/lua/$(LUA_VERSION))"))')
+
+ifeq ($(findstring LuaJIT, $(shell $(LUA) -v 2>&1)),)
+LIBRARIES = -llua
+LUA_INCDIR = $(INCDIR)
+LIB_INCLUDES = -I$(LUA_INCDIR)
+else
+CFLAGS += $(shell $(PKGCONFIG) --cflags luajit)
+LIBRARIES = $(shell $(PKGCONFIG) --libs luajit)
+LIB_INCLUDES = -I$(INCDIR) $(shell $(PKGCONFIG) --cflags-only-I luajit)
+endif
+endif
ifdef NDEBUG
-DEFINES += -DNDEBUG
+CFLAGS += -DNDEBUG
endif
ifdef V
@@ -33,41 +68,32 @@ M=@
O=@
endif
-# From lua/Makefile
-CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
- lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
- lundump.o lvm.o lzio.o
-LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
- lstrlib.o loadlib.o linit.o
-
-.PHONY: all lua strip install clean
+.PHONY: all strip install clean
.PRECIOUS: %.pic.o
all: $(programs)
config.h: config.$(OS)
- $Mecho ' SED $@'
- $O$(SED) -e 's|@PREFIX@|$(PREFIX)/|' $< > $@
+ $Mecho ' CP $@'
+ $Ocp $< $@
-event.o: event.c config.h
- $Mecho ' CC $@'
- $O$(CC) $(CFLAGS) -Iinclude -w $(DEFINES) -c $<
+lem.pc: lem.pc.in
+ $Mecho ' SED $@'
+ $O$(SED) -e 's|@PATH@|$(LUA_PATH)|;s|@CPATH@|$(LUA_CPATH)|;s|@LIB_INCLUDES@|$(LIB_INCLUDES)|' $< > $@
%.pic.o: %.c config.h
$Mecho ' CC $@'
- $O$(CC) $(CFLAGS) -Iinclude -fPIC -nostartfiles $(DEFINES) -c $< -o $@
+ $O$(CC) $(CFLAGS) -Iinclude -fPIC -nostartfiles -c $< -o $@
-%.o: %.c %.h config.h
- $Mecho ' CC $@'
- $O$(CC) $(CFLAGS) -Iinclude $(DEFINES) -c $< -o $@
+event.o: CFLAGS += -w
%.o: %.c config.h
$Mecho ' CC $@'
- $O$(CC) $(CFLAGS) -Iinclude $(DEFINES) -c $< -o $@
+ $O$(CC) $(CFLAGS) -Iinclude -c $< -o $@
-lem: $(CORE_O:%=lua/%) $(LIB_O:%=lua/%) event.o lem.o
+lem: $(objects)
$Mecho ' LD $@'
- $O$(CC) -rdynamic -lm $(DL) $(LDFLAGS) $^ -o $@
+ $O$(CC) -rdynamic $(LIBRARIES) $(LDFLAGS) $^ -o $@
utils.so: utils.pic.o
$Mecho ' LD $@'
@@ -97,25 +123,37 @@ incdir-install:
lem.h-install: lem.h incdir-install
$Mecho " INSTALL $<"
- $O$(INSTALL) $< $(DESTDIR)$(INCDIR)/$<
+ $O$(INSTALL) -m644 $< $(DESTDIR)$(INCDIR)/$<
%.h-install: %.h incdir-install
$Mecho " INSTALL $(notdir $<)"
- $O$(INSTALL) $< $(DESTDIR)$(INCDIR)/lem/$(notdir $<)
+ $O$(INSTALL) -m644 $< $(DESTDIR)$(INCDIR)/lem/$(notdir $<)
-libdir-install:
- $Mecho " INSTALL -d $(LIBDIR)"
- $O$(INSTALL) -d $(DESTDIR)$(LIBDIR)/lem
+path-install:
+ $Mecho " INSTALL -d $(LUA_PATH)"
+ $O$(INSTALL) -d $(DESTDIR)$(LUA_PATH)/lem
-%.so-install: %.so libdir-install
+%.lua-install: %.lua path-install
$Mecho " INSTALL $<"
- $O$(INSTALL) $< $(DESTDIR)$(LIBDIR)/lem/$<
+ $O$(INSTALL) -m644 $< $(DESTDIR)$(LUA_PATH)/lem/$<
+
+cpath-install:
+ $Mecho " INSTALL -d $(LUA_CPATH)"
+ $O$(INSTALL) -d $(DESTDIR)$(LUA_CPATH)/lem
+
+%.so-install: %.so cpath-install
+ $Mecho " INSTALL $<"
+ $O$(INSTALL) $< $(DESTDIR)$(LUA_CPATH)/lem/$<
+
+pkgdir-install:
+ $Mecho " INSTALL -d $(PKG_CONFIG_PATH)"
+ $O$(INSTALL) -d $(DESTDIR)$(PKG_CONFIG_PATH)
-%.lua-install: %.lua libdir-install
+%.pc-install: %.pc pkgdir-install
$Mecho " INSTALL $<"
- $O$(INSTALL) $< $(DESTDIR)$(LIBDIR)/lem/$<
+ $O$(INSTALL) -m644 $< $(DESTDIR)$(PKG_CONFIG_PATH)/$<
-install: $(headers:%=%-install) $(programs:%=%-install) $(scripts:%=%-install)
+install: lem.pc-install $(headers:%=%-install) $(programs:%=%-install) $(scripts:%=%-install)
clean:
- rm -f config.h $(programs) *.o lua/*.o *.c~ *.h~
+ rm -f config.h lem.pc $(programs) *.o lua/*.o *.c~ *.h~
diff --git a/PKGBUILD.jit b/PKGBUILD.jit
new file mode 100644
index 0000000..79c5f45
--- /dev/null
+++ b/PKGBUILD.jit
@@ -0,0 +1,28 @@
+# Maintainer: Emil Renner Berthing <esmil@mailme.dk>
+
+pkgname=lem
+pkgver=0.1
+pkgrel=1
+pkgdesc="A Lua Event Machine"
+arch=('i686' 'x86_64')
+url="https://github.com/esmil/lem"
+license=('GPL')
+depends=('luajit2')
+optdepends=('lem-streams: for lem-repl')
+source=()
+
+_lua='/usr/bin/luajit2'
+
+build() {
+ cd "$startdir"
+
+ make NDEBUG=1 LUA="$_lua"
+}
+
+package() {
+ cd "$startdir"
+
+ make DESTDIR="$pkgdir/" PREFIX='/usr' LUA="$_lua" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/PKGBUILD.shared b/PKGBUILD.shared
new file mode 100644
index 0000000..ed0a1f2
--- /dev/null
+++ b/PKGBUILD.shared
@@ -0,0 +1,28 @@
+# Maintainer: Emil Renner Berthing <esmil@mailme.dk>
+
+pkgname=lem
+pkgver=0.1
+pkgrel=1
+pkgdesc="A Lua Event Machine"
+arch=('i686' 'x86_64' 'armv5tel' 'armv7l')
+url="https://github.com/esmil/lem"
+license=('GPL')
+depends=('lua>=5.1')
+optdepends=('lem-streams: for lem-repl')
+source=()
+
+_lua='/usr/bin/lua'
+
+build() {
+ cd "$startdir"
+
+ make NDEBUG=1 LUA="$_lua"
+}
+
+package() {
+ cd "$startdir"
+
+ make DESTDIR="$pkgdir/" PREFIX='/usr' LUA="$_lua" install
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/README.markdown b/README.markdown
index 56851b9..f01fa6e 100644
--- a/README.markdown
+++ b/README.markdown
@@ -38,13 +38,21 @@ to `/usr/local/include/`.
Use
$ make clean
- $ make PREFIX=<your custom path> install
+ $ make PREFIX=/install/path install
to change the install path.
Both the Lua 5.1.4 and libev 4.03 sources are included so having Lua or
libev installed on your system is not required to build the Lua Event Machine.
+You can, however, link against a shared Lua or [LuaJIT][] library by
+setting the LUA variable to point to the installed interpreter. E.g:
+
+ $ make clean
+ $ make PREFIX=/install/path LUA=/path/to/lua/or/luajit2 install
+
+[luajit]: http://luajit.org/luajit.html
+
Usage
-----
diff --git a/config.FreeBSD b/config.FreeBSD
index 6ccaf05..d1203ad 100644
--- a/config.FreeBSD
+++ b/config.FreeBSD
@@ -16,9 +16,6 @@
* along with LEM. If not, see <http://www.gnu.org/licenses/>.
*/
-#define LUA_USE_LINUX
-#define LUA_ROOT "@PREFIX@"
-
#define EV_STANDALONE 1
#define EV_USE_MONOTONIC 1
#define EV_USE_CLOCK_SYSCALL 0
diff --git a/config.Linux b/config.Linux
index eae65f3..0889478 100644
--- a/config.Linux
+++ b/config.Linux
@@ -16,9 +16,6 @@
* along with LEM. If not, see <http://www.gnu.org/licenses/>.
*/
-#define LUA_USE_LINUX
-#define LUA_ROOT "@PREFIX@"
-
#define EV_STANDALONE 1
#define EV_USE_MONOTONIC 1
#define EV_USE_CLOCK_SYSCALL 1
diff --git a/include/lem/lauxlib.h b/include/lem/lauxlib.h
deleted file mode 120000
index 5b71e16..0000000
--- a/include/lem/lauxlib.h
+++ /dev/null
@@ -1 +0,0 @@
-../../lua/lauxlib.h \ No newline at end of file
diff --git a/include/lem/lua.h b/include/lem/lua.h
deleted file mode 120000
index e97f648..0000000
--- a/include/lem/lua.h
+++ /dev/null
@@ -1 +0,0 @@
-../../lua/lua.h \ No newline at end of file
diff --git a/include/lem/luaconf.h b/include/lem/luaconf.h
deleted file mode 120000
index 2e851b6..0000000
--- a/include/lem/luaconf.h
+++ /dev/null
@@ -1 +0,0 @@
-../../lua/luaconf.h \ No newline at end of file
diff --git a/lem.h b/lem.h
index 44f6934..a3de0f9 100644
--- a/lem.h
+++ b/lem.h
@@ -20,9 +20,9 @@
#define _LEM_H
#include <lem/config.h>
-#include <lem/lua.h>
-#include <lem/lauxlib.h>
#include <lem/ev.h>
+#include <lua.h>
+#include <lauxlib.h>
#include <lem/macros.h>
#if EV_MULTIPLICITY
diff --git a/lem.pc.in b/lem.pc.in
new file mode 100644
index 0000000..f11ebc2
--- /dev/null
+++ b/lem.pc.in
@@ -0,0 +1,8 @@
+path=@PATH@
+cpath=@CPATH@
+
+Name: lem
+Description: A Lua Event Machine
+Version: 0.1
+URL: https://github.com/esmil/lem
+Cflags: @LIB_INCLUDES@
diff --git a/repl.lua b/repl.lua
index 4673322..11dcb80 100644
--- a/repl.lua
+++ b/repl.lua
@@ -114,4 +114,4 @@ return {
end,
}
--- vim: syntax=lua ts=2 sw=2 noet:
+-- vim: ts=2 sw=2 noet: