Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/facebook/luaffifb.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam Gross <colesbury@gmail.com>2015-11-15 23:23:24 +0300
committerSam Gross <colesbury@gmail.com>2015-11-15 23:23:24 +0300
commit385c44d99302695e9bfa71fa0bdc6e900911e15b (patch)
tree5c985ea31e97c33cf33f5307613277a9ea0b87e4
parent6c1660b5f433af74951ef7a73a5a30c2f78c4eb0 (diff)
parent7203c89875b42a11de1f2982f8f2a7efae265f0e (diff)
Merge pull request #3 from colesbury/travis
Add Travis CI build for Lua 5.1 and 5.2
-rw-r--r--.travis.yml25
-rwxr-xr-x.travis/install_lua.sh49
-rw-r--r--Makefile58
-rw-r--r--luaffi-scm-1.rockspec6
-rw-r--r--test.c2
-rw-r--r--test.lua2
6 files changed, 93 insertions, 49 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..291721a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,25 @@
+language: c
+
+sudo: false
+
+compiler:
+ - gcc
+ - clang
+
+os:
+ - linux
+ - osx
+
+env:
+ - LUA_VERSION=LUA51
+ - LUA_VERSION=LUA52
+
+before_install:
+ - export PATH="$TRAVIS_BUILD_DIR/install/bin:$PATH"
+ - PLAT="${TRAVIS_OS_NAME/osx/macosx}" TMPSRC="$TRAVIS_BUILD_DIR/.src" PREFIX="$TRAVIS_BUILD_DIR/install" .travis/install_lua.sh
+
+install:
+ - luarocks make
+
+script:
+ - lua test.lua
diff --git a/.travis/install_lua.sh b/.travis/install_lua.sh
new file mode 100755
index 0000000..c2c0238
--- /dev/null
+++ b/.travis/install_lua.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+
+set -e
+
+if [ -z "$PREFIX" ]; then
+ echo "Missing PREFIX"
+ exit 1
+fi
+
+if [ -z "$TMPSRC" ]; then
+ echo "Missing TMPSRC"
+ exit 1
+fi
+
+export PATH="$PREFIX/bin:$PATH"
+
+mkdir -p "$PREFIX"
+mkdir -p "$TMPSRC"
+
+if [ "$LUA_VERSION" == "LUA51" ]; then
+ URL="http://www.lua.org/ftp/lua-5.2.4.tar.gz"
+elif [ "$LUA_VERSION" == "LUA52" ]; then
+ URL="http://www.lua.org/ftp/lua-5.2.4.tar.gz"
+elif [ "$LUA_VERSION" == "LUA53" ]; then
+ URL="http://www.lua.org/ftp/lua-5.3.1.tar.gz"
+else
+ echo "Invalid Lua version: LUA_VERSION=$LUA_VERSION"
+ exit 1
+fi
+
+# Install lua to $PREFIX
+mkdir -p "$TMPSRC/lua-src" && pushd "$TMPSRC/lua-src"
+curl "$URL" | tar xz --strip-components 1
+sed -i -e 's~#define LUA_ROOT.*$~#define LUA_ROOT "'"$PREFIX/"'"~g' src/luaconf.h
+make PLAT=$PLAT
+make PLAT=$PLAT INSTALL_TOP="$PREFIX" install
+popd
+
+lua -v
+
+# Install luarocks to $PREFIX
+mkdir -p "$TMPSRC/luarocks-src" && pushd "$TMPSRC/luarocks-src"
+curl --location "http://luarocks.org/releases/luarocks-2.2.2.tar.gz" | tar xz --strip-components 1
+./configure --prefix="$PREFIX"
+make install
+popd
+
+luarocks --version
+
diff --git a/Makefile b/Makefile
index f1cba72..715b269 100644
--- a/Makefile
+++ b/Makefile
@@ -1,41 +1,24 @@
-.PHONY: all clean test headers macosx test_macosx posix test_posix
-
-PKG_CONFIG=pkg-config
+#
+# Use luarocks to install LuaFFI:
+# > git clone https://github.com/facebook/luaffifb
+# > cd luaffifb && luarocks make
+#
+# To rebuild the call_* headers:
+# > rm call_*.h && make headers
+#
+
+.PHONY: build clean headers
LUA=lua
-LUA_CFLAGS=`$(PKG_CONFIG) --cflags lua5.2 2>/dev/null || $(PKG_CONFIG) --cflags lua`
-SOCFLAGS=-fPIC
-SOCC=$(CC) -shared $(SOCFLAGS)
-CFLAGS=-fPIC -g -Wall -Werror $(LUA_CFLAGS) -fvisibility=hidden -Wno-unused-function --std=gnu99
-
-MODNAME=ffi
-MODSO=$(MODNAME).so
-ifeq (Darwin, $(shell uname -s))
- TESTSO=libtest_cdecl.dylib
-else
- TESTSO=libtest_cdecl.so
-endif
+build:
+ luarocks make
-all:
- if [ `uname` = "Darwin" ]; then $(MAKE) macosx; else $(MAKE) posix; fi
+clean:
+ rm -f *.o *.so *.dylib
headers:
$(MAKE) call_x86.h call_x64.h call_x64win.h
-test:
- if [ `uname` = "Darwin" ]; then $(MAKE) test_macosx; else $(MAKE) test_posix; fi
-
-macosx:
- $(MAKE) posix "SOCC=MACOSX_DEPLOYMENT_TARGET=10.3 $(CC) -dynamiclib -single_module -undefined dynamic_lookup $(SOCFLAGS)"
-
-test_macosx:
- $(MAKE) test_posix "SOCC=MACOSX_DEPLOYMENT_TARGET=10.3 $(CC) -dynamiclib -single_module -undefined dynamic_lookup $(SOCFLAGS)"
-
-posix: $(MODSO) $(TESTSO)
-
-clean:
- rm -f *.o *.so *.dylib
-
call_x86.h: call_x86.dasc dynasm/*.lua
$(LUA) dynasm/dynasm.lua -LN -o $@ $<
@@ -44,16 +27,3 @@ call_x64.h: call_x86.dasc dynasm/*.lua
call_x64win.h: call_x86.dasc dynasm/*.lua
$(LUA) dynasm/dynasm.lua -D X64 -D X64WIN -LN -o $@ $<
-
-%.o: %.c *.h dynasm/*.h call_x86.h call_x64.h call_x64win.h
- $(CC) $(CFLAGS) -o $@ -c $<
-
-$(MODSO): ffi.o ctype.o parser.o call.o
- $(SOCC) $^ -o $@
-
-$(TESTSO): test.o
- $(SOCC) $^ -o $@
-
-test_posix: $(TESTSO) $(MODSO)
- LD_LIBRARY_PATH=./ $(LUA) test.lua
-
diff --git a/luaffi-scm-1.rockspec b/luaffi-scm-1.rockspec
index 59dd4a8..42cea90 100644
--- a/luaffi-scm-1.rockspec
+++ b/luaffi-scm-1.rockspec
@@ -20,13 +20,15 @@ dependencies = {
build = {
type = "builtin",
modules = {
- ffi = {
+ ['ffi'] = {
incdirs = {
"dynasm"
},
sources = {
"call.c", "ctype.c", "ffi.c", "parser.c",
}
- }
+ },
+ ['ffi.libtest'] = 'test.c',
+ ['ffi.test'] = 'test.lua',
}
}
diff --git a/test.c b/test.c
index 45077e2..20f5d13 100644
--- a/test.c
+++ b/test.c
@@ -19,10 +19,8 @@
#include <errno.h>
#endif
-#if __STDC_VERSION__+0 >= 199901L
#include <complex.h>
#define HAVE_COMPLEX
-#endif
#ifdef __cplusplus
# define EXTERN_C extern "C"
diff --git a/test.lua b/test.lua
index c0a0342..8472863 100644
--- a/test.lua
+++ b/test.lua
@@ -10,7 +10,7 @@ io.stdout:setvbuf('no')
local ffi = require 'ffi'
local dlls = {}
-dlls.__cdecl = ffi.load('test_cdecl')
+dlls.__cdecl = ffi.load(package.searchpath('ffi.libtest', package.cpath))
if ffi.arch == 'x86' and ffi.os == 'Windows' then
dlls.__stdcall = ffi.load('test_stdcall')