diff options
author | Emil Renner Berthing <esmil@mailme.dk> | 2011-03-10 00:37:19 +0100 |
---|---|---|
committer | Emil Renner Berthing <esmil@mailme.dk> | 2011-03-11 14:52:22 +0100 |
commit | 0b3d18658aa1a5236b0c6ecfb5939eaaa14376a2 (patch) | |
tree | 5ef7eb83140c09cef0cbe07338745c01a63d50bc | |
parent | 4164c50e0ebef7461548fa140073f88d8dcde295 (diff) | |
download | lem-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-- | .gitignore | 1 | ||||
-rw-r--r-- | Makefile | 138 | ||||
-rw-r--r-- | PKGBUILD.jit | 28 | ||||
-rw-r--r-- | PKGBUILD.shared | 28 | ||||
-rw-r--r-- | README.markdown | 10 | ||||
-rw-r--r-- | config.FreeBSD | 3 | ||||
-rw-r--r-- | config.Linux | 3 | ||||
l--------- | include/lem/lauxlib.h | 1 | ||||
l--------- | include/lem/lua.h | 1 | ||||
l--------- | include/lem/luaconf.h | 1 | ||||
-rw-r--r-- | lem.h | 4 | ||||
-rw-r--r-- | lem.pc.in | 8 | ||||
-rw-r--r-- | repl.lua | 2 |
13 files changed, 165 insertions, 63 deletions
@@ -4,4 +4,5 @@ src/ pkg/ config.h +lem.pc lem @@ -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 @@ -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@ @@ -114,4 +114,4 @@ return { end, } --- vim: syntax=lua ts=2 sw=2 noet: +-- vim: ts=2 sw=2 noet: |