diff --git a/Makefile b/Makefile index 5380a86e..395339d4 100644 --- a/Makefile +++ b/Makefile @@ -188,7 +188,7 @@ endef $(BINODIR)/%.bin: $(IMAGEODIR)/%.out @mkdir -p $(BINODIR) - @$(NM) $< | grep -w U && { echo "Firmware has unresolved (but unused) symbols - should be fixed nevertheless!"; exit 1; } || true + @$(NM) $< | grep -w U && { echo "Firmware has undefined (but unused) symbols!"; exit 1; } || true $(ESPTOOL) elf2image --flash_mode dio --flash_freq 40m $< -o $(FIRMWAREDIR) ############################################################# diff --git a/app/Makefile b/app/Makefile index e18139a9..314f0f18 100644 --- a/app/Makefile +++ b/app/Makefile @@ -48,7 +48,8 @@ SUBDIRS= \ websocket \ swTimer \ misc \ - pm \ + pm \ + sjson \ endif # } PDIR @@ -94,14 +95,15 @@ COMPONENTS_eagle.app.v6 = \ dhtlib/libdhtlib.a \ tsl2561/tsl2561lib.a \ http/libhttp.a \ - pm/libpm.a \ + pm/libpm.a \ websocket/libwebsocket.a \ esp-gdbstub/libgdbstub.a \ net/libnodemcu_net.a \ - mbedtls/libmbedtls.a \ + mbedtls/libmbedtls.a \ modules/libmodules.a \ swTimer/libswtimer.a \ - misc/libmisc.a \ + misc/libmisc.a \ + sjson/libsjson.a \ # Inspect the modules library and work out which modules need to be linked. diff --git a/app/modules/sjson.c b/app/modules/sjson.c index ada01b5b..e5ed92f5 100644 --- a/app/modules/sjson.c +++ b/app/modules/sjson.c @@ -11,10 +11,8 @@ #include "c_limits.h" #endif -#define JSONSL_STATE_USER_FIELDS int lua_object_ref; int used_count; -#define JSONSL_NO_JPR - -#include "jsonsl.c" +#include "json_config.h" +#include "jsonsl.h" #define LUA_SJSONLIBNAME "sjson" diff --git a/app/sjson/Makefile b/app/sjson/Makefile new file mode 100644 index 00000000..a4398004 --- /dev/null +++ b/app/sjson/Makefile @@ -0,0 +1,47 @@ +############################################################# +# Required variables for each makefile +# Discard this section from all parent makefiles +# Expected variables (with automatic defaults): +# CSRCS (all "C" files in the dir) +# SUBDIRS (all subdirs with a Makefile) +# GEN_LIBS - list of libs to be generated () +# GEN_IMAGES - list of images to be generated () +# COMPONENTS_xxx - a list of libs/objs in the form +# subdir/lib to be extracted and rolled up into +# a generated lib/image xxx.a () +# +ifndef PDIR +GEN_LIBS = libsjson.a +endif + +STD_CFLAGS=-std=gnu11 -Wimplicit + +############################################################# +# Configuration i.e. compile options etc. +# Target specific stuff (defines etc.) goes in here! +# Generally values applying to a tree are captured in the +# makefile at its root level - these are then overridden +# for a subtree within the makefile rooted therein +# +DEFINES += -include memcompat.h -include json_config.h + +############################################################# +# Recursion Magic - Don't touch this!! +# +# Each subtree potentially has an include directory +# corresponding to the common APIs applicable to modules +# rooted at that subtree. Accordingly, the INCLUDE PATH +# of a module can only contain the include directories up +# its parent path, and not its siblings +# +# Required for each makefile to inherit from the parent +# + +INCLUDES := $(INCLUDES) -I $(PDIR)include +INCLUDES += -I ./ +INCLUDES += -I ./include +INCLUDES += -I ../include +INCLUDES += -I ../../include +PDIR := ../$(PDIR) +sinclude $(PDIR)Makefile + diff --git a/app/sjson/json_config.h b/app/sjson/json_config.h new file mode 100644 index 00000000..8bc13b8d --- /dev/null +++ b/app/sjson/json_config.h @@ -0,0 +1,7 @@ +#ifndef __JSON_CONFIG_H__ +#define __JSON_CONFIG_H__ + +#define JSONSL_STATE_USER_FIELDS int lua_object_ref; int used_count; +#define JSONSL_NO_JPR + +#endif diff --git a/app/sjson/memcompat.h b/app/sjson/memcompat.h new file mode 100644 index 00000000..2e3f84fb --- /dev/null +++ b/app/sjson/memcompat.h @@ -0,0 +1,11 @@ +#ifndef __MEMCOMPAT_H__ +#define __MEMCOMPAT_H__ + +#include "c_types.h" +#include "mem.h" + +static inline void *malloc(size_t sz) { return os_malloc(sz); } +static inline void free(void *p) { return os_free(p); } +static inline void *calloc(size_t n, size_t sz) { return os_zalloc(n*sz); } + +#endif