Makefile 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. CFLAGS += -Wall -Wextra -Wundef -g
  2. NM = nm
  3. GREP = grep
  4. # Define *.exe as extension for Windows systems
  5. ifneq (,$(filter Windows%,$(OS)))
  6. EXT =.exe
  7. else
  8. EXT =
  9. endif
  10. ifneq (,$(filter %UTF-8,$(LANG)))
  11. ENABLE_UNICODE ?= 1
  12. else
  13. ENABLE_UNICODE ?= 0
  14. endif
  15. .PHONY: default
  16. default: all
  17. .PHONY: all
  18. all: test
  19. .PHONY: test
  20. test: test_multiInclude test_unicode
  21. .PHONY: test_multiInclude
  22. test_multiInclude:
  23. @$(MAKE) clean
  24. # compile without xxhash.o, ensure symbols exist within target
  25. # Note: built using only default rules
  26. $(MAKE) multiInclude
  27. @$(MAKE) clean
  28. # compile with xxhash.o, to detect duplicated symbols
  29. $(MAKE) multiInclude_withxxhash
  30. @$(MAKE) clean
  31. # Note: XXH_INLINE_ALL with XXH_NAMESPACE is currently disabled
  32. # compile with XXH_NAMESPACE
  33. # CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude_withxxhash
  34. # no symbol prefixed TESTN_ should exist
  35. # ! $(NM) multiInclude_withxxhash | $(GREP) TESTN_
  36. #$(MAKE) clean
  37. # compile with XXH_NAMESPACE and without xxhash.o
  38. # CPPFLAGS=-DXXH_NAMESPACE=TESTN_ $(MAKE) multiInclude
  39. # no symbol prefixed TESTN_ should exist
  40. # ! $(NM) multiInclude | $(GREP) TESTN_
  41. #@$(MAKE) clean
  42. .PHONY: test_ppc_redefine
  43. test_ppc_redefine: ppc_define.c
  44. @$(MAKE) clean
  45. $(CC) $(CPPFLAGS) $(CFLAGS) -c $^
  46. xxhsum$(EXT): ../xxhash.c ../xxhash.h ../xxhsum.c
  47. $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -DXXH_INLINE_ALL ../xxhsum.c -o $@
  48. # Make sure that Unicode filenames work.
  49. # https://github.com/Cyan4973/xxHash/issues/293
  50. .PHONY: test_unicode
  51. ifeq (0,$(ENABLE_UNICODE))
  52. test_unicode:
  53. @echo "Skipping Unicode test, your terminal doesn't appear to support UTF-8."
  54. @echo "Try with ENABLE_UNICODE=1"
  55. else
  56. test_unicode: xxhsum$(EXT) generate_unicode_test.c
  57. # Generate a Unicode filename test dynamically
  58. # to keep UTF-8 out of the source tree.
  59. $(CC) $(CFLAGS) $(LDFLAGS) generate_unicode_test.c -o generate_unicode_test$(EXT)
  60. ./generate_unicode_test$(EXT)
  61. $(SHELL) ./unicode_test.sh
  62. endif
  63. xxhash.o: ../xxhash.c ../xxhash.h
  64. $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -c -o $@ $<
  65. multiInclude_withxxhash: multiInclude.o xxhash.o
  66. $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $^
  67. clean:
  68. @$(RM) *.o
  69. @$(RM) multiInclude multiInclude_withxxhash
  70. @$(RM) *.unicode generate_unicode_test$(EXT) unicode_test.* xxhsum$(EXT)