Makefile 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. MAKEF=$(MAKE) -f Makefile.in
  2. TMPDIR=tmp
  3. default: all
  4. all: libhw test timer loop tcp udp nc nmap httpd curl
  5. clean:
  6. $(MAKEF) clean SRCDIRS=". base utils event http http/client http/server examples $(TMPDIR)"
  7. prepare:
  8. -mkdir -p $(TMPDIR) lib bin
  9. -rm base/RAII.o
  10. libhw:
  11. $(MAKEF) TARGET=$@ TARGET_TYPE=STATIC SRCDIRS=". base utils event http http/client http/server"
  12. test: prepare
  13. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  14. cp main.cpp.tmpl $(TMPDIR)/main.cpp
  15. $(MAKEF) TARGET=$@ SRCDIRS=". base utils $(TMPDIR)"
  16. timer: prepare
  17. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  18. cp examples/timer.c $(TMPDIR)
  19. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  20. loop: prepare
  21. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  22. cp examples/loop.c $(TMPDIR)
  23. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  24. tcp: prepare
  25. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  26. cp examples/tcp.c $(TMPDIR)
  27. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  28. udp: prepare
  29. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  30. cp examples/udp.c $(TMPDIR)
  31. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  32. nc: prepare
  33. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  34. cp examples/nc.c $(TMPDIR)
  35. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  36. nmap: prepare
  37. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  38. cp examples/nmap.cpp $(TMPDIR)
  39. ifeq ($(OS), Windows)
  40. # for nmap, on Windows platform, we suggest EVENT_POLL, not EVENT_IOCP
  41. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)" DEFINES="$(DEFINES) PRINT_DEBUG EVENT_POLL"
  42. else
  43. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)" DEFINES="$(DEFINES) PRINT_DEBUG"
  44. endif
  45. httpd: prepare
  46. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  47. cp examples/httpd.cpp examples/http_api_test.h $(TMPDIR)
  48. $(MAKEF) TARGET=$@ SRCDIRS=". base utils event http http/server $(TMPDIR)"
  49. curl: prepare
  50. -rm $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  51. cp examples/curl.cpp $(TMPDIR)
  52. $(MAKEF) TARGET=$@ SRCDIRS="$(CURL_SRCDIRS)" SRCDIRS=". base utils http http/client $(TMPDIR)"
  53. #$(MAKEF) TARGET=$@ SRCDIRS="$(CURL_SRCDIRS)" SRCDIRS=". base utils http http/client $(TMPDIR)" DEFINES="$(DEFINES) WITH_CURL CURL_STATICLIB"
  54. unittest: prepare
  55. $(CC) -g -Wall -std=c99 -I. -Ibase -o bin/connect unittest/connect_test.c base/hsocket.c
  56. $(CC) -g -Wall -std=c99 -I. -Ibase -o bin/socketpair unittest/socketpair_test.c base/hsocket.c
  57. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/defer unittest/defer_test.cpp
  58. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/threadpool unittest/threadpool_test.cpp -pthread
  59. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/objectpool unittest/objectpool_test.cpp -pthread
  60. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/ls unittest/listdir_test.cpp base/hdir.cpp base/hbase.c
  61. $(CXX) -g -Wall -std=c++11 -I. -Ibase -Iutils -o bin/ifconfig unittest/ifconfig_test.cpp utils/ifconfig.cpp
  62. $(CC) -g -Wall -std=c99 -I. -Ibase -Iprotocol -o bin/nslookup unittest/nslookup_test.c protocol/dns.c
  63. $(CC) -g -Wall -std=c99 -I. -Ibase -Iprotocol -o bin/ping unittest/ping_test.c protocol/icmp.c base/hsocket.c base/htime.c -DPRINT_DEBUG
  64. $(CC) -g -Wall -std=c99 -I. -Ibase -Iprotocol -o bin/ftp unittest/ftp_test.c protocol/ftp.c base/hsocket.c
  65. $(CC) -g -Wall -std=c99 -I. -Ibase -Iutils -Iprotocol -o bin/sendmail unittest/sendmail_test.c protocol/smtp.c base/hsocket.c utils/base64.c
  66. # UNIX only
  67. webbench: prepare
  68. $(CC) -o bin/webbench unittest/webbench.c
  69. .PHONY: clean prepare libhw test timer loop tcp udp nc nmap httpd curl unittest webbench