19750e409Sopenharmony_ciCJSON_OBJ = cJSON.o 29750e409Sopenharmony_ciUTILS_OBJ = cJSON_Utils.o 39750e409Sopenharmony_ciCJSON_LIBNAME = libcjson 49750e409Sopenharmony_ciUTILS_LIBNAME = libcjson_utils 59750e409Sopenharmony_ciCJSON_TEST = cJSON_test 69750e409Sopenharmony_ci 79750e409Sopenharmony_ciCJSON_TEST_SRC = cJSON.c test.c 89750e409Sopenharmony_ci 99750e409Sopenharmony_ciLDLIBS = -lm 109750e409Sopenharmony_ci 119750e409Sopenharmony_ciLIBVERSION = 1.7.17 129750e409Sopenharmony_ciCJSON_SOVERSION = 1 139750e409Sopenharmony_ciUTILS_SOVERSION = 1 149750e409Sopenharmony_ci 159750e409Sopenharmony_ciCJSON_SO_LDFLAG=-Wl,-soname=$(CJSON_LIBNAME).so.$(CJSON_SOVERSION) 169750e409Sopenharmony_ciUTILS_SO_LDFLAG=-Wl,-soname=$(UTILS_LIBNAME).so.$(UTILS_SOVERSION) 179750e409Sopenharmony_ci 189750e409Sopenharmony_ciPREFIX ?= /usr/local 199750e409Sopenharmony_ciINCLUDE_PATH ?= include/cjson 209750e409Sopenharmony_ciLIBRARY_PATH ?= lib 219750e409Sopenharmony_ci 229750e409Sopenharmony_ciINSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH) 239750e409Sopenharmony_ciINSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH) 249750e409Sopenharmony_ci 259750e409Sopenharmony_ciINSTALL ?= cp -a 269750e409Sopenharmony_ci 279750e409Sopenharmony_ciCC = gcc -std=c89 289750e409Sopenharmony_ci 299750e409Sopenharmony_ci# validate gcc version for use fstack-protector-strong 309750e409Sopenharmony_ciMIN_GCC_VERSION = "4.9" 319750e409Sopenharmony_ciGCC_VERSION := "`$(CC) -dumpversion`" 329750e409Sopenharmony_ciIS_GCC_ABOVE_MIN_VERSION := $(shell expr "$(GCC_VERSION)" ">=" "$(MIN_GCC_VERSION)") 339750e409Sopenharmony_ciifeq "$(IS_GCC_ABOVE_MIN_VERSION)" "1" 349750e409Sopenharmony_ci CFLAGS += -fstack-protector-strong 359750e409Sopenharmony_cielse 369750e409Sopenharmony_ci CFLAGS += -fstack-protector 379750e409Sopenharmony_ciendif 389750e409Sopenharmony_ci 399750e409Sopenharmony_ciPIC_FLAGS = -fPIC 409750e409Sopenharmony_ciR_CFLAGS = $(PIC_FLAGS) -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) 419750e409Sopenharmony_ci 429750e409Sopenharmony_ciuname := $(shell sh -c 'uname -s 2>/dev/null || echo false') 439750e409Sopenharmony_ci 449750e409Sopenharmony_ci#library file extensions 459750e409Sopenharmony_ciSHARED = so 469750e409Sopenharmony_ciSTATIC = a 479750e409Sopenharmony_ci 489750e409Sopenharmony_ci## create dynamic (shared) library on Darwin (base OS for MacOSX and IOS) 499750e409Sopenharmony_ciifeq (Darwin, $(uname)) 509750e409Sopenharmony_ci SHARED = dylib 519750e409Sopenharmony_ci CJSON_SO_LDFLAG = "" 529750e409Sopenharmony_ci UTILS_SO_LDFLAG = "" 539750e409Sopenharmony_ciendif 549750e409Sopenharmony_ci 559750e409Sopenharmony_ci#cJSON library names 569750e409Sopenharmony_ciCJSON_SHARED = $(CJSON_LIBNAME).$(SHARED) 579750e409Sopenharmony_ciCJSON_SHARED_VERSION = $(CJSON_LIBNAME).$(SHARED).$(LIBVERSION) 589750e409Sopenharmony_ciCJSON_SHARED_SO = $(CJSON_LIBNAME).$(SHARED).$(CJSON_SOVERSION) 599750e409Sopenharmony_ciCJSON_STATIC = $(CJSON_LIBNAME).$(STATIC) 609750e409Sopenharmony_ci 619750e409Sopenharmony_ci#cJSON_Utils library names 629750e409Sopenharmony_ciUTILS_SHARED = $(UTILS_LIBNAME).$(SHARED) 639750e409Sopenharmony_ciUTILS_SHARED_VERSION = $(UTILS_LIBNAME).$(SHARED).$(LIBVERSION) 649750e409Sopenharmony_ciUTILS_SHARED_SO = $(UTILS_LIBNAME).$(SHARED).$(UTILS_SOVERSION) 659750e409Sopenharmony_ciUTILS_STATIC = $(UTILS_LIBNAME).$(STATIC) 669750e409Sopenharmony_ci 679750e409Sopenharmony_ciSHARED_CMD = $(CC) -shared -o 689750e409Sopenharmony_ci 699750e409Sopenharmony_ci.PHONY: all shared static tests clean install 709750e409Sopenharmony_ci 719750e409Sopenharmony_ciall: shared static tests 729750e409Sopenharmony_ci 739750e409Sopenharmony_cishared: $(CJSON_SHARED) $(UTILS_SHARED) 749750e409Sopenharmony_ci 759750e409Sopenharmony_cistatic: $(CJSON_STATIC) $(UTILS_STATIC) 769750e409Sopenharmony_ci 779750e409Sopenharmony_citests: $(CJSON_TEST) 789750e409Sopenharmony_ci 799750e409Sopenharmony_citest: tests 809750e409Sopenharmony_ci ./$(CJSON_TEST) 819750e409Sopenharmony_ci 829750e409Sopenharmony_ci.c.o: 839750e409Sopenharmony_ci $(CC) -c $(R_CFLAGS) $< 849750e409Sopenharmony_ci 859750e409Sopenharmony_ci#tests 869750e409Sopenharmony_ci#cJSON 879750e409Sopenharmony_ci$(CJSON_TEST): $(CJSON_TEST_SRC) cJSON.h 889750e409Sopenharmony_ci $(CC) $(R_CFLAGS) $(CJSON_TEST_SRC) -o $@ $(LDLIBS) -I. 899750e409Sopenharmony_ci 909750e409Sopenharmony_ci#static libraries 919750e409Sopenharmony_ci#cJSON 929750e409Sopenharmony_ci$(CJSON_STATIC): $(CJSON_OBJ) 939750e409Sopenharmony_ci $(AR) rcs $@ $< 949750e409Sopenharmony_ci#cJSON_Utils 959750e409Sopenharmony_ci$(UTILS_STATIC): $(UTILS_OBJ) 969750e409Sopenharmony_ci $(AR) rcs $@ $< 979750e409Sopenharmony_ci 989750e409Sopenharmony_ci#shared libraries .so.1.0.0 999750e409Sopenharmony_ci#cJSON 1009750e409Sopenharmony_ci$(CJSON_SHARED_VERSION): $(CJSON_OBJ) 1019750e409Sopenharmony_ci $(CC) -shared -o $@ $< $(CJSON_SO_LDFLAG) $(LDFLAGS) 1029750e409Sopenharmony_ci#cJSON_Utils 1039750e409Sopenharmony_ci$(UTILS_SHARED_VERSION): $(UTILS_OBJ) 1049750e409Sopenharmony_ci $(CC) -shared -o $@ $< $(CJSON_OBJ) $(UTILS_SO_LDFLAG) $(LDFLAGS) 1059750e409Sopenharmony_ci 1069750e409Sopenharmony_ci#objects 1079750e409Sopenharmony_ci#cJSON 1089750e409Sopenharmony_ci$(CJSON_OBJ): cJSON.c cJSON.h 1099750e409Sopenharmony_ci#cJSON_Utils 1109750e409Sopenharmony_ci$(UTILS_OBJ): cJSON_Utils.c cJSON_Utils.h cJSON.h 1119750e409Sopenharmony_ci 1129750e409Sopenharmony_ci 1139750e409Sopenharmony_ci#links .so -> .so.1 -> .so.1.0.0 1149750e409Sopenharmony_ci#cJSON 1159750e409Sopenharmony_ci$(CJSON_SHARED_SO): $(CJSON_SHARED_VERSION) 1169750e409Sopenharmony_ci ln -s $(CJSON_SHARED_VERSION) $(CJSON_SHARED_SO) 1179750e409Sopenharmony_ci$(CJSON_SHARED): $(CJSON_SHARED_SO) 1189750e409Sopenharmony_ci ln -s $(CJSON_SHARED_SO) $(CJSON_SHARED) 1199750e409Sopenharmony_ci#cJSON_Utils 1209750e409Sopenharmony_ci$(UTILS_SHARED_SO): $(UTILS_SHARED_VERSION) 1219750e409Sopenharmony_ci ln -s $(UTILS_SHARED_VERSION) $(UTILS_SHARED_SO) 1229750e409Sopenharmony_ci$(UTILS_SHARED): $(UTILS_SHARED_SO) 1239750e409Sopenharmony_ci ln -s $(UTILS_SHARED_SO) $(UTILS_SHARED) 1249750e409Sopenharmony_ci 1259750e409Sopenharmony_ci#install 1269750e409Sopenharmony_ci#cJSON 1279750e409Sopenharmony_ciinstall-cjson: 1289750e409Sopenharmony_ci mkdir -p $(INSTALL_LIBRARY_PATH) $(INSTALL_INCLUDE_PATH) 1299750e409Sopenharmony_ci $(INSTALL) cJSON.h $(INSTALL_INCLUDE_PATH) 1309750e409Sopenharmony_ci $(INSTALL) $(CJSON_SHARED) $(CJSON_SHARED_SO) $(CJSON_SHARED_VERSION) $(INSTALL_LIBRARY_PATH) 1319750e409Sopenharmony_ci#cJSON_Utils 1329750e409Sopenharmony_ciinstall-utils: install-cjson 1339750e409Sopenharmony_ci $(INSTALL) cJSON_Utils.h $(INSTALL_INCLUDE_PATH) 1349750e409Sopenharmony_ci $(INSTALL) $(UTILS_SHARED) $(UTILS_SHARED_SO) $(UTILS_SHARED_VERSION) $(INSTALL_LIBRARY_PATH) 1359750e409Sopenharmony_ci 1369750e409Sopenharmony_ciinstall: install-cjson install-utils 1379750e409Sopenharmony_ci 1389750e409Sopenharmony_ci#uninstall 1399750e409Sopenharmony_ci#cJSON 1409750e409Sopenharmony_ciuninstall-cjson: uninstall-utils 1419750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED) 1429750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED_VERSION) 1439750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(CJSON_SHARED_SO) 1449750e409Sopenharmony_ci $(RM) $(INSTALL_INCLUDE_PATH)/cJSON.h 1459750e409Sopenharmony_ci 1469750e409Sopenharmony_ci#cJSON_Utils 1479750e409Sopenharmony_ciuninstall-utils: 1489750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED) 1499750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED_VERSION) 1509750e409Sopenharmony_ci $(RM) $(INSTALL_LIBRARY_PATH)/$(UTILS_SHARED_SO) 1519750e409Sopenharmony_ci $(RM) $(INSTALL_INCLUDE_PATH)/cJSON_Utils.h 1529750e409Sopenharmony_ci 1539750e409Sopenharmony_ciremove-dir: 1549750e409Sopenharmony_ci $(if $(wildcard $(INSTALL_LIBRARY_PATH)/*.*),,rmdir $(INSTALL_LIBRARY_PATH)) 1559750e409Sopenharmony_ci $(if $(wildcard $(INSTALL_INCLUDE_PATH)/*.*),,rmdir $(INSTALL_INCLUDE_PATH)) 1569750e409Sopenharmony_ci 1579750e409Sopenharmony_ciuninstall: uninstall-utils uninstall-cjson remove-dir 1589750e409Sopenharmony_ci 1599750e409Sopenharmony_ciclean: 1609750e409Sopenharmony_ci $(RM) $(CJSON_OBJ) $(UTILS_OBJ) #delete object files 1619750e409Sopenharmony_ci $(RM) $(CJSON_SHARED) $(CJSON_SHARED_VERSION) $(CJSON_SHARED_SO) $(CJSON_STATIC) #delete cJSON 1629750e409Sopenharmony_ci $(RM) $(UTILS_SHARED) $(UTILS_SHARED_VERSION) $(UTILS_SHARED_SO) $(UTILS_STATIC) #delete cJSON_Utils 1639750e409Sopenharmony_ci $(RM) $(CJSON_TEST) #delete test 164