Makefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. OBJ = cJSON.o
  2. LIBNAME = libcjson
  3. TESTS = test
  4. PREFIX ?= /usr/local
  5. INCLUDE_PATH ?= include/cjson
  6. LIBRARY_PATH ?= lib
  7. INSTALL_INCLUDE_PATH = $(DESTDIR)$(PREFIX)/$(INCLUDE_PATH)
  8. INSTALL_LIBRARY_PATH = $(DESTDIR)$(PREFIX)/$(LIBRARY_PATH)
  9. INSTALL ?= cp -a
  10. R_CFLAGS = -fpic $(CFLAGS) -Wall -Werror -Wstrict-prototypes -Wwrite-strings -D_POSIX_C_SOURCE=200112L
  11. uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo false')
  12. ## shared lib
  13. DYLIBNAME = $(LIBNAME).so
  14. DYLIBCMD = $(CC) -shared -o $(DYLIBNAME)
  15. ## create dynamic (shared) library on Darwin (base OS for MacOSX and IOS)
  16. ifeq (Darwin, $(uname_S))
  17. DYLIBNAME = $(LIBNAME).dylib
  18. ## create dyanmic (shared) library on SunOS
  19. else ifeq (SunOS, $(uname_S))
  20. DYLIBCMD = $(CC) -G -o $(DYLIBNAME)
  21. INSTALL = cp -r
  22. endif
  23. ## static lib
  24. STLIBNAME = $(LIBNAME).a
  25. .PHONY: all clean install
  26. all: $(DYLIBNAME) $(STLIBNAME) $(TESTS)
  27. $(DYLIBNAME): $(OBJ)
  28. $(DYLIBCMD) $< $(LDFLAGS)
  29. $(STLIBNAME): $(OBJ)
  30. $(AR) rcs $@ $<
  31. $(OBJ): cJSON.c cJSON.h
  32. .c.o:
  33. $(CC) -ansi -pedantic -c $(R_CFLAGS) $<
  34. $(TESTS): cJSON.c cJSON.h test.c
  35. $(CC) cJSON.c test.c -o test -lm -I.
  36. install: $(DYLIBNAME) $(STLIBNAME)
  37. mkdir -p $(INSTALL_LIBRARY_PATH) $(INSTALL_INCLUDE_PATH)
  38. $(INSTALL) cJSON.h $(INSTALL_INCLUDE_PATH)
  39. $(INSTALL) $(DYLIBNAME) $(INSTALL_LIBRARY_PATH)
  40. $(INSTALL) $(STLIBNAME) $(INSTALL_LIBRARY_PATH)
  41. uninstall:
  42. rm -rf $(INSTALL_LIBRARY_PATH)/$(DYLIBNAME)
  43. rm -rf $(INSTALL_LIBRARY_PATH)/$(STLIBNAME)
  44. rm -rf $(INSTALL_INCLUDE_PATH)/cJSON.h
  45. clean:
  46. rm -rf $(DYLIBNAME) $(STLIBNAME) $(TESTS) *.o