Makefile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. ##### Available defines for CJSON_CFLAGS #####
  2. ##
  3. ## USE_INTERNAL_ISINF: Workaround for Solaris platforms missing isinf().
  4. ## DISABLE_INVALID_NUMBERS: Permanently disable invalid JSON numbers:
  5. ## NaN, Infinity, hex.
  6. ##
  7. ## Optional built-in number conversion uses the following defines:
  8. ## USE_INTERNAL_FPCONV: Use builtin strtod/dtoa for numeric conversions.
  9. ## IEEE_BIG_ENDIAN: Required on big endian architectures.
  10. ## MULTIPLE_THREADS: Must be set when Lua CJSON may be used in a
  11. ## multi-threaded application. Requries _pthreads_.
  12. ##### Build defaults #####
  13. LUA_VERSION = 5.1
  14. TARGET = cjson.so
  15. PREFIX = /usr/local
  16. #CFLAGS = -g -Wall -pedantic -fno-inline
  17. CFLAGS = -O3 -Wall -pedantic -DNDEBUG
  18. CJSON_CFLAGS = -fpic
  19. CJSON_LDFLAGS = -shared
  20. LUA_INCLUDE_DIR = $(PREFIX)/include
  21. LUA_CMODULE_DIR = $(PREFIX)/lib/lua/$(LUA_VERSION)
  22. LUA_MODULE_DIR = $(PREFIX)/share/lua/$(LUA_VERSION)
  23. LUA_BIN_DIR = $(PREFIX)/bin
  24. ##### Platform overrides #####
  25. ##
  26. ## Tweak one of the platform sections below to suit your situation.
  27. ##
  28. ## See http://lua-users.org/wiki/BuildingModules for further platform
  29. ## specific details.
  30. ## Linux
  31. ## FreeBSD
  32. #LUA_INCLUDE_DIR = $(PREFIX)/include/lua51
  33. ## MacOSX (Macports)
  34. #PREFIX = /opt/local
  35. #CJSON_LDFLAGS = -bundle -undefined dynamic_lookup
  36. ## Solaris
  37. #CJSON_CFLAGS = -fpic -DUSE_INTERNAL_ISINF
  38. ## Windows (MinGW)
  39. #TARGET = cjson.dll
  40. #PREFIX = /home/user/opt
  41. #CJSON_CFLAGS = -DDISABLE_INVALID_NUMBERS
  42. #CJSON_LDFLAGS = -shared -L$(PREFIX)/lib -llua51
  43. #LUA_BIN_SUFFIX = .lua
  44. ##### Use built in number conversion (optional) #####
  45. ## Enable built in number conversion
  46. #FPCONV_OBJS = g_fmt.o dtoa.o
  47. #CJSON_CFLAGS += -DUSE_INTERNAL_FPCONV
  48. ## Compile built in number conversion for big endian architectures
  49. #CJSON_CFLAGS += -DIEEE_BIG_ENDIAN
  50. ## Compile built in number conversion to support multi-threaded
  51. ## applications (recommended)
  52. #CJSON_CFLAGS += -pthread -DMULTIPLE_THREADS
  53. #CJSON_LDFLAGS += -pthread
  54. ##### End customisable sections #####
  55. TEST_FILES = README bench.lua genutf8.pl test.lua octets-escaped.dat \
  56. example1.json example2.json example3.json example4.json \
  57. example5.json numbers.json rfc-example1.json \
  58. rfc-example2.json types.json
  59. DATAPERM = 644
  60. EXECPERM = 755
  61. ASCIIDOC ?= asciidoc
  62. BUILD_CFLAGS = -I$(LUA_INCLUDE_DIR) $(CJSON_CFLAGS)
  63. FPCONV_OBJS ?= fpconv.o
  64. OBJS := lua_cjson.o strbuf.o $(FPCONV_OBJS)
  65. .PHONY: all clean install install-extra doc
  66. .SUFFIXES: .html .txt
  67. .c.o:
  68. $(CC) -c $(CFLAGS) $(CPPFLAGS) $(BUILD_CFLAGS) -o $@ $<
  69. .txt.html:
  70. $(ASCIIDOC) -n -a toc $<
  71. all: $(TARGET)
  72. doc: manual.html performance.html
  73. $(TARGET): $(OBJS)
  74. $(CC) $(LDFLAGS) $(CJSON_LDFLAGS) -o $@ $(OBJS)
  75. install: $(TARGET)
  76. mkdir -p $(DESTDIR)/$(LUA_CMODULE_DIR)
  77. cp $(TARGET) $(DESTDIR)/$(LUA_CMODULE_DIR)
  78. chmod $(EXECPERM) $(DESTDIR)/$(LUA_CMODULE_DIR)/$(TARGET)
  79. install-extra:
  80. mkdir -p $(DESTDIR)/$(LUA_MODULE_DIR)/cjson/tests \
  81. $(DESTDIR)/$(LUA_BIN_DIR)
  82. cp lua/cjson/util.lua $(DESTDIR)/$(LUA_MODULE_DIR)/cjson
  83. chmod $(DATAPERM) $(DESTDIR)/$(LUA_MODULE_DIR)/cjson/util.lua
  84. cp lua/lua2json.lua $(DESTDIR)/$(LUA_BIN_DIR)/lua2json$(LUA_BIN_SUFFIX)
  85. chmod $(EXECPERM) $(DESTDIR)/$(LUA_BIN_DIR)/lua2json$(LUA_BIN_SUFFIX)
  86. cp lua/json2lua.lua $(DESTDIR)/$(LUA_BIN_DIR)/json2lua$(LUA_BIN_SUFFIX)
  87. chmod $(EXECPERM) $(DESTDIR)/$(LUA_BIN_DIR)/json2lua$(LUA_BIN_SUFFIX)
  88. cd tests; cp $(TEST_FILES) $(DESTDIR)/$(LUA_MODULE_DIR)/cjson/tests
  89. cd tests; chmod $(DATAPERM) $(TEST_FILES); chmod $(EXECPERM) *.lua *.pl
  90. clean:
  91. rm -f *.o $(TARGET)