Makefile 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  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. SRTP_CONFIGURE_FLAGS=
  14. JUICE_DIR=deps/libjuice
  15. PLOG_DIR=deps/plog
  16. INCLUDES=-Isrc -Iinclude/rtc -Iinclude -I$(PLOG_DIR)/include -I$(USRSCTP_DIR)/usrsctplib
  17. LDLIBS=
  18. USE_GNUTLS ?= 0
  19. USE_MBEDTLS ?= 0
  20. ifneq ($(USE_GNUTLS), 0)
  21. ifneq ($(USE_MBEDTLS), 0)
  22. $(error Both USE_MBEDTLS and USE_GNUTLS cannot be enabled at the same time)
  23. endif
  24. CPPFLAGS+=-DUSE_GNUTLS=1
  25. LIBS+=gnutls
  26. else ifneq ($(USE_MBEDTLS), 0)
  27. CPPFLAGS+=-DUSE_MBEDTLS=1
  28. LIBS+=mbedtls
  29. else
  30. LIBS+=openssl
  31. SRTP_CONFIGURE_FLAGS+=--enable-openssl
  32. endif
  33. USE_NICE ?= 0
  34. ifneq ($(USE_NICE), 0)
  35. CPPFLAGS+=-DUSE_NICE=1
  36. LIBS+=glib-2.0 gobject-2.0 nice
  37. else
  38. CPPFLAGS+=-DUSE_NICE=0
  39. INCLUDES+=-I$(JUICE_DIR)/include
  40. LOCALLIBS+=libjuice.a
  41. ifneq ($(USE_GNUTLS), 0)
  42. LIBS+=nettle
  43. endif
  44. endif
  45. NO_MEDIA ?= 0
  46. USE_SYSTEM_SRTP ?= 0
  47. ifeq ($(NO_MEDIA), 0)
  48. CPPFLAGS+=-DRTC_ENABLE_MEDIA=1
  49. ifneq ($(USE_SYSTEM_SRTP), 0)
  50. CPPFLAGS+=-DRTC_SYSTEM_SRTP=1
  51. LIBS+=srtp
  52. else
  53. CPPFLAGS+=-DRTC_SYSTEM_SRTP=0
  54. INCLUDES+=-I$(SRTP_DIR)/include
  55. LOCALLIBS+=libsrtp2.a
  56. endif
  57. else
  58. CPPFLAGS+=-DRTC_ENABLE_MEDIA=0
  59. endif
  60. NO_WEBSOCKET ?= 0
  61. ifeq ($(NO_WEBSOCKET), 0)
  62. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=1
  63. else
  64. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=0
  65. endif
  66. CPPFLAGS+=-DRTC_EXPORTS
  67. INCLUDES+=$(if $(LIBS),$(shell pkg-config --cflags $(LIBS)),)
  68. LDLIBS+=$(LOCALLIBS) $(if $(LIBS),$(shell pkg-config --libs $(LIBS)),)
  69. SRCS=$(shell printf "%s " src/*.cpp src/impl/*.cpp)
  70. OBJS=$(subst .cpp,.o,$(SRCS))
  71. TEST_SRCS=$(shell printf "%s " test/*.cpp)
  72. TEST_OBJS=$(subst .cpp,.o,$(TEST_SRCS))
  73. all: $(NAME).a $(NAME).so tests
  74. src/%.o: src/%.cpp
  75. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  76. test/%.o: test/%.cpp
  77. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -Iinclude -Isrc -MMD -MP -o $@ -c $<
  78. -include $(subst .cpp,.d,$(SRCS))
  79. $(NAME).a: $(LOCALLIBS) $(OBJS)
  80. $(AR) crf $@ $(OBJS)
  81. $(NAME).so: $(LOCALLIBS) $(OBJS)
  82. $(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
  83. tests: $(NAME).a $(TEST_OBJS)
  84. $(CXX) $(LDFLAGS) -o $@ $(TEST_OBJS) $(NAME).a $(LDLIBS)
  85. clean:
  86. -$(RM) include/rtc/*.d *.d
  87. -$(RM) src/*.o src/*.d
  88. -$(RM) src/impl/*.o src/impl/*.d
  89. -$(RM) test/*.o test/*.d
  90. dist-clean: clean
  91. -$(RM) $(NAME).a
  92. -$(RM) $(NAME).so
  93. -$(RM) libusrsctp.a
  94. -$(RM) libjuice.a
  95. -$(RM) libsrtp2.a
  96. -$(RM) tests
  97. -$(RM) include/*~
  98. -$(RM) src/*~
  99. -$(RM) test/*~
  100. -cd $(USRSCTP_DIR) && make clean
  101. -cd $(SRTP_DIR) && make clean
  102. -cd $(JUICE_DIR) && make clean
  103. libusrsctp.a:
  104. cd $(USRSCTP_DIR) && \
  105. ./bootstrap && \
  106. ./configure --enable-static --disable-programs --disable-debug \
  107. --disable-inet --disable-inet6 CFLAGS="-fPIC" && \
  108. make
  109. cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
  110. libsrtp2.a:
  111. cd $(SRTP_DIR) && \
  112. ./configure $(SRTP_CONFIGURE_FLAGS) && \
  113. make
  114. cp $(SRTP_DIR)/libsrtp2.a .
  115. libjuice.a:
  116. ifneq ($(USE_GNUTLS), 0)
  117. cd $(JUICE_DIR) && make USE_NETTLE=1
  118. else
  119. cd $(JUICE_DIR) && make USE_NETTLE=0
  120. endif
  121. cp $(JUICE_DIR)/libjuice.a .