diff options
author | Sam Gross <colesbury@gmail.com> | 2015-11-15 23:23:24 +0300 |
---|---|---|
committer | Sam Gross <colesbury@gmail.com> | 2015-11-15 23:23:24 +0300 |
commit | 385c44d99302695e9bfa71fa0bdc6e900911e15b (patch) | |
tree | 5c985ea31e97c33cf33f5307613277a9ea0b87e4 | |
parent | 6c1660b5f433af74951ef7a73a5a30c2f78c4eb0 (diff) | |
parent | 7203c89875b42a11de1f2982f8f2a7efae265f0e (diff) |
Merge pull request #3 from colesbury/travis
Add Travis CI build for Lua 5.1 and 5.2
-rw-r--r-- | .travis.yml | 25 | ||||
-rwxr-xr-x | .travis/install_lua.sh | 49 | ||||
-rw-r--r-- | Makefile | 58 | ||||
-rw-r--r-- | luaffi-scm-1.rockspec | 6 | ||||
-rw-r--r-- | test.c | 2 | ||||
-rw-r--r-- | test.lua | 2 |
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 + @@ -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', } } @@ -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" @@ -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') |