You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Makefile 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. WEBRTC_DIR ?= .
  2. WEBRTC_VERSION ?= m79
  3. WEBRTC_OUT ?= Release
  4. WEBRTC_GN_ARGS ?= \
  5. is_debug=false \
  6. use_sysroot=false \
  7. rtc_include_tests=false \
  8. is_clang=false \
  9. treat_warnings_as_errors=false \
  10. $(WEBRTC_GN_ARGS_EXTRA)
  11. WEBRTC_TARGETS ?= default $(WEBRTC_TARGETS_EXTRA)
  12. WEBRTC_LIBS ?= libwebrtc.a $(WEBRTC_LIBS_EXTRA)
  13. WEBRTC_INCLUDES = \
  14. api audio base common_audio common_video logging media modules p2p pc \
  15. rtc_base rtc_tools video common_types.h \
  16. $(WEBRTC_INCLUDES_EXTRA)
  17. SETPATH = PATH=$(WEBRTC_DIR)/depot_tools:"$$PATH"
  18. RTC_STAMP_DEPOT = $(WEBRTC_DIR)/depot_tools/.stamp
  19. RTC_STAMP_REPO = $(WEBRTC_DIR)/webrtc-checkout/.stamp
  20. RTC_STAMP_VERSION = $(WEBRTC_DIR)/webrtc-checkout/.stamps/stamp-$(WEBRTC_VERSION)
  21. RTC_STAMP_COMPILE = $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/.stamp
  22. RTC_STAMP_INCLUDES = include/webrtc/.stamp
  23. all: include/webrtc/.stamp $(patsubst %,libs/%,$(WEBRTC_LIBS))
  24. # Get depot_tools, which contains all the tools required to work with Google software
  25. $(RTC_STAMP_DEPOT):
  26. rm -rf $(WEBRTC_DIR)/depot_tools
  27. git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $(WEBRTC_DIR)/depot_tools
  28. touch $@
  29. # Fetch the WebRTC project itself
  30. $(RTC_STAMP_REPO): $(RTC_STAMP_DEPOT)
  31. rm -rf $(WEBRTC_DIR)/webrtc-checkout && mkdir $(WEBRTC_DIR)/webrtc-checkout
  32. #
  33. # Fetch webrtc, thit will take time...
  34. cd $(WEBRTC_DIR)/webrtc-checkout && $(SETPATH) fetch --nohooks --no-history webrtc
  35. touch $@
  36. # Check out the correct WebRTC branch/commit
  37. $(RTC_STAMP_VERSION): $(RTC_STAMP_REPO)
  38. rm -rf $(WEBRTC_DIR)/webrtc-checkout/.stamps && mkdir $(WEBRTC_DIR)/webrtc-checkout/.stamps
  39. cd $(WEBRTC_DIR)/webrtc-checkout/src && git checkout branch-heads/$(WEBRTC_VERSION)
  40. #
  41. # Sync webrtc, this will take time...
  42. cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) gclient sync -D --nohooks
  43. touch $@
  44. # Compile
  45. $(RTC_STAMP_COMPILE):
  46. cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) gn gen out/$(WEBRTC_OUT) --args='$(WEBRTC_GN_ARGS)'
  47. cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) ninja -C out/$(WEBRTC_OUT) $(WEBRTC_TARGETS)
  48. touch $@
  49. # Includes
  50. $(RTC_STAMP_INCLUDES): $(RTC_STAMP_VERSION)
  51. rm -rf include/webrtc && mkdir -p include/webrtc
  52. rsync -m --recursive --include='*/' --include='*.h' --exclude='*' \
  53. $(patsubst %,$(WEBRTC_DIR)/webrtc-checkout/src/%,$(WEBRTC_INCLUDES)) \
  54. include/webrtc
  55. touch $@
  56. # Libraries
  57. libs/%.a: $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/obj/%.a
  58. @mkdir -p $(@D)
  59. cp $< $@
  60. .PHONY: clean
  61. clean:
  62. rm -rf $(WEBRTC_DIR)/depot_tools $(WEBRTC_DIR)/webrtc-checkout
  63. rm -rf include libs
  64. .PHONY: gn-clean
  65. gn-clean:
  66. cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) gn clean out/$(WEBRTC_OUT)