diff options
author | Remko Tronçon <git@el-tramo.be> | 2011-02-25 19:55:03 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2011-02-25 22:09:39 (GMT) |
commit | 7e4b8e330c99a1db81bdf12b7aab41f5890625e5 (patch) | |
tree | a9d4fe06c68048d339e6e79b9f6e0f6496beac8e | |
parent | 707eae7dafbbe0625e2392d19072ff6d3be2c14a (diff) | |
download | swift-contrib-7e4b8e330c99a1db81bdf12b7aab41f5890625e5.zip swift-contrib-7e4b8e330c99a1db81bdf12b7aab41f5890625e5.tar.bz2 |
Add statically linked sluift.
-rw-r--r-- | 3rdParty/Lua/SConscript | 3 | ||||
-rw-r--r-- | BuildTools/SCons/SConstruct | 7 | ||||
-rw-r--r-- | Sluift/SConscript | 13 | ||||
-rw-r--r-- | Sluift/linit.c | 39 |
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); + } +} + |