Makefile 4.9 KB

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