Makefile 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. include Makefile.vars
  2. MAKEF=$(MAKE) -f Makefile.in
  3. TMPDIR=tmp
  4. default: all
  5. all: libhv examples
  6. examples: test timer loop tcp udp nc nmap httpd curl consul_cli
  7. clean:
  8. $(MAKEF) clean SRCDIRS=". base utils event http http/client http/server protocol examples $(TMPDIR)"
  9. prepare:
  10. $(MKDIR) -p $(TMPDIR) lib bin
  11. $(RM) base/RAII.o
  12. libhv: prepare
  13. $(RM) include
  14. $(MAKEF) TARGET=$@ TARGET_TYPE=SHARED SRCDIRS=". base utils event http http/client http/server protocol"
  15. $(MAKEF) TARGET=$@ TARGET_TYPE=STATIC SRCDIRS=". base utils event http http/client http/server protocol"
  16. $(MKDIR) include
  17. $(CP) $(INSTALL_HEADERS) include
  18. install:
  19. $(MKDIR) -p $(INSTALL_INCDIR)
  20. $(CP) include/* $(INSTALL_INCDIR)
  21. $(CP) lib/libhv.a lib/libhv.so $(INSTALL_LIBDIR)
  22. test: prepare
  23. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  24. cp main.cpp.tmpl $(TMPDIR)/main.cpp
  25. $(MAKEF) TARGET=$@ SRCDIRS=". base utils $(TMPDIR)"
  26. timer: prepare
  27. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  28. cp examples/timer.c $(TMPDIR)
  29. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  30. loop: prepare
  31. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  32. cp examples/loop.c $(TMPDIR)
  33. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  34. tcp: prepare
  35. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  36. cp examples/tcp.c $(TMPDIR)
  37. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  38. udp: prepare
  39. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  40. cp examples/udp.c $(TMPDIR)
  41. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  42. nc: prepare
  43. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  44. cp examples/nc.c $(TMPDIR)
  45. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)"
  46. nmap: prepare
  47. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  48. cp examples/nmap.cpp $(TMPDIR)
  49. ifeq ($(OS), Windows)
  50. # for nmap on Windows platform, recommand EVENT_POLL, not EVENT_IOCP
  51. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)" DEFINES="$(DEFINES) PRINT_DEBUG EVENT_POLL"
  52. else
  53. $(MAKEF) TARGET=$@ SRCDIRS=". base event $(TMPDIR)" DEFINES="$(DEFINES) PRINT_DEBUG"
  54. endif
  55. httpd: prepare
  56. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  57. cp examples/httpd.cpp examples/http_api_test.h $(TMPDIR)
  58. $(MAKEF) TARGET=$@ SRCDIRS=". base utils event http http/server $(TMPDIR)"
  59. curl: prepare
  60. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  61. cp examples/curl.cpp $(TMPDIR)
  62. $(MAKEF) TARGET=$@ SRCDIRS="$(CURL_SRCDIRS)" SRCDIRS=". base utils http http/client $(TMPDIR)"
  63. #$(MAKEF) TARGET=$@ SRCDIRS="$(CURL_SRCDIRS)" SRCDIRS=". base utils http http/client $(TMPDIR)" DEFINES="$(DEFINES) WITH_CURL CURL_STATICLIB"
  64. consul_cli: prepare
  65. $(RM) $(TMPDIR)/*.o $(TMPDIR)/*.h $(TMPDIR)/*.c $(TMPDIR)/*.cpp
  66. cp examples/consul_cli.cpp $(TMPDIR)
  67. $(MAKEF) TARGET=$@ SRCDIRS=". base utils event http http/client consul $(TMPDIR)" DEFINES="PRINT_DEBUG"
  68. unittest: prepare
  69. $(CC) -g -Wall -std=c99 -I. -Ibase -o bin/hmutex unittest/hmutex_test.c -pthread
  70. $(CC) -g -Wall -std=c99 -I. -Ibase -o bin/connect unittest/connect_test.c base/hsocket.c
  71. $(CC) -g -Wall -std=c99 -I. -Ibase -o bin/socketpair unittest/socketpair_test.c base/hsocket.c
  72. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/defer unittest/defer_test.cpp
  73. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/threadpool unittest/threadpool_test.cpp -pthread
  74. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/objectpool unittest/objectpool_test.cpp -pthread
  75. $(CXX) -g -Wall -std=c++11 -I. -Ibase -o bin/ls unittest/listdir_test.cpp base/hdir.cpp base/hbase.c
  76. $(CXX) -g -Wall -std=c++11 -I. -Ibase -Iutils -o bin/ifconfig unittest/ifconfig_test.cpp utils/ifconfig.cpp
  77. $(CC) -g -Wall -std=c99 -I. -Ibase -Iprotocol -o bin/nslookup unittest/nslookup_test.c protocol/dns.c
  78. $(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
  79. $(CC) -g -Wall -std=c99 -I. -Ibase -Iprotocol -o bin/ftp unittest/ftp_test.c protocol/ftp.c base/hsocket.c
  80. $(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
  81. # UNIX only
  82. webbench: prepare
  83. $(CC) -o bin/webbench unittest/webbench.c
  84. echo-servers:
  85. $(CC) -g -Wall -std=c99 -o bin/libevent_echo echo-servers/libevent_echo.c -levent
  86. $(CC) -g -Wall -std=c99 -o bin/libev_echo echo-servers/libev_echo.c -lev
  87. $(CC) -g -Wall -std=c99 -o bin/libuv_echo echo-servers/libuv_echo.c -luv
  88. $(CC) -g -Wall -std=c99 -o bin/libhv_echo echo-servers/libhv_echo.c -Iinclude -Llib -lhv
  89. $(CXX) -g -Wall -std=c++11 -o bin/asio_echo echo-servers/asio_echo.cpp -lboost_system
  90. $(CXX) -g -Wall -std=c++11 -o bin/poco_echo echo-servers/poco_echo.cpp -lPocoNet -lPocoUtil -lPocoFoundation
  91. $(CXX) -g -Wall -std=c++11 -o bin/muduo_echo echo-servers/muduo_echo.cpp -lmuduo_net -lmuduo_base -lpthread
  92. .PHONY: clean prepare libhv install examples test timer loop tcp udp nc nmap httpd curl consul_cli unittest webbench echo-servers