Makefile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. # libdatachannel
  2. NAME=libdatachannel
  3. CXX=$(CROSS)g++
  4. AR=$(CROSS)ar
  5. RM=rm -f
  6. CXXFLAGS=-std=c++17
  7. CPPFLAGS=-O2 -pthread -fPIC -Wall
  8. LDFLAGS=-pthread
  9. LIBS=
  10. LOCALLIBS=libusrsctp.a
  11. USRSCTP_DIR=deps/usrsctp
  12. SRTP_DIR=deps/libsrtp
  13. JUICE_DIR=deps/libjuice
  14. PLOG_DIR=deps/plog
  15. INCLUDES=-Isrc -Iinclude/rtc -Iinclude -I$(PLOG_DIR)/include -I$(USRSCTP_DIR)/usrsctplib
  16. LDLIBS=
  17. USE_GNUTLS ?= 0
  18. ifneq ($(USE_GNUTLS), 0)
  19. CPPFLAGS+=-DUSE_GNUTLS=1
  20. LIBS+=gnutls
  21. else
  22. CPPFLAGS+=-DUSE_GNUTLS=0
  23. LIBS+=openssl
  24. endif
  25. USE_NICE ?= 0
  26. ifneq ($(USE_NICE), 0)
  27. CPPFLAGS+=-DUSE_NICE=1
  28. LIBS+=glib-2.0 gobject-2.0 nice
  29. else
  30. CPPFLAGS+=-DUSE_NICE=0
  31. INCLUDES+=-I$(JUICE_DIR)/include
  32. LOCALLIBS+=libjuice.a
  33. ifneq ($(USE_GNUTLS), 0)
  34. LIBS+=nettle
  35. endif
  36. endif
  37. NO_MEDIA ?= 0
  38. USE_SYSTEM_SRTP ?= 0
  39. ifeq ($(NO_MEDIA), 0)
  40. CPPFLAGS+=-DRTC_ENABLE_MEDIA=1
  41. ifneq ($(USE_SYSTEM_SRTP), 0)
  42. CPPFLAGS+=-DRTC_SYSTEM_SRTP=1
  43. LIBS+=srtp
  44. else
  45. CPPFLAGS+=-DRTC_SYSTEM_SRTP=0
  46. INCLUDES+=-I$(SRTP_DIR)/include
  47. LOCALLIBS+=libsrtp2.a
  48. endif
  49. else
  50. CPPFLAGS+=-DRTC_ENABLE_MEDIA=0
  51. endif
  52. NO_WEBSOCKET ?= 0
  53. ifeq ($(NO_WEBSOCKET), 0)
  54. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=1
  55. else
  56. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=0
  57. endif
  58. INCLUDES+=$(if $(LIBS),$(shell pkg-config --cflags $(LIBS)),)
  59. LDLIBS+=$(LOCALLIBS) $(if $(LIBS),$(shell pkg-config --libs $(LIBS)),)
  60. SRCS=$(shell printf "%s " src/*.cpp src/impl/*.cpp)
  61. OBJS=$(subst .cpp,.o,$(SRCS))
  62. TEST_SRCS=$(shell printf "%s " test/*.cpp)
  63. TEST_OBJS=$(subst .cpp,.o,$(TEST_SRCS))
  64. all: $(NAME).a $(NAME).so tests
  65. src/%.o: src/%.cpp
  66. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  67. test/%.o: test/%.cpp
  68. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -Iinclude -Isrc -MMD -MP -o $@ -c $<
  69. -include $(subst .cpp,.d,$(SRCS))
  70. $(NAME).a: $(LOCALLIBS) $(OBJS)
  71. $(AR) crf $@ $(OBJS)
  72. $(NAME).so: $(LOCALLIBS) $(OBJS)
  73. $(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
  74. tests: $(NAME).a $(TEST_OBJS)
  75. $(CXX) $(LDFLAGS) -o $@ $(TEST_OBJS) $(NAME).a $(LDLIBS)
  76. clean:
  77. -$(RM) include/rtc/*.d *.d
  78. -$(RM) src/*.o src/*.d
  79. -$(RM) test/*.o test/*.d
  80. dist-clean: clean
  81. -$(RM) $(NAME).a
  82. -$(RM) $(NAME).so
  83. -$(RM) libusrsctp.a
  84. -$(RM) libjuice.a
  85. -$(RM) tests
  86. -$(RM) include/*~
  87. -$(RM) src/*~
  88. -$(RM) test/*~
  89. -cd $(USRSCTP_DIR) && make clean
  90. -cd $(SRTP_DIR) && make clean
  91. -cd $(JUICE_DIR) && make clean
  92. libusrsctp.a:
  93. cd $(USRSCTP_DIR) && \
  94. ./bootstrap && \
  95. ./configure --enable-static --disable-debug CFLAGS="-fPIC" && \
  96. make
  97. cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
  98. libsrtp2.a:
  99. cd $(SRTP_DIR) && \
  100. ./configure && \
  101. make
  102. cp $(SRTP_DIR)/libsrtp2.a .
  103. libjuice.a:
  104. ifneq ($(USE_GNUTLS), 0)
  105. cd $(JUICE_DIR) && make USE_NETTLE=1
  106. else
  107. cd $(JUICE_DIR) && make USE_NETTLE=0
  108. endif
  109. cp $(JUICE_DIR)/libjuice.a .