12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- WEBRTC_DIR ?= .
- WEBRTC_VERSION ?= m79
- WEBRTC_OUT ?= Release
- WEBRTC_GN_ARGS ?= \
- is_debug=false \
- use_sysroot=false \
- rtc_include_tests=false \
- is_clang=false \
- treat_warnings_as_errors=false \
- $(WEBRTC_GN_ARGS_EXTRA)
- WEBRTC_TARGETS ?= default $(WEBRTC_TARGETS_EXTRA)
- WEBRTC_LIBS ?= libwebrtc.a $(WEBRTC_LIBS_EXTRA)
- WEBRTC_INCLUDES = \
- api audio base common_audio common_video logging media modules p2p pc \
- rtc_base rtc_tools video common_types.h \
- $(WEBRTC_INCLUDES_EXTRA)
-
- 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 = include/webrtc/.stamp
-
- all: include/webrtc/.stamp $(patsubst %,libs/%,$(WEBRTC_LIBS))
-
- # 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 && $(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 && $(SETPATH) gclient sync -D --nohooks
- touch $@
-
- # Compile
- $(RTC_STAMP_COMPILE):
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) gn gen out/$(WEBRTC_OUT) --args='$(WEBRTC_GN_ARGS)'
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) ninja -C out/$(WEBRTC_OUT) $(WEBRTC_TARGETS)
- touch $@
-
- # Includes
- $(RTC_STAMP_INCLUDES): $(RTC_STAMP_VERSION)
- rm -rf include/webrtc && mkdir -p include/webrtc
- rsync -m --recursive --include='*/' --include='*.h' --exclude='*' \
- $(patsubst %,$(WEBRTC_DIR)/webrtc-checkout/src/%,$(WEBRTC_INCLUDES)) \
- include/webrtc
- touch $@
-
- # Libraries
- libs/%.a: $(WEBRTC_DIR)/webrtc-checkout/src/out/$(WEBRTC_OUT)/obj/%.a
- @mkdir -p $(@D)
- cp $< $@
-
- .PHONY: clean
- clean:
- rm -rf $(WEBRTC_DIR)/depot_tools $(WEBRTC_DIR)/webrtc-checkout
- rm -rf include libs
-
- .PHONY: gn-clean
- gn-clean:
- cd $(WEBRTC_DIR)/webrtc-checkout/src && $(SETPATH) gn clean out/$(WEBRTC_OUT)
|