Makefile 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. MOCHA_OPTS= --check-leaks
  2. REPORTER = tap
  3. BINDIR = ./node_modules/.bin
  4. LIBSODIUM_DIR = ./deps/libsodium
  5. INSTALL_DIR = $(CURDIR)/deps/build
  6. SODIUM_LIB = ${INSTALL_DIR}/lib/libsodium
  7. .DEFAULT_GOAL := sodium
  8. PLATFORM = ''
  9. THIS_OS = ''
  10. ifeq ($(OS),Windows_NT)
  11. CCFLAGS += -D WIN32
  12. THIS_OS = Windows
  13. ifeq ($(PROCESSOR_ARCHITECTURE),AMD64)
  14. CCFLAGS += -D AMD64
  15. PLATFORM = x86_64
  16. endif
  17. ifeq ($(PROCESSOR_ARCHITECTURE),x86)
  18. CCFLAGS += -D IA32
  19. PLATFORM = i386
  20. endif
  21. else
  22. UNAME_S := $(shell uname -s)
  23. ifeq ($(UNAME_S),Linux)
  24. THIS_OS = Linux
  25. CCFLAGS += -D LINUX
  26. CCFLAGS += -fPIC
  27. endif
  28. ifeq ($(UNAME_S),Darwin)
  29. THIS_OS = OSX
  30. OSX_VERSION_MIN = $(shell sw_vers -productVersion ) | awk -F '.' '{print $$1 "." $$2}'
  31. CFLAGS="-arch x86_64 -mmacosx-version-min=${OSX_VERSION_MIN} -O2 -g -flto"
  32. LDFLAGS="-arch x86_64 -mmacosx-version-min=${OSX_VERSION_MIN} -flto"
  33. endif
  34. UNAME_P := $(shell uname -p)
  35. ifeq ($(UNAME_P),x86_64)
  36. PLATFORM = x86_64
  37. CCFLAGS += -D AMD64
  38. endif
  39. ifneq ($(filter %86,$(UNAME_P)),)
  40. CCFLAGS += -D IA32
  41. PLATFORM = i386
  42. endif
  43. ifneq ($(filter arm%,$(UNAME_P)),)
  44. PLATFORM = ARM
  45. CCFLAGS += -D ARM
  46. endif
  47. endif
  48. ec:
  49. @echo ${OSX_VERSION_MIN}
  50. # If a static libsodium is found then compile against it
  51. # instead of trying to compile from source
  52. libsodium:
  53. ifeq (,$(wildcard ${SODIUM_LIB}.*))
  54. @echo Static libsodium was not found at ${SODIUM_LIB} so compiling libsodium from source.
  55. @cd $(LIBSODIUM_DIR)/ && ./autogen.sh
  56. @cd $(LIBSODIUM_DIR)/ && ./configure --enable-static \
  57. --enable-shared --with-pic --prefix="$(INSTALL_DIR)"
  58. @cd $(LIBSODIUM_DIR)/ && make clean > /dev/null
  59. @cd $(LIBSODIUM_DIR)/ && make -j3 check
  60. @cd $(LIBSODIUM_DIR)/ && make -j3 install
  61. else
  62. @echo Found a compiled lib in ${INSTALL_DIR}. Make sure this library that was compiled for this platform.
  63. @echo Use make clean to remove the static lib and force recompilation
  64. @echo Operating System: ${OS} THIS_OS = ${THIS_OS}, Platform = ${PLATFORM}
  65. endif
  66. sodium: libsodium
  67. echo Build node-sodium module
  68. node defines.js
  69. node-gyp rebuild
  70. nodesodium:
  71. echo Build node-sodium module
  72. node defines.js
  73. node-gyp rebuild
  74. test: test-unit
  75. test-unit:
  76. @NODE_ENV=test $(BINDIR)/mocha \
  77. --reporter $(REPORTER) \
  78. --globals setImmediate,clearImmediate
  79. instrument: clean
  80. $(BINDIR)/istanbul instrument --output lib-cov --no-compact \
  81. --variable global.__coverage__ lib
  82. test-cov: clean instrument
  83. @echo Run make test for simple tests with no coverage reports
  84. @COVERAGE=1 NODE_ENV=test $(BINDIR)/mocha \
  85. -R mocha-istanbul \
  86. --globals setImmediate,clearImmediate
  87. @$(BINDIR)/istanbul report
  88. @rm -rf lib-cov
  89. @echo
  90. @echo Open html-report/index.html file in your browser
  91. clean:
  92. -rm package-lock.json
  93. -rm -fr lib-cov
  94. -rm -fr covershot
  95. -rm -fr html-report
  96. -rm -fr coverage
  97. -rm -fr coverage.html
  98. -rm -fr ${INSTALL_DIR}
  99. -rm -fr ${LIBSODIUM_DIR}/autom4te.cache
  100. -rm -fr ${LIBSODIUM_DIR}/build-aux
  101. -rm ${LIBSODIUM_DIR}/aclocal.m4
  102. -rm ${LIBSODIUM_DIR}/config.status
  103. -rm ${LIBSODIUM_DIR}/configure
  104. -rm ${LIBSODIUM_DIR}/libsodium-uninstalled.pc
  105. -rm ${LIBSODIUM_DIR}/libsodium.pc
  106. -rm ${LIBSODIUM_DIR}/libtool
  107. -rm ${LIBSODIUM_DIR}/m4/libtool.m4
  108. -rm ${LIBSODIUM_DIR}/m4/ltoptions.m4
  109. -rm ${LIBSODIUM_DIR}/m4/ltsugar.m4
  110. -rm ${LIBSODIUM_DIR}/m4/ltversion.m4
  111. -rm ${LIBSODIUM_DIR}/m4/lt~obsolete.m4
  112. -rm ${LIBSODIUM_DIR}/src/libsodium/include/sodium/version.h
  113. -find . -type f -name *.lo -delete
  114. -find ${LIBSODIUM_DIR} -type f -name *.la -delete
  115. -find ${LIBSODIUM_DIR} -type f -name *.a -delete
  116. -find . -type f -name *.log -delete
  117. -find . -type f -name *.o -delete
  118. -find ${LIBSODIUM_DIR} -type f -name .dirstamp -delete
  119. -find ${LIBSODIUM_DIR} -name Makefile -delete
  120. -find ${LIBSODIUM_DIR} -name .deps -exec rm -fr {} \;
  121. -find ${LIBSODIUM_DIR} -name .libs -exec rm -fr {} \;
  122. -find ${LIBSODIUM_DIR} -name *.res -delete
  123. -find ${LIBSODIUM_DIR} -name Makefile.in -delete
  124. -find ${LIBSODIUM_DIR} -name *.trs -delete
  125. -find ${LIBSODIUM_DIR}/test/default/ -type f ! -name "*.*" -delete
  126. cleanbuild: clean
  127. -rm -fr ./build
  128. cleanall: cleanbuild
  129. -rm -fr ./node_modules
  130. publish:
  131. npm version patch
  132. npm publish
  133. all:
  134. sodium
  135. .PHONY: all test-cov site docs test docclean