2
0

Makefile 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. JUICE_DIR=deps/libjuice
  13. PLOG_DIR=deps/plog
  14. INCLUDES=-Iinclude/rtc -I$(PLOG_DIR)/include -I$(USRSCTP_DIR)/usrsctplib
  15. LDLIBS=
  16. USE_GNUTLS ?= 0
  17. ifneq ($(USE_GNUTLS), 0)
  18. CPPFLAGS+=-DUSE_GNUTLS=1
  19. LIBS+=gnutls
  20. else
  21. CPPFLAGS+=-DUSE_GNUTLS=0
  22. LIBS+=openssl
  23. endif
  24. USE_JUICE ?= 0
  25. ifneq ($(USE_JUICE), 0)
  26. CPPFLAGS+=-DUSE_JUICE=1
  27. INCLUDES+=-I$(JUICE_DIR)/include
  28. LOCALLIBS+=libjuice.a
  29. ifneq ($(USE_GNUTLS), 0)
  30. LIBS+=nettle
  31. endif
  32. else
  33. CPPFLAGS+=-DUSE_JUICE=0
  34. LIBS+=glib-2.0 gobject-2.0 nice
  35. endif
  36. RTC_ENABLE_WEBSOCKET ?= 1
  37. ifneq ($(RTC_ENABLE_WEBSOCKET), 0)
  38. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=1
  39. else
  40. CPPFLAGS+=-DRTC_ENABLE_WEBSOCKET=0
  41. endif
  42. INCLUDES+=$(shell pkg-config --cflags $(LIBS))
  43. LDLIBS+=$(LOCALLIBS) $(shell pkg-config --libs $(LIBS))
  44. SRCS=$(shell printf "%s " src/*.cpp)
  45. OBJS=$(subst .cpp,.o,$(SRCS))
  46. TEST_SRCS=$(shell printf "%s " test/*.cpp)
  47. TEST_OBJS=$(subst .cpp,.o,$(TEST_SRCS))
  48. all: $(NAME).a $(NAME).so tests
  49. src/%.o: src/%.cpp
  50. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  51. test/%.o: test/%.cpp
  52. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -Iinclude -Isrc -MMD -MP -o $@ -c $<
  53. -include $(subst .cpp,.d,$(SRCS))
  54. $(NAME).a: $(OBJS)
  55. $(AR) crf $@ $(OBJS)
  56. $(NAME).so: $(LOCALLIBS) $(OBJS)
  57. $(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
  58. tests: $(NAME).a $(TEST_OBJS)
  59. $(CXX) $(LDFLAGS) -o $@ $(TEST_OBJS) $(NAME).a $(LDLIBS)
  60. clean:
  61. -$(RM) include/rtc/*.d *.d
  62. -$(RM) src/*.o src/*.d
  63. -$(RM) test/*.o test/*.d
  64. dist-clean: clean
  65. -$(RM) $(NAME).a
  66. -$(RM) $(NAME).so
  67. -$(RM) libusrsctp.a
  68. -$(RM) libjuice.a
  69. -$(RM) tests
  70. -$(RM) include/*~
  71. -$(RM) src/*~
  72. -$(RM) test/*~
  73. -cd $(USRSCTP_DIR) && make clean
  74. -cd $(JUICE_DIR) && make clean
  75. libusrsctp.a:
  76. cd $(USRSCTP_DIR) && \
  77. ./bootstrap && \
  78. ./configure --enable-static --disable-debug CFLAGS="$(CPPFLAGS) -Wno-error=format-truncation" && \
  79. make
  80. cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
  81. libjuice.a:
  82. ifneq ($(USE_GNUTLS), 0)
  83. cd $(JUICE_DIR) && make USE_NETTLE=1
  84. else
  85. cd $(JUICE_DIR) && make USE_NETTLE=0
  86. endif
  87. cp $(JUICE_DIR)/libjuice.a .