| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | CJSON_OBJ = cJSON.oUTILS_OBJ = cJSON_Utils.oCJSON_LIBNAME = libcjsonUTILS_LIBNAME = libcjson_utilsCJSON_TEST = cJSON_testCJSON_TEST_SRC = cJSON.c test.cLDLIBS = -lmLIBVERSION = 1.7.12CJSON_SOVERSION = 1UTILS_SOVERSION = 1CJSON_SO_LDFLAG=-Wl,-soname=$(CJSON_LIBNAME).so.$(CJSON_SOVERSION)UTILS_SO_LDFLAG=-Wl,-soname=$(UTILS_LIBNAME).so.$(UTILS_SOVERSION)PREFIX ?= /usr/localINCLUDE_PATH ?= include/cjsonLIBRARY_PATH ?= libINSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)INSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)INSTALL ?= cp -a# validate gcc version for use fstack-protector-strongMIN_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-strongelse    CFLAGS += -fstack-protectorendifR_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 extensionsSHARED = soSTATIC = 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 namesCJSON_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 namesUTILS_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 installall: shared static testsshared: $(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 cJSON.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#cJSONinstall-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_Utilsinstall-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#cJSONuninstall-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_Utilsuninstall-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.huninstall: uninstall-utils uninstall-cjsonclean:	$(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
 |