Makefile 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # Makefile for running the unittests of libfixmath.
  2. CC = gcc
  3. # Basic CFLAGS for debugging
  4. CFLAGS = -g -O0 -I../libfixmath -Wall -Wextra -Werror
  5. # The files required for tests
  6. FIX16_SRC = ../libfixmath/fix16.c ../libfixmath/fix16_sqrt.c ../libfixmath/fix16_str.c \
  7. ../libfixmath/fix16_exp.c ../libfixmath/fix16.h
  8. all: run_fix16_unittests run_fix16_exp_unittests run_fix16_str_unittests run_fix16_macros_unittests
  9. clean:
  10. rm -f fix16_unittests_????
  11. # The library is tested automatically under different compilations
  12. # options.
  13. #
  14. # Test naming:
  15. # r = rounding, n = no rounding
  16. # o = overflow detection, n = no overflow detection
  17. # 64 = int64_t math, 32 = int32_t math
  18. run_fix16_unittests: \
  19. fix16_unittests_ro64 fix16_unittests_no64 \
  20. fix16_unittests_rn64 fix16_unittests_nn64 \
  21. fix16_unittests_ro32 fix16_unittests_no32 \
  22. fix16_unittests_rn32 fix16_unittests_nn32 \
  23. fix16_unittests_ro08 fix16_unittests_no08 \
  24. fix16_unittests_rn08 fix16_unittests_nn08
  25. $(foreach test, $^, \
  26. echo $(test) && \
  27. ./$(test) > /dev/null && \
  28. ) true
  29. fix16_unittests_no64: DEFINES=-DFIXMATH_NO_ROUNDING
  30. fix16_unittests_rn64: DEFINES=-DFIXMATH_NO_OVERFLOW
  31. fix16_unittests_nn64: DEFINES=-DFIXMATH_NO_ROUNDING -DFIXMATH_NO_OVERFLOW
  32. fix16_unittests_ro32: DEFINES=-DFIXMATH_NO_64BIT
  33. fix16_unittests_no32: DEFINES=-DFIXMATH_NO_ROUNDING -DFIXMATH_NO_64BIT
  34. fix16_unittests_rn32: DEFINES=-DFIXMATH_NO_OVERFLOW -DFIXMATH_NO_64BIT
  35. fix16_unittests_nn32: DEFINES=-DFIXMATH_NO_OVERFLOW -DFIXMATH_NO_ROUNDING -DFIXMATH_NO_64BIT
  36. fix16_unittests_ro08: DEFINES=-DFIXMATH_OPTIMIZE_8BIT
  37. fix16_unittests_no08: DEFINES=-DFIXMATH_NO_ROUNDING -DFIXMATH_OPTIMIZE_8BIT
  38. fix16_unittests_rn08: DEFINES=-DFIXMATH_NO_OVERFLOW -DFIXMATH_OPTIMIZE_8BIT
  39. fix16_unittests_nn08: DEFINES=-DFIXMATH_NO_OVERFLOW -DFIXMATH_NO_ROUNDING -DFIXMATH_OPTIMIZE_8BIT
  40. fix16_unittests_% : fix16_unittests.c $(FIX16_SRC)
  41. $(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm
  42. # Tests for the exponential function, run only in default config
  43. run_fix16_exp_unittests: fix16_exp_unittests
  44. ./fix16_exp_unittests > /dev/null
  45. fix16_exp_unittests: fix16_exp_unittests.c $(FIX16_SRC)
  46. $(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm
  47. # Tests for string conversion, run only in default config
  48. run_fix16_str_unittests: fix16_str_unittests
  49. ./fix16_str_unittests > /dev/null
  50. fix16_str_unittests: fix16_str_unittests.c $(FIX16_SRC)
  51. $(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm
  52. # Tests for literal macros, run only in default config
  53. run_fix16_macros_unittests: fix16_macros_unittests
  54. ./fix16_macros_unittests > /dev/null
  55. fix16_macros_unittests: fix16_macros_unittests.c $(FIX16_SRC)
  56. $(CC) $(CFLAGS) $(DEFINES) -o $@ $^ -lm