summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-02-25 19:55:03 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-02-25 22:09:39 (GMT)
commit7e4b8e330c99a1db81bdf12b7aab41f5890625e5 (patch)
treea9d4fe06c68048d339e6e79b9f6e0f6496beac8e
parent707eae7dafbbe0625e2392d19072ff6d3be2c14a (diff)
downloadswift-contrib-7e4b8e330c99a1db81bdf12b7aab41f5890625e5.zip
swift-contrib-7e4b8e330c99a1db81bdf12b7aab41f5890625e5.tar.bz2
Add statically linked sluift.
-rw-r--r--3rdParty/Lua/SConscript3
-rw-r--r--BuildTools/SCons/SConstruct7
-rw-r--r--Sluift/SConscript13
-rw-r--r--Sluift/linit.c39
4 files changed, 61 insertions, 1 deletions
diff --git a/3rdParty/Lua/SConscript b/3rdParty/Lua/SConscript
index cd65061..c3e2801 100644
--- a/3rdParty/Lua/SConscript
+++ b/3rdParty/Lua/SConscript
@@ -68,6 +68,9 @@ if env.get("LUA_BUNDLED", False) :
lua_env = myenv.Clone()
lua_env.MergeFlags(lua_env["LUA_FLAGS"])
+ if lua_env.get("HAVE_READLINE", False) :
+ lua_env.Append(CPPDEFINES = ["LUA_USE_READLINE"])
+ lua_env.MergeFlags(lua_env["READLINE_FLAGS"])
lua_env.Program("lua", [
"src/linit.c",
"src/lua.c",
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index af2d747..0c1cf94 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -499,6 +499,13 @@ conf.Finish()
# Lua
env["LUA_BUNDLED"] = 1
+# Readline
+conf = Configure(conf_env)
+if conf.CheckCHeader(["stdio.h", "readline/readline.h"]) and conf.CheckLib("readline") :
+ env["HAVE_READLINE"] = True
+ env["READLINE_FLAGS"] = { "LIBS": ["readline"] }
+conf.Finish()
+
# Avahi
avahi_conf_env = conf_env.Clone()
avahi_flags = {}
diff --git a/Sluift/SConscript b/Sluift/SConscript
index dbf7459..49d6de3 100644
--- a/Sluift/SConscript
+++ b/Sluift/SConscript
@@ -1,4 +1,4 @@
-Import("env")
+Import(["env", "conf_env"])
if env["SCONS_STAGE"] == "build" :
myenv = env.Clone()
@@ -15,3 +15,14 @@ if env["SCONS_STAGE"] == "build" :
myenv.SharedLibrary("sluift", [
"sluift.cpp",
])
+
+ sluift_bin_env = myenv.Clone()
+ sluift_bin_env.Install(".", "#/3rdParty/Lua/src/lua.c")
+ if sluift_bin_env.get("HAVE_READLINE", False) :
+ sluift_bin_env.Append(CPPDEFINES = ["LUA_USE_READLINE"])
+ sluift_bin_env.MergeFlags(sluift_bin_env["READLINE_FLAGS"])
+ sluift_bin_env.Program("sluift", [
+ "sluift.cpp",
+ "lua.c",
+ "linit.c",
+ ])
diff --git a/Sluift/linit.c b/Sluift/linit.c
new file mode 100644
index 0000000..4a3bd24
--- /dev/null
+++ b/Sluift/linit.c
@@ -0,0 +1,39 @@
+/*
+** $Id: linit.c,v 1.14.1.1 2007/12/27 13:02:25 roberto Exp $
+** Initialization of libraries for lua.c
+** See Copyright Notice in lua.h
+*/
+
+
+#define linit_c
+#define LUA_LIB
+
+#include "lua.h"
+
+#include "lualib.h"
+#include "lauxlib.h"
+#include "sluift.h"
+
+static const luaL_Reg lualibs[] = {
+ {"", luaopen_base},
+ {LUA_LOADLIBNAME, luaopen_package},
+ {LUA_TABLIBNAME, luaopen_table},
+ {LUA_IOLIBNAME, luaopen_io},
+ {LUA_OSLIBNAME, luaopen_os},
+ {LUA_STRLIBNAME, luaopen_string},
+ {LUA_MATHLIBNAME, luaopen_math},
+ {LUA_DBLIBNAME, luaopen_debug},
+ {"sluift", luaopen_sluift},
+ {NULL, NULL}
+};
+
+
+LUALIB_API void luaL_openlibs (lua_State *L) {
+ const luaL_Reg *lib = lualibs;
+ for (; lib->func; lib++) {
+ lua_pushcfunction(L, lib->func);
+ lua_pushstring(L, lib->name);
+ lua_call(L, 1, 0);
+ }
+}
+