summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2013-12-28 16:13:08 (GMT)
committerRemko Tronçon <git@el-tramo.be>2014-01-03 11:09:06 (GMT)
commit0b19dc7292b7672c9fbb711a411c392bc5b2bb34 (patch)
treed5af147193d52a3e63d348dd794ca92cdd934974 /Sluift/SConscript.variant
parent5a89265623214164fa7ce36721de05183d53058d (diff)
downloadswift-0b19dc7292b7672c9fbb711a411c392bc5b2bb34.zip
swift-0b19dc7292b7672c9fbb711a411c392bc5b2bb34.tar.bz2
Sluift: Custom console/interpreter
- Prints results of each command (if it can be interpreted as an expression) - Stores results of last command in _1, _2, ... - Supports tab completion - Compatible with Lua 5.2 Other changes: - Add support for specifying custom editline library - Don't load sluift into global namespace. Tab completion should be convenient enough. Change-Id: I2a26346469d67c281d09d47cacaa0b267f5ea9f9
Diffstat (limited to 'Sluift/SConscript.variant')
-rw-r--r--Sluift/SConscript.variant29
1 files changed, 23 insertions, 6 deletions
diff --git a/Sluift/SConscript.variant b/Sluift/SConscript.variant
index 92ee493..d0e2b18 100644
--- a/Sluift/SConscript.variant
+++ b/Sluift/SConscript.variant
@@ -6,12 +6,29 @@ Import('sluift_variant')
Import('sluift_sources')
if sluift_variant == 'exe' :
- env["SLUIFT"] = sluift_env.Program("sluift", sluift_sources + [
- "#/Sluift/lua.c",
- "#/Sluift/linit.c",
- ])
- if sluift_env.get("SLUIFT_INSTALLDIR", "") :
- sluift_env.Install(os.path.join(sluift_env["SLUIFT_INSTALLDIR"], "bin"), env["SLUIFT"])
+ common_objects = sluift_env.StaticObject(sluift_sources)
+
+ sluift_exe_env = sluift_env.Clone()
+ tokenize = sluift_exe_env.StaticObject("#/Sluift/tokenize.cpp")
+ exe_sources = tokenize + [
+ "#/Sluift/Console.cpp",
+ "#/Sluift/Terminal.cpp",
+ "#/Sluift/StandardTerminal.cpp",
+ "#/Sluift/Completer.cpp",
+ "#/Sluift/main.cpp",
+ ]
+
+ if sluift_exe_env.get("HAVE_EDITLINE", False) :
+ sluift_exe_env.Append(CPPDEFINES = ["HAVE_EDITLINE"])
+ sluift_exe_env.MergeFlags(sluift_exe_env["EDITLINE_FLAGS"])
+ exe_sources += ["#/Sluift/EditlineTerminal.cpp"]
+
+ env["SLUIFT"] = sluift_exe_env.Program("sluift", common_objects + exe_sources)
+ if sluift_exe_env.get("SLUIFT_INSTALLDIR", "") :
+ sluift_exe_env.Install(os.path.join(sluift_exe_env["SLUIFT_INSTALLDIR"], "bin"), env["SLUIFT"])
+
+ # Unit tests
+ env.Append(UNITTEST_OBJECTS = tokenize + ["#/Sluift/UnitTest/TokenizeTest.cpp"])
else :
sluift_env["SLUIFT_DLL_SUFFIX"] = "${SHLIBSUFFIX}"
if sluift_env["PLATFORM"] == "darwin" :