123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- WEBRTC_BASE ?= .
- WEBRTC_DIR ?= $(WEBRTC_BASE)
- WEBRTC_VERSION ?= m79
- WEBRTC_OUT ?= Release
- WEBRTC_GN_ARGS ?= \
- is_debug=false \
- use_sysroot=false \
- rtc_include_tests=false \
- rtc_use_h264=true \
- rtc_use_x11=false \
- treat_warnings_as_errors=false \
- is_clang=false \
- use_custom_libcxx=false \
- use_rtti=true \
- $(WEBRTC_GN_ARGS_EXTRA)
- WEBRTC_TARGETS ?= default $(WEBRTC_TARGETS_EXTRA)
- WEBRTC_INCLUDES = \
- api audio base call common_audio common_video logging media modules p2p pc \
- system_wrappers rtc_base rtc_tools video third_party common_types.h \
- $(WEBRTC_INCLUDES_EXTRA)
-
- WEBRTC_PLATFORM ?= POSIX
-
- WEBRTC_FLAGS ?= \
- -I$(WEBRTC_BASE)/include \
- -I$(WEBRTC_DIR)/include -I$(WEBRTC_DIR)/include/webrtc \
- -I$(WEBRTC_DIR)/include/webrtc/third_party/abseil-cpp \
- -DWEBRTC_$(WEBRTC_PLATFORM)
-
- WEBRTC_SETPATH = PATH=$(WEBRTC_DIR)/depot_tools:"$$PATH"
- RTC_STAMP_DEPOT = $(WEBRTC_DIR)/depot_tools/.stamp
- RTC_STAMP_REPO = $(WEBRTC_DIR)/webrtc-checkout/.stamp
- RTC_STAMP_VERSION = $(WEBRTC_DIR)/webrtc-checkout/.stamps/stamp-$(WEBRTC_VERSION)
- RTC_STAMP_COMPILE = $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/.stamp
- RTC_STAMP_INCLUDES = $(WEBRTC_DIR)/include/webrtc/.stamp
- RTC_STAMP_ALL = \
- $(RTC_STAMP_DEPOT) $(RTC_STAMP_REPO) $(RTC_STAMP_VERSION) \
- $(RTC_STAMP_COMPILE) $(RTC_STAMP_INCLUDES)
-
- .PHONY: rtcall
- rtc-all: \
- $(WEBRTC_DIR)/include/webrtc/.stamp \
- $(WEBRTC_DIR)/lib/libwebrtc.a
-
- # Get depot_tools, which contains all the tools required to work with Google software
- $(RTC_STAMP_DEPOT):
- rm -rf $(WEBRTC_DIR)/depot_tools
- git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $(WEBRTC_DIR)/depot_tools
- touch $@
-
- # Fetch the WebRTC project itself
- $(RTC_STAMP_REPO): $(RTC_STAMP_DEPOT)
- rm -rf $(WEBRTC_DIR)/webrtc-checkout && mkdir $(WEBRTC_DIR)/webrtc-checkout
- #
- # Fetch webrtc, thit will take time...
- cd $(WEBRTC_DIR)/webrtc-checkout && $(WEBRTC_SETPATH) fetch --nohooks --no-history webrtc
- touch $@
-
- # Check out the correct WebRTC branch/commit
- $(RTC_STAMP_VERSION): $(RTC_STAMP_REPO)
- rm -rf $(WEBRTC_DIR)/webrtc-checkout/.stamps && mkdir $(WEBRTC_DIR)/webrtc-checkout/.stamps
- cd $(WEBRTC_DIR)/webrtc-checkout/src && git checkout branch-heads/$(WEBRTC_VERSION)
- #
- # Sync webrtc, this will take time...
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(WEBRTC_SETPATH) gclient sync -D --nohooks
- touch $@
-
- # Compile
- $(RTC_STAMP_COMPILE):
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(WEBRTC_SETPATH) gn gen out/$(WEBRTC_OUT) --args='$(WEBRTC_GN_ARGS)'
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(WEBRTC_SETPATH) ninja -C out/$(WEBRTC_OUT) $(WEBRTC_TARGETS)
- touch $@
-
- # Includes
- $(RTC_STAMP_INCLUDES): $(RTC_STAMP_VERSION)
- rm -rf $(WEBRTC_DIR)/include/webrtc && mkdir -p $(WEBRTC_DIR)/include/webrtc
- rsync -m --recursive --include='*/' --include='*.h' --exclude='*' \
- $(patsubst %,$(WEBRTC_DIR)/webrtc-checkout/src/%,$(WEBRTC_INCLUDES)) \
- $(WEBRTC_DIR)/include/webrtc
- touch $@
-
- # Libraries
- .PRECIOUS: $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/obj/%.a
- $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/obj/%.a: $(RTC_STAMP_COMPILE)
- touch $@
- $(WEBRTC_DIR)/lib/%.a: $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/obj/%.a
- @mkdir -p $(@D)
- cp $< $@
-
- # Create distribution
- WEBRTC_DIST_LIBS ?= libwebrtc.a $(WEBRTC_DIST_LIBS_EXTRA)
- $(WEBRTC_DIR)/dist.tar.gz: $(patsubst %,$(WEBRTC_DIR)/lib/%,$(WEBRTC_DIST_LIBS)) $(RTC_STAMP_ALL)
- rm -f $@
- cd $(WEBRTC_DIR) && tar czf $(notdir $@) \
- include $(patsubst %,lib/%,$(WEBRTC_DIST_LIBS)) \
- $(patsubst $(WEBRTC_DIR)/%,%,$(RTC_STAMP_ALL))
-
- .PHONY: rtc-dist
- rtc-dist: $(WEBRTC_DIR)/dist.tar.gz
-
- .PHONY: rtc-clean
- rtc-clean:
- rm -rf $(WEBRTC_DIR)/include/webrtc $(WEBRTC_DIR)/lib
-
- .PHONY: rtc-gn-clean
- rtc-gn-clean: rtc-clean
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(WEBRTC_SETPATH) gn clean out/$(WEBRTC_OUT)
- rm -f $(RTC_STAMP_COMPILE)
-
- .PHONY: rtc-clean-all
- rtc-clean-all: rtc-clean
- rm -rf $(WEBRTC_DIR)/depot_tools $(WEBRTC_DIR)/webrtc-checkout
-
- .PHONY: rtc-redo
- rtc-redo:
- rm -f $(RTC_STAMP_COMPILE)
-
- .PHONY: rtc-mock-stamps
- rtc-mock-stamps:
- mkdir -p $(dir $(RTC_STAMP_DEPOT)) && touch $(RTC_STAMP_DEPOT)
- mkdir -p $(dir $(RTC_STAMP_REPO)) && touch $(RTC_STAMP_REPO)
- mkdir -p $(dir $(RTC_STAMP_VERSION)) && touch $(RTC_STAMP_VERSION)
- mkdir -p $(dir $(RTC_STAMP_COMPILE)) && touch $(RTC_STAMP_COMPILE)
- mkdir -p $(dir $(RTC_STAMP_INCLUDES)) && touch $(RTC_STAMP_INCLUDES)
|