2
0

Makefile 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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. CPPFLAGS+=-DRTC_EXPORTS
  59. INCLUDES+=$(if $(LIBS),$(shell pkg-config --cflags $(LIBS)),)
  60. LDLIBS+=$(LOCALLIBS) $(if $(LIBS),$(shell pkg-config --libs $(LIBS)),)
  61. SRCS=$(shell printf "%s " src/*.cpp src/impl/*.cpp)
  62. OBJS=$(subst .cpp,.o,$(SRCS))
  63. TEST_SRCS=$(shell printf "%s " test/*.cpp)
  64. TEST_OBJS=$(subst .cpp,.o,$(TEST_SRCS))
  65. all: $(NAME).a $(NAME).so tests
  66. src/%.o: src/%.cpp
  67. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  68. test/%.o: test/%.cpp
  69. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -Iinclude -Isrc -MMD -MP -o $@ -c $<
  70. -include $(subst .cpp,.d,$(SRCS))
  71. $(NAME).a: $(LOCALLIBS) $(OBJS)
  72. $(AR) crf $@ $(OBJS)
  73. $(NAME).so: $(LOCALLIBS) $(OBJS)
  74. $(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
  75. tests: $(NAME).a $(TEST_OBJS)
  76. $(CXX) $(LDFLAGS) -o $@ $(TEST_OBJS) $(NAME).a $(LDLIBS)
  77. clean:
  78. -$(RM) include/rtc/*.d *.d
  79. -$(RM) src/*.o src/*.d
  80. -$(RM) src/impl/*.o src/impl/*.d
  81. -$(RM) test/*.o test/*.d
  82. dist-clean: clean
  83. -$(RM) $(NAME).a
  84. -$(RM) $(NAME).so
  85. -$(RM) libusrsctp.a
  86. -$(RM) libjuice.a
  87. -$(RM) libsrtp2.a
  88. -$(RM) tests
  89. -$(RM) include/*~
  90. -$(RM) src/*~
  91. -$(RM) test/*~
  92. -cd $(USRSCTP_DIR) && make clean
  93. -cd $(SRTP_DIR) && make clean
  94. -cd $(JUICE_DIR) && make clean
  95. libusrsctp.a:
  96. cd $(USRSCTP_DIR) && \
  97. ./bootstrap && \
  98. ./configure --enable-static --disable-programs --disable-debug \
  99. --disable-inet --disable-inet6 CFLAGS="-fPIC" && \
  100. make
  101. cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
  102. libsrtp2.a:
  103. cd $(SRTP_DIR) && \
  104. ./configure && \
  105. make
  106. cp $(SRTP_DIR)/libsrtp2.a .
  107. libjuice.a:
  108. ifneq ($(USE_GNUTLS), 0)
  109. cd $(JUICE_DIR) && make USE_NETTLE=1
  110. else
  111. cd $(JUICE_DIR) && make USE_NETTLE=0
  112. endif
  113. cp $(JUICE_DIR)/libjuice.a .