Makefile 5.1 KB

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