aboutsummaryrefslogtreecommitdiff
path: root/auto.def
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2019-11-04 08:41:32 +1000
committerSteve Bennett <steveb@workware.net.au>2019-11-09 19:59:15 +1000
commitdd064e670daf910fa50e138ec0c36822405b60f5 (patch)
treec512150b006c3e1dbc7f4575e2d744133caa0b59 /auto.def
parent529c84b4ee31f51925a9ac14247a94a428592c7d (diff)
downloadjimtcl-dd064e670daf910fa50e138ec0c36822405b60f5.zip
jimtcl-dd064e670daf910fa50e138ec0c36822405b60f5.tar.gz
jimtcl-dd064e670daf910fa50e138ec0c36822405b60f5.tar.bz2
json: Add json encoder/decoder
Using the jsmn library for decoding. Based on the original implementation by Svyatoslav Mishyn <juef@openmailbox.org> Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'auto.def')
-rw-r--r--auto.def30
1 files changed, 24 insertions, 6 deletions
diff --git a/auto.def b/auto.def
index e80618a..6ac056f 100644
--- a/auto.def
+++ b/auto.def
@@ -55,6 +55,7 @@ options {
binary - Tcl-compatible 'binary' command
tclprefix - Support for the tcl::prefix command
zlib - Interface to zlib
+ json - JSON encode/decode
These are disabled unless explicitly enabled:
@@ -337,6 +338,8 @@ dict set extdb attrs {
glob { tcl }
history {}
interp { }
+ json { optional }
+ jsonencode { tcl optional }
load { static }
mk { cpp off }
namespace { static }
@@ -372,6 +375,7 @@ dict set extdb info {
load { check {[have-feature dlopen-compat] || [cc-check-function-in-lib dlopen dl]} libdep lib_dlopen }
mk { check {[check-metakit]} libdep lib_mk }
namespace { dep nshelper }
+ json { dep jsonencode extrasrcs jsmn/jsmn.c }
posix { check {[have-feature waitpid]} }
readdir { check {[have-feature opendir]} }
readline { pkg-config readline check {[cc-check-function-in-lib readline readline]} libdep lib_readline}
@@ -460,6 +464,14 @@ if {$jimregexp || [opt-bool jim-regexp]} {
}
}
+foreach mod $extinfo(static-c) {
+ if {[dict exists $extdb info $mod extrasrcs]} {
+ foreach src [dict get $extdb info $mod extrasrcs] {
+ lappend extra_objs {*}[file rootname $src].o
+ }
+ }
+}
+
# poor-man's signals
if {"signal" ni $extinfo(static-c)} {
lappend extra_objs jim-nosignal.o
@@ -501,13 +513,19 @@ set lines {}
foreach mod $extinfo(module-c) {
set objs {}
set libs [get-define LDLIBS_$mod]
- set src jim-$mod.c
- lappend lines "$mod.so: $src"
- set obj [file rootname $src].o
- lappend lines "\t\$(ECHO)\t\"\tCC\t$obj\""
- lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(SHOBJ_CFLAGS) -c -o $obj $src"
+ set srcs jim-$mod.c
+ if {[dict exists $extdb info $mod extrasrcs]} {
+ lappend srcs {*}[dict get $extdb info $mod extrasrcs]
+ }
+ lappend lines "$mod.so: $srcs"
+ foreach src $srcs {
+ set obj [file rootname $src].o
+ lappend objs $obj
+ lappend lines "\t\$(ECHO)\t\"\tCC\t$obj\""
+ lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(SHOBJ_CFLAGS) -c -o $obj $src"
+ }
lappend lines "\t\$(ECHO)\t\"\tLDSO\t\$@\""
- lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(LDFLAGS) \$(SHOBJ_LDFLAGS) -o \$@ $obj \$(SH_LIBJIM) $libs"
+ lappend lines "\t\$(Q)\$(CC) \$(CFLAGS) \$(LDFLAGS) \$(SHOBJ_LDFLAGS) -o \$@ $objs \$(SH_LIBJIM) $libs"
lappend lines ""
}
define BUILD_SHOBJS [join $lines \n]