Makefile 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. # libdatachannel
  2. NAME=libdatachannel
  3. CXX=$(CROSS)g++
  4. AR=$(CROSS)ar
  5. RM=rm -f
  6. CPPFLAGS=-O2 -pthread -fPIC -Wall -Wno-address-of-packed-member
  7. CXXFLAGS=-std=c++17
  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. LIBS+=nettle
  30. else
  31. CPPFLAGS+=-DUSE_JUICE=0
  32. LIBS+=glib-2.0 gobject-2.0 nice
  33. endif
  34. INCLUDES+=$(shell pkg-config --cflags $(LIBS))
  35. LDLIBS+=$(LOCALLIBS) $(shell pkg-config --libs $(LIBS))
  36. SRCS=$(shell printf "%s " src/*.cpp)
  37. OBJS=$(subst .cpp,.o,$(SRCS))
  38. all: $(NAME).a $(NAME).so tests
  39. src/%.o: src/%.cpp
  40. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  41. test/%.o: test/%.cpp
  42. $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(INCLUDES) -MMD -MP -o $@ -c $<
  43. -include $(subst .cpp,.d,$(SRCS))
  44. $(NAME).a: $(OBJS)
  45. $(AR) crf $@ $(OBJS)
  46. $(NAME).so: $(LOCALLIBS) $(OBJS)
  47. $(CXX) $(LDFLAGS) -shared -o $@ $(OBJS) $(LDLIBS)
  48. tests: $(NAME).a test/main.o
  49. $(CXX) $(LDFLAGS) -o $@ test/main.o $(NAME).a $(LDLIBS)
  50. clean:
  51. -$(RM) include/rtc/*.d *.d
  52. -$(RM) src/*.o src/*.d
  53. -$(RM) test/*.o test/*.d
  54. dist-clean: clean
  55. -$(RM) $(NAME).a
  56. -$(RM) $(NAME).so
  57. -$(RM) libusrsctp.a
  58. -$(RM) tests
  59. -$(RM) include/*~
  60. -$(RM) src/*~
  61. -$(RM) test/*~
  62. -cd $(USRSCTP_DIR) && make clean
  63. libusrsctp.a:
  64. cd $(USRSCTP_DIR) && \
  65. ./bootstrap && \
  66. ./configure --enable-static --disable-debug CFLAGS="$(CPPFLAGS)" && \
  67. make
  68. cp $(USRSCTP_DIR)/usrsctplib/.libs/libusrsctp.a .
  69. libjuice.a:
  70. cd $(JUICE_DIR) && make
  71. cp $(JUICE_DIR)/libjuice.a .