Makefile 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. CC?=gcc
  2. AR?=ar
  3. CPPFLAGS += -I.
  4. CPPFLAGS_DEBUG = $(CPPFLAGS) -DHTTP_PARSER_STRICT=1
  5. CPPFLAGS_DEBUG += $(CPPFLAGS_DEBUG_EXTRA)
  6. CPPFLAGS_FAST = $(CPPFLAGS) -DHTTP_PARSER_STRICT=0
  7. CPPFLAGS_FAST += $(CPPFLAGS_FAST_EXTRA)
  8. CFLAGS += -Wall -Wextra -Werror
  9. CFLAGS_DEBUG = $(CFLAGS) -O0 -g $(CFLAGS_DEBUG_EXTRA)
  10. CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA)
  11. CFLAGS_LIB = $(CFLAGS_FAST) -fPIC
  12. test: test_g test_fast
  13. ./test_g
  14. ./test_fast
  15. test_g: http_parser_g.o test_g.o
  16. $(CC) $(CFLAGS_DEBUG) $(LDFLAGS) http_parser_g.o test_g.o -o $@
  17. test_g.o: test.c http_parser.h Makefile
  18. $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) -c test.c -o $@
  19. http_parser_g.o: http_parser.c http_parser.h Makefile
  20. $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) -c http_parser.c -o $@
  21. test_fast: http_parser.o test.o http_parser.h
  22. $(CC) $(CFLAGS_FAST) $(LDFLAGS) http_parser.o test.o -o $@
  23. test.o: test.c http_parser.h Makefile
  24. $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) -c test.c -o $@
  25. http_parser.o: http_parser.c http_parser.h Makefile
  26. $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) -c http_parser.c
  27. test-run-timed: test_fast
  28. while(true) do time ./test_fast > /dev/null; done
  29. test-valgrind: test_g
  30. valgrind ./test_g
  31. libhttp_parser.o: http_parser.c http_parser.h Makefile
  32. $(CC) $(CPPFLAGS_FAST) $(CFLAGS_LIB) -c http_parser.c -o libhttp_parser.o
  33. library: libhttp_parser.o
  34. $(CC) -shared -o libhttp_parser.so libhttp_parser.o
  35. package: http_parser.o
  36. $(AR) rcs libhttp_parser.a http_parser.o
  37. url_parser: http_parser.o contrib/url_parser.c
  38. $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o $@
  39. url_parser_g: http_parser_g.o contrib/url_parser.c
  40. $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) $^ -o $@
  41. parsertrace: http_parser.o contrib/parsertrace.c
  42. $(CC) $(CPPFLAGS_FAST) $(CFLAGS_FAST) $^ -o parsertrace
  43. parsertrace_g: http_parser_g.o contrib/parsertrace.c
  44. $(CC) $(CPPFLAGS_DEBUG) $(CFLAGS_DEBUG) $^ -o parsertrace_g
  45. tags: http_parser.c http_parser.h test.c
  46. ctags $^
  47. clean:
  48. rm -f *.o *.a tags test test_fast test_g \
  49. http_parser.tar libhttp_parser.so \
  50. url_parser url_parser_g parsertrace parsertrace_g
  51. contrib/url_parser.c: http_parser.h
  52. contrib/parsertrace.c: http_parser.h
  53. .PHONY: clean package test-run test-run-timed test-valgrind