summaryrefslogtreecommitdiff
path: root/support/cJSON-master/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'support/cJSON-master/Makefile')
-rw-r--r--support/cJSON-master/Makefile157
1 files changed, 157 insertions, 0 deletions
diff --git a/support/cJSON-master/Makefile b/support/cJSON-master/Makefile
new file mode 100644
index 0000000..33ecb2e
--- /dev/null
+++ b/support/cJSON-master/Makefile
@@ -0,0 +1,157 @@
+CJSON_OBJ = cJSON.o
+UTILS_OBJ = cJSON_Utils.o
+CJSON_LIBNAME = libcjson
+UTILS_LIBNAME = libcjson_utils
+CJSON_TEST = cJSON_test
+
+CJSON_TEST_SRC = cJSON.c test.c
+
+LDLIBS = -lm
+
+LIBVERSION = 1.7.9
+CJSON_SOVERSION = 1
+UTILS_SOVERSION = 1
+
+CJSON_SO_LDFLAG=-Wl,-soname=$(CJSON_LIBNAME).so.$(CJSON_SOVERSION)
+UTILS_SO_LDFLAG=-Wl,-soname=$(UTILS_LIBNAME).so.$(UTILS_SOVERSION)
+
+PREFIX ?= /usr/local
+INCLUDE_PATH ?= include/cjson
+LIBRARY_PATH ?= lib
+
+INSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
+INSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
+
+INSTALL ?= cp -a
+
+# validate gcc version for use fstack-protector-strong
+MIN_GCC_VERSION = "4.9"
+GCC_VERSION := "`$(CC) -dumpversion`"
+IS_GCC_ABOVE_MIN_VERSION := $(shell expr "$(GCC_VERSION)" ">=" "$(MIN_GCC_VERSION)")
+ifeq "$(IS_GCC_ABOVE_MIN_VERSION)" "1"
+ CFLAGS += -fstack-protector-strong
+else
+ CFLAGS += -fstack-protector
+endif
+
+R_CFLAGS = -fPIC -std=c89 -pedantic -Wall -Werror -Wstrict-prototypes -Wwrite-strings -Wshadow -Winit-self -Wcast-align -Wformat=2 -Wmissing-prototypes -Wstrict-overflow=2 -Wcast-qual -Wc++-compat -Wundef -Wswitch-default -Wconversion $(CFLAGS)
+
+uname := $(shell sh -c 'uname -s 2>/dev/null || echo false')
+
+#library file extensions
+SHARED = so
+STATIC = a
+
+## create dynamic (shared) library on Darwin (base OS for MacOSX and IOS)
+ifeq (Darwin, $(uname))
+ SHARED = dylib
+ CJSON_SO_LDFLAG = ""
+ UTILS_SO_LDFLAG = ""
+endif
+
+#cJSON library names
+CJSON_SHARED = $(CJSON_LIBNAME).$(SHARED)
+CJSON_SHARED_VERSION = $(CJSON_LIBNAME).$(SHARED).$(LIBVERSION)
+CJSON_SHARED_SO = $(CJSON_LIBNAME).$(SHARED).$(CJSON_SOVERSION)
+CJSON_STATIC = $(CJSON_LIBNAME).$(STATIC)
+
+#cJSON_Utils library names
+UTILS_SHARED = $(UTILS_LIBNAME).$(SHARED)
+UTILS_SHARED_VERSION = $(UTILS_LIBNAME).$(SHARED).$(LIBVERSION)
+UTILS_SHARED_SO = $(UTILS_LIBNAME).$(SHARED).$(UTILS_SOVERSION)
+UTILS_STATIC = $(UTILS_LIBNAME).$(STATIC)
+
+SHARED_CMD = $(CC) -shared -o
+
+.PHONY: all shared static tests clean install
+
+all: shared static tests
+
+shared: $(CJSON_SHARED) $(UTILS_SHARED)
+
+static: $(CJSON_STATIC) $(UTILS_STATIC)
+
+tests: $(CJSON_TEST)
+
+test: tests
+ ./$(CJSON_TEST)
+
+.c.o:
+ $(CC) -c $(R_CFLAGS) $<
+
+#tests
+#cJSON
+$(CJSON_TEST): $(CJSON_TEST_SRC) cJSON.h
+ $(CC) $(R_CFLAGS) $(CJSON_TEST_SRC) -o $@ $(LDLIBS) -I.
+
+#static libraries
+#cJSON
+$(CJSON_STATIC): $(CJSON_OBJ)
+ $(AR) rcs $@ $<
+#cJSON_Utils
+$(UTILS_STATIC): $(UTILS_OBJ)
+ $(AR) rcs $@ $<
+
+#shared libraries .so.1.0.0
+#cJSON
+$(CJSON_SHARED_VERSION): $(CJSON_OBJ)
+ $(CC) -shared -o $@ $< $(CJSON_SO_LDFLAG) $(LDFLAGS)
+#cJSON_Utils
+$(UTILS_SHARED_VERSION): $(UTILS_OBJ)
+ $(CC) -shared -o $@ $< $(UTILS_SO_LDFLAG) $(LDFLAGS)
+
+#objects
+#cJSON
+$(CJSON_OBJ): cJSON.c cJSON.h
+#cJSON_Utils
+$(UTILS_OBJ): cJSON_Utils.c cJSON_Utils.h
+
+
+#links .so -> .so.1 -> .so.1.0.0
+#cJSON
+$(CJSON_SHARED_SO): $(CJSON_SHARED_VERSION)
+ ln -s $(CJSON_SHARED_VERSION) $(CJSON_SHARED_SO)
+$(CJSON_SHARED): $(CJSON_SHARED_SO)
+ ln -s $(CJSON_SHARED_SO) $(CJSON_SHARED)
+#cJSON_Utils
+$(UTILS_SHARED_SO): $(UTILS_SHARED_VERSION)
+ ln -s $(UTILS_SHARED_VERSION) $(UTILS_SHARED_SO)
+$(UTILS_SHARED): $(UTILS_SHARED_SO)
+ ln -s $(UTILS_SHARED_SO) $(UTILS_SHARED)
+
+#install
+#cJSON
+install-cjson:
+ mkdir -p $(INSTALL_LIBRARY_PATH) $(INSTALL_INCLUDE_PATH)
+ $(INSTALL) cJSON.h $(INSTALL_INCLUDE_PATH)
+ $(INSTALL) $(CJSON_SHARED) $(CJSON_SHARED_SO) $(CJSON_SHARED_VERSION) $(INSTALL_LIBRARY_PATH)
+#cJSON_Utils
+install-utils: install-cjson
+ $(INSTALL) cJSON_Utils.h $(INSTALL_INCLUDE_PATH)
+ $(INSTALL) $(UTILS_SHARED) $(UTILS_SHARED_SO) $(UTILS_SHARED_VERSION) $(INSTALL_LIBRARY_PATH)
+
+install: install-cjson install-utils
+
+#uninstall
+#cJSON
+uninstall-cjson: uninstall-utils
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED)
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED_VERSION)
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED_SO)
+ rmdir $(INSTALL_LIBRARY_PATH)
+ $(RM) $(INSTALL_INCLUDE_PATH)/cJSON.h
+ rmdir $(INSTALL_INCLUDE_PATH)
+#cJSON_Utils
+uninstall-utils:
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED)
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED_VERSION)
+ $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED_SO)
+ $(RM) $(INSTALL_INCLUDE_PATH)/cJSON_Utils.h
+
+uninstall: uninstall-utils uninstall-cjson
+
+clean:
+ $(RM) $(CJSON_OBJ) $(UTILS_OBJ) #delete object files
+ $(RM) $(CJSON_SHARED) $(CJSON_SHARED_VERSION) $(CJSON_SHARED_SO) $(CJSON_STATIC) #delete cJSON
+ $(RM) $(UTILS_SHARED) $(UTILS_SHARED_VERSION) $(UTILS_SHARED_SO) $(UTILS_STATIC) #delete cJSON_Utils
+ $(RM) $(CJSON_TEST) #delete test