FreeBSD Bugzilla – Attachment 191341 Details for
Bug 226476
www/firefox: update to 60.0
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
beta2 (devedition)
ff60.diff (text/plain), 845.45 KB, created by
Jan Beich
on 2018-03-09 15:04:41 UTC
(
hide
)
Description:
beta2 (devedition)
Filename:
MIME Type:
Creator:
Jan Beich
Created:
2018-03-09 15:04:41 UTC
Size:
845.45 KB
patch
obsolete
>From 90de55541952d3b6b88999dd41d0953041ad8509 Mon Sep 17 00:00:00 2001 >From: jbeich <jbeich@35697150-7ecd-e111-bb59-0022644237b5> >Date: Tue, 6 Mar 2018 00:56:50 +0000 >Subject: [PATCH] www/firefox: update to 60.0 > >Changes: https://www.mozilla.org/firefox/60.0/releasenotes/ >Security: 5aefc41e-d304-4ec8-8c82-824f84f08244 >MFH: 2018Q1 >--- > Mk/Uses/gecko.mk | 4 +- > www/firefox-i18n/Makefile | 9 +- > www/firefox-i18n/Makefile.lang | 5 +- > www/firefox-i18n/Makefile.option | 2 + > www/firefox-i18n/distinfo | 392 +- > www/firefox/Makefile | 17 +- > www/firefox/distinfo | 6 +- > www/firefox/files/patch-a-gyp-webrtc | 21490 +++++++++++++++++++++++++++++++++ > www/firefox/files/patch-bug1021761 | 6 +- > www/firefox/files/patch-bug1418162 | 58 + > www/firefox/files/patch-bug1433747 | 24 - > www/firefox/files/patch-bug1442746 | 40 + > www/firefox/files/patch-bug1442791 | 33 + > www/firefox/files/patch-z-bug517422 | 24 +- > 14 files changed, 21856 insertions(+), 254 deletions(-) > create mode 100644 www/firefox/files/patch-a-gyp-webrtc > create mode 100644 www/firefox/files/patch-bug1418162 > delete mode 100644 www/firefox/files/patch-bug1433747 > create mode 100644 www/firefox/files/patch-bug1442746 > create mode 100644 www/firefox/files/patch-bug1442791 > >diff --git a/Mk/Uses/gecko.mk b/Mk/Uses/gecko.mk >index d07d0a07c4fe..9df59c251201 100644 >--- a/Mk/Uses/gecko.mk >+++ b/Mk/Uses/gecko.mk >@@ -37,12 +37,12 @@ RUN_DEPENDS+= libxul>=45:www/libxul > .elif ${gecko_ARGS:Mfirefox} > > _GECKO_DEFAULT_VERSION= 52 >-_GECKO_VERSIONS= 52 59 >+_GECKO_VERSIONS= 52 60 > _GECKO_TYPE= firefox > > # Dependence lines for different Firefox versions > 52_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox-esr >-59_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox >+60_DEPENDS= ${LOCALBASE}/lib/firefox/firefox:www/firefox > > .if exists(${LOCALBASE}/bin/firefox) > _GECKO_INSTALLED_VER!= ${LOCALBASE}/bin/firefox --version 2>/dev/null >diff --git a/www/firefox-i18n/Makefile b/www/firefox-i18n/Makefile >index d4ef33747192..2d4ccf1060f5 100644 >--- a/www/firefox-i18n/Makefile >+++ b/www/firefox-i18n/Makefile >@@ -2,11 +2,10 @@ > # $FreeBSD$ > > PORTNAME= firefox-i18n >-PORTVERSION= 59.0 >-PORTREVISION= 1 >+PORTVERSION= 60.0b2 > CATEGORIES= www >-MASTER_SITES= MOZILLA/${PORTNAME:S|-i18n||}/releases/${DISTVERSION}/linux-i686/xpi \ >- MOZILLA/${PORTNAME:S|-i18n||}/candidates/${DISTVERSION}-candidates/build4/linux-i686/xpi >+MASTER_SITES= MOZILLA/devedition/releases/${DISTVERSION}/linux-i686/xpi \ >+ MOZILLA/devedition/candidates/${DISTVERSION}-candidates/build1/linux-i686/xpi > PKGNAMEPREFIX= > DISTFILES= ${FIREFOX_I18N_:S/$/.xpi/} > DIST_SUBDIR= xpi/${DISTNAME} >@@ -16,7 +15,7 @@ COMMENT= Localized interface for Firefox > > EXTRACT_DEPENDS= zip:archivers/zip > >-USES= zip:infozip gecko:firefox,59,build >+USES= zip:infozip gecko:firefox,60,build > USE_XPI= firefox > > NO_ARCH= yes >diff --git a/www/firefox-i18n/Makefile.lang b/www/firefox-i18n/Makefile.lang >index a73f94452926..25b432860d28 100644 >--- a/www/firefox-i18n/Makefile.lang >+++ b/www/firefox-i18n/Makefile.lang >@@ -6,7 +6,7 @@ FIREFOX_I18N_ALL_= ach af an ar as ast az be bg bn-BD bn-IN br bs ca cak \ > es-ES es-MX et eu fa ff fi fr fy-NL ga-IE gd gl gn \ > gu-IN he hi-IN hr hsb hu hy-AM ia id is it ja ka kab \ > kk km kn ko lij lt lv mai mk ml mr ms my nb-NO ne-NP nl \ >- nn-NO or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son \ >+ nn-NO oc or pa-IN pl pt-BR pt-PT rm ro ru si sk sl son \ > sq sr sv-SE ta te th tr uk ur uz vi xh zh-CN zh-TW > > .if defined(FIREFOX_I18N_ALL) || defined(PACKAGE_BUILDING) || target(package) >@@ -225,6 +225,9 @@ FIREFOX_I18N+= nl > .if ${PORT_OPTIONS:MLANG_NN} > FIREFOX_I18N+= nn-NO > .endif >+.if ${PORT_OPTIONS:MLANG_OC} >+FIREFOX_I18N+= oc >+.endif > .if ${PORT_OPTIONS:MLANG_OR} > FIREFOX_I18N+= or > .endif >diff --git a/www/firefox-i18n/Makefile.option b/www/firefox-i18n/Makefile.option >index 082aa76465ba..49e0d6f4adc6 100644 >--- a/www/firefox-i18n/Makefile.option >+++ b/www/firefox-i18n/Makefile.option >@@ -73,6 +73,7 @@ OPTIONS_DEFINE= LANG_ACH \ > LANG_NE \ > LANG_NL \ > LANG_NN \ >+ LANG_OC \ > LANG_OR \ > LANG_PA \ > LANG_PL \ >@@ -122,6 +123,7 @@ LANG_LIJ_DESC?= Ligurian (Genoa) language support > LANG_MS_DESC?= Malay language support > LANG_MY_DESC?= Burmese language support > LANG_NE_DESC?= Nepali language support >+LANG_OC_DESC?= Occitan (lengadocian) language support > LANG_SW_DESC?= Swahili language support > LANG_UR_DESC?= Urdu (Pakistan) language support > LANG_UZ_DESC?= Uzbek language support >diff --git a/www/firefox-i18n/distinfo b/www/firefox-i18n/distinfo >index ee6da157d923..971671df3f49 100644 >--- a/www/firefox-i18n/distinfo >+++ b/www/firefox-i18n/distinfo >@@ -1,195 +1,197 @@ >-TIMESTAMP = 1520456550 >-SHA256 (xpi/firefox-i18n-59.0/ach.xpi) = 1d3c6166b27b5e640733210faf4e7fa751d1acb8edd80448fd5cfb840c491987 >-SIZE (xpi/firefox-i18n-59.0/ach.xpi) = 439224 >-SHA256 (xpi/firefox-i18n-59.0/af.xpi) = 21ef31da94eb74b269e65c47961f93d17827a480756d282cf367f3ec4998866c >-SIZE (xpi/firefox-i18n-59.0/af.xpi) = 436729 >-SHA256 (xpi/firefox-i18n-59.0/an.xpi) = e544fcac272f5b3ee9365c53063164fb6f93e323c61fb0154e744fe046d0e348 >-SIZE (xpi/firefox-i18n-59.0/an.xpi) = 463403 >-SHA256 (xpi/firefox-i18n-59.0/ar.xpi) = 6443febaa553ae1f843a20ca5c78be7db122ffa98289f100cca883c86b17fb0a >-SIZE (xpi/firefox-i18n-59.0/ar.xpi) = 486631 >-SHA256 (xpi/firefox-i18n-59.0/as.xpi) = b8baf8448a59e13ae8ed5794f9a1b796f34029add488dc215023ff12c5549ccb >-SIZE (xpi/firefox-i18n-59.0/as.xpi) = 483300 >-SHA256 (xpi/firefox-i18n-59.0/ast.xpi) = 82876aa720ab6c98c5c1dd12fde7d62a47d1c42a87d70666b765144e620334e2 >-SIZE (xpi/firefox-i18n-59.0/ast.xpi) = 454341 >-SHA256 (xpi/firefox-i18n-59.0/az.xpi) = e799b35e4a8d2272378b6f0fadee5777660af8d96e6cfa9b23d5d4e3a7088693 >-SIZE (xpi/firefox-i18n-59.0/az.xpi) = 464267 >-SHA256 (xpi/firefox-i18n-59.0/be.xpi) = d4852d209ee8dfa9b88abc418f48cbb4df9599de9c4000455f50533ddc1dba08 >-SIZE (xpi/firefox-i18n-59.0/be.xpi) = 517058 >-SHA256 (xpi/firefox-i18n-59.0/bg.xpi) = ee011edf65e91faa21c8a75b8f9922484a899b4d6762f0a6a5f3b9f35521c2b3 >-SIZE (xpi/firefox-i18n-59.0/bg.xpi) = 508611 >-SHA256 (xpi/firefox-i18n-59.0/bn-BD.xpi) = 5c39189efa5daf9e8d6574b98bed66edad98bd0a4459955c666c5a9734c16d28 >-SIZE (xpi/firefox-i18n-59.0/bn-BD.xpi) = 526351 >-SHA256 (xpi/firefox-i18n-59.0/bn-IN.xpi) = cdacc3c3002f4bb335b13bea1ddf22d0725938156afe257d45ad1a2e1148aa68 >-SIZE (xpi/firefox-i18n-59.0/bn-IN.xpi) = 510795 >-SHA256 (xpi/firefox-i18n-59.0/br.xpi) = dfa4af49f1c379c1e299d252ba416310775c0f6a5802b1f26bb6610e20ab890d >-SIZE (xpi/firefox-i18n-59.0/br.xpi) = 451718 >-SHA256 (xpi/firefox-i18n-59.0/bs.xpi) = 75b095a9128248737edcb22a5c7926c51f1657762549453fe5dba045628baa97 >-SIZE (xpi/firefox-i18n-59.0/bs.xpi) = 457857 >-SHA256 (xpi/firefox-i18n-59.0/ca.xpi) = 5171bf8d0c0f40bea63e81ae282cd41e42484b2ec06b904460c8669ee6454a3b >-SIZE (xpi/firefox-i18n-59.0/ca.xpi) = 464910 >-SHA256 (xpi/firefox-i18n-59.0/cak.xpi) = eaae22a1be95e28d55aa849dc3699ebe5ee567574e38a306f26591da03a7e332 >-SIZE (xpi/firefox-i18n-59.0/cak.xpi) = 475232 >-SHA256 (xpi/firefox-i18n-59.0/cs.xpi) = 2843a427be283937c15f98e31cb23025960822a8faf0d71d7ef30e20007cecae >-SIZE (xpi/firefox-i18n-59.0/cs.xpi) = 471573 >-SHA256 (xpi/firefox-i18n-59.0/cy.xpi) = 9e83160f6142bc1189822957f7528f1a3ca4c221576cac1075dfed5731197516 >-SIZE (xpi/firefox-i18n-59.0/cy.xpi) = 454431 >-SHA256 (xpi/firefox-i18n-59.0/da.xpi) = 5803ba7d12156ef86fcc951ceac1b53f3fbce938826d51bc6f15780c1242d935 >-SIZE (xpi/firefox-i18n-59.0/da.xpi) = 446947 >-SHA256 (xpi/firefox-i18n-59.0/de.xpi) = 80cb4b481073f71acaa6e6d760ebf0b599a33895eab236cf2cc3a8c000be0697 >-SIZE (xpi/firefox-i18n-59.0/de.xpi) = 466271 >-SHA256 (xpi/firefox-i18n-59.0/dsb.xpi) = bcdb45e97f901fbff9b547a91a0b5c2a5bdadeea8ea5610ee5fceaf4484ef36f >-SIZE (xpi/firefox-i18n-59.0/dsb.xpi) = 478973 >-SHA256 (xpi/firefox-i18n-59.0/el.xpi) = 466c2fef631c844ab1280e3879add57aacb98e2f30a7d8223f865d196deeb487 >-SIZE (xpi/firefox-i18n-59.0/el.xpi) = 531406 >-SHA256 (xpi/firefox-i18n-59.0/en-GB.xpi) = cb42b3e458acc5ab249da6b55a9958585e4c064ddfb94b7bf49f9465626df0a4 >-SIZE (xpi/firefox-i18n-59.0/en-GB.xpi) = 434298 >-SHA256 (xpi/firefox-i18n-59.0/en-US.xpi) = 44e49f00faf5c818ca025e4845f667b33c9542f5cc876fb5779c1d0fb87cc8b9 >-SIZE (xpi/firefox-i18n-59.0/en-US.xpi) = 432747 >-SHA256 (xpi/firefox-i18n-59.0/en-ZA.xpi) = 4816897d2e2f2f5f3d3a35a0f335cd34673f4cc57fe82178af7522055b508e9b >-SIZE (xpi/firefox-i18n-59.0/en-ZA.xpi) = 427364 >-SHA256 (xpi/firefox-i18n-59.0/eo.xpi) = c17ce4751c46e83a293d7272ca8cfeff8602b223226d8fb60aab74e9dae5e7ad >-SIZE (xpi/firefox-i18n-59.0/eo.xpi) = 453365 >-SHA256 (xpi/firefox-i18n-59.0/es-AR.xpi) = 1a51d27cafa512ee25f9738f3b121f8d7e573ba277d1b834bae30a739c851e03 >-SIZE (xpi/firefox-i18n-59.0/es-AR.xpi) = 461795 >-SHA256 (xpi/firefox-i18n-59.0/es-CL.xpi) = f6c73332ed4ad8484aee9c87b70762ebf4795fbf340d87ee763879eb20788d14 >-SIZE (xpi/firefox-i18n-59.0/es-CL.xpi) = 464652 >-SHA256 (xpi/firefox-i18n-59.0/es-ES.xpi) = c1fc12302f57f526ef483ffb79a39c63b0f946b09fd1541989dd2b28ba7eb83c >-SIZE (xpi/firefox-i18n-59.0/es-ES.xpi) = 348462 >-SHA256 (xpi/firefox-i18n-59.0/es-MX.xpi) = 208182f94525a759cba128b892e80e99ee6dd1921906f8c054a8a515e283b35a >-SIZE (xpi/firefox-i18n-59.0/es-MX.xpi) = 466310 >-SHA256 (xpi/firefox-i18n-59.0/et.xpi) = 0414fc474c1457f8ec64a40d3f268aefe8ddc70cf85a07c5faba4b156f04353c >-SIZE (xpi/firefox-i18n-59.0/et.xpi) = 445393 >-SHA256 (xpi/firefox-i18n-59.0/eu.xpi) = 45a5df206d635e4b656c34e06e2c7df4b5614fd1584e7bd171432bff44cf155c >-SIZE (xpi/firefox-i18n-59.0/eu.xpi) = 455235 >-SHA256 (xpi/firefox-i18n-59.0/fa.xpi) = 375f9c9356891978d1b8558c63e34675ff3ed70dde54cbd70fbfee736a6dbe37 >-SIZE (xpi/firefox-i18n-59.0/fa.xpi) = 508096 >-SHA256 (xpi/firefox-i18n-59.0/ff.xpi) = ef8313cd46c2e68af5388d4c705958db8e2b75c4156b2b5ee76b2822c5bb921e >-SIZE (xpi/firefox-i18n-59.0/ff.xpi) = 455025 >-SHA256 (xpi/firefox-i18n-59.0/fi.xpi) = 2d568720cd7f1d3106c6e1c8d02e838786a7643cdc8a74362a449127636346b6 >-SIZE (xpi/firefox-i18n-59.0/fi.xpi) = 445181 >-SHA256 (xpi/firefox-i18n-59.0/fr.xpi) = 7dad72da0d5ea4d30b70f34319a9446044d952bcdcaef8e50e8735328f86e857 >-SIZE (xpi/firefox-i18n-59.0/fr.xpi) = 473591 >-SHA256 (xpi/firefox-i18n-59.0/fy-NL.xpi) = d1595e13a228471d0e675148d52855d0f18fb0352ac559323204dfa648233b44 >-SIZE (xpi/firefox-i18n-59.0/fy-NL.xpi) = 462917 >-SHA256 (xpi/firefox-i18n-59.0/ga-IE.xpi) = 21c43c03c285a53f47a56be397dafed998b60fdc763d370465f692d90ba967b1 >-SIZE (xpi/firefox-i18n-59.0/ga-IE.xpi) = 471906 >-SHA256 (xpi/firefox-i18n-59.0/gd.xpi) = 0ecf7b654d8ab199277c286849bc50e4289c30b7766e3a9de28a69cafa75aa6b >-SIZE (xpi/firefox-i18n-59.0/gd.xpi) = 461296 >-SHA256 (xpi/firefox-i18n-59.0/gl.xpi) = eddfdf159b7dc97c2ab00d5c13208fb161521cbeeaefbcabd3925f68fd28db0a >-SIZE (xpi/firefox-i18n-59.0/gl.xpi) = 441613 >-SHA256 (xpi/firefox-i18n-59.0/gn.xpi) = 14cb97943f1b501a77a843addd6b03c60518c8c30fb7337148f1803c492f91ad >-SIZE (xpi/firefox-i18n-59.0/gn.xpi) = 469396 >-SHA256 (xpi/firefox-i18n-59.0/gu-IN.xpi) = 3ffc20afbe2ad5a625079766ac286cb19f1052e874e3825169619364f8c843ba >-SIZE (xpi/firefox-i18n-59.0/gu-IN.xpi) = 521802 >-SHA256 (xpi/firefox-i18n-59.0/he.xpi) = 89ba85e80cf52e7743763804300a8b2e9c5e55b9d189954cf5d45c796ea77c04 >-SIZE (xpi/firefox-i18n-59.0/he.xpi) = 472769 >-SHA256 (xpi/firefox-i18n-59.0/hi-IN.xpi) = 16a5e4fbbf1ddd8827afb2382b82b59039fb040b16bd36f9c214ddaa4bd82db0 >-SIZE (xpi/firefox-i18n-59.0/hi-IN.xpi) = 524277 >-SHA256 (xpi/firefox-i18n-59.0/hr.xpi) = 2966dafaea8224e7e9e599f048fb9725f28704af53bb5f0a311dc9ef485f7325 >-SIZE (xpi/firefox-i18n-59.0/hr.xpi) = 459976 >-SHA256 (xpi/firefox-i18n-59.0/hsb.xpi) = 1311fdfe6784f73c1f7ead834a301e8818db253393510a0f6bc00e68ec5e4546 >-SIZE (xpi/firefox-i18n-59.0/hsb.xpi) = 475939 >-SHA256 (xpi/firefox-i18n-59.0/hu.xpi) = c362521efa6a58d80eff294bd1d85939c42c6a29cbba6903a3d00525fd4ca9e0 >-SIZE (xpi/firefox-i18n-59.0/hu.xpi) = 476895 >-SHA256 (xpi/firefox-i18n-59.0/hy-AM.xpi) = 4b28fd26b21abe6897399a72c4d99c765d3b08f55a1f36c184d33bf83d646668 >-SIZE (xpi/firefox-i18n-59.0/hy-AM.xpi) = 508165 >-SHA256 (xpi/firefox-i18n-59.0/ia.xpi) = 4c7f6069edb4cfab47bad733621b23d192f4ef666556877d441f224ed5f91dd9 >-SIZE (xpi/firefox-i18n-59.0/ia.xpi) = 448827 >-SHA256 (xpi/firefox-i18n-59.0/id.xpi) = e11d14366748f021c336254f1557ca62d0bbd13ca308be097b28e68db5a8e02f >-SIZE (xpi/firefox-i18n-59.0/id.xpi) = 441951 >-SHA256 (xpi/firefox-i18n-59.0/is.xpi) = 8bb7f3fb34c4fa15f297a99f5651f00a99844346a1d4469117c5dea0cd840843 >-SIZE (xpi/firefox-i18n-59.0/is.xpi) = 451371 >-SHA256 (xpi/firefox-i18n-59.0/it.xpi) = 619b955412cd52f1379a64f9bbc23f78d595dd0139c0097ea3e93c4267eef051 >-SIZE (xpi/firefox-i18n-59.0/it.xpi) = 342522 >-SHA256 (xpi/firefox-i18n-59.0/ja.xpi) = e32dc966b1164b0a8bc5e8efbf660d8c462c9e50c93a978de88eb3915ab41247 >-SIZE (xpi/firefox-i18n-59.0/ja.xpi) = 508146 >-SHA256 (xpi/firefox-i18n-59.0/ka.xpi) = d0cb6ec913abd01d5826032716cb12b780e591d273080972d3627ab5c51e2bbd >-SIZE (xpi/firefox-i18n-59.0/ka.xpi) = 492567 >-SHA256 (xpi/firefox-i18n-59.0/kab.xpi) = 3b56006aa799f9c6e402781843a4774a858532c1f53ba03f5918efa52a3dabac >-SIZE (xpi/firefox-i18n-59.0/kab.xpi) = 461838 >-SHA256 (xpi/firefox-i18n-59.0/kk.xpi) = c1bbedcb92a43c18c654b098705d513d7663876a30875c322a61657e6046b72c >-SIZE (xpi/firefox-i18n-59.0/kk.xpi) = 517582 >-SHA256 (xpi/firefox-i18n-59.0/km.xpi) = 9fa77a9347c77f23f52f0129a35fe290bb3d67e261817956ba265f3b68cacbe4 >-SIZE (xpi/firefox-i18n-59.0/km.xpi) = 526357 >-SHA256 (xpi/firefox-i18n-59.0/kn.xpi) = b62f5139ee71ed4107e878a5fab2e58e1dd910598b85199d1162c67ffc426c85 >-SIZE (xpi/firefox-i18n-59.0/kn.xpi) = 527877 >-SHA256 (xpi/firefox-i18n-59.0/ko.xpi) = 1c498889480fa8ea9a065ba12b185283edc518d738c6db8ff780098b38bf817a >-SIZE (xpi/firefox-i18n-59.0/ko.xpi) = 487659 >-SHA256 (xpi/firefox-i18n-59.0/lij.xpi) = 0312ca2b5aecd54f7456d8310542165f005f2e1bddc70bedb824541dcce4b65b >-SIZE (xpi/firefox-i18n-59.0/lij.xpi) = 446604 >-SHA256 (xpi/firefox-i18n-59.0/lt.xpi) = 7ba6037547b3e5f1d402ce698cd74dfbe6c2eca8013f9ebb9cda820233cca998 >-SIZE (xpi/firefox-i18n-59.0/lt.xpi) = 475141 >-SHA256 (xpi/firefox-i18n-59.0/lv.xpi) = 85f32e9a7fd03423ae0b7339990c076b84409f95d9dc010089389666f891c1da >-SIZE (xpi/firefox-i18n-59.0/lv.xpi) = 463653 >-SHA256 (xpi/firefox-i18n-59.0/mai.xpi) = 2cc0ec3dc2a0296d17c0fd71060291caac8981c496acc524b26da7ef4cb62ed3 >-SIZE (xpi/firefox-i18n-59.0/mai.xpi) = 499908 >-SHA256 (xpi/firefox-i18n-59.0/mk.xpi) = 0ffa52cdc876ceb990eb0b1d729ed5fa5fe92bfe2d65e9d4bfd759758ac216fa >-SIZE (xpi/firefox-i18n-59.0/mk.xpi) = 484074 >-SHA256 (xpi/firefox-i18n-59.0/ml.xpi) = ac845dba07dbbd76fe37c0bfc4dd5365e15254971f9588377a680e07745fed6f >-SIZE (xpi/firefox-i18n-59.0/ml.xpi) = 539733 >-SHA256 (xpi/firefox-i18n-59.0/mr.xpi) = 8bafe1760d2a1cf0093256cd019dac2c097e79f1484bfe66a1f3f73076d3b6b3 >-SIZE (xpi/firefox-i18n-59.0/mr.xpi) = 517960 >-SHA256 (xpi/firefox-i18n-59.0/ms.xpi) = 00c44f109551b23f0a904402573c06edf4d8bf087cc0e91b52b006621883c9b5 >-SIZE (xpi/firefox-i18n-59.0/ms.xpi) = 450073 >-SHA256 (xpi/firefox-i18n-59.0/my.xpi) = 37708298e5bcf83d9570a5144b633709666b69840315c680bae3f7dd2a186001 >-SIZE (xpi/firefox-i18n-59.0/my.xpi) = 511892 >-SHA256 (xpi/firefox-i18n-59.0/nb-NO.xpi) = 90c61e5724b618b5fdfc65fc37d60686cd374f94a6567d6aa290c8733eb45c86 >-SIZE (xpi/firefox-i18n-59.0/nb-NO.xpi) = 450275 >-SHA256 (xpi/firefox-i18n-59.0/ne-NP.xpi) = d6a3aebbb11faca5a07794648f13946a84807abb7325176b0da8b51e2c53f251 >-SIZE (xpi/firefox-i18n-59.0/ne-NP.xpi) = 509175 >-SHA256 (xpi/firefox-i18n-59.0/nl.xpi) = 95cdc03247c2e59313c59bf819401fcf140bcf556367755f79207ce38345c123 >-SIZE (xpi/firefox-i18n-59.0/nl.xpi) = 458127 >-SHA256 (xpi/firefox-i18n-59.0/nn-NO.xpi) = 87fa01ddab0d6545cced17229187b63bead047549ea7c73ba3947f9a555a8dd7 >-SIZE (xpi/firefox-i18n-59.0/nn-NO.xpi) = 451469 >-SHA256 (xpi/firefox-i18n-59.0/or.xpi) = a00da5f2a4b7c13947a27b526c0d35673eff42d9cab0979c6670ca54ee8f68c7 >-SIZE (xpi/firefox-i18n-59.0/or.xpi) = 493180 >-SHA256 (xpi/firefox-i18n-59.0/pa-IN.xpi) = e43dd78383255b594d8078c38d46e872565304427ab7bbeca47458477a34d4ef >-SIZE (xpi/firefox-i18n-59.0/pa-IN.xpi) = 492418 >-SHA256 (xpi/firefox-i18n-59.0/pl.xpi) = 323c5439304f6fbed7db49ae96ab513071551ef87e12bc11103b5b4be0d07289 >-SIZE (xpi/firefox-i18n-59.0/pl.xpi) = 358509 >-SHA256 (xpi/firefox-i18n-59.0/pt-BR.xpi) = 21bde4b1666858fb65682147fa235fe9688206a2e0d492affd019b3fd99e2c64 >-SIZE (xpi/firefox-i18n-59.0/pt-BR.xpi) = 455913 >-SHA256 (xpi/firefox-i18n-59.0/pt-PT.xpi) = d9008a9b59a265702ad5915149fa9960151bdd0699bafaf8c383ece97d182d9f >-SIZE (xpi/firefox-i18n-59.0/pt-PT.xpi) = 459329 >-SHA256 (xpi/firefox-i18n-59.0/rm.xpi) = 88192d2d2b3824d45ff862ba285ce36499ae15daaf89d21037a8ebfc0500fe61 >-SIZE (xpi/firefox-i18n-59.0/rm.xpi) = 449756 >-SHA256 (xpi/firefox-i18n-59.0/ro.xpi) = 6fe642ecbb2d3f2c181fc8f1194c1b08cf1d6d1f76b8f205ffdfbab650f8827a >-SIZE (xpi/firefox-i18n-59.0/ro.xpi) = 453401 >-SHA256 (xpi/firefox-i18n-59.0/ru.xpi) = 9905c2249e72bf8be629c59915298598ac6e63b90ba95ceee0795d077a4ad09b >-SIZE (xpi/firefox-i18n-59.0/ru.xpi) = 526521 >-SHA256 (xpi/firefox-i18n-59.0/si.xpi) = 9608ae50405741a544270d2256035a8ae6484767fe737db8b98ac296ccdcda67 >-SIZE (xpi/firefox-i18n-59.0/si.xpi) = 492585 >-SHA256 (xpi/firefox-i18n-59.0/sk.xpi) = ee8cc67c33edccc7b7291496fb20f2f850f6934f67a0694b1bb19774db254eb1 >-SIZE (xpi/firefox-i18n-59.0/sk.xpi) = 480811 >-SHA256 (xpi/firefox-i18n-59.0/sl.xpi) = 13a9308e3d93ecfb873f4fb9a4a6f14b77ac37a730c0700e7c0296ab81250de7 >-SIZE (xpi/firefox-i18n-59.0/sl.xpi) = 458823 >-SHA256 (xpi/firefox-i18n-59.0/son.xpi) = 557087d226148a636c89313de04b7dfad71bca392dde28236163ca556f9322be >-SIZE (xpi/firefox-i18n-59.0/son.xpi) = 446398 >-SHA256 (xpi/firefox-i18n-59.0/sq.xpi) = 492cbf457ad02ef8efdfc546207a2d6c9ea07df57741dcebf89bae235438ca55 >-SIZE (xpi/firefox-i18n-59.0/sq.xpi) = 464461 >-SHA256 (xpi/firefox-i18n-59.0/sr.xpi) = 30dc2cc54bd0bb4c88bd4ec016eba9285fc1d14d27417b402c2a44967baa4fd5 >-SIZE (xpi/firefox-i18n-59.0/sr.xpi) = 486176 >-SHA256 (xpi/firefox-i18n-59.0/sv-SE.xpi) = 69fc218bcf153772dbeb1000dc35849210d00ede91537b948b27876ec03ffddf >-SIZE (xpi/firefox-i18n-59.0/sv-SE.xpi) = 458658 >-SHA256 (xpi/firefox-i18n-59.0/ta.xpi) = d55bc8f1458d96d548d7ef3e01a1cec3dbd9c4b62f8dd539658d4ad90129fb58 >-SIZE (xpi/firefox-i18n-59.0/ta.xpi) = 512841 >-SHA256 (xpi/firefox-i18n-59.0/te.xpi) = 25368ecdd33ed9ec4ad5fd95f510afffc61740f2bbb33c814ec3a6863673dc39 >-SIZE (xpi/firefox-i18n-59.0/te.xpi) = 527082 >-SHA256 (xpi/firefox-i18n-59.0/th.xpi) = a7e8951f27666735eb6e2bb526c069ae26a7bf6ed2dde12c0b47a9adacc1c200 >-SIZE (xpi/firefox-i18n-59.0/th.xpi) = 498542 >-SHA256 (xpi/firefox-i18n-59.0/tr.xpi) = 50728d089f891362a4b1f0d036edbc556e8dbe922c2abdbb89ffe45d57d275f4 >-SIZE (xpi/firefox-i18n-59.0/tr.xpi) = 463592 >-SHA256 (xpi/firefox-i18n-59.0/uk.xpi) = 7b500089a303e93761054b3cda4e4a188ebe6ccc2a120e5c90fd5d4e7cf28cfe >-SIZE (xpi/firefox-i18n-59.0/uk.xpi) = 516924 >-SHA256 (xpi/firefox-i18n-59.0/ur.xpi) = 9cc9ece7f94e13894651b4c342d226552e8544e8488e447da6c9f1ddf8884d31 >-SIZE (xpi/firefox-i18n-59.0/ur.xpi) = 507378 >-SHA256 (xpi/firefox-i18n-59.0/uz.xpi) = 4ae7546f790afe6b931d137531a6ef6a7287f1959ed20758c62624e23d75fa53 >-SIZE (xpi/firefox-i18n-59.0/uz.xpi) = 456922 >-SHA256 (xpi/firefox-i18n-59.0/vi.xpi) = 778ee06852609372e0303a5354b6e8b1f2a22e999cbeedba6bf9d8d303c05bf9 >-SIZE (xpi/firefox-i18n-59.0/vi.xpi) = 470067 >-SHA256 (xpi/firefox-i18n-59.0/xh.xpi) = 41dfddbd064d2da408b93409bfacafd32226cd086a3da5e603a5a3fba4891656 >-SIZE (xpi/firefox-i18n-59.0/xh.xpi) = 460770 >-SHA256 (xpi/firefox-i18n-59.0/zh-CN.xpi) = 03679d815dee18016aae33fba44eafe8116d025c5f5d99b9efbba29d65886b8f >-SIZE (xpi/firefox-i18n-59.0/zh-CN.xpi) = 483447 >-SHA256 (xpi/firefox-i18n-59.0/zh-TW.xpi) = 40253d142f875a27e086c34737e0c437939cea29011160c7d7b252ad1f34f9d2 >-SIZE (xpi/firefox-i18n-59.0/zh-TW.xpi) = 477087 >+TIMESTAMP = 1520432739 >+SHA256 (xpi/firefox-i18n-60.0b2/ach.xpi) = 549dddc28203d1d9305ce994fc381711ce4fbed591bf8e81f2e7d827113db4d5 >+SIZE (xpi/firefox-i18n-60.0b2/ach.xpi) = 449090 >+SHA256 (xpi/firefox-i18n-60.0b2/af.xpi) = f651b2abdb84a7d11cffab8dcf62f37491d3817f5726226f8c3736ff106c527f >+SIZE (xpi/firefox-i18n-60.0b2/af.xpi) = 446394 >+SHA256 (xpi/firefox-i18n-60.0b2/an.xpi) = 059f8796c4f6ab4a1b3bf05e207b8ef90f2cce1218ec2392c032e93cc73042cc >+SIZE (xpi/firefox-i18n-60.0b2/an.xpi) = 473114 >+SHA256 (xpi/firefox-i18n-60.0b2/ar.xpi) = 2a38a633aa50a6a6f2bb76060f6e479ad2a098a326aa74bed6f15fb95615b31c >+SIZE (xpi/firefox-i18n-60.0b2/ar.xpi) = 497449 >+SHA256 (xpi/firefox-i18n-60.0b2/as.xpi) = d52da64632f045a5544e21693e26498457ed064bc95479c705a6a86789521349 >+SIZE (xpi/firefox-i18n-60.0b2/as.xpi) = 490528 >+SHA256 (xpi/firefox-i18n-60.0b2/ast.xpi) = 17a0af0a95fa2040d3f26cd449c92bdac51ccd823deee13933be54031ae0b8b2 >+SIZE (xpi/firefox-i18n-60.0b2/ast.xpi) = 464535 >+SHA256 (xpi/firefox-i18n-60.0b2/az.xpi) = 737639e42ea7a4ee34de4fade44db8d14740f94ee3510529f1a99b77bd85f857 >+SIZE (xpi/firefox-i18n-60.0b2/az.xpi) = 474699 >+SHA256 (xpi/firefox-i18n-60.0b2/be.xpi) = cbbd91eb437763799a17859bf339e96af3bfdbc26f397212182e0910bb80f047 >+SIZE (xpi/firefox-i18n-60.0b2/be.xpi) = 526494 >+SHA256 (xpi/firefox-i18n-60.0b2/bg.xpi) = 183042ae5dde5703cefc04e436005e29e4379d6701d13e64f564ed2cab83fe09 >+SIZE (xpi/firefox-i18n-60.0b2/bg.xpi) = 518924 >+SHA256 (xpi/firefox-i18n-60.0b2/bn-BD.xpi) = 0e0b99ba805666a88f5352bd1003c21ae5e73b48e1c990b572bb57f531d7b286 >+SIZE (xpi/firefox-i18n-60.0b2/bn-BD.xpi) = 536619 >+SHA256 (xpi/firefox-i18n-60.0b2/bn-IN.xpi) = 3771ee7e2423b2915b1f116d9ceb02eb2124d0d7e57560cc79ef436c4d97f5f8 >+SIZE (xpi/firefox-i18n-60.0b2/bn-IN.xpi) = 521938 >+SHA256 (xpi/firefox-i18n-60.0b2/br.xpi) = 33b6d07d848d8a57006d36f1e211ba6479d27c3eadd0780b4a2c8f631e133915 >+SIZE (xpi/firefox-i18n-60.0b2/br.xpi) = 461633 >+SHA256 (xpi/firefox-i18n-60.0b2/bs.xpi) = 93f5937844ef793eefca086613a7c20f0d56e9053f931e3d62872afd968def47 >+SIZE (xpi/firefox-i18n-60.0b2/bs.xpi) = 468560 >+SHA256 (xpi/firefox-i18n-60.0b2/ca.xpi) = 4a83d7700e5919001766c0df8f04cac8ff307810370a7bddfb472d8f28cc62c9 >+SIZE (xpi/firefox-i18n-60.0b2/ca.xpi) = 475509 >+SHA256 (xpi/firefox-i18n-60.0b2/cak.xpi) = bafdb85ba5f777de7c6333523a9f259e50ded7e94e9a7208add22663e474c0fb >+SIZE (xpi/firefox-i18n-60.0b2/cak.xpi) = 485064 >+SHA256 (xpi/firefox-i18n-60.0b2/cs.xpi) = e4536757219e593c0684ee1a52276a50fec15282a518a3c583452231b1c7c9ad >+SIZE (xpi/firefox-i18n-60.0b2/cs.xpi) = 480622 >+SHA256 (xpi/firefox-i18n-60.0b2/cy.xpi) = 43b1a490160d42476d0b7081ad6222f843f25026336c707bfd890805d74c8192 >+SIZE (xpi/firefox-i18n-60.0b2/cy.xpi) = 465635 >+SHA256 (xpi/firefox-i18n-60.0b2/da.xpi) = d9526782aebc6a9046508922a9a6bf197b9ab2ec28d26874097aae7d047b4444 >+SIZE (xpi/firefox-i18n-60.0b2/da.xpi) = 457683 >+SHA256 (xpi/firefox-i18n-60.0b2/de.xpi) = 37b685289daf42a72aae47e3c2bf401236aec3e48a93d301feac659a18b5ebf5 >+SIZE (xpi/firefox-i18n-60.0b2/de.xpi) = 478046 >+SHA256 (xpi/firefox-i18n-60.0b2/dsb.xpi) = 01f70dac6ac7204b99dbc7ab8b715a87743865fc3ca6f199fb512bbaa2582e3f >+SIZE (xpi/firefox-i18n-60.0b2/dsb.xpi) = 488763 >+SHA256 (xpi/firefox-i18n-60.0b2/el.xpi) = e211e0e1d06c30b966f85c49c4bc5ad7e75f7375669ed0136efa1ac78e117890 >+SIZE (xpi/firefox-i18n-60.0b2/el.xpi) = 543012 >+SHA256 (xpi/firefox-i18n-60.0b2/en-GB.xpi) = 7e81107e8c2e74f2f8d6749a21f16878a3db6f4c1b86ceb34501433ec8f05014 >+SIZE (xpi/firefox-i18n-60.0b2/en-GB.xpi) = 445086 >+SHA256 (xpi/firefox-i18n-60.0b2/en-US.xpi) = 785f72065cab035368a0bd76f2a6df6808d55e0bd17f68e5a45325dfccdcb407 >+SIZE (xpi/firefox-i18n-60.0b2/en-US.xpi) = 441494 >+SHA256 (xpi/firefox-i18n-60.0b2/en-ZA.xpi) = c52aec301af2815de702d44a36c50a2be639bf68680ec140aab898305a320bff >+SIZE (xpi/firefox-i18n-60.0b2/en-ZA.xpi) = 434598 >+SHA256 (xpi/firefox-i18n-60.0b2/eo.xpi) = 3727f43f993c229eca69c115cb06dbe5d718c788c111c450cc7ad033d7114a31 >+SIZE (xpi/firefox-i18n-60.0b2/eo.xpi) = 462981 >+SHA256 (xpi/firefox-i18n-60.0b2/es-AR.xpi) = 7c08485084d4f0bbf1c24a13cfadbe803c7be5a3fbcff413a5d73864291c1083 >+SIZE (xpi/firefox-i18n-60.0b2/es-AR.xpi) = 472501 >+SHA256 (xpi/firefox-i18n-60.0b2/es-CL.xpi) = c05fd2fb4ac0b2b389221d2dbd2fa0cc178ee79d0cfcedd1f225085f15e959fe >+SIZE (xpi/firefox-i18n-60.0b2/es-CL.xpi) = 475502 >+SHA256 (xpi/firefox-i18n-60.0b2/es-ES.xpi) = 71e5b240cba1f4568f4ca20c72e20b286d63b0fe4ecff1ed653dc41bc35f16c4 >+SIZE (xpi/firefox-i18n-60.0b2/es-ES.xpi) = 359479 >+SHA256 (xpi/firefox-i18n-60.0b2/es-MX.xpi) = 685946d64122f9f035ec5e8f368ce3da49e0863c7e5e4679f37ff5df369f73ca >+SIZE (xpi/firefox-i18n-60.0b2/es-MX.xpi) = 476958 >+SHA256 (xpi/firefox-i18n-60.0b2/et.xpi) = 4290059a1dcf3ecc74c7761ce0143ce2f95d4023724609c74ab7c4ebd8dad6eb >+SIZE (xpi/firefox-i18n-60.0b2/et.xpi) = 455969 >+SHA256 (xpi/firefox-i18n-60.0b2/eu.xpi) = 9ba674684910eb87ee715aed2a0de7720ef906e0cede35fa176155faf24eca66 >+SIZE (xpi/firefox-i18n-60.0b2/eu.xpi) = 464909 >+SHA256 (xpi/firefox-i18n-60.0b2/fa.xpi) = 352ed4d806025413324975a83d7be487a4afa9bf05df3157ccc56b69c74d3ef5 >+SIZE (xpi/firefox-i18n-60.0b2/fa.xpi) = 519569 >+SHA256 (xpi/firefox-i18n-60.0b2/ff.xpi) = 538203e58720cd17db3be93298874f52463974b73a742f76479b701940f19d59 >+SIZE (xpi/firefox-i18n-60.0b2/ff.xpi) = 465513 >+SHA256 (xpi/firefox-i18n-60.0b2/fi.xpi) = 512fe170961119588d20fac84a68112ddabfc94607c8bfe562d94e83a4bc7efc >+SIZE (xpi/firefox-i18n-60.0b2/fi.xpi) = 456106 >+SHA256 (xpi/firefox-i18n-60.0b2/fr.xpi) = dddc8c936ec3cb895058ed0c96c75e838cf46fb017f22fbd4e432c1314a9b3bd >+SIZE (xpi/firefox-i18n-60.0b2/fr.xpi) = 484398 >+SHA256 (xpi/firefox-i18n-60.0b2/fy-NL.xpi) = 6547fbce778ea7a5035e6b0a0c86394af24627261cc0537d26358859eaf65341 >+SIZE (xpi/firefox-i18n-60.0b2/fy-NL.xpi) = 473502 >+SHA256 (xpi/firefox-i18n-60.0b2/ga-IE.xpi) = 3b5bf250053f987dfd2b31947304c00c2b616fc92d25eec7a4204db59a7edf7f >+SIZE (xpi/firefox-i18n-60.0b2/ga-IE.xpi) = 483197 >+SHA256 (xpi/firefox-i18n-60.0b2/gd.xpi) = 574edc4c8e0a95a673be40e15c450a5d3ff95ff38ab25b61cae8a1dc41be11c6 >+SIZE (xpi/firefox-i18n-60.0b2/gd.xpi) = 472666 >+SHA256 (xpi/firefox-i18n-60.0b2/gl.xpi) = 9947b0e5944747bbcffb27e22b78b41625ec43ae7dd848d13a035f9156610674 >+SIZE (xpi/firefox-i18n-60.0b2/gl.xpi) = 449580 >+SHA256 (xpi/firefox-i18n-60.0b2/gn.xpi) = 005de91c12db6c3ca749831386d3e6f19d434fd839e4698e39b0c8e55a7a2e19 >+SIZE (xpi/firefox-i18n-60.0b2/gn.xpi) = 480555 >+SHA256 (xpi/firefox-i18n-60.0b2/gu-IN.xpi) = ce9f1814d78b66304764ae5a1e5aef53096283f93d215e367d244a7001b40a97 >+SIZE (xpi/firefox-i18n-60.0b2/gu-IN.xpi) = 532408 >+SHA256 (xpi/firefox-i18n-60.0b2/he.xpi) = 4afbe27061e2d73688e9491826536a61af299f50102ca112dba19ec53e475c53 >+SIZE (xpi/firefox-i18n-60.0b2/he.xpi) = 484073 >+SHA256 (xpi/firefox-i18n-60.0b2/hi-IN.xpi) = 7377f4fba4db1280476ded1acabc9d90e077af5329846c5645d76b4dc6c91748 >+SIZE (xpi/firefox-i18n-60.0b2/hi-IN.xpi) = 535739 >+SHA256 (xpi/firefox-i18n-60.0b2/hr.xpi) = 65d7a46d5244335d5aa6f37565a6a1afef44cd10efe696ec4ffd3a4141205bd5 >+SIZE (xpi/firefox-i18n-60.0b2/hr.xpi) = 471318 >+SHA256 (xpi/firefox-i18n-60.0b2/hsb.xpi) = 2e468ed6915531d4491f27136974c6f6ff5ced0455d8254028d349763cb0267d >+SIZE (xpi/firefox-i18n-60.0b2/hsb.xpi) = 485668 >+SHA256 (xpi/firefox-i18n-60.0b2/hu.xpi) = f140fe6ae54a1afdd277a9c95d2f026d59ee8a122b103547ad6689c29b1fd940 >+SIZE (xpi/firefox-i18n-60.0b2/hu.xpi) = 485990 >+SHA256 (xpi/firefox-i18n-60.0b2/hy-AM.xpi) = 8d86769cff8371158f9d0f7effdf21d6f775ac073d8f5090944b724d38a422ff >+SIZE (xpi/firefox-i18n-60.0b2/hy-AM.xpi) = 519760 >+SHA256 (xpi/firefox-i18n-60.0b2/ia.xpi) = ee3e285752beb85777053d59fdb8a68197a48cba2d8639dc4c99a095eabcf4d6 >+SIZE (xpi/firefox-i18n-60.0b2/ia.xpi) = 459870 >+SHA256 (xpi/firefox-i18n-60.0b2/id.xpi) = d3a0e0acd8514c61669510023ffc7a5f3f4fa9fd77e8152ed6bbbda9b7372868 >+SIZE (xpi/firefox-i18n-60.0b2/id.xpi) = 452366 >+SHA256 (xpi/firefox-i18n-60.0b2/is.xpi) = 6f317b4e2aec0158ade5e5006b9dda9c475d2dbb8e907bfc9621286351964abb >+SIZE (xpi/firefox-i18n-60.0b2/is.xpi) = 462502 >+SHA256 (xpi/firefox-i18n-60.0b2/it.xpi) = 467b86575b862c8d32c4b94ec4da8b8e45aa0e39f68ca445d3ecd3a6f721d807 >+SIZE (xpi/firefox-i18n-60.0b2/it.xpi) = 352060 >+SHA256 (xpi/firefox-i18n-60.0b2/ja.xpi) = adbe3d9abdb0252a108d3520a39064b800d9575c0a784210270f1b9089fbabca >+SIZE (xpi/firefox-i18n-60.0b2/ja.xpi) = 518877 >+SHA256 (xpi/firefox-i18n-60.0b2/ka.xpi) = 054ff2854756f46568974a39231efe3c8b5b91b71c7ebb49583347dee634e83d >+SIZE (xpi/firefox-i18n-60.0b2/ka.xpi) = 502601 >+SHA256 (xpi/firefox-i18n-60.0b2/kab.xpi) = 6dd3d4c4e98f04180274e3255e8117c59254912ef7e9055e75e0d749efe7bf7c >+SIZE (xpi/firefox-i18n-60.0b2/kab.xpi) = 471615 >+SHA256 (xpi/firefox-i18n-60.0b2/kk.xpi) = 08db6f8add96f8bef331ec2a31e8c84f0c6f5289a282de3b6177e5a091bc7086 >+SIZE (xpi/firefox-i18n-60.0b2/kk.xpi) = 528173 >+SHA256 (xpi/firefox-i18n-60.0b2/km.xpi) = 86f456a26c4b018816f2703388c1d6535440f5e6d14e8ebcf08c944d3bb9d474 >+SIZE (xpi/firefox-i18n-60.0b2/km.xpi) = 536932 >+SHA256 (xpi/firefox-i18n-60.0b2/kn.xpi) = fe63f6cacab0c61a11d6267e89254b5557c15dc93fc9fe9bb4d2817c4c533d3d >+SIZE (xpi/firefox-i18n-60.0b2/kn.xpi) = 537586 >+SHA256 (xpi/firefox-i18n-60.0b2/ko.xpi) = 6fefe78419ac5b72b7aca598ed289f40ab7d1f6a52fb827a39a21db4cd5f4e8a >+SIZE (xpi/firefox-i18n-60.0b2/ko.xpi) = 496535 >+SHA256 (xpi/firefox-i18n-60.0b2/lij.xpi) = 5ac0991f943c2bc2127a49d22219a3b433826e9ea63dc9f1b4c15eb0a4c9bbf8 >+SIZE (xpi/firefox-i18n-60.0b2/lij.xpi) = 457056 >+SHA256 (xpi/firefox-i18n-60.0b2/lt.xpi) = 2f113a23f1744bf822fbe30817ecf9fcf0a6702034bc0eeb05c1271dbb338e34 >+SIZE (xpi/firefox-i18n-60.0b2/lt.xpi) = 484070 >+SHA256 (xpi/firefox-i18n-60.0b2/lv.xpi) = 0d7816b13aad0692deab0c00bf6b29fac49544021b746f6814acf147a978b29b >+SIZE (xpi/firefox-i18n-60.0b2/lv.xpi) = 475034 >+SHA256 (xpi/firefox-i18n-60.0b2/mai.xpi) = b7776297987d60df1cb4866b95f02ddb44c97c2b9a33665441517ccc98fc9e43 >+SIZE (xpi/firefox-i18n-60.0b2/mai.xpi) = 507542 >+SHA256 (xpi/firefox-i18n-60.0b2/mk.xpi) = df2f7c07c3869182d910ddb86af55151d536caf05d3482921ab272e5c0d4e7b0 >+SIZE (xpi/firefox-i18n-60.0b2/mk.xpi) = 492047 >+SHA256 (xpi/firefox-i18n-60.0b2/ml.xpi) = c8e6f4fb2e0e51d36b6a92de063c08d897628c0b20a60f02bff9798b2bc2ca60 >+SIZE (xpi/firefox-i18n-60.0b2/ml.xpi) = 550569 >+SHA256 (xpi/firefox-i18n-60.0b2/mr.xpi) = 6ecc647bc64388aeeb5f32ac6dd9c4fd65a94de96534187c123704248fc71dfd >+SIZE (xpi/firefox-i18n-60.0b2/mr.xpi) = 529674 >+SHA256 (xpi/firefox-i18n-60.0b2/ms.xpi) = 93417e8b0b409d7d82b9d0c790a8541cbec8758fe7882027fcdbcf04c2938c99 >+SIZE (xpi/firefox-i18n-60.0b2/ms.xpi) = 459751 >+SHA256 (xpi/firefox-i18n-60.0b2/my.xpi) = 2af1938050efed9f5022c1fc9bdc946921d2c6ed1ffbf0e7cd96ab0fff783b9f >+SIZE (xpi/firefox-i18n-60.0b2/my.xpi) = 522045 >+SHA256 (xpi/firefox-i18n-60.0b2/nb-NO.xpi) = 69b5e72319dae0ca4e78c2feec3db1d6249437497a172cf4330245b21a462803 >+SIZE (xpi/firefox-i18n-60.0b2/nb-NO.xpi) = 459984 >+SHA256 (xpi/firefox-i18n-60.0b2/ne-NP.xpi) = b48dc523ee4d20b63ca75b8f3fc96dcfd7278d91bcff30cb6f99aa3c2a0b1377 >+SIZE (xpi/firefox-i18n-60.0b2/ne-NP.xpi) = 520386 >+SHA256 (xpi/firefox-i18n-60.0b2/nl.xpi) = 09dafbc4784f5549b1ef13a592095e9ef10f0b38a579cffbe56c6d2e48d790aa >+SIZE (xpi/firefox-i18n-60.0b2/nl.xpi) = 467152 >+SHA256 (xpi/firefox-i18n-60.0b2/nn-NO.xpi) = d6bdaef137ca7ec4c2f5fd3a88faae0c4ea53c982ab74e4d4a202563df303943 >+SIZE (xpi/firefox-i18n-60.0b2/nn-NO.xpi) = 460479 >+SHA256 (xpi/firefox-i18n-60.0b2/oc.xpi) = dbc4bd23e387d0783de5a324df647bd4cd5a6a158e15dec08a0f7eaffc4ec256 >+SIZE (xpi/firefox-i18n-60.0b2/oc.xpi) = 477201 >+SHA256 (xpi/firefox-i18n-60.0b2/or.xpi) = 1359d8ed163f48984309754fb89e74c693a78852d66eff45e4bacc88e10576ad >+SIZE (xpi/firefox-i18n-60.0b2/or.xpi) = 500626 >+SHA256 (xpi/firefox-i18n-60.0b2/pa-IN.xpi) = ffaa2b343cb628507905b2741ca518c2cb222ea498831662a3c6e190be8c2d03 >+SIZE (xpi/firefox-i18n-60.0b2/pa-IN.xpi) = 503120 >+SHA256 (xpi/firefox-i18n-60.0b2/pl.xpi) = 001503aa9c381c6badb52f16e4dbc109e133aae4ec835dab077781f88e3f9a5f >+SIZE (xpi/firefox-i18n-60.0b2/pl.xpi) = 369616 >+SHA256 (xpi/firefox-i18n-60.0b2/pt-BR.xpi) = abf591823004510a6b4e9ab091972518581c3e755e94e538006bb43a271ddeff >+SIZE (xpi/firefox-i18n-60.0b2/pt-BR.xpi) = 465263 >+SHA256 (xpi/firefox-i18n-60.0b2/pt-PT.xpi) = 27ef71ed4121fd42931a85b2b86051c4db5b77ad7722164a5774258668eaea24 >+SIZE (xpi/firefox-i18n-60.0b2/pt-PT.xpi) = 468269 >+SHA256 (xpi/firefox-i18n-60.0b2/rm.xpi) = af51ff46f0c0b3912064a6490394eeef740c40e5bfb7c825f71da9663d78e2eb >+SIZE (xpi/firefox-i18n-60.0b2/rm.xpi) = 461202 >+SHA256 (xpi/firefox-i18n-60.0b2/ro.xpi) = a05bcd830bad022ca9cb4cd29bdc43072cc6ebc5aec089f74ba752aa3d0209a7 >+SIZE (xpi/firefox-i18n-60.0b2/ro.xpi) = 464776 >+SHA256 (xpi/firefox-i18n-60.0b2/ru.xpi) = 8a0e831019164074986d9d64fd93ef13269ba4284eab51b40d6abbff3880b429 >+SIZE (xpi/firefox-i18n-60.0b2/ru.xpi) = 536435 >+SHA256 (xpi/firefox-i18n-60.0b2/si.xpi) = 349712695adf495a12c97cc6162a364dac445bffdc6c8efd11b64141d39eb6cb >+SIZE (xpi/firefox-i18n-60.0b2/si.xpi) = 502052 >+SHA256 (xpi/firefox-i18n-60.0b2/sk.xpi) = 42a99e56e26dee8ed94bb473a0d429ea628996845cbb35edbc356919b59f91c6 >+SIZE (xpi/firefox-i18n-60.0b2/sk.xpi) = 489920 >+SHA256 (xpi/firefox-i18n-60.0b2/sl.xpi) = 2df3be84800ff89d753e2410bcc75e0ebe49e0b33c1518c51e96a1925143ffc8 >+SIZE (xpi/firefox-i18n-60.0b2/sl.xpi) = 468784 >+SHA256 (xpi/firefox-i18n-60.0b2/son.xpi) = 0806aea637720be9350557a563166d4c624ad9b887e196627654a2c0227ecfbb >+SIZE (xpi/firefox-i18n-60.0b2/son.xpi) = 456084 >+SHA256 (xpi/firefox-i18n-60.0b2/sq.xpi) = 630c01008c219b121508cf31a174eeef57ed81c5ff9bd429835dabc6e57a9c52 >+SIZE (xpi/firefox-i18n-60.0b2/sq.xpi) = 476118 >+SHA256 (xpi/firefox-i18n-60.0b2/sr.xpi) = 5a021aea26cd7619306ed80acfe4ec7850b99b41c4337cbb37dc023ff61f1909 >+SIZE (xpi/firefox-i18n-60.0b2/sr.xpi) = 495336 >+SHA256 (xpi/firefox-i18n-60.0b2/sv-SE.xpi) = 1137f06cd3456adee9e4a5231c4f514f6058487aae02c207bbebe553739e48c2 >+SIZE (xpi/firefox-i18n-60.0b2/sv-SE.xpi) = 467993 >+SHA256 (xpi/firefox-i18n-60.0b2/ta.xpi) = 2e21a5e68c1c5c6a48a8fe4557d95352d0e840dfe89a88fe0d40ad04f9fe3a83 >+SIZE (xpi/firefox-i18n-60.0b2/ta.xpi) = 524089 >+SHA256 (xpi/firefox-i18n-60.0b2/te.xpi) = aaa5184d4c123dbc014f744a9a7b35d44f73b58495133b93075a8bd3e8e1edcc >+SIZE (xpi/firefox-i18n-60.0b2/te.xpi) = 537600 >+SHA256 (xpi/firefox-i18n-60.0b2/th.xpi) = 827f491959a495ecfa11394dc7e007e85f4d05de2aa7eabf24d3598c82369810 >+SIZE (xpi/firefox-i18n-60.0b2/th.xpi) = 509974 >+SHA256 (xpi/firefox-i18n-60.0b2/tr.xpi) = 554e436af3db110d168b5825876cea060ae3b8ff5c18d257a333e7b82ca0c6f4 >+SIZE (xpi/firefox-i18n-60.0b2/tr.xpi) = 473604 >+SHA256 (xpi/firefox-i18n-60.0b2/uk.xpi) = ab52ce6f330ec911a2788bc97871f410bcf2552787112a61020d6ea8c6f2d244 >+SIZE (xpi/firefox-i18n-60.0b2/uk.xpi) = 526375 >+SHA256 (xpi/firefox-i18n-60.0b2/ur.xpi) = 851dadfe1565b5d1089f4bfe6285b431fe9fd2517b413a7658d367d23230fc24 >+SIZE (xpi/firefox-i18n-60.0b2/ur.xpi) = 516748 >+SHA256 (xpi/firefox-i18n-60.0b2/uz.xpi) = 0e3d0cd0e7b8b839bbb84b42ab25f71b2ee7309fff37ad7156c1b778cf141b76 >+SIZE (xpi/firefox-i18n-60.0b2/uz.xpi) = 467092 >+SHA256 (xpi/firefox-i18n-60.0b2/vi.xpi) = 34fb0fd53dcb986e0d1925ef1fd0b6ea1337b41312e5172cc3e25ec6cb2aa362 >+SIZE (xpi/firefox-i18n-60.0b2/vi.xpi) = 480501 >+SHA256 (xpi/firefox-i18n-60.0b2/xh.xpi) = dbb4a54b47fde3795083112451c49af0c2fb3c4a2ea919246a29ae521a023727 >+SIZE (xpi/firefox-i18n-60.0b2/xh.xpi) = 470331 >+SHA256 (xpi/firefox-i18n-60.0b2/zh-CN.xpi) = 878d908213acbbbc0e718842998d0d7beb479946ba157617802e53dd01123c9f >+SIZE (xpi/firefox-i18n-60.0b2/zh-CN.xpi) = 492500 >+SHA256 (xpi/firefox-i18n-60.0b2/zh-TW.xpi) = 49c06de4d7d2e925343a4409ef30977cf55d8844e358bce97df9b1f929602062 >+SIZE (xpi/firefox-i18n-60.0b2/zh-TW.xpi) = 493124 >diff --git a/www/firefox/Makefile b/www/firefox/Makefile >index 3bb1ac468133..a3ffa9fbe4f2 100644 >--- a/www/firefox/Makefile >+++ b/www/firefox/Makefile >@@ -2,28 +2,27 @@ > # $FreeBSD$ > > PORTNAME= firefox >-DISTVERSION= 59.0 >-PORTREVISION= 3 >+DISTVERSION= 60.0b2 > PORTEPOCH= 1 > CATEGORIES= www ipv6 >-MASTER_SITES= https://hg.mozilla.org/releases/mozilla-release/archive/ >-DISTNAME= ${MASTER_SITES:M*hg*:S,/archive/,,:T}-e9128973a480c8aedf3a2e1c67d3e168613fa17c >+MASTER_SITES= https://hg.mozilla.org/releases/mozilla-beta/archive/ >+DISTNAME= ${MASTER_SITES:M*hg*:S,/archive/,,:T}-0938d48917b73d31fa8bfa4a7c3ccd79a3f4b3f5 > DISTFILES= ${DISTNAME:C/.*-//}${EXTRACT_SUFX} > DIST_SUBDIR= firefox > > MAINTAINER= gecko@FreeBSD.org > COMMENT= Web browser based on the browser portion of Mozilla > >-BUILD_DEPENDS= nspr>=4.18:devel/nspr \ >- nss>=3.35:security/nss \ >+BUILD_DEPENDS= nspr>=4.19:devel/nspr \ >+ nss>=3.36:security/nss \ > icu>=59.1,1:devel/icu \ > libevent>=2.1.8:devel/libevent \ >- harfbuzz>=1.7.4:print/harfbuzz \ >- graphite2>=1.3.10:graphics/graphite2 \ >+ harfbuzz>=1.7.6:print/harfbuzz \ >+ graphite2>=1.3.11:graphics/graphite2 \ > png>=1.6.34:graphics/png \ > libvorbis>=1.3.5,3:audio/libvorbis \ > libvpx>=1.5.0:multimedia/libvpx \ >- sqlite3>=3.21.0:databases/sqlite3 \ >+ sqlite3>=3.22.0:databases/sqlite3 \ > ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ > v4l_compat>0:multimedia/v4l_compat \ > autoconf-2.13:devel/autoconf213 \ >diff --git a/www/firefox/distinfo b/www/firefox/distinfo >index 3d92bfdc8cfc..5cc5abd99f07 100644 >--- a/www/firefox/distinfo >+++ b/www/firefox/distinfo >@@ -1,3 +1,3 @@ >-TIMESTAMP = 1520456550 >-SHA256 (firefox/e9128973a480c8aedf3a2e1c67d3e168613fa17c.tar.bz2) = bd6c5a7635009cb1a95824287b9751f1012f8e13bec057811d882e0db75e1258 >-SIZE (firefox/e9128973a480c8aedf3a2e1c67d3e168613fa17c.tar.bz2) = 304977546 >+TIMESTAMP = 1520432739 >+SHA256 (firefox/0938d48917b73d31fa8bfa4a7c3ccd79a3f4b3f5.tar.bz2) = 56a55346d8abb911dab2d1d53651c60a415b99e4a54b356ac28f3420e7ca19e1 >+SIZE (firefox/0938d48917b73d31fa8bfa4a7c3ccd79a3f4b3f5.tar.bz2) = 329655598 >diff --git a/www/firefox/files/patch-a-gyp-webrtc b/www/firefox/files/patch-a-gyp-webrtc >new file mode 100644 >index 000000000000..3735d6c3755d >--- /dev/null >+++ b/www/firefox/files/patch-a-gyp-webrtc >@@ -0,0 +1,21490 @@ >+Revert bug 1393119, bug 1429819, bug 1436959 to unbreak WebRTC >+ >+diff --git media/webrtc/moz.build media/webrtc/moz.build >+index 3aeb939a4e4b..115831cc69d5 100644 >+--- media/webrtc/moz.build >++++ media/webrtc/moz.build >+@@ -11,7 +11,6 @@ with Files("signaling/**"): >+ BUG_COMPONENT = ("Core", "WebRTC: Signaling") >+ >+ include('/build/gyp.mozbuild') >+-include('/build/gn.mozbuild') >+ >+ webrtc_non_unified_sources = [ >+ 'trunk/webrtc/common_audio/vad/vad_core.c', # Because of name clash in the kInitCheck variable >+@@ -57,6 +56,8 @@ webrtc_non_unified_sources = [ >+ 'trunk/webrtc/video/overuse_frame_detector.cc', # Because of name clash with call_stats.cc on kWeightFactor >+ ] >+ >++GYP_DIRS += ['trunk'] >++ >+ # Set gyp vars that webrtc needs when building under various analysis tools. >+ # Primarily this prevents webrtc from setting NVALGRIND and breaking builds. >+ gyp_vars_copy = gyp_vars.copy() >+@@ -67,21 +68,12 @@ elif CONFIG['MOZ_ASAN']: >+ elif CONFIG['MOZ_TSAN']: >+ gyp_vars_copy.update(build_for_tool="tsan") >+ >+-GN_DIRS += ['trunk'] >+- >+-gn_vars_copy = gn_vars.copy() >+- >+-GN_DIRS['trunk'].variables = gn_vars_copy >+-GN_DIRS['trunk'].mozilla_flags = [ >+- '-fobjc-arc', >+- '-mfpu=neon', >+- '-msse2', >+-] >+- >++GYP_DIRS['trunk'].input = 'trunk/peerconnection.gyp' >++GYP_DIRS['trunk'].variables = gyp_vars_copy >+ # We allow warnings for third-party code that can be updated from upstream. >+-GN_DIRS['trunk'].sandbox_vars['COMPILE_FLAGS'] = {'WARNINGS_AS_ERRORS': []} >+-GN_DIRS['trunk'].sandbox_vars['FINAL_LIBRARY'] = 'webrtc' >+-GN_DIRS['trunk'].non_unified_sources += webrtc_non_unified_sources >++GYP_DIRS['trunk'].sandbox_vars['COMPILE_FLAGS'] = {'WARNINGS_AS_ERRORS': []} >++GYP_DIRS['trunk'].sandbox_vars['FINAL_LIBRARY'] = 'webrtc' >++GYP_DIRS['trunk'].non_unified_sources += webrtc_non_unified_sources >+ >+ if CONFIG['MOZ_WEBRTC_SIGNALING']: >+ DIRS += [ >+diff --git media/webrtc/trunk/build/OWNERS media/webrtc/trunk/build/OWNERS >+index c644ca7d5fd5..72e8ffc0db8a 100644 >+--- media/webrtc/trunk/build/OWNERS >++++ media/webrtc/trunk/build/OWNERS >+@@ -1,22 +1 @@ >+-agrieve@chromium.org >+-dpranke@chromium.org >+-jbudorick@chromium.org >+-jochen@chromium.org >+-scottmg@chromium.org >+-thakis@chromium.org >+-brucedawson@chromium.org >+- >+-per-file .gitignore=* >+-per-file mac_toolchain.py=erikchen@chromium.org >+-per-file mac_toolchain.py=justincohen@chromium.org >+-per-file package_mac_toolchain.py=erikchen@chromium.org >+-per-file package_mac_toolchain.py=justincohen@chromium.org >+-per-file whitespace_file.txt=* >+-per-file OWNERS.status=* >+- >+-# gn-dev is probably a better team here, but the tooling won't let us >+-# have more than one team per component, and infra-dev is a catch-all >+-# for other build-related lists. >+-# >+-# TEAM: infra-dev@chromium.org >+-# COMPONENT: Build >++* >+diff --git media/webrtc/trunk/build/common.croc media/webrtc/trunk/build/common.croc >+index fde7a8b29821..7281bb4eb4d8 100644 >+--- media/webrtc/trunk/build/common.croc >++++ media/webrtc/trunk/build/common.croc >+@@ -57,7 +57,7 @@ >+ }, >+ # Don't include output dirs >+ { >+- 'regexp' : '.*/(Debug|Release|out|xcodebuild)/', >++ 'regexp' : '.*/(Debug|Release|sconsbuild|out|xcodebuild)/', >+ 'include' : 0, >+ }, >+ # Don't include third-party source >+@@ -89,7 +89,7 @@ >+ }, >+ { >+ 'stat' : '100.0 * files_instrumented / files_executable', >+- 'format' : '*RESULT FilesInstrumentedPercent: files_instrumented_percent= %g percent', >++ 'format' : '*RESULT FilesInstrumentedPercent: files_instrumented_percent= %g', >+ }, >+ { >+ 'stat' : 'lines_executable', >+@@ -111,16 +111,16 @@ >+ }, >+ { >+ 'stat' : '100.0 * lines_covered / lines_executable', >+- 'format' : '*RESULT PercentCovered: percent_covered= %g percent', >++ 'format' : '*RESULT PercentCovered: percent_covered= %g', >+ }, >+ { >+ 'stat' : '100.0 * lines_covered / lines_executable', >+- 'format' : '*RESULT PercentCoveredSource: percent_covered_source= %g percent', >++ 'format' : '*RESULT PercentCoveredSource: percent_covered_source= %g', >+ 'group' : 'source', >+ }, >+ { >+ 'stat' : '100.0 * lines_covered / lines_executable', >+- 'format' : '*RESULT PercentCoveredTest: percent_covered_test= %g percent', >++ 'format' : '*RESULT PercentCoveredTest: percent_covered_test= %g', >+ 'group' : 'test', >+ }, >+ ], >+diff --git media/webrtc/trunk/build/compiler_version.py media/webrtc/trunk/build/compiler_version.py >+index 8db010811096..eae7b176dd21 100755 >+--- media/webrtc/trunk/build/compiler_version.py >++++ media/webrtc/trunk/build/compiler_version.py >+@@ -14,115 +14,63 @@ import re >+ import subprocess >+ import sys >+ >+- >+-compiler_version_cache = {} # Map from (compiler, tool) -> version. >+- >+- >+-def Usage(program_name): >+- print '%s MODE TOOL' % os.path.basename(program_name) >+- print 'MODE: host or target.' >+- print 'TOOL: assembler or compiler or linker.' >+- return 1 >+- >+- >+-def ParseArgs(args): >+- if len(args) != 2: >+- raise Exception('Invalid number of arguments') >+- mode = args[0] >+- tool = args[1] >+- if mode not in ('host', 'target'): >+- raise Exception('Invalid mode: %s' % mode) >+- if tool not in ('assembler',): >+- raise Exception('Invalid tool: %s' % tool) >+- return mode, tool >+- >+- >+-def GetEnvironFallback(var_list, default): >+- """Look up an environment variable from a possible list of variable names.""" >+- for var in var_list: >+- if var in os.environ: >+- return os.environ[var] >+- return default >+- >+- >+-def GetVersion(compiler, tool): >+- tool_output = tool_error = None >+- cache_key = (compiler, tool) >+- cached_version = compiler_version_cache.get(cache_key) >+- if cached_version: >+- return cached_version >++def GetVersion(compiler): >+ try: >+ # Note that compiler could be something tricky like "distcc g++". >+- if tool == "assembler": >+- compiler = compiler + " -Xassembler --version -x assembler -c /dev/null" >+- # Unmodified: GNU assembler (GNU Binutils) 2.24 >+- # Ubuntu: GNU assembler (GNU Binutils for Ubuntu) 2.22 >+- # Fedora: GNU assembler version 2.23.2 >+- version_re = re.compile(r"^GNU [^ ]+ .* (\d+).(\d+).*?$", re.M) >+- else: >+- raise Exception("Unknown tool %s" % tool) >+- >+- # Force the locale to C otherwise the version string could be localized >+- # making regex matching fail. >+- env = os.environ.copy() >+- env["LC_ALL"] = "C" >+- pipe = subprocess.Popen(compiler, shell=True, env=env, >++ compiler = compiler + " -dumpversion" >++ pipe = subprocess.Popen(compiler, shell=True, >+ stdout=subprocess.PIPE, stderr=subprocess.PIPE) >+- tool_output, tool_error = pipe.communicate() >++ gcc_output, gcc_error = pipe.communicate() >+ if pipe.returncode: >+ raise subprocess.CalledProcessError(pipe.returncode, compiler) >+ >+- parsed_output = version_re.match(tool_output) >+- result = parsed_output.group(1) + parsed_output.group(2) >+- compiler_version_cache[cache_key] = result >+- return result >++ result = re.match(r"(\d+)\.(\d+)", gcc_output) >++ return result.group(1) + result.group(2) >+ except Exception, e: >+- if tool_error: >+- sys.stderr.write(tool_error) >++ if gcc_error: >++ sys.stderr.write(gcc_error) >+ print >> sys.stderr, "compiler_version.py failed to execute:", compiler >+ print >> sys.stderr, e >+ return "" >+ >++def GetVersionFromEnvironment(compiler_env): >++ """ Returns the version of compiler >++ >++ If the compiler was set by the given environment variable and exists, >++ return its version, otherwise None is returned. >++ """ >++ cxx = os.getenv(compiler_env, None) >++ if cxx: >++ cxx_version = GetVersion(cxx) >++ if cxx_version != "": >++ return cxx_version >++ return None >++ >++def main(): >++ # Check if CXX_target or CXX environment variable exists an if it does use >++ # that compiler. >++ # TODO: Fix ninja (see http://crbug.com/140900) instead and remove this code >++ # In ninja's cross compile mode, the CXX_target is target compiler, while >++ # the CXX is host. The CXX_target needs be checked first, though the target >++ # and host compiler have different version, there seems no issue to use the >++ # target compiler's version number as gcc_version in Android. >++ cxx_version = GetVersionFromEnvironment("CXX_target") >++ if cxx_version: >++ print cxx_version >++ return 0 >++ >++ cxx_version = GetVersionFromEnvironment("CXX") >++ if cxx_version: >++ print cxx_version >++ return 0 >++ >++ # Otherwise we check the g++ version. >++ gccversion = GetVersion("g++") >++ if gccversion != "": >++ print gccversion >++ return 0 >+ >+-def main(args): >+- try: >+- (mode, tool) = ParseArgs(args[1:]) >+- except Exception, e: >+- sys.stderr.write(e.message + '\n\n') >+- return Usage(args[0]) >+- >+- ret_code, result = ExtractVersion(mode, tool) >+- if ret_code == 0: >+- print result >+- return ret_code >+- >+- >+-def DoMain(args): >+- """Hook to be called from gyp without starting a separate python >+- interpreter.""" >+- (mode, tool) = ParseArgs(args) >+- ret_code, result = ExtractVersion(mode, tool) >+- if ret_code == 0: >+- return result >+- raise Exception("Failed to extract compiler version for args: %s" % args) >+- >+- >+-def ExtractVersion(mode, tool): >+- # Check if various CXX environment variables exist and use them if they >+- # exist. The preferences and fallback order is a close approximation of >+- # GenerateOutputForConfig() in GYP's ninja generator. >+- # The main difference being not supporting GYP's make_global_settings. >+- environments = ['CXX_target', 'CXX'] >+- if mode == 'host': >+- environments = ['CXX_host'] + environments; >+- compiler = GetEnvironFallback(environments, 'c++') >+- >+- if compiler: >+- compiler_version = GetVersion(compiler, tool) >+- if compiler_version != "": >+- return (0, compiler_version) >+- return (1, None) >+- >++ return 1 >+ >+ if __name__ == "__main__": >+- sys.exit(main(sys.argv)) >++ sys.exit(main()) >+diff --git media/webrtc/trunk/build/copy_test_data_ios.py media/webrtc/trunk/build/copy_test_data_ios.py >+index 6f0302f9506e..51307358355e 100755 >+--- media/webrtc/trunk/build/copy_test_data_ios.py >++++ media/webrtc/trunk/build/copy_test_data_ios.py >+@@ -13,16 +13,13 @@ import sys >+ class WrongNumberOfArgumentsException(Exception): >+ pass >+ >+-def EscapePath(path): >+- """Returns a path with spaces escaped.""" >+- return path.replace(" ", "\\ ") >+- >+ def ListFilesForPath(path): >+ """Returns a list of all the files under a given path.""" >+ output = [] >+- # Ignore revision control metadata directories. >+- if (os.path.basename(path).startswith('.git') or >+- os.path.basename(path).startswith('.svn')): >++ # Ignore dotfiles and dot directories. >++ # TODO(rohitrao): This will fail to exclude cases where the initial argument >++ # is a relative path that starts with a dot. >++ if os.path.basename(path).startswith('.'): >+ return output >+ >+ # Files get returned without modification. >+@@ -40,10 +37,13 @@ def ListFilesForPath(path): >+ def CalcInputs(inputs): >+ """Computes the full list of input files for a set of command-line arguments. >+ """ >+- # |inputs| is a list of paths, which may be directories. >++ # |inputs| is a list of strings, each of which may contain muliple paths >++ # separated by spaces. >+ output = [] >+ for input in inputs: >+- output.extend(ListFilesForPath(input)) >++ tokens = input.split() >++ for token in tokens: >++ output.extend(ListFilesForPath(token)) >+ return output >+ >+ def CopyFiles(relative_filenames, output_basedir): >+@@ -77,15 +77,14 @@ def DoMain(argv): >+ raise WrongNumberOfArgumentsException('<input_files> required.') >+ >+ files_to_copy = CalcInputs(arglist) >+- escaped_files = [EscapePath(x) for x in CalcInputs(arglist)] >+ if options.list_inputs: >+- return '\n'.join(escaped_files) >++ return '\n'.join(files_to_copy) >+ >+ if not options.output_dir: >+ raise WrongNumberOfArgumentsException('-o required.') >+ >+ if options.list_outputs: >+- outputs = [os.path.join(options.output_dir, x) for x in escaped_files] >++ outputs = [os.path.join(options.output_dir, x) for x in files_to_copy] >+ return '\n'.join(outputs) >+ >+ CopyFiles(files_to_copy, options.output_dir) >+diff --git media/webrtc/trunk/build/cp.py media/webrtc/trunk/build/cp.py >+index 0f32536b624b..dd98e1db15d2 100755 >+--- media/webrtc/trunk/build/cp.py >++++ media/webrtc/trunk/build/cp.py >+@@ -9,14 +9,13 @@ This module works much like the cp posix command - it takes 2 arguments: >+ (src, dst) and copies the file with path |src| to |dst|. >+ """ >+ >+-import os >+ import shutil >+ import sys >+ >+ >+ def Main(src, dst): >+ # Use copy instead of copyfile to ensure the executable bit is copied. >+- return shutil.copy(src, os.path.normpath(dst)) >++ return shutil.copy(src, dst) >+ >+ >+ if __name__ == '__main__': >+diff --git media/webrtc/trunk/build/dir_exists.py media/webrtc/trunk/build/dir_exists.py >+index 70d367ec2690..0a89bc87bbf6 100755 >+--- media/webrtc/trunk/build/dir_exists.py >++++ media/webrtc/trunk/build/dir_exists.py >+@@ -8,16 +8,8 @@ import os.path >+ import sys >+ >+ def main(): >+- sys.stdout.write(_is_dir(sys.argv[1])) >++ sys.stdout.write(str(os.path.isdir(sys.argv[1]))) >+ return 0 >+ >+-def _is_dir(dir_name): >+- return str(os.path.isdir(dir_name)) >+- >+-def DoMain(args): >+- """Hook to be called from gyp without starting a separate python >+- interpreter.""" >+- return _is_dir(args[0]) >+- >+ if __name__ == '__main__': >+ sys.exit(main()) >+diff --git media/webrtc/trunk/build/download_nacl_toolchains.py media/webrtc/trunk/build/download_nacl_toolchains.py >+index cccecce9ef95..c2007d0f1038 100755 >+--- media/webrtc/trunk/build/download_nacl_toolchains.py >++++ media/webrtc/trunk/build/download_nacl_toolchains.py >+@@ -6,7 +6,6 @@ >+ """Shim to run nacl toolchain download script only if there is a nacl dir.""" >+ >+ import os >+-import shutil >+ import sys >+ >+ >+@@ -14,46 +13,50 @@ def Main(args): >+ # Exit early if disable_nacl=1. >+ if 'disable_nacl=1' in os.environ.get('GYP_DEFINES', ''): >+ return 0 >+- if 'OS=android' in os.environ.get('GYP_DEFINES', ''): >+- return 0 >+ script_dir = os.path.dirname(os.path.abspath(__file__)) >+ src_dir = os.path.dirname(script_dir) >+ nacl_dir = os.path.join(src_dir, 'native_client') >+ nacl_build_dir = os.path.join(nacl_dir, 'build') >+- package_version_dir = os.path.join(nacl_build_dir, 'package_version') >+- package_version = os.path.join(package_version_dir, 'package_version.py') >+- if not os.path.exists(package_version): >+- print "Can't find '%s'" % package_version >++ download_script = os.path.join(nacl_build_dir, 'download_toolchains.py') >++ if not os.path.exists(download_script): >++ print "Can't find '%s'" % download_script >+ print 'Presumably you are intentionally building without NativeClient.' >+ print 'Skipping NativeClient toolchain download.' >+ sys.exit(0) >+- sys.path.insert(0, package_version_dir) >+- import package_version >++ sys.path.insert(0, nacl_build_dir) >++ import download_toolchains >+ >++ # TODO (robertm): Finish getting PNaCl ready for prime time. >+ # BUG: >+ # We remove this --optional-pnacl argument, and instead replace it with >+- # --no-pnacl for most cases. However, if the bot name is an sdk >++ # --no-pnacl for most cases. However, if the bot name is the pnacl_sdk >+ # bot then we will go ahead and download it. This prevents increasing the >+ # gclient sync time for developers, or standard Chrome bots. >+ if '--optional-pnacl' in args: >+ args.remove('--optional-pnacl') >++ # By default we don't use PNaCl toolchain yet, unless on ARM, where >++ # there is no other toolchain to build untrusted code at the moment. >++ # So analyze if we're building for ARM, or on SDK buildbot. >++ # TODO(olonho): we need to invent more reliable way to get build >++ # configuration info, to know if we're building for ARM. >+ use_pnacl = False >++ if 'target_arch=arm' in os.environ.get('GYP_DEFINES', ''): >++ use_pnacl = True >+ buildbot_name = os.environ.get('BUILDBOT_BUILDERNAME', '') >+- if 'pnacl' in buildbot_name and 'sdk' in buildbot_name: >++ if buildbot_name.find('pnacl') >= 0 and buildbot_name.find('sdk') >= 0: >+ use_pnacl = True >+ if use_pnacl: >+ print '\n*** DOWNLOADING PNACL TOOLCHAIN ***\n' >+ else: >+- args = ['--exclude', 'pnacl_newlib'] + args >+- >+- # Only download the ARM gcc toolchain if we are building for ARM >+- # TODO(olonho): we need to invent more reliable way to get build >+- # configuration info, to know if we're building for ARM. >+- if 'target_arch=arm' not in os.environ.get('GYP_DEFINES', ''): >+- args = ['--exclude', 'nacl_arm_newlib'] + args >++ args.append('--no-pnacl') >+ >+- package_version.main(args) >++ # Append the name of the file to use as a version and hash source. >++ # NOTE: While not recommended, it is possible to redirect this file to >++ # a chrome location to avoid branching NaCl if just a toolchain needs >++ # to be bumped. >++ args.append(os.path.join(nacl_dir,'TOOL_REVISIONS')) >+ >++ download_toolchains.main(args) >+ return 0 >+ >+ >+diff --git media/webrtc/trunk/build/extract_from_cab.py media/webrtc/trunk/build/extract_from_cab.py >+index 080370ca9ade..1c928af36f93 100755 >+--- media/webrtc/trunk/build/extract_from_cab.py >++++ media/webrtc/trunk/build/extract_from_cab.py >+@@ -12,7 +12,7 @@ import sys >+ import tempfile >+ >+ def run_quiet(*args): >+- """Run 'expand' suppressing noisy output. Returns returncode from process.""" >++ """Run 'expand' supressing noisy output. Returns returncode from process.""" >+ popen = subprocess.Popen(args, stdout=subprocess.PIPE) >+ out, _ = popen.communicate() >+ if popen.returncode: >+diff --git media/webrtc/trunk/build/gdb-add-index media/webrtc/trunk/build/gdb-add-index >+index 73367c835034..4975532213bc 100755 >+--- media/webrtc/trunk/build/gdb-add-index >++++ media/webrtc/trunk/build/gdb-add-index >+@@ -4,181 +4,44 @@ >+ # found in the LICENSE file. >+ # >+ # Saves the gdb index for a given binary and its shared library dependencies. >+-# >+-# This will run gdb index in parallel on a number of binaries using SIGUSR1 >+-# as the communication mechanism to simulate a semaphore. Because of the >+-# nature of this technique, using "set -e" is very difficult. The SIGUSR1 >+-# terminates a "wait" with an error which we need to interpret. >+-# >+-# When modifying this code, most of the real logic is in the index_one_file >+-# function. The rest is cleanup + sempahore plumbing. >+- >+-function usage_exit { >+- echo "Usage: $0 [-f] [-r] [-n] <paths-to-binaries>..." >+- echo " -f forces replacement of an existing index." >+- echo " -r removes the index section." >+- echo " -n don't extract the dependencies of each binary with lld." >+- echo " e.g., $0 -n out/Debug/lib.unstripped/lib*" >+- echo >+- echo " Set TOOLCHAIN_PREFIX to use a non-default set of binutils." >+- exit 1 >+-} >+- >+-# Cleanup temp directory and ensure all child jobs are dead-dead. >+-function on_exit { >+- trap "" EXIT USR1 # Avoid reentrancy. >+- >+- local jobs=$(jobs -p) >+- if [ -n "$jobs" ]; then >+- echo -n "Killing outstanding index jobs..." >+- kill -KILL $(jobs -p) >+- wait >+- echo "done" >+- fi >+- >+- if [ -d "$directory" ]; then >+- echo -n "Removing temp directory $directory..." >+- rm -rf "$directory" >+- echo done >+- fi >+-} >+- >+-# Add index to one binary. >+-function index_one_file { >+- local file=$1 >+- local basename=$(basename "$file") >+- local should_index_this_file="${should_index}" >+- >+- local readelf_out=$(${TOOLCHAIN_PREFIX}readelf -S "$file") >+- if [[ $readelf_out =~ "gdb_index" ]]; then >+- if $remove_index; then >+- ${TOOLCHAIN_PREFIX}objcopy --remove-section .gdb_index "$file" >+- echo "Removed index from $basename." >+- else >+- echo "Skipped $basename -- already contains index." >+- should_index_this_file=false >+- fi >+- fi >+- >+- if $should_index_this_file; then >+- local start=$(date +"%s%N") >+- echo "Adding index to $basename..." >+- >+- ${TOOLCHAIN_PREFIX}gdb -batch "$file" -ex "save gdb-index $directory" \ >+- -ex "quit" >+- local index_file="$directory/$basename.gdb-index" >+- if [ -f "$index_file" ]; then >+- ${TOOLCHAIN_PREFIX}objcopy --add-section .gdb_index="$index_file" \ >+- --set-section-flags .gdb_index=readonly "$file" "$file" >+- local finish=$(date +"%s%N") >+- local elapsed=$(((finish - start) / 1000000)) >+- echo " ...$basename indexed. [${elapsed}ms]" >+- else >+- echo " ...$basename unindexable." >+- fi >+- fi >+-} >+ >+-# Functions that when combined, concurrently index all files in FILES_TO_INDEX >+-# array. The global FILES_TO_INDEX is declared in the main body of the script. >+-function async_index { >+- # Start a background subshell to run the index command. >+- { >+- index_one_file $1 >+- kill -SIGUSR1 $$ # $$ resolves to the parent script. >+- exit 129 # See comment above wait loop at bottom. >+- } & >+-} >++set -e >+ >+-cur_file_num=0 >+-function index_next { >+- if ((cur_file_num >= ${#files_to_index[@]})); then >+- return >+- fi >+- >+- async_index "${files_to_index[cur_file_num]}" >+- ((cur_file_num += 1)) || true >+-} >+- >+-######## >+-### Main body of the script. >+- >+-remove_index=false >+-should_index=true >+-should_index_deps=true >+-files_to_index=() >+-while (($# > 0)); do >+- case "$1" in >+- -h) >+- usage_exit >+- ;; >+- -f) >+- remove_index=true >+- ;; >+- -r) >+- remove_index=true >+- should_index=false >+- ;; >+- -n) >+- should_index_deps=false >+- ;; >+- -*) >+- echo "Invalid option: $1" >&2 >+- usage_exit >+- ;; >+- *) >+- if [[ ! -f "$1" ]]; then >+- echo "Path $1 does not exist." >+- exit 1 >+- fi >+- files_to_index+=("$1") >+- ;; >+- esac >+- shift >+-done >+- >+-if ((${#files_to_index[@]} == 0)); then >+- usage_exit >++if [[ ! $# == 1 ]]; then >++ echo "Usage: $0 path-to-binary" >++ exit 1 >+ fi >+ >+-dependencies=() >+-if $should_index_deps; then >+- for file in "${files_to_index[@]}"; do >+- # Append the shared library dependencies of this file that >+- # have the same dirname. The dirname is a signal that these >+- # shared libraries were part of the same build as the binary. >+- dependencies+=( \ >+- $(ldd "$file" 2>/dev/null \ >+- | grep $(dirname "$file") \ >+- | sed "s/.*[ \t]\(.*\) (.*/\1/") \ >+- ) >+- done >++FILENAME="$1" >++if [[ ! -f "$FILENAME" ]]; then >++ echo "Path $FILENAME does not exist." >++ exit 1 >+ fi >+-files_to_index+=("${dependencies[@]}") >+- >+-# Ensure we cleanup on on exit. >+-trap on_exit EXIT INT >+ >+ # We're good to go! Create temp directory for index files. >+-directory=$(mktemp -d) >+-echo "Made temp directory $directory." >+- >+-# Start concurrent indexing. >+-trap index_next USR1 >+- >+-# 4 is an arbitrary default. When changing, remember we are likely IO bound >+-# so basing this off the number of cores is not sensible. >+-index_tasks=${INDEX_TASKS:-4} >+-for ((i = 0; i < index_tasks; i++)); do >+- index_next >+-done >+- >+-# Do a wait loop. Bash waits that terminate due a trap have an exit >+-# code > 128. We also ensure that our subshell's "normal" exit occurs with >+-# an exit code > 128. This allows us to do consider a > 128 exit code as >+-# an indication that the loop should continue. Unfortunately, it also means >+-# we cannot use set -e since technically the "wait" is failing. >+-wait >+-while (($? > 128)); do >+- wait >++DIRECTORY=$(mktemp -d) >++echo "Made temp directory $DIRECTORY." >++ >++# Always remove directory on exit. >++trap "{ echo -n Removing temp directory $DIRECTORY...; >++ rm -rf $DIRECTORY; echo done; }" EXIT >++ >++# Grab all the chromium shared library files. >++so_files=$(ldd "$FILENAME" 2>/dev/null \ >++ | grep $(dirname "$FILENAME") \ >++ | sed "s/.*[ \t]\(.*\) (.*/\1/") >++ >++# Add index to binary and the shared library dependencies. >++for file in "$FILENAME" $so_files; do >++ basename=$(basename "$file") >++ echo -n "Adding index to $basename..." >++ readelf_out=$(readelf -S "$file") >++ if [[ $readelf_out =~ "gdb_index" ]]; then >++ echo "already contains index. Skipped." >++ else >++ gdb -batch "$file" -ex "save gdb-index $DIRECTORY" -ex "quit" >++ objcopy --add-section .gdb_index="$DIRECTORY"/$basename.gdb-index \ >++ --set-section-flags .gdb_index=readonly "$file" "$file" >++ echo "done." >++ fi >+ done >+diff --git media/webrtc/trunk/build/gyp_chromium media/webrtc/trunk/build/gyp_chromium >+index 4fc62bad9ba1..d13403403162 100755 >+--- media/webrtc/trunk/build/gyp_chromium >++++ media/webrtc/trunk/build/gyp_chromium >+@@ -1,12 +1,175 @@ >+ #!/usr/bin/env python >++ >+ # Copyright (c) 2012 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+ >+-# Simple launcher script for gyp_chromium.py. >+-# TODO(sbc): This should probably be shell script but for historical >+-# reasons (all the python code used to live in this script without a >+-# .py extension, and was often run as 'python gyp_chromium') it is >+-# currently still python. >++# This script is wrapper for Chromium that adds some support for how GYP >++# is invoked by Chromium beyond what can be done in the gclient hooks. >++ >++import glob >++import os >++import shlex >++import subprocess >++import sys >++ >++script_dir = os.path.dirname(os.path.realpath(__file__)) >++chrome_src = os.path.abspath(os.path.join(script_dir, os.pardir)) >++ >++sys.path.insert(0, os.path.join(chrome_src, 'tools', 'gyp', 'pylib')) >++import gyp >++ >++# Add paths so that pymod_do_main(...) can import files. >++sys.path.insert(1, os.path.join(chrome_src, 'tools', 'grit')) >++sys.path.insert(1, os.path.join(chrome_src, 'chrome', 'tools', 'build')) >++sys.path.insert(1, os.path.join(chrome_src, 'native_client', 'build')) >++ >++ >++# On Windows, Psyco shortens warm runs of build/gyp_chromium by about >++# 20 seconds on a z600 machine with 12 GB of RAM, from 90 down to 70 >++# seconds. Conversely, memory usage of build/gyp_chromium with Psyco >++# maxes out at about 158 MB vs. 132 MB without it. >++# >++# Psyco uses native libraries, so we need to load a different >++# installation depending on which OS we are running under. It has not >++# been tested whether using Psyco on our Mac and Linux builds is worth >++# it (the GYP running time is a lot shorter, so the JIT startup cost >++# may not be worth it). >++if sys.platform == 'win32': >++ try: >++ sys.path.insert(0, os.path.join(chrome_src, 'third_party', 'psyco_win32')) >++ import psyco >++ except: >++ psyco = None >++else: >++ psyco = None >++ >++def apply_gyp_environment(file_path=None): >++ """ >++ Reads in a *.gyp_env file and applies the valid keys to os.environ. >++ """ >++ if not file_path or not os.path.exists(file_path): >++ return >++ file_contents = open(file_path).read() >++ try: >++ file_data = eval(file_contents, {'__builtins__': None}, None) >++ except SyntaxError, e: >++ e.filename = os.path.abspath(file_path) >++ raise >++ supported_vars = ( 'CC', >++ 'CHROMIUM_GYP_FILE', >++ 'CHROMIUM_GYP_SYNTAX_CHECK', >++ 'CXX', >++ 'GYP_DEFINES', >++ 'GYP_GENERATOR_FLAGS', >++ 'GYP_GENERATOR_OUTPUT', >++ 'GYP_GENERATORS', ) >++ for var in supported_vars: >++ val = file_data.get(var) >++ if val: >++ if var in os.environ: >++ print 'INFO: Environment value for "%s" overrides value in %s.' % ( >++ var, os.path.abspath(file_path) >++ ) >++ else: >++ os.environ[var] = val >++ >++def additional_include_files(args=[]): >++ """ >++ Returns a list of additional (.gypi) files to include, without >++ duplicating ones that are already specified on the command line. >++ """ >++ # Determine the include files specified on the command line. >++ # This doesn't cover all the different option formats you can use, >++ # but it's mainly intended to avoid duplicating flags on the automatic >++ # makefile regeneration which only uses this format. >++ specified_includes = set() >++ for arg in args: >++ if arg.startswith('-I') and len(arg) > 2: >++ specified_includes.add(os.path.realpath(arg[2:])) >++ >++ result = [] >++ def AddInclude(path): >++ if os.path.realpath(path) not in specified_includes: >++ result.append(path) >++ >++ # Always include common.gypi. >++ AddInclude(os.path.join(script_dir, 'common.gypi')) >++ >++ # Optionally add supplemental .gypi files if present. >++ supplements = glob.glob(os.path.join(chrome_src, '*', 'supplement.gypi')) >++ for supplement in supplements: >++ AddInclude(supplement) >++ >++ return result >++ >++if __name__ == '__main__': >++ args = sys.argv[1:] >++ >++ # Use the Psyco JIT if available. >++ if psyco: >++ psyco.profile() >++ print "Enabled Psyco JIT." >++ >++ # Fall back on hermetic python if we happen to get run under cygwin. >++ # TODO(bradnelson): take this out once this issue is fixed: >++ # http://code.google.com/p/gyp/issues/detail?id=177 >++ if sys.platform == 'cygwin': >++ python_dir = os.path.join(chrome_src, 'third_party', 'python_26') >++ env = os.environ.copy() >++ env['PATH'] = python_dir + os.pathsep + env.get('PATH', '') >++ p = subprocess.Popen( >++ [os.path.join(python_dir, 'python.exe')] + sys.argv, >++ env=env, shell=False) >++ p.communicate() >++ sys.exit(p.returncode) >++ >++ if 'SKIP_CHROMIUM_GYP_ENV' not in os.environ: >++ # Update the environment based on chromium.gyp_env >++ gyp_env_path = os.path.join(os.path.dirname(chrome_src), 'chromium.gyp_env') >++ apply_gyp_environment(gyp_env_path) >++ >++ # This could give false positives since it doesn't actually do real option >++ # parsing. Oh well. >++ gyp_file_specified = False >++ for arg in args: >++ if arg.endswith('.gyp'): >++ gyp_file_specified = True >++ break >++ >++ # If we didn't get a file, check an env var, and then fall back to >++ # assuming 'all.gyp' from the same directory as the script. >++ if not gyp_file_specified: >++ gyp_file = os.environ.get('CHROMIUM_GYP_FILE') >++ if gyp_file: >++ # Note that CHROMIUM_GYP_FILE values can't have backslashes as >++ # path separators even on Windows due to the use of shlex.split(). >++ args.extend(shlex.split(gyp_file)) >++ else: >++ args.append(os.path.join(script_dir, 'all.gyp')) >++ >++ args.extend(['-I' + i for i in additional_include_files(args)]) >++ >++ # There shouldn't be a circular dependency relationship between .gyp files, >++ # but in Chromium's .gyp files, on non-Mac platforms, circular relationships >++ # currently exist. The check for circular dependencies is currently >++ # bypassed on other platforms, but is left enabled on the Mac, where a >++ # violation of the rule causes Xcode to misbehave badly. >++ # TODO(mark): Find and kill remaining circular dependencies, and remove this >++ # option. http://crbug.com/35878. >++ # TODO(tc): Fix circular dependencies in ChromiumOS then add linux2 to the >++ # list. >++ if sys.platform not in ('darwin',): >++ args.append('--no-circular-check') >++ >++ # If CHROMIUM_GYP_SYNTAX_CHECK is set to 1, it will invoke gyp with --check >++ # to enfore syntax checking. >++ syntax_check = os.environ.get('CHROMIUM_GYP_SYNTAX_CHECK') >++ if syntax_check and int(syntax_check): >++ args.append('--check') >++ >++ print 'Updating projects from gyp files...' >++ sys.stdout.flush() >+ >+-execfile(__file__ + '.py') >++ # Off we go... >++ sys.exit(gyp.main(args)) >+diff --git media/webrtc/trunk/build/install-build-deps-android.sh media/webrtc/trunk/build/install-build-deps-android.sh >+index 06f79aee9984..0a90d3b10c05 100755 >+--- media/webrtc/trunk/build/install-build-deps-android.sh >++++ media/webrtc/trunk/build/install-build-deps-android.sh >+@@ -1,78 +1,101 @@ >+-#!/bin/bash >++#!/bin/bash -e >+ >+ # Copyright (c) 2012 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+ >+-# Script to install everything needed to build chromium on android, including >+-# items requiring sudo privileges. >+-# See https://www.chromium.org/developers/how-tos/android-build-instructions >++# Script to install everything needed to build chromium on android that >++# requires sudo privileges. >++# See http://code.google.com/p/chromium/wiki/AndroidBuildInstructions >+ >+-args="$@" >++# This script installs the sun-java6 packages (bin, jre and jdk). Sun requires >++# a license agreement, so upon installation it will prompt the user. To get >++# past the curses-based dialog press TAB <ret> TAB <ret> to agree. >+ >+ if ! uname -m | egrep -q "i686|x86_64"; then >+ echo "Only x86 architectures are currently supported" >&2 >+ exit >+ fi >+ >+-# Exit if any commands fail. >+-set -e >++if [ "x$(id -u)" != x0 ]; then >++ echo "Running as non-root user." >++ echo "You might have to enter your password one or more times for 'sudo'." >++ echo >++fi >+ >+-lsb_release=$(lsb_release --codename --short) >++# The temporary directory used to store output of update-java-alternatives >++TEMPDIR=$(mktemp -d) >++cleanup() { >++ local status=${?} >++ trap - EXIT >++ rm -rf "${TEMPDIR}" >++ exit ${status} >++} >++trap cleanup EXIT >+ >+-# Install first the default Linux build deps. >+-"$(dirname "${BASH_SOURCE[0]}")/install-build-deps.sh" \ >+- --no-syms --lib32 --no-arm --no-chromeos-fonts --no-nacl --no-prompt "${args}" >++sudo apt-get update >+ >+ # Fix deps >+ sudo apt-get -f install >+ >+-# common >+-sudo apt-get -y install lib32z1 lighttpd python-pexpect xvfb x11-utils >+- >+-# Some binaries in the Android SDK require 32-bit libraries on the host. >+-# See https://developer.android.com/sdk/installing/index.html?pkg=tools >+-sudo apt-get -y install libncurses5:i386 libstdc++6:i386 zlib1g:i386 >++# Install deps >++# This step differs depending on what Ubuntu release we are running >++# on since the package names are different, and Sun's Java must >++# be installed manually on late-model versions. >+ >+-# Required by //components/cronet/tools/generate_javadoc.py >+-# TODO(375324): Stop requiring ANT. >+-sudo apt-get -y install ant >+- >+-# Required for apk-patch-size-estimator >+-sudo apt-get -y install bsdiff >+- >+-# Do our own error handling for java. >+-set +e >+- >+-function IsJava8() { >+- # Arg is either "java" or "javac" >+- $1 -version 2>&1 | grep -q '1\.8' >+-} >+- >+-if ! (IsJava8 java && IsJava8 javac); then >+- sudo apt-get -y install openjdk-8-jre openjdk-8-jdk >+-fi >+- >+-# There can be several reasons why java8 is not default despite being installed. >+-# Just show an error and exit. >+-if ! (IsJava8 java && IsJava8 javac); then >+- echo >+- echo "Automatic java installation failed." >+- echo '`java -version` reports:' >+- java -version >+- echo >+- echo '`javac -version` reports:' >+- javac -version >+- echo >+- echo "Please ensure that JDK 8 is installed and resolves first in your PATH." >+- echo -n '`which java` reports: ' >+- which java >+- echo -n '`which javac` reports: ' >+- which javac >+- echo >+- echo "You might also try running:" >+- echo " sudo update-java-alternatives -s java-1.8.0-openjdk-amd64" >+- exit 1 >++# common >++sudo apt-get -y install python-pexpect xvfb x11-utils >++ >++if /usr/bin/lsb_release -r -s | grep -q "12."; then >++ # Ubuntu 12.x >++ sudo apt-get -y install ant >++ >++ # Java can not be installed via ppa on Ubuntu 12.04+ so we'll >++ # simply check to see if it has been setup properly -- if not >++ # let the user know. >++ >++ if ! java -version 2>&1 | grep -q "Java(TM)"; then >++ echo "****************************************************************" >++ echo "You need to install the Oracle Java SDK from http://goo.gl/uPRSq" >++ echo "and configure it as the default command-line Java environment." >++ echo "****************************************************************" >++ exit >++ fi >++ >++else >++ # Ubuntu 10.x >++ >++ sudo apt-get -y install ant1.8 >++ >++ # Install sun-java6 stuff >++ sudo apt-get -y install sun-java6-bin sun-java6-jre sun-java6-jdk >++ >++ # Switch version of Java to java-6-sun >++ # Sun's java is missing certain Java plugins (e.g. for firefox, mozilla). >++ # These are not required to build, and thus are treated only as warnings. >++ # Any errors in updating java alternatives which are not '*-javaplugin.so' >++ # will cause errors and stop the script from completing successfully. >++ if ! sudo update-java-alternatives -s java-6-sun \ >++ >& "${TEMPDIR}"/update-java-alternatives.out >++ then >++ # Check that there are the expected javaplugin.so errors for the update >++ if grep 'javaplugin.so' "${TEMPDIR}"/update-java-alternatives.out >& \ >++ /dev/null >++ then >++ # Print as warnings all the javaplugin.so errors >++ echo 'WARNING: java-6-sun has no alternatives for the following plugins:' >++ grep 'javaplugin.so' "${TEMPDIR}"/update-java-alternatives.out >++ fi >++ # Check if there are any errors that are not javaplugin.so >++ if grep -v 'javaplugin.so' "${TEMPDIR}"/update-java-alternatives.out \ >++ >& /dev/null >++ then >++ # If there are non-javaplugin.so errors, treat as errors and exit >++ echo 'ERRORS: Failed to update alternatives for java-6-sun:' >++ grep -v 'javaplugin.so' "${TEMPDIR}"/update-java-alternatives.out >++ exit 1 >++ fi >++ fi >+ fi >+ >+ echo "install-build-deps-android.sh complete." >+diff --git media/webrtc/trunk/build/install-build-deps.sh media/webrtc/trunk/build/install-build-deps.sh >+index c965a9b38e06..b77e23a6d9f6 100755 >+--- media/webrtc/trunk/build/install-build-deps.sh >++++ media/webrtc/trunk/build/install-build-deps.sh >+@@ -5,516 +5,166 @@ >+ # found in the LICENSE file. >+ >+ # Script to install everything needed to build chromium (well, ideally, anyway) >+-# See https://chromium.googlesource.com/chromium/src/+/master/docs/linux_build_instructions.md >++# See http://code.google.com/p/chromium/wiki/LinuxBuildInstructions >++# and http://code.google.com/p/chromium/wiki/LinuxBuild64Bit >+ >+ usage() { >+ echo "Usage: $0 [--options]" >+ echo "Options:" >+ echo "--[no-]syms: enable or disable installation of debugging symbols" >+- echo "--lib32: enable installation of 32-bit libraries, e.g. for V8 snapshot" >+- echo "--[no-]arm: enable or disable installation of arm cross toolchain" >+- echo "--[no-]chromeos-fonts: enable or disable installation of Chrome OS"\ >+- "fonts" >+- echo "--[no-]nacl: enable or disable installation of prerequisites for"\ >+- "building standalone NaCl and all its toolchains" >++ echo "--[no-]lib32: enable or disable installation of 32 bit libraries" >+ echo "--no-prompt: silently select standard options/defaults" >+- echo "--quick-check: quickly try to determine if dependencies are installed" >+- echo " (this avoids interactive prompts and sudo commands," >+- echo " so might not be 100% accurate)" >+- echo "--unsupported: attempt installation even on unsupported systems" >+ echo "Script will prompt interactively if options not given." >+ exit 1 >+ } >+ >+-# Waits for the user to press 'Y' or 'N'. Either uppercase of lowercase is >+-# accepted. Returns 0 for 'Y' and 1 for 'N'. If an optional parameter has >+-# been provided to yes_no(), the function also accepts RETURN as a user input. >+-# The parameter specifies the exit code that should be returned in that case. >+-# The function will echo the user's selection followed by a newline character. >+-# Users can abort the function by pressing CTRL-C. This will call "exit 1". >+-yes_no() { >+- if [ 0 -ne "${do_default-0}" ] ; then >+- [ $1 -eq 0 ] && echo "Y" || echo "N" >+- return $1 >+- fi >+- local c >+- while :; do >+- c="$(trap 'stty echo -iuclc icanon 2>/dev/null' EXIT INT TERM QUIT >+- stty -echo iuclc -icanon 2>/dev/null >+- dd count=1 bs=1 2>/dev/null | od -An -tx1)" >+- case "$c" in >+- " 0a") if [ -n "$1" ]; then >+- [ $1 -eq 0 ] && echo "Y" || echo "N" >+- return $1 >+- fi >+- ;; >+- " 79") echo "Y" >+- return 0 >+- ;; >+- " 6e") echo "N" >+- return 1 >+- ;; >+- "") echo "Aborted" >&2 >+- exit 1 >+- ;; >+- *) # The user pressed an unrecognized key. As we are not echoing >+- # any incorrect user input, alert the user by ringing the bell. >+- (tput bel) 2>/dev/null >+- ;; >+- esac >+- done >+-} >+- >+-# Checks whether a particular package is available in the repos. >+-# USAGE: $ package_exists <package name> >+-package_exists() { >+- [ ! -z "`apt-cache search --names-only "$1"`" ] >+-} >+- >+-# These default to on because (some) bots need them and it keeps things >+-# simple for the bot setup if all bots just run the script in its default >+-# mode. Developers who don't want stuff they don't need installed on their >+-# own workstations can pass --no-arm --no-nacl when running the script. >+-do_inst_arm=1 >+-do_inst_nacl=1 >+- >+ while test "$1" != "" >+ do >+ case "$1" in >+ --syms) do_inst_syms=1;; >+ --no-syms) do_inst_syms=0;; >+ --lib32) do_inst_lib32=1;; >+- --arm) do_inst_arm=1;; >+- --no-arm) do_inst_arm=0;; >+- --chromeos-fonts) do_inst_chromeos_fonts=1;; >+- --no-chromeos-fonts) do_inst_chromeos_fonts=0;; >+- --nacl) do_inst_nacl=1;; >+- --no-nacl) do_inst_nacl=0;; >++ --no-lib32) do_inst_lib32=0;; >+ --no-prompt) do_default=1 >+ do_quietly="-qq --assume-yes" >+ ;; >+- --quick-check) do_quick_check=1;; >+- --unsupported) do_unsupported=1;; >+ *) usage;; >+ esac >+ shift >+ done >+ >+-if test "$do_inst_arm" = "1"; then >+- do_inst_lib32=1 >+-fi >+- >+-# Check for lsb_release command in $PATH >+-if ! which lsb_release > /dev/null; then >+- echo "ERROR: lsb_release not found in \$PATH" >&2 >+- exit 1; >++if ! egrep -q \ >++ 'Ubuntu (10\.04|10\.10|11\.04|11\.10|12\.04|lucid|maverick|natty|oneiric|precise)' \ >++ /etc/issue; then >++ echo "Only Ubuntu 10.04 (lucid) through 12.04 (precise) are currently" \ >++ "supported" >&2 >++ exit 1 >+ fi >+ >+-distro_codename=$(lsb_release --codename --short) >+-distro_id=$(lsb_release --id --short) >+-supported_codenames="(trusty|xenial|yakkety)" >+-supported_ids="(Debian)" >+-if [ 0 -eq "${do_unsupported-0}" ] && [ 0 -eq "${do_quick_check-0}" ] ; then >+- if [[ ! $distro_codename =~ $supported_codenames && >+- ! $distro_id =~ $supported_ids ]]; then >+- echo -e "ERROR: The only supported distros are\n" \ >+- "\tUbuntu 14.04 (trusty)\n" \ >+- "\tUbuntu 16.04 (xenial)\n" \ >+- "\tUbuntu 16.10 (yakkety)\n" \ >+- "\tDebian 8 (jessie) or later" >&2 >+- exit 1 >+- fi >+- >+- if ! uname -m | egrep -q "i686|x86_64"; then >+- echo "Only x86 architectures are currently supported" >&2 >+- exit >+- fi >++if ! uname -m | egrep -q "i686|x86_64"; then >++ echo "Only x86 architectures are currently supported" >&2 >++ exit >+ fi >+ >+-if [ "x$(id -u)" != x0 ] && [ 0 -eq "${do_quick_check-0}" ]; then >++if [ "x$(id -u)" != x0 ]; then >+ echo "Running as non-root user." >+ echo "You might have to enter your password one or more times for 'sudo'." >+ echo >+ fi >+ >+ # Packages needed for chromeos only >+-chromeos_dev_list="libbluetooth-dev libxkbcommon-dev realpath" >+- >+-# Packages needed for development >+-dev_list="\ >+- bison >+- cdbs >+- curl >+- dpkg-dev >+- elfutils >+- devscripts >+- fakeroot >+- flex >+- fonts-ipafont >+- fonts-thai-tlwg >+- g++ >+- git-core >+- git-svn >+- gperf >+- libasound2-dev >+- libbrlapi-dev >+- libav-tools >+- libbz2-dev >+- libcairo2-dev >+- libcap-dev >+- libcups2-dev >+- libcurl4-gnutls-dev >+- libdrm-dev >+- libelf-dev >+- libffi-dev >+- libgconf2-dev >+- libglib2.0-dev >+- libglu1-mesa-dev >+- libgnome-keyring-dev >+- libgtk2.0-dev >+- libgtk-3-dev >+- libkrb5-dev >+- libnspr4-dev >+- libnss3-dev >+- libpam0g-dev >+- libpci-dev >+- libpulse-dev >+- libsctp-dev >+- libspeechd-dev >+- libsqlite3-dev >+- libssl-dev >+- libudev-dev >+- libwww-perl >+- libxslt1-dev >+- libxss-dev >+- libxt-dev >+- libxtst-dev >+- openbox >+- patch >+- perl >+- pkg-config >+- python >+- python-cherrypy3 >+- python-crypto >+- python-dev >+- python-numpy >+- python-opencv >+- python-openssl >+- python-psutil >+- python-yaml >+- rpm >+- ruby >+- subversion >+- ttf-dejavu-core >+- wdiff >+- xcompmgr >+- zip >+- $chromeos_dev_list >+-" >++chromeos_dev_list="libbluetooth-dev libpulse-dev" >++ >++# Packages need for development >++dev_list="apache2.2-bin bison curl elfutils fakeroot flex g++ gperf >++ language-pack-fr libapache2-mod-php5 libasound2-dev libbz2-dev >++ libcairo2-dev libcups2-dev libcurl4-gnutls-dev libdbus-glib-1-dev >++ libelf-dev libgconf2-dev libgl1-mesa-dev libglib2.0-dev >++ libglu1-mesa-dev libgnome-keyring-dev libgtk2.0-dev >++ libkrb5-dev libnspr4-dev libnss3-dev libpam0g-dev libsctp-dev >++ libsqlite3-dev libssl-dev libudev-dev libwww-perl libxslt1-dev >++ libxss-dev libxt-dev libxtst-dev mesa-common-dev patch >++ perl php5-cgi pkg-config python python-cherrypy3 python-dev >++ python-psutil rpm ruby subversion ttf-dejavu-core ttf-indic-fonts >++ ttf-kochi-gothic ttf-kochi-mincho ttf-thai-tlwg wdiff git-core >++ $chromeos_dev_list" >+ >+ # 64-bit systems need a minimum set of 32-bit compat packages for the pre-built >+-# NaCl binaries. >+-if file -L /sbin/init | grep -q 'ELF 64-bit'; then >++# NaCl binaries. These are always needed, regardless of whether or not we want >++# the full 32-bit "cross-compile" support (--lib32). >++if [ "$(uname -m)" = "x86_64" ]; then >+ dev_list="${dev_list} libc6-i386 lib32gcc1 lib32stdc++6" >+ fi >+ >+ # Run-time libraries required by chromeos only >+-chromeos_lib_list="libpulse0 libbz2-1.0" >++chromeos_lib_list="libpulse0 libbz2-1.0 libcurl4-gnutls-dev" >+ >+ # Full list of required run-time libraries >+-lib_list="\ >+- libatk1.0-0 >+- libc6 >+- libasound2 >+- libcairo2 >+- libcap2 >+- libcups2 >+- libexpat1 >+- libffi6 >+- libfontconfig1 >+- libfreetype6 >+- libglib2.0-0 >+- libgnome-keyring0 >+- libgtk2.0-0 >+- libgtk-3-0 >+- libpam0g >+- libpango1.0-0 >+- libpci3 >+- libpcre3 >+- libpixman-1-0 >+- libspeechd2 >+- libstdc++6 >+- libsqlite3-0 >+- libx11-6 >+- libx11-xcb1 >+- libxau6 >+- libxcb1 >+- libxcomposite1 >+- libxcursor1 >+- libxdamage1 >+- libxdmcp6 >+- libxext6 >+- libxfixes3 >+- libxi6 >+- libxinerama1 >+- libxrandr2 >+- libxrender1 >+- libxtst6 >+- zlib1g >+- $chromeos_lib_list >+-" >++lib_list="libatk1.0-0 libc6 libasound2 libcairo2 libcups2 libdbus-glib-1-2 >++ libexpat1 libfontconfig1 libfreetype6 libglib2.0-0 libgnome-keyring0 >++ libgtk2.0-0 libpam0g libpango1.0-0 libpcre3 libpixman-1-0 >++ libpng12-0 libstdc++6 libsqlite3-0 libudev0 libx11-6 libxau6 libxcb1 >++ libxcomposite1 libxcursor1 libxdamage1 libxdmcp6 libxext6 libxfixes3 >++ libxi6 libxinerama1 libxrandr2 libxrender1 libxtst6 zlib1g >++ $chromeos_lib_list" >+ >+ # Debugging symbols for all of the run-time libraries >+-dbg_list="\ >+- libatk1.0-dbg >+- libc6-dbg >+- libcairo2-dbg >+- libffi6-dbg >+- libfontconfig1-dbg >+- libglib2.0-0-dbg >+- libgtk2.0-0-dbg >+- libgtk-3-0-dbg >+- libpango1.0-0-dbg >+- libpcre3-dbg >+- libpixman-1-0-dbg >+- libsqlite3-0-dbg >+- libx11-6-dbg >+- libx11-xcb1-dbg >+- libxau6-dbg >+- libxcb1-dbg >+- libxcomposite1-dbg >+- libxcursor1-dbg >+- libxdamage1-dbg >+- libxdmcp6-dbg >+- libxext6-dbg >+- libxi6-dbg >+- libxinerama1-dbg >+- libxrandr2-dbg >+- libxrender1-dbg >+- libxtst6-dbg >+- zlib1g-dbg >+-" >+- >+-if [[ ! $distro_codename =~ "yakkety" ]]; then >+- dbg_list="${dbg_list} libxfixes3-dbg" >+-fi >+- >+-# Find the proper version of libstdc++6-4.x-dbg. >+-if [ "x$distro_codename" = "xtrusty" ]; then >+- dbg_list="${dbg_list} libstdc++6-4.8-dbg" >+-else >+- dbg_list="${dbg_list} libstdc++6-4.9-dbg" >+-fi >+- >+-# 32-bit libraries needed e.g. to compile V8 snapshot for Android or armhf >+-lib32_list="linux-libc-dev:i386" >+- >+-# arm cross toolchain packages needed to build chrome on armhf >+-EM_REPO="deb http://emdebian.org/tools/debian/ jessie main" >+-EM_SOURCE=$(cat <<EOF >+-# Repo added by Chromium $0 >+-${EM_REPO} >+-# deb-src http://emdebian.org/tools/debian/ jessie main >+-EOF >+-) >+-EM_ARCHIVE_KEY_FINGER="084C6C6F39159EDB67969AA87DE089671804772E" >+-GPP_ARM_PACKAGE="g++-arm-linux-gnueabihf" >+-case $distro_codename in >+- jessie) >+- eval $(apt-config shell APT_SOURCESDIR 'Dir::Etc::sourceparts/d') >+- CROSSTOOLS_LIST="${APT_SOURCESDIR}/crosstools.list" >+- arm_list="libc6-dev:armhf >+- linux-libc-dev:armhf" >+- if test "$do_inst_arm" = "1"; then >+- if $(dpkg-query -W ${GPP_ARM_PACKAGE} &>/dev/null); then >+- arm_list+=" ${GPP_ARM_PACKAGE}" >+- else >+- echo "The Debian Cross-toolchains repository is necessary to" >+- echo "cross-compile Chromium for arm." >+- echo -n "Do you want me to add it for you (y/N) " >+- if yes_no 1; then >+- gpg --keyserver pgp.mit.edu --recv-keys ${EM_ARCHIVE_KEY_FINGER} >+- gpg -a --export ${EM_ARCHIVE_KEY_FINGER} | sudo apt-key add - >+- if ! grep "^${EM_REPO}" "${CROSSTOOLS_LIST}" &>/dev/null; then >+- echo "${EM_SOURCE}" | sudo tee -a "${CROSSTOOLS_LIST}" >/dev/null >+- fi >+- arm_list+=" ${GPP_ARM_PACKAGE}" >+- fi >+- fi >+- fi >+- ;; >+- # All necessary ARM packages are available on the default repos on >+- # Debian 9 and later. >+- *) >+- arm_list="binutils-aarch64-linux-gnu >+- libc6-dev-armhf-cross >+- linux-libc-dev-armhf-cross >+- ${GPP_ARM_PACKAGE}" >+- ;; >+-esac >+- >+-# Work around for dependency issue Ubuntu/Trusty: http://crbug.com/435056 >+-case $distro_codename in >+- trusty) >+- arm_list+=" g++-4.8-multilib-arm-linux-gnueabihf >+- gcc-4.8-multilib-arm-linux-gnueabihf" >+- ;; >+- xenial|yakkety) >+- arm_list+=" g++-5-multilib-arm-linux-gnueabihf >+- gcc-5-multilib-arm-linux-gnueabihf >+- gcc-arm-linux-gnueabihf" >+- ;; >+-esac >+- >+-# Packages to build NaCl, its toolchains, and its ports. >+-naclports_list="ant autoconf bison cmake gawk intltool xutils-dev xsltproc" >+-nacl_list="\ >+- g++-mingw-w64-i686 >+- lib32z1-dev >+- libasound2:i386 >+- libcap2:i386 >+- libelf-dev:i386 >+- libfontconfig1:i386 >+- libgconf-2-4:i386 >+- libglib2.0-0:i386 >+- libgpm2:i386 >+- libgtk2.0-0:i386 >+- libgtk-3-0:i386 >+- libncurses5:i386 >+- lib32ncurses5-dev >+- libnss3:i386 >+- libpango1.0-0:i386 >+- libssl-dev:i386 >+- libtinfo-dev >+- libtinfo-dev:i386 >+- libtool >+- libxcomposite1:i386 >+- libxcursor1:i386 >+- libxdamage1:i386 >+- libxi6:i386 >+- libxrandr2:i386 >+- libxss1:i386 >+- libxtst6:i386 >+- texinfo >+- xvfb >+- ${naclports_list} >+-" >+- >+-if package_exists libssl1.0.0; then >+- nacl_list="${nacl_list} libssl1.0.0:i386" >+-else >+- nacl_list="${nacl_list} libssl1.0.2:i386" >+-fi >+- >+-# Find the proper version of packages that depend on mesa. Only one -lts variant >+-# of mesa can be installed and everything that depends on it must match. >+- >+-# Query for the name and status of all mesa LTS variants, filter for only >+-# installed packages, extract just the name, and eliminate duplicates (there can >+-# be more than one with the same name in the case of multiarch). Expand into an >+-# array. >+-mesa_packages=($(dpkg-query -Wf'${package} ${status}\n' \ >+- libgl1-mesa-glx-lts-\* 2>/dev/null | \ >+- grep " ok installed" | cut -d " " -f 1 | sort -u)) >+-if [ "${#mesa_packages[@]}" -eq 0 ]; then >+- mesa_variant="" >+-elif [ "${#mesa_packages[@]}" -eq 1 ]; then >+- # Strip the base package name and leave just "-lts-whatever" >+- mesa_variant="${mesa_packages[0]#libgl1-mesa-glx}" >+-else >+- echo "ERROR: unable to determine which libgl1-mesa-glx variant is installed." >+- exit 1 >+-fi >+-dev_list="${dev_list} libgbm-dev${mesa_variant} >+- libgles2-mesa-dev${mesa_variant} libgl1-mesa-dev${mesa_variant} >+- mesa-common-dev${mesa_variant}" >+-nacl_list="${nacl_list} libgl1-mesa-glx${mesa_variant}:i386" >++dbg_list="libatk1.0-dbg libc6-dbg libcairo2-dbg libdbus-glib-1-2-dbg >++ libfontconfig1-dbg libglib2.0-0-dbg libgtk2.0-0-dbg >++ libpango1.0-0-dbg libpcre3-dbg libpixman-1-0-dbg >++ libsqlite3-0-dbg >++ libx11-6-dbg libxau6-dbg libxcb1-dbg libxcomposite1-dbg >++ libxcursor1-dbg libxdamage1-dbg libxdmcp6-dbg libxext6-dbg >++ libxfixes3-dbg libxi6-dbg libxinerama1-dbg libxrandr2-dbg >++ libxrender1-dbg libxtst6-dbg zlib1g-dbg" >++ >++# Plugin lists needed for tests. >++plugin_list="flashplugin-installer" >+ >+ # Some package names have changed over time >+-if package_exists libpng12-0; then >+- lib_list="${lib_list} libpng12-0" >++if apt-cache show ttf-mscorefonts-installer >/dev/null 2>&1; then >++ dev_list="${dev_list} ttf-mscorefonts-installer" >+ else >+- lib_list="${lib_list} libpng16-16" >++ dev_list="${dev_list} msttcorefonts" >+ fi >+-if package_exists libnspr4-dbg; then >++if apt-cache show libnspr4-dbg >/dev/null 2>&1; then >+ dbg_list="${dbg_list} libnspr4-dbg libnss3-dbg" >+ lib_list="${lib_list} libnspr4 libnss3" >+ else >+ dbg_list="${dbg_list} libnspr4-0d-dbg libnss3-1d-dbg" >+ lib_list="${lib_list} libnspr4-0d libnss3-1d" >+ fi >+-if package_exists libjpeg-dev; then >+- dev_list="${dev_list} libjpeg-dev" >++if apt-cache show libjpeg-dev >/dev/null 2>&1; then >++ dev_list="${dev_list} libjpeg-dev" >+ else >+- dev_list="${dev_list} libjpeg62-dev" >+-fi >+-if package_exists libudev1; then >+- dev_list="${dev_list} libudev1" >+- nacl_list="${nacl_list} libudev1:i386" >+-else >+- dev_list="${dev_list} libudev0" >+- nacl_list="${nacl_list} libudev0:i386" >+-fi >+-if package_exists libbrlapi0.6; then >+- dev_list="${dev_list} libbrlapi0.6" >+-else >+- dev_list="${dev_list} libbrlapi0.5" >+-fi >+-if package_exists apache2-bin; then >+- dev_list="${dev_list} apache2-bin" >+-else >+- dev_list="${dev_list} apache2.2-bin" >+-fi >+-if package_exists xfonts-mathml; then >+- dev_list="${dev_list} xfonts-mathml" >+-fi >+-if package_exists fonts-indic; then >+- dev_list="${dev_list} fonts-indic" >+-else >+- dev_list="${dev_list} ttf-indic-fonts" >+-fi >+-if package_exists php7.0-cgi; then >+- dev_list="${dev_list} php7.0-cgi libapache2-mod-php7.0" >+-else >+- dev_list="${dev_list} php5-cgi libapache2-mod-php5" >+-fi >+-# ttf-mscorefonts-installer is in the Debian contrib repo, which has >+-# dependencies on non-free software. Install it only if the user has already >+-# enabled contrib. >+-if package_exists ttf-mscorefonts-installer; then >+- dev_list="${dev_list} ttf-mscorefonts-installer" >+-elif package_exists msttcorefonts; then >+- dev_list="${dev_list} msttcorefonts" >+-fi >+-# Ubuntu 16.04 has this package deleted. >+-if package_exists ttf-kochi-gothic; then >+- dev_list="${dev_list} ttf-kochi-gothic" >+-fi >+-# Ubuntu 16.04 has this package deleted. >+-if package_exists ttf-kochi-mincho; then >+- dev_list="${dev_list} ttf-kochi-mincho" >++ dev_list="${dev_list} libjpeg62-dev" >+ fi >+ >+-# Some packages are only needed if the distribution actually supports >++# Some packages are only needed, if the distribution actually supports >+ # installing them. >+-if package_exists appmenu-gtk; then >++if apt-cache show appmenu-gtk >/dev/null 2>&1; then >+ lib_list="$lib_list appmenu-gtk" >+ fi >+ >+-# When cross building for arm/Android on 64-bit systems the host binaries >+-# that are part of v8 need to be compiled with -m32 which means >+-# that basic multilib support is needed. >+-if file -L /sbin/init | grep -q 'ELF 64-bit'; then >+- # gcc-multilib conflicts with the arm cross compiler (at least in trusty) but >+- # g++-X.Y-multilib gives us the 32-bit support that we need. Find out the >+- # appropriate value of X and Y by seeing what version the current >+- # distribution's g++-multilib package depends on. >+- multilib_package=$(apt-cache depends g++-multilib --important | \ >+- grep -E --color=never --only-matching '\bg\+\+-[0-9.]+-multilib\b') >+- lib32_list="$lib32_list $multilib_package" >+-fi >++# Waits for the user to press 'Y' or 'N'. Either uppercase of lowercase is >++# accepted. Returns 0 for 'Y' and 1 for 'N'. If an optional parameter has >++# been provided to yes_no(), the function also accepts RETURN as a user input. >++# The parameter specifies the exit code that should be returned in that case. >++# The function will echo the user's selection followed by a newline character. >++# Users can abort the function by pressing CTRL-C. This will call "exit 1". >++yes_no() { >++ if [ 0 -ne "${do_default-0}" ] ; then >++ return $1 >++ fi >++ local c >++ while :; do >++ c="$(trap 'stty echo -iuclc icanon 2>/dev/null' EXIT INT TERM QUIT >++ stty -echo iuclc -icanon 2>/dev/null >++ dd count=1 bs=1 2>/dev/null | od -An -tx1)" >++ case "$c" in >++ " 0a") if [ -n "$1" ]; then >++ [ $1 -eq 0 ] && echo "Y" || echo "N" >++ return $1 >++ fi >++ ;; >++ " 79") echo "Y" >++ return 0 >++ ;; >++ " 6e") echo "N" >++ return 1 >++ ;; >++ "") echo "Aborted" >&2 >++ exit 1 >++ ;; >++ *) # The user pressed an unrecognized key. As we are not echoing >++ # any incorrect user input, alert the user by ringing the bell. >++ (tput bel) 2>/dev/null >++ ;; >++ esac >++ done >++} >+ >+-if test "$do_inst_syms" = "" && test 0 -eq ${do_quick_check-0} >++if test "$do_inst_syms" = "" >+ then >+ echo "This script installs all tools and libraries needed to build Chromium." >+ echo "" >+@@ -527,81 +177,12 @@ then >+ fi >+ fi >+ if test "$do_inst_syms" = "1"; then >+- echo "Including debugging symbols." >+- # Many debug packages are not available in Debian stretch, >+- # so exclude the ones that are missing. >+- available_dbg_packages="" >+- for package in ${dbg_list}; do >+- if package_exists ${package}; then >+- available_dbg_packages="${available_dbg_packages} ${package}" >+- fi >+- done >+- dbg_list="${available_dbg_packages}" >++ echo "Installing debugging symbols." >+ else >+- echo "Skipping debugging symbols." >++ echo "Skipping installation of debugging symbols." >+ dbg_list= >+ fi >+ >+-if test "$do_inst_lib32" = "1" ; then >+- echo "Including 32-bit libraries for ARM/Android." >+-else >+- echo "Skipping 32-bit libraries for ARM/Android." >+- lib32_list= >+-fi >+- >+-if test "$do_inst_arm" = "1" ; then >+- echo "Including ARM cross toolchain." >+-else >+- echo "Skipping ARM cross toolchain." >+- arm_list= >+-fi >+- >+-if test "$do_inst_nacl" = "1"; then >+- echo "Including NaCl, NaCl toolchain, NaCl ports dependencies." >+-else >+- echo "Skipping NaCl, NaCl toolchain, NaCl ports dependencies." >+- nacl_list= >+-fi >+- >+-# The `sort -r -s -t: -k2` sorts all the :i386 packages to the front, to avoid >+-# confusing dpkg-query (crbug.com/446172). >+-packages="$( >+- echo "${dev_list} ${lib_list} ${dbg_list} ${lib32_list} ${arm_list}"\ >+- "${nacl_list}" | tr " " "\n" | sort -u | sort -r -s -t: -k2 | tr "\n" " " >+-)" >+- >+-if [ 1 -eq "${do_quick_check-0}" ] ; then >+- if ! missing_packages="$(dpkg-query -W -f ' ' ${packages} 2>&1)"; then >+- # Distinguish between packages that actually aren't available to the >+- # system (i.e. not in any repo) and packages that just aren't known to >+- # dpkg (i.e. managed by apt). >+- missing_packages="$(echo "${missing_packages}" | awk '{print $NF}')" >+- not_installed="" >+- unknown="" >+- for p in ${missing_packages}; do >+- if apt-cache show ${p} > /dev/null 2>&1; then >+- not_installed="${p}\n${not_installed}" >+- else >+- unknown="${p}\n${unknown}" >+- fi >+- done >+- if [ -n "${not_installed}" ]; then >+- echo "WARNING: The following packages are not installed:" >+- echo -e "${not_installed}" | sed -e "s/^/ /" >+- fi >+- if [ -n "${unknown}" ]; then >+- echo "WARNING: The following packages are unknown to your system" >+- echo "(maybe missing a repo or need to 'sudo apt-get update'):" >+- echo -e "${unknown}" | sed -e "s/^/ /" >+- fi >+- exit 1 >+- fi >+- exit 0 >+-fi >+- >+-if test "$do_inst_lib32" = "1" || test "$do_inst_nacl" = "1"; then >+- sudo dpkg --add-architecture i386 >+-fi >+ sudo apt-get update >+ >+ # We initially run "apt-get" with the --reinstall option and parse its output. >+@@ -609,13 +190,14 @@ sudo apt-get update >+ # without accidentally promoting any packages from "auto" to "manual". >+ # We then re-run "apt-get" with just the list of missing packages. >+ echo "Finding missing packages..." >++packages="${dev_list} ${lib_list} ${dbg_list} ${plugin_list}" >+ # Intentionally leaving $packages unquoted so it's more readable. >+ echo "Packages required: " $packages >+ echo >+ new_list_cmd="sudo apt-get install --reinstall $(echo $packages)" >+-if new_list="$(yes n | LANGUAGE=en LANG=C $new_list_cmd)"; then >++if new_list="$(yes n | LANG=C $new_list_cmd)"; then >+ # We probably never hit this following line. >+- echo "No missing packages, and the packages are up to date." >++ echo "No missing packages, and the packages are up-to-date." >+ elif [ $? -eq 1 ]; then >+ # We expect apt-get to have exit status of 1. >+ # This indicates that we cancelled the install with "yes n|". >+@@ -623,7 +205,7 @@ elif [ $? -eq 1 ]; then >+ sed -e '1,/The following NEW packages will be installed:/d;s/^ //;t;d') >+ new_list=$(echo "$new_list" | sed 's/ *$//') >+ if [ -z "$new_list" ] ; then >+- echo "No missing packages, and the packages are up to date." >++ echo "No missing packages, and the packages are up-to-date." >+ else >+ echo "Installing missing packages: $new_list." >+ sudo apt-get install ${do_quietly-} ${new_list} >+@@ -644,44 +226,189 @@ else >+ exit 100 >+ fi >+ >+-# Install the Chrome OS default fonts. This must go after running >+-# apt-get, since install-chromeos-fonts depends on curl. >+-if test "$do_inst_chromeos_fonts" != "0"; then >+- echo >+- echo "Installing Chrome OS fonts." >+- dir=`echo $0 | sed -r -e 's/\/[^/]+$//'` >+- if ! sudo $dir/linux/install-chromeos-fonts.py; then >+- echo "ERROR: The installation of the Chrome OS default fonts failed." >+- if [ `stat -f -c %T $dir` == "nfs" ]; then >+- echo "The reason is that your repo is installed on a remote file system." >+- else >+- echo "This is expected if your repo is installed on a remote file system." >+- fi >+- echo "It is recommended to install your repo on a local file system." >+- echo "You can skip the installation of the Chrome OS default founts with" >+- echo "the command line option: --no-chromeos-fonts." >+- exit 1 >++# Install 32bit backwards compatibility support for 64bit systems >++if [ "$(uname -m)" = "x86_64" ]; then >++ if test "$do_inst_lib32" = "" >++ then >++ echo "We no longer recommend that you use this script to install" >++ echo "32bit libraries on a 64bit system. Instead, consider using" >++ echo "the install-chroot.sh script to help you set up a 32bit" >++ echo "environment for building and testing 32bit versions of Chrome." >++ echo >++ echo "If you nonetheless want to try installing 32bit libraries" >++ echo "directly, you can do so by explicitly passing the --lib32" >++ echo "option to install-build-deps.sh." >++ fi >++ if test "$do_inst_lib32" != "1" >++ then >++ echo "Exiting without installing any 32bit libraries." >++ exit 0 >+ fi >+-else >+- echo "Skipping installation of Chrome OS fonts." >+-fi >+ >+-echo "Installing locales." >+-CHROMIUM_LOCALES="da_DK.UTF-8 fr_FR.UTF-8 he_IL.UTF-8 zh_TW.UTF-8" >+-LOCALE_GEN=/etc/locale.gen >+-if [ -e ${LOCALE_GEN} ]; then >+- OLD_LOCALE_GEN="$(cat /etc/locale.gen)" >+- for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do >+- sudo sed -i "s/^# ${CHROMIUM_LOCALE}/${CHROMIUM_LOCALE}/" ${LOCALE_GEN} >+- done >+- # Regenerating locales can take a while, so only do it if we need to. >+- if (echo "${OLD_LOCALE_GEN}" | cmp -s ${LOCALE_GEN}); then >+- echo "Locales already up-to-date." >++ echo "N.B. the code for installing 32bit libraries on a 64bit" >++ echo " system is no longer actively maintained and might" >++ echo " not work with modern versions of Ubuntu or Debian." >++ echo >++ >++ # Standard 32bit compatibility libraries >++ echo "First, installing the limited existing 32-bit support..." >++ cmp_list="ia32-libs lib32asound2-dev lib32stdc++6 lib32z1 >++ lib32z1-dev libc6-dev-i386 libc6-i386 g++-multilib" >++ if [ -n "`apt-cache search lib32readline-gplv2-dev 2>/dev/null`" ]; then >++ cmp_list="${cmp_list} lib32readline-gplv2-dev" >+ else >+- sudo locale-gen >++ cmp_list="${cmp_list} lib32readline5-dev" >+ fi >+-else >+- for CHROMIUM_LOCALE in ${CHROMIUM_LOCALES}; do >+- sudo locale-gen ${CHROMIUM_LOCALE} >++ sudo apt-get install ${do_quietly-} $cmp_list >++ >++ tmp=/tmp/install-32bit.$$ >++ trap 'rm -rf "${tmp}"' EXIT INT TERM QUIT >++ mkdir -p "${tmp}/apt/lists/partial" "${tmp}/cache" "${tmp}/partial" >++ touch "${tmp}/status" >++ >++ [ -r /etc/apt/apt.conf ] && cp /etc/apt/apt.conf "${tmp}/apt/" >++ cat >>"${tmp}/apt/apt.conf" <<EOF >++ Apt::Architecture "i386"; >++ Dir::Cache "${tmp}/cache"; >++ Dir::Cache::Archives "${tmp}/"; >++ Dir::State::Lists "${tmp}/apt/lists/"; >++ Dir::State::status "${tmp}/status"; >++EOF >++ >++ # Download 32bit packages >++ echo "Computing list of available 32bit packages..." >++ sudo apt-get -c="${tmp}/apt/apt.conf" update >++ >++ echo "Downloading available 32bit packages..." >++ sudo apt-get -c="${tmp}/apt/apt.conf" \ >++ --yes --download-only --force-yes --reinstall install \ >++ ${lib_list} ${dbg_list} >++ >++ # Open packages, remove everything that is not a library, move the >++ # library to a lib32 directory and package everything as a *.deb file. >++ echo "Repackaging and installing 32bit packages for use on 64bit systems..." >++ for i in ${lib_list} ${dbg_list}; do >++ orig="$(echo "${tmp}/${i}"_*_i386.deb)" >++ compat="$(echo "${orig}" | >++ sed -e 's,\(_[^_/]*_\)i386\(.deb\),-ia32\1amd64\2,')" >++ rm -rf "${tmp}/staging" >++ msg="$(fakeroot -u sh -exc ' >++ # Unpack 32bit Debian archive >++ umask 022 >++ mkdir -p "'"${tmp}"'/staging/dpkg/DEBIAN" >++ cd "'"${tmp}"'/staging" >++ ar x "'${orig}'" >++ tar zCfx dpkg data.tar.gz >++ tar zCfx dpkg/DEBIAN control.tar.gz >++ >++ # Create a posix extended regular expression fragment that will >++ # recognize the includes which have changed. Should be rare, >++ # will almost always be empty. >++ includes=`sed -n -e "s/^[0-9a-z]* //g" \ >++ -e "\,usr/include/,p" dpkg/DEBIAN/md5sums | >++ xargs -n 1 -I FILE /bin/sh -c \ >++ "cmp -s dpkg/FILE /FILE || echo FILE" | >++ tr "\n" "|" | >++ sed -e "s,|$,,"` >++ >++ # If empty, set it to not match anything. >++ test -z "$includes" && includes="^//" >++ >++ # Turn the conflicts into an extended RE for removal from the >++ # Provides line. >++ conflicts=`sed -n -e "/Conflicts/s/Conflicts: *//;T;s/, */|/g;p" \ >++ dpkg/DEBIAN/control` >++ >++ # Rename package, change architecture, remove conflicts and dependencies >++ sed -r -i \ >++ -e "/Package/s/$/-ia32/" \ >++ -e "/Architecture/s/:.*$/: amd64/" \ >++ -e "/Depends/s/:.*/: ia32-libs/" \ >++ -e "/Provides/s/($conflicts)(, *)?//g;T1;s/, *$//;:1" \ >++ -e "/Recommends/d" \ >++ -e "/Conflicts/d" \ >++ dpkg/DEBIAN/control >++ >++ # Only keep files that live in "lib" directories or the includes >++ # that have changed. >++ sed -r -i \ >++ -e "/\/lib64\//d" -e "/\/.?bin\//d" \ >++ -e "\,$includes,s,[ /]include/,&32/,g;s,include/32/,include32/,g" \ >++ -e "s, lib/, lib32/,g" \ >++ -e "s,/lib/,/lib32/,g" \ >++ -e "t;d" \ >++ -e "\,^/usr/lib32/debug\(.*/lib32\),s,^/usr/lib32/debug,/usr/lib/debug," \ >++ dpkg/DEBIAN/md5sums >++ >++ # Re-run ldconfig after installation/removal >++ { echo "#!/bin/sh"; echo "[ \"x\$1\" = xconfigure ]&&ldconfig||:"; } \ >++ >dpkg/DEBIAN/postinst >++ { echo "#!/bin/sh"; echo "[ \"x\$1\" = xremove ]&&ldconfig||:"; } \ >++ >dpkg/DEBIAN/postrm >++ chmod 755 dpkg/DEBIAN/postinst dpkg/DEBIAN/postrm >++ >++ # Remove any other control files >++ find dpkg/DEBIAN -mindepth 1 "(" -name control -o -name md5sums -o \ >++ -name postinst -o -name postrm ")" -o -print | >++ xargs -r rm -rf >++ >++ # Remove any files/dirs that live outside of "lib" directories, >++ # or are not in our list of changed includes. >++ find dpkg -mindepth 1 -regextype posix-extended \ >++ "(" -name DEBIAN -o -name lib -o -regex "dpkg/($includes)" ")" \ >++ -prune -o -print | tac | >++ xargs -r -n 1 sh -c "rm \$0 2>/dev/null || rmdir \$0 2>/dev/null || : " >++ find dpkg -name lib64 -o -name bin -o -name "?bin" | >++ tac | xargs -r rm -rf >++ >++ # Remove any symbolic links that were broken by the above steps. >++ find -L dpkg -type l -print | tac | xargs -r rm -rf >++ >++ # Rename lib to lib32, but keep debug symbols in /usr/lib/debug/usr/lib32 >++ # That is where gdb looks for them. >++ find dpkg -type d -o -path "*/lib/*" -print | >++ xargs -r -n 1 sh -c " >++ i=\$(echo \"\${0}\" | >++ sed -e s,/lib/,/lib32/,g \ >++ -e s,/usr/lib32/debug\\\\\(.*/lib32\\\\\),/usr/lib/debug\\\\1,); >++ mkdir -p \"\${i%/*}\"; >++ mv \"\${0}\" \"\${i}\"" >++ >++ # Rename include to include32. >++ [ -d "dpkg/usr/include" ] && mv "dpkg/usr/include" "dpkg/usr/include32" >++ >++ # Prune any empty directories >++ find dpkg -type d | tac | xargs -r -n 1 rmdir 2>/dev/null || : >++ >++ # Create our own Debian package >++ cd .. >++ dpkg --build staging/dpkg .' 2>&1)" >++ compat="$(eval echo $(echo "${compat}" | >++ sed -e 's,_[^_/]*_amd64.deb,_*_amd64.deb,'))" >++ [ -r "${compat}" ] || { >++ echo "${msg}" >&2 >++ echo "Failed to build new Debian archive!" >&2 >++ exit 1 >++ } >++ >++ msg="$(sudo dpkg -i "${compat}" 2>&1)" && { >++ echo "Installed ${compat##*/}" >++ } || { >++ # echo "${msg}" >&2 >++ echo "Skipped ${compat##*/}" >++ } >++ done >++ >++ # Add symbolic links for developing 32bit code >++ echo "Adding missing symbolic links, enabling 32bit code development..." >++ for i in $(find /lib32 /usr/lib32 -maxdepth 1 -name \*.so.\* | >++ sed -e 's/[.]so[.][0-9].*/.so/' | >++ sort -u); do >++ [ "x${i##*/}" = "xld-linux.so" ] && continue >++ [ -r "$i" ] && continue >++ j="$(ls "$i."* | sed -e 's/.*[.]so[.]\([^.]*\)$/\1/;t;d' | >++ sort -n | tail -n 1)" >++ [ -r "$i.$j" ] || continue >++ sudo ln -s "${i##*/}.$j" "$i" >+ done >+ fi >+diff --git media/webrtc/trunk/build/install-chroot.sh media/webrtc/trunk/build/install-chroot.sh >+index 99451ed7ea49..d2c06fc39adc 100755 >+--- media/webrtc/trunk/build/install-chroot.sh >++++ media/webrtc/trunk/build/install-chroot.sh >+@@ -12,7 +12,7 @@ >+ >+ # Older Debian based systems had both "admin" and "adm" groups, with "admin" >+ # apparently being used in more places. Newer distributions have standardized >+-# on just the "adm" group. Check /etc/group for the preferred name of the >++# on just the "adm" group. Check /etc/group for the prefered name of the >+ # administrator group. >+ admin=$(grep '^admin:' /etc/group >&/dev/null && echo admin || echo adm) >+ >+@@ -223,8 +223,7 @@ target="${distname}${arch}" >+ d|D) sudo rm -rf "/var/lib/chroot/${target}" \ >+ "/usr/local/bin/${target%bit}" \ >+ "/etc/schroot/mount-${target}" \ >+- "/etc/schroot/script-${target}" \ >+- "/etc/schroot/${target}" >++ "/etc/schroot/script-${target}" >+ sudo sed -ni '/^[[]'"${target%bit}"']$/,${ >+ :1;n;/^[[]/b2;b1;:2;p;n;b2};p' \ >+ "/etc/schroot/schroot.conf" >+@@ -350,41 +349,13 @@ grep -qs ubuntu.com /usr/share/debootstrap/scripts/"${distname}" && >+ if [ -z "${chroot_groups}" ]; then >+ chroot_groups="${admin},$(id -gn)" >+ fi >+- >+-if [ -d '/etc/schroot/default' ]; then >+- new_version=1 >+- fstab="/etc/schroot/${target}/fstab" >+-else >+- new_version=0 >+- fstab="/etc/schroot/mount-${target}" >+-fi >+- >+-if [ "$new_version" = "1" ]; then >+- sudo cp -ar /etc/schroot/default /etc/schroot/${target} >+- >+- sudo sh -c 'cat >>/etc/schroot/schroot.conf' <<EOF >+-[${target%bit}] >+-description=${brand} ${distname} ${arch} >+-type=directory >+-directory=/var/lib/chroot/${target} >+-users=root >+-groups=${chroot_groups} >+-root-groups=${chroot_groups} >+-personality=linux$([ "${arch}" != 64bit ] && echo 32) >+-profile=${target} >+- >+-EOF >+- [ -n "${bind_mounts}" -a "${bind_mounts}" != "NONE" ] && >+- printf "${bind_mounts}" | >+- sudo sh -c "cat >>${fstab}" >+-else >+- # Older versions of schroot wanted a "priority=" line, whereas recent >+- # versions deprecate "priority=" and warn if they see it. We don't have >+- # a good feature test, but scanning for the string "priority=" in the >+- # existing "schroot.conf" file is a good indication of what to do. >+- priority=$(grep -qs 'priority=' /etc/schroot/schroot.conf && >++# Older versions of schroot wanted a "priority=" line, whereas recent >++# versions deprecate "priority=" and warn if they see it. We don't have >++# a good feature test, but scanning for the string "priority=" in the >++# existing "schroot.conf" file is a good indication of what to do. >++priority=$(grep -qs 'priority=' /etc/schroot/schroot.conf && >+ echo 'priority=3' || :) >+- sudo sh -c 'cat >>/etc/schroot/schroot.conf' <<EOF >++sudo sh -c 'cat >>/etc/schroot/schroot.conf' <<EOF >+ [${target%bit}] >+ description=${brand} ${distname} ${arch} >+ type=directory >+@@ -398,43 +369,38 @@ ${priority} >+ >+ EOF >+ >+- # Set up a list of mount points that is specific to this >+- # chroot environment. >+- sed '/^FSTAB=/s,"[^"]*","'"${fstab}"'",' \ >+- /etc/schroot/script-defaults | >+- sudo sh -c 'cat >/etc/schroot/script-'"${target}" >+- sed '\,^/home[/[:space:]],s/\([,[:space:]]\)bind[[:space:]]/\1rbind /' \ >+- /etc/schroot/mount-defaults | >+- sudo sh -c "cat > ${fstab}" >+-fi >++# Set up a list of mount points that is specific to this >++# chroot environment. >++sed '/^FSTAB=/s,"[^"]*","/etc/schroot/mount-'"${target}"'",' \ >++ /etc/schroot/script-defaults | >++ sudo sh -c 'cat >/etc/schroot/script-'"${target}" >++sed '\,^/home[/[:space:]],s/\([,[:space:]]\)bind[[:space:]]/\1rbind /' \ >++ /etc/schroot/mount-defaults | >++ sudo sh -c 'cat > /etc/schroot/mount-'"${target}" >+ >+ # Add the extra mount points that the user told us about >+ [ -n "${bind_mounts}" -a "${bind_mounts}" != "NONE" ] && >+ printf "${bind_mounts}" | >+- sudo sh -c 'cat >>'"${fstab}" >++ sudo sh -c 'cat >>/etc/schroot/mount-'"${target}" >+ >+ # If this system has a "/media" mountpoint, import it into the chroot >+ # environment. Most modern distributions use this mount point to >+ # automatically mount devices such as CDROMs, USB sticks, etc... >+ if [ -d /media ] && >+- ! grep -qs '^/media' "${fstab}"; then >++ ! grep -qs '^/media' /etc/schroot/mount-"${target}"; then >+ echo '/media /media none rw,rbind 0 0' | >+- sudo sh -c 'cat >>'"${fstab}" >++ sudo sh -c 'cat >>/etc/schroot/mount-'"${target}" >+ fi >+ >+-# Share /dev/shm, /run and /run/shm. >+-grep -qs '^/dev/shm' "${fstab}" || >++# Share /dev/shm and possibly /run/shm >++grep -qs '^/dev/shm' /etc/schroot/mount-"${target}" || >+ echo '/dev/shm /dev/shm none rw,bind 0 0' | >+- sudo sh -c 'cat >>'"${fstab}" >+-if [ ! -d "/var/lib/chroot/${target}/run" ] && >+- ! grep -qs '^/run' "${fstab}"; then >+- echo '/run /run none rw,bind 0 0' | >+- sudo sh -c 'cat >>'"${fstab}" >+-fi >+-if ! grep -qs '^/run/shm' "${fstab}"; then >++ sudo sh -c 'cat >>/etc/schroot/mount-'"${target}" >++if [ -d "/var/lib/chroot/${target}/run" ] && >++ ! grep -qs '^/run/shm' /etc/schroot/mount-"${target}"; then >+ { [ -d /run ] && echo '/run/shm /run/shm none rw,bind 0 0' || >+ echo '/dev/shm /run/shm none rw,bind 0 0'; } | >+- sudo sh -c 'cat >>'"${fstab}" >++ sudo sh -c 'cat >>/etc/schroot/mount-'"${target}" >+ fi >+ >+ # Set up a special directory that changes contents depending on the target >+@@ -442,7 +408,7 @@ fi >+ d="$(readlink -f "${HOME}/chroot" 2>/dev/null || echo "${HOME}/chroot")" >+ s="${d}/.${target}" >+ echo "${s} ${d} none rw,bind 0 0" | >+- sudo sh -c 'cat >>'"${target}" >++ sudo sh -c 'cat >>/etc/schroot/mount-'"${target}" >+ mkdir -p "${s}" >+ >+ # Install a helper script to launch commands in the chroot >+@@ -527,69 +493,27 @@ while [ "$#" -ne 0 ]; do >+ esac >+ done >+ >+-# Start a new chroot session and keep track of the session id. We inject this >+-# id into all processes that run inside the chroot. Unless they go out of their >+-# way to clear their environment, we can then later identify our child and >+-# grand-child processes by scanning their environment. >+ session="$(schroot -c "${chroot}" -b)" >+-export CHROOT_SESSION_ID="${session}" >+- >+-# Set GOMA_TMP_DIR for better handling of goma inside chroot. >+-export GOMA_TMP_DIR="/tmp/goma_tmp_$CHROOT_SESSION_ID" >+-mkdir -p "$GOMA_TMP_DIR" >+ >+ if [ $# -eq 0 ]; then >+- # Run an interactive shell session >+ schroot -c "${session}" -r -p >+ else >+- # Run a command inside of the chroot environment >+ p="$1"; shift >+ schroot -c "${session}" -r -p "$p" -- "$@" >+ fi >+ rc=$? >+ >+-# Compute the inode of the root directory inside of the chroot environment. >+ i=$(schroot -c "${session}" -r -p ls -- -id /proc/self/root/. | >+ awk '{ print $1 }') 2>/dev/null >+-other_pids= >+ while [ -n "$i" ]; do >+- # Identify processes by the inode number of their root directory. Then >+- # remove all processes that we know belong to other sessions. We use >+- # "sort | uniq -u" to do what amounts to a "set substraction operation". >+- pids=$({ ls -id1 /proc/*/root/. 2>/dev/null | >++ pids=$(ls -id1 /proc/*/root/. 2>/dev/null | >+ sed -e 's,^[^0-9]*'$i'.*/\([1-9][0-9]*\)/.*$,\1, >+ t >+- d'; >+- echo "${other_pids}"; >+- echo "${other_pids}"; } | sort | uniq -u) >/dev/null 2>&1 >+- # Kill all processes that are still left running in the session. This is >+- # typically an assortment of daemon processes that were started >+- # automatically. They result in us being unable to tear down the session >+- # cleanly. >+- [ -z "${pids}" ] && break >+- for j in $pids; do >+- # Unfortunately, the way that schroot sets up sessions has the >+- # side-effect of being unable to tell one session apart from another. >+- # This can result in us attempting to kill processes in other sessions. >+- # We make a best-effort to avoid doing so. >+- k="$( ( xargs -0 -n1 </proc/$j/environ ) 2>/dev/null | >+- sed 's/^CHROOT_SESSION_ID=/x/;t1;d;:1;q')" >+- if [ -n "${k}" -a "${k#x}" != "${session}" ]; then >+- other_pids="${other_pids} >+-${j}" >+- continue >+- fi >+- kill -9 $pids >+- done >++ d') >/dev/null 2>&1 >++ [ -z "$pids" ] && break >++ kill -9 $pids >+ done >+-# End the chroot session. This should clean up all temporary files. But if we >+-# earlier failed to terminate all (daemon) processes inside of the session, >+-# deleting the session could fail. When that happens, the user has to manually >+-# clean up the stale files by invoking us with "--clean" after having killed >+-# all running processes. >+ schroot -c "${session}" -e >+-# Since no goma processes are running, we can remove goma directory. >+-rm -rf "$GOMA_TMP_DIR" >+ exit $rc >+ EOF >+ sudo chown root:root /usr/local/bin/"${target%bit}" >+@@ -659,12 +583,9 @@ sudo "/usr/local/bin/${target%bit}" dpkg --assert-multi-arch >&/dev/null && >+ sudo sed -i 's/ / [arch=amd64,i386] /' \ >+ "/var/lib/chroot/${target}/etc/apt/sources.list" >+ [ -d /var/lib/chroot/${target}/etc/dpkg/dpkg.cfg.d/ ] && >+- sudo "/usr/local/bin/${target%bit}" dpkg --add-architecture \ >+- $([ "${arch}" = "32bit" ] && echo amd64 || echo i386) >&/dev/null || >+- echo foreign-architecture \ >+- $([ "${arch}" = "32bit" ] && echo amd64 || echo i386) | >+- sudo sh -c \ >+- "cat >'/var/lib/chroot/${target}/etc/dpkg/dpkg.cfg.d/multiarch'" >++ echo foreign-architecture \ >++ $([ "${arch}" = "32bit" ] && echo amd64 || echo i386) | >++ sudo sh -c "cat >'/var/lib/chroot/${target}/etc/dpkg/dpkg.cfg.d/multiarch'" >+ } >+ >+ # Configure "sudo" package >+@@ -675,7 +596,7 @@ sudo "/usr/local/bin/${target%bit}" /bin/sh -c ' >+ # Install a few more commonly used packages >+ sudo "/usr/local/bin/${target%bit}" apt-get -y install \ >+ autoconf automake1.9 dpkg-dev g++-multilib gcc-multilib gdb less libtool \ >+- lsof strace >++ strace >+ >+ # If running a 32bit environment on a 64bit machine, install a few binaries >+ # as 64bit. This is only done automatically if the chroot distro is the same as >+@@ -689,7 +610,7 @@ if [ "${copy_64}" = "y" -o \ >+ readlinepkg=$(sudo "/usr/local/bin/${target%bit}" sh -c \ >+ 'apt-cache search "lib64readline.\$" | sort | tail -n 1 | cut -d " " -f 1') >+ sudo "/usr/local/bin/${target%bit}" apt-get -y install \ >+- lib64expat1 lib64ncurses5 ${readlinepkg} lib64z1 lib64stdc++6 >++ lib64expat1 lib64ncurses5 ${readlinepkg} lib64z1 >+ dep= >+ for i in binutils gdb; do >+ [ -d /usr/share/doc/"$i" ] || dep="$dep $i" >+@@ -747,7 +668,7 @@ if [ -x "${script}" ]; then >+ # installing the Chrome build depencies. This prevents the chroot >+ # session from being closed. So, we always try to shut down any running >+ # instance of dbus and rsyslog. >+- sudo /usr/local/bin/"${target%bit}" sh -c "${script}; >++ sudo /usr/local/bin/"${target%bit}" sh -c "${script} --no-lib32; >+ rc=$?; >+ /etc/init.d/cron stop >/dev/null 2>&1 || :; >+ /etc/init.d/rsyslog stop >/dev/null 2>&1 || :; >+@@ -848,7 +769,7 @@ if [ ! -h "${HOME}/chroot" ] && >+ fi >+ >+ # Clean up package files >+-sudo schroot -c "${target%bit}" -p -- apt-get clean >++sudo schroot -c /usr/local/bin/"${target%bit}" -p -- apt-get clean >+ sudo apt-get clean >+ >+ trap '' INT TERM QUIT HUP >+diff --git media/webrtc/trunk/build/linux/chrome_linux.croc media/webrtc/trunk/build/linux/chrome_linux.croc >+new file mode 100644 >+index 000000000000..f4003060f69c >+--- /dev/null >++++ media/webrtc/trunk/build/linux/chrome_linux.croc >+@@ -0,0 +1,29 @@ >++# -*- python -*- >++# Crocodile config file for Chromium linux >++ >++# TODO(jhawkins): We'll need to add a chromeos.croc once we get a coverage bot >++# for that platform. >++ >++{ >++ # List of rules, applied in order >++ 'rules' : [ >++ # Specify inclusions before exclusions, since rules are in order. >++ >++ # Don't include non-Linux platform dirs >++ { >++ 'regexp' : '.*/(chromeos|views)/', >++ 'include' : 0, >++ }, >++ # Don't include chromeos, windows, or mac specific files >++ { >++ 'regexp' : '.*(_|/)(chromeos|mac|win|views)(\\.|_)', >++ 'include' : 0, >++ }, >++ >++ # Groups >++ { >++ 'regexp' : '.*_test_linux\\.', >++ 'group' : 'test', >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/build/linux/dump_app_syms media/webrtc/trunk/build/linux/dump_app_syms >+new file mode 100755 >+index 000000000000..632bcc76a954 >+--- /dev/null >++++ media/webrtc/trunk/build/linux/dump_app_syms >+@@ -0,0 +1,36 @@ >++#!/bin/sh >++ >++# Copyright (c) 2010 The Chromium Authors. All rights reserved. >++# Use of this source code is governed by a BSD-style license that can be >++# found in the LICENSE file. >++# >++# Helper script to run dump_syms on Chrome Linux executables and strip >++# them if needed. >++ >++set -e >++ >++usage() { >++ echo -n "$0 <dump_syms_exe> <strip_binary> " >&2 >++ echo "<binary_with_symbols> <symbols_output>" >&2 >++} >++ >++ >++if [ $# -ne 4 ]; then >++ usage >++ exit 1 >++fi >++ >++SCRIPTDIR="$(readlink -f "$(dirname "$0")")" >++DUMPSYMS="$1" >++STRIP_BINARY="$2" >++INFILE="$3" >++OUTFILE="$4" >++ >++# Dump the symbols from the given binary. >++if [ ! -e "$OUTFILE" -o "$INFILE" -nt "$OUTFILE" ]; then >++ "$DUMPSYMS" "$INFILE" > "$OUTFILE" >++fi >++ >++if [ "$STRIP_BINARY" != "0" ]; then >++ strip "$INFILE" >++fi >+diff --git media/webrtc/trunk/build/linux/pkg-config-wrapper media/webrtc/trunk/build/linux/pkg-config-wrapper >+new file mode 100755 >+index 000000000000..c39e5cd3f38c >+--- /dev/null >++++ media/webrtc/trunk/build/linux/pkg-config-wrapper >+@@ -0,0 +1,47 @@ >++#!/bin/bash >++# Copyright (c) 2012 The Chromium Authors. All rights reserved. >++# Use of this source code is governed by a BSD-style license that can be >++# found in the LICENSE file. >++ >++# This program wraps around pkg-config to generate the correct include and >++# library paths when cross-compiling using a sysroot. >++# The assumption is that the sysroot contains the .pc files in usr/lib/pkgconfig >++# and usr/share/pkgconfig (relative to the sysroot) and that they output paths >++# relative to some parent path of the sysroot. >++# This assumption is valid for a range of sysroots, in particular: a >++# LSB-compliant root filesystem mounted at the sysroot, and a board build >++# directory of a Chromium OS chroot. >++ >++root="$1" >++shift >++target_arch="$1" >++shift >++ >++if [ -z "$root" -o -z "$target_arch" ] >++then >++ echo "usage: $0 /path/to/sysroot target_arch [pkg-config-arguments] package" >&2 >++ exit 1 >++fi >++ >++if [ "$target_arch" = "x64" ] >++then >++ libpath="lib64" >++else >++ libpath="lib" >++fi >++ >++rewrite=`dirname $0`/rewrite_dirs.py >++package=${!#} >++ >++config_path=$root/usr/$libpath/pkgconfig:$root/usr/share/pkgconfig >++set -e >++# Some sysroots, like the Chromium OS ones, may generate paths that are not >++# relative to the sysroot. For example, >++# /path/to/chroot/build/x86-generic/usr/lib/pkgconfig/pkg.pc may have all paths >++# relative to /path/to/chroot (i.e. prefix=/build/x86-generic/usr) instead of >++# relative to /path/to/chroot/build/x86-generic (i.e prefix=/usr). >++# To support this correctly, it's necessary to extract the prefix to strip from >++# pkg-config's |prefix| variable. >++prefix=`PKG_CONFIG_PATH=$config_path pkg-config --variable=prefix "$package" | sed -e 's|/usr$||'` >++result=`PKG_CONFIG_PATH=$config_path pkg-config "$@"` >++echo "$result"| $rewrite --sysroot "$root" --strip-prefix "$prefix" >+diff --git media/webrtc/trunk/build/linux/python_arch.sh media/webrtc/trunk/build/linux/python_arch.sh >+new file mode 100755 >+index 000000000000..01e41d066e2a >+--- /dev/null >++++ media/webrtc/trunk/build/linux/python_arch.sh >+@@ -0,0 +1,42 @@ >++#!/bin/sh >++# Copyright (c) 2011 The Chromium Authors. All rights reserved. >++# Use of this source code is governed by a BSD-style license that can be >++# found in the LICENSE file. >++ >++# This figures out the architecture of the version of Python we are building >++# pyautolib against. >++# >++# python_arch.sh /usr/lib/libpython2.5.so.1.0 >++# python_arch.sh /path/to/sysroot/usr/lib/libpython2.4.so.1.0 >++# >++ >++python=$(readlink -f "$1") >++if [ ! -r "$python" ]; then >++ echo unknown >++ exit 0 >++fi >++file_out=$(file "$python") >++if [ $? -ne 0 ]; then >++ echo unknown >++ exit 0 >++fi >++ >++echo $file_out | grep -qs "ARM" >++if [ $? -eq 0 ]; then >++ echo arm >++ exit 0 >++fi >++ >++echo $file_out | grep -qs "x86-64" >++if [ $? -eq 0 ]; then >++ echo x64 >++ exit 0 >++fi >++ >++echo $file_out | grep -qs "Intel 80386" >++if [ $? -eq 0 ]; then >++ echo ia32 >++ exit 0 >++fi >++ >++exit 1 >+diff --git media/webrtc/trunk/build/linux/rewrite_dirs.py media/webrtc/trunk/build/linux/rewrite_dirs.py >+new file mode 100755 >+index 000000000000..30f22f0cd617 >+--- /dev/null >++++ media/webrtc/trunk/build/linux/rewrite_dirs.py >+@@ -0,0 +1,71 @@ >++#!/usr/bin/env python >++# Copyright (c) 2011 The Chromium Authors. All rights reserved. >++# Use of this source code is governed by a BSD-style license that can be >++# found in the LICENSE file. >++ >++"""Rewrites paths in -I, -L and other option to be relative to a sysroot.""" >++ >++import sys >++import os >++import optparse >++ >++REWRITE_PREFIX = ['-I', >++ '-idirafter', >++ '-imacros', >++ '-imultilib', >++ '-include', >++ '-iprefix', >++ '-iquote', >++ '-isystem', >++ '-L'] >++ >++def RewritePath(path, opts): >++ """Rewrites a path by stripping the prefix and prepending the sysroot.""" >++ sysroot = opts.sysroot >++ prefix = opts.strip_prefix >++ if os.path.isabs(path) and not path.startswith(sysroot): >++ if path.startswith(prefix): >++ path = path[len(prefix):] >++ path = path.lstrip('/') >++ return os.path.join(sysroot, path) >++ else: >++ return path >++ >++ >++def RewriteLine(line, opts): >++ """Rewrites all the paths in recognized options.""" >++ args = line.split() >++ count = len(args) >++ i = 0 >++ while i < count: >++ for prefix in REWRITE_PREFIX: >++ # The option can be either in the form "-I /path/to/dir" or >++ # "-I/path/to/dir" so handle both. >++ if args[i] == prefix: >++ i += 1 >++ try: >++ args[i] = RewritePath(args[i], opts) >++ except IndexError: >++ sys.stderr.write('Missing argument following %s\n' % prefix) >++ break >++ elif args[i].startswith(prefix): >++ args[i] = prefix + RewritePath(args[i][len(prefix):], opts) >++ i += 1 >++ >++ return ' '.join(args) >++ >++ >++def main(argv): >++ parser = optparse.OptionParser() >++ parser.add_option('-s', '--sysroot', default='/', help='sysroot to prepend') >++ parser.add_option('-p', '--strip-prefix', default='', help='prefix to strip') >++ opts, args = parser.parse_args(argv[1:]) >++ >++ for line in sys.stdin.readlines(): >++ line = RewriteLine(line.strip(), opts) >++ print line >++ return 0 >++ >++ >++if __name__ == '__main__': >++ sys.exit(main(sys.argv)) >+diff --git media/webrtc/trunk/build/linux/system.gyp media/webrtc/trunk/build/linux/system.gyp >+new file mode 100644 >+index 000000000000..e36e558a8bdd >+--- /dev/null >++++ media/webrtc/trunk/build/linux/system.gyp >+@@ -0,0 +1,637 @@ >++# Copyright (c) 2012 The Chromium Authors. All rights reserved. >++# Use of this source code is governed by a BSD-style license that can be >++# found in the LICENSE file. >++ >++{ >++ 'variables': { >++ 'conditions': [ >++ ['sysroot!=""', { >++ 'pkg-config': './pkg-config-wrapper "<(sysroot)" "<(target_arch)"', >++ }, { >++ 'pkg-config': 'pkg-config' >++ }] >++ ], >++ }, >++ 'conditions': [ >++ [ 'os_posix==1 and OS!="mac"', { >++ 'variables': { >++ # We use our own copy of libssl3, although we still need to link against >++ # the rest of NSS. >++ 'use_system_ssl%': 0, >++ }, >++ }, { >++ 'variables': { >++ 'use_system_ssl%': 1, >++ }, >++ }], >++ [ 'chromeos==0', { >++ # Hide GTK and related dependencies for Chrome OS, so they won't get >++ # added back to Chrome OS. Don't try to use GTK on Chrome OS. >++ 'targets': [ >++ { >++ 'target_name': 'gtk', >++ 'type': 'none', >++ 'toolsets': ['host', 'target'], >++ 'variables': { >++ # gtk requires gmodule, but it does not list it as a dependency >++ # in some misconfigured systems. >++ 'gtk_packages': 'gmodule-2.0 gtk+-2.0 gthread-2.0', >++ }, >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags <(gtk_packages))', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other <(gtk_packages))', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l <(gtk_packages))', >++ ], >++ }, >++ }, { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(pkg-config --cflags <(gtk_packages))', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(pkg-config --libs-only-L --libs-only-other <(gtk_packages))', >++ ], >++ 'libraries': [ >++ '<!@(pkg-config --libs-only-l <(gtk_packages))', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gtkprint', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gtk+-unix-print-2.0)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gtk+-unix-print-2.0)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gtk+-unix-print-2.0)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gdk', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gdk-2.0)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gdk-2.0)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gdk-2.0)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ ], # targets >++ }, { # chromeos==1 >++ 'targets': [ >++ { >++ # TODO(satorux): Remove this once dbus-glib clients are gone. >++ 'target_name': 'dbus-glib', >++ 'type': 'none', >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags dbus-glib-1)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other dbus-glib-1)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l dbus-glib-1)', >++ ], >++ }, >++ }, >++ ], >++ }] >++ ], # conditions >++ 'targets': [ >++ { >++ 'target_name': 'ssl', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['use_openssl==1', { >++ 'dependencies': [ >++ '../../third_party/openssl/openssl.gyp:openssl', >++ ], >++ }], >++ ['use_openssl==0 and use_system_ssl==0', { >++ 'dependencies': [ >++ '../../net/third_party/nss/ssl.gyp:libssl', >++ '../../third_party/zlib/zlib.gyp:zlib', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs+': [ >++ # We need for our local copies of the libssl3 headers to come >++ # before other includes, as we are shadowing system headers. >++ '<(DEPTH)/net/third_party/nss/ssl', >++ ], >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags nss)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l nss | sed -e "s/-lssl3//")', >++ ], >++ }, >++ }], >++ ['use_openssl==0 and use_system_ssl==1', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags nss)', >++ ], >++ 'defines': [ >++ 'USE_SYSTEM_SSL', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other nss)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l nss)', >++ ], >++ }, >++ }], >++ ] >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'freetype2', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags freetype2)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other freetype2)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l freetype2)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'fontconfig', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags fontconfig)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other fontconfig)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l fontconfig)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gconf', >++ 'type': 'none', >++ 'conditions': [ >++ ['use_gconf==1 and _toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gconf-2.0)', >++ ], >++ 'defines': [ >++ 'USE_GCONF', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gconf-2.0)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gconf-2.0)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gio', >++ 'type': 'none', >++ 'conditions': [ >++ ['use_gio==1 and _toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gio-2.0)', >++ ], >++ 'defines': [ >++ 'USE_GIO', >++ ], >++ 'conditions': [ >++ ['linux_link_gsettings==0', { >++ 'defines': ['DLOPEN_GSETTINGS'], >++ }], >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gio-2.0)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gio-2.0)', >++ ], >++ 'conditions': [ >++ ['linux_link_gsettings==0 and OS=="linux"', { >++ 'libraries': [ >++ '-ldl', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'x11', >++ 'type': 'none', >++ 'toolsets': ['host', 'target'], >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags x11)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other x11 xi)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l x11 xi)', >++ ], >++ }, >++ }, { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(pkg-config --cflags x11)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(pkg-config --libs-only-L --libs-only-other x11 xi)', >++ ], >++ 'libraries': [ >++ '<!@(pkg-config --libs-only-l x11 xi)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'xext', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags xext)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other xext)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l xext)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'xfixes', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags xfixes)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other xfixes)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l xfixes)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'libgcrypt', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target" and use_cups==1', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(libgcrypt-config --cflags)', >++ ], >++ }, >++ 'link_settings': { >++ 'libraries': [ >++ '<!@(libgcrypt-config --libs)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'selinux', >++ 'type': 'none', >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'link_settings': { >++ 'libraries': [ >++ '-lselinux', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gnome_keyring', >++ 'type': 'none', >++ 'conditions': [ >++ ['use_gnome_keyring==1', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gnome-keyring-1)', >++ ], >++ 'defines': [ >++ 'USE_GNOME_KEYRING', >++ ], >++ 'conditions': [ >++ ['linux_link_gnome_keyring==0', { >++ 'defines': ['DLOPEN_GNOME_KEYRING'], >++ }], >++ ], >++ }, >++ 'conditions': [ >++ ['linux_link_gnome_keyring!=0', { >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)', >++ ], >++ }, >++ }, { >++ 'conditions': [ >++ ['OS=="linux"', { >++ 'link_settings': { >++ 'libraries': [ >++ '-ldl', >++ ], >++ }, >++ }], >++ ], >++ }], >++ ], >++ }], >++ ], >++ }, >++ { >++ # The unit tests use a few convenience functions from the GNOME >++ # Keyring library directly. We ignore linux_link_gnome_keyring and >++ # link directly in this version of the target to allow this. >++ # *** Do not use this target in the main binary! *** >++ 'target_name': 'gnome_keyring_direct', >++ 'type': 'none', >++ 'conditions': [ >++ ['use_gnome_keyring==1', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags gnome-keyring-1)', >++ ], >++ 'defines': [ >++ 'USE_GNOME_KEYRING', >++ ], >++ 'conditions': [ >++ ['linux_link_gnome_keyring==0', { >++ 'defines': ['DLOPEN_GNOME_KEYRING'], >++ }], >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other gnome-keyring-1)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l gnome-keyring-1)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'dbus', >++ 'type': 'none', >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags dbus-1)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other dbus-1)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l dbus-1)', >++ ], >++ }, >++ }, >++ { >++ 'target_name': 'glib', >++ 'type': 'none', >++ 'toolsets': ['host', 'target'], >++ 'variables': { >++ 'glib_packages': 'glib-2.0 gmodule-2.0 gobject-2.0 gthread-2.0', >++ }, >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags <(glib_packages))', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other <(glib_packages))', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l <(glib_packages))', >++ ], >++ }, >++ }, { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(pkg-config --cflags <(glib_packages))', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(pkg-config --libs-only-L --libs-only-other <(glib_packages))', >++ ], >++ 'libraries': [ >++ '<!@(pkg-config --libs-only-l <(glib_packages))', >++ ], >++ }, >++ }], >++ ['chromeos==1', { >++ 'link_settings': { >++ 'libraries': [ '-lXtst' ] >++ } >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'pangocairo', >++ 'type': 'none', >++ 'toolsets': ['host', 'target'], >++ 'conditions': [ >++ ['_toolset=="target"', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags pangocairo)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other pangocairo)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l pangocairo)', >++ ], >++ }, >++ }, { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(pkg-config --cflags pangocairo)', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(pkg-config --libs-only-L --libs-only-other pangocairo)', >++ ], >++ 'libraries': [ >++ '<!@(pkg-config --libs-only-l pangocairo)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'libresolv', >++ 'type': 'none', >++ 'link_settings': { >++ 'libraries': [ >++ '-lresolv', >++ ], >++ }, >++ }, >++ { >++ 'target_name': 'ibus', >++ 'type': 'none', >++ 'conditions': [ >++ ['use_ibus==1', { >++ 'variables': { >++ 'ibus_min_version': '1.3.99.20110425', >++ }, >++ 'direct_dependent_settings': { >++ 'defines': ['HAVE_IBUS=1'], >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags "ibus-1.0 >= <(ibus_min_version)")', >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other "ibus-1.0 >= <(ibus_min_version)")', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l "ibus-1.0 >= <(ibus_min_version)")', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'udev', >++ 'type': 'none', >++ 'conditions': [ >++ # libudev is not available on *BSD >++ ['_toolset=="target" and os_bsd!=1', { >++ 'direct_dependent_settings': { >++ 'cflags': [ >++ '<!@(<(pkg-config) --cflags libudev)' >++ ], >++ }, >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(<(pkg-config) --libs-only-L --libs-only-other libudev)', >++ ], >++ 'libraries': [ >++ '<!@(<(pkg-config) --libs-only-l libudev)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/build/mac/OWNERS media/webrtc/trunk/build/mac/OWNERS >+index a2d7cc837d70..c56e89dd1235 100644 >+--- media/webrtc/trunk/build/mac/OWNERS >++++ media/webrtc/trunk/build/mac/OWNERS >+@@ -1,4 +1,2 @@ >+ mark@chromium.org >+-rsesek@chromium.org >+- >+-# COMPONENT: Build >++thomasvl@chromium.org >+diff --git media/webrtc/trunk/build/mac/find_sdk.py media/webrtc/trunk/build/mac/find_sdk.py >+index 7217093c3ebe..3e90dd95bb7a 100755 >+--- media/webrtc/trunk/build/mac/find_sdk.py >++++ media/webrtc/trunk/build/mac/find_sdk.py >+@@ -3,19 +3,18 @@ >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+ >+-"""Prints the lowest locally available SDK version greater than or equal to a >+-given minimum sdk version to standard output. If --developer_dir is passed, then >+-the script will use the Xcode toolchain located at DEVELOPER_DIR. >+- >+-Usage: >+- python find_sdk.py [--developer_dir DEVELOPER_DIR] 10.6 # Ignores SDKs < 10.6 >+-""" >+- >+ import os >+ import re >+ import subprocess >+ import sys >+ >++"""Prints the lowest locally available SDK version greater than or equal to a >++given minimum sdk version to standard output. >++ >++Usage: >++ python find_sdk.py 10.6 # Ignores SDKs < 10.6 >++""" >++ >+ from optparse import OptionParser >+ >+ >+@@ -32,64 +31,54 @@ def main(): >+ parser.add_option("--sdk_path", >+ action="store", type="string", dest="sdk_path", default="", >+ help="user-specified SDK path; bypasses verification") >+- parser.add_option("--print_sdk_path", >+- action="store_true", dest="print_sdk_path", default=False, >+- help="Additionaly print the path the SDK (appears first).") >+- parser.add_option("--developer_dir", help='Path to Xcode.') >+- options, args = parser.parse_args() >+- if len(args) != 1: >+- parser.error('Please specify a minimum SDK version') >++ (options, args) = parser.parse_args() >+ min_sdk_version = args[0] >+ >+- if options.developer_dir: >+- os.environ['DEVELOPER_DIR'] = options.developer_dir >+- >+- job = subprocess.Popen(['xcode-select', '-print-path'], >+- stdout=subprocess.PIPE, >+- stderr=subprocess.STDOUT) >+- out, err = job.communicate() >+- if job.returncode != 0: >+- print >> sys.stderr, out >+- print >> sys.stderr, err >+- raise Exception('Error %d running xcode-select' % job.returncode) >+- sdk_dir = os.path.join( >++ if sys.platform == 'darwin': >++ job = subprocess.Popen(['xcode-select', '-print-path'], >++ stdout=subprocess.PIPE, >++ stderr=subprocess.STDOUT) >++ out, err = job.communicate() >++ if job.returncode != 0: >++ print >>sys.stderr, out >++ print >>sys.stderr, err >++ raise Exception(('Error %d running xcode-select, you might have to run ' >++ '|sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer| ' >++ 'if you are using Xcode 4.') % job.returncode) >++ # The Developer folder moved in Xcode 4.3. >++ xcode43_sdk_path = os.path.join( >+ out.rstrip(), 'Platforms/MacOSX.platform/Developer/SDKs') >+- sdks = [re.findall('^MacOSX(10\.\d+)\.sdk$', s) for s in os.listdir(sdk_dir)] >+- sdks = [s[0] for s in sdks if s] # [['10.5'], ['10.6']] => ['10.5', '10.6'] >+- sdks = [s for s in sdks # ['10.5', '10.6'] => ['10.6'] >+- if parse_version(s) >= parse_version(min_sdk_version)] >+- if not sdks: >+- raise Exception('No %s+ SDK found' % min_sdk_version) >+- best_sdk = sorted(sdks, key=parse_version)[0] >++ if os.path.isdir(xcode43_sdk_path): >++ sdk_dir = xcode43_sdk_path >++ else: >++ sdk_dir = os.path.join(out.rstrip(), 'SDKs') >++ sdks = [re.findall('^MacOSX(10\.\d+)\.sdk$', s) for s in os.listdir(sdk_dir)] >++ sdks = [s[0] for s in sdks if s] # [['10.5'], ['10.6']] => ['10.5', '10.6'] >++ sdks = [s for s in sdks # ['10.5', '10.6'] => ['10.6'] >++ if parse_version(s) >= parse_version(min_sdk_version)] >++ if not sdks: >++ raise Exception('No %s+ SDK found' % min_sdk_version) >++ best_sdk = sorted(sdks, key=parse_version)[0] >++ else: >++ best_sdk = "" >+ >+ if options.verify and best_sdk != min_sdk_version and not options.sdk_path: >+- print >> sys.stderr, '' >+- print >> sys.stderr, ' vvvvvvv' >+- print >> sys.stderr, '' >+- print >> sys.stderr, \ >++ print >>sys.stderr, '' >++ print >>sys.stderr, ' vvvvvvv' >++ print >>sys.stderr, '' >++ print >>sys.stderr, \ >+ 'This build requires the %s SDK, but it was not found on your system.' \ >+ % min_sdk_version >+- print >> sys.stderr, \ >++ print >>sys.stderr, \ >+ 'Either install it, or explicitly set mac_sdk in your GYP_DEFINES.' >+- print >> sys.stderr, '' >+- print >> sys.stderr, ' ^^^^^^^' >+- print >> sys.stderr, '' >+- sys.exit(1) >+- >+- if options.print_sdk_path: >+- print subprocess.check_output( >+- ['xcrun', '-sdk', 'macosx' + best_sdk, '--show-sdk-path']).strip() >++ print >>sys.stderr, '' >++ print >>sys.stderr, ' ^^^^^^^' >++ print >>sys.stderr, '' >++ return min_sdk_version >+ >+ return best_sdk >+ >+ >+ if __name__ == '__main__': >+- if sys.platform == 'darwin' and os.environ.get('MOZ_AUTOMATION') != '1': >+- print main() >+- else: >+- # Mozilla builds cross-compile on Linux or install an SDK from tooltool, so >+- # return some fake data to keep the build system happy. These values aren't >+- # used anywhere. >+- print "." >+- print "." >+- sys.exit(0) >++ print main() >++ >+diff --git media/webrtc/trunk/build/mac/tweak_info_plist.py media/webrtc/trunk/build/mac/tweak_info_plist.py >+index 920c62daf99f..9b57e7da01ba 100755 >+--- media/webrtc/trunk/build/mac/tweak_info_plist.py >++++ media/webrtc/trunk/build/mac/tweak_info_plist.py >+@@ -22,19 +22,17 @@ >+ >+ import optparse >+ import os >++from os import environ as env >+ import plistlib >+ import re >+ import subprocess >+ import sys >+ import tempfile >+ >+-TOP = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) >++TOP = os.path.join(env['SRCROOT'], '..') >+ >+- >+-def _ConvertPlist(source_plist, output_plist, fmt): >+- """Convert |source_plist| to |fmt| and save as |output_plist|.""" >+- return subprocess.call( >+- ['plutil', '-convert', fmt, '-o', output_plist, source_plist]) >++sys.path.insert(0, os.path.join(TOP, "build/util")) >++import lastchange >+ >+ >+ def _GetOutput(args): >+@@ -67,68 +65,37 @@ def _RemoveKeys(plist, *keys): >+ pass >+ >+ >+-def _ApplyVersionOverrides(version, keys, overrides, separator='.'): >+- """Applies version overrides. >+- >+- Given a |version| string as "a.b.c.d" (assuming a default separator) with >+- version components named by |keys| then overrides any value that is present >+- in |overrides|. >+- >+- >>> _ApplyVersionOverrides('a.b', ['major', 'minor'], {'minor': 'd'}) >+- 'a.d' >+- """ >+- if not overrides: >+- return version >+- version_values = version.split(separator) >+- for i, (key, value) in enumerate(zip(keys, version_values)): >+- if key in overrides: >+- version_values[i] = overrides[key] >+- return separator.join(version_values) >+- >+- >+-def _GetVersion(version_format, values, overrides=None): >+- """Generates a version number according to |version_format| using the values >+- from |values| or |overrides| if given.""" >+- result = version_format >+- for key in values: >+- if overrides and key in overrides: >+- value = overrides[key] >+- else: >+- value = values[key] >+- result = result.replace('@%s@' % key, value) >+- return result >+- >+- >+-def _AddVersionKeys( >+- plist, version_format_for_key, version=None, overrides=None): >++def _AddVersionKeys(plist): >+ """Adds the product version number into the plist. Returns True on success and >+ False on error. The error will be printed to stderr.""" >+- if not version: >+- # Pull in the Chrome version number. >+- VERSION_TOOL = os.path.join(TOP, 'build/util/version.py') >+- VERSION_FILE = os.path.join(TOP, 'chrome/VERSION') >+- (stdout, retval) = _GetOutput([ >+- VERSION_TOOL, '-f', VERSION_FILE, >+- '-t', '@MAJOR@.@MINOR@.@BUILD@.@PATCH@']) >+- >+- # If the command finished with a non-zero return code, then report the >+- # error up. >+- if retval != 0: >+- return False >+- >+- version = stdout.strip() >+- >+- # Parse the given version number, that should be in MAJOR.MINOR.BUILD.PATCH >+- # format (where each value is a number). Note that str.isdigit() returns >+- # True if the string is composed only of digits (and thus match \d+ regexp). >+- groups = version.split('.') >+- if len(groups) != 4 or not all(element.isdigit() for element in groups): >+- print >>sys.stderr, 'Invalid version string specified: "%s"' % version >++ # Pull in the Chrome version number. >++ VERSION_TOOL = os.path.join(TOP, 'chrome/tools/build/version.py') >++ VERSION_FILE = os.path.join(TOP, 'chrome/VERSION') >++ >++ (stdout, retval1) = _GetOutput([VERSION_TOOL, '-f', VERSION_FILE, '-t', >++ '@MAJOR@.@MINOR@.@BUILD@.@PATCH@']) >++ full_version = stdout.rstrip() >++ >++ (stdout, retval2) = _GetOutput([VERSION_TOOL, '-f', VERSION_FILE, '-t', >++ '@BUILD@.@PATCH@']) >++ bundle_version = stdout.rstrip() >++ >++ # If either of the two version commands finished with non-zero returncode, >++ # report the error up. >++ if retval1 or retval2: >+ return False >+- values = dict(zip(('MAJOR', 'MINOR', 'BUILD', 'PATCH'), groups)) >+ >+- for key in version_format_for_key: >+- plist[key] = _GetVersion(version_format_for_key[key], values, overrides) >++ # Add public version info so "Get Info" works. >++ plist['CFBundleShortVersionString'] = full_version >++ >++ # Honor the 429496.72.95 limit. The maximum comes from splitting 2^32 - 1 >++ # into 6, 2, 2 digits. The limitation was present in Tiger, but it could >++ # have been fixed in later OS release, but hasn't been tested (it's easy >++ # enough to find out with "lsregister -dump). >++ # http://lists.apple.com/archives/carbon-dev/2006/Jun/msg00139.html >++ # BUILD will always be an increasing value, so BUILD_PATH gives us something >++ # unique that meetings what LS wants. >++ plist['CFBundleVersion'] = bundle_version >+ >+ # Return with no error. >+ return True >+@@ -137,16 +104,11 @@ def _AddVersionKeys( >+ def _DoSCMKeys(plist, add_keys): >+ """Adds the SCM information, visible in about:version, to property list. If >+ |add_keys| is True, it will insert the keys, otherwise it will remove them.""" >+- scm_revision = None >++ scm_path, scm_revision = None, None >+ if add_keys: >+- # Pull in the Chrome revision number. >+- VERSION_TOOL = os.path.join(TOP, 'build/util/version.py') >+- LASTCHANGE_FILE = os.path.join(TOP, 'build/util/LASTCHANGE') >+- (stdout, retval) = _GetOutput([VERSION_TOOL, '-f', LASTCHANGE_FILE, '-t', >+- '@LASTCHANGE@']) >+- if retval: >+- return False >+- scm_revision = stdout.rstrip() >++ version_info = lastchange.FetchVersionInfo( >++ default_lastchange=None, directory=TOP) >++ scm_path, scm_revision = version_info.url, version_info.revision >+ >+ # See if the operation failed. >+ _RemoveKeys(plist, 'SCMRevision') >+@@ -155,17 +117,67 @@ def _DoSCMKeys(plist, add_keys): >+ elif add_keys: >+ print >>sys.stderr, 'Could not determine SCM revision. This may be OK.' >+ >+- return True >++ if scm_path != None: >++ plist['SCMPath'] = scm_path >++ else: >++ _RemoveKeys(plist, 'SCMPath') >++ >++ >++def _DoPDFKeys(plist, add_keys): >++ """Adds PDF support to the document types list. If add_keys is True, it will >++ add the type information dictionary. If it is False, it will remove it if >++ present.""" >+ >++ PDF_FILE_EXTENSION = 'pdf' >+ >+-def _AddBreakpadKeys(plist, branding, platform): >++ def __AddPDFKeys(sub_plist): >++ """Writes the keys into a sub-dictionary of the plist.""" >++ sub_plist['CFBundleTypeExtensions'] = [PDF_FILE_EXTENSION] >++ sub_plist['CFBundleTypeIconFile'] = 'document.icns' >++ sub_plist['CFBundleTypeMIMETypes'] = 'application/pdf' >++ sub_plist['CFBundleTypeName'] = 'PDF Document' >++ sub_plist['CFBundleTypeRole'] = 'Viewer' >++ >++ DOCUMENT_TYPES_KEY = 'CFBundleDocumentTypes' >++ >++ # First get the list of document types, creating it if necessary. >++ try: >++ extensions = plist[DOCUMENT_TYPES_KEY] >++ except KeyError: >++ # If this plist doesn't have a type dictionary, create one if set to add the >++ # keys. If not, bail. >++ if not add_keys: >++ return >++ extensions = plist[DOCUMENT_TYPES_KEY] = [] >++ >++ # Loop over each entry in the list, looking for one that handles PDF types. >++ for i, ext in enumerate(extensions): >++ # If an entry for .pdf files is found... >++ if 'CFBundleTypeExtensions' not in ext: >++ continue >++ if PDF_FILE_EXTENSION in ext['CFBundleTypeExtensions']: >++ if add_keys: >++ # Overwrite the existing keys with new ones. >++ __AddPDFKeys(ext) >++ else: >++ # Otherwise, delete the entry entirely. >++ del extensions[i] >++ return >++ >++ # No PDF entry exists. If one needs to be added, do so now. >++ if add_keys: >++ pdf_entry = {} >++ __AddPDFKeys(pdf_entry) >++ extensions.append(pdf_entry) >++ >++ >++def _AddBreakpadKeys(plist, branding): >+ """Adds the Breakpad keys. This must be called AFTER _AddVersionKeys() and >+ also requires the |branding| argument.""" >+ plist['BreakpadReportInterval'] = '3600' # Deliberately a string. >+- plist['BreakpadProduct'] = '%s_%s' % (branding, platform) >++ plist['BreakpadProduct'] = '%s_Mac' % branding >+ plist['BreakpadProductDisplay'] = branding >+- plist['BreakpadURL'] = 'https://clients2.google.com/cr/report' >+- >++ plist['BreakpadVersion'] = plist['CFBundleShortVersionString'] >+ # These are both deliberately strings and not boolean. >+ plist['BreakpadSendAndExit'] = 'YES' >+ plist['BreakpadSkipConfirm'] = 'YES' >+@@ -183,24 +195,6 @@ def _RemoveBreakpadKeys(plist): >+ 'BreakpadSkipConfirm') >+ >+ >+-def _TagSuffixes(): >+- # Keep this list sorted in the order that tag suffix components are to >+- # appear in a tag value. That is to say, it should be sorted per ASCII. >+- components = ('full',) >+- assert tuple(sorted(components)) == components >+- >+- components_len = len(components) >+- combinations = 1 << components_len >+- tag_suffixes = [] >+- for combination in xrange(0, combinations): >+- tag_suffix = '' >+- for component_index in xrange(0, components_len): >+- if combination & (1 << component_index): >+- tag_suffix += '-' + components[component_index] >+- tag_suffixes.append(tag_suffix) >+- return tag_suffixes >+- >+- >+ def _AddKeystoneKeys(plist, bundle_identifier): >+ """Adds the Keystone keys. This must be called AFTER _AddVersionKeys() and >+ also requires the |bundle_identifier| argument (com.example.product).""" >+@@ -208,11 +202,6 @@ def _AddKeystoneKeys(plist, bundle_identifier): >+ plist['KSProductID'] = bundle_identifier >+ plist['KSUpdateURL'] = 'https://tools.google.com/service/update2' >+ >+- _RemoveKeys(plist, 'KSChannelID') >+- for tag_suffix in _TagSuffixes(): >+- if tag_suffix: >+- plist['KSChannelID' + tag_suffix] = tag_suffix >+- >+ >+ def _RemoveKeystoneKeys(plist): >+ """Removes any set Keystone keys.""" >+@@ -221,100 +210,37 @@ def _RemoveKeystoneKeys(plist): >+ 'KSProductID', >+ 'KSUpdateURL') >+ >+- tag_keys = [] >+- for tag_suffix in _TagSuffixes(): >+- tag_keys.append('KSChannelID' + tag_suffix) >+- _RemoveKeys(plist, *tag_keys) >+- >+ >+ def Main(argv): >+ parser = optparse.OptionParser('%prog [options]') >+- parser.add_option('--plist', dest='plist_path', action='store', >+- type='string', default=None, help='The path of the plist to tweak.') >+- parser.add_option('--output', dest='plist_output', action='store', >+- type='string', default=None, help='If specified, the path to output ' + \ >+- 'the tweaked plist, rather than overwriting the input.') >+ parser.add_option('--breakpad', dest='use_breakpad', action='store', >+ type='int', default=False, help='Enable Breakpad [1 or 0]') >++ parser.add_option('--breakpad_uploads', dest='breakpad_uploads', >++ action='store', type='int', default=False, >++ help='Enable Breakpad\'s uploading of crash dumps [1 or 0]') >+ parser.add_option('--keystone', dest='use_keystone', action='store', >+ type='int', default=False, help='Enable Keystone [1 or 0]') >+ parser.add_option('--scm', dest='add_scm_info', action='store', type='int', >+ default=True, help='Add SCM metadata [1 or 0]') >++ parser.add_option('--pdf', dest='add_pdf_support', action='store', type='int', >++ default=False, help='Add PDF file handler support [1 or 0]') >+ parser.add_option('--branding', dest='branding', action='store', >+ type='string', default=None, help='The branding of the binary') >+ parser.add_option('--bundle_id', dest='bundle_identifier', >+ action='store', type='string', default=None, >+ help='The bundle id of the binary') >+- parser.add_option('--platform', choices=('ios', 'mac'), default='mac', >+- help='The target platform of the bundle') >+- parser.add_option('--version-overrides', action='append', >+- help='Key-value pair to override specific component of version ' >+- 'like key=value (can be passed multiple time to configure ' >+- 'more than one override)') >+- parser.add_option('--format', choices=('binary1', 'xml1', 'json'), >+- default='xml1', help='Format to use when writing property list ' >+- '(default: %(default)s)') >+- parser.add_option('--version', dest='version', action='store', type='string', >+- default=None, help='The version string [major.minor.build.patch]') >+ (options, args) = parser.parse_args(argv) >+ >+ if len(args) > 0: >+ print >>sys.stderr, parser.get_usage() >+ return 1 >+ >+- if not options.plist_path: >+- print >>sys.stderr, 'No --plist specified.' >+- return 1 >+- >+- # Read the plist into its parsed format. Convert the file to 'xml1' as >+- # plistlib only supports that format in Python 2.7. >+- with tempfile.NamedTemporaryFile() as temp_info_plist: >+- retcode = _ConvertPlist(options.plist_path, temp_info_plist.name, 'xml1') >+- if retcode != 0: >+- return retcode >+- plist = plistlib.readPlist(temp_info_plist.name) >+- >+- # Convert overrides. >+- overrides = {} >+- if options.version_overrides: >+- for pair in options.version_overrides: >+- if not '=' in pair: >+- print >>sys.stderr, 'Invalid value for --version-overrides:', pair >+- return 1 >+- key, value = pair.split('=', 1) >+- overrides[key] = value >+- if key not in ('MAJOR', 'MINOR', 'BUILD', 'PATCH'): >+- print >>sys.stderr, 'Unsupported key for --version-overrides:', key >+- return 1 >+- >+- if options.platform == 'mac': >+- version_format_for_key = { >+- # Add public version info so "Get Info" works. >+- 'CFBundleShortVersionString': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@', >+- >+- # Honor the 429496.72.95 limit. The maximum comes from splitting 2^32 - 1 >+- # into 6, 2, 2 digits. The limitation was present in Tiger, but it could >+- # have been fixed in later OS release, but hasn't been tested (it's easy >+- # enough to find out with "lsregister -dump). >+- # http://lists.apple.com/archives/carbon-dev/2006/Jun/msg00139.html >+- # BUILD will always be an increasing value, so BUILD_PATH gives us >+- # something unique that meetings what LS wants. >+- 'CFBundleVersion': '@BUILD@.@PATCH@', >+- } >+- else: >+- version_format_for_key = { >+- 'CFBundleShortVersionString': '@MAJOR@.@BUILD@.@PATCH@', >+- 'CFBundleVersion': '@MAJOR@.@MINOR@.@BUILD@.@PATCH@' >+- } >+- >+- if options.use_breakpad: >+- version_format_for_key['BreakpadVersion'] = \ >+- '@MAJOR@.@MINOR@.@BUILD@.@PATCH@' >++ # Read the plist into its parsed format. >++ DEST_INFO_PLIST = os.path.join(env['TARGET_BUILD_DIR'], env['INFOPLIST_PATH']) >++ plist = plistlib.readPlist(DEST_INFO_PLIST) >+ >+ # Insert the product version. >+- if not _AddVersionKeys( >+- plist, version_format_for_key, version=options.version, >+- overrides=overrides): >++ if not _AddVersionKeys(plist): >+ return 2 >+ >+ # Add Breakpad if configured to do so. >+@@ -322,15 +248,22 @@ def Main(argv): >+ if options.branding is None: >+ print >>sys.stderr, 'Use of Breakpad requires branding.' >+ return 1 >+- # Map gyp "OS" / gn "target_os" passed via the --platform parameter to >+- # the platform as known by breakpad. >+- platform = {'mac': 'Mac', 'ios': 'iOS'}[options.platform] >+- _AddBreakpadKeys(plist, options.branding, platform) >++ _AddBreakpadKeys(plist, options.branding) >++ if options.breakpad_uploads: >++ plist['BreakpadURL'] = 'https://clients2.google.com/cr/report' >++ else: >++ # This allows crash dumping to a file without uploading the >++ # dump, for testing purposes. Breakpad does not recognise >++ # "none" as a special value, but this does stop crash dump >++ # uploading from happening. We need to specify something >++ # because if "BreakpadURL" is not present, Breakpad will not >++ # register its crash handler and no crash dumping will occur. >++ plist['BreakpadURL'] = 'none' >+ else: >+ _RemoveBreakpadKeys(plist) >+ >+- # Add Keystone if configured to do so. >+- if options.use_keystone: >++ # Only add Keystone in Release builds. >++ if options.use_keystone and env['CONFIGURATION'] == 'Release': >+ if options.bundle_identifier is None: >+ print >>sys.stderr, 'Use of Keystone requires the bundle id.' >+ return 1 >+@@ -339,20 +272,21 @@ def Main(argv): >+ _RemoveKeystoneKeys(plist) >+ >+ # Adds or removes any SCM keys. >+- if not _DoSCMKeys(plist, options.add_scm_info): >+- return 3 >++ _DoSCMKeys(plist, options.add_scm_info) >+ >+- output_path = options.plist_path >+- if options.plist_output is not None: >+- output_path = options.plist_output >++ # Adds or removes the PDF file handler entry. >++ _DoPDFKeys(plist, options.add_pdf_support) >+ >+ # Now that all keys have been mutated, rewrite the file. >+- with tempfile.NamedTemporaryFile() as temp_info_plist: >+- plistlib.writePlist(plist, temp_info_plist.name) >+- >+- # Convert Info.plist to the format requested by the --format flag. Any >+- # format would work on Mac but iOS requires specific format. >+- return _ConvertPlist(temp_info_plist.name, output_path, options.format) >++ temp_info_plist = tempfile.NamedTemporaryFile() >++ plistlib.writePlist(plist, temp_info_plist.name) >++ >++ # Info.plist will work perfectly well in any plist format, but traditionally >++ # applications use xml1 for this, so convert it to ensure that it's valid. >++ proc = subprocess.Popen(['plutil', '-convert', 'xml1', '-o', DEST_INFO_PLIST, >++ temp_info_plist.name]) >++ proc.wait() >++ return proc.returncode >+ >+ >+ if __name__ == '__main__': >+diff --git media/webrtc/trunk/build/precompile.h media/webrtc/trunk/build/precompile.h >+index 50a9b87e2fb2..a3c5193c611f 100644 >+--- media/webrtc/trunk/build/precompile.h >++++ media/webrtc/trunk/build/precompile.h >+@@ -2,8 +2,17 @@ >+ // Use of this source code is governed by a BSD-style license that can be >+ // found in the LICENSE file. >+ >+-// This file is used as a precompiled header for both C and C++ files. So >+-// any C++ headers must go in the __cplusplus block below. >++// Precompiled header for Chromium project on Windows, not used by >++// other build configurations. Using precompiled headers speeds the >++// build up significantly, around 1/4th on VS 2010 on an HP Z600 with 12 >++// GB of memory. >++// >++// Numeric comments beside includes are the number of times they were >++// included under src/chrome/browser on 2011/8/20, which was used as a >++// baseline for deciding what to include in the PCH. Includes without >++// a numeric comment are generally included at least 5 times. It may >++// be possible to tweak the speed of the build by commenting out or >++// removing some of the less frequently used headers. >+ >+ #if defined(BUILD_PRECOMPILE_H_) >+ #error You shouldn't include the precompiled header file more than once. >+@@ -11,40 +20,84 @@ >+ >+ #define BUILD_PRECOMPILE_H_ >+ >+-#define _USE_MATH_DEFINES >++// The Windows header needs to come before almost all the other >++// Windows-specific headers. >++#include <Windows.h> >++#include <dwmapi.h> >++#include <shellapi.h> >++#include <wincrypt.h> // 4 >++#include <wtypes.h> // 2 >++ >++// Defines in atlbase.h cause conflicts; if we could figure out how >++// this family of headers can be included in the PCH, it might speed >++// up the build as several of them are used frequently. >++/* >++#include <atlbase.h> >++#include <atlapp.h> >++#include <atlcom.h> >++#include <atlcrack.h> // 2 >++#include <atlctrls.h> // 2 >++#include <atlmisc.h> // 2 >++#include <atlsafe.h> // 1 >++#include <atltheme.h> // 1 >++#include <atlwin.h> // 2 >++*/ >++ >++// Objbase.h and other files that rely on it bring in [ #define >++// interface struct ] which can cause problems in a multi-platform >++// build like Chrome's. #undef-ing it does not work as there are >++// currently 118 targets that break if we do this, so leaving out of >++// the precompiled header for now. >++//#include <commctrl.h> // 2 >++//#include <commdlg.h> // 3 >++//#include <cryptuiapi.h> // 2 >++//#include <Objbase.h> // 2 >++//#include <objidl.h> // 1 >++//#include <ole2.h> // 1 >++//#include <oleacc.h> // 2 >++//#include <oleauto.h> // 1 >++//#include <oleidl.h> // 1 >++//#include <propkey.h> // 2 >++//#include <propvarutil.h> // 2 >++//#include <pstore.h> // 2 >++//#include <shlguid.h> // 1 >++//#include <shlwapi.h> // 1 >++//#include <shobjidl.h> // 4 >++//#include <urlhist.h> // 2 >++ >++// Caused other conflicts in addition to the 'interface' issue above. >++// #include <shlobj.h> >+ >+ #include <errno.h> >+ #include <fcntl.h> >+-#include <limits.h> >++#include <limits.h> // 4 >+ #include <math.h> >+-#include <memory.h> >++#include <memory.h> // 1 >+ #include <signal.h> >+-#include <stdarg.h> >++#include <stdarg.h> // 1 >+ #include <stddef.h> >+ #include <stdio.h> >+ #include <stdlib.h> >+ #include <string.h> >+-#include <time.h> >+- >+-#if defined(__cplusplus) >++#include <time.h> // 4 >+ >+ #include <algorithm> >+-#include <bitset> >++#include <bitset> // 3 >+ #include <cmath> >+ #include <cstddef> >+-#include <cstdio> >+-#include <cstdlib> >++#include <cstdio> // 3 >++#include <cstdlib> // 2 >+ #include <cstring> >+ #include <deque> >+-#include <fstream> >++#include <fstream> // 3 >+ #include <functional> >+-#include <iomanip> >+-#include <iosfwd> >++#include <iomanip> // 2 >++#include <iosfwd> // 2 >+ #include <iterator> >+ #include <limits> >+ #include <list> >+ #include <map> >+-#include <numeric> >++#include <numeric> // 2 >+ #include <ostream> >+ #include <queue> >+ #include <set> >+@@ -53,5 +106,3 @@ >+ #include <string> >+ #include <utility> >+ #include <vector> >+- >+-#endif // __cplusplus >+diff --git media/webrtc/trunk/build/sanitize-mac-build-log.sed media/webrtc/trunk/build/sanitize-mac-build-log.sed >+index b4111c7b828a..3312eac5a86c 100755 >+--- media/webrtc/trunk/build/sanitize-mac-build-log.sed >++++ media/webrtc/trunk/build/sanitize-mac-build-log.sed >+@@ -1,3 +1,5 @@ >++#!/bin/echo Use sanitize-mac-build-log.sh or sed -f >++ >+ # Copyright (c) 2012 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+@@ -15,8 +17,8 @@ >+ # Xcode prints a short "compiling foobar.o" line followed by the lengthy >+ # full command line. These deletions drop the command line. >+ \|^ /Developer/usr/bin/|d >+-\|^ /Developer/Library/PrivateFrameworks/DevToolsCore\.framework/|d >+-\|^ /Developer/Library/Xcode/Plug-ins/CoreBuildTasks\.xcplugin/|d >++\|^ /Developer/Library/PrivateFrameworks/DevToolsCore.framework/|d >++\|^ /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/|d >+ >+ # Drop any goma command lines as well. >+ \|^ .*/gomacc |d >+@@ -26,8 +28,8 @@ >+ \|^ /Users/[^/]*/bin/|d >+ >+ # There's already a nice note for bindings, don't need the command line. >+-\|^python scripts/rule_binding\.py|d >++\|^python scripts/rule_binding.py|d >+ >+ # Shorten the "compiling foobar.o" line. >+-s|^Distributed-CompileC (.*) normal i386 c\+\+ com\.apple\.compilers\.gcc\.4_2| CC \1| >+-s|^CompileC (.*) normal i386 c\+\+ com\.apple\.compilers\.gcc\.4_2| CC \1| >++s|^Distributed-CompileC \(.*\) normal i386 c++ com.apple.compilers.gcc.4_2| CC \1| >++s|^CompileC \(.*\) normal i386 c++ com.apple.compilers.gcc.4_2| CC \1| >+diff --git media/webrtc/trunk/build/sanitize-mac-build-log.sh media/webrtc/trunk/build/sanitize-mac-build-log.sh >+index df5a7af29eb6..dc743fabb51f 100755 >+--- media/webrtc/trunk/build/sanitize-mac-build-log.sh >++++ media/webrtc/trunk/build/sanitize-mac-build-log.sh >+@@ -2,4 +2,5 @@ >+ # Copyright (c) 2010 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+-sed -r -f `dirname "${0}"`/`basename "${0}" sh`sed >++sed -f `dirname "${0}"`/`basename "${0}" sh`sed >++ >+diff --git media/webrtc/trunk/build/sanitize-win-build-log.sed media/webrtc/trunk/build/sanitize-win-build-log.sed >+index c18e664c83a0..c8bffde87447 100755 >+--- media/webrtc/trunk/build/sanitize-win-build-log.sed >++++ media/webrtc/trunk/build/sanitize-win-build-log.sed >+@@ -1,3 +1,5 @@ >++#!/bin/echo Use sanitize-win-build-log.sh or sed -f >++ >+ # Copyright (c) 2012 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+@@ -6,10 +8,10 @@ >+ # machine-parsable. >+ >+ # Drop uninformative lines. >+-/The operation completed successfully\./d >++/The operation completed successfully./d >+ >+ # Drop parallelization indicators on lines. >+-s/^[0-9]+>// >++s/^[0-9]\+>// >+ >+ # Shorten bindings generation lines >+-s/^.*"python".*idl_compiler\.py".*("[^"]+\.idl").*$/ idl_compiler \1/ >++s/^.*"perl".*generate-bindings.pl".*\("[^"]\+\.idl"\).*$/ generate-bindings \1/ >+diff --git media/webrtc/trunk/build/sanitize-win-build-log.sh media/webrtc/trunk/build/sanitize-win-build-log.sh >+index df5a7af29eb6..dc743fabb51f 100755 >+--- media/webrtc/trunk/build/sanitize-win-build-log.sh >++++ media/webrtc/trunk/build/sanitize-win-build-log.sh >+@@ -2,4 +2,5 @@ >+ # Copyright (c) 2010 The Chromium Authors. All rights reserved. >+ # Use of this source code is governed by a BSD-style license that can be >+ # found in the LICENSE file. >+-sed -r -f `dirname "${0}"`/`basename "${0}" sh`sed >++sed -f `dirname "${0}"`/`basename "${0}" sh`sed >++ >+diff --git media/webrtc/trunk/build/update-linux-sandbox.sh media/webrtc/trunk/build/update-linux-sandbox.sh >+index fa2d1077af61..ebf8c105a5c5 100755 >+--- media/webrtc/trunk/build/update-linux-sandbox.sh >++++ media/webrtc/trunk/build/update-linux-sandbox.sh >+@@ -6,7 +6,7 @@ >+ >+ BUILDTYPE="${BUILDTYPE:-Debug}" >+ CHROME_SRC_DIR="${CHROME_SRC_DIR:-$(dirname -- $(readlink -fn -- "$0"))/..}" >+-CHROME_OUT_DIR="${CHROME_SRC_DIR}/${CHROMIUM_OUT_DIR:-out}/${BUILDTYPE}" >++CHROME_OUT_DIR="${CHROME_SRC_DIR}/out/${BUILDTYPE}" >+ CHROME_SANDBOX_BUILD_PATH="${CHROME_OUT_DIR}/chrome_sandbox" >+ CHROME_SANDBOX_INST_PATH="/usr/local/sbin/chrome-devel-sandbox" >+ CHROME_SANDBOX_INST_DIR=$(dirname -- "$CHROME_SANDBOX_INST_PATH") >+@@ -39,9 +39,8 @@ if [ ! -d "${CHROME_OUT_DIR}" ]; then >+ fi >+ >+ if [ ! -f "${CHROME_SANDBOX_BUILD_PATH}" ]; then >+- echo "Could not find ${CHROME_SANDBOX_BUILD_PATH}" >+- echo -n "BUILDTYPE is $BUILDTYPE, use \"BUILDTYPE=<value> ${0}\" to override " >+- echo "after you build the chrome_sandbox target" >++ echo -n "Could not find ${CHROME_SANDBOX_BUILD_PATH}, " >++ echo "please make sure you build the chrome_sandbox target" >+ exit 1 >+ fi >+ >+diff --git media/webrtc/trunk/build/util/lastchange.py media/webrtc/trunk/build/util/lastchange.py >+index 0e3102f4b824..a101341ef7d3 100755 >+--- media/webrtc/trunk/build/util/lastchange.py >++++ media/webrtc/trunk/build/util/lastchange.py >+@@ -13,11 +13,56 @@ import os >+ import subprocess >+ import sys >+ >++_GIT_SVN_ID_REGEX = re.compile(r'.*git-svn-id:\s*([^@]*)@([0-9]+)', re.DOTALL) >++ >+ class VersionInfo(object): >+- def __init__(self, revision): >++ def __init__(self, url, revision): >++ self.url = url >+ self.revision = revision >+ >+ >++def FetchSVNRevision(directory, svn_url_regex): >++ """ >++ Fetch the Subversion branch and revision for a given directory. >++ >++ Errors are swallowed. >++ >++ Returns: >++ A VersionInfo object or None on error. >++ """ >++ try: >++ proc = subprocess.Popen(['svn', 'info'], >++ stdout=subprocess.PIPE, >++ stderr=subprocess.PIPE, >++ cwd=directory, >++ shell=(sys.platform=='win32')) >++ except OSError: >++ # command is apparently either not installed or not executable. >++ return None >++ if not proc: >++ return None >++ >++ attrs = {} >++ for line in proc.stdout: >++ line = line.strip() >++ if not line: >++ continue >++ key, val = line.split(': ', 1) >++ attrs[key] = val >++ >++ try: >++ match = svn_url_regex.search(attrs['URL']) >++ if match: >++ url = match.group(2) >++ else: >++ url = '' >++ revision = attrs['Revision'] >++ except KeyError: >++ return None >++ >++ return VersionInfo(url, revision) >++ >++ >+ def RunGitCommand(directory, command): >+ """ >+ Launches git subcommand. >+@@ -54,74 +99,74 @@ def FetchGitRevision(directory): >+ Returns: >+ A VersionInfo object or None on error. >+ """ >+- hsh = '' >+- git_args = ['log', '-1', '--format=%H'] >+- proc = RunGitCommand(directory, git_args) >++ proc = RunGitCommand(directory, ['rev-parse', 'HEAD']) >+ if proc: >+ output = proc.communicate()[0].strip() >+ if proc.returncode == 0 and output: >+- hsh = output >+- if not hsh: >+- return None >+- pos = '' >+- proc = RunGitCommand(directory, ['cat-file', 'commit', hsh]) >+- if proc: >+- output = proc.communicate()[0] >+- if proc.returncode == 0 and output: >+- for line in reversed(output.splitlines()): >+- if line.startswith('Cr-Commit-Position:'): >+- pos = line.rsplit()[-1].strip() >+- break >+- return VersionInfo('%s-%s' % (hsh, pos)) >++ return VersionInfo('git', output[:7]) >++ return None >+ >+ >+-def FetchVersionInfo(directory=None): >++def FetchGitSVNURLAndRevision(directory, svn_url_regex): >+ """ >+- Returns the last change (in the form of a branch, revision tuple), >+- from some appropriate revision control system. >+- """ >+- version_info = FetchGitRevision(directory) >+- if not version_info: >+- version_info = VersionInfo(None) >+- return version_info >++ Fetch the Subversion URL and revision through Git. >+ >++ Errors are swallowed. >+ >+-def GetHeaderGuard(path): >++ Returns: >++ A tuple containing the Subversion URL and revision. >+ """ >+- Returns the header #define guard for the given file path. >+- This treats everything after the last instance of "src/" as being a >+- relevant part of the guard. If there is no "src/", then the entire path >+- is used. >++ proc = RunGitCommand(directory, ['log', '-1', >++ '--grep=git-svn-id', '--format=%b']) >++ if proc: >++ output = proc.communicate()[0].strip() >++ if proc.returncode == 0 and output: >++ # Extract the latest SVN revision and the SVN URL. >++ # The target line is the last "git-svn-id: ..." line like this: >++ # git-svn-id: svn://svn.chromium.org/chrome/trunk/src@85528 0039d316.... >++ match = _GIT_SVN_ID_REGEX.search(output) >++ if match: >++ revision = match.group(2) >++ url_match = svn_url_regex.search(match.group(1)) >++ if url_match: >++ url = url_match.group(2) >++ else: >++ url = '' >++ return url, revision >++ return None, None >++ >++ >++def FetchGitSVNRevision(directory, svn_url_regex): >+ """ >+- src_index = path.rfind('src/') >+- if src_index != -1: >+- guard = path[src_index + 4:] >+- else: >+- guard = path >+- guard = guard.upper() >+- return guard.replace('/', '_').replace('.', '_').replace('\\', '_') + '_' >++ Fetch the Git-SVN identifier for the local tree. >+ >+- >+-def GetHeaderContents(path, define, version): >+- """ >+- Returns what the contents of the header file should be that indicate the given >+- revision. >++ Errors are swallowed. >+ """ >+- header_guard = GetHeaderGuard(path) >++ url, revision = FetchGitSVNURLAndRevision(directory, svn_url_regex) >++ if url and revision: >++ return VersionInfo(url, revision) >++ return None >+ >+- header_contents = """/* Generated by lastchange.py, do not edit.*/ >+ >+-#ifndef %(header_guard)s >+-#define %(header_guard)s >+- >+-#define %(define)s "%(version)s" >++def FetchVersionInfo(default_lastchange, directory=None, >++ directory_regex_prior_to_src_url='chrome|svn'): >++ """ >++ Returns the last change (in the form of a branch, revision tuple), >++ from some appropriate revision control system. >++ """ >++ svn_url_regex = re.compile( >++ r'.*/(' + directory_regex_prior_to_src_url + r')(/.*)') >+ >+-#endif // %(header_guard)s >+-""" >+- header_contents = header_contents % { 'header_guard': header_guard, >+- 'define': define, >+- 'version': version } >+- return header_contents >++ version_info = (FetchSVNRevision(directory, svn_url_regex) or >++ FetchGitSVNRevision(directory, svn_url_regex) or >++ FetchGitRevision(directory)) >++ if not version_info: >++ if default_lastchange and os.path.exists(default_lastchange): >++ revision = open(default_lastchange, 'r').read().strip() >++ version_info = VersionInfo(None, revision) >++ else: >++ version_info = VersionInfo(None, None) >++ return version_info >+ >+ >+ def WriteIfChanged(file_name, contents): >+@@ -145,25 +190,15 @@ def main(argv=None): >+ argv = sys.argv >+ >+ parser = optparse.OptionParser(usage="lastchange.py [options]") >+- parser.add_option("-m", "--version-macro", >+- help="Name of C #define when using --header. Defaults to " + >+- "LAST_CHANGE.", >+- default="LAST_CHANGE") >++ parser.add_option("-d", "--default-lastchange", metavar="FILE", >++ help="default last change input FILE") >+ parser.add_option("-o", "--output", metavar="FILE", >+- help="Write last change to FILE. " + >+- "Can be combined with --header to write both files.") >+- parser.add_option("", "--header", metavar="FILE", >+- help="Write last change to FILE as a C/C++ header. " + >+- "Can be combined with --output to write both files.") >++ help="write last change to FILE") >+ parser.add_option("--revision-only", action='store_true', >+- help="Just print the GIT hash. Overrides any " + >+- "file-output-related options.") >+- parser.add_option("-s", "--source-dir", metavar="DIR", >+- help="Use repository in the given directory.") >++ help="just print the SVN revision number") >+ opts, args = parser.parse_args(argv[1:]) >+ >+ out_file = opts.output >+- header = opts.header >+ >+ while len(args) and out_file is None: >+ if out_file is None: >+@@ -173,12 +208,8 @@ def main(argv=None): >+ parser.print_help() >+ sys.exit(2) >+ >+- if opts.source_dir: >+- src_dir = opts.source_dir >+- else: >+- src_dir = os.path.dirname(os.path.abspath(__file__)) >+- >+- version_info = FetchVersionInfo(directory=src_dir) >++ version_info = FetchVersionInfo(opts.default_lastchange, >++ os.path.dirname(sys.argv[0])) >+ >+ if version_info.revision == None: >+ version_info.revision = '0' >+@@ -187,15 +218,10 @@ def main(argv=None): >+ print version_info.revision >+ else: >+ contents = "LASTCHANGE=%s\n" % version_info.revision >+- if not out_file and not opts.header: >+- sys.stdout.write(contents) >++ if out_file: >++ WriteIfChanged(out_file, contents) >+ else: >+- if out_file: >+- WriteIfChanged(out_file, contents) >+- if header: >+- WriteIfChanged(header, >+- GetHeaderContents(header, opts.version_macro, >+- version_info.revision)) >++ sys.stdout.write(contents) >+ >+ return 0 >+ >+diff --git media/webrtc/trunk/build/whitespace_file.txt media/webrtc/trunk/build/whitespace_file.txt >+index f2fa9b113c11..087f0ad752ee 100644 >+--- media/webrtc/trunk/build/whitespace_file.txt >++++ media/webrtc/trunk/build/whitespace_file.txt >+@@ -1,33 +1,30 @@ >+-Copyright 2014 The Chromium Authors. All rights reserved. >++Copyright (c) 2012 The Chromium Authors. All rights reserved. >+ Use of this useless file is governed by a BSD-style license that can be >+ found in the LICENSE file. >+ >+- >+ This file is used for making non-code changes to trigger buildbot cycles. Make >+ any modification below this line. >+ >+-====================================================================== >++========================================================================= >+ >+-Let's make a story. Add zero+ sentences for every commit: >++Let's make a story. Add one sentence for every commit: >+ >+-CHÄPTER 1: >+-It was a dark and blinky night; the rain fell in torrents -- except at >++CHAPTER 1.0: >++It was a dark and stormy night; the rain fell in torrents -- except at >+ occasional intervals, when it was checked by a violent gust of wind which >+ swept up the streets (for it is in London that our scene lies), rattling along >+ the housetops, and fiercely agitating the scanty flame of the lamps that >+-struggled against the elements. A hooded figure emerged. >+- >+-It was a Domo-Kun. >+- >+-"What took you so long?", inquired his wife. >++struggled against the darkness. A hooded figure emerged. >+ >++It was a Domo-Kun. "What took you so long?", inquired his wife. >+ Silence. Oblivious to his silence, she continued, "Did Mr. Usagi enjoy the >+ waffles you brought him?" "You know him, he's not one to forego a waffle, >+-no matter how burnt," he snickered. >++no matter how burnt", he snickered. >+ >+-The pause was filled with the sound of compile errors. >++The pause was filled with the sound of thunder. >+ >+-CHAPTER 2: >++ >++CHAPTER 2.0: >+ The jelly was as dark as night, and just as runny. >+ The Domo-Kun shuddered, remembering the way Mr. Usagi had speared his waffles >+ with his fork, watching the runny jelly spread and pool across his plate, >+@@ -41,27 +38,24 @@ when the fan was last cleaned. >+ >+ There was a poignant pause. >+ >+-CHAPTER 3: >++CHAPTER 3.0: >+ Mr. Usagi felt that something wasn't right. Shortly after the Domo-Kun left he >+ began feeling sick. He thought out loud to himself, "No, he wouldn't have done >+-that to me." He considered that perhaps he shouldn't have pushed so hard. >++that to me." He considered that perhaps he shouldn't have pushed him so far. >+ Perhaps he shouldn't have been so cold and sarcastic, after the unimaginable >+-horror that had occurred just the week before. >++horror that had occurred, just the week before. >+ >+-Next time, there won't be any sushi. Why sushi with waffles anyway? It's like >+-adorning breakfast cereal with halibut -- shameful. >++Next time, there won't be any sushi. Why sushis with waffles anyway? It's like >++salmon in a cereal bowl. >+ >+ CHAPTER 4: >+ The taste of stale sushi in his mouth the next morning was unbearable. He >+-wondered where the sushi came from as he attempted to wash the taste away with >+-a bottle of 3000¥ sake. He tries to recall the cook's face. Green? Probably. >++wondered where the sushi came from. He tries to recall the cook's face. Purple? >+ >+ CHAPTER 5: >+-Many tears later, Mr. Usagi would laugh at the memory of the earnest, >+-well-intentioned Domo-Kun. Another day in the life. That is when he realized that >+-life goes on. >+- >+-$CHAPTER6 >++Many years later, Mr. Usagi would laugh at the memory of the earnest, >++well-intentioned Domo-Kun. >++Another day in the life... >+ >+ TRUISMS (1978-1983) >+ JENNY HOLZER >+@@ -71,104 +65,5 @@ A MAN CAN'T KNOW WHAT IT IS TO BE A MOTHER >+ A NAME MEANS A LOT JUST BY ITSELF >+ A POSITIVE ATTITUDE MEANS ALL THE DIFFERENCE IN THE WORLD >+ A RELAXED MAN IS NOT NECESSARILY A BETTER MAN >+-NO ONE SHOULD EVER USE SVN >+-AN INFLEXIBLE POSITION SOMETIMES IS A SIGN OF PARALYSIS >+-IT IS MANS FATE TO OUTSMART HIMSELF >+-BEING SURE OF YOURSELF MEANS YOU'RE A FOOL >+-AM NOT >+-ARE TOO >+-IF AT FIRST YOU DON'T SUCCEED: TRY, EXCEPT, FINALLY >+-AND THEN, TIME LEAPT BACKWARDS >+-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAaaaaaaaaaaaaaaaaaaaaaaaaaaaahhhh LOT >+-I'm really tempted to change something above the line. >+-Reeccciiiipppppeeeeeesssssss!!!!!!!!! >+-PEOPLE SAY "FAILURE IS NOT AN OPTION", BUT FAILURE IS ALWAYS AN OPTION. >+-WHAT GOES UP MUST HAVE A NON-ZERO VELOCITY >+- >+-I can feel the heat closing in, feel them out there making their moves... >+-What could possibly go wrong? We've already ate our cake. >+- >+-Stand Still. Pause Clocks. We can make the World Stop. >+-WUBWUBWUBWUBWUB >+- >+-I want a 1917 build and you will give me what I want. >+- >+-This sentence is false. >+- >+-Beauty is in the eyes of a Beholder. >+- >+-I'm the best at space. >+- >+-The first time Yossarian saw the chaplain, he fell madly in love with him. >+-* >+-* >+-* >+-Give not thyself up, then, to fire, lest it invert thee, deaden thee; as for >+-the time it did me. There is a wisdom that is woe; but there is a woe that is >+-madness. And there is a Catskill eagle in some souls that can alike dive down >+-into the blackest gorges, and soar out of them again and become invisible in >+-the sunny spaces. And even if he for ever flies within the gorge, that gorge >+-is in the mountains; so that even in his lowest swoop the mountain eagle is >+-still higher than other birds upon the plain, even though they soar. >+-* >+-* >+-* >+- >+-I'm here to commit lines and drop rhymes >+-* >+-This is a line to test and try uploading a cl. >+- >+-And lo, in the year 2014, there was verily an attempt to upgrade to GCC 4.8 on >+-the Android bots, and it was good. Except on one bot, where it was bad. And >+-lo, the change was reverted, and GCC went back to 4.6, where code is slower >+-and less optimized. And verily did it break the build, because artifacts had >+-been created with 4.8, and alignment was no longer the same, and a great >+-sadness descended upon the Android GN buildbot, and it did refuseth to build >+-any more. But the sheriffs thought to themselves: Placebo! Let us clobber the >+-bot, and perhaps it will rebuild with GCC 4.6, which hath worked for many many >+-seasons. And so they modified the whitespace file with these immortal lines, >+-and visited it upon the bots, that great destruction might be wrought upon >+-their outdated binaries. In clobberus, veritas. >+- >+-As the git approaches, light begins to shine through the SCM thrice again... >+-However, the git, is, after all, quite stupid. >+- >+-Suddenly Domo-Kun found itself in a room filled with dazzling mirrors. As >+-Domo-Kun looked around, it realized that some of the mirrors were actually but >+-pale reflections of true reality. >+- >+-A herd of wild gits appears! Time for CQ :D >+-And one more for sizes.py... >+- >+-What's an overmarketed dietary supplement expressing sadness, relief, >+-tiredness, or a similar feeling.? Ah-Sigh-ee. >+- >+-It was love at first sight. The moment Yossarian first laid eyes on the chaplain, he fell madly in love with him. >+- >+-Cool whitespace change for git-cl land >+- >+-Oh god the bots are red! I'm blind! Mmmm, cronuts. >+- >+-If you stand on your head, you will get footprints in your hair. >+- >+-sigh >+-sigher >+-pick up cls >+- >+-In the BUILD we trust. >+-^_^ >+- >+-In the masters we don't. >+-In the tryservers, we don't either. >+-In the CQ sometimes. >+-Auto-generated by git-eject-upstream (http://goo.gl/cIHsYR) >+-My sandwiches are like my children: I love them all. >+-No, really, I couldn't eat another bit. >+-When I hunger I think of you, and a pastrami sandwich. >+-Do make a terrible mistake every once in a while. >+-I just made two. >+-Mistakes are the best sometimes. >+-\o/ >+-This is groovy. >+- >+-SECRET ENDING: IT WAS _____ ALL ALONG! >++ >++This commit will change the world as we know it. >+diff --git media/webrtc/trunk/gtest/moz.build media/webrtc/trunk/gtest/moz.build >+index 1f9f5c4d802b..71f4441f5fb0 100644 >+--- media/webrtc/trunk/gtest/moz.build >++++ media/webrtc/trunk/gtest/moz.build >+@@ -32,14 +32,14 @@ USE_LIBS += [ >+ '/media/webrtc/trunk/third_party/gflags/gflags_gflags/gflags', >+ '/testing/gtest/gtest', >+ 'media_libopus', >+- 'mozglue', >+ 'speex', >+ 'webrtc', >+- 'webrtc_common_gn', >+- 'webrtc_gn', >+- 'webrtc_i420_gn', >+- 'webrtc_vp8_gn', >+- 'webrtc_vp9_gn', >++ 'webrtc_common', >++ 'webrtc_i420', >++ 'webrtc_lib', >++ 'webrtc_utility', >++ 'webrtc_vp8', >++ 'webrtc_vp9', >+ 'yuv', >+ ] >+ >+diff --git media/webrtc/trunk/webrtc/BUILD.gn media/webrtc/trunk/webrtc/BUILD.gn >+index c808a47ca300..805eaf0d847e 100644 >+--- media/webrtc/trunk/webrtc/BUILD.gn >++++ media/webrtc/trunk/webrtc/BUILD.gn >+@@ -11,9 +11,7 @@ >+ import("//build/config/linux/pkg_config.gni") >+ import("//build/config/sanitizers/sanitizers.gni") >+ import("build/webrtc.gni") >+-if (!build_with_mozilla) { >+- import("//third_party/protobuf/proto_library.gni") >+-} >++import("//third_party/protobuf/proto_library.gni") >+ if (is_android) { >+ import("//build/config/android/config.gni") >+ import("//build/config/android/rules.gni") >+@@ -76,12 +74,6 @@ config("common_inherited_config") { >+ "WEBRTC_LINUX", >+ "WEBRTC_ANDROID", >+ ] >+- >+- if (build_with_mozilla) { >+- defines += [ >+- "WEBRTC_ANDROID_OPENSLES", >+- ] >+- } >+ } >+ if (is_chromeos) { >+ defines += [ "CHROMEOS" ] >+@@ -252,41 +244,26 @@ if (!build_with_chromium) { >+ >+ deps = [ >+ ":webrtc_common", >++ "api", >+ "api:transport_api", >+ "audio", >+ "base", >+ "call", >+ "common_audio", >+ "common_video", >++ "logging", >+ "media", >+ "modules", >+ "modules/video_capture:video_capture_internal_impl", >++ "p2p", >++ "pc", >+ "sdk", >++ "stats", >+ "system_wrappers", >+ "video", >+ "voice_engine", >+ ] >+ >+- if (build_with_mozilla) { >+- deps += [ >+- "api:video_frame_api", >+- "system_wrappers:field_trial_default", >+- "system_wrappers:metrics_default", >+- ] >+- >+- if (!is_android) { >+- deps += [ "video_engine" ] >+- } >+- } else { >+- deps += [ >+- "api", >+- "logging", >+- "p2p", >+- "pc", >+- "stats", >+- ] >+- } >+- >+ if (rtc_enable_protobuf) { >+ defines += [ "ENABLE_RTC_EVENT_LOG" ] >+ deps += [ "logging:rtc_event_log_proto" ] >+diff --git media/webrtc/trunk/webrtc/api/api.gyp media/webrtc/trunk/webrtc/api/api.gyp >+new file mode 100644 >+index 000000000000..2ee17acfe779 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/api/api.gyp >+@@ -0,0 +1,255 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'conditions': [ >++ ['os_posix == 1 and OS != "mac" and OS != "ios"', { >++ 'conditions': [ >++ ['sysroot!=""', { >++ 'variables': { >++ 'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"', >++ }, >++ }, { >++ 'variables': { >++ 'pkg-config': 'pkg-config' >++ }, >++ }], >++ ], >++ }], >++ # Excluded from the Chromium build since they cannot be built due to >++ # incompability with Chromium's logging implementation. >++ ['OS=="android" and build_with_chromium==0 and build_with_mozilla==0', { >++ 'targets': [ >++ { >++ 'target_name': 'libjingle_peerconnection_jni', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ 'libjingle_peerconnection', >++ ], >++ 'sources': [ >++ 'android/jni/androidmediacodeccommon.h', >++ 'android/jni/androidmediadecoder_jni.cc', >++ 'android/jni/androidmediadecoder_jni.h', >++ 'android/jni/androidmediaencoder_jni.cc', >++ 'android/jni/androidmediaencoder_jni.h', >++ 'android/jni/androidmetrics_jni.cc', >++ 'android/jni/androidnetworkmonitor_jni.cc', >++ 'android/jni/androidnetworkmonitor_jni.h', >++ 'android/jni/androidvideotracksource_jni.cc', >++ 'android/jni/classreferenceholder.cc', >++ 'android/jni/classreferenceholder.h', >++ 'android/jni/jni_helpers.cc', >++ 'android/jni/jni_helpers.h', >++ 'android/jni/native_handle_impl.cc', >++ 'android/jni/native_handle_impl.h', >++ 'android/jni/peerconnection_jni.cc', >++ 'android/jni/surfacetexturehelper_jni.cc', >++ 'android/jni/surfacetexturehelper_jni.h', >++ 'androidvideotracksource.cc', >++ 'androidvideotracksource.h', >++ ], >++ 'include_dirs': [ >++ '<(libyuv_dir)/include', >++ ], >++ # TODO(kjellander): Make the code compile without disabling these flags. >++ # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307 >++ 'cflags': [ >++ '-Wno-sign-compare', >++ '-Wno-unused-variable', >++ ], >++ 'cflags!': [ >++ '-Wextra', >++ ], >++ 'msvs_disabled_warnings': [ >++ 4245, # conversion from 'int' to 'size_t', signed/unsigned mismatch. >++ 4267, # conversion from 'size_t' to 'int', possible loss of data. >++ 4389, # signed/unsigned mismatch. >++ ], >++ }, >++ { >++ 'target_name': 'libjingle_peerconnection_so', >++ 'type': 'shared_library', >++ 'dependencies': [ >++ 'libjingle_peerconnection', >++ 'libjingle_peerconnection_jni', >++ ], >++ 'sources': [ >++ 'android/jni/jni_onload.cc', >++ ], >++ 'variables': { >++ # This library uses native JNI exports; tell GYP so that the >++ # required symbols will be kept. >++ 'use_native_jni_exports': 1, >++ }, >++ }, >++ ] >++ }], >++ ], # conditions >++ 'targets': [ >++ { >++ 'target_name': 'call_api', >++ 'type': 'static_library', >++ 'dependencies': [ >++ # TODO(kjellander): Add remaining dependencies when webrtc:4243 is done. >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/modules/modules.gyp:audio_encoder_interface', >++ ], >++ 'sources': [ >++ 'call/audio_receive_stream.h', >++ 'call/audio_send_stream.h', >++ 'call/audio_sink.h', >++ 'call/audio_state.h', >++ ], >++ }, >++ { >++ 'target_name': 'video_frame_api', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'call/transport.h', >++ 'video/i420_buffer.cc', >++ 'video/i420_buffer.h', >++ 'video/video_frame.cc', >++ 'video/video_frame.h', >++ 'video/video_frame_buffer.h', >++ 'video/video_rotation.h', >++ ], >++ 'include_dirs': [ >++ '<(libyuv_dir)/include', >++ ], >++ }, >++ { >++ 'target_name': 'libjingle_peerconnection', >++ 'type': 'static_library', >++ 'dependencies': [ >++ ':call_api', >++ ':rtc_stats_api', >++ '<(webrtc_root)/media/media.gyp:rtc_media', >++ '<(webrtc_root)/pc/pc.gyp:rtc_pc', >++ '<(webrtc_root)/stats/stats.gyp:rtc_stats', >++ ], >++ 'sources': [ >++ 'audiotrack.cc', >++ 'audiotrack.h', >++ 'datachannel.cc', >++ 'datachannel.h', >++ 'datachannelinterface.h', >++ 'dtmfsender.cc', >++ 'dtmfsender.h', >++ 'dtmfsenderinterface.h', >++ 'jsep.h', >++ 'jsepicecandidate.cc', >++ 'jsepicecandidate.h', >++ 'jsepsessiondescription.cc', >++ 'jsepsessiondescription.h', >++ 'localaudiosource.cc', >++ 'localaudiosource.h', >++ 'mediaconstraintsinterface.cc', >++ 'mediaconstraintsinterface.h', >++ 'mediacontroller.cc', >++ 'mediacontroller.h', >++ 'mediastream.cc', >++ 'mediastream.h', >++ 'mediastreaminterface.h', >++ 'mediastreamobserver.cc', >++ 'mediastreamobserver.h', >++ 'mediastreamproxy.h', >++ 'mediastreamtrack.h', >++ 'mediastreamtrackproxy.h', >++ 'notifier.h', >++ 'peerconnection.cc', >++ 'peerconnection.h', >++ 'peerconnectionfactory.cc', >++ 'peerconnectionfactory.h', >++ 'peerconnectionfactoryproxy.h', >++ 'peerconnectioninterface.h', >++ 'peerconnectionproxy.h', >++ 'proxy.h', >++ 'remoteaudiosource.cc', >++ 'remoteaudiosource.h', >++ 'rtcstatscollector.cc', >++ 'rtcstatscollector.h', >++ 'rtpparameters.h', >++ 'rtpreceiver.cc', >++ 'rtpreceiver.h', >++ 'rtpreceiverinterface.h', >++ 'rtpsender.cc', >++ 'rtpsender.h', >++ 'rtpsenderinterface.h', >++ 'sctputils.cc', >++ 'sctputils.h', >++ 'statscollector.cc', >++ 'statscollector.h', >++ 'statstypes.cc', >++ 'statstypes.h', >++ 'streamcollection.h', >++ 'videocapturertracksource.cc', >++ 'videocapturertracksource.h', >++ 'videosourceproxy.h', >++ 'videotrack.cc', >++ 'videotrack.h', >++ 'videotracksource.cc', >++ 'videotracksource.h', >++ 'webrtcsdp.cc', >++ 'webrtcsdp.h', >++ 'webrtcsession.cc', >++ 'webrtcsession.h', >++ 'webrtcsessiondescriptionfactory.cc', >++ 'webrtcsessiondescriptionfactory.h', >++ ], >++ 'conditions': [ >++ ['clang==1', { >++ 'cflags!': [ >++ '-Wextra', >++ ], >++ 'xcode_settings': { >++ 'WARNING_CFLAGS!': ['-Wextra'], >++ }, >++ }, { >++ 'cflags': [ >++ '-Wno-maybe-uninitialized', # Only exists for GCC. >++ ], >++ }], >++ ['use_quic==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/libquic/libquic.gyp:libquic', >++ ], >++ 'sources': [ >++ 'quicdatachannel.cc', >++ 'quicdatachannel.h', >++ 'quicdatatransport.cc', >++ 'quicdatatransport.h', >++ ], >++ 'export_dependent_settings': [ >++ '<(DEPTH)/third_party/libquic/libquic.gyp:libquic', >++ ], >++ }], >++ ], >++ }, # target libjingle_peerconnection >++ { >++ # GN version: webrtc/api:rtc_stats_api >++ 'target_name': 'rtc_stats_api', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ ], >++ 'sources': [ >++ 'stats/rtcstats.h', >++ 'stats/rtcstats_objects.h', >++ 'stats/rtcstatsreport.h', >++ ], >++ }, # target rtc_stats_api >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/api/api_java.gyp media/webrtc/trunk/webrtc/api/api_java.gyp >+new file mode 100644 >+index 000000000000..4e18035613e0 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/api/api_java.gyp >+@@ -0,0 +1,50 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This file exists only because there's no other way to avoid errors in the >++# Chromium build due to the inclusion of build/java.gypi. GYP unfortunately >++# processes all 'includes' for all .gyp files, ignoring conditions. This >++# processing takes place early in the cycle, before it's possible to use >++# variables. It will go away when WebRTC has fully migrated to GN. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'targets': [ >++ { >++ # |libjingle_peerconnection_java| builds a jar file with name >++ # libjingle_peerconnection_java.jar using Chrome's build system. >++ # It includes all Java files needed to setup a PeeerConnection call >++ # from Android. >++ 'target_name': 'libjingle_peerconnection_java', >++ 'type': 'none', >++ 'dependencies': [ >++ '<(webrtc_root)/api/api.gyp:libjingle_peerconnection_so', >++ ], >++ 'variables': { >++ # Designate as Chromium code and point to our lint settings to >++ # enable linting of the WebRTC code (this is the only way to make >++ # lint_action invoke the Android linter). >++ 'android_manifest_path': '<(webrtc_root)/build/android/AndroidManifest.xml', >++ 'suppressions_file': '<(webrtc_root)/build/android/suppressions.xml', >++ 'chromium_code': 1, >++ 'java_in_dir': 'android/java', >++ 'webrtc_base_dir': '<(webrtc_root)/base', >++ 'webrtc_modules_dir': '<(webrtc_root)/modules', >++ 'additional_src_dirs' : [ >++ '<(webrtc_base_dir)/java', >++ '<(webrtc_modules_dir)/audio_device/android/java/src', >++ ], >++ }, >++ 'includes': ['../../build/java.gypi'], >++ }, >++ ], # targets >++ }], # OS=="android" >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/audio/webrtc_audio.gypi media/webrtc/trunk/webrtc/audio/webrtc_audio.gypi >+new file mode 100644 >+index 000000000000..31a281c09a53 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/audio/webrtc_audio.gypi >+@@ -0,0 +1,32 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'variables': { >++ 'webrtc_audio_dependencies': [ >++ '<(webrtc_root)/api/api.gyp:call_api', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_api', >++ ], >++ 'webrtc_audio_sources': [ >++ 'audio/audio_receive_stream.cc', >++ 'audio/audio_receive_stream.h', >++ 'audio/audio_send_stream.cc', >++ 'audio/audio_send_stream.h', >++ 'audio/audio_state.cc', >++ 'audio/audio_state.h', >++ 'audio/audio_transport_proxy.cc', >++ 'audio/audio_transport_proxy.h', >++ 'audio/conversion.h', >++ 'audio/scoped_voe_interface.h', >++ 'audio/utility/audio_frame_operations.cc', >++ 'audio/utility/audio_frame_operations.h', >++ ], >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/base/BUILD.gn media/webrtc/trunk/webrtc/base/BUILD.gn >+index bdef9f5a2cbf..0902581f2eff 100644 >+--- media/webrtc/trunk/webrtc/base/BUILD.gn >++++ media/webrtc/trunk/webrtc/base/BUILD.gn >+@@ -20,22 +20,17 @@ if (is_win) { >+ >+ group("base") { >+ public_deps = [ >++ ":rtc_base", >+ ":rtc_base_approved", >+ ":rtc_task_queue", >+ ] >+- if (!build_with_mozilla) { >+- public_deps += [ >+- ":rtc_base", >+- ] >+- } >+- >+- if (is_android && !build_with_mozilla) { >++ if (is_android) { >+ public_deps += [ ":base_java" ] >+ } >+ } >+ >+ config("rtc_base_approved_all_dependent_config") { >+- if (is_mac && !(build_with_chromium || build_with_mozilla)) { >++ if (is_mac && !build_with_chromium) { >+ libs = [ "Foundation.framework" ] # needed for logging_mac.mm >+ } >+ } >+@@ -77,7 +72,7 @@ config("rtc_base_all_dependent_config") { >+ } >+ } >+ >+-if (is_linux && !build_with_chromium && !build_with_mozilla) { >++if (is_linux && !build_with_chromium) { >+ # Provides the same functionality as the //crypto:platform target, which >+ # WebRTC cannot use as we don't sync src/crypto from Chromium. >+ group("linux_system_ssl") { >+@@ -89,11 +84,9 @@ if (is_linux && !build_with_chromium && !build_with_mozilla) { >+ >+ if (!rtc_build_ssl) { >+ config("external_ssl_library") { >+- if (!build_with_mozilla) { >+- assert(rtc_ssl_root != "", >+- "You must specify rtc_ssl_root when rtc_build_ssl==0.") >+- include_dirs = [ rtc_ssl_root ] >+- } >++ assert(rtc_ssl_root != "", >++ "You must specify rtc_ssl_root when rtc_build_ssl==0.") >++ include_dirs = [ rtc_ssl_root ] >+ } >+ } >+ >+@@ -201,19 +194,8 @@ rtc_static_library("rtc_base_approved") { >+ >+ if (is_win) { >+ sources += [ "file_win.cc" ] >+- >+- if (build_with_mozilla) { >+- sources += [ "win32.cc" ] >+- } >+ } >+ >+- if (is_mac) { >+- if (build_with_mozilla) { >+- sources += [ "macutils.cc" ] >+- } >+- } >+- >+- >+ if (build_with_chromium) { >+ # Dependency on chromium's logging (in //base). >+ deps += [ "//base:base" ] >+@@ -341,11 +323,6 @@ rtc_static_library("rtc_task_queue") { >+ "task_queue_posix.cc", >+ ] >+ all_dependent_configs = [ ":enable_libevent_config" ] >+- >+- if (build_with_mozilla) { >+- include_dirs = [ "$rtc_libevent_dir/include" ] >+- include_dirs += [ "$rtc_libevent_dir/linux" ] >+- } >+ } else { >+ if (is_mac || is_ios) { >+ sources += [ >+@@ -966,7 +943,7 @@ if (rtc_include_tests) { >+ } >+ } >+ >+-if (is_android && !build_with_mozilla) { >++if (is_android) { >+ android_library("base_java") { >+ java_files = [ >+ "java/src/org/webrtc/Logging.java", >+diff --git media/webrtc/trunk/webrtc/base/base.gyp media/webrtc/trunk/webrtc/base/base.gyp >+new file mode 100644 >+index 000000000000..4dd48f7d5f81 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/base/base.gyp >+@@ -0,0 +1,682 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'conditions': [ >++ ['os_posix==1 and OS!="mac" and OS!="ios"', { >++ 'conditions': [ >++ ['sysroot!=""', { >++ 'variables': { >++ 'pkg-config': '../../../build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)"', >++ }, >++ }, { >++ 'variables': { >++ 'pkg-config': 'pkg-config' >++ }, >++ }], >++ ], >++ }], >++ ], >++ 'targets': [ >++ { >++ # The subset of rtc_base approved for use outside of libjingle. >++ 'target_name': 'rtc_base_approved', >++ 'type': 'static_library', >++ 'sources': [ >++ 'arraysize.h', >++ 'array_view.h', >++ 'atomicops.h', >++ 'basictypes.h', >++ 'base64.cc', >++ 'base64.h', >++ 'bind.h', >++ 'bitbuffer.cc', >++ 'bitbuffer.h', >++ 'buffer.h', >++ 'bufferqueue.cc', >++ 'bufferqueue.h', >++ 'bytebuffer.cc', >++ 'bytebuffer.h', >++ 'byteorder.h', >++ 'checks.cc', >++ 'checks.h', >++ 'common.cc', >++ 'common.h', >++ 'constructormagic.h', >++ 'copyonwritebuffer.cc', >++ 'copyonwritebuffer.h', >++ 'criticalsection.cc', >++ 'criticalsection.h', >++ 'deprecation.h', >++ 'event.cc', >++ 'event.h', >++ 'event_tracer.cc', >++ 'event_tracer.h', >++ 'numerics/exp_filter.cc', >++ 'numerics/exp_filter.h', >++ 'numerics/percentile_filter.h', >++ 'file.cc', >++ 'file.h', >++ 'flags.cc', >++ 'flags.h', >++ 'format_macros.h', >++ 'function_view.h', >++ 'ignore_wundef.h', >++ 'location.h', >++ 'location.cc', >++ 'md5.cc', >++ 'md5.h', >++ 'md5digest.cc', >++ 'md5digest.h', >++ 'mod_ops.h', >++ 'onetimeevent.h', >++ 'optional.cc', >++ 'optional.h', >++ 'pathutils.cc', >++ 'pathutils.h', >++ 'platform_file.cc', >++ 'platform_file.h', >++ 'platform_thread.cc', >++ 'platform_thread.h', >++ 'platform_thread_types.h', >++ 'race_checker.cc', >++ 'race_checker.h', >++ 'random.cc', >++ 'random.h', >++ 'rate_statistics.cc', >++ 'rate_statistics.h', >++ 'rate_limiter.cc', >++ 'rate_limiter.h', >++ 'ratetracker.cc', >++ 'ratetracker.h', >++ 'refcount.h', >++ 'refcountedobject.h', >++ 'safe_compare.h', >++ 'safe_conversions.h', >++ 'safe_conversions_impl.h', >++ 'sanitizer.h', >++ 'scoped_ref_ptr.h', >++ 'stringencode.cc', >++ 'stringencode.h', >++ 'stringutils.cc', >++ 'stringutils.h', >++ 'swap_queue.h', >++ 'template_util.h', >++ 'thread_annotations.h', >++ 'thread_checker.h', >++ 'thread_checker_impl.cc', >++ 'thread_checker_impl.h', >++ 'timestampaligner.cc', >++ 'timestampaligner.h', >++ 'timeutils.cc', >++ 'timeutils.h', >++ 'trace_event.h', >++ 'type_traits.h', >++ ], >++ 'conditions': [ >++ ['os_posix==1', { >++ 'sources': [ >++ 'file_posix.cc', >++ ], >++ }], >++ ['OS=="win"', { >++ 'sources': [ >++ 'file_win.cc', >++ 'win32.cc', >++ 'win32.h', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ 'macutils.cc', >++ 'macutils.h', >++ ], >++ }], >++ ['build_with_chromium==1', { >++ 'dependencies': [ >++ '<(DEPTH)/base/base.gyp:base', >++ ], >++ 'include_dirs': [ >++ '../../webrtc_overrides', >++ ], >++ 'sources': [ >++ '../../webrtc_overrides/webrtc/base/logging.cc', >++ '../../webrtc_overrides/webrtc/base/logging.h', >++ ], >++ }, { >++ 'sources': [ >++ 'logging.cc', >++ 'logging.h', >++ 'logging_mac.mm', >++ ], >++ }], >++ ['OS=="mac" and build_with_chromium==0', { >++ 'all_dependent_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ # needed for logging_mac.mm >++ '-framework Foundation', >++ ], >++ }, >++ }, >++ }], # OS=="mac" and build_with_chromium==0 >++ ['OS=="android"', { >++ 'link_settings': { >++ 'libraries': [ >++ '-llog', >++ ], >++ }, >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'rtc_task_queue', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'rtc_base_approved', >++ ], >++ 'sources': [ >++ 'sequenced_task_checker.h', >++ 'sequenced_task_checker_impl.cc', >++ 'sequenced_task_checker_impl.h', >++ 'weak_ptr.cc', >++ 'weak_ptr.h', >++ ], >++ 'conditions': [ >++ ['build_with_chromium==1', { >++ 'include_dirs': [ >++ '../../webrtc_overrides' >++ ], >++ 'sources' : [ >++ '../../webrtc_overrides/webrtc/base/task_queue.cc', >++ '../../webrtc_overrides/webrtc/base/task_queue.h', >++ ] >++ } , { >++ # If not build for chromium, use our own implementation. >++ 'sources' : [ >++ 'task_queue.h', >++ 'task_queue_posix.h', >++ ], >++ 'conditions': [ >++ #TODO: no libevent.gyp >++ ['build_libevent==1', { >++ 'dependencies': [ >++ '<(DEPTH)/base/third_party/libevent/libevent.gyp:libevent', >++ ], >++ } , { >++ 'include_dirs': [ >++ '$(MOZ_LIBEVENT_CFLAGS)', >++ '<(libevent_dir)/', >++ '<(libevent_dir)/../', >++ '<(libevent_dir)/include/', >++ ], >++ 'conditions': [ >++ ['OS=="mac" or OS=="ios"', { >++ 'include_dirs': [ >++ '<(libevent_dir)/mac/', >++ ], >++ }], >++ ['OS=="linux"', { >++ 'include_dirs': [ >++ '<(libevent_dir)/linux/', >++ ], >++ }], >++ ['os_bsd==1', { >++ 'include_dirs': [ >++ '<(libevent_dir)/bsd/', >++ ], >++ }], >++ ['OS=="win"', { >++ 'include_dirs': [ >++ '<(libevent_dir)/WIN32-Code/', >++ ], >++ }], >++ ['OS=="android"', { >++ 'include_dirs': [ >++ '<(libevent_dir)/android/', >++ ], >++ }], >++ ], >++ }], >++ ['enable_libevent==1', { >++ 'sources': [ >++ 'task_queue_libevent.cc', >++ 'task_queue_posix.cc', >++ ], >++ 'defines': [ 'WEBRTC_BUILD_LIBEVENT', ], >++ 'all_dependent_settings': { >++ 'defines': [ 'WEBRTC_BUILD_LIBEVENT' ], >++ }, >++ }, { >++ # If not libevent, fall back to the other task queues. >++ 'conditions': [ >++ ['OS=="mac" or OS=="ios"', { >++ 'sources': [ >++ 'task_queue_gcd.cc', >++ 'task_queue_posix.cc', >++ ], >++ }], >++ ['OS=="win"', { >++ 'sources': [ 'task_queue_win.cc' ], >++ }] >++ ], >++ }], >++ ] >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'rtc_base', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '../common.gyp:webrtc_common', >++ 'rtc_base_approved', >++ ], >++ 'export_dependent_settings': [ >++ 'rtc_base_approved', >++ ], >++ 'defines': [ >++ 'FEATURE_ENABLE_SSL', >++ 'SSL_USE_OPENSSL', >++ 'HAVE_OPENSSL_SSL_H', >++ 'LOGGING=1', >++ ], >++ 'sources': [ >++ 'applefilesystem.mm', >++ 'asyncinvoker.cc', >++ 'asyncinvoker.h', >++ 'asyncinvoker-inl.h', >++ 'asyncpacketsocket.cc', >++ 'asyncpacketsocket.h', >++ 'asyncresolverinterface.cc', >++ 'asyncresolverinterface.h', >++ 'asyncsocket.cc', >++ 'asyncsocket.h', >++ 'asynctcpsocket.cc', >++ 'asynctcpsocket.h', >++ 'asyncudpsocket.cc', >++ 'asyncudpsocket.h', >++ 'autodetectproxy.cc', >++ 'autodetectproxy.h', >++ 'crc32.cc', >++ 'crc32.h', >++ 'cryptstring.cc', >++ 'cryptstring.h', >++ 'diskcache.cc', >++ 'diskcache.h', >++ 'filerotatingstream.cc', >++ 'filerotatingstream.h', >++ 'fileutils.cc', >++ 'fileutils.h', >++ 'firewallsocketserver.cc', >++ 'firewallsocketserver.h', >++ 'gunit_prod.h', >++ 'helpers.cc', >++ 'helpers.h', >++ 'httpbase.cc', >++ 'httpbase.h', >++ 'httpclient.cc', >++ 'httpclient.h', >++ 'httpcommon-inl.h', >++ 'httpcommon.cc', >++ 'httpcommon.h', >++ 'ipaddress.cc', >++ 'ipaddress.h', >++ 'linked_ptr.h', >++ 'messagedigest.cc', >++ 'messagedigest.h', >++ 'messagehandler.cc', >++ 'messagehandler.h', >++ 'messagequeue.cc', >++ 'messagequeue.h', >++ 'nethelpers.cc', >++ 'nethelpers.h', >++ 'network.cc', >++ 'network.h', >++ 'networkmonitor.cc', >++ 'networkmonitor.h', >++ 'nullsocketserver.cc', >++ 'nullsocketserver.h', >++ 'openssl.h', >++ 'openssladapter.cc', >++ 'openssladapter.h', >++ 'openssldigest.cc', >++ 'openssldigest.h', >++ 'opensslidentity.cc', >++ 'opensslidentity.h', >++ 'opensslstreamadapter.cc', >++ 'opensslstreamadapter.h', >++ 'physicalsocketserver.cc', >++ 'physicalsocketserver.h', >++ 'proxydetect.cc', >++ 'proxydetect.h', >++ 'proxyinfo.cc', >++ 'proxyinfo.h', >++ 'ratelimiter.cc', >++ 'ratelimiter.h', >++ 'rtccertificate.cc', >++ 'rtccertificate.h', >++ 'rtccertificategenerator.cc', >++ 'rtccertificategenerator.h', >++ 'sha1.cc', >++ 'sha1.h', >++ 'sha1digest.cc', >++ 'sha1digest.h', >++ 'sharedexclusivelock.cc', >++ 'sharedexclusivelock.h', >++ 'signalthread.cc', >++ 'signalthread.h', >++ 'sigslot.cc', >++ 'sigslot.h', >++ 'sigslotrepeater.h', >++ 'socket.h', >++ 'socketadapters.cc', >++ 'socketadapters.h', >++ 'socketaddress.cc', >++ 'socketaddress.h', >++ 'socketaddresspair.cc', >++ 'socketaddresspair.h', >++ 'socketfactory.h', >++ 'socketpool.cc', >++ 'socketpool.h', >++ 'socketserver.h', >++ 'socketstream.cc', >++ 'socketstream.h', >++ 'ssladapter.cc', >++ 'ssladapter.h', >++ 'sslfingerprint.cc', >++ 'sslfingerprint.h', >++ 'sslidentity.cc', >++ 'sslidentity.h', >++ 'sslsocketfactory.cc', >++ 'sslsocketfactory.h', >++ 'sslstreamadapter.cc', >++ 'sslstreamadapter.h', >++ 'stream.cc', >++ 'stream.h', >++ 'task.cc', >++ 'task.h', >++ 'taskparent.cc', >++ 'taskparent.h', >++ 'taskrunner.cc', >++ 'taskrunner.h', >++ 'thread.cc', >++ 'thread.h', >++ ], >++ # TODO(henrike): issue 3307, make rtc_base build without disabling >++ # these flags. >++ 'cflags!': [ >++ '-Wextra', >++ '-Wall', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ 'FEATURE_ENABLE_SSL', >++ 'SSL_USE_OPENSSL', >++ 'HAVE_OPENSSL_SSL_H', >++ ], >++ }, >++ 'conditions': [ >++ ['build_with_chromium==1', { >++ 'include_dirs': [ >++ '../../webrtc_overrides', >++ '../../boringssl/src/include', >++ ], >++ 'conditions': [ >++ ['OS=="win"', { >++ 'sources': [ >++ '../../webrtc_overrides/webrtc/base/win32socketinit.cc', >++ ], >++ }], >++ ], >++ 'defines': [ >++ 'NO_MAIN_THREAD_WRAPPING', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ 'NO_MAIN_THREAD_WRAPPING', >++ ], >++ }, >++ }, { >++ 'sources': [ >++ 'callback.h', >++ 'fileutils_mock.h', >++ 'httpserver.cc', >++ 'httpserver.h', >++ 'json.cc', >++ 'json.h', >++ 'logsinks.cc', >++ 'logsinks.h', >++ 'mathutils.h', >++ 'natserver.cc', >++ 'natserver.h', >++ 'natsocketfactory.cc', >++ 'natsocketfactory.h', >++ 'nattypes.cc', >++ 'nattypes.h', >++ 'optionsfile.cc', >++ 'optionsfile.h', >++ 'proxyserver.cc', >++ 'proxyserver.h', >++ 'referencecountedsingletonfactory.h', >++ 'rollingaccumulator.h', >++ 'scopedptrcollection.h', >++ 'sslconfig.h', >++ 'sslroots.h', >++ 'testbase64.h', >++ 'testclient.cc', >++ 'testclient.h', >++ 'transformadapter.cc', >++ 'transformadapter.h', >++ 'virtualsocketserver.cc', >++ 'virtualsocketserver.h', >++ 'window.h', >++ 'windowpicker.h', >++ 'windowpickerfactory.h', >++ ], >++ 'conditions': [ >++ ['build_json==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp', >++ ], >++ }, { >++ 'include_dirs': [ >++ '<(json_root)', >++ ], >++ 'defines': [ >++ # When defined changes the include path for json.h to where it >++ # is expected to be when building json outside of the standalone >++ # build. >++ 'WEBRTC_EXTERNAL_JSON', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ 'macasyncsocket.cc', >++ 'macasyncsocket.h', >++ 'maccocoasocketserver.h', >++ 'maccocoasocketserver.mm', >++ 'macsocketserver.cc', >++ 'macsocketserver.h', >++ 'macwindowpicker.cc', >++ 'macwindowpicker.h', >++ ], >++ }], >++ ['OS=="win"', { >++ 'sources': [ >++ 'diskcache_win32.cc', >++ 'diskcache_win32.h', >++ 'win32regkey.cc', >++ 'win32regkey.h', >++ 'win32socketinit.cc', >++ 'win32socketinit.h', >++ 'win32socketserver.cc', >++ 'win32socketserver.h', >++ ], >++ }], >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-sign-compare', >++ '-Wno-missing-braces', >++ ], >++ }, >++ }, >++ }], >++ ], # conditions >++ }], # build_with_chromium==0 >++ ['OS=="android"', { >++ 'sources': [ >++ 'ifaddrs-android.cc', >++ 'ifaddrs-android.h', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-llog', >++ '-lGLESv2', >++ ], >++ }, >++ }], >++ ['(OS=="mac" or OS=="ios") and nacl_untrusted_build==0', { >++ 'sources': [ >++ 'maccocoathreadhelper.h', >++ 'maccocoathreadhelper.mm', >++ 'macconversion.cc', >++ 'macconversion.h', >++ 'macifaddrs_converter.cc', >++ 'scoped_autorelease_pool.h', >++ 'scoped_autorelease_pool.mm', >++ ], >++ }], >++ ['OS=="ios"', { >++ 'all_dependent_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CFNetwork', >++ '-framework Foundation', >++ '-framework Security', >++ '-framework SystemConfiguration', >++ '-framework UIKit', >++ ], >++ }, >++ }, >++ }], >++ ['use_x11==1', { >++ 'sources': [ >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-ldl', >++ '-lrt', >++ '-lXext', >++ '-lX11', >++ '-lXcomposite', >++ '-lXrender', >++ ], >++ }, >++ }], >++ ['OS=="linux"', { >++ 'link_settings': { >++ 'libraries': [ >++ '-ldl', >++ '-lrt', >++ ], >++ }, >++ }], >++ ['OS=="mac"', { >++# moved by mozilla >++# 'sources': [ >++# 'macutils.cc', >++# 'macutils.h', >++# ], >++ 'all_dependent_settings': { >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework Cocoa', >++ '-framework Foundation', >++ '-framework IOKit', >++ '-framework Security', >++ '-framework SystemConfiguration', >++ ], >++ }, >++ }, >++ }, >++ }], >++ ['OS=="win" and nacl_untrusted_build==0', { >++ 'sources': [ >++# moved by mozilla >++# 'win32.cc', >++# 'win32.h', >++ 'win32filesystem.cc', >++ 'win32filesystem.h', >++ 'win32securityerrors.cc', >++ 'win32window.cc', >++ 'win32window.h', >++ 'win32windowpicker.cc', >++ 'win32windowpicker.h', >++ 'winfirewall.cc', >++ 'winfirewall.h', >++ 'winping.cc', >++ 'winping.h', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-lcrypt32.lib', >++ '-liphlpapi.lib', >++ '-lsecur32.lib', >++ ], >++ }, >++ # Suppress warnings about WIN32_LEAN_AND_MEAN. >++ 'msvs_disabled_warnings': [4005, 4703], >++ 'defines': [ >++ '_CRT_NONSTDC_NO_DEPRECATE', >++ ], >++ }], >++ ['os_posix==1', { >++ 'sources': [ >++ 'ifaddrs_converter.cc', >++ 'ifaddrs_converter.h', >++ 'unixfilesystem.cc', >++ 'unixfilesystem.h', >++ ], >++ 'configurations': { >++ 'Debug_Base': { >++ 'defines': [ >++ # Chromium's build/common.gypi defines this for all posix >++ # _except_ for ios & mac. We want it there as well, e.g. >++ # because ASSERT and friends trigger off of it. >++ '_DEBUG', >++ ], >++ }, >++ } >++ }], >++ ['build_ssl==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/boringssl/boringssl.gyp:boringssl', >++ ], >++ }, { >++ 'include_dirs': [ >++ '<(ssl_root)', >++ ], >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'gtest_prod', >++ 'type': 'static_library', >++ 'sources': [ >++ 'gtest_prod_util.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/base/base_tests.gyp media/webrtc/trunk/webrtc/base/base_tests.gyp >+new file mode 100644 >+index 000000000000..e1d5bc04963a >+--- /dev/null >++++ media/webrtc/trunk/webrtc/base/base_tests.gyp >+@@ -0,0 +1,48 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'targets': [ >++ { >++ 'target_name': 'rtc_base_tests_utils', >++ 'type': 'static_library', >++ 'sources': [ >++ 'unittest_main.cc', >++ # Also use this as a convenient dumping ground for misc files that are >++ # included by multiple targets below. >++ 'fakeclock.cc', >++ 'fakeclock.h', >++ 'fakenetwork.h', >++ 'fakesslidentity.h', >++ 'faketaskrunner.h', >++ 'gunit.h', >++ 'testbase64.h', >++ 'testechoserver.h', >++ 'testutils.h', >++ 'timedelta.h', >++ ], >++ 'defines': [ >++ 'GTEST_RELATIVE_PATH', >++ ], >++ 'dependencies': [ >++ 'base.gyp:rtc_base', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/test/test.gyp:field_trial', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ 'GTEST_RELATIVE_PATH', >++ ], >++ }, >++ 'export_dependent_settings': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/base/sigslot.h media/webrtc/trunk/webrtc/base/sigslot.h >+index 42be10f3728d..079e3aeaa6cf 100644 >+--- media/webrtc/trunk/webrtc/base/sigslot.h >++++ media/webrtc/trunk/webrtc/base/sigslot.h >+@@ -2803,5 +2803,9 @@ namespace sigslot { >+ >+ }; // namespace sigslot >+ >++#endif // TALK_BASE_SIGSLOT_H__ >++#endif // TALK_BASE_SIGSLOT_H__ >++#endif // TALK_BASE_SIGSLOT_H__ >++#endif // TALK_BASE_SIGSLOT_H__ >+ #endif // TALK_BASE_SIGSLOT_H__ >+ #endif // WEBRTC_BASE_SIGSLOT_H__ >+diff --git media/webrtc/trunk/webrtc/build/arm_neon.gypi media/webrtc/trunk/webrtc/build/arm_neon.gypi >+new file mode 100644 >+index 000000000000..41dd50f19ad0 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/arm_neon.gypi >+@@ -0,0 +1,60 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This file sets correct neon flags. Include it if you want to build >++# source with neon intrinsics. >++# To use this, create a gyp target with the following form: >++# { >++# 'target_name': 'my_lib', >++# 'type': 'static_library', >++# 'sources': [ >++# 'foo.c', >++# 'bar.cc', >++# ], >++# 'includes': ['path/to/this/gypi/file'], >++# } >++ >++{ >++ 'cflags!': [ >++ '-mfpu=vfpv3-d16', >++ ], >++ 'cflags_mozilla!': [ >++ '-mfpu=vfpv3-d16', >++ ], >++ 'asflags!': [ >++ '-mfpu=vfpv3-d16', >++ ], >++ 'asflags_mozilla!': [ >++ '-mfpu=vfpv3-d16', >++ ], >++ 'conditions': [ >++ # "-mfpu=neon" is not required for arm64 in GCC. >++ ['target_arch!="arm64"', { >++ 'cflags': [ >++ '-mfpu=neon', >++ ], >++ 'cflags_mozilla': [ >++ '-mfpu=neon', >++ ], >++ 'asflags': [ >++ '-mfpu=neon', >++ ], >++ 'asflags_mozilla': [ >++ '-mfpu=neon', >++ ], >++ }], >++ # Disable GCC LTO on NEON targets due to compiler bug. >++ # TODO(fdegans): Enable this. See crbug.com/408997. >++ ['clang==0 and use_lto==1', { >++ 'cflags!': [ >++ '-flto', >++ '-ffat-lto-objects', >++ ], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/chromium_common.gypi media/webrtc/trunk/webrtc/build/chromium_common.gypi >+new file mode 100644 >+index 000000000000..c8e613497f56 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/chromium_common.gypi >+@@ -0,0 +1,5973 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This ia copy of Chromium's common.gypi before it was deleted. >++# TODO(kjellander): Clean this up as soon we've stopped using GYP entirely. >++{ >++ # Variables expected to be overriden on the GYP command line (-D) or by >++ # ~/.gyp/include.gypi. >++ 'variables': { >++ # Putting a variables dict inside another variables dict looks kind of >++ # weird. This is done so that 'host_arch', 'chromeos', etc are defined as >++ # variables within the outer variables dict here. This is necessary >++ # to get these variables defined for the conditions within this variables >++ # dict that operate on these variables. >++ 'variables': { >++ 'variables': { >++ 'variables': { >++ 'variables': { >++ # Whether we're building a ChromeOS build. >++ 'chromeos%': 0, >++ # Whether we're building the cast (chromecast) shell >++ 'chromecast%': 0, >++ # Whether or not we are using the Aura windowing framework. >++ 'use_aura%': 0, >++ # Whether or not we are building the Ash shell. >++ 'use_ash%': 0, >++ # Whether or not we are using CRAS, the ChromeOS Audio Server. >++ 'use_cras%': 0, >++ # Use a raw surface abstraction. >++ 'use_ozone%': 0, >++ # Configure the build for small devices. See crbug.com/318413 >++ 'embedded%': 0, >++ 'conditions': [ >++ # Compute the architecture that we're building on. >++ ['OS=="win" or OS=="ios"', { >++ 'host_arch%': 'ia32', >++ }, { >++ 'host_arch%': '<!pymod_do_main(detect_host_arch)', >++ }], >++ ], >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'chromeos%': '<(chromeos)', >++ 'chromecast%': '<(chromecast)', >++ 'use_aura%': '<(use_aura)', >++ 'use_ash%': '<(use_ash)', >++ 'use_cras%': '<(use_cras)', >++ 'use_ozone%': '<(use_ozone)', >++ 'embedded%': '<(embedded)', >++ 'host_arch%': '<(host_arch)', >++ # Whether we are using Views Toolkit >++ 'toolkit_views%': 0, >++ # Use the PCI lib to collect GPU information. >++ 'use_libpci%': 1, >++ # Use OpenSSL for representing certificates. When targeting Android, >++ # the platform certificate library is used for certificate >++ # verification. On other targets, this flag also enables OpenSSL for >++ # certificate verification, but this configuration is unsupported. >++ 'use_openssl_certs%': 0, >++ # Whether or not we use external popup menu. >++ 'use_external_popup_menu%': 0, >++ # Disable viewport meta tag by default. >++ 'enable_viewport%': 0, >++ # Enable HiDPI support. >++ 'enable_hidpi%': 0, >++ # Enable Wayland display server support. >++ 'enable_wayland_server%' : 0, >++ # Enable Wi-Fi Display support. >++ # WARNING: This enables MPEG Transport Stream (MPEG-TS) encoding! >++ 'enable_wifi_display%' : 0, >++ # By default we build against a stable sysroot image to avoid >++ # depending on the packages installed on the local machine. Set this >++ # to 0 to build against locally installed headers and libraries (e.g. >++ # if packaging for a linux distro) >++ 'use_sysroot%': 1, >++ # Override buildtype to select the desired build flavor. >++ # Dev - everyday build for development/testing >++ # Official - release build (generally implies additional processing) >++ # TODO(mmoss) Once 'buildtype' is fully supported (e.g. Windows gyp >++ # conversion is done), some of the things which are now controlled by >++ # 'branding', such as symbol generation, will need to be refactored >++ # based on 'buildtype' (i.e. we don't care about saving symbols for >++ # non-Official # builds). >++ 'buildtype%': 'Dev', >++ # Override branding to select the desired branding flavor. >++ 'branding%': 'Chromium', >++ 'conditions': [ >++ # Windows and Linux use Aura, but not Ash. >++ ['OS=="win" or OS=="linux" or OS=="openbsd" or OS=="freebsd"', { >++ 'use_aura%': 1, >++ }], >++ # ChromeOS uses Ash. >++ ['chromeos', { >++ 'use_ash%': 1, >++ }], >++ ['chromecast==1', { >++ 'use_libpci': 0, >++ 'conditions': [ >++ ['OS!="android"', { >++ 'embedded%': 1, >++ 'use_ozone%': 1, >++ }], >++ ], >++ }], >++ # Ozone uses Aura. >++ ['use_ozone==1', { >++ 'use_aura%': 1, >++ }], >++ # Whether we're a traditional desktop unix. >++ ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris") and chromeos==0', { >++ 'desktop_linux%': 1, >++ }, { >++ 'desktop_linux%': 0, >++ }], >++ # Embedded implies ozone. >++ ['embedded==1', { >++ 'use_ozone%': 1, >++ }], >++ # Mac and Android use external popup menu. >++ ['OS=="mac" or OS=="android"', { >++ 'use_external_popup_menu%': 1, >++ }], >++ ['OS=="android"', { >++ 'target_arch%': 'arm', >++ }, { >++ # Default architecture we're building for is the architecture we're >++ # building on, and possibly sub-architecture (for iOS builds). >++ 'target_arch%': '<(host_arch)', >++ }], >++ ], >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'chromeos%': '<(chromeos)', >++ 'chromecast%': '<(chromecast)', >++ 'desktop_linux%': '<(desktop_linux)', >++ 'use_aura%': '<(use_aura)', >++ 'use_ash%': '<(use_ash)', >++ 'use_cras%': '<(use_cras)', >++ 'use_ozone%': '<(use_ozone)', >++ 'embedded%': '<(embedded)', >++ 'use_libpci%': '<(use_libpci)', >++ 'use_openssl_certs%': '<(use_openssl_certs)', >++ 'use_external_popup_menu%': '<(use_external_popup_menu)', >++ 'enable_viewport%': '<(enable_viewport)', >++ 'enable_hidpi%': '<(enable_hidpi)', >++ 'enable_wayland_server%': '<(enable_wayland_server)', >++ 'enable_wifi_display%': '<(enable_wifi_display)', >++ 'buildtype%': '<(buildtype)', >++ 'branding%': '<(branding)', >++ 'branding_path_component%': '<(branding)', >++ 'host_arch%': '<(host_arch)', >++ 'target_arch%': '<(target_arch)', >++ 'use_sysroot%': '<(use_sysroot)', >++ # Set to true to instrument the code with function call logger. >++ # See src/third_party/cygprofile/cyg-profile.cc for details. >++ 'order_profiling%': 0, >++ 'target_subarch%': '', >++ # The channel to build on Android: stable, beta, dev, canary, or >++ # default. "default" should be used on non-official builds. >++ 'android_channel%': 'default', >++ # Set ARM architecture version. >++ 'arm_version%': 7, >++ # Use aurax11 for clipboard implementation. This is true on linux_aura. >++ 'use_clipboard_aurax11%': 0, >++ # goma settings. >++ # 1 to use goma. >++ # If no gomadir is set, it uses the default gomadir. >++ 'use_goma%': 0, >++ 'gomadir%': '', >++ 'chroot_cmd%': '', >++ # The system libdir used for this ABI. >++ 'system_libdir%': 'lib', >++ # Default MIPS arch variant. This is set in the conditions block >++ # below for MIPS targets. >++ 'mips_arch_variant%': '', >++ # MIPS DSP ASE revision. Possible values are: >++ # 0: unavailable >++ # 1: revision 1 >++ # 2: revision 2 >++ 'mips_dsp_rev%': 0, >++ # MIPS SIMD Arch compilation flag. >++ 'mips_msa%': 1, >++ 'conditions': [ >++ ['branding == "Chrome"', { >++ 'branding_path_component%': 'google_chrome', >++ }], >++ ['branding == "Chromium"', { >++ 'branding_path_component%': 'chromium', >++ }], >++ # Ash needs Aura. >++ ['use_aura==0', { >++ 'use_ash%': 0, >++ }], >++ # Set default value of toolkit_views based on OS. >++ ['OS=="mac" or OS=="win" or chromeos==1 or use_aura==1', { >++ 'toolkit_views%': 1, >++ }, { >++ 'toolkit_views%': 0, >++ }], >++ # Embedded builds use aura without ash or views. >++ ['embedded==1', { >++ 'use_aura%': 1, >++ 'use_ash%': 0, >++ 'toolkit_views%': 0, >++ }], >++ # Chromecast builds on x86 Linux should default to desktop builds. >++ ['chromecast==1 and OS=="linux" and (target_arch=="ia32" or target_arch=="x64")', { >++ 'is_cast_desktop_build%': 1, >++ }, { >++ 'is_cast_desktop_build%': 0, >++ }], >++ # Enable HiDPI on Mac OS, Windows and Linux (including Chrome OS). >++ ['OS=="mac" or OS=="win" or OS=="linux" or OS=="openbsd" or OS=="freebsd"', { >++ 'enable_hidpi%': 1, >++ }], >++ # Enable App Launcher on ChromeOS only. >++ ['chromeos==1', { >++ 'enable_app_list%': 1, >++ }, { >++ 'enable_app_list%': 0, >++ }], >++ ['use_aura==1 and OS!="android"', { >++ 'use_default_render_theme%': 1, >++ }, { >++ 'use_default_render_theme%': 0, >++ }], >++ ['use_ozone==1', { >++ 'use_ozone_evdev%': 1, >++ }, { >++ 'use_ozone_evdev%': 0, >++ }], >++ # Set default gomadir. >++ ['OS=="win"', { >++ 'gomadir': 'c:\\goma\\goma-win64', >++ }, { >++ 'gomadir': '<!(/bin/echo -n ${HOME}/goma)', >++ }], >++ # Set the default "target_subarch" on iOS. Valid values are "arm32", >++ # "arm64" and "both" (meaning a fat binary). >++ ['OS=="ios"', { >++ 'target_subarch%': 'arm64', >++ }], >++ # Set arch variants for MIPS platforms. >++ ['target_arch=="mips64el"', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'mips_arch_variant%': 'r6', >++ }, { >++ 'mips_arch_variant%': 'r2', >++ }], >++ ], >++ }], >++ ['target_arch=="mipsel"', { >++ 'mips_arch_variant%': 'r1', >++ }], >++ # The system root for linux builds. >++ ['OS=="linux" and chromeos==0 and use_sysroot==1', { >++ # sysroot needs to be an absolute path otherwise it generates >++ # incorrect results when passed to pkg-config >++ 'conditions': [ >++ ['target_arch=="arm"', { >++ 'sysroot%': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_wheezy_arm-sysroot', >++ }], >++ ['target_arch=="arm64"', { >++ 'sysroot%': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_jessie_arm64-sysroot', >++ }], >++ ['target_arch=="x64"', { >++ 'sysroot%': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_wheezy_amd64-sysroot', >++ }], >++ ['target_arch=="ia32"', { >++ 'sysroot%': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_wheezy_i386-sysroot', >++ }], >++ ['target_arch=="mipsel"', { >++ 'sysroot%': '<!(cd <(DEPTH) && pwd -P)/build/linux/debian_wheezy_mips-sysroot', >++ }], >++ ], >++ }, { >++ 'sysroot%': '' >++ }], # OS=="linux" and use_sysroot==1 >++ ], >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'chromeos%': '<(chromeos)', >++ 'chromecast%': '<(chromecast)', >++ 'is_cast_desktop_build%': '<(is_cast_desktop_build)', >++ 'host_arch%': '<(host_arch)', >++ 'target_arch%': '<(target_arch)', >++ 'target_subarch%': '<(target_subarch)', >++ 'mips_arch_variant%': '<(mips_arch_variant)', >++ 'mips_dsp_rev%': '<(mips_dsp_rev)', >++ 'mips_msa%': '<(mips_msa)', >++ 'toolkit_views%': '<(toolkit_views)', >++ 'desktop_linux%': '<(desktop_linux)', >++ 'use_aura%': '<(use_aura)', >++ 'use_ash%': '<(use_ash)', >++ 'use_cras%': '<(use_cras)', >++ 'use_libpci%': '<(use_libpci)', >++ 'use_ozone%': '<(use_ozone)', >++ 'use_ozone_evdev%': '<(use_ozone_evdev)', >++ 'use_clipboard_aurax11%': '<(use_clipboard_aurax11)', >++ 'embedded%': '<(embedded)', >++ 'use_openssl_certs%': '<(use_openssl_certs)', >++ 'use_external_popup_menu%': '<(use_external_popup_menu)', >++ 'enable_viewport%': '<(enable_viewport)', >++ 'enable_hidpi%': '<(enable_hidpi)', >++ 'enable_wayland_server%': '<(enable_wayland_server)', >++ 'enable_wifi_display%': '<(enable_wifi_display)', >++ 'android_channel%': '<(android_channel)', >++ 'use_goma%': '<(use_goma)', >++ 'gomadir%': '<(gomadir)', >++ 'enable_app_list%': '<(enable_app_list)', >++ 'use_default_render_theme%': '<(use_default_render_theme)', >++ 'buildtype%': '<(buildtype)', >++ 'branding%': '<(branding)', >++ 'branding_path_component%': '<(branding_path_component)', >++ 'arm_version%': '<(arm_version)', >++ 'sysroot%': '<(sysroot)', >++ 'use_sysroot%': '<(use_sysroot)', >++ 'chroot_cmd%': '<(chroot_cmd)', >++ 'system_libdir%': '<(system_libdir)', >++ 'order_profiling%': '<(order_profiling)', >++ # TODO(zforman): Remove as soon as no bots depend on this. >++ 'dont_embed_build_metadata%': 0, >++ # Set to 1 to force Visual C++ to use legacy debug information format /Z7. >++ # This is useful for parallel compilation tools which can't support /Zi. >++ # Only used on Windows. >++ 'win_z7%' : 0, >++ # Set to 1 to enable dcheck in Release build. >++ 'dcheck_always_on%': 0, >++ # Set to 1 to make a build that disables unshipped tracing events. >++ # Note: this setting is ignored if buildtype=="Official". >++ 'tracing_like_official_build%': 0, >++ # Set to 1 to make a build that disables activation of field trial tests >++ # specified in testing/variations/fieldtrial_testing_config_*.json. >++ # Note: this setting is ignored if branding=="Chrome". >++ 'fieldtrial_testing_like_official_build%': 0, >++ # Disable image loader component extension by default. >++ 'image_loader_extension%': 0, >++ # Set NEON compilation flags. >++ 'arm_neon%': 1, >++ # Detect NEON support at run-time. TODO(pasko): This variable is no longer >++ # set to non-zero, remove it when the last official build with NEON >++ # runtime detection propagates to Stable channel. >++ 'arm_neon_optional%': 0, >++ # Use libjpeg-turbo as the JPEG codec used by Chromium. >++ 'use_libjpeg_turbo%': 1, >++ # Use system libjpeg. Note that the system's libjepg will be used even if >++ # use_libjpeg_turbo is set. >++ 'use_system_libjpeg%': 0, >++ # By default, component is set to static_library and it can be overriden >++ # by the GYP command line or by ~/.gyp/include.gypi. >++ 'component%': 'static_library', >++ # /analyze is off by default on Windows because it is very slow and noisy. >++ # Enable with GYP_DEFINES=win_analyze=1 >++ 'win_analyze%': 0, >++ # /debug:fastlink is off by default on Windows because it generates PDBs >++ # that are machine-local. But, great for local builds. >++ # Enable with GYP_DEFINES=win_fastlink=1 >++ 'win_fastlink%': 0, >++ # Experimental setting to optimize Chrome's DLLs with PGO. >++ 'chrome_pgo_phase%': '0', >++ # Experimental setting to build the official builds with full WPO. >++ 'full_wpo_on_official%': '0', >++ # Set to select the Title Case versions of strings in GRD files. >++ 'use_titlecase_in_grd%': 0, >++ # Remoting compilation is enabled by default. Set to 0 to disable. >++ 'remoting%': 1, >++ # Configuration policy is enabled by default. Overridden on some >++ # platforms. This can't be disabled manually since code in src/chrome >++ # assumes this is enabled. >++ 'configuration_policy': 1, >++ # Variable safe_browsing is used to control the build time configuration >++ # for safe browsing feature. Safe browsing can be compiled in 3 different >++ # levels: 0 disables it, 1 enables it fully, and 2 enables mobile >++ # protection via an external API. >++ 'safe_browsing%': 1, >++ # Web speech is enabled by default. Set to 0 to disable. >++ 'enable_web_speech%': 1, >++ # 'Ok Google' hotwording is disabled by default. Set to 1 to enable. (This >++ # will download a closed-source NaCl module at startup.) Chrome-branded >++ # ChromeOS builds have this enabled by default. >++ 'enable_hotwording%': 0, >++ # Notifications are compiled in by default. Set to 0 to disable. >++ 'notifications%' : 1, >++ # Use dsymutil to generate real .dSYM files on Mac. The default is 0 for >++ # regular builds and 1 for ASan builds. >++ 'mac_want_real_dsym%': 'default', >++ # If this is set, the clang plugins used on the buildbot will be used. >++ # Run tools/clang/scripts/update.py to make sure they are compiled. >++ # This causes 'clang_chrome_plugins_flags' to be set. >++ # Has no effect if 'clang' is not set as well. >++ 'clang_use_chrome_plugins%': 1, >++ # Enable building with ASAN (Clang's -fsanitize=address option). >++ # -fsanitize=address only works with clang, but asan=1 implies clang=1 >++ # See https://sites.google.com/a/chromium.org/dev/developers/testing/addresssanitizer >++ 'asan%': 0, >++ 'asan_blacklist%': '<(PRODUCT_DIR)/../../tools/memory/asan/blacklist.txt', >++ # Enable coverage gathering instrumentation in sanitizer tools. This flag >++ # also controls coverage granularity. >++ 'sanitizer_coverage%': '', >++ # Enable intra-object-overflow detection in ASan (experimental). >++ 'asan_field_padding%': 0, >++ # Enable Chromium overrides of the default configurations for various >++ # dynamic tools (like ASan). >++ 'use_sanitizer_options%': 0, >++ # Enable building with SyzyAsan. >++ # See https://github.com/google/syzygy/wiki/SyzyASanHowTo >++ 'syzyasan%': 0, >++ # Enable building with LSan (Clang's -fsanitize=leak option). >++ # -fsanitize=leak only works with clang, but lsan=1 implies clang=1 >++ # See https://sites.google.com/a/chromium.org/dev/developers/testing/leaksanitizer >++ 'lsan%': 0, >++ # Enable building with TSan (Clang's -fsanitize=thread option). >++ # -fsanitize=thread only works with clang, but tsan=1 implies clang=1 >++ # See http://clang.llvm.org/docs/ThreadSanitizer.html >++ 'tsan%': 0, >++ 'tsan_blacklist%': '<(PRODUCT_DIR)/../../tools/memory/tsan_v2/ignores.txt', >++ # Enable building with MSan (Clang's -fsanitize=memory option). >++ # MemorySanitizer only works with clang, but msan=1 implies clang=1 >++ # See http://clang.llvm.org/docs/MemorySanitizer.html >++ 'msan%': 0, >++ 'msan_blacklist%': '<(PRODUCT_DIR)/../../tools/msan/blacklist.txt', >++ # Track where uninitialized memory originates from. From fastest to >++ # slowest: 0 - no tracking, 1 - track only the initial allocation site, 2 >++ # - track the chain of stores leading from allocation site to use site. >++ 'msan_track_origins%': 2, >++ # Enable building with UBSan (Clang's -fsanitize=undefined option). >++ # -fsanitize=undefined only works with clang, but ubsan=1 implies clang=1 >++ # See http://clang.llvm.org/docs/UsersManual.html >++ 'ubsan%': 0, >++ 'ubsan_blacklist%': '<(PRODUCT_DIR)/../../tools/ubsan/blacklist.txt', >++ 'ubsan_security_blacklist%': '<(PRODUCT_DIR)/../../tools/ubsan/security_blacklist.txt', >++ 'ubsan_vptr_blacklist%': '<(PRODUCT_DIR)/../../tools/ubsan/vptr_blacklist.txt', >++ # Enable building with UBsan's vptr (Clang's -fsanitize=vptr option). >++ # -fsanitize=vptr only works with clang, but ubsan_vptr=1 implies clang=1 >++ # ubsan_security also enables UBSan's vptr. >++ 'ubsan_security%': 0, >++ 'ubsan_vptr%': 0, >++ # Use dynamic libraries instrumented by one of the sanitizers >++ # instead of the standard system libraries. Set this flag to build the >++ # libraries from source. >++ 'use_instrumented_libraries%': 0, >++ # Use dynamic libraries instrumented by one of the sanitizers >++ # instead of the standard system libraries. Set this flag to download >++ # prebuilt binaries from GCS. >++ 'use_prebuilt_instrumented_libraries%': 0, >++ # Use libc++ (third_party/libc++ and third_party/libc++abi) instead of >++ # stdlibc++ as standard library. This is intended to use for instrumented >++ # builds. >++ 'use_custom_libcxx%': 0, >++ # Use the provided profiled order file to link Chrome image with it. >++ # This makes Chrome faster by better using CPU cache when executing code. >++ # This is known as PGO (profile guided optimization). >++ # See https://sites.google.com/a/google.com/chrome-msk/dev/boot-speed-up-effort >++ 'order_text_section%' : "", >++ # Set to 1 compile with -fPIC cflag on linux. This is a must for shared >++ # libraries on linux x86-64 and arm, plus ASLR. >++ 'linux_fpic%': 1, >++ # Whether one-click signin is enabled or not. >++ 'enable_one_click_signin%': 0, >++ # Enable Chrome browser extensions >++ 'enable_extensions%': 1, >++ # Enable basic printing support and UI. >++ 'enable_basic_printing%': 1, >++ # Enable printing with print preview. It does not imply >++ # enable_basic_printing. It's possible to build Chrome with preview only. >++ 'enable_print_preview%': 1, >++ # For CLD2, the size of the tables that should be included in the build >++ # See third_party/cld_2/cld_2.gyp for more information. >++ # 0: Small tables, high accuracy >++ # 2: Large tables, higher accuracy >++ 'cld2_table_size%': 2, >++ # Enable spell checker. >++ 'enable_spellcheck%': 1, >++ # Use the operating system spellchecker, e.g. NSSpellChecker on Mac or >++ # SpellCheckerSession on Android. >++ 'use_browser_spellchecker%': 0, >++ # Use Minikin hyphenation engine. >++ 'use_minikin_hyphenation%': 0, >++ # Webrtc compilation is enabled by default. Set to 0 to disable. >++ 'enable_webrtc%': 1, >++ # Media router support is enabled by default. Set to 0 to disable. >++ 'enable_media_router%': 1, >++ # Enables use of the session service, which is enabled by default. >++ # Support for disabling depends on the platform. >++ 'enable_session_service%': 1, >++ # Enables theme support, which is enabled by default. Support for >++ # disabling depends on the platform. >++ 'enable_themes%': 1, >++ # Enable the task manager by default. >++ 'enable_task_manager%': 1, >++ # Enables used resource whitelist generation; disabled by default. >++ 'enable_resource_whitelist_generation%': 0, >++ # Enable FILE support by default. >++ 'disable_file_support%': 0, >++ # Enable FTP support by default. >++ 'disable_ftp_support%': 0, >++ # Do not use the platform ICU alternatives by default. >++ 'use_platform_icu_alternatives%': 0, >++ # Do not disable brotli filter by default. >++ 'disable_brotli_filter%': 0, >++ # Use of precompiled headers on Windows. >++ # >++ # This variable may be explicitly set to 1 (enabled) or 0 >++ # (disabled) in ~/.gyp/include.gypi or via the GYP command line. >++ # This setting will override the default. >++ # >++ # See >++ # https://chromium.googlesource.com/chromium/src/+/master/docs/windows_precompiled_headers.md >++ # for details. >++ 'chromium_win_pch%': 0, >++ # Clang stuff. >++ 'make_clang_dir%': 'third_party/llvm-build/Release+Asserts', >++ # Set this to true when building with Clang. >++ # See https://chromium.googlesource.com/chromium/src/+/master/docs/clang.md for details. >++ # If this is set, clang is used as both host and target compiler in >++ # cross-compile builds. >++ 'clang%': 0, >++ # Use experimental lld linker instead of the platform's default linker. >++ 'use_lld%': 0, >++ # Enable plugin installation by default. >++ 'enable_plugin_installation%': 1, >++ # Specifies whether to use canvas_skia.cc in place of platform >++ # specific implementations of gfx::Canvas. Affects text drawing in the >++ # Chrome UI. >++ # TODO(asvitkine): Enable this on all platforms and delete this flag. >++ # http://crbug.com/105550 >++ 'use_canvas_skia%': 0, >++ # Set to "drmemory" to configure the build to work with DrMemory. >++ 'build_for_tool%': '', >++ 'wix_path%': '<(DEPTH)/third_party/wix', >++ # Supervised users are enabled by default. >++ 'enable_supervised_users%': 1, >++ 'enable_mdns%' : 0, >++ 'enable_service_discovery%': 0, >++ 'enable_hangout_services_extension%': 0, >++ # Enable the Syzygy optimization step. >++ 'syzygy_optimize%': 0, >++ # Automatically select platforms under ozone. Turn this off to >++ # build only explicitly selected platforms. >++ 'ozone_auto_platforms%': 1, >++ # Disable the display for a chromecast build. Set to 1 perform an audio- >++ # only build. >++ 'disable_display%': 0, >++ # If this is set clang is used as host compiler, but not as target >++ # compiler. Always do this by default. >++ 'host_clang%': 1, >++ # Variables to control Link-Time Optimization (LTO). >++ # On Android, when using GCC LTO, the variable use_lto enables LTO on code >++ # compiled with -Os, and use_lto_o2 enables LTO on code compiled with -O2. >++ # On other platforms (including Android with Clang), use_lto enables LTO >++ # in all translation units, and use_lto_o2 has no effect. >++ # >++ # On Linux and Android, when using LLVM LTO, the script >++ # build/download_gold_plugin.py must be run to download a linker plugin. >++ # On Mac, LLVM needs to be built from scratch using >++ # tools/clang/scripts/update.py and the absolute path to >++ # third_party/llvm-build/Release+Asserts/lib must be added to >++ # $DYLD_LIBRARY_PATH to pick up the right version of the linker plugin. >++ # TODO(pcc): Teach build system to use -lto_library flag to specify path >++ # to linker plugin on Mac. >++ # >++ # On Android/GCC, the variables must *not* be enabled at the same time. >++ # In this case LTO would 'merge' the optimization flags at link-time >++ # which would lead to all code be optimized with -O2. See crbug.com/407544 >++ 'use_lto%': 0, >++ 'use_lto_o2%': 0, >++ # Allowed level of identical code folding in the gold linker. >++ 'gold_icf_level%': 'all', >++ # Libxkbcommon usage. >++ 'use_xkbcommon%': 0, >++ # Whether we use GTKv3 on linux. >++ 'use_gtk3%': 0, >++ # Control Flow Integrity for virtual calls and casts. >++ # See http://clang.llvm.org/docs/ControlFlowIntegrity.html >++ 'cfi_vptr%': 0, >++ # TODO(krasin): remove it. See https://crbug.com/626794. >++ 'cfi_cast%': 0, >++ 'cfi_diag%': 0, >++ 'cfi_blacklist%': '<(PRODUCT_DIR)/../../tools/cfi/blacklist.txt', >++ # Whether the entire browser uses toolkit-views on Mac instead of Cocoa. >++ 'mac_views_browser%': 0, >++ # By default, use ICU data file (icudtl.dat). >++ 'icu_use_data_file_flag%': 1, >++ # Turn on JNI generation optimizations by default. >++ 'optimize_jni_generation%': 1, >++ 'conditions': [ >++ # A flag for POSIX platforms >++ ['OS=="win"', { >++ 'os_posix%': 0, >++ }, { >++ 'os_posix%': 1, >++ }], >++ # A flag for BSD platforms >++ ['OS=="freebsd" or OS=="openbsd"', { >++ 'os_bsd%': 1, >++ }, { >++ 'os_bsd%': 0, >++ }], >++ # NSS usage. >++ ['(OS=="linux" or OS=="freebsd" or OS=="openbsd" or OS=="solaris")', { >++ 'use_nss_certs%': 1, >++ }, { >++ 'use_nss_certs%': 0, >++ }], >++ # libudev usage. This currently only affects the content layer. >++ ['OS=="linux" and embedded==0', { >++ 'use_udev%': 1, >++ }, { >++ 'use_udev%': 0, >++ }], >++ # Flags to use X11 on non-Mac POSIX platforms. >++ ['OS=="win" or OS=="mac" or OS=="ios" or OS=="android" or use_ozone==1', { >++ 'use_x11%': 0, >++ }, { >++ 'use_x11%': 1, >++ }], >++ # Flags to use glib. >++ ['OS=="win" or OS=="mac" or OS=="ios" or OS=="android" or use_ozone==1', { >++ 'use_glib%': 0, >++ }, { >++ 'use_glib%': 1, >++ }], >++ # Flags to use Wayland server support. >++ ['chromeos==1', { >++ 'enable_wayland_server%': 1, >++ }, { >++ 'enable_wayland_server%': 0, >++ }], >++ # Flags to use pango and cairo. >++ ['OS=="win" or OS=="mac" or OS=="ios" or OS=="android" or embedded==1', { >++ 'use_pango%': 0, >++ 'use_cairo%': 0, >++ }, { >++ 'use_pango%': 1, >++ 'use_cairo%': 1, >++ }], >++ # DBus usage. >++ ['(OS=="linux" or OS=="openbsd" or OS=="freebsd") and embedded==0', { >++ 'use_dbus%': 1, >++ }, { >++ 'use_dbus%': 0, >++ }], >++ # We always use skia text rendering in Aura on Windows, since GDI >++ # doesn't agree with our BackingStore. >++ # TODO(beng): remove once skia text rendering is on by default. >++ ['use_aura==1 and OS=="win"', { >++ 'enable_skia_text%': 1, >++ }], >++ # A flag to enable or disable our compile-time dependency >++ # on gnome-keyring. If that dependency is disabled, no gnome-keyring >++ # support will be available. This option is useful >++ # for Linux distributions and for Aura. >++ ['OS!="linux" or chromeos==1', { >++ 'use_gnome_keyring%': 0, >++ }, { >++ 'use_gnome_keyring%': 1, >++ }], >++ ['OS=="mac" or OS=="ios"', { >++ # Mac and iOS want Title Case strings >++ 'use_titlecase_in_grd%': 1, >++ }], >++ # Enable loader extensions on Chrome OS. >++ ['chromeos==1', { >++ 'image_loader_extension%': 1, >++ }, { >++ 'image_loader_extension%': 0, >++ }], >++ ['OS=="win" or OS=="mac" or (OS=="linux" and chromeos==0)', { >++ 'enable_one_click_signin%': 1, >++ }], >++ ['OS=="android"', { >++ 'enable_extensions%': 0, >++ 'cld2_table_size%': 0, >++ 'enable_themes%': 0, >++ 'remoting%': 0, >++ 'enable_basic_printing%': 1, >++ 'enable_print_preview%': 0, >++ 'enable_task_manager%':0, >++ }], >++ # Android and OSX have built-in spellcheckers that can be utilized. >++ ['OS=="android" or OS=="mac"', { >++ 'use_browser_spellchecker%': 1, >++ }], >++ # Android has hyphenation dictionaries for Minikin to use. >++ ['OS=="android"', { >++ 'use_minikin_hyphenation%': 1, >++ }], >++ # Enables proprietary codecs and demuxers; e.g. H264, AAC, MP3, and MP4. >++ # We always build Google Chrome and Chromecast with proprietary codecs. >++ ['branding=="Chrome" or chromecast==1', { >++ 'proprietary_codecs%': 1, >++ }, { >++ 'proprietary_codecs%': 0, >++ }], >++ # Enable Link Time Optimization for the official Linux Chrome. >++ # This requires LLVM Gold plugin to be downloaded. >++ # See src/tools/clang/scripts/update.py >++ ['OS=="linux" and target_arch=="x64" and buildtype=="Official" and branding=="Chrome" and chromeos==0', { >++ 'use_lto%': 1, >++ }], >++ # Enable hotwording on Chrome-branded ChromeOS builds. >++ ['branding=="Chrome" and chromeos==1', { >++ 'enable_hotwording%': 1, >++ }], >++ ['OS=="android"', { >++ 'enable_webrtc%': 1, >++ }], >++ ['OS=="ios"', { >++ 'configuration_policy': 0, >++ 'disable_ftp_support%': 1, >++ 'enable_extensions%': 0, >++ 'cld2_table_size%': 0, >++ 'enable_basic_printing%': 0, >++ 'enable_print_preview%': 0, >++ 'enable_session_service%': 0, >++ 'enable_spellcheck%': 0, >++ 'enable_themes%': 0, >++ 'enable_webrtc%': 0, >++ 'notifications%': 0, >++ 'remoting%': 0, >++ 'safe_browsing%': 2, >++ 'enable_supervised_users%': 0, >++ 'enable_task_manager%': 0, >++ 'enable_media_router%': 0, >++ }], >++ # Use GPU accelerated cross process image transport by default >++ # on linux and *BSD builds with the Aura window manager >++ ['use_aura==1 and (OS=="linux" or OS=="openbsd" or OS=="freebsd")', { >++ 'ui_compositor_image_transport%': 1, >++ }, { >++ 'ui_compositor_image_transport%': 0, >++ }], >++ # Turn precompiled headers on by default. >++ ['OS=="win" and buildtype!="Official"', { >++ 'chromium_win_pch%': 1 >++ }], >++ # Whether PDF plugin is enabled, and which options it supports. >++ ['OS=="android" or OS=="ios" or (embedded==1 and chromecast==0)', { >++ 'enable_pdf%': 0, >++ 'pdf_enable_v8%': 0, >++ }, { >++ 'enable_pdf%': 1, >++ 'pdf_enable_v8%': 1, >++ }], >++ ['OS=="android" or OS=="ios" or (embedded==1 and chromecast==0)', { >++ 'pdf_enable_xfa%': 0, >++ }, { >++ 'pdf_enable_xfa%': 0, >++ }], >++ ['chromeos==1 or OS=="android" or OS=="ios" or desktop_linux==1', { >++ 'enable_plugin_installation%': 0, >++ }, { >++ 'enable_plugin_installation%': 1, >++ }], >++ # Whether PPAPI is enabled. >++ ['OS=="android" or OS=="ios" or (embedded==1 and chromecast==0)', { >++ 'enable_plugins%': 0, >++ }, { >++ 'enable_plugins%': 1, >++ }], >++ # linux_use_bundled_gold: whether to use the gold linker binary checked >++ # into third_party/binutils. Force this off via GYP_DEFINES when you >++ # are using a custom toolchain and need to control -B in ldflags. >++ # Do not use 32-bit gold on 32-bit hosts as it runs out address space >++ # for component=static_library builds. >++ ['((OS=="linux" or OS=="android") and (target_arch=="x64" or target_arch=="arm" or (target_arch=="ia32" and host_arch=="x64"))) or (OS=="linux" and target_arch=="mipsel")', { >++ 'linux_use_bundled_gold%': 1, >++ }, { >++ 'linux_use_bundled_gold%': 0, >++ }], >++ # linux_use_bundled_binutils: whether to use the binary binutils >++ # checked into third_party/binutils. These are not multi-arch so cannot >++ # be used except on x86 and x86-64 (the only two architectures which >++ # are currently checke in). Force this off via GYP_DEFINES when you >++ # are using a custom toolchain and need to control -B in cflags. >++ ['OS=="linux" and (target_arch=="x64")', { >++ 'linux_use_bundled_binutils%': 1, >++ }, { >++ 'linux_use_bundled_binutils%': 0, >++ }], >++ # linux_use_gold_flags: whether to use build flags that rely on gold. >++ # On by default for x64 Linux. >++ ['OS=="linux" and target_arch=="x64"', { >++ 'linux_use_gold_flags%': 1, >++ }, { >++ 'linux_use_gold_flags%': 0, >++ }], >++ # linux_use_debug_fission: whether to use split DWARF debug info >++ # files. This can reduce link time significantly, but is incompatible >++ # with some utilities such as icecc and ccache. Requires gold and >++ # gcc >= 4.8 or clang. >++ # http://gcc.gnu.org/wiki/DebugFission >++ ['OS=="linux" and target_arch=="x64"', { >++ 'linux_use_debug_fission%': 1, >++ }, { >++ 'linux_use_debug_fission%': 0, >++ }], >++ ['OS=="android" or OS=="ios"', { >++ 'enable_captive_portal_detection%': 0, >++ }, { >++ 'enable_captive_portal_detection%': 1, >++ }], >++ # Enable Skia UI text drawing incrementally on different platforms. >++ # http://crbug.com/105550 >++ # >++ # On Aura, this allows per-tile painting to be used in the browser >++ # compositor. >++ ['OS!="android" and OS!="ios"', { >++ 'use_canvas_skia%': 1, >++ }], >++ ['chromeos==1', { >++ 'enable_basic_printing%': 1, >++ 'enable_print_preview%': 1, >++ }], >++ # Whether tests targets should be run, archived or just have the >++ # dependencies verified. All the tests targets have the '_run' suffix, >++ # e.g. base_unittests_run runs the target base_unittests. The test >++ # target always calls tools/swarming_client/isolate.py. See the script's >++ # --help for more information. Meant to be overriden with GYP_DEFINES. >++ # TODO(maruel): Remove the conditions as more configurations are >++ # supported. >++ ['OS!="ios" and OS!="android" and chromeos==0 and OS!="openbsd" and OS!="freebsd"', { >++ 'test_isolation_mode%': 'check', >++ }, { >++ 'test_isolation_mode%': 'noop', >++ }], >++ # Whether Android build uses OpenMAX DL FFT. >++ ['OS=="android" and ((target_arch=="arm" and arm_version >= 7) or target_arch=="ia32" or target_arch=="x64" or target_arch=="arm64" or target_arch=="mipsel")', { >++ # Currently only supported on Android ARMv7+, ARM64, ia32, x64 and mipsel. >++ # When enabled, this will also enable WebAudio support on >++ # Android for these architectures. Default is enabled. Whether >++ # WebAudio is actually available depends on runtime settings >++ # and flags. >++ 'use_openmax_dl_fft%': 1, >++ }, { >++ 'use_openmax_dl_fft%': 0, >++ }], >++ ['OS=="win" or OS=="linux" or OS=="openbsd" or OS=="freebsd"', { >++ 'enable_mdns%' : 1, >++ }], >++ # Disable various features by default on embedded. >++ ['embedded==1', { >++ 'remoting%': 0, >++ 'enable_basic_printing%': 0, >++ 'enable_print_preview%': 0, >++ }], >++ ['sysroot!=""', { >++ 'pkg-config': '<(chroot_cmd) <(DEPTH)/build/linux/pkg-config-wrapper "<(sysroot)" "<(target_arch)" "<(system_libdir)"', >++ }, { >++ 'pkg-config': 'pkg-config' >++ }], >++ # Enable WebVR support by default on Android >++ # Still requires command line flag to access API >++ ['OS=="android"', { >++ 'enable_webvr%': 1, >++ }, { >++ 'enable_webvr%': 0, >++ }], >++ ['order_profiling==0', { >++ # Set to 1 to enable fast builds. Set to 2 for even faster builds >++ # (it disables debug info for fastest compilation - only for use >++ # on compile-only bots). >++ 'fastbuild%': 0, >++ }, { >++ # With instrumentation enabled, debug info puts libchrome.so over 4gb, >++ # which causes the linker to produce an invalid ELF. >++ # http://crbug.com/574476 >++ 'fastbuild%': 2, >++ }], >++ ], >++ # Kasko reporting is disabled by default, but may get enabled below. >++ 'kasko%': 0, >++ # Setting this to '0' will cause V8's startup snapshot to be >++ # embedded in the binary instead of being a external files. >++ 'v8_use_external_startup_data%': 1, >++ # Set this to 1 to enable use of concatenated impulse responses >++ # for the HRTF panner in WebAudio. >++ 'use_concatenated_impulse_responses': 1, >++ # You can set the variable 'use_official_google_api_keys' to 1 >++ # to use the Google-internal file containing official API keys >++ # for Google Chrome even in a developer build. Setting this >++ # variable explicitly to 1 will cause your build to fail if the >++ # internal file is missing. >++ # >++ # The variable is documented here, but not handled in this file; >++ # see //google_apis/determine_use_official_keys.gypi for the >++ # implementation. >++ # >++ # Set the variable to 0 to not use the internal file, even when >++ # it exists in your checkout. >++ # >++ # Leave it unset in your include.gypi to have the variable >++ # implicitly set to 1 if you have >++ # src/google_apis/internal/google_chrome_api_keys.h in your >++ # checkout, and implicitly set to 0 if not. >++ # >++ # Note that official builds always behave as if the variable >++ # was explicitly set to 1, i.e. they always use official keys, >++ # and will fail to build if the internal file is missing. >++ # >++ # NOTE: You MUST NOT explicitly set the variable to 2 in your >++ # include.gypi or by other means. Due to subtleties of GYP, this >++ # is not the same as leaving the variable unset, even though its >++ # default value in >++ # //google_apis/determine_use_official_keys.gypi is 2. >++ # Set these to bake the specified API keys and OAuth client >++ # IDs/secrets into your build. >++ # >++ # If you create a build without values baked in, you can instead >++ # set environment variables to provide the keys at runtime (see >++ # src/google_apis/google_api_keys.h for details). Features that >++ # require server-side APIs may fail to work if no keys are >++ # provided. >++ # >++ # Note that if you are building an official build or if >++ # use_official_google_api_keys has been set to 1 (explicitly or >++ # implicitly), these values will be ignored and the official >++ # keys will be used instead. >++ 'google_api_key%': '', >++ 'google_default_client_id%': '', >++ 'google_default_client_secret%': '', >++ # Native Client is enabled by default. >++ 'disable_nacl%': '0', >++ # Native Client toolchains, enabled by default. >++ 'disable_pnacl%': 0, >++ 'disable_newlib%': 0, >++ # Sets the default version name and code for Android app, by default we >++ # do a developer build. >++ 'android_app_version_name%': 'Developer Build', >++ 'android_app_version_code%': 1, >++ # Use the internal version of the framework to build Android WebView. >++ 'use_webview_internal_framework%': 0, >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'branding%': '<(branding)', >++ 'branding_path_component%': '<(branding_path_component)', >++ 'buildtype%': '<(buildtype)', >++ 'target_arch%': '<(target_arch)', >++ 'target_subarch%': '<(target_subarch)', >++ 'mips_arch_variant%': '<(mips_arch_variant)', >++ 'mips_dsp_rev%': '<(mips_dsp_rev)', >++ 'mips_msa%': '<(mips_msa)', >++ 'host_arch%': '<(host_arch)', >++ 'toolkit_views%': '<(toolkit_views)', >++ 'ui_compositor_image_transport%': '<(ui_compositor_image_transport)', >++ 'use_aura%': '<(use_aura)', >++ 'use_ash%': '<(use_ash)', >++ 'use_cras%': '<(use_cras)', >++ 'use_libpci%': '<(use_libpci)', >++ 'use_openssl_certs%': '<(use_openssl_certs)', >++ 'use_external_popup_menu%': '<(use_external_popup_menu)', >++ 'use_nss_certs%': '<(use_nss_certs)', >++ 'use_udev%': '<(use_udev)', >++ 'os_bsd%': '<(os_bsd)', >++ 'os_posix%': '<(os_posix)', >++ 'use_dbus%': '<(use_dbus)', >++ 'use_glib%': '<(use_glib)', >++ 'use_pango%': '<(use_pango)', >++ 'use_cairo%': '<(use_cairo)', >++ 'use_ozone%': '<(use_ozone)', >++ 'use_ozone_evdev%': '<(use_ozone_evdev)', >++ 'use_xkbcommon%': '<(use_xkbcommon)', >++ 'use_gtk3%': '<(use_gtk3)', >++ 'use_clipboard_aurax11%': '<(use_clipboard_aurax11)', >++ 'desktop_linux%': '<(desktop_linux)', >++ 'use_x11%': '<(use_x11)', >++ 'use_gnome_keyring%': '<(use_gnome_keyring)', >++ 'linux_fpic%': '<(linux_fpic)', >++ 'chromeos%': '<(chromeos)', >++ 'chromecast%': '<(chromecast)', >++ 'is_cast_desktop_build%': '<(is_cast_desktop_build)', >++ 'enable_viewport%': '<(enable_viewport)', >++ 'enable_hidpi%': '<(enable_hidpi)', >++ 'enable_wayland_server%': '<(enable_wayland_server)', >++ 'enable_wifi_display%': '<(enable_wifi_display)', >++ 'image_loader_extension%': '<(image_loader_extension)', >++ 'fastbuild%': '<(fastbuild)', >++ 'win_z7%': '<(win_z7)', >++ 'dcheck_always_on%': '<(dcheck_always_on)', >++ 'tracing_like_official_build%': '<(tracing_like_official_build)', >++ 'fieldtrial_testing_like_official_build%': '<(fieldtrial_testing_like_official_build)', >++ 'arm_version%': '<(arm_version)', >++ 'arm_neon%': '<(arm_neon)', >++ 'arm_neon_optional%': '<(arm_neon_optional)', >++ 'sysroot%': '<(sysroot)', >++ 'use_sysroot%': '<(use_sysroot)', >++ 'pkg-config%': '<(pkg-config)', >++ 'chroot_cmd%': '<(chroot_cmd)', >++ 'system_libdir%': '<(system_libdir)', >++ 'component%': '<(component)', >++ 'win_analyze%': '<(win_analyze)', >++ 'win_fastlink%': '<(win_fastlink)', >++ 'chrome_pgo_phase%': '<(chrome_pgo_phase)', >++ 'full_wpo_on_official%': '<(full_wpo_on_official)', >++ 'enable_resource_whitelist_generation%': '<(enable_resource_whitelist_generation)', >++ 'use_titlecase_in_grd%': '<(use_titlecase_in_grd)', >++ 'remoting%': '<(remoting)', >++ 'enable_one_click_signin%': '<(enable_one_click_signin)', >++ 'enable_media_router%': '<(enable_media_router)', >++ 'enable_webrtc%': '<(enable_webrtc)', >++ 'chromium_win_pch%': '<(chromium_win_pch)', >++ 'configuration_policy': '<(configuration_policy)', >++ 'safe_browsing%': '<(safe_browsing)', >++ 'enable_web_speech%': '<(enable_web_speech)', >++ 'enable_hotwording%': '<(enable_hotwording)', >++ 'notifications%': '<(notifications)', >++ 'clang_use_chrome_plugins%': '<(clang_use_chrome_plugins)', >++ 'mac_want_real_dsym%': '<(mac_want_real_dsym)', >++ 'asan%': '<(asan)', >++ 'asan_blacklist%': '<(asan_blacklist)', >++ 'sanitizer_coverage%': '<(sanitizer_coverage)', >++ 'asan_field_padding%': '<(asan_field_padding)', >++ 'use_sanitizer_options%': '<(use_sanitizer_options)', >++ 'syzyasan%': '<(syzyasan)', >++ 'kasko%': '<(kasko)', >++ 'syzygy_optimize%': '<(syzygy_optimize)', >++ 'lsan%': '<(lsan)', >++ 'msan%': '<(msan)', >++ 'msan_blacklist%': '<(msan_blacklist)', >++ 'msan_track_origins%': '<(msan_track_origins)', >++ 'tsan%': '<(tsan)', >++ 'tsan_blacklist%': '<(tsan_blacklist)', >++ 'ubsan%': '<(ubsan)', >++ 'ubsan_blacklist%': '<(ubsan_blacklist)', >++ 'ubsan_security%': '<(ubsan_security)', >++ 'ubsan_security_blacklist%': '<(ubsan_security_blacklist)', >++ 'ubsan_vptr%': '<(ubsan_vptr)', >++ 'ubsan_vptr_blacklist%': '<(ubsan_vptr_blacklist)', >++ 'use_instrumented_libraries%': '<(use_instrumented_libraries)', >++ 'use_prebuilt_instrumented_libraries%': '<(use_prebuilt_instrumented_libraries)', >++ 'use_custom_libcxx%': '<(use_custom_libcxx)', >++ 'order_profiling%': '<(order_profiling)', >++ 'order_text_section%': '<(order_text_section)', >++ 'enable_extensions%': '<(enable_extensions)', >++ 'enable_pdf%': '<(enable_pdf)', >++ 'pdf_enable_v8%': '<(pdf_enable_v8)', >++ 'pdf_enable_xfa%': '<(pdf_enable_xfa)', >++ 'enable_plugin_installation%': '<(enable_plugin_installation)', >++ 'enable_plugins%': '<(enable_plugins)', >++ 'enable_session_service%': '<(enable_session_service)', >++ 'enable_themes%': '<(enable_themes)', >++ 'linux_use_bundled_gold%': '<(linux_use_bundled_gold)', >++ 'linux_use_bundled_binutils%': '<(linux_use_bundled_binutils)', >++ 'linux_use_gold_flags%': '<(linux_use_gold_flags)', >++ 'linux_use_debug_fission%': '<(linux_use_debug_fission)', >++ 'use_canvas_skia%': '<(use_canvas_skia)', >++ 'test_isolation_mode%': '<(test_isolation_mode)', >++ 'enable_basic_printing%': '<(enable_basic_printing)', >++ 'enable_print_preview%': '<(enable_print_preview)', >++ 'enable_spellcheck%': '<(enable_spellcheck)', >++ 'use_browser_spellchecker%': '<(use_browser_spellchecker)', >++ 'use_minikin_hyphenation%': '<(use_minikin_hyphenation)', >++ 'cld2_table_size%': '<(cld2_table_size)', >++ 'enable_captive_portal_detection%': '<(enable_captive_portal_detection)', >++ 'disable_file_support%': '<(disable_file_support)', >++ 'disable_ftp_support%': '<(disable_ftp_support)', >++ 'use_platform_icu_alternatives%': '<(use_platform_icu_alternatives)', >++ 'disable_brotli_filter%': '<(disable_brotli_filter)', >++ 'enable_task_manager%': '<(enable_task_manager)', >++ 'wix_path%': '<(wix_path)', >++ 'use_libjpeg_turbo%': '<(use_libjpeg_turbo)', >++ 'use_system_libjpeg%': '<(use_system_libjpeg)', >++ 'android_channel%': '<(android_channel)', >++ 'icu_use_data_file_flag%': '<(icu_use_data_file_flag)', >++ 'gyp_managed_install%': 0, >++ 'create_standalone_apk%': 1, >++ 'enable_app_list%': '<(enable_app_list)', >++ 'use_default_render_theme%': '<(use_default_render_theme)', >++ 'google_api_key%': '<(google_api_key)', >++ 'google_default_client_id%': '<(google_default_client_id)', >++ 'google_default_client_secret%': '<(google_default_client_secret)', >++ 'enable_supervised_users%': '<(enable_supervised_users)', >++ 'enable_mdns%' : '<(enable_mdns)', >++ 'enable_service_discovery%' : '<(enable_service_discovery)', >++ 'enable_hangout_services_extension%' : '<(enable_hangout_services_extension)', >++ 'proprietary_codecs%': '<(proprietary_codecs)', >++ 'use_goma%': '<(use_goma)', >++ 'gomadir%': '<(gomadir)', >++ 'use_lto%': '<(use_lto)', >++ 'use_lto_o2%': '<(use_lto_o2)', >++ 'gold_icf_level%': '<(gold_icf_level)', >++ 'v8_use_external_startup_data%': '<(v8_use_external_startup_data)', >++ 'cfi_vptr%': '<(cfi_vptr)', >++ 'cfi_cast%': '<(cfi_cast)', >++ 'cfi_diag%': '<(cfi_diag)', >++ 'cfi_blacklist%': '<(cfi_blacklist)', >++ 'mac_views_browser%': '<(mac_views_browser)', >++ 'android_app_version_name%': '<(android_app_version_name)', >++ 'android_app_version_code%': '<(android_app_version_code)', >++ 'use_webview_internal_framework%': '<(use_webview_internal_framework)', >++ 'enable_webvr%': '<(enable_webvr)', >++ # Turns on compiler optimizations in V8 in Debug build. >++ 'v8_optimized_debug%': 1, >++ # Use system protobuf instead of bundled one. >++ 'use_system_protobuf%': 0, >++ # Use system yasm instead of bundled one. >++ 'use_system_yasm%': 0, >++ # Use system ICU instead of bundled one. >++ 'use_system_icu%' : 0, >++ # Default to enabled PIE; this is important for ASLR but we may need to be >++ # able to turn it off for various reasons. >++ 'linux_disable_pie%': 0, >++ # The release channel that this build targets. This is used to restrict >++ # channel-specific build options, like which installer packages to create. >++ # The default is 'all', which does no channel-specific filtering. >++ 'channel%': 'all', >++ # Override chromium_mac_pch and set it to 0 to suppress the use of >++ # precompiled headers on the Mac. Prefix header injection may still be >++ # used, but prefix headers will not be precompiled. This is useful when >++ # using distcc to distribute a build to compile slaves that don't >++ # share the same compiler executable as the system driving the compilation, >++ # because precompiled headers rely on pointers into a specific compiler >++ # executable's image. Setting this to 0 is needed to use an experimental >++ # Linux-Mac cross compiler distcc farm. >++ 'chromium_mac_pch%': 1, >++ # The default value for mac_strip in target_defaults. This cannot be >++ # set there, per the comment about variable% in a target_defaults. >++ 'mac_strip_release%': 0, >++ # Set to 1 to enable java code coverage. Instruments classes during build >++ # to produce .ec files during runtime. >++ 'emma_coverage%': 0, >++ # EMMA filter string consisting of a list of inclusion/exclusion patterns >++ # separated with whitespace and/or comma. Only has effect if >++ # 'emma_coverage=1'. >++ 'emma_filter%': '', >++ # Set to 1 to enable running Android lint on java/class files. >++ 'android_lint%': 1, >++ # Although base/allocator lets you select a heap library via an >++ # environment variable, the shim it uses sometimes gets in the way. >++ # To disable it entirely, and switch to normal msvcrt, do e.g. >++ # 'win_use_allocator_shim': 0, >++ # 'win_release_RuntimeLibrary': 2 >++ # to ~/.gyp/include.gypi, gclient runhooks --force, and do a release build. >++ 'win_use_allocator_shim%': 1, # 1 = shim allocator; 0 = msvcrt >++ # Enables the unified allocator shim (experimental) which routes all the >++ # alloc calls to base/. Right now is supported on Linux Desktop only. >++ # http://crbug.com/550886 . >++ 'use_experimental_allocator_shim%': 0, >++ # TODO(bradnelson): eliminate this when possible. >++ # To allow local gyp files to prevent release.vsprops from being included. >++ # Yes(1) means include release.vsprops. >++ # Once all vsprops settings are migrated into gyp, this can go away. >++ 'msvs_use_common_release%': 1, >++ # TODO(bradnelson): eliminate this when possible. >++ # To allow local gyp files to override additional linker options for msvs. >++ # Yes(1) means set use the common linker options. >++ 'msvs_use_common_linker_extras%': 1, >++ # TODO(sgk): eliminate this if possible. >++ # It would be nicer to support this via a setting in 'target_defaults' >++ # in chrome/app/locales/locales.gypi overriding the setting in the >++ # 'Debug' configuration in the 'target_defaults' dict below, >++ # but that doesn't work as we'd like. >++ 'msvs_debug_link_incremental%': '2', >++ # Needed for some of the largest modules. >++ 'msvs_debug_link_nonincremental%': '1', >++ # Turns on Use Library Dependency Inputs for linking chrome.dll on Windows >++ # to get incremental linking to be faster in debug builds. >++ 'incremental_chrome_dll%': '0', >++ # Experimental setting to break chrome.dll into multiple pieces based on >++ # process type. >++ 'chrome_multiple_dll%': '0', >++ # Whether the VS xtree header has been patched to disable warning 4702. If >++ # it has, then we don't need to disable 4702 (unreachable code warning). >++ # The patch is preapplied to the internal toolchain and hence all bots. >++ 'msvs_xtree_patched%': '<!pymod_do_main(win_is_xtree_patched)', >++ # Clang stuff. >++ 'clang%': '<(clang)', >++ 'host_clang%': '<(host_clang)', >++ 'make_clang_dir%': '<(make_clang_dir)', >++ 'use_lld%': '<(use_lld)', >++ # Control which version of clang to use when building for iOS. If set to >++ # '1', uses the version of clang that ships with Xcode. If set to '0', uses >++ # the version of clang that ships with the Chromium source. This variable >++ # is automatically set to '1' in Official builds. >++ 'clang_xcode%': 0, >++ # These two variables can be set in GYP_DEFINES while running >++ # |gclient runhooks| to let clang run a plugin in every compilation. >++ # Only has an effect if 'clang=1' is in GYP_DEFINES as well. >++ # Example: >++ # GYP_DEFINES='clang=1 clang_load=/abs/path/to/libPrintFunctionNames.dylib clang_add_plugin=print-fns' gclient runhooks >++ 'clang_load%': '', >++ 'clang_add_plugin%': '', >++ # Tell ld64 to write map files describing binary layout. Useful >++ # for looking at what contributes to binary size, e.g. with >++ # https://github.com/nico/bloat >++ 'mac_write_linker_maps%': 0, >++ # The default type of gtest. >++ 'gtest_target_type%': 'executable', >++ # Enable sampling based profiler. >++ # See http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html >++ 'profiling%': '0', >++ # Profile without optimizing out stack frames when profiling==1. >++ 'profiling_full_stack_frames%': '0', >++ # And if we want to dump symbols for Breakpad-enabled builds. >++ 'linux_dump_symbols%': 0, >++ # And if we want to strip the binary after dumping symbols. >++ 'linux_strip_binary%': 0, >++ # If we want stack unwind support for backtrace(). >++ 'debug_unwind_tables%': 1, >++ 'release_unwind_tables%': 1, >++ # Override where to find binutils >++ 'binutils_version%': 0, >++ 'binutils_dir%': '', >++ # Enable TCMalloc. >++ # Default of 'use_allocator' is set to 'none' if OS=='android' later. >++ 'use_allocator%': 'tcmalloc', >++ # Set to 1 to link against gsettings APIs instead of using dlopen(). >++ 'linux_link_gsettings%': 0, >++ # Enable use of OpenMAX DL FFT routines. >++ 'use_openmax_dl_fft%': '<(use_openmax_dl_fft)', >++ # Enable new NPDevice API. >++ 'enable_new_npdevice_api%': 0, >++ # .gyp files or targets should set chromium_code to 1 if they build >++ # Chromium-specific code, as opposed to external code. This variable is >++ # used to control such things as the set of warnings to enable, and >++ # whether warnings are treated as errors. >++ 'chromium_code%': 0, >++ # Disable fatal linker warnings, similarly to how we make it possible >++ # to disable -Werror (e.g. for different toolchain versions). >++ 'disable_fatal_linker_warnings%': 0, >++ 'release_valgrind_build%': 0, >++ # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 >++ 'enable_wexit_time_destructors%': 0, >++ # Set to 1 to compile with the OpenGL ES 2.0 conformance tests. >++ 'internal_gles2_conform_tests%': 0, >++ # Set to 1 to compile with the Khronos GL-CTS conformance tests. >++ 'internal_khronos_glcts_tests%': 0, >++ # Set to 1 to compile the filter fuzzer. >++ 'internal_filter_fuzzer%': 0, >++ # NOTE: When these end up in the Mac bundle, we need to replace '-' for '_' >++ # so Cocoa is happy (http://crbug.com/20441). >++ 'locales': [ >++ 'am', 'ar', 'bg', 'bn', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', >++ 'en-US', 'es-419', 'es', 'et', 'fa', 'fi', 'fil', 'fr', 'gu', 'he', >++ 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lt', 'lv', >++ 'ml', 'mr', 'ms', 'nb', 'nl', 'pl', 'pt-BR', 'pt-PT', 'ro', 'ru', >++ 'sk', 'sl', 'sr', 'sv', 'sw', 'ta', 'te', 'th', 'tr', 'uk', >++ 'vi', 'zh-CN', 'zh-TW', >++ ], >++ # Pseudo locales are special locales which are used for testing and >++ # debugging. They don't get copied to the final app. For more info, >++ # check out https://www.chromium.org/developers/testing/fake-bidi >++ 'pseudo_locales': [ >++ 'fake-bidi', >++ ], >++ 'grit_defines': [], >++ # If debug_devtools is set to 1, JavaScript files for DevTools are >++ # stored as is and loaded from disk. Otherwise, a concatenated file >++ # is stored in resources.pak. It is still possible to load JS files >++ # from disk by passing --debug-devtools cmdline switch. >++ 'debug_devtools%': 0, >++ # The Java Bridge is not compiled in by default. >++ 'java_bridge%': 0, >++ # Code signing for iOS binaries. The bots need to be able to disable this. >++ 'chromium_ios_signing%': 1, >++ # Identity to use for code signing of iOS binaries. Change this on machines >++ # with multiple identities in their security keychain. >++ 'chromium_ios_signing_identity%': 'iPhone Developer', >++ # This flag is only used when disable_nacl==0 and disables all those >++ # subcomponents which would require the installation of a native_client >++ # untrusted toolchain. >++ 'disable_nacl_untrusted%': 0, >++ # PNaCl toolchain does not support sanitizers. Disable by default. >++ 'enable_nacl_nonsfi_test%': 0, >++ # Disable Dart by default. >++ 'enable_dart%': 0, >++ # Copy out the setting of disable_nacl. >++ 'disable_nacl%': '<(disable_nacl)', >++ # Native Client toolchains, enabled by default. >++ 'disable_pnacl%': '<(disable_pnacl)', >++ 'disable_newlib%': '<(disable_newlib)', >++ # Whether to build full debug version for Debug configuration on Android. >++ # Compared to full debug version, the default Debug configuration on Android >++ # has no full v8 debug, has size optimization and linker gc section, so that >++ # we can build a debug version with acceptable size and performance. >++ 'android_full_debug%': 0, >++ # Contains data about the attached devices for gyp_managed_install. >++ 'build_device_config_path': '<(PRODUCT_DIR)/build_devices.cfg', >++ 'wix_exists': '<!pymod_do_main(dir_exists "<(wix_path)")', >++ 'windows_sdk_path%': 'C:/Program Files (x86)/Windows Kits/10', >++ 'directx_sdk_default_path': '<(DEPTH)/third_party/directxsdk/files', >++ # Whether we are using the rlz library or not. Platforms like Android send >++ # rlz codes for searches but do not use the library. >++ 'enable_rlz_support%': 0, >++ 'enable_rlz%': 0, >++ # Turns on the i18n support in V8. >++ 'v8_enable_i18n_support': 1, >++ # Compile the v8 shell for the host toolset. >++ 'v8_toolset_for_shell': 'host', >++ # V8 extras >++ # Adding V8 extras files requires API owners review >++ # Be sure to synchronize with build/module_args/v8.gni >++ 'v8_extra_library_files': [ >++ '../third_party/WebKit/Source/core/streams/ByteLengthQueuingStrategy.js', >++ '../third_party/WebKit/Source/core/streams/CountQueuingStrategy.js', >++ '../third_party/WebKit/Source/core/streams/ReadableStream.js', >++ ], >++ 'v8_experimental_extra_library_files': [ >++ ], >++ # Use brlapi from brltty for braille display support. >++ 'use_brlapi%': 0, >++ # Relative path to icu.gyp from this file. >++ 'icu_gyp_path': '../third_party/icu/icu.gyp', >++ # IPC fuzzer is disabled by default. >++ 'enable_ipc_fuzzer%': 0, >++ # Force disable libstdc++ debug mode. >++ 'disable_glibcxx_debug%': 0, >++ # Support ChromeOS touchpad gestures with ozone. >++ 'use_evdev_gestures%': 0, >++ # Default ozone platform (if no --ozone-platform flag). >++ 'ozone_platform%': "", >++ # Ozone platforms to include in the build. >++ 'ozone_platform_caca%': 0, >++ 'ozone_platform_cast%': 0, >++ 'ozone_platform_gbm%': 0, >++ 'ozone_platform_headless%': 0, >++ 'ozone_platform_wayland%': 0, >++ # Experiment: http://crbug.com/426914 >++ 'envoy%': 0, >++ # Used to set libjpeg_gyp_path. Chrome OS ui/gfx/gfx.gyp uses the IJG path >++ # for robust login screen decoding. >++ 'libjpeg_ijg_gyp_path': '<(DEPTH)/third_party/libjpeg/libjpeg.gyp', >++ 'libjpeg_turbo_gyp_path': '<(DEPTH)/third_party/libjpeg_turbo/libjpeg.gyp', >++ 'conditions': [ >++ # Enable the Syzygy optimization step for the official builds. >++ ['OS=="win" and buildtype=="Official" and syzyasan!=1 and clang!=1', { >++ 'syzygy_optimize%': 1, >++ }, { >++ 'syzygy_optimize%': 0, >++ }], >++ ['sanitizer_coverage==1', { >++ 'sanitizer_coverage': 'edge,indirect-calls,8bit-counters', >++ }], >++ # Get binutils version so we can enable debug fission if we can. >++ ['os_posix==1 and OS!="mac" and OS!="ios"', { >++ 'conditions': [ >++ # compiler_version doesn't work with clang >++ # TODO(mithro): Land https://codereview.chromium.org/199793014/ so >++ # compiler_version works with clang. >++ # TODO(glider): set clang to 1 earlier for ASan and TSan builds so >++ # that it takes effect here. >++ ['clang==0 and asan==0 and lsan==0 and tsan==0 and msan==0 and ubsan==0 and ubsan_security==0 and ubsan_vptr==0', { >++ 'binutils_version%': '<!pymod_do_main(compiler_version target assembler)', >++ }], >++ # On Android we know the binutils version in the toolchain. >++ ['OS=="android"', { >++ 'binutils_version%': 222, >++ }], >++ ['host_arch=="x64"', { >++ 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin', >++ }], >++ ['host_arch=="ia32"', { >++ 'binutils_dir%': 'third_party/binutils/Linux_ia32/Release/bin', >++ }], >++ # Our version of binutils in third_party/binutils >++ ['linux_use_bundled_binutils==1', { >++ 'binutils_version%': 224, >++ }], >++ ], >++ }, { >++ 'binutils_version%': 0, >++ }], >++ ['OS=="win" and "<!pymod_do_main(dir_exists <(directx_sdk_default_path))"=="True"', { >++ 'directx_sdk_path%': '<(directx_sdk_default_path)', >++ }, { >++ 'directx_sdk_path%': '$(DXSDK_DIR)', >++ }], >++ ['OS=="win"', { >++ 'windows_driver_kit_path%': '$(WDK_DIR)', >++ 'conditions': [ >++ ['component!="shared_library"', { >++ 'single_module_mode_handle_verifier%': 0, >++ }, { >++ 'single_module_mode_handle_verifier%': 1, >++ }], >++ ], >++ }], >++ ['os_posix==1 and OS!="mac" and OS!="ios"', { >++ 'conditions': [ >++ ['target_arch=="mipsel" or target_arch=="mips64el"', { >++ 'werror%': '', >++ 'disable_nacl%': 1, >++ 'nacl_untrusted_build%': 0, >++ 'use_allocator%': 'none', >++ }], >++ # Use a 64-bit linker to avoid running out of address space. The >++ # buildbots should have a 64-bit kernel and a 64-bit libc installed. >++ ['host_arch=="ia32" and target_arch=="ia32"', { >++ # TODO(thestig) This is a horrible way to force the desired >++ # configuration. Our gyp variable scoping is likely wrong and >++ # needs to be cleaned up. The GN configuration should be changed >++ # to match. >++ 'binutils_version%': 224, >++ 'linux_use_bundled_binutils%': '1', >++ 'linux_use_bundled_gold%': '1', >++ 'binutils_dir%': 'third_party/binutils/Linux_x64/Release/bin', >++ }], >++ # All Chrome builds have breakpad symbols, but only process the >++ # symbols from official builds. >++ ['(branding=="Chrome" and buildtype=="Official")', { >++ 'linux_dump_symbols%': 1, >++ # Omit unwind support in official release builds to save space. We >++ # can use breakpad for these builds. >++ 'release_unwind_tables%': 0, >++ }], >++ ], >++ }], # os_posix==1 and OS!="mac" and OS!="ios" >++ ['OS=="ios"', { >++ 'disable_nacl%': 1, >++ 'icu_use_data_file_flag%': 1, >++ 'enable_web_speech%': 0, >++ 'use_system_libxml%': 1, >++ 'use_system_sqlite%': 1, >++ 'locales==': [ >++ 'ar', 'ca', 'cs', 'da', 'de', 'el', 'en-GB', 'en-US', 'es', 'es-MX', >++ 'fi', 'fr', 'he', 'hi', 'hr', 'hu', 'id', 'it', 'ja', 'ko', 'ms', >++ 'nb', 'nl', 'pl', 'pt', 'pt-PT', 'ro', 'ru', 'sk', 'sv', 'th', 'tr', >++ 'uk', 'vi', 'zh-CN', 'zh-TW', >++ ], >++ # iOS SDK and deployment target support. The |ios_sdk| value is left >++ # blank so that when it is set in the project files it will be the >++ # "current" iOS SDK. Forcing a specific SDK even if it is "current" >++ # causes Xcode to spit out a warning for every single project file for >++ # not using the "current" SDK. >++ 'ios_sdk%': '', >++ 'ios_sdk_path%': '', >++ 'ios_deployment_target%': '9.0', >++ 'conditions': [ >++ # ios_product_name is set to the name of the .app bundle as it should >++ # appear on disk. >++ ['branding=="Chrome"', { >++ 'ios_product_name%': 'Chrome', >++ }, { # else: branding!="Chrome" >++ 'ios_product_name%': 'Chromium', >++ }], >++ ['branding=="Chrome" and buildtype=="Official"', { >++ 'ios_breakpad%': 1, >++ }, { # else: branding!="Chrome" or buildtype!="Official" >++ 'ios_breakpad%': 0, >++ }], >++ ], >++ }], # OS=="ios" >++ ['OS=="android"', { >++ # Location of Android NDK. >++ 'variables': { >++ 'variables': { >++ # Standard libraries can use the relative path to the NDK. >++ 'android_ndk_root%': '../../third_party/android_tools/ndk/', >++ # Unfortunately, it is required to use the absolute path to the SDK >++ # because it us passed to ant which uses a different relative path >++ # from GYP. >++ 'android_sdk_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/sdk/', >++ # Similarly, gdbserver and the Android toolchain need to use the >++ # absolute path to the NDK because they are used at different levels >++ # in the GYP files. >++ 'android_ndk_absolute_root%': '<!(cd <(DEPTH) && pwd -P)/third_party/android_tools/ndk/', >++ 'android_host_arch%': '<!(uname -m)', >++ # Version of the NDK. Used to ensure full rebuilds on NDK rolls. >++ 'android_ndk_version%': 'r10e', >++ # Android API-level of the SDK used for compilation. >++ 'android_sdk_version%': '23', >++ 'android_sdk_build_tools_version%': '23.0.1', >++ 'host_os%': "<!(uname -s | sed -e 's/Linux/linux/;s/Darwin/mac/')", >++ 'conditions': [ >++ # Figure this out early since it needs symbols from libgcc.a, so it >++ # has to be before that in the set of libraries. >++ # ASan needs to dynamically link to libc++ even in static builds so >++ # that it can interpose operator new. >++ ['component=="shared_library" or asan==1', { >++ 'android_libcpp_library': 'c++_shared', >++ 'android_must_copy_system_libraries': 1, >++ }, { >++ 'android_libcpp_library': 'c++_static', >++ 'android_must_copy_system_libraries': 0, >++ }], >++ ], >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'android_ndk_root%': '<(android_ndk_root)', >++ 'android_ndk_absolute_root%': '<(android_ndk_absolute_root)', >++ 'android_ndk_version%': '<(android_ndk_version)', >++ 'android_sdk_root%': '<(android_sdk_root)', >++ 'android_sdk_version%': '<(android_sdk_version)', >++ 'android_sdk_build_tools_version%': '<(android_sdk_build_tools_version)', >++ 'android_libcpp_root': '<(android_ndk_root)/sources/cxx-stl/llvm-libc++', >++ 'android_libcpp_library': '<(android_libcpp_library)', >++ 'android_must_copy_system_libraries': '<(android_must_copy_system_libraries)', >++ 'host_os%': '<(host_os)', >++ 'android_sdk%': '<(android_sdk_root)/platforms/android-<(android_sdk_version)', >++ # Android SDK build tools (e.g. dx, aidl) >++ 'android_sdk_tools%': '<(android_sdk_root)/build-tools/<(android_sdk_build_tools_version)', >++ # Android API level 16 is JB (Android 4.1) which is the minimum >++ # platform requirement for Chrome on Android, we use it for native >++ # code compilation. >++ 'conditions': [ >++ ['target_arch == "ia32"', { >++ 'android_app_abi%': 'x86', >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-x86/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-16/arch-x86', >++ 'android_ndk_lib_dir%': 'usr/lib', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/x86-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ['target_arch == "x64"', { >++ 'android_app_abi%': 'x86_64', >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-x86_64/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-21/arch-x86_64', >++ 'android_ndk_lib_dir%': 'usr/lib64', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/x86_64-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ['target_arch=="arm"', { >++ 'conditions': [ >++ ['arm_version<7', { >++ 'android_app_abi%': 'armeabi', >++ }, { >++ 'android_app_abi%': 'armeabi-v7a', >++ }], >++ ], >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-arm/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-16/arch-arm', >++ 'android_ndk_lib_dir%': 'usr/lib', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/arm-linux-androideabi-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ['target_arch == "arm64"', { >++ 'android_app_abi%': 'arm64-v8a', >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-arm64/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-21/arch-arm64', >++ 'android_ndk_lib_dir%': 'usr/lib', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/aarch64-linux-android-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ['target_arch == "mipsel"', { >++ 'android_app_abi%': 'mips', >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-mips/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-16/arch-mips', >++ 'android_ndk_lib_dir%': 'usr/lib', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/mipsel-linux-android-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ['target_arch == "mips64el"', { >++ 'android_app_abi%': 'mips64', >++ 'android_gdbserver%': '<(android_ndk_absolute_root)/prebuilt/android-mips64/gdbserver/gdbserver', >++ 'android_ndk_sysroot%': '<(android_ndk_root)/platforms/android-21/arch-mips64', >++ 'android_ndk_lib_dir%': 'usr/lib64', >++ 'android_toolchain%': '<(android_ndk_absolute_root)/toolchains/mips64el-linux-android-4.9/prebuilt/<(host_os)-<(android_host_arch)/bin', >++ }], >++ ], >++ }, >++ # Copy conditionally-set variables out one scope. >++ 'android_app_abi%': '<(android_app_abi)', >++ 'android_gdbserver%': '<(android_gdbserver)', >++ 'android_ndk_root%': '<(android_ndk_root)', >++ 'android_ndk_sysroot%': '<(android_ndk_sysroot)', >++ 'android_ndk_version%': '<(android_ndk_version)', >++ 'android_sdk_root%': '<(android_sdk_root)', >++ 'android_sdk_version%': '<(android_sdk_version)', >++ 'android_toolchain%': '<(android_toolchain)', >++ 'android_ndk_include': '<(android_ndk_sysroot)/usr/include', >++ 'android_ndk_lib': '<(android_ndk_sysroot)/<(android_ndk_lib_dir)', >++ 'android_sdk_build_tools_version%': '<(android_sdk_build_tools_version)', >++ 'android_sdk_tools%': '<(android_sdk_tools)', >++ 'android_aapt_path%': '<(android_sdk_tools)/aapt', >++ 'android_sdk%': '<(android_sdk)', >++ 'android_sdk_jar%': '<(android_sdk)/android.jar', >++ 'android_libcpp_root': '<(android_libcpp_root)', >++ 'android_libcpp_library': '<(android_libcpp_library)', >++ 'android_libcpp_include': '<(android_libcpp_root)/libcxx/include', >++ 'android_libcpp_libs_dir%': '<(android_libcpp_root)/libs/<(android_app_abi)', >++ 'android_must_copy_system_libraries': '<(android_must_copy_system_libraries)', >++ 'host_os%': '<(host_os)', >++ # Location of the "objcopy" binary, used by both gyp and scripts. >++ 'android_objcopy%' : '<!(/bin/echo -n <(android_toolchain)/*-objcopy)', >++ # Location of the "strip" binary, used by both gyp and scripts. >++ 'android_strip%' : '<!(/bin/echo -n <(android_toolchain)/*-strip)', >++ # Location of the "readelf" binary. >++ 'android_readelf%' : '<!(/bin/echo -n <(android_toolchain)/*-readelf)', >++ # Determines whether we should optimize JNI generation at the cost of >++ # breaking assumptions in the build system that when inputs have changed >++ # the outputs should always change as well. This is meant purely for >++ # developer builds, to avoid spurious re-linking of native files. >++ 'optimize_jni_generation%': '<(optimize_jni_generation)', >++ # Use OpenSSL's struct X509 to represent certificates. >++ 'use_openssl_certs%': 1, >++ 'proprietary_codecs%': '<(proprietary_codecs)', >++ 'safe_browsing%': 2, >++ 'enable_web_speech%': 0, >++ 'java_bridge%': 1, >++ 'use_allocator%': 'none', >++ # Disable Native Client. >++ 'disable_nacl%': 1, >++ # Sessions are store separately in the Java side. >++ 'enable_session_service%': 0, >++ 'p2p_apis%' : 0, >++ 'gtest_target_type%': 'shared_library', >++ }], # OS=="android" >++ ['embedded==1', { >++ 'use_system_fontconfig%': 0, >++ }, { >++ 'use_system_fontconfig%': 1, >++ }], >++ ['chromecast==1', { >++ 'conditions': [ >++ ['target_arch=="arm"', { >++ 'arm_arch%': '', >++ 'arm_tune%': 'cortex-a9', >++ 'arm_thumb%': 1, >++ }], >++ # TODO(dalecurtis): What audio codecs does Chromecast want here? Sort >++ # out and add configs if necessary. http://crbug.com/570754 >++ ['OS!="android"', { >++ 'ffmpeg_branding%': 'ChromeOS', >++ }], >++ ], >++ }], >++ ['OS=="linux"', { >++ 'clang%': 1, >++ 'conditions': [ >++ ['target_arch=="arm64"', { >++ # Temporarily disable nacl and tcmalloc on arm64 linux to get >++ # rid of compilation errors. >++ 'disable_nacl%': 1, >++ 'use_allocator%': 'none', >++ }], >++ ], >++ }], # OS=="mac" >++ ['OS=="mac"', { >++ 'conditions': [ >++ # All Chrome builds have breakpad symbols, but only process the >++ # symbols from official builds. >++ ['(branding=="Chrome" and buildtype=="Official")', { >++ 'mac_strip_release%': 1, >++ }], >++ ], >++ }], # OS=="mac" >++ ['OS=="mac" or OS=="ios"', { >++ 'clang%': 1, >++ # On Mac and iOS we just use the default system allocator. >++ 'use_allocator%': 'none', >++ 'variables': { >++ # Mac OS X SDK and deployment target support. The SDK identifies >++ # the version of the system headers that will be used, and >++ # corresponds to the MAC_OS_X_VERSION_MAX_ALLOWED compile-time >++ # macro. "Maximum allowed" refers to the operating system version >++ # whose APIs are available in the headers. The deployment target >++ # identifies the minimum system version that the built products are >++ # expected to function on. It corresponds to the >++ # MAC_OS_X_VERSION_MIN_REQUIRED compile-time macro. To ensure these >++ # macros are available, #include <AvailabilityMacros.h>. Additional >++ # documentation on these macros is available at >++ # http://developer.apple.com/mac/library/technotes/tn2002/tn2064.html#SECTION3 >++ # Chrome normally builds with the Mac OS X 10.10 SDK and sets the >++ # deployment target to 10.7. Other projects, such as O3D, may >++ # override these defaults. >++ # Normally, mac_sdk_min is used to find an SDK that Xcode knows >++ # about that is at least the specified version. In official builds, >++ # the SDK must match mac_sdk_min exactly. If the SDK is installed >++ # someplace that Xcode doesn't know about, set mac_sdk_path to the >++ # path to the SDK; when set to a non-empty string, SDK detection >++ # based on mac_sdk_min will be bypassed entirely. >++ 'mac_deployment_target%': '10.7', >++ 'mac_sdk_min%': '10.10', >++ 'mac_sdk_path%': '', >++ }, >++ 'mac_sdk_min': '<(mac_sdk_min)', >++ 'mac_sdk_path': '<(mac_sdk_path)', >++ 'mac_deployment_target': '<(mac_deployment_target)', >++ # Compile in Breakpad support by default so that it can be >++ # tested, even if it is not enabled by default at runtime. >++ 'mac_breakpad_compiled_in%': 1, >++ 'conditions': [ >++ # mac_product_name is set to the name of the .app bundle as it should >++ # appear on disk. This duplicates data from >++ # chrome/app/theme/chromium/BRANDING and >++ # chrome/app/theme/google_chrome/BRANDING, but is necessary to get >++ # these names into the build system. >++ ['branding=="Chrome"', { >++ 'mac_product_name%': 'Google Chrome', >++ }, { # else: branding!="Chrome" >++ 'mac_product_name%': 'Chromium', >++ }], >++ # Official mac builds require a specific OS X SDK, but iOS and >++ # non-official mac builds do not. >++ ['branding=="Chrome" and buildtype=="Official" and OS=="mac"', { >++ 'mac_sdk%': '<!(python <(DEPTH)/build/mac/find_sdk.py --verify <(mac_sdk_min) --sdk_path=<(mac_sdk_path))', >++ }, { >++ 'mac_sdk%': '<!(python <(DEPTH)/build/mac/find_sdk.py <(mac_sdk_min))', >++ }], >++ ['branding=="Chrome" and buildtype=="Official"', { >++ # Enable uploading crash dumps. >++ 'mac_breakpad_uploads%': 1, >++ # Enable dumping symbols at build time for use by Mac Breakpad. >++ 'mac_breakpad%': 1, >++ # Enable Keystone auto-update support. >++ 'mac_keystone%': 1, >++ }, { # else: branding!="Chrome" or buildtype!="Official" >++ 'mac_breakpad_uploads%': 0, >++ 'mac_breakpad%': 0, >++ 'mac_keystone%': 0, >++ }], >++ ], >++ }], # OS=="mac" or OS=="ios" >++ ['OS=="win"', { >++ 'conditions': [ >++ # This is the architecture convention used in WinSDK paths. >++ ['target_arch=="ia32"', { >++ 'winsdk_arch%': 'x86', >++ },{ >++ 'winsdk_arch%': '<(target_arch)', >++ }], >++ ['component=="shared_library"', { >++ 'win_use_allocator_shim%': 0, >++ }], >++ ['component=="static_library"', { >++ # Turn on multiple dll by default on Windows when in static_library. >++ 'chrome_multiple_dll%': 1, >++ }], >++ ['asan==1 or syzyasan==1', { >++ 'win_use_allocator_shim%': 0, >++ }], >++ # The AddressSanitizer build should be a console program as it prints >++ # out stuff on stderr. >++ ['asan==1', { >++ 'win_console_app%': 1, >++ }, { >++ 'win_console_app%': 0, >++ }], >++ # Enable the Kasko reporter for syzyasan builds. >++ ['syzyasan==1', { >++ 'kasko': 1, >++ }], >++ ['component=="shared_library"', { >++ # Not enabled for component=static_library because some targets >++ # are too large and the toolchain fails due to the size of the >++ # .obj files. >++ 'incremental_chrome_dll%': 1, >++ }], >++ # Don't do incremental linking for large modules on 32-bit or when >++ # component=static_library as the toolchain fails due to the size of >++ # the .ilk files. >++ ['MSVS_OS_BITS==32 or component=="static_library"', { >++ 'msvs_large_module_debug_link_mode%': '1', # No >++ },{ >++ 'msvs_large_module_debug_link_mode%': '2', # Yes >++ }], >++ ['chrome_pgo_phase!=0', { >++ 'full_wpo_on_official%': 1, >++ }], >++ ], >++ 'nacl_win64_defines': [ >++ # This flag is used to minimize dependencies when building >++ # Native Client loader for 64-bit Windows. >++ 'NACL_WIN64', >++ ], >++ # Need to include allocator target, but exclude tcmalloc files. >++ 'use_allocator%': 'winheap', >++ }], >++ ['os_posix==1 and chromeos==0 and OS!="android" and OS!="ios" and embedded==0', { >++ 'use_cups%': 1, >++ }, { >++ 'use_cups%': 0, >++ }], >++ ['enable_plugins==1 and (OS=="linux" or OS=="mac" or OS=="win") and chromecast==0', { >++ 'enable_pepper_cdms%': 1, >++ }, { >++ 'enable_pepper_cdms%': 0, >++ }], >++ ['OS=="android" or chromecast==1', { >++ 'enable_browser_cdms%': 1, >++ }, { >++ 'enable_browser_cdms%': 0, >++ }], >++ # Native Client glibc toolchain is enabled except on mips >++ ['target_arch=="mipsel" or target_arch=="mips64el"', { >++ 'disable_glibc%': 1, >++ }, { >++ 'disable_glibc%': 0, >++ }], >++ # Set the relative path from this file to the GYP file of the JPEG >++ # library used by Chromium. >++ ['use_system_libjpeg==1 or use_libjpeg_turbo==0', { >++ # Configuration for using the system libjeg is here. >++ 'libjpeg_gyp_path': '<(libjpeg_ijg_gyp_path)', >++ }, { >++ 'libjpeg_gyp_path': '<(libjpeg_turbo_gyp_path)', >++ }], >++ # Options controlling the use of GConf (the classic GNOME configuration >++ # system) and GIO, which contains GSettings (the new GNOME config system). >++ ['chromeos==1 or embedded==1', { >++ 'use_gconf%': 0, >++ 'use_gio%': 0, >++ }, { >++ 'use_gconf%': 1, >++ 'use_gio%': 1, >++ }], >++ # Set up -D and -E flags passed into grit. >++ ['branding=="Chrome"', { >++ # TODO(mmoss) The .grd files look for _google_chrome, but for >++ # consistency they should look for google_chrome_build like C++. >++ 'grit_defines': ['-D', '_google_chrome', >++ '-E', 'CHROMIUM_BUILD=google_chrome'], >++ }, { >++ 'grit_defines': ['-D', '_chromium', >++ '-E', 'CHROMIUM_BUILD=chromium'], >++ }], >++ ['chromeos==1', { >++ 'grit_defines': ['-D', 'chromeos', '-D', 'scale_factors=2x'], >++ }], >++ ['desktop_linux==1', { >++ 'grit_defines': ['-D', 'desktop_linux'], >++ }], >++ ['toolkit_views==1', { >++ 'grit_defines': ['-D', 'toolkit_views'], >++ }], >++ ['use_aura==1', { >++ 'grit_defines': ['-D', 'use_aura'], >++ }], >++ ['use_ash==1', { >++ 'grit_defines': ['-D', 'use_ash'], >++ }], >++ ['use_nss_certs==1', { >++ 'grit_defines': ['-D', 'use_nss_certs'], >++ }], >++ ['use_ozone==1', { >++ 'grit_defines': ['-D', 'use_ozone'], >++ }], >++ ['image_loader_extension==1', { >++ 'grit_defines': ['-D', 'image_loader_extension'], >++ }], >++ ['use_titlecase_in_grd==1', { >++ 'grit_defines': ['-D', 'use_titlecase'], >++ }], >++ ['OS=="android"', { >++ 'grit_defines': [ >++ '-t', 'android', >++ '-E', 'ANDROID_JAVA_TAGGED_ONLY=true', >++ '--no-output-all-resource-defines', >++ ], >++ }], >++ ['OS=="mac" or OS=="ios"', { >++ 'grit_defines': ['-D', 'scale_factors=2x'], >++ }], >++ ['OS == "ios"', { >++ 'variables': { >++ 'enable_coverage%': 0, >++ }, >++ 'grit_defines': [ >++ '-t', 'ios', >++ '--no-output-all-resource-defines', >++ ], >++ # Enable host builds. >++ 'host_os%': "mac", >++ 'conditions': [ >++ # Use the version of clang shipped with Xcode when building official >++ # version of Chrome for iOS. >++ # >++ # TODO(eugenebut): Remove enable_coverage check once >++ # libclang_rt.profile_ios.a is bundled with Chromium's clang. >++ # http://crbug.com/450379 >++ ['buildtype=="Official" or enable_coverage', { >++ 'clang_xcode%': 1, >++ }], >++ ], >++ }], >++ ['enable_extensions==1', { >++ 'grit_defines': ['-D', 'enable_extensions'], >++ }], >++ ['enable_plugins!=0', { >++ 'grit_defines': ['-D', 'enable_plugins'], >++ }], >++ ['enable_basic_printing==1 or enable_print_preview==1', { >++ 'grit_defines': ['-D', 'enable_printing'], >++ }], >++ ['enable_print_preview==1', { >++ 'grit_defines': ['-D', 'enable_print_preview'], >++ }], >++ ['enable_themes==1', { >++ 'grit_defines': ['-D', 'enable_themes'], >++ }], >++ ['enable_app_list==1', { >++ 'grit_defines': ['-D', 'enable_app_list'], >++ }], >++ ['use_concatenated_impulse_responses==1', { >++ 'grit_defines': ['-D', 'use_concatenated_impulse_responses'], >++ }], >++ ['enable_media_router==1', { >++ 'grit_defines': ['-D', 'enable_media_router'], >++ }], >++ ['enable_webrtc==1', { >++ 'grit_defines': ['-D', 'enable_webrtc'], >++ }], >++ ['enable_hangout_services_extension==1', { >++ 'grit_defines': ['-D', 'enable_hangout_services_extension'], >++ }], >++ ['enable_task_manager==1', { >++ 'grit_defines': ['-D', 'enable_task_manager'], >++ }], >++ ['notifications==1', { >++ 'grit_defines': ['-D', 'enable_notifications'], >++ }], >++ ['mac_views_browser==1', { >++ 'grit_defines': ['-D', 'mac_views_browser'], >++ }], >++ ['enable_resource_whitelist_generation==1 and OS!="win"', { >++ 'grit_rc_header_format': ['-h', '#define {textual_id} _Pragma("whitelisted_resource_{numeric_id}") {numeric_id}'], >++ }], >++ ['enable_resource_whitelist_generation==1 and OS=="win"', { >++ 'grit_rc_header_format': ['-h', '#define {textual_id} __pragma(message("whitelisted_resource_{numeric_id}")) {numeric_id}'], >++ }], >++ ['enable_mdns==1 or OS=="mac"', { >++ 'grit_defines': ['-D', 'enable_service_discovery'], >++ 'enable_service_discovery%': 1 >++ }], >++ ['clang_use_chrome_plugins==1', { >++ 'variables': { >++ 'conditions': [ >++ ['OS!="win"', { >++ 'variables': { >++ 'conditions': [ >++ ['OS=="mac" or OS=="ios"', { >++ 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.dylib', >++ }, { # OS != "mac" or OS != "ios" >++ 'clang_lib_path%': '<!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so', >++ }], >++ ], >++ }, >++ 'clang_dynlib_flags%': '-Xclang -load -Xclang <(clang_lib_path) ', >++ }, { # OS == "win" >++ # On Windows, the plugin is built directly into clang, so there's >++ # no need to load it dynamically. >++ 'clang_dynlib_flags%': '', >++ }], >++ ['(OS=="android" or OS=="linux") and chromecast==0', { >++ 'clang_plugin_check_ipc_arg': '-Xclang -plugin-arg-find-bad-constructs -Xclang check-ipc', >++ }, { >++ 'clang_plugin_check_ipc_arg': '', >++ }], >++ ], >++ 'clang_plugin_args%': '-Xclang -plugin-arg-find-bad-constructs -Xclang check-templates ' >++ '-Xclang -plugin-arg-find-bad-constructs -Xclang follow-macro-expansion ', >++ }, >++ # If you change these, also change build/config/clang/BUILD.gn. >++ 'clang_chrome_plugins_flags%': >++ '<(clang_dynlib_flags)' >++ '-Xclang -add-plugin -Xclang find-bad-constructs <(clang_plugin_args) <(clang_plugin_check_ipc_arg)', >++ }], >++ ['asan==1 or msan==1 or lsan==1 or tsan==1', { >++ 'clang%': 1, >++ 'use_allocator%': 'none', >++ 'use_sanitizer_options%': 1, >++ }], >++ ['(OS=="linux" or OS=="android") and asan==0 and msan==0 and lsan==0 and tsan==0 and build_for_tool==""', { >++ 'use_experimental_allocator_shim%': 1, >++ }], >++ ['OS=="linux" and asan==0 and msan==0 and lsan==0 and tsan==0', { >++ # PNaCl toolchain Non-SFI build only supports linux OS build. >++ # Also, it does not support sanitizers. >++ 'enable_nacl_nonsfi_test%': 1, >++ }], >++ ['asan==1 and OS=="linux" and chromeos==0', { >++ 'use_custom_libcxx%': 1, >++ }], >++ ['ubsan==1', { >++ 'clang%': 1, >++ }], >++ ['ubsan_security==1', { >++ 'clang%': 1, >++ }], >++ ['ubsan_vptr==1', { >++ 'clang%': 1, >++ }], >++ ['asan==1 and OS=="mac"', { >++ 'mac_strip_release': 1, >++ }], >++ ['tsan==1', { >++ 'use_custom_libcxx%': 1, >++ }], >++ ['msan==1', { >++ # Use a just-built, MSan-instrumented libc++ instead of the system-wide >++ # libstdc++. This is required to avoid false positive reports whenever >++ # the C++ standard library is used. >++ 'use_custom_libcxx%': 1, >++ # Running the V8-generated code on an ARM simulator is a powerful hack >++ # that allows the tool to see the memory accesses from JITted code. >++ # Without this flag, JS code causes false positive reports from MSan. >++ 'v8_target_arch': 'arm64', >++ }], >++ # Build tweaks for DrMemory. >++ # TODO(rnk): Combine with tsan config to share the builder. >++ # http://crbug.com/108155 >++ ['build_for_tool=="drmemory"', { >++ # These runtime checks force initialization of stack vars which blocks >++ # DrMemory's uninit detection. >++ 'win_debug_RuntimeChecks': '0', >++ # Iterator debugging is slow. >++ 'win_debug_disable_iterator_debugging': '1', >++ # Try to disable optimizations that mess up stacks in a release build. >++ # DrM-i#1054 (https://github.com/DynamoRIO/drmemory/issues/1054) >++ # /O2 and /Ob0 (disable inline) cannot be used together because of a >++ # compiler bug, so we use /Ob1 instead. >++ 'win_release_InlineFunctionExpansion': '1', >++ 'win_release_OmitFramePointers': '0', >++ # Ditto for debug, to support bumping win_debug_Optimization. >++ 'win_debug_InlineFunctionExpansion': 0, >++ 'win_debug_OmitFramePointers': 0, >++ # Keep the code under #ifndef NVALGRIND. >++ 'release_valgrind_build': 1, >++ }], >++ # RLZ library is used on Win, Mac, iOS and ChromeOS. >++ ['OS=="win" or OS=="mac" or OS=="ios" or chromeos==1', { >++ 'enable_rlz_support%': 1, >++ 'conditions': [ >++ # RLZ is enabled for "Chrome" builds. >++ ['branding=="Chrome"', { >++ 'enable_rlz%': 1, >++ }], >++ ], >++ }], >++ # Set default compiler flags depending on ARM version. >++ ['arm_version==6', { >++ 'arm_arch%': 'armv6', >++ 'arm_tune%': '', >++ 'arm_fpu%': 'vfp', >++ 'arm_float_abi%': 'softfp', >++ 'arm_thumb%': 0, >++ }], >++ ['arm_version==7', { >++ 'arm_arch%': 'armv7-a', >++ 'arm_tune%': 'generic-armv7-a', >++ 'conditions': [ >++ ['arm_neon==1', { >++ 'arm_fpu%': 'neon', >++ }, { >++ 'arm_fpu%': 'vfpv3-d16', >++ }], >++ ['OS=="android"', { >++ 'arm_float_abi%': 'softfp', >++ }, { >++ 'arm_float_abi%': 'hard', >++ }], >++ ], >++ 'arm_thumb%': 1, >++ }], >++ # Set default compiler flags for MIPS floating-point support. >++ ['target_arch=="mipsel"', { >++ 'mips_float_abi%': 'hard', >++ }], >++ ['target_arch=="mipsel" and mips_arch_variant=="r2"', { >++ 'mips_fpu_mode%': 'fp32', >++ }, { >++ 'mips_fpu_mode%': '', >++ }], >++ # Enable brlapi by default for chromeos. >++ ['chromeos==1', { >++ 'use_brlapi%': 1, >++ }], >++ ['use_ozone==1 and ozone_auto_platforms==1', { >++ # Use headless as the default platform. >++ 'ozone_platform%': 'headless', >++ 'ozone_platform_headless%': 1, >++ 'conditions': [ >++ ['chromecast==1', { >++ 'ozone_platform_cast%': 1, >++ 'conditions': [ >++ # For desktop non-audio Chromecast builds, run with >++ # --ozone-platform=x11 >++ # TODO(slan|halliwell): Make the default platform "cast" on >++ # desktop non-audio builds too. >++ ['is_cast_desktop_build==1 and disable_display==0', { >++ # Use GN instead. >++ }, { >++ 'ozone_platform%': 'cast', >++ }], >++ ], >++ }, { # chromecast!=1 >++ # Build all platforms whose deps are in install-build-deps.sh. >++ # Only these platforms will be compile tested by buildbots. >++ 'conditions': [ >++ ['chromeos==1', { >++ 'ozone_platform_gbm%': 1, >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['desktop_linux==1 and use_aura==1 and use_x11==1', { >++ 'use_clipboard_aurax11%': 1, >++ }], >++ ['OS=="win" and use_goma==1', { >++ # goma doesn't support pch yet. >++ 'chromium_win_pch': 0, >++ # goma doesn't support PDB yet, so win_z7=1 or fastbuild=1. >++ 'conditions': [ >++ ['win_z7==0 and fastbuild==0', { >++ 'fastbuild': 1, >++ }], >++ ], >++ }], >++ ['host_clang==1', { >++ 'host_cc': '<(make_clang_dir)/bin/clang', >++ 'host_cxx': '<(make_clang_dir)/bin/clang++', >++ }, { >++ 'host_cc': '<!(which gcc)', >++ 'host_cxx': '<!(which g++)', >++ }], >++ # The seccomp-bpf sandbox is only supported on five architectures >++ # currently. >++ # Do not disable seccomp_bpf anywhere without talking to >++ # security@chromium.org! >++ ['((OS=="linux" or OS=="android") and ' >++ '(target_arch=="ia32" or target_arch=="x64" or ' >++ 'target_arch=="arm" or target_arch=="mipsel" or ' >++ 'target_arch=="arm64"))', { >++ 'use_seccomp_bpf%': 1, >++ }, { >++ 'use_seccomp_bpf%': 0, >++ }], >++ ['cfi_vptr==1', { >++ 'use_lto%': 1, >++ }], >++ ['branding=="Chrome" and buildtype=="Official"', { >++ 'enable_hangout_services_extension%': 1, >++ }, { >++ 'enable_hangout_services_extension%': 0, >++ }], >++ ], >++ # The path to the ANGLE library. >++ 'angle_path': '<(DEPTH)/third_party/angle', >++ # List of default apps to install in new profiles. The first list contains >++ # the source files as found in svn. The second list, used only for linux, >++ # contains the destination location for each of the files. When a crx >++ # is added or removed from the list, the chrome/browser/resources/ >++ # default_apps/external_extensions.json file must also be updated. >++ # >++ # README: GN version of these is in the target //chrome:default_apps >++ # (there's no global variable like in GYP). Be sure to update that target >++ # if you change these lists! >++ 'default_apps_list': [ >++ 'browser/resources/default_apps/external_extensions.json', >++ 'browser/resources/default_apps/gmail.crx', >++ 'browser/resources/default_apps/youtube.crx', >++ 'browser/resources/default_apps/drive.crx', >++ 'browser/resources/default_apps/docs.crx', >++ ], >++ 'default_apps_list_linux_dest': [ >++ '<(PRODUCT_DIR)/default_apps/external_extensions.json', >++ '<(PRODUCT_DIR)/default_apps/gmail.crx', >++ '<(PRODUCT_DIR)/default_apps/youtube.crx', >++ '<(PRODUCT_DIR)/default_apps/drive.crx', >++ '<(PRODUCT_DIR)/default_apps/docs.crx', >++ ], >++ # Whether to allow building of the GPU-related isolates. >++ 'archive_gpu_tests%': 0, >++ # Whether to allow building of chromoting related isolates. >++ 'archive_chromoting_tests%': 0, >++ # Whether to allow building of Media Router related isolates. >++ 'archive_media_router_tests%': 0, >++ }, >++ 'target_defaults': { >++ 'variables': { >++ # The condition that operates on chromium_code is in a target_conditions >++ # section, and will not have access to the default fallback value of >++ # chromium_code at the top of this file, or to the chromium_code >++ # variable placed at the root variables scope of .gyp files, because >++ # those variables are not set at target scope. As a workaround, >++ # if chromium_code is not set at target scope, define it in target scope >++ # to contain whatever value it has during early variable expansion. >++ # That's enough to make it available during target conditional >++ # processing. >++ 'chromium_code%': '<(chromium_code)', >++ 'component%': '<(component)', >++ 'chromecast%': '<(chromecast)', >++ # See http://msdn.microsoft.com/en-us/library/aa652360(VS.71).aspx >++ 'win_release_Optimization%': '2', # 2 = /O2 >++ 'win_debug_Optimization%': '0', # 0 = /Od >++ # See http://msdn.microsoft.com/en-us/library/2kxx5t2c(v=vs.80).aspx >++ # Tri-state: blank is default, 1 on, 0 off >++ 'win_release_OmitFramePointers%': '0', >++ # Tri-state: blank is default, 1 on, 0 off >++ 'win_debug_OmitFramePointers%': '', >++ # See http://msdn.microsoft.com/en-us/library/8wtf2dfz(VS.71).aspx >++ 'win_debug_RuntimeChecks%': '3', # 3 = all checks enabled, 0 = off >++ # See http://msdn.microsoft.com/en-us/library/47238hez(VS.71).aspx >++ 'win_debug_InlineFunctionExpansion%': '', # empty = default, 0 = off, >++ 'win_release_InlineFunctionExpansion%': '2', # 1 = only __inline, 2 = max >++ # VS inserts quite a lot of extra checks to algorithms like >++ # std::partial_sort in Debug build which make them O(N^2) >++ # instead of O(N*logN). This is particularly slow under memory >++ # tools like ThreadSanitizer so we want it to be disablable. >++ # See http://msdn.microsoft.com/en-us/library/aa985982(v=VS.80).aspx >++ 'win_debug_disable_iterator_debugging%': '0', >++ # An application manifest fragment to declare compatibility settings for >++ # 'executable' targets. Ignored in other target type. >++ 'win_exe_compatibility_manifest%': >++ '<(DEPTH)\\build\\win\\compatibility.manifest', >++ 'release_extra_cflags%': '', >++ 'debug_extra_cflags%': '', >++ 'release_valgrind_build%': '<(release_valgrind_build)', >++ # the non-qualified versions are widely assumed to be *nix-only >++ 'win_release_extra_cflags%': '', >++ 'win_debug_extra_cflags%': '', >++ # TODO(thakis): Make this a blacklist instead, http://crbug.com/101600 >++ 'enable_wexit_time_destructors%': '<(enable_wexit_time_destructors)', >++ # Only used by Windows build for now. Can be used to build into a >++ # differet output directory, e.g., a build_dir_prefix of VS2010_ would >++ # output files in src/build/VS2010_{Debug,Release}. >++ 'build_dir_prefix%': '', >++ # Targets are by default not nacl untrusted code. >++ 'nacl_untrusted_build%': 0, >++ 'pnacl_compile_flags': [ >++ # pnacl uses the clang compiler so we need to suppress all the >++ # same warnings as we do for clang. >++ # TODO(sbc): Remove these if/when they are removed from the clang >++ # build. >++ '-Wno-unused-function', >++ '-Wno-char-subscripts', >++ '-Wno-c++11-extensions', >++ '-Wno-unnamed-type-template-args', >++ ], >++ # By default, Android targets have their exported JNI symbols stripped, >++ # so we test the manual JNI registration code paths that are required >++ # when using the crazy linker. To allow use of native JNI exports (lazily >++ # resolved by the JVM), targets can enable this variable, which will stop >++ # the stripping from happening. Only targets which do not need to be >++ # compatible with the crazy linker are permitted to set this. >++ 'use_native_jni_exports%': 0, >++ 'conditions': [ >++ ['OS=="win" and component=="shared_library"', { >++ # See http://msdn.microsoft.com/en-us/library/aa652367.aspx >++ 'win_release_RuntimeLibrary%': '2', # 2 = /MD (nondebug DLL) >++ 'win_debug_RuntimeLibrary%': '3', # 3 = /MDd (debug DLL) >++ }, { >++ # See http://msdn.microsoft.com/en-us/library/aa652367.aspx >++ 'win_release_RuntimeLibrary%': '0', # 0 = /MT (nondebug static) >++ 'win_debug_RuntimeLibrary%': '1', # 1 = /MTd (debug static) >++ }], >++ ['OS=="ios"', { >++ # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html >++ 'mac_release_optimization%': 's', # Use -Os unless overridden >++ 'mac_debug_optimization%': '0', # Use -O0 unless overridden >++ }, { >++ # See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html >++ 'mac_release_optimization%': '2', # Use -O2 unless overridden >++ 'mac_debug_optimization%': '0', # Use -O0 unless overridden >++ }], >++ ['OS=="android"', { >++ 'host_os%': '<(host_os)', # See comment above chromium_code. >++ }], >++ ], >++ 'clang_warning_flags': [ >++ '-Wheader-hygiene', >++ # TODO(thakis): Consider -Wloop-analysis (turns on >++ # -Wrange-loop-analysis too). >++ # Don't die on dtoa code that uses a char as an array index. >++ # This is required solely for base/third_party/dmg_fp/dtoa.cc. >++ '-Wno-char-subscripts', >++ # TODO(thakis): This used to be implied by -Wno-unused-function, >++ # which we no longer use. Check if it makes sense to remove >++ # this as well. http://crbug.com/316352 >++ '-Wno-unneeded-internal-declaration', >++ # Warns on switches on enums that cover all enum values but >++ # also contain a default: branch. Chrome is full of that. >++ '-Wno-covered-switch-default', >++ # Warns when a const char[] is converted to bool. >++ '-Wstring-conversion', >++ # C++11-related flags: >++ # This warns on using ints as initializers for floats in >++ # initializer lists (e.g. |int a = f(); CGSize s = { a, a };|), >++ # which happens in several places in chrome code. Not sure if >++ # this is worth fixing. >++ '-Wno-c++11-narrowing', >++ # Clang considers the `register` keyword as deprecated, but e.g. >++ # code generated by flex (used in angle) contains that keyword. >++ # http://crbug.com/255186 >++ '-Wno-deprecated-register', >++ # TODO(hans): Get this cleaned up, http://crbug.com/428099 >++ '-Wno-inconsistent-missing-override', >++ # TODO(thakis): Enable this, crbug.com/507717 >++ '-Wno-shift-negative-value', >++ # TODO(thakis): https://crbug.com/604888 >++ '-Wno-undefined-var-template', >++ # TODO(thakis): https://crbug.com/617318 >++ '-Wno-nonportable-include-path', >++ ], >++ }, >++ 'defines': [ >++ # Don't use deprecated V8 APIs anywhere. >++ 'V8_DEPRECATION_WARNINGS', >++ ], >++ 'include_dirs': [ >++ '<(SHARED_INTERMEDIATE_DIR)', >++ ], >++ 'conditions': [ >++ ['OS=="mac"', { >++ # When compiling Objective C, warns if a method is used whose >++ # availability is newer than the deployment target. >++ 'xcode_settings': { 'WARNING_CFLAGS': ['-Wpartial-availability']}, >++ }], >++ ['(OS=="mac" or OS=="ios") and asan==1', { >++ 'dependencies': [ >++ '<(DEPTH)/build/mac/asan.gyp:asan_dynamic_runtime', >++ ], >++ }], >++ ['OS=="win" and asan==1 and component=="shared_library"', { >++ 'dependencies': [ >++ '<(DEPTH)/build/win/asan.gyp:asan_dynamic_runtime', >++ ], >++ }], >++ ['branding=="Chrome"', { >++ 'defines': ['GOOGLE_CHROME_BUILD'], >++ }, { # else: branding!="Chrome" >++ 'defines': ['CHROMIUM_BUILD'], >++ }], >++ ['OS=="mac" and component=="shared_library"', { >++ 'xcode_settings': { >++ 'DYLIB_INSTALL_NAME_BASE': '@rpath', >++ 'LD_RUNPATH_SEARCH_PATHS': [ >++ # For unbundled binaries. >++ '@loader_path/.', >++ # For bundled binaries, to get back from Binary.app/Contents/MacOS. >++ '@loader_path/../../..', >++ ], >++ }, >++ }], >++ ['clang==1 or host_clang==1', { >++ # This is here so that all files get recompiled after a clang roll and >++ # when turning clang on or off. >++ # (defines are passed via the command line, and build systems rebuild >++ # things when their commandline changes). Nothing should ever read this >++ # define. >++ 'defines': ['CR_CLANG_REVISION=<!(python <(DEPTH)/tools/clang/scripts/update.py --print-revision)'], >++ }], >++ ['enable_rlz==1', { >++ 'defines': ['ENABLE_RLZ'], >++ }], >++ ['component=="shared_library"', { >++ 'defines': ['COMPONENT_BUILD'], >++ }], >++ ['ui_compositor_image_transport==1', { >++ 'defines': ['UI_COMPOSITOR_IMAGE_TRANSPORT'], >++ }], >++ ['use_aura==1', { >++ 'defines': ['USE_AURA=1'], >++ }], >++ ['use_ash==1', { >++ 'defines': ['USE_ASH=1'], >++ }], >++ ['use_pango==1', { >++ 'defines': ['USE_PANGO=1'], >++ }], >++ ['use_cairo==1', { >++ 'defines': ['USE_CAIRO=1'], >++ }], >++ ['use_cras==1', { >++ 'defines': ['USE_CRAS=1'], >++ }], >++ ['use_ozone==1', { >++ 'defines': ['USE_OZONE=1'], >++ }], >++ ['use_default_render_theme==1', { >++ 'defines': ['USE_DEFAULT_RENDER_THEME=1'], >++ }], >++ ['use_libjpeg_turbo==1', { >++ 'defines': ['USE_LIBJPEG_TURBO=1'], >++ }], >++ ['use_x11==1', { >++ 'defines': ['USE_X11=1'], >++ }], >++ ['use_clipboard_aurax11==1', { >++ 'defines': ['USE_CLIPBOARD_AURAX11=1'], >++ }], >++ ['image_loader_extension==1', { >++ 'defines': ['IMAGE_LOADER_EXTENSION=1'], >++ }], >++ ['enable_webrtc==1', { >++ 'defines': ['ENABLE_WEBRTC=1'], >++ }], >++ ['enable_media_router==1', { >++ 'defines': ['ENABLE_MEDIA_ROUTER=1'], >++ }], >++ ['proprietary_codecs==1', { >++ 'defines': ['USE_PROPRIETARY_CODECS'], >++ }], >++ ['enable_viewport==1', { >++ 'defines': ['ENABLE_VIEWPORT'], >++ }], >++ ['enable_pepper_cdms==1', { >++ 'defines': ['ENABLE_PEPPER_CDMS'], >++ }], >++ ['enable_browser_cdms==1', { >++ 'defines': ['ENABLE_BROWSER_CDMS'], >++ }], >++ ['notifications==1', { >++ 'defines': ['ENABLE_NOTIFICATIONS'], >++ }], >++ ['enable_wayland_server==1', { >++ 'defines': ['ENABLE_WAYLAND_SERVER=1'], >++ }], >++ ['enable_wifi_display==1', { >++ 'defines': ['ENABLE_WIFI_DISPLAY=1'], >++ }], >++ ['use_udev==1', { >++ 'defines': ['USE_UDEV'], >++ }], >++ ['use_external_popup_menu==1', { >++ 'defines': ['USE_EXTERNAL_POPUP_MENU'], >++ }], >++ ['fastbuild!=0', { >++ 'xcode_settings': { >++ 'GCC_GENERATE_DEBUGGING_SYMBOLS': 'NO', >++ }, >++ 'conditions': [ >++ ['OS=="win" and fastbuild==2', { >++ # Completely disable debug information. >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'GenerateDebugInformation': 'false', >++ }, >++ 'VCCLCompilerTool': { >++ 'DebugInformationFormat': '0', >++ }, >++ }, >++ }], >++ ['OS=="win" and fastbuild==1', { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ # This tells the linker to generate .pdbs, so that >++ # we can get meaningful stack traces. >++ 'GenerateDebugInformation': 'true', >++ }, >++ 'VCCLCompilerTool': { >++ # No debug info to be generated by compiler. >++ 'DebugInformationFormat': '0', >++ }, >++ }, >++ }], >++ ['(OS=="android" or OS=="linux") and fastbuild==2', { >++ 'variables': { 'debug_extra_cflags': '-g0', }, >++ }], >++ ['(OS=="android" or OS=="linux") and fastbuild==1', { >++ # TODO(thakis): Change this to -g1 once http://crbug.com/456947 is >++ # fixed. >++ 'variables': { 'debug_extra_cflags': '-g0', }, >++ }], >++ # Android builds symbols on release by default, disable them. >++ ['OS=="android" and fastbuild==2', { >++ 'variables': { 'release_extra_cflags': '-g0', }, >++ }], >++ ['OS=="android" and fastbuild==1', { >++ # TODO(thakis): Change this to -g1 once http://crbug.com/456947 is >++ # fixed. >++ 'variables': { 'release_extra_cflags': '-g0', }, >++ }], >++ ], >++ }], # fastbuild!=0 >++ ['dcheck_always_on!=0', { >++ 'defines': ['DCHECK_ALWAYS_ON=1'], >++ }], # dcheck_always_on!=0 >++ ['tracing_like_official_build!=0', { >++ 'defines': ['TRACING_IS_OFFICIAL_BUILD=1'], >++ }], # tracing_like_official_build!=0 >++ ['fieldtrial_testing_like_official_build==0 and branding!="Chrome"', { >++ 'defines': ['FIELDTRIAL_TESTING_ENABLED'], >++ }], # fieldtrial_testing_like_official_build==0 and branding!="Chrome" >++ ['OS=="win"', { >++ 'defines': ['NO_TCMALLOC'], >++ }], >++ ['syzyasan==1', { >++ # SyzyAsan needs /PROFILE turned on to produce appropriate pdbs. >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'Profile': 'true', >++ }, >++ }, >++ 'defines': [ >++ 'SYZYASAN', >++ 'MEMORY_TOOL_REPLACES_ALLOCATOR', >++ 'MEMORY_SANITIZER_INITIAL_SIZE', >++ ], >++ }], >++ ['OS=="win"', { >++ 'defines': [ >++ '__STD_C', >++ '_CRT_SECURE_NO_DEPRECATE', >++ '_SCL_SECURE_NO_DEPRECATE', >++ # This define is required to pull in the new Win 10 interfaces from >++ # system headers like ShObjIdl.h. >++ 'NTDDI_VERSION=0x0A000000', >++ # This is required for ATL to use XP-safe versions of its functions. >++ '_USING_V110_SDK71_', >++ ], >++ 'include_dirs': [ >++ '<(DEPTH)/third_party/wtl/include', >++ ], >++ 'conditions': [ >++ ['win_z7!=0', { >++ 'msvs_settings': { >++ # Generates debug info when win_z7=1 >++ # even if fastbuild=1 (that makes GenerateDebugInformation false). >++ 'VCLinkerTool': { >++ 'GenerateDebugInformation': 'true', >++ }, >++ 'VCCLCompilerTool': { >++ 'DebugInformationFormat': '1', >++ } >++ } >++ }], # win_z7!=0 >++ ['win_analyze', { >++ 'defines!': [ >++ # This is prohibited when running /analyze. >++ '_USING_V110_SDK71_', >++ ], >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # Set WarnAsError to false to disable this setting for most >++ # projects so that compilation continues. >++ 'WarnAsError': 'false', >++ # When win_analyze is specified add the /analyze switch. >++ # Also add /WX- to force-disable WarnAsError for projects that >++ # override WarnAsError. >++ # Also, disable various noisy warnings that have low value. >++ 'AdditionalOptions': [ >++ '/analyze:WX-', >++ '/wd6011', # Dereferencing NULL pointer >++ '/wd6312', # Possible infinite loop: use of the constant >++ # EXCEPTION_CONTINUE_EXECUTION in the exception-filter >++ '/wd6326', # Potential comparison of constant with constant >++ '/wd28159', # Consider using 'GetTickCount64' >++ '/wd28204', # Inconsistent SAL annotations >++ '/wd28251', # Inconsistent SAL annotations >++ '/wd28252', # Inconsistent SAL annotations >++ '/wd28253', # Inconsistent SAL annotations >++ '/wd28196', # The precondition is not satisfied >++ '/wd28301', # Inconsistent SAL annotations >++ '/wd6340', # Sign mismatch in function parameter >++ '/wd28182', # Dereferencing NULL pointer >++ # C6285 is ~16% of raw warnings and has low value >++ '/wd6285', # non-zero constant || non-zero constant >++ # C6334 is ~80% of raw warnings and has low value >++ '/wd6334', # sizeof applied to an expression with an operator >++ ], >++ }, >++ }, >++ }], # win_analyze >++ ], >++ }], # OS==win >++ ['chromecast==1', { >++ 'defines': [ >++ 'LOG_DISABLED=0', >++ ], >++ }], >++ ['enable_task_manager==1', { >++ 'defines': [ >++ 'ENABLE_TASK_MANAGER=1', >++ ], >++ }], >++ ['enable_extensions==1', { >++ 'defines': [ >++ 'ENABLE_EXTENSIONS=1', >++ ], >++ }], >++ ['OS=="win" and branding=="Chrome"', { >++ 'defines': ['ENABLE_SWIFTSHADER'], >++ }], >++ ['enable_dart==1', { >++ 'defines': ['WEBKIT_USING_DART=1'], >++ }], >++ ['enable_pdf==1', { >++ 'defines': ['ENABLE_PDF=1'], >++ }], >++ ['enable_plugin_installation==1', { >++ 'defines': ['ENABLE_PLUGIN_INSTALLATION=1'], >++ }], >++ ['enable_plugins==1', { >++ 'defines': ['ENABLE_PLUGINS=1'], >++ }], >++ ['enable_session_service==1', { >++ 'defines': ['ENABLE_SESSION_SERVICE=1'], >++ }], >++ ['enable_themes==1', { >++ 'defines': ['ENABLE_THEMES=1'], >++ }], >++ ['enable_basic_printing==1 or enable_print_preview==1', { >++ # Convenience define for ENABLE_BASIC_PRINTING || ENABLE_PRINT_PREVIEW. >++ 'defines': ['ENABLE_PRINTING=1'], >++ }], >++ ['enable_basic_printing==1', { >++ # Enable basic printing support and UI. >++ 'defines': ['ENABLE_BASIC_PRINTING=1'], >++ }], >++ ['enable_print_preview==1', { >++ # Enable printing with print preview. >++ # Can be defined without ENABLE_BASIC_PRINTING. >++ 'defines': ['ENABLE_PRINT_PREVIEW=1'], >++ }], >++ ['enable_spellcheck==1', { >++ 'defines': ['ENABLE_SPELLCHECK=1'], >++ }], >++ ['use_browser_spellchecker', { >++ 'defines': ['USE_BROWSER_SPELLCHECKER=1'], >++ }], >++ ['use_minikin_hyphenation', { >++ 'defines': ['USE_MINIKIN_HYPHENATION=1'], >++ }], >++ ['enable_captive_portal_detection==1', { >++ 'defines': ['ENABLE_CAPTIVE_PORTAL_DETECTION=1'], >++ }], >++ ['enable_app_list==1', { >++ 'defines': ['ENABLE_APP_LIST=1'], >++ }], >++ ['disable_file_support==1', { >++ 'defines': ['DISABLE_FILE_SUPPORT=1'], >++ }], >++ ['disable_ftp_support==1', { >++ 'defines': ['DISABLE_FTP_SUPPORT=1'], >++ }], >++ ['enable_supervised_users==1', { >++ 'defines': ['ENABLE_SUPERVISED_USERS=1'], >++ }], >++ ['enable_mdns==1', { >++ 'defines': ['ENABLE_MDNS=1'], >++ }], >++ ['enable_service_discovery==1', { >++ 'defines' : [ 'ENABLE_SERVICE_DISCOVERY=1' ], >++ }], >++ ['enable_hangout_services_extension==1', { >++ 'defines': ['ENABLE_HANGOUT_SERVICES_EXTENSION=1'], >++ }], >++ ['enable_ipc_fuzzer==1', { >++ 'defines': ['ENABLE_IPC_FUZZER=1'], >++ }], >++ ['v8_use_external_startup_data==1', { >++ 'defines': ['V8_USE_EXTERNAL_STARTUP_DATA'], >++ }], >++ ['enable_webvr==1', { >++ 'defines': ['ENABLE_WEBVR'], >++ }], >++ # SAFE_BROWSING_DB_LOCAL - service manages a local database. >++ # SAFE_BROWSING_DB_REMOTE - service talks via API to a database >++ # SAFE_BROWSING_CSD - enable client-side phishing detection. >++ ['safe_browsing==1', { >++ 'defines': [ >++ # TODO(nparker): Remove existing uses of FULL_SAFE_BROWSING >++ 'FULL_SAFE_BROWSING', >++ 'SAFE_BROWSING_CSD', >++ 'SAFE_BROWSING_DB_LOCAL', >++ ], >++ }], >++ ['safe_browsing==2 and OS!="ios"', { >++ 'defines': [ >++ 'SAFE_BROWSING_DB_REMOTE', >++ ], >++ }], >++ ], # conditions for 'target_defaults' >++ 'target_conditions': [ >++ ['<(use_libpci)==1', { >++ 'defines': ['USE_LIBPCI=1'], >++ }], >++ ['<(use_openssl_certs)==1', { >++ 'defines': ['USE_OPENSSL_CERTS=1'], >++ }], >++ ['>(nacl_untrusted_build)==1', { >++ 'defines': [ >++ 'USE_OPENSSL_CERTS=1', >++ ], >++ }], >++ ['<(use_glib)==1 and >(nacl_untrusted_build)==0', { >++ 'defines': ['USE_GLIB=1'], >++ }], >++ ['<(use_nss_certs)==1 and >(nacl_untrusted_build)==0', { >++ 'defines': ['USE_NSS_CERTS=1'], >++ }], >++ ['<(chromeos)==1 and >(nacl_untrusted_build)==0', { >++ 'defines': ['OS_CHROMEOS=1'], >++ }], >++ ['<(asan)==1 and >(nacl_untrusted_build)==0', { >++ 'defines': [ >++ 'ADDRESS_SANITIZER', >++ 'MEMORY_TOOL_REPLACES_ALLOCATOR', >++ 'MEMORY_SANITIZER_INITIAL_SIZE', >++ ], >++ }], >++ ['enable_wexit_time_destructors==1 and OS!="win"', { >++ # TODO: Enable on Windows too, http://crbug.com/404525 >++ 'variables': { 'clang_warning_flags': ['-Wexit-time-destructors']}, >++ }], >++ ['chromium_code==0', { >++ 'variables': { >++ 'clang_warning_flags': [ >++ # Lots of third-party libraries have unused variables. Instead of >++ # suppressing them individually, we just blanket suppress them here. >++ '-Wno-unused-variable', >++ ], >++ }, >++ 'conditions': [ >++ [ 'os_posix==1 and OS!="mac" and OS!="ios"', { >++ # Remove -Wextra for third-party code. >++ 'cflags!': [ '-Wextra' ], >++ 'cflags_cc': [ >++ # Don't warn about hash_map in third-party code. >++ '-Wno-deprecated', >++ ], >++ }], >++ [ 'os_posix==1 and clang!=1 and OS!="mac" and OS!="ios"', { >++ # When we don't control the compiler, don't use -Wall for >++ # third-party code either. >++ 'cflags!': [ '-Wall' ], >++ }], >++ # TODO: Fix all warnings on chromeos too. >++ [ 'os_posix==1 and OS!="mac" and OS!="ios" and (clang!=1 or chromeos==1)', { >++ 'cflags!': [ >++ '-Werror', >++ ], >++ }], >++ [ 'OS=="win"', { >++ 'defines': [ >++ '_CRT_SECURE_NO_DEPRECATE', >++ '_CRT_NONSTDC_NO_WARNINGS', >++ '_CRT_NONSTDC_NO_DEPRECATE', >++ '_SCL_SECURE_NO_DEPRECATE', >++ ], >++ 'msvs_disabled_warnings': [ >++ # forcing value to bool 'true' or 'false' (performance warning) >++ 4800, >++ ], >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'WarningLevel': '3', >++ 'WarnAsError': 'true', >++ 'Detect64BitPortabilityProblems': 'false', >++ }, >++ }, >++ 'conditions': [ >++ ['buildtype=="Official"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { 'WarnAsError': 'false' }, >++ } >++ }], >++ [ 'component=="shared_library"', { >++ # TODO(darin): Unfortunately, some third_party code depends on base. >++ 'msvs_disabled_warnings': [ >++ 4251, # class 'std::xx' needs to have dll-interface. >++ ], >++ }], >++ ], >++ }], >++ [ 'OS=="mac" or OS=="ios"', { >++ 'xcode_settings': { >++ 'WARNING_CFLAGS!': ['-Wextra'], >++ }, >++ 'conditions': [ >++ ['buildtype=="Official"', { >++ 'xcode_settings': { >++ 'GCC_TREAT_WARNINGS_AS_ERRORS': 'NO', # -Werror >++ }, >++ }], >++ ], >++ }], >++ [ 'OS=="ios"', { >++ 'xcode_settings': { >++ 'RUN_CLANG_STATIC_ANALYZER': 'NO', >++ # Several internal ios directories generate numerous warnings for >++ # -Wobjc-missing-property-synthesis. >++ 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', >++ }, >++ }], >++ ], >++ }, { >++ # In Chromium code, we define __STDC_foo_MACROS in order to get the >++ # C99 macros on Mac and Linux. >++ 'defines': [ >++ '__STDC_CONSTANT_MACROS', >++ '__STDC_FORMAT_MACROS', >++ ], >++ 'conditions': [ >++ ['OS=="win"', { >++ # turn on warnings for signed/unsigned mismatch on chromium code. >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': ['/we4389'], >++ }, >++ }, >++ }], >++ ['OS=="win" and component=="shared_library"', { >++ 'msvs_disabled_warnings': [ >++ 4251, # class 'std::xx' needs to have dll-interface. >++ ], >++ }], >++ ], >++ }], >++ ], # target_conditions for 'target_defaults' >++ 'default_configuration': 'Debug', >++ 'configurations': { >++ # VCLinkerTool LinkIncremental values below: >++ # 0 == default >++ # 1 == /INCREMENTAL:NO >++ # 2 == /INCREMENTAL >++ # Debug links incremental, Release does not. >++ # >++ # Abstract base configurations to cover common attributes. >++ # >++ 'Common_Base': { >++ 'abstract': 1, >++ 'msvs_configuration_attributes': { >++ 'OutputDirectory': '<(DEPTH)\\build\\<(build_dir_prefix)$(ConfigurationName)', >++ 'IntermediateDirectory': '$(OutDir)\\obj\\$(ProjectName)', >++ 'CharacterSet': '1', >++ }, >++ 'msvs_settings':{ >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '/bigobj', >++ # Tell the compiler to crash on failures. This is undocumented >++ # and unsupported but very handy. >++ '/d2FastFail', >++ ], >++ }, >++ 'VCLinkerTool': { >++ # Add the default import libs. >++ 'AdditionalDependencies': [ >++ 'kernel32.lib', >++ 'gdi32.lib', >++ 'winspool.lib', >++ 'comdlg32.lib', >++ 'advapi32.lib', >++ 'shell32.lib', >++ 'ole32.lib', >++ 'oleaut32.lib', >++ 'user32.lib', >++ 'uuid.lib', >++ 'odbc32.lib', >++ 'odbccp32.lib', >++ 'delayimp.lib', >++ 'credui.lib', >++ ], >++ 'AdditionalOptions': [ >++ # Suggested by Microsoft Devrel to avoid >++ # LINK : fatal error LNK1248: image size (80000000) exceeds maximum allowable size (80000000) >++ # which started happening more regularly after VS2013 Update 4. >++ # Needs to be a bit lower for VS2015, or else errors out. >++ '/maxilksize:0x7ff00000', >++ # Tell the linker to crash on failures. >++ '/fastfail', >++ ], >++ }, >++ }, >++ 'conditions': [ >++ ['OS=="win" and win_fastlink==1 and MSVS_VERSION != "2013"', { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ # /PROFILE is incompatible with /debug:fastlink >++ 'Profile': 'false', >++ 'AdditionalOptions': [ >++ # Tell VS 2015+ to create a PDB that references debug >++ # information in .obj and .lib files instead of copying >++ # it all. >++ '/DEBUG:FASTLINK', >++ ], >++ }, >++ }, >++ }], >++ ['OS=="win" and MSVS_VERSION == "2015"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Work around crbug.com/526851, bug in VS 2015 RTM compiler. >++ '/Zc:sizedDealloc-', >++ # Disable thread-safe statics to avoid overhead and because >++ # they are disabled on other platforms. See crbug.com/587210 >++ # and -fno-threadsafe-statics. >++ '/Zc:threadSafeInit-', >++ ], >++ }, >++ }, >++ }], >++ ], >++ }, >++ 'x86_Base': { >++ 'abstract': 1, >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'MinimumRequiredVersion': '5.01', # XP. >++ 'TargetMachine': '1', >++ }, >++ 'VCLibrarianTool': { >++ 'TargetMachine': '1', >++ }, >++ }, >++ 'msvs_configuration_platform': 'Win32', >++ }, >++ 'x64_Base': { >++ 'abstract': 1, >++ 'msvs_configuration_platform': 'x64', >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ # Make sure to understand http://crbug.com/361720 if you want to >++ # increase this. >++ 'MinimumRequiredVersion': '5.02', # Server 2003. >++ 'TargetMachine': '17', # x86 - 64 >++ 'AdditionalLibraryDirectories!': >++ ['<(windows_sdk_path)/Lib/10.0.10586.0/um/x86'], >++ 'AdditionalLibraryDirectories': >++ ['<(windows_sdk_path)/Lib/10.0.10586.0/um/x64'], >++ # Doesn't exist x64 SDK. Should use oleaut32 in any case. >++ 'IgnoreDefaultLibraryNames': [ 'olepro32.lib' ], >++ }, >++ 'VCLibrarianTool': { >++ 'AdditionalLibraryDirectories!': >++ ['<(windows_sdk_path)/Lib/10.0.10586.0/um/x86'], >++ 'AdditionalLibraryDirectories': >++ ['<(windows_sdk_path)/Lib/10.0.10586.0/um/x64'], >++ 'TargetMachine': '17', # x64 >++ }, >++ }, >++ }, >++ 'Debug_Base': { >++ 'abstract': 1, >++ 'defines': [ >++ 'DYNAMIC_ANNOTATIONS_ENABLED=1', >++ 'WTF_USE_DYNAMIC_ANNOTATIONS=1', >++ ], >++ 'xcode_settings': { >++ 'GCC_OPTIMIZATION_LEVEL': '<(mac_debug_optimization)', >++ 'OTHER_CFLAGS': [ >++ '<@(debug_extra_cflags)', >++ ], >++ }, >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'Optimization': '<(win_debug_Optimization)', >++ 'PreprocessorDefinitions': ['_DEBUG'], >++ 'BasicRuntimeChecks': '<(win_debug_RuntimeChecks)', >++ 'RuntimeLibrary': '<(win_debug_RuntimeLibrary)', >++ 'conditions': [ >++ # According to MSVS, InlineFunctionExpansion=0 means >++ # "default inlining", not "/Ob0". >++ # Thus, we have to handle InlineFunctionExpansion==0 separately. >++ ['win_debug_InlineFunctionExpansion==0', { >++ 'AdditionalOptions': ['/Ob0'], >++ }], >++ ['win_debug_InlineFunctionExpansion!=""', { >++ 'InlineFunctionExpansion': >++ '<(win_debug_InlineFunctionExpansion)', >++ }], >++ ['win_debug_disable_iterator_debugging==1', { >++ 'PreprocessorDefinitions': ['_HAS_ITERATOR_DEBUGGING=0'], >++ }], >++ # if win_debug_OmitFramePointers is blank, leave as default >++ ['win_debug_OmitFramePointers==1', { >++ 'OmitFramePointers': 'true', >++ }], >++ ['win_debug_OmitFramePointers==0', { >++ 'OmitFramePointers': 'false', >++ # The above is not sufficient (http://crbug.com/106711): it >++ # simply eliminates an explicit "/Oy", but both /O2 and /Ox >++ # perform FPO regardless, so we must explicitly disable. >++ # We still want the false setting above to avoid having >++ # "/Oy /Oy-" and warnings about overriding. >++ 'AdditionalOptions': ['/Oy-'], >++ }], >++ ], >++ 'AdditionalOptions': [ '<@(win_debug_extra_cflags)', ], >++ }, >++ 'VCLinkerTool': { >++ 'LinkIncremental': '<(msvs_debug_link_incremental)', >++ # ASLR makes debugging with windbg difficult because Chrome.exe and >++ # Chrome.dll share the same base name. As result, windbg will >++ # name the Chrome.dll module like chrome_<base address>, where >++ # <base address> typically changes with each launch. This in turn >++ # means that breakpoints in Chrome.dll don't stick from one launch >++ # to the next. For this reason, we turn ASLR off in debug builds. >++ # Note that this is a three-way bool, where 0 means to pick up >++ # the default setting, 1 is off and 2 is on. >++ 'RandomizedBaseAddress': 1, >++ }, >++ 'VCResourceCompilerTool': { >++ 'PreprocessorDefinitions': ['_DEBUG'], >++ }, >++ }, >++ 'variables': { >++ 'clang_warning_flags': [ >++ # Allow comparing the address of references and 'this' against 0 >++ # in debug builds. Technically, these can never be null in >++ # well-defined C/C++ and Clang can optimize such checks away in >++ # release builds, but they may be used in asserts in debug builds. >++ '-Wno-undefined-bool-conversion', >++ '-Wno-tautological-undefined-compare', >++ ], >++ }, >++ 'conditions': [ >++ ['OS=="linux" or OS=="android"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '<@(debug_extra_cflags)', >++ ], >++ }], >++ ], >++ }], >++ ['OS=="linux" and target_arch!="ia32" and disable_glibcxx_debug==0', { >++ # Enable libstdc++ debugging facilities to help catch problems >++ # early, see http://crbug.com/65151 . >++ # TODO(phajdan.jr): Should we enable this for all of POSIX? >++ 'defines': ['_GLIBCXX_DEBUG=1',], >++ }], >++ ['release_valgrind_build==0', { >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fstack-protector-strong', # Implies -fstack-protector >++ ], >++ }, >++ }], >++ ], >++ }, >++ 'Release_Base': { >++ 'abstract': 1, >++ 'defines': [ >++ 'NDEBUG', >++ ], >++ 'xcode_settings': { >++ 'DEAD_CODE_STRIPPING': 'YES', # -Wl,-dead_strip >++ 'GCC_OPTIMIZATION_LEVEL': '<(mac_release_optimization)', >++ 'OTHER_CFLAGS': [ '<@(release_extra_cflags)', ], >++ }, >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'RuntimeLibrary': '<(win_release_RuntimeLibrary)', >++ 'conditions': [ >++ # In official builds, each target will self-select >++ # an optimization level. >++ ['buildtype!="Official"', { >++ 'Optimization': '<(win_release_Optimization)', >++ }, >++ ], >++ # According to MSVS, InlineFunctionExpansion=0 means >++ # "default inlining", not "/Ob0". >++ # Thus, we have to handle InlineFunctionExpansion==0 separately. >++ ['win_release_InlineFunctionExpansion==0', { >++ 'AdditionalOptions': ['/Ob0'], >++ }], >++ ['win_release_InlineFunctionExpansion!=""', { >++ 'InlineFunctionExpansion': >++ '<(win_release_InlineFunctionExpansion)', >++ }], >++ # if win_release_OmitFramePointers is blank, leave as default >++ ['win_release_OmitFramePointers==1', { >++ 'OmitFramePointers': 'true', >++ }], >++ ['win_release_OmitFramePointers==0', { >++ 'OmitFramePointers': 'false', >++ # The above is not sufficient (http://crbug.com/106711): it >++ # simply eliminates an explicit "/Oy", but both /O2 and /Ox >++ # perform FPO regardless, so we must explicitly disable. >++ # We still want the false setting above to avoid having >++ # "/Oy /Oy-" and warnings about overriding. >++ 'AdditionalOptions': ['/Oy-'], >++ }], >++ ['asan==0', { >++ # Put data in separate COMDATs. This allows the linker >++ # to put bit-identical constants at the same address even if >++ # they're unrelated constants, which saves binary size. >++ # This optimization can't be used when ASan is enabled because >++ # it is not compatible with the ASan ODR checker. >++ 'AdditionalOptions': ['/Gw'], >++ }], >++ ], >++ 'AdditionalOptions': [ >++ '/d2Zi+', # Improve debugging of Release builds. >++ '/Zc:inline', # Remove unreferenced COMDAT (faster links). >++ '<@(win_release_extra_cflags)', >++ ], >++ }, >++ 'VCLinkerTool': { >++ # LinkIncremental is a tri-state boolean, where 0 means default >++ # (i.e., inherit from parent solution), 1 means false, and >++ # 2 means true. >++ 'LinkIncremental': '1', >++ # This corresponds to the /PROFILE flag which ensures the PDB >++ # file contains FIXUP information (growing the PDB file by about >++ # 5%) but does not otherwise alter the output binary. This >++ # information is used by the Syzygy optimization tool when >++ # decomposing the release image. >++ 'Profile': 'true', >++ }, >++ }, >++ 'conditions': [ >++ ['release_valgrind_build==0 and tsan==0', { >++ 'defines': [ >++ 'NVALGRIND', >++ 'DYNAMIC_ANNOTATIONS_ENABLED=0', >++ ], >++ }, { >++ 'defines': [ >++ 'MEMORY_TOOL_REPLACES_ALLOCATOR', >++ 'MEMORY_SANITIZER_INITIAL_SIZE', >++ 'DYNAMIC_ANNOTATIONS_ENABLED=1', >++ 'WTF_USE_DYNAMIC_ANNOTATIONS=1', >++ ], >++ }], >++ ['OS=="win" and win_use_allocator_shim==1', { >++ 'defines': [ >++ 'ALLOCATOR_SHIM' >++ ], >++ }], >++ # _FORTIFY_SOURCE isn't really supported by Clang now, see >++ # http://llvm.org/bugs/show_bug.cgi?id=16821. >++ # It seems to work fine with Ubuntu 12 headers though, so use it >++ # in official builds. >++ ['os_posix==1 and (asan!=1 and msan!=1 and tsan!=1 and lsan!=1 and ubsan!=1) and (OS!="linux" or clang!=1 or buildtype=="Official")', { >++ 'target_conditions': [ >++ ['chromium_code==1', { >++ # Non-chromium code is not guaranteed to compile cleanly >++ # with _FORTIFY_SOURCE. Also, fortified build may fail >++ # when optimizations are disabled, so only do that for Release >++ # build. >++ 'defines': [ >++ '_FORTIFY_SOURCE=2', >++ ], >++ }], >++ ], >++ }], >++ ['OS=="linux" or OS=="android"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '<@(release_extra_cflags)', >++ ], >++ 'conditions': [ >++ ['enable_resource_whitelist_generation==1', { >++ 'cflags': [ >++ '-Wunknown-pragmas -Wno-error=unknown-pragmas', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['OS=="ios"', { >++ 'defines': [ >++ 'NS_BLOCK_ASSERTIONS=1', >++ ], >++ }], >++ ], >++ }, >++ # >++ # Concrete configurations >++ # >++ 'Debug': { >++ 'inherit_from': ['Common_Base', 'x86_Base', 'Debug_Base'], >++ }, >++ 'Release': { >++ 'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base'], >++ }, >++ 'conditions': [ >++ [ 'OS=="ios"', { >++ 'Profile': { >++ 'inherit_from': ['Common_Base', 'x86_Base', 'Release_Base'], >++ 'target_conditions': [ >++ [ '_type=="executable"', { >++ # To get a real .dSYM bundle produced by dsymutil, set the >++ # debug information format to dwarf-with-dsym. Since >++ # strip_from_xcode will not be used, set Xcode to do the >++ # stripping as well. >++ 'xcode_settings': { >++ 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym', >++ 'DEPLOYMENT_POSTPROCESSING': 'YES', >++ 'STRIP_INSTALLED_PRODUCT': 'YES', >++ }, >++ }], >++ ], >++ }, >++ }], >++ [ 'OS=="win"', { >++ # TODO(bradnelson): add a gyp mechanism to make this more graceful. >++ 'Debug_x64': { >++ 'inherit_from': ['Common_Base', 'x64_Base', 'Debug_Base'], >++ }, >++ 'Release_x64': { >++ 'inherit_from': ['Common_Base', 'x64_Base', 'Release_Base'], >++ }, >++ }], >++ ], >++ }, >++ }, >++ 'conditions': [ >++ ['os_posix==1', { >++ 'target_defaults': { >++ 'ldflags': [ >++ '-Wl,-z,now', >++ '-Wl,-z,relro', >++ ], >++ # TODO(glider): enable the default options on other systems. >++ 'conditions': [ >++ ['use_sanitizer_options==1 and ((OS=="linux" and (chromeos==0 or target_arch!="ia32")) or OS=="mac")', { >++ 'dependencies': [ >++ '<(DEPTH)/build/sanitizers/sanitizers.gyp:sanitizer_options', >++ ], >++ }], >++ ], >++ }, >++ }], >++ # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 >++ ['os_posix==1 and disable_fatal_linker_warnings==0 and use_evdev_gestures==0 and (chromeos==0 or target_arch!="arm")', { >++ 'target_defaults': { >++ 'ldflags': [ >++ '-Wl,--fatal-warnings', >++ ], >++ }, >++ }], >++ # -Wl,-z,-defs doesn't work with the sanitiziers, http://crbug.com/452065 >++ ['(OS=="linux" or OS=="android") and asan==0 and msan==0 and tsan==0 and ubsan==0 and ubsan_security==0 and ubsan_vptr==0 and cfi_diag==0', { >++ 'target_defaults': { >++ 'ldflags': [ >++ '-Wl,-z,defs', >++ ], >++ }, >++ }], >++ ['os_posix==1 and chromeos==0', { >++ # Chrome OS enables -fstack-protector-strong via its build wrapper, >++ # and we want to avoid overriding this, so stack-protector is only >++ # enabled when not building on Chrome OS. >++ # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc >++ # supports it. See also https://crbug.com/533294 >++ 'target_defaults': { >++ 'cflags': [ >++ '-fstack-protector', >++ '--param=ssp-buffer-size=4', >++ ], >++ }, >++ }], >++ ['os_posix==1 and OS=="linux"', { >++ 'defines': [ >++ '_LARGEFILE_SOURCE', >++ '_LARGEFILE64_SOURCE', >++ '_FILE_OFFSET_BITS=64', >++ ], >++ }], >++ ['os_posix==1 and OS!="mac" and OS!="ios"', { >++ 'target_defaults': { >++ # Enable -Werror by default, but put it in a variable so it can >++ # be disabled in ~/.gyp/include.gypi on the valgrind builders. >++ 'variables': { >++ 'werror%': '-Werror', >++ 'libraries_for_target%': '', >++ 'conditions' : [ >++ # Enable -Wextra for chromium_code when we control the compiler. >++ ['clang==1', { 'wextra': '-Wextra' }, { 'wextra': '-Wno-extra' }], >++ ], >++ }, >++ 'defines': [ >++ '_FILE_OFFSET_BITS=64', >++ ], >++ 'cflags': [ >++ '<(werror)', # See note above about the werror variable. >++ '-pthread', >++ '-fno-strict-aliasing', # See http://crbug.com/32204 >++ '-Wall', >++ '<(wextra)', >++ # Don't warn about unused function params. We use those everywhere. >++ '-Wno-unused-parameter', >++ # Don't warn about the "struct foo f = {0};" initialization pattern. >++ '-Wno-missing-field-initializers', >++ # Don't export any symbols (for example, to plugins we dlopen()). >++ # Note: this is *required* to make some plugins work. >++ '-fvisibility=hidden', >++ '-pipe', >++ ], >++ 'cflags_cc': [ >++ '-fno-exceptions', >++ '-fno-rtti', >++ # If this is removed then remove the corresponding /Zc:threadSafeInit- >++ # for Windows. >++ '-fno-threadsafe-statics', >++ # Make inline functions have hidden visiblity by default. >++ # Surprisingly, not covered by -fvisibility=hidden. >++ '-fvisibility-inlines-hidden', >++ ], >++ 'ldflags': [ >++ '-pthread', '-Wl,-z,noexecstack', >++ ], >++ 'libraries' : [ >++ '<(libraries_for_target)', >++ ], >++ 'configurations': { >++ 'Debug_Base': { >++ 'variables': { >++ 'debug_optimize%': '0', >++ }, >++ 'defines': [ >++ '_DEBUG', >++ ], >++ 'cflags': [ >++ '-O>(debug_optimize)', >++ '-g', >++ ], >++ 'conditions' : [ >++ ['OS=="android" and target_arch!="mipsel" and target_arch!="mips64el"', { >++ # TODO(jdduke) Re-enable on mips after resolving linking >++ # issues with libc++ (crbug.com/456380). >++ 'ldflags': [ >++ # Warn in case of text relocations. >++ '-Wl,--warn-shared-textrel', >++ ], >++ }], >++ ['OS=="android" and android_full_debug==0', { >++ # Some configurations are copied from Release_Base to reduce >++ # the binary size. >++ 'variables': { >++ 'debug_optimize%': 's', >++ }, >++ 'cflags': [ >++ '-fdata-sections', >++ '-ffunction-sections', >++ ], >++ 'ldflags': [ >++ '-Wl,-O1', >++ '-Wl,--as-needed', >++ ], >++ }], >++ ['OS=="android" and android_full_debug==0 and target_arch!="arm64"', { >++ # We don't omit frame pointers on arm64 since they are required >++ # to correctly unwind stackframes which contain system library >++ # function frames (crbug.com/391706). >++ 'cflags': [ >++ '-fomit-frame-pointer', >++ ], >++ }], >++ ['OS=="linux" and target_arch=="ia32"', { >++ 'ldflags': [ >++ '-Wl,--no-as-needed', >++ ], >++ }], >++ ['debug_unwind_tables==1', { >++ 'cflags': ['-funwind-tables'], >++ }, { >++ 'cflags': ['-fno-unwind-tables', '-fno-asynchronous-unwind-tables'], >++ 'defines': ['NO_UNWIND_TABLES'], >++ }], >++ ['linux_use_debug_fission==1 and linux_use_gold_flags==1 and binutils_version>=223', { >++ 'cflags': ['-gsplit-dwarf'], >++ }], >++ ], >++ }, >++ 'Release_Base': { >++ 'variables': { >++ 'release_optimize%': '2', >++ # Binaries become big and gold is unable to perform GC >++ # and remove unused sections for some of test targets >++ # on 32 bit platform. >++ # (This is currently observed only in chromeos valgrind bots) >++ # The following flag is to disable --gc-sections linker >++ # option for these bots. >++ 'no_gc_sections%': 0, >++ # TODO(bradnelson): reexamine how this is done if we change the >++ # expansion of configurations >++ 'release_valgrind_build%': 0, >++ }, >++ 'cflags': [ >++ '-O<(release_optimize)', >++ # Don't emit the GCC version ident directives, they just end up >++ # in the .comment section taking up binary size. >++ '-fno-ident', >++ # Put data and code in their own sections, so that unused symbols >++ # can be removed at link time with --gc-sections. >++ '-fdata-sections', >++ '-ffunction-sections', >++ ], >++ 'ldflags': [ >++ # Specifically tell the linker to perform optimizations. >++ # See http://lwn.net/Articles/192624/ . >++ '-Wl,-O1', >++ '-Wl,--as-needed', >++ ], >++ 'conditions' : [ >++ ['no_gc_sections==0', { >++ 'ldflags': [ >++ '-Wl,--gc-sections', >++ ], >++ }], >++ ['OS=="android" and target_arch!="arm64"', { >++ # We don't omit frame pointers on arm64 since they are required >++ # to correctly unwind stackframes which contain system library >++ # function frames (crbug.com/391706). >++ 'cflags': [ >++ '-fomit-frame-pointer', >++ ] >++ }], >++ ['OS=="android" and target_arch!="mipsel" and target_arch!="mips64el"', { >++ # TODO(jdduke) Re-enable on mips after resolving linking >++ # issues with libc++ (crbug.com/456380). >++ 'ldflags': [ >++ # Warn in case of text relocations. >++ '-Wl,--warn-shared-textrel', >++ ], >++ }], >++ ['OS=="android"', { >++ 'variables': { >++ 'release_optimize%': 's', >++ }, >++ }, { >++ 'ldflags': [ >++ # TODO(pcc): Fix linker bug which requires us to link pthread >++ # unconditionally here (crbug.com/623236). >++ '-Wl,--no-as-needed', >++ '-lpthread', >++ '-Wl,--as-needed', >++ ], >++ }], >++ ['profiling==1', { >++ 'cflags': [ >++ '-fno-omit-frame-pointer', >++ '-g', >++ ], >++ 'conditions' : [ >++ ['profiling_full_stack_frames==1', { >++ 'cflags': [ >++ '-fno-inline', >++ '-fno-optimize-sibling-calls', >++ ], >++ }], >++ ], >++ }], >++ ['release_unwind_tables==1', { >++ 'cflags': ['-funwind-tables'], >++ }, { >++ 'cflags': ['-fno-unwind-tables', '-fno-asynchronous-unwind-tables'], >++ 'defines': ['NO_UNWIND_TABLES'], >++ }], >++ ], >++ }, >++ }, >++ 'conditions': [ >++ ['target_arch=="ia32"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'asflags': [ >++ # Needed so that libs with .s files (e.g. libicudata.a) >++ # are compatible with the general 32-bit-ness. >++ '-32', >++ ], >++ # All floating-point computations on x87 happens in 80-bit >++ # precision. Because the C and C++ language standards allow >++ # the compiler to keep the floating-point values in higher >++ # precision than what's specified in the source and doing so >++ # is more efficient than constantly rounding up to 64-bit or >++ # 32-bit precision as specified in the source, the compiler, >++ # especially in the optimized mode, tries very hard to keep >++ # values in x87 floating-point stack (in 80-bit precision) >++ # as long as possible. This has important side effects, that >++ # the real value used in computation may change depending on >++ # how the compiler did the optimization - that is, the value >++ # kept in 80-bit is different than the value rounded down to >++ # 64-bit or 32-bit. There are possible compiler options to >++ # make this behavior consistent (e.g. -ffloat-store would keep >++ # all floating-values in the memory, thus force them to be >++ # rounded to its original precision) but they have significant >++ # runtime performance penalty. >++ # >++ # -mfpmath=sse -msse2 makes the compiler use SSE instructions >++ # which keep floating-point values in SSE registers in its >++ # native precision (32-bit for single precision, and 64-bit >++ # for double precision values). This means the floating-point >++ # value used during computation does not change depending on >++ # how the compiler optimized the code, since the value is >++ # always kept in its specified precision. >++ # >++ # Refer to http://crbug.com/348761 for rationale behind SSE2 >++ # being a minimum requirement for 32-bit Linux builds and >++ # http://crbug.com/313032 for an example where this has "bit" >++ # us in the past. >++ 'cflags': [ >++ '-msse2', >++ '-mfpmath=sse', >++ '-mmmx', # Allows mmintrin.h for MMX intrinsics. >++ '-m32', >++ ], >++ 'ldflags': [ >++ '-m32', >++ ], >++ 'conditions': [ >++ # Use gold linker for Android ia32 target. >++ ['OS=="android"', { >++ # Use gold linker for Android ia32 target. >++ 'ldflags': [ >++ '-fuse-ld=gold', >++ ], >++ # Use -mstackrealign due to a bug on ia32 Jelly Bean. >++ # See crbug.com/521527 >++ 'cflags': [ >++ '-mstackrealign', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="x64"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ # Use gold linker for Android x64 target. >++ ['OS=="android"', { >++ 'ldflags': [ >++ '-fuse-ld=gold', >++ ], >++ }], >++ ], >++ 'cflags': [ >++ '-m64', >++ '-march=x86-64', >++ ], >++ 'ldflags': [ >++ '-m64', >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="arm"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['clang==0', { >++ 'cflags': [ >++ # Don't warn about "maybe" uninitialized. Clang doesn't >++ # include this in -Wall but gcc does, and it gives false >++ # positives. >++ '-Wno-maybe-uninitialized', >++ ], >++ 'cflags_cc': [ >++ # The codesourcery arm-2009q3 toolchain warns at that the ABI >++ # has changed whenever it encounters a varargs function. This >++ # silences those warnings, as they are not helpful and >++ # clutter legitimate warnings. >++ '-Wno-abi', >++ ], >++ }], >++ ['clang==1 and arm_arch!="" and OS!="android"', { >++ 'cflags': [ >++ '-target arm-linux-gnueabihf', >++ ], >++ 'ldflags': [ >++ '-target arm-linux-gnueabihf', >++ ], >++ }], >++ ['arm_arch!=""', { >++ 'cflags': [ >++ '-march=<(arm_arch)', >++ ], >++ 'conditions': [ >++ ['use_lto==1 or use_lto_o2==1', { >++ 'ldflags': [ >++ '-march=<(arm_arch)', >++ ], >++ }], >++ ], >++ }], >++ ['arm_tune!=""', { >++ 'cflags': [ >++ '-mtune=<(arm_tune)', >++ ], >++ 'conditions': [ >++ ['use_lto==1 or use_lto_o2==1', { >++ 'ldflags': [ >++ '-mtune=<(arm_tune)', >++ ], >++ }], >++ ], >++ }], >++ ['arm_fpu!=""', { >++ 'cflags': [ >++ '-mfpu=<(arm_fpu)', >++ ], >++ 'conditions': [ >++ ['use_lto==1 or use_lto_o2==1', { >++ 'ldflags': [ >++ '-mfpu=<(arm_fpu)', >++ ], >++ }], >++ ], >++ }], >++ ['arm_float_abi!=""', { >++ 'cflags': [ >++ '-mfloat-abi=<(arm_float_abi)', >++ ], >++ 'conditions': [ >++ ['use_lto==1 or use_lto_o2==1', { >++ 'ldflags': [ >++ '-mfloat-abi=<(arm_float_abi)', >++ ], >++ }], >++ ], >++ }], >++ ['arm_thumb==1', { >++ 'cflags': [ >++ '-mthumb', >++ ], >++ 'conditions': [ >++ ['use_lto==1 or use_lto_o2==1', { >++ 'ldflags': [ >++ '-mthumb', >++ ], >++ }], >++ ], >++ }], >++ ['OS=="android"', { >++ # Most of the following flags are derived from what Android >++ # uses by default when building for arm, reference for which >++ # can be found in the following file in the Android NDK: >++ # toolchains/arm-linux-androideabi-4.9/setup.mk >++ 'cflags': [ >++ # The tree-sra optimization (scalar replacement for >++ # aggregates enabling subsequent optimizations) leads to >++ # invalid code generation when using the Android NDK's >++ # compiler (r5-r7). This can be verified using >++ # webkit_unit_tests' WTF.Checked_int8_t test. >++ '-fno-tree-sra', >++ # The following option is disabled to improve binary >++ # size and performance in gcc 4.9. >++ '-fno-caller-saves', >++ '-Wno-psabi', >++ ], >++ # Android now supports .relro sections properly. >++ # NOTE: While these flags enable the generation of .relro >++ # sections, the generated libraries can still be loaded on >++ # older Android platform versions. >++ 'ldflags': [ >++ '-Wl,-z,relro', >++ '-Wl,-z,now', >++ '-fuse-ld=gold', >++ ], >++ 'conditions': [ >++ ['arm_thumb==1', { >++ 'cflags': [ '-mthumb-interwork' ], >++ }], >++ ['profiling==1', { >++ 'cflags': [ >++ # Thumb code with frame pointer makes chrome crash >++ # early. >++ '-marm', >++ '-mapcs-frame', # Required by -fno-omit-frame-pointer. >++ # The perf report sometimes incorrectly attributes >++ # code from tail calls. >++ '-fno-optimize-sibling-calls', >++ ], >++ 'cflags!': [ >++ '-fomit-frame-pointer', >++ ], >++ }], >++ ['clang==1', { >++ 'cflags!': [ >++ # Clang does not support the following options. >++ '-mapcs-frame', >++ '-mthumb-interwork', >++ '-finline-limit=64', >++ '-fno-tree-sra', >++ '-fno-caller-saves', >++ '-Wno-psabi', >++ ], >++ }], >++ ['clang==1 and linux_use_bundled_gold==0', { >++ 'ldflags': [ >++ # Let clang find the ld.gold in the NDK. >++ '--gcc-toolchain=<(android_toolchain)/..', >++ ], >++ }], >++ ['asan==1', { >++ 'cflags': [ >++ '-marm', # Required for frame pointer based stack traces. >++ ], >++ }], >++ ], >++ }], >++ ['chromecast==1', { >++ 'cflags': [ >++ # We set arm_arch to "" so that -march compiler option >++ # is not set. Otherwise a gcc bug that would complain >++ # about it conflicting with '-mcpu=cortex-a9'. The flag >++ # '-march=armv7-a' is actually redundant anyway because >++ # it is enabled by default when we built the toolchain. >++ # And using '-mcpu=cortex-a9' should be sufficient. >++ '-mcpu=cortex-a9', >++ '-funwind-tables', >++ # Breakpad requires symbols with debugging information >++ '-g', >++ ], >++ 'ldflags': [ >++ # We want to statically link libstdc++/libgcc. >++ '-static-libstdc++', >++ '-static-libgcc', >++ # Don't allow visible symbols from libraries that contain >++ # assembly code with symbols that aren't hidden properly. >++ # http://b/26390825 >++ '-Wl,--exclude-libs=libffmpeg.a', >++ ], >++ 'cflags!': [ >++ # Some components in Chromium (e.g. v8, skia, ffmpeg) >++ # define their own cflags for arm builds that could >++ # conflict with the flags we set here (e.g. >++ # '-mcpu=cortex-a9'). Remove these flags explicitly. >++ '-march=armv7-a', >++ '-mtune=cortex-a8', >++ ], >++ 'target_conditions': [ >++ [ '_type=="executable" and OS!="android"', { >++ # Statically link whole libstdc++ and libgcc in >++ # executables to ensure only one copy at runtime. >++ 'ldflags': [ >++ # Note executables also get -static-stdlibc++/libgcc. >++ # Despite including libstdc++/libgcc archives, we >++ # still need to specify static linking for them in >++ # order to prevent the executable from having a >++ # dynamic dependency on them. >++ # Export stdlibc++ and libgcc symbols to force shlibs >++ # to refer to these symbols from the executable. >++ '-Wl,--export-dynamic', >++ '-lm', # stdlibc++ requires math.h >++ # In case we redefined stdlibc++ symbols >++ # (e.g. tc_malloc) >++ '-Wl,--allow-multiple-definition', >++ '-Wl,--whole-archive', >++ '-l:libstdc++.a', >++ '-l:libgcc.a', >++ '-Wl,--no-whole-archive', >++ ], >++ }] >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="arm64"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags!': [ >++ '-fstack-protector', # stack protector is always enabled on arm64. >++ ], >++ }], >++ ['clang==1 and arm_arch!="" and OS!="android"', { >++ 'cflags': [ >++ '-target aarch64-linux-gnu', >++ ], >++ 'ldflags': [ >++ '-target aarch64-linux-gnu', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="mipsel"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['mips_arch_variant=="r6"', { >++ 'conditions': [ >++ ['clang==1', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ '-target mipsel-linux-android', '-march=mipsel', '-mcpu=mips32r6', ], >++ 'ldflags': [ '-target mipsel-linux-android', ], >++ }], >++ ], >++ }, { # clang==0 >++ 'cflags': ['-mips32r6', '-Wa,-mips32r6', ], >++ }], >++ ['clang==0 and OS=="android"', { >++ 'ldflags': ['-mips32r6', '-Wl,-melf32ltsmip',], >++ }], >++ ['mips_msa==1', { >++ 'cflags': ['-mmsa', '-mfp64', '-msched-weight', '-mload-store-pairs'], >++ }], >++ ], >++ 'cflags': [ '-mfp64', '-mno-odd-spreg' ], >++ 'ldflags': [ '-mfp64', '-mno-odd-spreg' ], >++ }], >++ ['mips_arch_variant=="r2"', { >++ 'conditions': [ >++ ['mips_float_abi=="hard" and mips_fpu_mode!=""', { >++ 'cflags': ['-m<(mips_fpu_mode)'], >++ }], >++ ['clang==1', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ '-target mipsel-linux-android', '-march=mipsel', '-mcpu=mips32r2'], >++ 'ldflags': [ '-target mipsel-linux-android', ], >++ }, { >++ 'cflags': [ '-target mipsel-linux-gnu', '-march=mipsel', '-mcpu=mips32r2'], >++ 'ldflags': [ '-target mipsel-linux-gnu', ], >++ }], >++ ], >++ }, { # clang==0 >++ 'cflags': ['-mips32r2', '-Wa,-mips32r2', ], >++ }], >++ ], >++ }], >++ ['mips_arch_variant=="r1"', { >++ 'conditions': [ >++ ['clang==1', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ '-target mipsel-linux-android', '-march=mipsel', '-mcpu=mips32'], >++ 'ldflags': [ '-target mipsel-linux-android', ], >++ }, { >++ 'cflags': [ '-target mipsel-linux-gnu', '-march=mipsel', '-mcpu=mips32'], >++ 'ldflags': [ '-target mipsel-linux-gnu', ], >++ }], >++ ], >++ }, { # clang==0 >++ 'cflags': ['-mips32', '-Wa,-mips32', ], >++ }], >++ ], >++ }], >++ ['clang==1', { >++ 'cflags!': [ >++ # Clang does not support the following options. >++ '-finline-limit=64', >++ ], >++ # TODO(gordanac) Enable integrated-as. >++ 'cflags': [ '-fno-integrated-as' ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ >++ # Else /usr/bin/as gets picked up. >++ '-B<(android_toolchain)', >++ ], >++ }], >++ ], >++ }], >++ ['clang==1 and OS=="android"', { >++ 'ldflags': [ >++ # Let clang find the ld in the NDK. >++ '--gcc-toolchain=<(android_toolchain)/..', >++ ], >++ }], >++ ['mips_dsp_rev==1', { >++ 'cflags': ['-mdsp'], >++ }], >++ ['mips_dsp_rev==2', { >++ 'cflags': ['-mdspr2'], >++ }], >++ ], >++ 'cflags': [ >++ '-m<(mips_float_abi)-float' >++ ], >++ 'ldflags': [ >++ '-Wl,--no-keep-memory' >++ ], >++ 'cflags_cc': [ >++ '-Wno-uninitialized', >++ ], >++ }], >++ ['_toolset=="target" and _type=="executable"', { >++ 'conditions': [ >++ ['OS=="linux"', { >++ 'ldflags': ['-pie'], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="mips64el"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['mips_arch_variant=="r6"', { >++ 'conditions': [ >++ ['clang==1', { >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ '-target mips64el-linux-android', '-march=mips64el', '-mcpu=mips64r6', ], >++ 'ldflags': [ '-target mips64el-linux-android', ], >++ }], >++ ], >++ }, { # clang==0 >++ 'cflags': ['-mips64r6', '-Wa,-mips64r6'], >++ 'ldflags': ['-mips64r6'], >++ }], >++ ['mips_msa==1', { >++ 'cflags': ['-mmsa', '-mfp64', '-msched-weight', '-mload-store-pairs'], >++ }], >++ ], >++ }], >++ ['mips_arch_variant=="r2"', { >++ 'cflags': ['-mips64r2', '-Wa,-mips64r2'], >++ 'ldflags': ['-mips64r2'], >++ }], >++ ['clang==1', { >++ 'cflags!': [ >++ # Clang does not support the following options. >++ '-finline-limit=64', >++ ], >++ # TODO(gordanac) Enable integrated-as. >++ 'cflags': [ '-fno-integrated-as' ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'cflags': [ >++ # Else /usr/bin/as gets picked up. >++ '-B<(android_toolchain)', >++ ], >++ }], >++ ], >++ }], >++ ['clang==1 and OS=="android"', { >++ 'ldflags': [ >++ # Let clang find the ld in the NDK. >++ '--gcc-toolchain=<(android_toolchain)/..', >++ ], >++ }], >++ ], >++ 'cflags_cc': [ >++ '-Wno-uninitialized', >++ ], >++ }], >++ ], >++ }], >++ ['linux_fpic==1', { >++ 'cflags': [ >++ '-fPIC', >++ ], >++ 'ldflags': [ >++ '-fPIC', >++ ], >++ }], >++ ['sysroot!=""', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '--sysroot=<(sysroot)', >++ ], >++ 'ldflags': [ >++ '--sysroot=<(sysroot)', >++ '<!(<(DEPTH)/build/linux/sysroot_ld_path.sh <(sysroot))', >++ ], >++ }]] >++ }], >++ ['clang==1', { >++ 'cflags': [ >++ # See http://crbug.com/110262 >++ '-fcolor-diagnostics', >++ ], >++ 'cflags_cc': [ >++ # gnu++11 instead of c++11 is needed because some code uses >++ # typeof() (a GNU extension). >++ # TODO(thakis): Eventually switch this to c++11 instead, >++ # http://crbug.com/427584 >++ '-std=gnu++11', >++ ], >++ }], >++ ['clang==1 and chromeos==1', { >++ 'cflags': [ >++ # TODO(thakis): Remove, http://crbug.com/263960 >++ '-Wno-reserved-user-defined-literal', >++ ], >++ }], >++ ['clang==0 and host_clang==1', { >++ 'target_conditions': [ >++ ['_toolset=="host"', { >++ 'cflags_cc': [ '-std=gnu++11', ], >++ }], >++ ], >++ }], >++ ['clang==1 and clang_use_chrome_plugins==1', { >++ 'cflags': [ >++ '<@(clang_chrome_plugins_flags)', >++ ], >++ }], >++ ['clang==1 and clang_load!=""', { >++ 'cflags': [ >++ '-Xclang', '-load', '-Xclang', '<(clang_load)', >++ ], >++ }], >++ ['clang==1 and clang_add_plugin!=""', { >++ 'cflags': [ >++ '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)', >++ ], >++ }], >++ ['clang==1 and target_arch=="ia32"', { >++ 'cflags': [ >++ # Else building libyuv gives clang's register allocator issues, >++ # see llvm.org/PR15798 / crbug.com/233709 >++ '-momit-leaf-frame-pointer', >++ # Align the stack on 16-byte boundaries, http://crbug.com/418554. >++ '-mstack-alignment=16', >++ '-mstackrealign', >++ ], >++ }], >++ # Common options for AddressSanitizer, LeakSanitizer, >++ # ThreadSanitizer, MemorySanitizer and non-official CFI builds. >++ ['asan==1 or lsan==1 or tsan==1 or msan==1 or ubsan==1 or ubsan_security==1 or ubsan_vptr==1 or ' >++ '(cfi_vptr==1 and buildtype!="Official")', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fno-omit-frame-pointer', >++ '-gline-tables-only', >++ ], >++ 'cflags!': [ >++ '-fomit-frame-pointer', >++ ], >++ }], >++ ], >++ }], >++ ['asan==1 or lsan==1 or tsan==1 or msan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags!': [ >++ # Functions interposed by the sanitizers can make ld think >++ # that some libraries aren't needed when they actually are, >++ # http://crbug.com/234010. As workaround, disable --as-needed. >++ '-Wl,--as-needed', >++ ], >++ 'defines': [ >++ 'MEMORY_TOOL_REPLACES_ALLOCATOR', >++ 'MEMORY_SANITIZER_INITIAL_SIZE', >++ ], >++ }], >++ ], >++ }], >++ ['asan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=address', >++ # TODO(eugenis): Re-enable. http://crbug.com/427202 >++ #'-fsanitize-blacklist=<(asan_blacklist)', >++ ], >++ 'ldflags': [ >++ '-fsanitize=address', >++ ], >++ }], >++ ], >++ 'conditions': [ >++ ['OS=="mac"', { >++ 'cflags': [ >++ '-mllvm -asan-globals=0', # http://crbug.com/352073 >++ ], >++ }], >++ ], >++ }], >++ ['ubsan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ ['chromecast==0', { >++ 'cflags': [ >++ # Employ the experimental PBQP register allocator to avoid >++ # slow compilation on files with too many basic blocks. >++ # See http://crbug.com/426271. >++ '-mllvm -regalloc=pbqp', >++ # Speculatively use coalescing to slightly improve the code >++ # generated by PBQP regallocator. May increase compile time. >++ '-mllvm -pbqp-coalescing', >++ ], >++ }], >++ ], >++ 'cflags': [ >++ # FIXME: work on enabling more flags and getting rid of false >++ # positives. http://crbug.com/174801. >++ '-fsanitize=bounds', >++ '-fsanitize=float-divide-by-zero', >++ '-fsanitize=integer-divide-by-zero', >++ '-fsanitize=null', >++ '-fsanitize=object-size', >++ '-fsanitize=return', >++ '-fsanitize=returns-nonnull-attribute', >++ '-fsanitize=shift-exponent', >++ '-fsanitize=signed-integer-overflow', >++ '-fsanitize=unreachable', >++ '-fsanitize=vla-bound', >++ '-fsanitize-blacklist=<(ubsan_blacklist)', >++ ], >++ 'cflags_cc!': [ >++ '-fno-rtti', >++ ], >++ 'cflags!': [ >++ '-fno-rtti', >++ ], >++ 'ldflags': [ >++ '-fsanitize=undefined', >++ ], >++ 'defines': [ >++ 'UNDEFINED_SANITIZER', >++ ], >++ }], >++ ], >++ }], >++ ['ubsan_security==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=signed-integer-overflow,shift,vptr', >++ '-fsanitize-blacklist=<(ubsan_security_blacklist)', >++ ], >++ 'cflags_cc!': [ >++ '-fno-rtti', >++ ], >++ 'cflags!': [ >++ '-fno-rtti', >++ ], >++ 'ldflags': [ >++ '-fsanitize=signed-integer-overflow,shift,vptr', >++ ], >++ 'defines': [ >++ 'UNDEFINED_SANITIZER', >++ ], >++ }], >++ ], >++ }], >++ ['ubsan_vptr==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=vptr', >++ '-fsanitize-blacklist=<(ubsan_vptr_blacklist)', >++ ], >++ 'cflags_cc!': [ >++ '-fno-rtti', >++ ], >++ 'cflags!': [ >++ '-fno-rtti', >++ ], >++ 'ldflags': [ >++ '-fsanitize=vptr', >++ ], >++ 'defines': [ >++ 'UNDEFINED_SANITIZER', >++ ], >++ }], >++ ], >++ }], >++ ['sanitizer_coverage!=""', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize-coverage=<(sanitizer_coverage)', >++ ], >++ 'defines': [ >++ 'SANITIZER_COVERAGE', >++ ], >++ }], >++ ], >++ }], >++ ['sanitizer_coverage!="" and target_arch=="arm"', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-mllvm -sanitizer-coverage-block-threshold=0', # http://crbug.com/517105 >++ ], >++ }], >++ ], >++ }], >++ ['asan_field_padding!=0', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize-address-field-padding=<(asan_field_padding)', >++ ], >++ }], >++ ], >++ }], >++ ['lsan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=leak', >++ ], >++ 'ldflags': [ >++ '-fsanitize=leak', >++ ], >++ 'defines': [ >++ 'LEAK_SANITIZER', >++ 'WTF_USE_LEAK_SANITIZER=1', >++ ], >++ }], >++ ], >++ }], >++ ['tsan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=thread', >++ '-fsanitize-blacklist=<(tsan_blacklist)', >++ ], >++ 'ldflags': [ >++ '-fsanitize=thread', >++ ], >++ 'defines': [ >++ 'THREAD_SANITIZER', >++ 'DYNAMIC_ANNOTATIONS_EXTERNAL_IMPL=1', >++ 'WTF_USE_DYNAMIC_ANNOTATIONS_NOIMPL=1', >++ ], >++ }], >++ ], >++ }], >++ ['msan==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=memory', >++ '-fsanitize-memory-track-origins=<(msan_track_origins)', >++ '-fsanitize-blacklist=<(msan_blacklist)', >++ ], >++ 'ldflags': [ >++ '-fsanitize=memory', >++ ], >++ 'defines': [ >++ 'MEMORY_SANITIZER', >++ ], >++ }], >++ ], >++ }], >++ ['use_instrumented_libraries==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/instrumented_libraries/instrumented_libraries.gyp:instrumented_libraries', >++ ], >++ }], >++ ['use_prebuilt_instrumented_libraries==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/instrumented_libraries/instrumented_libraries.gyp:prebuilt_instrumented_libraries', >++ ], >++ }], >++ ['use_custom_libcxx==1', { >++ 'dependencies': [ >++ '<(DEPTH)/buildtools/third_party/libc++/libc++.gyp:libcxx_proxy', >++ ], >++ }], >++ ['order_profiling!=0 and OS=="android"', { >++ 'target_conditions' : [ >++ ['_toolset=="target"', { >++ 'cflags': ['-finstrument-functions'], >++ 'defines': ['CYGPROFILE_INSTRUMENTATION'], >++ }], >++ ], >++ }], >++ # Clang doesn't understand -finstrument-functions-exclude-file-list=. >++ ['order_profiling!=0 and OS=="android" and clang==0', { >++ 'target_conditions' : [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ # Allow mmx intrinsics to inline, so that the >++ # compiler can expand the intrinsics. >++ '-finstrument-functions-exclude-file-list=mmintrin.h', >++ # Avoids errors with current NDK: >++ # "third_party/android_tools/ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/include/arm_neon.h:3426:3: error: argument must be a constant" >++ '-finstrument-functions-exclude-file-list=arm_neon.h', >++ ], >++ }], >++ ], >++ }], >++ ['linux_dump_symbols==1', { >++ 'cflags': [ '-g' ], >++ 'conditions': [ >++ ['OS=="linux" and host_arch=="ia32" and linux_use_bundled_gold==0', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags': [ >++ # Attempt to use less memory to prevent the linker from >++ # running out of address space. Considering installing a >++ # 64-bit kernel and switching to a 64-bit linker. >++ '-Wl,--no-keep-memory', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['use_allocator!="tcmalloc"', { >++ 'defines': ['NO_TCMALLOC'], >++ }], >++ ['linux_use_gold_flags==1', { >++ # Newer gccs and clangs support -fuse-ld, use the flag to force gold >++ # selection. >++ # gcc -- http://gcc.gnu.org/onlinedocs/gcc-4.8.0/gcc/Optimize-Options.html >++ 'ldflags': [ '-fuse-ld=gold', ], >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'conditions': [ >++ # TODO(thestig): Enable this for disabled cases. >++ [ 'linux_use_bundled_binutils==1', { >++ 'ldflags': [ >++ # Experimentation found that using four linking threads >++ # saved ~20% of link time. >++ # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_thread/thread/281527606915bb36 >++ # Only apply this to the target linker, since the host >++ # linker might not be gold, but isn't used much anyway. >++ '-Wl,--threads', >++ '-Wl,--thread-count=4', >++ ], >++ }], >++ # TODO(thestig): Enable this for disabled cases. >++ [ 'buildtype!="Official" and chromeos==0 and release_valgrind_build==0 and asan==0 and lsan==0 and tsan==0 and msan==0 and ubsan==0 and ubsan_security==0 and ubsan_vptr==0', { >++ 'ldflags': [ >++ '-Wl,--detect-odr-violations', >++ ], >++ }], >++ ], >++ }], >++ ], >++ 'conditions': [ >++ ['release_valgrind_build==0 and order_profiling==0 and asan==0 and msan==0 and lsan==0 and tsan==0', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags': [ >++ '-Wl,--icf=<(gold_icf_level)', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['linux_use_bundled_binutils==1', { >++ 'cflags': [ >++ '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', >++ ], >++ }], >++ ['linux_use_bundled_gold==1 and ' >++ 'not (clang==0 and (use_lto==1 or use_lto_o2==1))', { >++ # Put our binutils, which contains gold in the search path. We pass >++ # the path to gold to the compiler. gyp leaves unspecified what the >++ # cwd is when running the compiler, so the normal gyp path-munging >++ # fails us. This hack gets the right path. >++ # >++ # Disabled when using GCC LTO because GCC also uses the -B search >++ # path at link time to find "as", and our bundled "as" can only >++ # target x86. >++ 'ldflags': [ >++ '-B<!(cd <(DEPTH) && pwd -P)/<(binutils_dir)', >++ ], >++ }], >++ # Some binutils 2.23 releases may or may not have new dtags enabled, >++ # but they are all compatible with --disable-new-dtags, >++ # because the new dynamic tags are not created by default. >++ ['binutils_version>=223', { >++ # Newer binutils don't set DT_RPATH unless you disable "new" dtags >++ # and the new DT_RUNPATH doesn't work without --no-as-needed flag. >++ # FIXME(mithro): Figure out the --as-needed/--no-as-needed flags >++ # inside this file to allow usage of --no-as-needed and removal of >++ # this flag. >++ 'ldflags': [ >++ '-Wl,--disable-new-dtags', >++ ], >++ }], >++ ['clang==0', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags_cc': [ >++ '-std=gnu++11', >++ # See comment for -Wno-c++11-narrowing. >++ '-Wno-narrowing', >++ ], >++ }], >++ ], >++ }], >++ ['clang==0 and host_clang==0', { >++ 'target_conditions': [ >++ ['_toolset=="host"', { >++ 'cflags_cc': [ >++ '-std=gnu++11', >++ # See comment for -Wno-c++11-narrowing. >++ '-Wno-narrowing', >++ ], >++ }], >++ ], >++ }], >++ ['clang==0 and chromeos==1', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags_cc': [ >++ # TODO(thakis): Remove, http://crbug.com/263960 >++ '-Wno-literal-suffix', >++ ], >++ }], >++ ], >++ }], >++ ['clang==0 and host_clang==0 and chromeos==1', { >++ 'target_conditions': [ >++ ['_toolset=="host"', { >++ 'cflags_cc': [ >++ # TODO(thakis): Remove, http://crbug.com/263960 >++ '-Wno-literal-suffix', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }, >++ }], >++ # *BSD-specific options; note that most *BSD options are set above, >++ # with Linux. >++ ['OS=="openbsd" or OS=="freebsd"', { >++ 'target_defaults': { >++ 'ldflags': [ >++ '-Wl,--no-keep-memory', >++ ], >++ }, >++ }], >++ # Android-specific options; note that most are set above with Linux. >++ ['OS=="android"', { >++ 'variables': { >++ # Placing this variable here prevents from forking libvpx, used >++ # by remoting. Remoting is off, so it needn't built, >++ # so forking it's deps seems like overkill. >++ # But this variable need defined to properly run gyp. >++ # A proper solution is to have an OS==android conditional >++ # in third_party/libvpx/libvpx.gyp to define it. >++ 'libvpx_path': 'lib/linux/arm', >++ }, >++ 'target_defaults': { >++ 'variables': { >++ 'release_extra_cflags%': '', >++ 'conditions': [ >++ # If we're using the components build, append "cr" to all shared >++ # libraries to avoid naming collisions with android system library >++ # versions with the same name (e.g. skia, icu). >++ ['component=="shared_library"', { >++ 'android_product_extension': 'cr.so', >++ }, { >++ 'android_product_extension': 'so', >++ } ], >++ ], >++ }, >++ 'target_conditions': [ >++ ['_type=="shared_library"', { >++ 'product_extension': '<(android_product_extension)', >++ }], >++ # Settings for building device targets using Android's toolchain. >++ # These are based on the setup.mk file from the Android NDK. >++ # >++ # The NDK Android executable link step looks as follows: >++ # $LDFLAGS >++ # $(TARGET_CRTBEGIN_DYNAMIC_O) <-- crtbegin.o >++ # $(PRIVATE_OBJECTS) <-- The .o that we built >++ # $(PRIVATE_STATIC_LIBRARIES) <-- The .a that we built >++ # $(TARGET_LIBGCC) <-- libgcc.a >++ # $(PRIVATE_SHARED_LIBRARIES) <-- The .so that we built >++ # $(PRIVATE_LDLIBS) <-- System .so >++ # $(TARGET_CRTEND_O) <-- crtend.o >++ # >++ # For now the above are approximated for executables by adding >++ # crtbegin.o to the end of the ldflags and 'crtend.o' to the end >++ # of 'libraries'. >++ # >++ # The NDK Android shared library link step looks as follows: >++ # $LDFLAGS >++ # $(PRIVATE_OBJECTS) <-- The .o that we built >++ # -l,--whole-archive >++ # $(PRIVATE_WHOLE_STATIC_LIBRARIES) >++ # -l,--no-whole-archive >++ # $(PRIVATE_STATIC_LIBRARIES) <-- The .a that we built >++ # $(TARGET_LIBGCC) <-- libgcc.a >++ # $(PRIVATE_SHARED_LIBRARIES) <-- The .so that we built >++ # $(PRIVATE_LDLIBS) <-- System .so >++ # >++ # For now, assume that whole static libraries are not needed. >++ # >++ # For both executables and shared libraries, add the proper >++ # libgcc.a to the start of libraries which puts it in the >++ # proper spot after .o and .a files get linked in. >++ # >++ # TODO: The proper thing to do longer-tem would be proper gyp >++ # support for a custom link command line. >++ ['_toolset=="target"', { >++ 'cflags!': [ >++ '-pthread', # Not supported by Android toolchain. >++ ], >++ 'cflags': [ >++ '-ffunction-sections', >++ '-funwind-tables', >++ '-g', >++ '-fstack-protector', >++ '-fno-short-enums', >++ '-finline-limit=64', >++ '<@(release_extra_cflags)', >++ '--sysroot=<(android_ndk_sysroot)', >++ ], >++ 'cflags_cc': [ >++ # NOTE: The libc++ header include paths below are specified in >++ # cflags rather than include_dirs because they need to come >++ # after include_dirs. >++ # The include ordering here is important; change with caution. >++ '-isystem<(android_libcpp_include)', >++ '-isystem<(android_ndk_root)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include', >++ '-isystem<(android_ndk_root)/sources/android/support/include', >++ ], >++ 'defines': [ >++ 'ANDROID', >++ '__GNU_SOURCE=1', # Necessary for clone() >++ # The NDK has these things, but doesn't define the constants >++ # to say that it does. Define them here instead. >++ 'HAVE_SYS_UIO_H', >++ 'ANDROID_NDK_VERSION=<(android_ndk_version)', >++ ], >++ 'ldflags!': [ >++ '-pthread', # Not supported by Android toolchain. >++ ], >++ 'ldflags': [ >++ '-Wl,--build-id=sha1', >++ '-Wl,--no-undefined', >++ '--sysroot=<(android_ndk_sysroot)', >++ '-nostdlib', >++ '-L<(android_libcpp_libs_dir)', >++ # Don't allow visible symbols from libgcc or libc++ to be >++ # re-exported. >++ '-Wl,--exclude-libs=libgcc.a', >++ '-Wl,--exclude-libs=libc++_static.a', >++ # Don't allow visible symbols from libraries that contain >++ # assembly code with symbols that aren't hidden properly. >++ # http://crbug.com/448386 >++ '-Wl,--exclude-libs=libcommon_audio.a', >++ '-Wl,--exclude-libs=libcommon_audio_neon.a', >++ '-Wl,--exclude-libs=libcommon_audio_sse2.a', >++ '-Wl,--exclude-libs=libiSACFix.a', >++ '-Wl,--exclude-libs=libisac_neon.a', >++ '-Wl,--exclude-libs=libopus.a', >++ '-Wl,--exclude-libs=libvpx.a', >++ ], >++ 'libraries': [ >++ '-l<(android_libcpp_library)', >++ '-latomic', >++ # Manually link the libgcc.a that the cross compiler uses. >++ '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)', >++ '-lc', >++ '-ldl', >++ '-lm', >++ ], >++ 'conditions': [ >++ ['component=="static_library"', { >++ 'target_conditions': [ >++ ['use_native_jni_exports==0', { >++ # Use a linker version script to strip JNI exports from >++ # binaries which have not specifically asked to use them. >++ 'ldflags': [ >++ '-Wl,--version-script=<!(cd <(DEPTH) && pwd -P)/build/android/android_no_jni_exports.lst', >++ ], >++ }], >++ ], >++ }], >++ ['clang==1', { >++ 'libraries!': [ >++ # Clang with libc++ does not require an explicit atomic >++ # library reference. >++ '-latomic', >++ ], >++ 'cflags': [ >++ # Work around incompatibilities between bionic and clang >++ # headers. >++ '-D__compiler_offsetof=__builtin_offsetof', >++ '-Dnan=__builtin_nan', >++ ], >++ 'cflags!': [ >++ # Clang does not support the following options. >++ '-finline-limit=64', >++ ], >++ 'conditions': [ >++ ['target_arch=="arm"', { >++ 'cflags': [ >++ '-target arm-linux-androideabi', >++ ], >++ 'ldflags': [ >++ '-target arm-linux-androideabi', >++ ], >++ }], >++ ['target_arch=="ia32"', { >++ 'cflags': [ >++ '-target i686-linux-androideabi', >++ ], >++ 'ldflags': [ >++ '-target i686-linux-androideabi', >++ ], >++ }], >++ # Place holder for arm64 support, not tested. >++ # TODO: Enable clang support for Android Arm64. http://crbug.com/539781 >++ ['target_arch=="arm64"', { >++ 'cflags': [ >++ '-target aarch64-linux-androideabi', >++ ], >++ 'ldflags': [ >++ '-target aarch64-linux-androideabi', >++ ], >++ }], >++ # Place holder for x64 support, not tested. >++ # TODO: Enable clang support for Android x64. http://crbug.com/539781 >++ ['target_arch=="x64"', { >++ 'cflags': [ >++ '-target x86_64-linux-androideabi', >++ ], >++ 'ldflags': [ >++ '-target x86_64-linux-androideabi', >++ ], >++ }], >++ ], >++ }], >++ ['asan==1', { >++ 'cflags': [ >++ # Android build relies on -Wl,--gc-sections removing >++ # unreachable code. ASan instrumentation for globals inhibits >++ # this and results in a library with unresolvable relocations. >++ # TODO(eugenis): find a way to reenable this. >++ '-mllvm -asan-globals=0', >++ ], >++ }], >++ ['target_arch == "arm" and order_profiling==0', { >++ 'ldflags': [ >++ # Enable identical code folding to reduce size. >++ '-Wl,--icf=<(gold_icf_level)', >++ ], >++ }], >++ ['target_arch=="ia32"', { >++ # The x86 toolchain currently has problems with stack-protector. >++ 'cflags!': [ >++ '-fstack-protector', >++ ], >++ 'cflags': [ >++ '-fno-stack-protector', >++ ], >++ }], >++ ], >++ 'target_conditions': [ >++ ['_type=="executable"', { >++ 'cflags': [ >++ '-fPIE', >++ ], >++ 'ldflags': [ >++ '-Bdynamic', >++ '-Wl,--gc-sections', >++ '-Wl,-z,nocopyreloc', >++ '-pie', >++ # crtbegin_dynamic.o should be the last item in ldflags. >++ '<(android_ndk_lib)/crtbegin_dynamic.o', >++ ], >++ 'libraries': [ >++ # crtend_android.o needs to be the last item in libraries. >++ # Do not add any libraries after this! >++ '<(android_ndk_lib)/crtend_android.o', >++ ], >++ }], >++ ['_type=="shared_library" or _type=="loadable_module"', { >++ 'ldflags': [ >++ '-Wl,-shared,-Bsymbolic', >++ # crtbegin_so.o should be the last item in ldflags. >++ '<(android_ndk_lib)/crtbegin_so.o', >++ ], >++ 'libraries': [ >++ # crtend_so.o needs to be the last item in libraries. >++ # Do not add any libraries after this! >++ '<(android_ndk_lib)/crtend_so.o', >++ ], >++ }], >++ ], >++ }], >++ # Settings for building host targets using the system toolchain. >++ ['_toolset=="host"', { >++ 'cflags!': [ >++ # Due to issues in Clang build system, using ASan on 32-bit >++ # binaries on x86_64 host is problematic. >++ # TODO(eugenis): re-enable. >++ '-fsanitize=address', >++ ], >++ 'ldflags!': [ >++ '-fsanitize=address', >++ '-Wl,-z,noexecstack', >++ '-Wl,--gc-sections', >++ '-Wl,-O1', >++ '-Wl,--as-needed', >++ '-Wl,--warn-shared-textrel', >++ '-Wl,--fatal-warnings', >++ ], >++ }], >++ # Settings for building host targets on mac. >++ ['_toolset=="host" and host_os=="mac"', { >++ 'ldflags!': [ >++ '-Wl,-z,now', >++ '-Wl,-z,relro', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ['OS=="solaris"', { >++ 'cflags!': ['-fvisibility=hidden'], >++ 'cflags_cc!': ['-fvisibility-inlines-hidden'], >++ }], >++ ['OS=="mac" or OS=="ios"', { >++ 'target_defaults': { >++ 'mac_bundle': 0, >++ 'xcode_settings': { >++ 'ALWAYS_SEARCH_USER_PATHS': 'NO', >++ 'CLANG_CXX_LANGUAGE_STANDARD': 'c++11', # -std=c++11 >++ # Don't link in libarclite_macosx.a, see http://crbug.com/156530. >++ 'CLANG_LINK_OBJC_RUNTIME': 'NO', # -fno-objc-link-runtime >++ # Warn if automatic synthesis is triggered with >++ # the -Wobjc-missing-property-synthesis flag. >++ 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'YES', >++ 'COPY_PHASE_STRIP': 'NO', >++ 'GCC_C_LANGUAGE_STANDARD': 'c99', # -std=c99 >++ 'GCC_CW_ASM_SYNTAX': 'NO', # No -fasm-blocks >++ 'GCC_ENABLE_CPP_EXCEPTIONS': 'NO', # -fno-exceptions >++ 'GCC_ENABLE_CPP_RTTI': 'NO', # -fno-rtti >++ 'GCC_ENABLE_PASCAL_STRINGS': 'NO', # No -mpascal-strings >++ # GCC_INLINES_ARE_PRIVATE_EXTERN maps to -fvisibility-inlines-hidden >++ 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'YES', >++ 'GCC_OBJC_CALL_CXX_CDTORS': 'YES', # -fobjc-call-cxx-cdtors >++ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', # -fvisibility=hidden >++ 'GCC_THREADSAFE_STATICS': 'NO', # -fno-threadsafe-statics >++ 'GCC_TREAT_WARNINGS_AS_ERRORS': 'YES', # -Werror >++ 'GCC_VERSION': 'com.apple.compilers.llvm.clang.1_0', >++ 'USE_HEADERMAP': 'NO', >++ 'WARNING_CFLAGS': [ >++ '-Wall', >++ '-Wextra', >++ # Don't warn about unused function parameters. >++ '-Wno-unused-parameter', >++ # Don't warn about the "struct foo f = {0};" initialization >++ # pattern. >++ '-Wno-missing-field-initializers', >++ # This warns on selectors from Cocoa headers (-length, -set). >++ # cfe-dev is currently discussing the merits of this warning. >++ # TODO(thakis): Reevaluate what to do with this, based on the >++ # cfe-dev discussion. >++ '-Wno-selector-type-mismatch', >++ ], >++ 'conditions': [ >++ ['chromium_mac_pch', {'GCC_PRECOMPILE_PREFIX_HEADER': 'YES'}, >++ {'GCC_PRECOMPILE_PREFIX_HEADER': 'NO'} >++ ], >++ ['clang==1', { >++ 'OTHER_CFLAGS': [ >++ # See http://crbug.com/110262 >++ '-fcolor-diagnostics', >++ ], >++ }], >++ # Note that the prebuilt Clang binaries should not be used for iOS >++ # development except for ASan builds. >++ ['clang_xcode==0', { >++ 'CC': '$(SOURCE_ROOT)/<(clang_dir)/clang', >++ 'LDPLUSPLUS': '$(SOURCE_ROOT)/<(clang_dir)/clang++', >++ }], >++ ['clang==1 and clang_xcode==0 and clang_use_chrome_plugins==1', { >++ 'OTHER_CFLAGS': [ >++ '<@(clang_chrome_plugins_flags)', >++ ], >++ }], >++ ['clang==1 and clang_xcode==0 and clang_load!=""', { >++ 'OTHER_CFLAGS': [ >++ '-Xclang', '-load', '-Xclang', '<(clang_load)', >++ ], >++ }], >++ ['clang==1 and clang_xcode==0 and clang_add_plugin!=""', { >++ 'OTHER_CFLAGS': [ >++ '-Xclang', '-add-plugin', '-Xclang', '<(clang_add_plugin)', >++ ], >++ }], >++ ], >++ }, >++ 'conditions': [ >++ ['clang==1', { >++ 'variables': { >++ 'clang_dir': '../third_party/llvm-build/Release+Asserts/bin', >++ }, >++ }], >++ ['asan==1', { >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fsanitize=address', >++ '-mllvm -asan-globals=0', # http://crbug.com/352073 >++ '-gline-tables-only', >++ ], >++ }, >++ }], >++ ['sanitizer_coverage!=""', { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize-coverage=<(sanitizer_coverage)', >++ ], >++ 'defines': [ >++ 'SANITIZER_COVERAGE', >++ ], >++ }], >++ ], >++ }], >++ ], >++ 'target_conditions': [ >++ ['_type!="static_library"', { >++ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-search_paths_first']}, >++ 'conditions': [ >++ ['asan==1', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-fsanitize=address', >++ ], >++ }, >++ }], >++ ['mac_write_linker_maps==1', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-Wl,-map,>(_target_name).map', >++ ], >++ }, >++ }], >++ ], >++ }], >++ ['_mac_bundle', { >++ 'xcode_settings': {'OTHER_LDFLAGS': ['-Wl,-ObjC']}, >++ 'target_conditions': [ >++ ['_type=="executable"', { >++ 'conditions': [ >++ ['asan==1', { >++ 'postbuilds': [ >++ { >++ 'variables': { >++ # Define copy_asan_dylib_path in a variable ending in >++ # _path so that gyp understands it's a path and >++ # performs proper relativization during dict merging. >++ 'copy_asan_dylib_path': >++ 'mac/copy_asan_runtime_dylib.sh', >++ }, >++ 'postbuild_name': 'Copy ASan runtime dylib', >++ 'action': [ >++ '<(copy_asan_dylib_path)', >++ ], >++ }, >++ ], >++ }], >++ ], >++ }], >++ ], >++ }], >++ ], # target_conditions >++ }, # target_defaults >++ }], # OS=="mac" or OS=="ios" >++ ['OS=="mac"', { >++ 'target_defaults': { >++ 'defines': [ >++ # Prevent Mac OS X AssertMacros.h from defining macros that collide >++ # with common names, like 'check', 'require', and 'verify'. >++ # (Included by system header. Also exists on iOS but not included.) >++ # http://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/AssertMacros.h >++ '__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORE=0', >++ ], >++ 'variables': { >++ # These should end with %, but there seems to be a bug with % in >++ # variables that are intended to be set to different values in >++ # different targets, like these. >++ # Strip debugging symbols from the target. >++ 'mac_strip': '<(mac_strip_release)', >++ 'conditions': [ >++ ['asan==1', { >++ 'conditions': [ >++ ['mac_want_real_dsym=="default"', { >++ 'mac_real_dsym': 1, >++ }, { >++ 'mac_real_dsym': '<(mac_want_real_dsym)' >++ }], >++ ], >++ }, { >++ 'conditions': [ >++ ['mac_want_real_dsym=="default"', { >++ 'mac_real_dsym': 0, # Fake .dSYMs are fine in most cases. >++ }, { >++ 'mac_real_dsym': '<(mac_want_real_dsym)' >++ }], >++ ], >++ }], >++ ], >++ }, >++ 'configurations': { >++ 'Release_Base': { >++ 'conditions': [ >++ ['branding=="Chrome" and buildtype=="Official"', { >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ # The Google Chrome Framework dSYM generated by dsymutil has >++ # grown larger than 4GB, which dsymutil can't handle. Reduce >++ # the amount of debug symbols. >++ '-fno-standalone-debug', # See http://crbug.com/479841 >++ ] >++ }, >++ }], >++ ], >++ }, # configuration "Release" >++ }, # configurations >++ 'xcode_settings': { >++ # Tell the compiler to use libc++'s headers and the linker to link >++ # against libc++. The latter part normally requires OS X 10.7, >++ # but we still support running on 10.6. How does this work? Two >++ # parts: >++ # 1. Chromium's clang doesn't error on -mmacosx-version-min=10.6 >++ # combined with -stdlib=libc++ (it normally silently produced a >++ # binary that doesn't run on 10.6) >++ # 2. Further down, library_dirs is set to >++ # third_party/libc++-static, which contains a static >++ # libc++.a library. The linker then links against that instead >++ # of against /usr/lib/libc++.dylib when it sees the -lc++ flag >++ # added by the driver. >++ # >++ # In component builds, just link to the system libc++. This has >++ # the effect of making everything depend on libc++, which means >++ # component-build binaries won't run on 10.6 (no libc++ there), >++ # but for a developer-only configuration that's ok. (We don't >++ # want to raise the deployment target yet so that official and >++ # dev builds have the same deployment target. This affects >++ # things like which functions are considered deprecated.) >++ 'CLANG_CXX_LIBRARY': 'libc++', # -stdlib=libc++ >++ 'GCC_DYNAMIC_NO_PIC': 'NO', # No -mdynamic-no-pic >++ # (Equivalent to -fPIC) >++ # MACOSX_DEPLOYMENT_TARGET maps to -mmacosx-version-min >++ 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)', >++ # Keep pch files below xcodebuild/. >++ 'SHARED_PRECOMPS_DIR': '$(CONFIGURATION_BUILD_DIR)/SharedPrecompiledHeaders', >++ 'OTHER_CFLAGS': [ >++ # Someday this can be replaced by an 'GCC_STRICT_ALIASING': 'NO' >++ # xcode_setting, but not until all downstream projects' mac bots are >++ # using xcode >= 4.6, because that's when the default value of the >++ # flag in the compiler switched. Pre-4.6, the value 'NO' for that >++ # setting is a no-op as far as xcode is concerned, but the compiler >++ # behaves differently based on whether -fno-strict-aliasing is >++ # specified or not. >++ '-fno-strict-aliasing', # See http://crbug.com/32204. >++ ], >++ }, >++ 'target_conditions': [ >++ ['>(nacl_untrusted_build)==0 and component=="static_library"', { >++ # See the comment for CLANG_CXX_LIBRARY above for what this does. >++ # The NaCl toolchains have their own toolchain and don't need this. >++ # ASan requires 10.7+ and clang implicitly adds -lc++abi in ASan >++ # mode. Our libc++.a contains both libc++ and libc++abi in one >++ # library, so it doesn't work in that mode. >++ 'conditions': [ >++ ['asan==0', { >++ 'library_dirs': [ '<(DEPTH)/third_party/libc++-static' ], >++ }], >++ ], >++ }], >++ ['_type=="executable"', { >++ # Turn on position-independence (ASLR) for executables. When >++ # PIE is on for the Chrome executables, the framework will >++ # also be subject to ASLR. >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-Wl,-pie', # Position-independent executable (MH_PIE) >++ ], >++ }, >++ }], >++ ['(_type=="executable" or _type=="shared_library" or \ >++ _type=="loadable_module") and mac_strip!=0', { >++ 'target_conditions': [ >++ ['mac_real_dsym == 1', { >++ # To get a real .dSYM bundle produced by dsymutil, set the >++ # debug information format to dwarf-with-dsym. Since >++ # strip_from_xcode will not be used, set Xcode to do the >++ # stripping as well. >++ 'configurations': { >++ 'Release_Base': { >++ 'xcode_settings': { >++ 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym', >++ 'DEPLOYMENT_POSTPROCESSING': 'YES', >++ 'STRIP_INSTALLED_PRODUCT': 'YES', >++ 'conditions': [ >++ # Only strip non-ASan builds. >++ ['asan==0', { >++ 'target_conditions': [ >++ ['_type=="shared_library" or _type=="loadable_module"', { >++ # The Xcode default is to strip debugging symbols >++ # only (-S). Local symbols should be stripped as >++ # well, which will be handled by -x. Xcode will >++ # continue to insert -S when stripping even when >++ # additional flags are added with STRIPFLAGS. >++ 'STRIPFLAGS': '-x', >++ }], # _type=="shared_library" or _type=="loadable_module" >++ ], # target_conditions >++ }, { # asan != 0 >++ 'STRIPFLAGS': '-S', >++ }], >++ ], >++ }, # xcode_settings >++ }, # configuration "Release" >++ }, # configurations >++ }, { # mac_real_dsym != 1 >++ # To get a fast fake .dSYM bundle, use a post-build step to >++ # produce the .dSYM and strip the executable. strip_from_xcode >++ # only operates in the Release configuration. >++ 'postbuilds': [ >++ { >++ 'variables': { >++ # Define strip_from_xcode in a variable ending in _path >++ # so that gyp understands it's a path and performs proper >++ # relativization during dict merging. >++ 'strip_from_xcode_path': 'mac/strip_from_xcode', >++ }, >++ 'postbuild_name': 'Strip If Needed', >++ 'action': ['<(strip_from_xcode_path)'], >++ }, >++ ], # postbuilds >++ }], # mac_real_dsym >++ ], # target_conditions >++ }], # (_type=="executable" or _type=="shared_library" or >++ # _type=="loadable_module") and mac_strip!=0 >++ ], # target_conditions >++ }, # target_defaults >++ }], # OS=="mac" >++ ['OS=="ios"', { >++ 'target_defaults': { >++ 'xcode_settings' : { >++ 'ENABLE_BITCODE': 'NO', >++ 'CLANG_CXX_LIBRARY': 'libc++', # -stdlib=libc++ >++ 'conditions': [ >++ # Older Xcodes do not support -Wno-deprecated-register, so pass an >++ # additional flag to suppress the "unknown compiler option" error. >++ # Restrict this flag to builds that are either compiling with Xcode >++ # or compiling with Xcode's Clang. This will allow Ninja builds to >++ # continue failing on unknown compiler options. >++ # TODO(rohitrao): This flag is temporary and should be removed as >++ # soon as the iOS bots are updated to use Xcode 5.1. >++ ['clang_xcode==1', { >++ 'WARNING_CFLAGS': [ >++ '-Wno-unknown-warning-option', >++ # It's not possible to achieve nullability completeness before >++ # all builders are running Xcode 7. crbug.com/499809 >++ '-Wno-nullability-completeness', >++ ], >++ 'OTHER_CPLUSPLUSFLAGS': [ >++ '$(inherited)', >++ # TODO(ios): Remove once Xcode's libc++ has LLVM r256325 >++ '-isystem <!(cd <(DEPTH) && pwd -P)/third_party/llvm-build/Release+Asserts/include/c++/v1', >++ ], >++ }], >++ # Limit the valid architectures depending on "target_subarch". >++ # This need to include the "arm" architectures but also the "x86" >++ # ones (they are used when building for the simulator). >++ ['target_subarch=="arm32"', { >++ 'VALID_ARCHS': ['armv7', 'i386'], >++ }], >++ ['target_subarch=="arm64"', { >++ 'VALID_ARCHS': ['arm64', 'x86_64'], >++ }], >++ ['target_subarch=="both"', { >++ 'VALID_ARCHS': ['arm64', 'armv7', 'x86_64', 'i386'], >++ }], >++ ], >++ }, >++ 'target_conditions': [ >++ ['_toolset=="host"', { >++ 'xcode_settings': { >++ 'SDKROOT': 'macosx<(mac_sdk)', # -isysroot >++ 'MACOSX_DEPLOYMENT_TARGET': '<(mac_deployment_target)', >++ 'VALID_ARCHS': [ >++ 'x86_64', >++ ], >++ 'ARCHS': [ >++ 'x86_64', >++ ], >++ }, >++ }], >++ ['_toolset=="target"', { >++ 'xcode_settings': { >++ # This section should be for overriding host settings. But, >++ # since we can't negate the iphone deployment target above, we >++ # instead set it here for target only. >++ 'IPHONEOS_DEPLOYMENT_TARGET': '<(ios_deployment_target)', >++ 'ARCHS': ['$(ARCHS_STANDARD_INCLUDING_64_BIT)'], >++ }, >++ }], >++ ['_type=="executable"', { >++ 'configurations': { >++ 'Release_Base': { >++ 'xcode_settings': { >++ 'DEPLOYMENT_POSTPROCESSING': 'YES', >++ 'STRIP_INSTALLED_PRODUCT': 'YES', >++ 'conditions': [ >++ ['buildtype=="Official"', { >++ 'DEBUG_INFORMATION_FORMAT': 'dwarf-with-dsym', >++ }, { >++ # Remove dSYM to reduce build time. >++ 'DEBUG_INFORMATION_FORMAT': 'dwarf', >++ }], >++ ], >++ }, >++ }, >++ 'Debug_Base': { >++ 'xcode_settings': { >++ # Remove dSYM to reduce build time. >++ 'DEBUG_INFORMATION_FORMAT': 'dwarf', >++ }, >++ }, >++ }, >++ 'xcode_settings': { >++ 'conditions': [ >++ ['chromium_ios_signing', { >++ # iOS SDK wants everything for device signed. >++ 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': '<(chromium_ios_signing_identity)', >++ }, { >++ 'CODE_SIGNING_REQUIRED': 'NO', >++ 'CODE_SIGN_IDENTITY[sdk=iphoneos*]': '', >++ }], >++ ], >++ }, >++ }], >++ ], # target_conditions >++ }, # target_defaults >++ }], # OS=="ios" >++ ['OS=="win"', { >++ 'target_defaults': { >++ 'defines': [ >++ '_WIN32_WINNT=0x0A00', >++ 'WINVER=0x0A00', >++ 'WIN32', >++ '_WINDOWS', >++ 'NOMINMAX', >++ 'PSAPI_VERSION=1', >++ '_CRT_RAND_S', >++ 'CERT_CHAIN_PARA_HAS_EXTRA_FIELDS', >++ 'WIN32_LEAN_AND_MEAN', >++ '_ATL_NO_OPENGL', >++ '_SECURE_ATL', >++ # _HAS_EXCEPTIONS must match ExceptionHandling in msvs_settings. >++ '_HAS_EXCEPTIONS=0', >++ # Silence some warnings; we can't switch the the 'recommended' >++ # versions as they're not available on old OSs. >++ '_WINSOCK_DEPRECATED_NO_WARNINGS', >++ ], >++ 'conditions': [ >++ ['buildtype=="Official"', { >++ # In official builds, targets can self-select an optimization >++ # level by defining a variable named 'optimize', and setting it >++ # to one of >++ # - "size", optimizes for minimal code size - the default. >++ # - "speed", optimizes for speed over code size. >++ # - "max", whole program optimization and link-time code >++ # generation. This is very expensive and should be used >++ # sparingly. >++ 'variables': { >++ 'optimize%': 'size', >++ }, >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ # Set /LTCG for the official builds. >++ 'LinkTimeCodeGeneration': '1', >++ 'AdditionalOptions': [ >++ # Set the number of LTCG code-gen threads to eight. >++ # The default is four. This gives a 5-10% link speedup. >++ '/cgthreads:8', >++ ], >++ }, >++ }, >++ 'target_conditions': [ >++ ['optimize=="size"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # 1, optimizeMinSpace, Minimize Size (/O1) >++ 'Optimization': '1', >++ # 2, favorSize - Favor small code (/Os) >++ 'FavorSizeOrSpeed': '2', >++ 'conditions': [ >++ # TODO(thakis): Remove clang==0 here, crbug.com/598772 >++ ['full_wpo_on_official==1 and clang==0', { >++ # This implies link time code generation. >++ 'WholeProgramOptimization': 'true', >++ }], >++ ], >++ }, >++ }, >++ }], >++ # This config is used to avoid a problem in ffmpeg, see >++ # http://crbug.com/264459. >++ ['optimize=="size_no_ltcg"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # 1, optimizeMinSpace, Minimize Size (/O1) >++ 'Optimization': '1', >++ # 2, favorSize - Favor small code (/Os) >++ 'FavorSizeOrSpeed': '2', >++ }, >++ }, >++ }], >++ ['optimize=="speed"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # 2, optimizeMaxSpeed, Maximize Speed (/O2) >++ 'Optimization': '2', >++ # 1, favorSpeed - Favor fast code (/Ot) >++ 'FavorSizeOrSpeed': '1', >++ 'conditions': [ >++ # TODO(thakis): Remove clang==0 here, crbug.com/598772 >++ ['full_wpo_on_official==1 and clang==0', { >++ # This implies link time code generation. >++ 'WholeProgramOptimization': 'true', >++ }], >++ ], >++ }, >++ }, >++ }], >++ ['optimize=="max"', { >++ # Disable Warning 4702 ("Unreachable code") for the WPO/PGO >++ # builds. Probably anything that this would catch that >++ # wouldn't be caught in a normal build isn't going to >++ # actually be a bug, so the incremental value of C4702 for >++ # PGO builds is likely very small. >++ 'msvs_disabled_warnings': [ >++ 4702 >++ ], >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # 2, optimizeMaxSpeed, Maximize Speed (/O2) >++ 'Optimization': '2', >++ # 1, favorSpeed - Favor fast code (/Ot) >++ 'FavorSizeOrSpeed': '1', >++ }, >++ }, >++ # TODO(thakis): Remove clang==0 here, https://crbug.com/598772 >++ 'conditions': [ >++ ['clang==0', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ # This implies link time code generation. >++ 'WholeProgramOptimization': 'true', >++ }, >++ }, >++ }], >++ ], >++ }], >++ ], >++ }], >++ ['msvs_xtree_patched!=1', { >++ # If xtree hasn't been patched, then we disable C4702. Otherwise, >++ # it's enabled. This will generally only be true for system-level >++ # installed Express users. >++ 'msvs_disabled_warnings': [ >++ 4702, # unreachable code >++ ], >++ }], >++ ['full_wpo_on_official==1', { >++ # Disable Warning 4702 ("Unreachable code") for the WPO/PGO >++ # builds. Probably anything that this would catch that >++ # wouldn't be caught in a normal build isn't going to >++ # actually be a bug, so the incremental value of C4702 for >++ # PGO builds is likely very small. >++ 'msvs_disabled_warnings': [ >++ 4702 >++ ], >++ }], >++ ], >++ # Add extra include directories here that need to be in front of the >++ # installed and packaged include directories. This may be needed in >++ # order to force a particular SDK version, such as to get VS 2013 to use >++ # the Windows 10 SDK. Beware of making the INCLUDE variable excessively >++ # long, and be sure to make corresponding changes to >++ # build\toolchain\win\setup_toolchain.py >++ 'msvs_system_include_dirs': [ >++ ], >++ 'msvs_disabled_warnings': [ >++ # C4091: 'typedef ': ignored on left of 'X' when no variable is >++ # declared. >++ # This happens in a number of Windows headers. Dumb. >++ 4091, >++ # C4127: conditional expression is constant >++ # This warning can in theory catch dead code and other problems, but >++ # triggers in far too many desirable cases where the conditional >++ # expression is either set by macros or corresponds some legitimate >++ # compile-time constant expression (due to constant template args, >++ # conditionals comparing the sizes of different types, etc.). Some of >++ # these can be worked around, but it's not worth it. >++ 4127, >++ # C4351: new behavior: elements of array 'array' will be default >++ # initialized >++ # This is a silly "warning" that basically just alerts you that the >++ # compiler is going to actually follow the language spec like it's >++ # supposed to, instead of not following it like old buggy versions >++ # did. There's absolutely no reason to turn this on. >++ 4351, >++ # C4355: 'this': used in base member initializer list >++ # It's commonly useful to pass |this| to objects in a class' >++ # initializer list. While this warning can catch real bugs, most of >++ # the time the constructors in question don't attempt to call methods >++ # on the passed-in pointer (until later), and annotating every legit >++ # usage of this is simply more hassle than the warning is worth. >++ 4355, >++ # C4503: 'identifier': decorated name length exceeded, name was >++ # truncated >++ # This only means that some long error messages might have truncated >++ # identifiers in the presence of lots of templates. It has no effect >++ # on program correctness and there's no real reason to waste time >++ # trying to prevent it. >++ 4503, >++ # Warning C4589 says: "Constructor of abstract class ignores >++ # initializer for virtual base class." Disable this warning because it >++ # is flaky in VS 2015 RTM. It triggers on compiler generated >++ # copy-constructors in some cases. >++ 4589, >++ # C4611: interaction between 'function' and C++ object destruction is >++ # non-portable >++ # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN >++ # suggests using exceptions instead of setjmp/longjmp for C++, but >++ # Chromium code compiles without exception support. We therefore have >++ # to use setjmp/longjmp for e.g. JPEG decode error handling, which >++ # means we have to turn off this warning (and be careful about how >++ # object destruction happens in such cases). >++ 4611, >++ # TODO(maruel): These warnings are level 4. They will be slowly >++ # removed as code is fixed. >++ 4100, # Unreferenced formal parameter >++ 4121, # Alignment of a member was sensitive to packing >++ 4244, # Conversion from 'type1' to 'type2', possible loss of data >++ 4505, # Unreferenced local function has been removed >++ 4510, # Default constructor could not be generated >++ 4512, # Assignment operator could not be generated >++ 4610, # Object can never be instantiated >++ 4838, # Narrowing conversion. Doesn't seem to be very useful. >++ 4995, # 'X': name was marked as #pragma deprecated >++ 4996, # 'X': was declared deprecated (for GetVersionEx). >++ # These are variable shadowing warnings that are new in VS2015. We >++ # should work through these at some point -- they may be removed from >++ # the RTM release in the /W4 set. >++ 4456, 4457, 4458, 4459, >++ # TODO(brucedawson): http://crbug.com/554200 4312 is a VS >++ # 2015 64-bit warning for integer to larger pointer >++ 4312, >++ # TODO(brucedawson): http://crbug.com/593448 - C4595 is an 'illegal >++ # inline operator new' warning that is new in VS 2015 Update 2. >++ # This is equivalent to clang's no-inline-new-delete warning. >++ # See http://bugs.icu-project.org/trac/ticket/11122 >++ 4595, >++ ], >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': ['/MP'], >++ 'MinimalRebuild': 'false', >++ 'BufferSecurityCheck': 'true', >++ 'EnableFunctionLevelLinking': 'true', >++ 'RuntimeTypeInfo': 'false', >++ 'WarningLevel': '4', >++ 'WarnAsError': 'true', >++ 'DebugInformationFormat': '3', >++ # ExceptionHandling must match _HAS_EXCEPTIONS above. >++ 'ExceptionHandling': '0', >++ }, >++ 'VCLibrarianTool': { >++ 'AdditionalOptions': ['/ignore:4221'], >++ 'AdditionalLibraryDirectories': [ >++ '<(windows_sdk_path)/Lib/win8/um/x86', >++ ], >++ }, >++ 'VCLinkerTool': { >++ 'AdditionalDependencies': [ >++ 'wininet.lib', >++ 'dnsapi.lib', >++ 'version.lib', >++ 'msimg32.lib', >++ 'ws2_32.lib', >++ 'usp10.lib', >++ 'psapi.lib', >++ 'dbghelp.lib', >++ 'winmm.lib', >++ 'shlwapi.lib', >++ ], >++ 'AdditionalLibraryDirectories': [ >++ '<(windows_sdk_path)/Lib/win8/um/x86', >++ ], >++ 'GenerateDebugInformation': 'true', >++ 'MapFileName': '$(OutDir)\\$(TargetName).map', >++ 'FixedBaseAddress': '1', >++ # SubSystem values: >++ # 0 == not set >++ # 1 == /SUBSYSTEM:CONSOLE >++ # 2 == /SUBSYSTEM:WINDOWS >++ # Most of the executables we'll ever create are tests >++ # and utilities with console output. >++ 'SubSystem': '1', >++ }, >++ 'VCMIDLTool': { >++ 'GenerateStublessProxies': 'true', >++ 'TypeLibraryName': '$(InputName).tlb', >++ 'OutputDirectory': '$(IntDir)', >++ 'HeaderFileName': '$(InputName).h', >++ 'DLLDataFileName': '$(InputName).dlldata.c', >++ 'InterfaceIdentifierFileName': '$(InputName)_i.c', >++ 'ProxyFileName': '$(InputName)_p.c', >++ }, >++ 'VCResourceCompilerTool': { >++ 'Culture' : '1033', >++ 'AdditionalIncludeDirectories': [ >++ '<(DEPTH)', >++ '<(SHARED_INTERMEDIATE_DIR)', >++ ], >++ }, >++ 'target_conditions': [ >++ ['_type=="executable"', { >++ 'VCManifestTool': { >++ 'EmbedManifest': 'true', >++ }, >++ }], >++ ['_type=="executable" and ">(win_exe_compatibility_manifest)"!=""', { >++ 'VCManifestTool': { >++ 'AdditionalManifestFiles': [ >++ '>(win_exe_compatibility_manifest)', >++ ], >++ }, >++ }], >++ ], >++ 'conditions': [ >++ # Building with Clang on Windows is a work in progress and very >++ # experimental. See crbug.com/82385. >++ # Keep this in sync with the similar blocks in build/config/compiler/BUILD.gn >++ ['clang==1', { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Don't warn about unused function parameters. >++ # (This is also used on other platforms.) >++ '-Wno-unused-parameter', >++ # Don't warn about the "struct foo f = {0};" initialization >++ # pattern. >++ '-Wno-missing-field-initializers', >++ # TODO(hans): Make this list shorter eventually, http://crbug.com/504657 >++ '-Wno-microsoft-enum-value', # http://crbug.com/505296 >++ '-Wno-unknown-pragmas', # http://crbug.com/505314 >++ '-Wno-microsoft-cast', # http://crbug.com/550065 >++ ], >++ }, >++ }], >++ ['clang==1 and clang_use_chrome_plugins==1', { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '<@(clang_chrome_plugins_flags)', >++ ], >++ }, >++ }], >++ ['clang==1 and MSVS_VERSION == "2013"', { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '-fmsc-version=1800', >++ ], >++ }, >++ }], >++ ['clang==1 and MSVS_VERSION == "2015"', { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '-fmsc-version=1900', >++ ], >++ }, >++ }], >++ ['clang==1 and "<!(python <(DEPTH)/build/win/use_ansi_codes.py)"=="True"', { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # cmd.exe doesn't understand ANSI escape codes by default, >++ # so only enable them if something emulating them is around. >++ '-fansi-escape-codes', >++ # Also see http://crbug.com/110262 >++ '-fcolor-diagnostics', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }, >++ }], >++ ['disable_nacl==1', { >++ 'target_defaults': { >++ 'defines': [ >++ 'DISABLE_NACL', >++ ], >++ }, >++ }], >++ ['OS=="win" and msvs_use_common_linker_extras', { >++ 'target_defaults': { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'DelayLoadDLLs': [ >++ 'dbghelp.dll', >++ 'dwmapi.dll', >++ 'shell32.dll', >++ 'uxtheme.dll', >++ ], >++ }, >++ }, >++ 'configurations': { >++ 'x86_Base': { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'AdditionalOptions': [ >++ '/safeseh', >++ '/dynamicbase', >++ '/ignore:4199', >++ '/ignore:4221', >++ '/nxcompat', >++ '/largeaddressaware', >++ ], >++ }, >++ 'conditions': [ >++ ['asan==1', { >++ # TODO(asan/win): Move this down into the general >++ # win-target_defaults section once the 64-bit asan runtime >++ # exists. See crbug.com/345874. >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '-fsanitize=address', >++ '-fsanitize-blacklist=<(PRODUCT_DIR)/../../tools/memory/asan/blacklist_win.txt', >++ # Omit variable info to speed up /Z7 links. >++ '-gline-tables-only', >++ ], >++ 'AdditionalIncludeDirectories': [ >++ # MSVC needs to be able to find the sanitizer headers when >++ # invoked via /fallback. This is critical for using macros >++ # like ASAN_UNPOISON_MEMORY_REGION in files where we fall >++ # back. >++ '<(DEPTH)/<(make_clang_dir)/lib/clang/<!(python <(DEPTH)/tools/clang/scripts/update.py --print-clang-version)/include_sanitizer', >++ ], >++ }, >++ 'VCLinkerTool': { >++ 'AdditionalLibraryDirectories': [ >++ # TODO(hans): If make_clang_dir is absolute, this breaks. >++ '<(DEPTH)/<(make_clang_dir)/lib/clang/<!(python <(DEPTH)/tools/clang/scripts/update.py --print-clang-version)/lib/windows', >++ ], >++ }, >++ 'target_conditions': [ >++ ['component=="shared_library"', { >++ 'VCLinkerTool': { >++ 'AdditionalDependencies': [ >++ 'clang_rt.asan_dynamic-i386.lib', >++ 'clang_rt.asan_dynamic_runtime_thunk-i386.lib', >++ ], >++ }, >++ }], >++ ['_type=="executable" and component=="static_library"', { >++ 'VCLinkerTool': { >++ 'AdditionalDependencies': [ >++ 'clang_rt.asan-i386.lib', >++ ], >++ }, >++ }], >++ ['(_type=="shared_library" or _type=="loadable_module") and component=="static_library"', { >++ 'VCLinkerTool': { >++ 'AdditionalDependencies': [ >++ 'clang_rt.asan_dll_thunk-i386.lib', >++ ], >++ }, >++ }], >++ ], >++ }], >++ ['sanitizer_coverage!=""', { >++ # TODO(asan/win): Move this down into the general >++ # win-target_defaults section once the 64-bit asan runtime >++ # exists. See crbug.com/345874. >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '-fsanitize-coverage=<(sanitizer_coverage)', >++ ], >++ }, >++ }], >++ ], >++ }, >++ 'conditions': [ >++ ['sanitizer_coverage!=""', { >++ # TODO(asan/win): Move this down into the general >++ # win-target_defaults section once the 64-bit asan runtime >++ # exists. See crbug.com/345874. >++ 'defines': [ >++ 'SANITIZER_COVERAGE', >++ ], >++ }], >++ ], >++ }, >++ 'x64_Base': { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'AdditionalOptions': [ >++ # safeseh is not compatible with x64 >++ '/dynamicbase', >++ '/ignore:4199', >++ '/ignore:4221', >++ '/nxcompat', >++ ], >++ }, >++ }, >++ }, >++ }, >++ }, >++ }], >++ ['enable_new_npdevice_api==1', { >++ 'target_defaults': { >++ 'defines': [ >++ 'ENABLE_NEW_NPDEVICE_API', >++ ], >++ }, >++ }], >++ # Don't warn about the "typedef 'foo' locally defined but not used" >++ # for gcc 4.8 and higher. >++ # TODO: remove this flag once all builds work. See crbug.com/227506 >++ ['clang==0', { >++ 'target_defaults': { >++ 'cflags': [ '-Wno-unused-local-typedefs' ], >++ }, >++ }], >++ ['clang==0 and host_clang==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="host"', { 'cflags!': [ '-Wno-unused-local-typedefs' ]}], >++ ], >++ }, >++ }], >++ ['clang==1 and ((OS!="mac" and OS!="ios") or clang_xcode==0) ' >++ 'and OS!="win"', { >++ 'make_global_settings': [ >++ ['CC', '<(make_clang_dir)/bin/clang'], >++ ['CXX', '<(make_clang_dir)/bin/clang++'], >++ ['CC.host', '$(CC)'], >++ ['CXX.host', '$(CXX)'], >++ ], >++ }], >++ ['clang==1 and OS=="win"', { >++ 'make_global_settings': [ >++ # On Windows, gyp's ninja generator only looks at CC. >++ ['CC', '<(make_clang_dir)/bin/clang-cl'], >++ ], >++ }], >++ ['use_lld==1 and OS=="win"', { >++ 'make_global_settings': [ >++ # Limited to Windows because lld-link is the driver that is >++ # compatible with link.exe. >++ ['LD', '<(make_clang_dir)/bin/lld-link'], >++ # lld-link includes a replacement for lib.exe that can produce thin >++ # archives and understands bitcode (for use_lto==1). >++ ['AR', '<(make_clang_dir)/bin/lld-link /lib /llvmlibthin'], >++ ], >++ }], >++ ['OS=="android" and clang==0', { >++ # Hardcode the compiler names in the Makefile so that >++ # it won't depend on the environment at make time. >++ 'make_global_settings': [ >++ ['CC', '<!(/bin/echo -n <(android_toolchain)/*-gcc)'], >++ ['CXX', '<!(/bin/echo -n <(android_toolchain)/*-g++)'], >++ ['CC.host', '<(host_cc)'], >++ ['CXX.host', '<(host_cxx)'], >++ ], >++ }], >++ ['OS=="linux" and target_arch=="mipsel" and host_arch!="mipsel" and chromeos==0 and clang==0', { >++ # Set default mips cross tools on linux. These can be overridden >++ # using CC,CXX,CC.host and CXX.host environment variables. >++ 'make_global_settings': [ >++ ['CC', '<!(which mipsel-linux-gnu-gcc)'], >++ ['CXX', '<!(which mipsel-linux-gnu-g++)'], >++ ['CC.host', '<(host_cc)'], >++ ['CXX.host', '<(host_cxx)'], >++ ], >++ }], >++ ['OS=="linux" and target_arch=="arm" and host_arch!="arm" and chromeos==0 and clang==0', { >++ # Set default ARM cross tools on linux. These can be overridden >++ # using CC,CXX,CC.host and CXX.host environment variables. >++ 'make_global_settings': [ >++ ['CC', '<!(which arm-linux-gnueabihf-gcc)'], >++ ['CXX', '<!(which arm-linux-gnueabihf-g++)'], >++ ['CC.host', '<(host_cc)'], >++ ['CXX.host', '<(host_cxx)'], >++ ], >++ }], >++ ['use_goma==1', { >++ 'make_global_settings': [ >++ ['CC_wrapper', '<(gomadir)/gomacc'], >++ ['CXX_wrapper', '<(gomadir)/gomacc'], >++ ['CC.host_wrapper', '<(gomadir)/gomacc'], >++ ['CXX.host_wrapper', '<(gomadir)/gomacc'], >++ ], >++ }], >++ ['use_lto==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-flto', >++ ], >++ 'xcode_settings': { >++ 'LLVM_LTO': 'YES', >++ }, >++ }], >++ # Work-around for http://openradar.appspot.com/20356002 >++ ['_toolset=="target" and _type!="static_library"', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-Wl,-all_load', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }], >++ ['use_lto==1 and clang==0', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-ffat-lto-objects', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ['use_lto==1 and clang==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'arflags': [ >++ '--plugin', '../../<(make_clang_dir)/lib/LLVMgold.so', >++ ], >++ 'cflags': [ >++ '-fwhole-program-vtables', >++ ], >++ 'ldflags': [ >++ '-fwhole-program-vtables', >++ ], >++ }], >++ ], >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # TODO(pcc): Add LTO support to clang-cl driver and use it here. >++ '-Xclang', >++ '-emit-llvm-bc', >++ ], >++ }, >++ }, >++ }, >++ }], >++ # Apply a lower LTO optimization level as the default is too slow. >++ ['use_lto==1 and clang==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags': [ >++ '-Wl,--plugin-opt,O1', >++ # Allows the linker to apply ICF to the LTO object file. Also, when >++ # targeting ARM, wWithout this flag, LTO produces a .text section >++ # that is larger than the maximum call displacement, preventing the >++ # linker from relocating calls (http://llvm.org/PR22999). >++ '-Wl,--plugin-opt,-function-sections', >++ ], >++ }], >++ ['_toolset=="target" and _type!="static_library"', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-Wl,-mllvm,-O1', >++ ], >++ }, >++ }], >++ ], >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'AdditionalOptions': [ >++ '/opt:lldlto=1', >++ ], >++ }, >++ }, >++ }, >++ }], >++ ['(use_lto==1 or use_lto_o2==1) and clang==0', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags': [ >++ '-flto=32', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ['(use_lto==1 or use_lto_o2==1) and clang==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'ldflags': [ >++ '-flto', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ['cfi_diag==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fno-sanitize-trap=cfi', >++ '-fsanitize-recover=cfi', >++ ], >++ 'cflags_cc!': [ >++ '-fno-rtti', >++ ], >++ 'cflags!': [ >++ '-fno-rtti', >++ ], >++ 'ldflags': [ >++ '-fno-sanitize-trap=cfi', >++ '-fsanitize-recover=cfi', >++ ], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fno-sanitize-trap=cfi', >++ '-fsanitize-recover=cfi', >++ ], >++ }, >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ '-fno-sanitize-trap=cfi', >++ '-fsanitize-recover=cfi', >++ ], >++ }, >++ }, >++ }], >++ ['_toolset=="target" and _type!="static_library"', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-fno-sanitize-trap=cfi', >++ '-fsanitize-recover=cfi', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }], >++ ['cfi_vptr==1 and cfi_diag==0', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'defines': [ >++ 'CFI_ENFORCEMENT', >++ ], >++ }], >++ ], >++ }, >++ }], >++ ['cfi_vptr==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=cfi-vcall', >++ '-fsanitize-blacklist=<(cfi_blacklist)', >++ ], >++ 'ldflags': [ >++ '-fsanitize=cfi-vcall', >++ '-fsanitize=cfi-derived-cast', >++ '-fsanitize=cfi-unrelated-cast', >++ ], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fsanitize=cfi-vcall', >++ '-fsanitize-blacklist=<(cfi_blacklist)', >++ ], >++ }, >++ }], >++ ['_toolset=="target" and _type!="static_library"', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-fsanitize=cfi-vcall', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }], >++ ['cfi_vptr==1 and cfi_cast==1', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'cflags': [ >++ '-fsanitize=cfi-derived-cast', >++ '-fsanitize=cfi-unrelated-cast', >++ ], >++ 'ldflags': [ >++ '-fsanitize=cfi-derived-cast', >++ '-fsanitize=cfi-unrelated-cast', >++ ], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fsanitize=cfi-derived-cast', >++ '-fsanitize=cfi-unrelated-cast', >++ ], >++ }, >++ }], >++ ['_toolset=="target" and _type!="static_library"', { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-fsanitize=cfi-derived-cast', >++ '-fsanitize=cfi-unrelated-cast', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }], >++ ['cfi_vptr==1 and OS=="win"', { >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_toolset=="target"', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # TODO(pcc): Use regular -fsanitize=* flags here once clang-cl >++ # supports LTO. >++ '-Xclang', >++ '-fsanitize=cfi-vcall', >++ '-Xclang', >++ '-fsanitize=cfi-derived-cast', >++ '-Xclang', >++ '-fsanitize=cfi-unrelated-cast', >++ '-Xclang', >++ '-fsanitize-trap=cfi-vcall', >++ '-Xclang', >++ '-fsanitize-trap=cfi-derived-cast', >++ '-Xclang', >++ '-fsanitize-trap=cfi-unrelated-cast', >++ '-Xclang', >++ '-fsanitize-blacklist=<(cfi_blacklist)', >++ '-Xclang', >++ '-fsanitize-blacklist=../../<(make_clang_dir)/lib/clang/<!(python <(DEPTH)/tools/clang/scripts/update.py --print-clang-version)/cfi_blacklist.txt', >++ ], >++ }, >++ }, >++ }], >++ ], >++ }, >++ }], >++ ], >++ 'xcode_settings': { >++ # DON'T ADD ANYTHING NEW TO THIS BLOCK UNLESS YOU REALLY REALLY NEED IT! >++ # This block adds *project-wide* configuration settings to each project >++ # file. It's almost always wrong to put things here. Specify your >++ # custom xcode_settings in target_defaults to add them to targets instead. >++ 'conditions': [ >++ # In an Xcode Project Info window, the "Base SDK for All Configurations" >++ # setting sets the SDK on a project-wide basis. In order to get the >++ # configured SDK to show properly in the Xcode UI, SDKROOT must be set >++ # here at the project level. >++ ['OS=="mac"', { >++ 'ARCHS': [ 'x86_64' ], >++ 'conditions': [ >++ ['mac_sdk_path==""', { >++ 'SDKROOT': 'macosx<(mac_sdk)', # -isysroot >++ }, { >++ 'SDKROOT': '<(mac_sdk_path)', # -isysroot >++ }], >++ ], >++ }], >++ ['OS=="ios"', { >++ # Target both iPhone and iPad. >++ 'TARGETED_DEVICE_FAMILY': '1,2', >++ 'conditions': [ >++ ['ios_sdk_path==""', { >++ 'SDKROOT': 'iphoneos<(ios_sdk)', # -isysroot >++ }, { >++ 'SDKROOT': '<(ios_sdk_path)', # -isysroot >++ }], >++ ], >++ }], >++ ], >++ # The Xcode generator will look for an xcode_settings section at the root >++ # of each dict and use it to apply settings on a file-wide basis. Most >++ # settings should not be here, they should be in target-specific >++ # xcode_settings sections, or better yet, should use non-Xcode-specific >++ # settings in target dicts. SYMROOT is a special case, because many other >++ # Xcode variables depend on it, including variables such as >++ # PROJECT_DERIVED_FILE_DIR. When a source group corresponding to something >++ # like PROJECT_DERIVED_FILE_DIR is added to a project, in order for the >++ # files to appear (when present) in the UI as actual files and not red >++ # red "missing file" proxies, the correct path to PROJECT_DERIVED_FILE_DIR, >++ # and therefore SYMROOT, needs to be set at the project level. >++ 'SYMROOT': '<(DEPTH)/xcodebuild', >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/build/common.gypi media/webrtc/trunk/webrtc/build/common.gypi >+new file mode 100644 >+index 000000000000..eb72ba57cce7 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/common.gypi >+@@ -0,0 +1,665 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This file contains common settings for building WebRTC components. >++ >++{ >++ # Nesting is required in order to use variables for setting other variables. >++ 'variables': { >++ 'variables': { >++ 'variables': { >++ 'variables': { >++ # This will already be set to zero by supplement.gypi >++ 'build_with_chromium%': 1, >++ >++ # Enable to use the Mozilla internal settings. >++ 'build_with_mozilla%': 0, >++ }, >++ 'build_with_chromium%': '<(build_with_chromium)', >++ 'build_with_mozilla%': '<(build_with_mozilla%)', >++ 'include_opus%': 1, >++ 'rtc_opus_variable_complexity%': 0, >++ >++ 'conditions': [ >++ # Include the iLBC audio codec? >++ ['build_with_chromium==1 or build_with_mozilla==1', { >++ 'include_ilbc%': 0, >++ }, { >++ 'include_ilbc%': 1, >++ }], >++ >++ ['build_with_chromium==1', { >++ 'webrtc_root%': '<(DEPTH)/third_party/webrtc', >++ }, { >++ 'webrtc_root%': '<(DEPTH)/webrtc', >++ }], >++ >++ # Controls whether we use libevent on posix platforms. >++ # TODO(phoglund): should arguably be controlled by platform #ifdefs >++ # in the code instead. >++ ['OS=="win" or OS=="mac" or OS=="ios"', { >++ 'build_libevent%': 0, >++ 'enable_libevent%': 0, >++ }, { >++ 'build_libevent%': 1, >++ 'enable_libevent%': 1, >++ 'libevent_dir%': '<(DEPTH)/third_party/libevent', >++ }], >++ ], >++ }, >++ 'build_with_chromium%': '<(build_with_chromium)', >++ 'build_with_mozilla%': '<(build_with_mozilla)', >++ 'build_libevent%': '<(build_libevent)', >++ 'enable_libevent%': '<(enable_libevent)', >++ 'webrtc_root%': '<(webrtc_root)', >++ 'webrtc_vp8_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp8', >++ 'webrtc_vp9_dir%': '<(webrtc_root)/modules/video_coding/codecs/vp9', >++ 'webrtc_h264_dir%': '<(webrtc_root)/modules/video_coding/codecs/h264', >++ 'libevent_dir%': '<(DEPTH)/third_party/libevent', >++ 'include_g711%': 1, >++ 'include_g722%': 1, >++ 'include_ilbc%': '<(include_ilbc)', >++ 'include_opus%': '<(include_opus)', >++ 'include_isac%': 1, >++ 'include_pcm16b%': 1, >++ 'opus_dir%': '<(DEPTH)/third_party/opus', >++ }, >++ 'build_with_chromium%': '<(build_with_chromium)', >++ 'build_with_mozilla%': '<(build_with_mozilla)', >++ 'build_libevent%': '<(build_libevent)', >++ 'enable_libevent%': '<(enable_libevent)', >++ 'webrtc_root%': '<(webrtc_root)', >++ 'test_runner_path': '<(DEPTH)/webrtc/build/android/test_runner.py', >++ 'webrtc_vp8_dir%': '<(webrtc_vp8_dir)', >++ 'webrtc_vp9_dir%': '<(webrtc_vp9_dir)', >++ 'webrtc_h264_dir%': '<(webrtc_h264_dir)', >++ 'libevent_dir%': '<(libevent_dir)', >++ >++ 'include_g711%': '<(include_g711)', >++ 'include_g722%': '<(include_g722)', >++ 'include_ilbc%': '<(include_ilbc)', >++ 'include_opus%': '<(include_opus)', >++ 'include_isac%': '<(include_isac)', >++ 'include_pcm16b%': '<(include_pcm16b)', >++ >++ 'rtc_relative_path%': 1, >++ 'external_libraries%': '0', >++ 'json_root%': '<(DEPTH)/third_party/jsoncpp/source/include/', >++ # openssl needs to be defined or gyp will complain. Is is only used when >++ # when providing external libraries so just use current directory as a >++ # placeholder. >++ 'ssl_root%': '.', >++ >++ # The Chromium common.gypi we use treats all gyp files without >++ # chromium_code==1 as third party code. This disables many of the >++ # preferred warning settings. >++ # >++ # We can set this here to have WebRTC code treated as Chromium code. Our >++ # third party code will still have the reduced warning settings. >++ 'chromium_code': 1, >++ >++ # Targets are by default not NaCl untrusted code. Use this variable exclude >++ # code that uses libraries that aren't available in the NaCl sandbox. >++ 'nacl_untrusted_build%': 0, >++ >++ # Set to 1 to enable code coverage on Linux using the gcov library. >++ 'coverage%': 0, >++ >++ # Set to "func", "block", "edge" for coverage generation. >++ # At unit test runtime set UBSAN_OPTIONS="coverage=1". >++ # It is recommend to set include_examples=0. >++ # Use llvm's sancov -html-report for human readable reports. >++ # See http://clang.llvm.org/docs/SanitizerCoverage.html . >++ 'webrtc_sanitize_coverage%': "", >++ >++ # Remote bitrate estimator logging/plotting. >++ 'enable_bwe_test_logging%': 0, >++ >++ # Selects fixed-point code where possible. >++ 'prefer_fixed_point%': 0, >++ >++ # Enable data logging. Produces text files with data logged within engines >++ # which can be easily parsed for offline processing. >++ 'enable_data_logging%': 0, >++ >++ # Enables the use of protocol buffers for debug recordings. >++ 'enable_protobuf%': 1, >++ >++ # Disable the code for the intelligibility enhancer by default. >++ 'enable_intelligibility_enhancer%': 0, >++ >++ # Selects whether debug dumps for the audio processing module >++ # should be generated. >++ 'apm_debug_dump%': 0, >++ >++ # Disable these to not build components which can be externally provided. >++ 'build_expat%': 1, >++ 'build_json%': 1, >++ 'build_libsrtp%': 1, >++ 'build_libvpx%': 1, >++ 'libvpx_build_vp9%': 1, >++ 'build_libyuv%': 1, >++ 'build_openmax_dl%': 1, >++ 'build_opus%': 1, >++ 'build_protobuf%': 1, >++ 'build_ssl%': 1, >++ 'build_usrsctp%': 1, >++ >++ # Disable by default >++ 'have_dbus_glib%': 0, >++ >++ # Make it possible to provide custom locations for some libraries. >++ 'libvpx_dir%': '<(DEPTH)/third_party/libvpx', >++ 'libyuv_dir%': '<(DEPTH)/third_party/libyuv', >++ 'libevent_dir%': '<(DEPTH)/third_party/libevent', >++ 'opus_dir%': '<(opus_dir)', >++ >++ # Use Java based audio layer as default for Android. >++ # Change this setting to 1 to use Open SL audio instead. >++ # TODO(henrika): add support for Open SL ES. >++ 'enable_android_opensl%': 0, >++ >++ # Link-Time Optimizations >++ # Executes code generation at link-time instead of compile-time >++ # https://gcc.gnu.org/wiki/LinkTimeOptimization >++ 'use_lto%': 0, >++ >++ # Defer ssl perference to that specified through sslconfig.h instead of >++ # choosing openssl or nss directly. In practice, this can be used to >++ # enable schannel on windows. >++ 'use_legacy_ssl_defaults%': 0, >++ >++ # Determines whether NEON code will be built. >++ 'build_with_neon%': 0, >++ >++ # Disable this to skip building source requiring GTK. >++ 'use_gtk%': 1, >++ >++ # Enable this to prevent extern symbols from being hidden on iOS builds. >++ # The chromium settings we inherit hide symbols by default on Release >++ # builds. We want our symbols to be visible when distributing WebRTC via >++ # static libraries to avoid linker warnings. >++ 'ios_override_visibility%': 0, >++ >++ # Determines whether QUIC code will be built. >++ 'use_quic%': 0, >++ >++ # By default, use normal platform audio support or dummy audio, but don't >++ # use file-based audio playout and record. >++ 'use_dummy_audio_file_devices%': 0, >++ >++ 'conditions': [ >++ # Enable this to build OpenH264 encoder/FFmpeg decoder. This is supported >++ # on all platforms except Android and iOS. Because FFmpeg can be built >++ # with/without H.264 support, |ffmpeg_branding| has to separately be set >++ # to a value that includes H.264, for example "Chrome". If FFmpeg is built >++ # without H.264, compilation succeeds but |H264DecoderImpl| fails to >++ # initialize. See also: |rtc_initialize_ffmpeg|. >++ # CHECK THE OPENH264, FFMPEG AND H.264 LICENSES/PATENTS BEFORE BUILDING. >++ # http://www.openh264.org, https://www.ffmpeg.org/ >++ # TODO: proprietary_codecs is undefined here? >++ #['proprietary_codecs==1 and OS!="android" and OS!="ios"', { >++ # 'rtc_use_h264%': 1, >++ #}, { >++ # 'rtc_use_h264%': 0, >++ #}], >++ >++ # FFmpeg must be initialized for |H264DecoderImpl| to work. This can be >++ # done by WebRTC during |H264DecoderImpl::InitDecode| or externally. >++ # FFmpeg must only be initialized once. Projects that initialize FFmpeg >++ # externally, such as Chromium, must turn this flag off so that WebRTC >++ # does not also initialize. >++ ['build_with_chromium==0', { >++ 'rtc_initialize_ffmpeg%': 1, >++ }, { >++ 'rtc_initialize_ffmpeg%': 0, >++ }], >++ >++ ['build_with_chromium==1', { >++ # Build sources requiring GTK. NOTICE: This is not present in Chrome OS >++ # build environments, even if available for Chromium builds. >++ 'use_gtk%': 0, >++ # Exclude pulse audio on Chromium since its prerequisites don't require >++ # pulse audio. >++ 'include_pulse_audio%': 0, >++ >++ # Exclude internal ADM since Chromium uses its own IO handling. >++ 'include_internal_audio_device%': 0, >++ >++ 'include_ndk_cpu_features%': 0, >++ >++ # Remove tests for Chromium to avoid slowing down GYP generation. >++ 'include_tests%': 0, >++ 'restrict_webrtc_logging%': 1, >++ }, { # Settings for the standalone (not-in-Chromium) build. >++ 'use_gtk%': 1, >++ # TODO(andrew): For now, disable the Chrome plugins, which causes a >++ # flood of chromium-style warnings. Investigate enabling them: >++ # http://code.google.com/p/webrtc/issues/detail?id=163 >++ 'clang_use_chrome_plugins%': 0, >++ >++ 'include_pulse_audio%': 1, >++ 'include_internal_audio_device%': 1, >++ 'include_ndk_cpu_features%': 0, >++ 'conditions': [ >++ ['build_with_mozilla==1', { >++ 'include_tests%': 0, >++ 'conditions': [ >++ # silly gyp won't let me do 'a': !'b' >++ # suppress TRACE logging in non-debug builds >++ ['debug==1', { >++ 'restrict_webrtc_logging%': 0, >++ }, { >++ 'restrict_webrtc_logging%': 1, >++ }], >++ ], >++ }, { >++ 'include_tests%': 1, >++ 'restrict_webrtc_logging%': 0, >++ }], >++ ], >++ }], >++ ['OS=="linux"', { >++ 'include_alsa_audio%': 1, >++ }, { >++ 'include_alsa_audio%': 0, >++ }], >++ ['OS=="openbsd"', { >++ 'include_sndio_audio%': 1, >++ }, { >++ 'include_sndio_audio%': 0, >++ }], >++ ['OS=="solaris" or (OS!="openbsd" and os_bsd==1)', { >++ 'include_pulse_audio%': 1, >++ }, { >++ 'include_pulse_audio%': 0, >++ }], >++ ['OS=="linux" or OS=="solaris" or os_bsd==1', { >++ 'include_v4l2_video_capture%': 1, >++ }, { >++ 'include_v4l2_video_capture%': 0, >++ }], >++ ['target_arch=="arm" or target_arch=="arm64" or target_arch=="mipsel"', { >++ 'prefer_fixed_point%': 1, >++ }], >++ ['(target_arch=="arm" and arm_neon==1) or target_arch=="arm64"', { >++ 'build_with_neon%': 1, >++ }], >++ ['OS!="ios" and (target_arch!="arm" or arm_version>=7) and target_arch!="mips64el" and build_with_mozilla==0', { >++ 'rtc_use_openmax_dl%': 1, >++ }, { >++ 'rtc_use_openmax_dl%': 0, >++ }], >++ ], # conditions >++ }, >++ 'target_defaults': { >++ 'conditions': [ >++ ['restrict_webrtc_logging==1', { >++ 'defines': ['WEBRTC_RESTRICT_LOGGING',], >++ }], >++ ['build_with_mozilla==1', { >++ 'defines': [ >++ # Changes settings for Mozilla build. >++ 'WEBRTC_MOZILLA_BUILD', >++ 'WEBRTC_VOE_EXTERNAL_REC_AND_PLAYOUT', >++ ], >++ }], >++ ['have_dbus_glib==1', { >++ 'defines': [ >++ 'HAVE_DBUS_GLIB', >++ ], >++ 'cflags': [ >++ '<!@(pkg-config --cflags dbus-glib-1)', >++ ], >++ }], >++ ['rtc_relative_path==1', { >++ 'defines': ['EXPAT_RELATIVE_PATH',], >++ }], >++ ['os_posix==1', { >++ 'configurations': { >++ 'Debug_Base': { >++ 'defines': [ >++ # Chromium's build/common.gypi defines _DEBUG for all posix >++ # _except_ for ios & mac. The size of data types such as >++ # pthread_mutex_t varies between release and debug builds >++ # and is controlled via this flag. Since we now share code >++ # between base/base.gyp and build/common.gypi (this file), >++ # both gyp(i) files, must consistently set this flag uniformly >++ # or else we'll run in to hard-to-figure-out problems where >++ # one compilation unit uses code from another but expects >++ # differently laid out types. >++ # For WebRTC, we want it there as well, because ASSERT and >++ # friends trigger off of it. >++ '_DEBUG', >++ ], >++ }, >++ }, >++ }], >++ ['build_with_chromium==1', { >++ 'defines': [ >++ # Changes settings for Chromium build. >++ # TODO(kjellander): Cleanup unused ones and move defines closer to the >++ # source when webrtc:4256 is completed. >++ 'ENABLE_EXTERNAL_AUTH', >++ 'FEATURE_ENABLE_SSL', >++ 'HAVE_OPENSSL_SSL_H', >++ 'HAVE_SCTP', >++ 'HAVE_SRTP', >++ 'HAVE_WEBRTC_VIDEO', >++ 'HAVE_WEBRTC_VOICE', >++ 'LOGGING_INSIDE_WEBRTC', >++ 'NO_MAIN_THREAD_WRAPPING', >++ 'NO_SOUND_SYSTEM', >++ 'SRTP_RELATIVE_PATH', >++ 'SSL_USE_OPENSSL', >++ 'USE_WEBRTC_DEV_BRANCH', >++ 'WEBRTC_CHROMIUM_BUILD', >++ ], >++ 'include_dirs': [ >++ # Include the top-level directory when building in Chrome, so we can >++ # use full paths (e.g. headers inside testing/ or third_party/). >++ '<(DEPTH)', >++ # The overrides must be included before the WebRTC root as that's the >++ # mechanism for selecting the override headers in Chromium. >++ '../../webrtc_overrides', >++ # The WebRTC root is needed to allow includes in the WebRTC code base >++ # to be prefixed with webrtc/. >++ '../..', >++ ], >++ }, { >++ 'includes': [ >++ # Rules for excluding e.g. foo_win.cc from the build on non-Windows. >++ 'filename_rules.gypi', >++ ], >++ # Include the top-level dir so the WebRTC code can use full paths. >++ 'include_dirs': [ >++ '../..', >++ ], >++ 'conditions': [ >++ ['os_posix==1', { >++ 'conditions': [ >++ # -Wextra is currently disabled in Chromium's common.gypi. Enable >++ # for targets that can handle it. For Android/arm64 right now >++ # there will be an 'enumeral and non-enumeral type in conditional >++ # expression' warning in android_tools/ndk_experimental's version >++ # of stlport. >++ # See: https://code.google.com/p/chromium/issues/detail?id=379699 >++ ['target_arch!="arm64" or OS!="android"', { >++ 'cflags': [ >++ '-Wextra', >++ # We need to repeat some flags from Chromium's common.gypi >++ # here that get overridden by -Wextra. >++ '-Wno-unused-parameter', >++ '-Wno-missing-field-initializers', >++ '-Wno-strict-overflow', >++ ], >++ }], >++ ], >++ 'cflags_cc': [ >++ '-Wnon-virtual-dtor', >++ # This is enabled for clang; enable for gcc as well. >++ '-Woverloaded-virtual', >++ ], >++ }], >++ ['clang==1', { >++ 'cflags': [ >++ '-Wimplicit-fallthrough', >++ '-Wthread-safety', >++ '-Winconsistent-missing-override', >++ ], >++ 'cflags_mozilla': [ >++ '-Wthread-safety', >++ ], >++ }], >++ ], >++ }], >++ ['target_arch=="arm64"', { >++ 'defines': [ >++ 'WEBRTC_ARCH_ARM64', >++ 'WEBRTC_HAS_NEON', >++ ], >++ }], >++ ['target_arch=="arm"', { >++ 'build_with_neon%': 1, >++ 'defines': [ >++ 'WEBRTC_ARCH_ARM', >++ ], >++ 'conditions': [ >++ ['arm_version>=7', { >++ 'defines': ['WEBRTC_ARCH_ARM_V7', >++ 'WEBRTC_BUILD_NEON_LIBS', >++ 'WEBRTC_HAS_NEON'], >++ 'cflags_mozilla': ['-mfloat-abi=softfp', >++ '-mfpu=neon'], >++ }], >++ ], >++ }], >++ ['os_bsd==1', { >++ 'defines': [ >++ 'WEBRTC_BSD', >++ ], >++ }], >++ ['OS=="openbsd"', { >++ 'defines' : [ >++ 'WEBRTC_AUDIO_SNDIO', >++ ], >++ }], >++ # Mozilla: if we support Mozilla on MIPS, we'll need to mod the cflags entries here >++ ['target_arch=="mipsel" and mips_arch_variant!="r6"', { >++ 'defines': [ >++ 'MIPS32_LE', >++ ], >++ 'conditions': [ >++ ['mips_float_abi=="hard"', { >++ 'defines': [ >++ 'MIPS_FPU_LE', >++ ], >++ }], >++ ['mips_arch_variant=="r2"', { >++ 'defines': [ >++ 'MIPS32_R2_LE', >++ ], >++ }], >++ ['mips_dsp_rev==1', { >++ 'defines': [ >++ 'MIPS_DSP_R1_LE', >++ ], >++ }], >++ ['mips_dsp_rev==2', { >++ 'defines': [ >++ 'MIPS_DSP_R1_LE', >++ 'MIPS_DSP_R2_LE', >++ ], >++ }], >++ ], >++ }], >++ ['coverage==1 and OS=="linux"', { >++ 'cflags': [ '-ftest-coverage', >++ '-fprofile-arcs' ], >++ 'ldflags': [ '--coverage' ], >++ 'link_settings': { 'libraries': [ '-lgcov' ] }, >++ }], >++ ['webrtc_sanitize_coverage!=""', { >++ 'cflags': [ '-fsanitize-coverage=<(webrtc_sanitize_coverage)' ], >++ 'ldflags': [ '-fsanitize-coverage=<(webrtc_sanitize_coverage)' ], >++ }], >++ ['webrtc_sanitize_coverage!="" and OS=="mac"', { >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ >++ '-fsanitize-coverage=func', >++ ], >++ }, >++ }], >++ ['os_posix==1', { >++ # For access to standard POSIXish features, use WEBRTC_POSIX instead of >++ # a more specific macro. >++ 'defines': [ >++ 'WEBRTC_POSIX', >++ ], >++ }], >++ ['OS=="ios"', { >++ 'defines': [ >++ 'WEBRTC_MAC', >++ 'WEBRTC_IOS', >++ ], >++ }], >++ ['OS=="ios" and ios_override_visibility==1', { >++ 'xcode_settings': { >++ 'GCC_INLINES_ARE_PRIVATE_EXTERN': 'NO', >++ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'NO', >++ } >++ }], >++ ['OS=="linux"', { >++ 'defines': [ >++ 'WEBRTC_LINUX', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'defines': [ >++ 'WEBRTC_MAC', >++ ], >++ }], >++ ['OS=="win"', { >++ 'defines': [ >++ 'WEBRTC_WIN', >++ ], >++ # TODO(andrew): enable all warnings when possible. >++ # TODO(phoglund): get rid of 4373 supression when >++ # http://code.google.com/p/webrtc/issues/detail?id=261 is solved. >++ 'msvs_disabled_warnings': [ >++ 4373, # legacy warning for ignoring const / volatile in signatures. >++ 4389, # Signed/unsigned mismatch. >++ ], >++ # Re-enable some warnings that Chromium disables. >++ 'msvs_disabled_warnings!': [4189,], >++ }], >++ ['enable_android_opensl==1 and OS=="android"', { >++ 'defines': [ >++ 'WEBRTC_ANDROID_OPENSLES', >++ ], >++ }], >++ ['OS=="android"', { >++ 'defines': [ >++ 'WEBRTC_LINUX', >++ 'WEBRTC_ANDROID', >++ ], >++ 'conditions': [ >++ ['clang==0', { >++ # The Android NDK doesn't provide optimized versions of these >++ # functions. Ensure they are disabled for all compilers. >++ 'cflags': [ >++ '-fno-builtin-cos', >++ '-fno-builtin-sin', >++ '-fno-builtin-cosf', >++ '-fno-builtin-sinf', >++ ], >++ }], >++ ], >++ }], >++ ['chromeos==1', { >++ 'defines': [ >++ 'CHROMEOS', >++ ], >++ }], >++ ['os_bsd==1', { >++ 'defines': [ >++ 'WEBRTC_BSD', >++ ], >++ }], >++ ['include_internal_audio_device==1', { >++ 'defines': [ >++ 'WEBRTC_INCLUDE_INTERNAL_AUDIO_DEVICE', >++ ], >++ }], >++ ['libvpx_build_vp9==0', { >++ 'defines': [ >++ 'RTC_DISABLE_VP9', >++ ], >++ }], >++ ], # conditions >++ 'direct_dependent_settings': { >++ 'conditions': [ >++ ['build_with_mozilla==1', { >++ 'defines': [ >++ # Changes settings for Mozilla build. >++ 'WEBRTC_MOZILLA_BUILD', >++ ], >++ }], >++ ['build_with_chromium==1', { >++ 'defines': [ >++ # Changes settings for Chromium build. >++ # TODO(kjellander): Cleanup unused ones and move defines closer to >++ # the source when webrtc:4256 is completed. >++ 'FEATURE_ENABLE_SSL', >++ 'FEATURE_ENABLE_VOICEMAIL', >++ 'EXPAT_RELATIVE_PATH', >++ 'GTEST_RELATIVE_PATH', >++ 'NO_MAIN_THREAD_WRAPPING', >++ 'NO_SOUND_SYSTEM', >++ 'WEBRTC_CHROMIUM_BUILD', >++ ], >++ 'include_dirs': [ >++ # The overrides must be included first as that is the mechanism for >++ # selecting the override headers in Chromium. >++ '../../webrtc_overrides', >++ '../..', >++ ], >++ }, { >++ 'include_dirs': [ >++ '../..', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'defines': [ >++ 'WEBRTC_MAC', >++ ], >++ }], >++ ['OS=="ios"', { >++ 'defines': [ >++ 'WEBRTC_MAC', >++ 'WEBRTC_IOS', >++ ], >++ }], >++ ['OS=="win"', { >++ 'defines': [ >++ 'WEBRTC_WIN', >++ '_CRT_SECURE_NO_WARNINGS', # Suppress warnings about _vsnprinf >++ ], >++ }], >++ ['OS=="linux"', { >++ 'defines': [ >++ 'WEBRTC_LINUX', >++ ], >++ }], >++ ['OS=="android"', { >++ 'defines': [ >++ 'WEBRTC_LINUX', >++ 'WEBRTC_ANDROID', >++ ], >++ }], >++ ['os_posix==1', { >++ # For access to standard POSIXish features, use WEBRTC_POSIX instead >++ # of a more specific macro. >++ 'defines': [ >++ 'WEBRTC_POSIX', >++ ], >++ }], >++ ['chromeos==1', { >++ 'defines': [ >++ 'CHROMEOS', >++ ], >++ }], >++ ['os_bsd==1', { >++ 'defines': [ >++ 'WEBRTC_BSD', >++ ], >++ }], >++ ], >++ }, >++ }, # target_defaults >++} >+diff --git media/webrtc/trunk/webrtc/build/filename_rules.gypi media/webrtc/trunk/webrtc/build/filename_rules.gypi >+new file mode 100644 >+index 000000000000..93c9028a4d61 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/filename_rules.gypi >+@@ -0,0 +1,107 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This is a copy of the deleted build/filename_includes.gypi that >++# has now been dropped from Chromium. >++{ >++ 'target_conditions': [ >++ ['OS!="win" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_win(_browsertest|_unittest|_test)?\\.(h|cc)$'], >++ ['exclude', '(^|/)win/'], >++ ['exclude', '(^|/)win_[^/]*\\.(h|cc)$'] ], >++ }], >++ ['OS!="mac" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_(cocoa|mac|mach)(_unittest|_test)?\\.(h|cc|c|mm?)$'], >++ ['exclude', '(^|/)(cocoa|mac|mach)/'] ], >++ }], >++ ['OS!="ios" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_ios(_unittest|_test)?\\.(h|cc|mm?)$'], >++ ['exclude', '(^|/)ios/'] ], >++ }], >++ ['(OS!="mac" and OS!="ios") or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '\\.mm?$' ] ], >++ }], >++ # Do not exclude the linux files on *BSD since most of them can be >++ # shared at this point. >++ # In case a file is not needed, it is going to be excluded later on. >++ # TODO(evan): the above is not correct; we shouldn't build _linux >++ # files on non-linux. >++ ['OS!="linux" and OS!="solaris" and <(os_bsd)!=1 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ >++ ['exclude', '_linux(_unittest|_test)?\\.(h|cc)$'], >++ ['exclude', '(^|/)linux/'], >++ ], >++ }], >++ ['OS!="android" or _toolset=="host" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ >++ ['exclude', '_android(_unittest|_test)?\\.(h|cc)$'], >++ ['exclude', '(^|/)android/'], >++ ], >++ }], >++ ['OS=="win" and >(nacl_untrusted_build)==0', { >++ 'sources/': [ >++ ['exclude', '_posix(_unittest|_test)?\\.(h|cc)$'], >++ ['exclude', '(^|/)posix/'], >++ ], >++ }], >++ ['<(chromeos)!=1 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ >++ ['exclude', '_chromeos(_unittest|_test)?\\.(h|cc)$'], >++ ['exclude', '(^|/)chromeos/'], >++ ], >++ }], >++ ['>(nacl_untrusted_build)==0', { >++ 'sources/': [ >++ ['exclude', '_nacl(_unittest)?\\.(h|cc)$'], >++ ], >++ }], >++ ['OS!="linux" and OS!="solaris" and <(os_bsd)!=1 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ >++ ['exclude', '_xdg(_unittest)?\\.(h|cc)$'], >++ ], >++ }], >++ ['<(use_x11)!=1 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ >++ ['exclude', '_(x|x11)(_interactive_uitest|_unittest)?\\.(h|cc)$'], >++ ['exclude', '(^|/)x11_[^/]*\\.(h|cc)$'], >++ ['exclude', '(^|/)x11/'], >++ ['exclude', '(^|/)x/'], >++ ], >++ }], >++ ['<(toolkit_views)==0 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_views(_browsertest|_unittest)?\\.(h|cc)$'] ] >++ }], >++ ['<(use_aura)==0 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_aura(_browsertest|_unittest)?\\.(h|cc)$'], >++ ['exclude', '(^|/)aura/'], >++ ['exclude', '_ash(_browsertest|_unittest)?\\.(h|cc)$'], >++ ['exclude', '(^|/)ash/'], >++ ] >++ }], >++ ['<(use_aura)==0 or <(use_x11)==0 or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_aurax11(_browsertest|_unittest)?\\.(h|cc)$'] ] >++ }], >++ ['<(use_aura)==0 or OS!="win" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_aurawin\\.(h|cc)$'], >++ ['exclude', '_ashwin\\.(h|cc)$'] >++ ] >++ }], >++ ['<(use_aura)==0 or OS!="linux" or >(nacl_untrusted_build)==1', { >++ 'sources/': [ ['exclude', '_auralinux\\.(h|cc)$'] ] >++ }], >++ #TODO: use_ozone is undefined here >++ #['<(use_ozone)==0 or >(nacl_untrusted_build)==1', { >++ # 'sources/': [ ['exclude', '_ozone(_browsertest|_unittest)?\\.(h|cc)$'] ] >++ #}], >++ #TODO: use_pango is undefined here >++ #['<(use_pango)==0', { >++ # 'sources/': [ ['exclude', '(^|_)pango(_util|_browsertest|_unittest)?\\.(h|cc)$'], ], >++ #}], >++ ] >++} >++ >+diff --git media/webrtc/trunk/webrtc/build/ios/merge_ios_libs.gyp media/webrtc/trunk/webrtc/build/ios/merge_ios_libs.gyp >+new file mode 100644 >+index 000000000000..d28b6221db44 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/ios/merge_ios_libs.gyp >+@@ -0,0 +1,26 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': ['../common.gypi',], >++ 'conditions': [ >++ ['OS=="ios" or OS=="mac"', { >++ 'targets': [ >++ { >++ 'target_name': 'rtc_sdk_peerconnection_objc_no_op', >++ 'includes': [ 'objc_app.gypi' ], >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_peerconnection_objc', >++ ], >++ 'sources': ['no_op.cc',], >++ }, >++ ], >++ }] >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/ios/objc_app.gypi media/webrtc/trunk/webrtc/build/ios/objc_app.gypi >+new file mode 100644 >+index 000000000000..85a10dd91563 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/ios/objc_app.gypi >+@@ -0,0 +1,33 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# Include this .gypi in an ObjC target's definition to allow it to be >++# used as an iOS or OS/X application. >++ >++{ >++ 'variables': { >++ 'infoplist_file': './objc_app.plist', >++ }, >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ], >++ 'mac_bundle': 1, >++ 'mac_bundle_resources': [ >++ '<(infoplist_file)', >++ ], >++ # The plist is listed above so that it appears in XCode's file list, >++ # but we don't actually want to bundle it. >++ 'mac_bundle_resources!': [ >++ '<(infoplist_file)', >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ 'INFOPLIST_FILE': '<(infoplist_file)', >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/build/isolate.gypi media/webrtc/trunk/webrtc/build/isolate.gypi >+new file mode 100644 >+index 000000000000..2d4ea7786971 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/isolate.gypi >+@@ -0,0 +1,142 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# Copied from Chromium's src/build/isolate.gypi >++# >++# It was necessary to copy this file because the path to build/common.gypi is >++# different for the standalone and Chromium builds. Gyp doesn't permit >++# conditional inclusion or variable expansion in include paths. >++# http://code.google.com/p/gyp/wiki/InputFormatReference#Including_Other_Files >++# >++# Local modifications: >++# * Removed include of '../chrome/version.gypi'. >++# * Removed passing of version_full variable created in version.gypi: >++# '--extra-variable', 'version_full=<(version_full)', >++ >++# This file is meant to be included into a target to provide a rule >++# to "build" .isolate files into a .isolated file. >++# >++# To use this, create a gyp target with the following form: >++# 'conditions': [ >++# ['test_isolation_mode != "noop"', { >++# 'targets': [ >++# { >++# 'target_name': 'foo_test_run', >++# 'type': 'none', >++# 'dependencies': [ >++# 'foo_test', >++# ], >++# 'includes': [ >++# '../build/isolate.gypi', >++# 'foo_test.isolate', >++# ], >++# 'sources': [ >++# 'foo_test.isolate', >++# ], >++# }, >++# ], >++# }], >++# ], >++# >++# Note: foo_test.isolate is included and a source file. It is an inherent >++# property of the .isolate format. This permits to define GYP variables but is >++# a stricter format than GYP so isolate.py can read it. >++# >++# The generated .isolated file will be: >++# <(PRODUCT_DIR)/foo_test.isolated >++# >++# See http://dev.chromium.org/developers/testing/isolated-testing/for-swes >++# for more information. >++ >++{ >++ 'rules': [ >++ { >++ 'rule_name': 'isolate', >++ 'extension': 'isolate', >++ 'inputs': [ >++ # Files that are known to be involved in this step. >++ '<(DEPTH)/tools/isolate_driver.py', >++ '<(DEPTH)/tools/swarming_client/isolate.py', >++ '<(DEPTH)/tools/swarming_client/run_isolated.py', >++ ], >++ 'outputs': [], >++ 'action': [ >++ 'python', >++ '<(DEPTH)/tools/isolate_driver.py', >++ '<(test_isolation_mode)', >++ '--isolated', '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', >++ '--isolate', '<(RULE_INPUT_PATH)', >++ >++ # Variables should use the -V FOO=<(FOO) form so frequent values, >++ # like '0' or '1', aren't stripped out by GYP. Run 'isolate.py help' for >++ # more details. >++ >++ # Path variables are used to replace file paths when loading a .isolate >++ # file >++ '--path-variable', 'DEPTH', '<(DEPTH)', >++ '--path-variable', 'PRODUCT_DIR', '<(PRODUCT_DIR) ', >++ >++ # Note: This list must match DefaultConfigVariables() >++ # in build/android/pylib/utils/isolator.py >++ '--config-variable', 'CONFIGURATION_NAME=<(CONFIGURATION_NAME)', >++ '--config-variable', 'OS=<(OS)', >++ '--config-variable', 'asan=<(asan)', >++ '--config-variable', 'branding=<(branding)', >++ '--config-variable', 'chromeos=<(chromeos)', >++ '--config-variable', 'component=<(component)', >++ '--config-variable', 'disable_nacl=<(disable_nacl)', >++ '--config-variable', 'enable_pepper_cdms=<(enable_pepper_cdms)', >++ '--config-variable', 'enable_plugins=<(enable_plugins)', >++ '--config-variable', 'fastbuild=<(fastbuild)', >++ '--config-variable', 'icu_use_data_file_flag=<(icu_use_data_file_flag)', >++ # TODO(kbr): move this to chrome_tests.gypi:gles2_conform_tests_run >++ # once support for user-defined config variables is added. >++ '--config-variable', >++ 'internal_gles2_conform_tests=<(internal_gles2_conform_tests)', >++ '--config-variable', 'kasko=<(kasko)', >++ '--config-variable', 'lsan=<(lsan)', >++ '--config-variable', 'msan=<(msan)', >++ '--config-variable', 'target_arch=<(target_arch)', >++ '--config-variable', 'tsan=<(tsan)', >++ '--config-variable', 'use_custom_libcxx=<(use_custom_libcxx)', >++ '--config-variable', 'use_instrumented_libraries=<(use_instrumented_libraries)', >++ '--config-variable', >++ 'use_prebuilt_instrumented_libraries=<(use_prebuilt_instrumented_libraries)', >++ '--config-variable', 'use_ozone=<(use_ozone)', >++ '--config-variable', 'use_x11=<(use_x11)', >++ '--config-variable', 'v8_use_external_startup_data=<(v8_use_external_startup_data)', >++ ], >++ 'conditions': [ >++ # Note: When gyp merges lists, it appends them to the old value. >++ ['OS=="mac"', { >++ 'action': [ >++ '--extra-variable', 'mac_product_name=<(mac_product_name)', >++ ], >++ }], >++ ["test_isolation_mode == 'prepare'", { >++ 'outputs': [ >++ '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated.gen.json', >++ ], >++ }, { >++ 'outputs': [ >++ '<(PRODUCT_DIR)/<(RULE_INPUT_ROOT).isolated', >++ ], >++ }], >++ ['OS=="win"', { >++ 'action': [ >++ '--config-variable', 'msvs_version=<(MSVS_VERSION)', >++ ], >++ }, { >++ 'action': [ >++ '--config-variable', 'msvs_version=0', >++ ], >++ }], >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/merge_libs.gyp media/webrtc/trunk/webrtc/build/merge_libs.gyp >+new file mode 100644 >+index 000000000000..7e251748a09c >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/merge_libs.gyp >+@@ -0,0 +1,53 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': ['common.gypi',], >++ 'variables': { >++ 'merge_libs_dependencies': [ >++ ], >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'no_op', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<@(merge_libs_dependencies)', >++ '../webrtc.gyp:webrtc', >++ '../p2p/p2p.gyp:rtc_p2p', >++ ], >++ 'sources': ['no_op.cc',], >++ }, >++ { >++ 'target_name': 'merged_lib', >++ 'type': 'none', >++ 'dependencies': [ >++ 'no_op', >++ ], >++ 'actions': [ >++ { >++ 'variables': { >++ 'output_lib_name': 'webrtc_merged', >++ 'output_lib': '<(PRODUCT_DIR)/<(STATIC_LIB_PREFIX)<(output_lib_name)<(STATIC_LIB_SUFFIX)', >++ }, >++ 'action_name': 'merge_libs', >++ 'inputs': ['<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)no_op<(EXECUTABLE_SUFFIX)'], >++ 'outputs': ['<(output_lib)'], >++ 'action': ['python', >++ 'merge_libs.py', >++ '<(PRODUCT_DIR)', >++ '<(output_lib)',], >++ }, >++ ], >++ }, >++ ], >++# }], >++# ], >++# }], >++# ], >++} >+diff --git media/webrtc/trunk/webrtc/build/merge_libs_voice.gyp media/webrtc/trunk/webrtc/build/merge_libs_voice.gyp >+new file mode 100644 >+index 000000000000..10e305900ab2 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/merge_libs_voice.gyp >+@@ -0,0 +1,48 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': ['common.gypi',], >++ 'variables': { >++ 'merge_libs_dependencies': [ >++ ], >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'no_op_voice', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<@(merge_libs_dependencies)', >++ '../voice_engine/voice_engine.gyp:voice_engine' >++ ], >++ 'sources': ['no_op.cc',], >++ }, >++ { >++ 'target_name': 'merged_lib_voice', >++ 'type': 'none', >++ 'dependencies': [ >++ 'no_op_voice', >++ ], >++ 'actions': [ >++ { >++ 'variables': { >++ 'output_lib_name': 'rtc_voice_merged', >++ 'output_lib': '<(PRODUCT_DIR)/<(STATIC_LIB_PREFIX)<(output_lib_name)<(STATIC_LIB_SUFFIX)', >++ }, >++ 'action_name': 'merge_libs_voice', >++ 'inputs': ['<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)no_op_voice<(EXECUTABLE_SUFFIX)'], >++ 'outputs': ['<(output_lib)'], >++ 'action': ['python', >++ 'merge_libs.py', >++ '<(PRODUCT_DIR)', >++ '<(output_lib)',], >++ }, >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/merge_voice_libs.gyp media/webrtc/trunk/webrtc/build/merge_voice_libs.gyp >+new file mode 100644 >+index 000000000000..5e72d43be070 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/merge_voice_libs.gyp >+@@ -0,0 +1,43 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ 'common.gypi', ], >++ 'targets': [ >++ { >++ 'target_name': 'no_op', >++ 'type': 'executable', >++ 'dependencies': [ >++ '../voice_engine/voice_engine.gyp:voice_engine', >++ ], >++ 'sources': [ 'no_op.cc', ], >++ }, >++ { >++ 'target_name': 'merge_voice_libs', >++ 'type': 'none', >++ 'dependencies': [ >++ 'no_op', >++ ], >++ 'actions': [ >++ { >++ 'variables': { >++ 'output_lib_name': 'webrtc_voice', >++ 'output_lib': '<(PRODUCT_DIR)/<(STATIC_LIB_PREFIX)<(output_lib_name)<(STATIC_LIB_SUFFIX)', >++ }, >++ 'action_name': 'merge_libs', >++ 'inputs': ['<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)no_op<(EXECUTABLE_SUFFIX)'], >++ 'outputs': ['<(output_lib)'], >++ 'action': ['python', >++ 'merge_libs.py', >++ '<(PRODUCT_DIR)', >++ '<(output_lib)',], >++ }, >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/objc_common.gypi media/webrtc/trunk/webrtc/build/objc_common.gypi >+new file mode 100644 >+index 000000000000..ff908cfe6295 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/objc_common.gypi >+@@ -0,0 +1,21 @@ >++# Copyright 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# ObjC target common prefix header. >++ >++{ >++ 'variables': { >++ 'objc_prefix_file': '../sdk/objc/WebRTC-Prefix.pch', >++ }, >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'YES', >++ 'GCC_PREFIX_HEADER': '<(objc_prefix_file)', >++ 'GCC_PRECOMPILE_PREFIX_HEADER': 'YES' >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/build/protoc.gypi media/webrtc/trunk/webrtc/build/protoc.gypi >+new file mode 100644 >+index 000000000000..df209d47de8d >+--- /dev/null >++++ media/webrtc/trunk/webrtc/build/protoc.gypi >+@@ -0,0 +1,136 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# Copied from Chromium's src/build/protoc.gypi >++# >++# It was necessary to copy this file to WebRTC, because the path to >++# build/common.gypi is different for the standalone and Chromium builds. Gyp >++# doesn't permit conditional inclusion or variable expansion in include paths. >++# http://code.google.com/p/gyp/wiki/InputFormatReference#Including_Other_Files >++# >++# Local changes: >++# * Removed <(DEPTH) from include_dir due to difficulties with generated >++# downstream code. >++ >++ >++# This file is meant to be included into a target to provide a rule >++# to invoke protoc in a consistent manner. For Java-targets, see >++# protoc_java.gypi. >++# >++# To use this, create a gyp target with the following form: >++# { >++# 'target_name': 'my_proto_lib', >++# 'type': 'static_library', >++# 'sources': [ >++# 'foo.proto', >++# 'bar.proto', >++# ], >++# 'variables': { >++# # Optional, see below: 'proto_in_dir': '.' >++# 'proto_out_dir': 'dir/for/my_proto_lib' >++# }, >++# 'includes': ['path/to/this/gypi/file'], >++# } >++# If necessary, you may add normal .cc files to the sources list or other gyp >++# dependencies. The proto headers are guaranteed to be generated before any >++# source files, even within this target, are compiled. >++# >++# The 'proto_in_dir' variable must be the relative path to the >++# directory containing the .proto files. If left out, it defaults to '.'. >++# >++# The 'proto_out_dir' variable specifies the path suffix that output >++# files are generated under. Targets that gyp-depend on my_proto_lib >++# will be able to include the resulting proto headers with an include >++# like: >++# #include "dir/for/my_proto_lib/foo.pb.h" >++# >++# If you need to add an EXPORT macro to a protobuf's c++ header, set the >++# 'cc_generator_options' variable with the value: 'dllexport_decl=FOO_EXPORT:' >++# e.g. 'dllexport_decl=BASE_EXPORT:' >++# >++# It is likely you also need to #include a file for the above EXPORT macro to >++# work. You can do so with the 'cc_include' variable. >++# e.g. 'base/base_export.h' >++# >++# Implementation notes: >++# A proto_out_dir of foo/bar produces >++# <(SHARED_INTERMEDIATE_DIR)/protoc_out/foo/bar/{file1,file2}.pb.{cc,h} >++# <(SHARED_INTERMEDIATE_DIR)/pyproto/foo/bar/{file1,file2}_pb2.py >++ >++{ >++ 'variables': { >++ 'protoc_wrapper': '<(DEPTH)/tools/protoc_wrapper/protoc_wrapper.py', >++ 'cc_dir': '<(SHARED_INTERMEDIATE_DIR)/protoc_out/<(proto_out_dir)', >++ 'py_dir': '<(PRODUCT_DIR)/pyproto/<(proto_out_dir)', >++ 'cc_generator_options%': '', >++ 'cc_include%': '', >++ 'proto_in_dir%': '.', >++ 'conditions': [ >++ ['use_system_protobuf==0', { >++ 'protoc': '<(PRODUCT_DIR)/<(EXECUTABLE_PREFIX)protoc<(EXECUTABLE_SUFFIX)', >++ }, { # use_system_protobuf==1 >++ 'protoc': '<!(which protoc)', >++ }], >++ ], >++ }, >++ 'rules': [ >++ { >++ 'rule_name': 'genproto', >++ 'extension': 'proto', >++ 'inputs': [ >++ '<(protoc_wrapper)', >++ '<(protoc)', >++ ], >++ 'outputs': [ >++ '<(py_dir)/<(RULE_INPUT_ROOT)_pb2.py', >++ '<(cc_dir)/<(RULE_INPUT_ROOT).pb.cc', >++ '<(cc_dir)/<(RULE_INPUT_ROOT).pb.h', >++ ], >++ 'action': [ >++ 'python', >++ '<(protoc_wrapper)', >++ '--protoc', >++ '<(protoc)', >++ # Using the --arg val form (instead of --arg=val) allows gyp's msvs rule >++ # generation to correct 'val' which is a path. >++ '--proto-in-dir','<(proto_in_dir)', >++ # Naively you'd use <(RULE_INPUT_PATH) here, but protoc requires >++ # --proto_path is a strict prefix of the path given as an argument. >++ '--cc-out-dir', '<(cc_generator_options)<(cc_dir)', >++ '--py-out-dir', '<(py_dir)', >++ '<(RULE_INPUT_ROOT)<(RULE_INPUT_EXT)', >++ ], >++ 'message': 'Generating C++ and Python code from <(RULE_INPUT_PATH)', >++ 'process_outputs_as_sources': 1, >++ }, >++ ], >++ 'include_dirs': [ >++ '<(SHARED_INTERMEDIATE_DIR)/protoc_out', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(SHARED_INTERMEDIATE_DIR)/protoc_out', >++ ] >++ }, >++ # This target exports a hard dependency because it generates header >++ # files. >++ 'hard_dependency': 1, >++ 'conditions': [ >++ ['build_protobuf==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/protobuf/protobuf.gyp:protoc#host', >++ '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', >++ ], >++ 'export_dependent_settings': [ >++ # The generated headers reference headers within protobuf_lite, >++ # so dependencies must be able to find those headers too. >++ '<(DEPTH)/third_party/protobuf/protobuf.gyp:protobuf_lite', >++ ], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/build/webrtc.gni media/webrtc/trunk/webrtc/build/webrtc.gni >+index 1fc87dd30dab..8a460f5d7ecc 100644 >+--- media/webrtc/trunk/webrtc/build/webrtc.gni >++++ media/webrtc/trunk/webrtc/build/webrtc.gni >+@@ -11,10 +11,7 @@ import("//build/config/features.gni") >+ import("//build/config/mips.gni") >+ import("//build/config/sanitizers/sanitizers.gni") >+ import("//build_overrides/build.gni") >+- >+-if (!build_with_mozilla) { >+- import("//testing/test.gni") >+-} >++import("//testing/test.gni") >+ >+ declare_args() { >+ # Disable this to avoid building the Opus audio codec. >+@@ -38,7 +35,7 @@ declare_args() { >+ rtc_prefer_fixed_point = false >+ >+ # Enables the use of protocol buffers for debug recordings. >+- rtc_enable_protobuf = !build_with_mozilla >++ rtc_enable_protobuf = true >+ >+ # Disable the code for the intelligibility enhancer by default. >+ rtc_enable_intelligibility_enhancer = false >+@@ -49,26 +46,29 @@ declare_args() { >+ >+ # Selects whether debug dumps for the audio processing module >+ # should be generated. >+- apm_debug_dump = true >++ apm_debug_dump = false >+ >+ # Set this to true to enable BWE test logging. >+ rtc_enable_bwe_test_logging = false >+ >+ # Set this to disable building with support for SCTP data channels. >+- rtc_enable_sctp = !build_with_mozilla >++ rtc_enable_sctp = true >+ >+ # Disable these to not build components which can be externally provided. >+- rtc_build_expat = !build_with_mozilla >+- rtc_build_json = !build_with_mozilla >+- rtc_build_libjpeg = !build_with_mozilla >+- rtc_build_libsrtp = !build_with_mozilla >+- rtc_build_libvpx = !build_with_mozilla >++ rtc_build_expat = true >++ rtc_build_json = true >++ rtc_build_libjpeg = true >++ rtc_build_libsrtp = true >++ rtc_build_libvpx = true >+ rtc_libvpx_build_vp9 = true >+- rtc_build_libyuv = !build_with_mozilla >+- rtc_build_openmax_dl = !build_with_mozilla >+- rtc_build_opus = !build_with_mozilla >+- rtc_build_ssl = !build_with_mozilla >+- rtc_build_usrsctp = !build_with_mozilla >++ rtc_build_libyuv = true >++ rtc_build_openmax_dl = true >++ rtc_build_opus = true >++ rtc_build_ssl = true >++ rtc_build_usrsctp = true >++ >++ # Enable to use the Mozilla internal settings. >++ build_with_mozilla = false >+ >+ rtc_enable_android_opensl = false >+ >+@@ -90,7 +90,7 @@ declare_args() { >+ rtc_build_libevent = false >+ } else { >+ rtc_enable_libevent = true >+- rtc_build_libevent = !build_with_mozilla >++ rtc_build_libevent = true >+ } >+ >+ if (current_cpu == "arm" || current_cpu == "arm64") { >+@@ -104,10 +104,6 @@ declare_args() { >+ rtc_use_openmax_dl = false >+ } >+ >+- if (build_with_mozilla) { >+- rtc_use_openmax_dl = false >+- } >+- >+ # Determines whether NEON code will be built. >+ rtc_build_with_neon = >+ (current_cpu == "arm" && arm_use_neon) || current_cpu == "arm64" >+@@ -142,7 +138,7 @@ declare_args() { >+ >+ # Build sources requiring GTK. NOTICE: This is not present in Chrome OS >+ # build environments, even if available for Chromium builds. >+- rtc_use_gtk = !build_with_chromium && !build_with_mozilla >++ rtc_use_gtk = !build_with_chromium >+ } >+ >+ # A second declare_args block, so that declarations within it can >+@@ -152,7 +148,7 @@ declare_args() { >+ # Include the iLBC audio codec? >+ rtc_include_ilbc = !(build_with_chromium || build_with_mozilla) >+ >+- rtc_restrict_logging = build_with_chromium || build_with_mozilla >++ rtc_restrict_logging = build_with_chromium >+ >+ # Excluded in Chromium since its prerequisites don't require Pulse Audio. >+ rtc_include_pulse_audio = !build_with_chromium >+@@ -162,19 +158,14 @@ declare_args() { >+ rtc_include_internal_audio_device = !build_with_chromium >+ >+ # Include tests in standalone checkout. >+- rtc_include_tests = !build_with_chromium && !build_with_mozilla >++ rtc_include_tests = !build_with_chromium >+ } >+ >+ # Make it possible to provide custom locations for some libraries (move these >+ # up into declare_args should we need to actually use them for the GN build). >+-if (build_with_mozilla) { >+- rtc_libevent_dir = "/ipc/chromium/src/third_party/libevent" >+- rtc_libyuv_dir = "/media/libyuv/libyuv" >+-} else { >+- rtc_libvpx_dir = "//third_party/libvpx" >+- rtc_libyuv_dir = "//third_party/libyuv" >+- rtc_opus_dir = "//third_party/opus" >+-} >++rtc_libvpx_dir = "//third_party/libvpx" >++rtc_libyuv_dir = "//third_party/libyuv" >++rtc_opus_dir = "//third_party/opus" >+ >+ ############################################################################### >+ # Templates >+diff --git media/webrtc/trunk/webrtc/call/BUILD.gn media/webrtc/trunk/webrtc/call/BUILD.gn >+index 23704ee0a8cc..195c37f614b8 100644 >+--- media/webrtc/trunk/webrtc/call/BUILD.gn >++++ media/webrtc/trunk/webrtc/call/BUILD.gn >+@@ -11,21 +11,12 @@ import("../build/webrtc.gni") >+ rtc_source_set("call_interfaces") { >+ sources = [ >+ "audio_receive_stream.h", >++ "audio_send_stream.cc", >+ "audio_send_stream.h", >+ "audio_state.h", >+ "call.h", >+ "flexfec_receive_stream.h", >+ ] >+- >+- if (!build_with_mozilla) { >+- sources += [ >+- "audio_send_stream.cc", >+- ] >+- } else { >+- sources += [ >+- "audio_send_stream_call.cc", >+- ] >+- } >+ } >+ >+ rtc_static_library("call") { >+diff --git media/webrtc/trunk/webrtc/call/webrtc_call.gypi media/webrtc/trunk/webrtc/call/webrtc_call.gypi >+new file mode 100644 >+index 000000000000..a60c66b54dfd >+--- /dev/null >++++ media/webrtc/trunk/webrtc/call/webrtc_call.gypi >+@@ -0,0 +1,27 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'variables': { >++ 'webrtc_call_dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/modules/modules.gyp:congestion_controller', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_impl', >++ ], >++ 'webrtc_call_sources': [ >++ 'call/audio_receive_stream.h', >++ 'call/audio_send_stream_call.cc', >++ 'call/bitrate_allocator.cc', >++ 'call/call.h', >++ 'call/call.cc', >++ 'call/flexfec_receive_stream.h', >++ 'call/flexfec_receive_stream_impl.cc', >++ ], >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/common.gyp media/webrtc/trunk/webrtc/common.gyp >+new file mode 100644 >+index 000000000000..3b5fe902dd99 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/common.gyp >+@@ -0,0 +1,24 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'includes': ['build/common.gypi'], >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_common', >++ 'type': 'static_library', >++ 'sources': [ >++ 'common_types.cc', >++ 'common_types.h', >++ 'config.h', >++ 'config.cc', >++ 'engine_configurations.h', >++ 'typedefs.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/common_audio/common_audio.gyp media/webrtc/trunk/webrtc/common_audio/common_audio.gyp >+new file mode 100644 >+index 000000000000..5bfc48f8ad45 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/common_audio/common_audio.gyp >+@@ -0,0 +1,235 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'common_audio', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'include_dirs': [ >++ 'resampler/include', >++ 'signal_processing/include', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'resampler/include', >++ 'signal_processing/include', >++ 'vad/include', >++ ], >++ }, >++ 'sources': [ >++ 'audio_converter.cc', >++ 'audio_converter.h', >++ 'audio_ring_buffer.cc', >++ 'audio_ring_buffer.h', >++ 'audio_util.cc', >++ 'blocker.cc', >++ 'blocker.h', >++ 'channel_buffer.cc', >++ 'channel_buffer.h', >++ 'fft4g.c', >++ 'fft4g.h', >++ 'fir_filter.cc', >++ 'fir_filter.h', >++ 'fir_filter_neon.h', >++ 'fir_filter_sse.h', >++ 'include/audio_util.h', >++ 'lapped_transform.cc', >++ 'lapped_transform.h', >++ 'real_fourier.cc', >++ 'real_fourier.h', >++ 'real_fourier_ooura.cc', >++ 'real_fourier_ooura.h', >++ 'resampler/include/push_resampler.h', >++ 'resampler/include/resampler.h', >++ 'resampler/push_resampler.cc', >++ 'resampler/push_sinc_resampler.cc', >++ 'resampler/push_sinc_resampler.h', >++ 'resampler/resampler.cc', >++ 'resampler/sinc_resampler.cc', >++ 'resampler/sinc_resampler.h', >++ 'ring_buffer.c', >++ 'ring_buffer.h', >++ 'signal_processing/include/real_fft.h', >++ 'signal_processing/include/signal_processing_library.h', >++ 'signal_processing/include/spl_inl.h', >++ 'signal_processing/auto_corr_to_refl_coef.c', >++ 'signal_processing/auto_correlation.c', >++ 'signal_processing/complex_fft.c', >++ 'signal_processing/complex_fft_tables.h', >++ 'signal_processing/complex_bit_reverse.c', >++ 'signal_processing/copy_set_operations.c', >++ 'signal_processing/cross_correlation.c', >++ 'signal_processing/division_operations.c', >++ 'signal_processing/dot_product_with_scale.c', >++ 'signal_processing/downsample_fast.c', >++ 'signal_processing/energy.c', >++ 'signal_processing/filter_ar.c', >++ 'signal_processing/filter_ar_fast_q12.c', >++ 'signal_processing/filter_ma_fast_q12.c', >++ 'signal_processing/get_hanning_window.c', >++ 'signal_processing/get_scaling_square.c', >++ 'signal_processing/ilbc_specific_functions.c', >++ 'signal_processing/levinson_durbin.c', >++ 'signal_processing/lpc_to_refl_coef.c', >++ 'signal_processing/min_max_operations.c', >++ 'signal_processing/randomization_functions.c', >++ 'signal_processing/refl_coef_to_lpc.c', >++ 'signal_processing/real_fft.c', >++ 'signal_processing/resample.c', >++ 'signal_processing/resample_48khz.c', >++ 'signal_processing/resample_by_2.c', >++ 'signal_processing/resample_by_2_internal.c', >++ 'signal_processing/resample_by_2_internal.h', >++ 'signal_processing/resample_fractional.c', >++ 'signal_processing/spl_init.c', >++ 'signal_processing/spl_inl.c', >++ 'signal_processing/spl_sqrt.c', >++ 'signal_processing/spl_sqrt_floor.c', >++ 'signal_processing/splitting_filter.c', >++ 'signal_processing/sqrt_of_one_minus_x_squared.c', >++ 'signal_processing/vector_scaling_operations.c', >++ 'smoothing_filter.cc', >++ 'smoothing_filter.h', >++ 'sparse_fir_filter.cc', >++ 'sparse_fir_filter.h', >++ 'vad/include/vad.h', >++ 'vad/vad.cc', >++ 'vad/webrtc_vad.c', >++ 'vad/vad_core.c', >++ 'vad/vad_core.h', >++ 'vad/vad_filterbank.c', >++ 'vad/vad_filterbank.h', >++ 'vad/vad_gmm.c', >++ 'vad/vad_gmm.h', >++ 'vad/vad_sp.c', >++ 'vad/vad_sp.h', >++ 'wav_header.cc', >++ 'wav_header.h', >++ 'wav_file.cc', >++ 'wav_file.h', >++ 'window_generator.cc', >++ 'window_generator.h', >++ ], >++ 'conditions': [ >++ #TODO: not defined >++ #['rtc_use_openmax_dl==1', { >++ # 'sources': [ >++ # 'real_fourier_openmax.cc', >++ # 'real_fourier_openmax.h', >++ # ], >++ # 'defines': ['RTC_USE_OPENMAX_DL',], >++ # 'conditions': [ >++ # ['build_openmax_dl==1', { >++ # 'dependencies': ['<(DEPTH)/third_party/openmax_dl/dl/dl.gyp:openmax_dl',], >++ # }], >++ # ], >++ #}], >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'dependencies': ['common_audio_sse2',], >++ }], >++ ['build_with_neon==1', { >++ 'dependencies': ['common_audio_neon',], >++ }], >++ ['target_arch=="arm"', { >++ 'sources': [ >++ 'signal_processing/complex_bit_reverse_arm.S', >++ 'signal_processing/spl_sqrt_floor_arm.S', >++ ], >++ 'sources!': [ >++ 'signal_processing/complex_bit_reverse.c', >++ 'signal_processing/spl_sqrt_floor.c', >++ ], >++ 'conditions': [ >++ ['arm_version>=7', { >++ 'sources': [ >++ 'signal_processing/filter_ar_fast_q12_armv7.S', >++ ], >++ 'sources!': [ >++ 'signal_processing/filter_ar_fast_q12.c', >++ ], >++ }], >++ ], # conditions >++ }], >++ ['target_arch=="mipsel" and mips_arch_variant!="r6"', { >++ 'sources': [ >++ 'signal_processing/include/spl_inl_mips.h', >++ 'signal_processing/complex_bit_reverse_mips.c', >++ 'signal_processing/complex_fft_mips.c', >++ 'signal_processing/cross_correlation_mips.c', >++ 'signal_processing/downsample_fast_mips.c', >++ 'signal_processing/filter_ar_fast_q12_mips.c', >++ 'signal_processing/min_max_operations_mips.c', >++ 'signal_processing/resample_by_2_mips.c', >++ 'signal_processing/spl_sqrt_floor_mips.c', >++ ], >++ 'sources!': [ >++ 'signal_processing/complex_bit_reverse.c', >++ 'signal_processing/complex_fft.c', >++ 'signal_processing/filter_ar_fast_q12.c', >++ 'signal_processing/spl_sqrt_floor.c', >++ ], >++ 'conditions': [ >++ ['mips_dsp_rev>0', { >++ 'sources': [ >++ 'signal_processing/vector_scaling_operations_mips.c', >++ ], >++ }], >++ ], >++ }], >++ ], # conditions >++ # Ignore warning on shift operator promotion. >++ 'msvs_disabled_warnings': [ 4334, ], >++ }, >++ ], # targets >++ 'conditions': [ >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'targets': [ >++ { >++ 'target_name': 'common_audio_sse2', >++ 'type': 'static_library', >++ 'sources': [ >++ 'fir_filter_sse.cc', >++ 'resampler/sinc_resampler_sse.cc', >++ ], >++ 'conditions': [ >++ ['os_posix==1', { >++ 'cflags': [ '-msse2', ], >++ 'cflags_mozilla': ['-msse2',], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ '-msse2', ], >++ }, >++ }], >++ ], >++ }, >++ ], # targets >++ }], >++ ['build_with_neon==1', { >++ 'targets': [ >++ { >++ 'target_name': 'common_audio_neon', >++ 'type': 'static_library', >++ 'includes': ['../build/arm_neon.gypi',], >++ 'sources': [ >++ 'fir_filter_neon.cc', >++ 'resampler/sinc_resampler_neon.cc', >++ 'signal_processing/cross_correlation_neon.c', >++ 'signal_processing/downsample_fast_neon.c', >++ 'signal_processing/min_max_operations_neon.c', >++ ], >++ }, >++ ], # targets >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/common_video/common_video.gyp media/webrtc/trunk/webrtc/common_video/common_video.gyp >+new file mode 100644 >+index 000000000000..8391b7ce173a >+--- /dev/null >++++ media/webrtc/trunk/webrtc/common_video/common_video.gyp >+@@ -0,0 +1,83 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': ['../build/common.gypi'], >++ 'targets': [ >++ { >++ 'target_name': 'common_video', >++ 'type': 'static_library', >++ 'include_dirs': [ >++ '<(webrtc_root)/modules/interface/', >++ 'include', >++ 'libyuv/include', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_task_queue', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ 'libyuv/include', >++ ], >++ }, >++ 'conditions': [ >++ ['build_libyuv==1', { >++ 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',], >++ 'export_dependent_settings': [ >++ '<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv', >++ ], >++ }, { >++ # Need to add a directory normally exported by libyuv.gyp. >++ 'include_dirs': ['<(libyuv_dir)/include',], >++ }], >++ ['OS=="ios" or OS=="mac"', { >++ 'sources': [ >++ 'corevideo_frame_buffer.cc', >++ 'include/corevideo_frame_buffer.h', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CoreVideo', >++ ], >++ }, >++ }, >++ }], >++ ], >++ 'sources': [ >++ 'bitrate_adjuster.cc', >++ 'h264/sps_vui_rewriter.cc', >++ 'h264/sps_vui_rewriter.h', >++ 'h264/h264_common.cc', >++ 'h264/h264_common.h', >++ 'h264/profile_level_id.cc', >++ 'h264/pps_parser.cc', >++ 'h264/pps_parser.h', >++ 'h264/sps_parser.cc', >++ 'h264/sps_parser.h', >++ 'i420_buffer_pool.cc', >++ 'video_frame.cc', >++ 'incoming_video_stream.cc', >++ 'include/bitrate_adjuster.h', >++ 'include/frame_callback.h', >++ 'include/i420_buffer_pool.h', >++ 'include/incoming_video_stream.h', >++ 'include/video_bitrate_allocator.h', >++ 'include/video_frame_buffer.h', >++ 'libyuv/include/webrtc_libyuv.h', >++ 'libyuv/webrtc_libyuv.cc', >++ 'video_frame_buffer.cc', >++ 'video_render_frames.cc', >++ 'video_render_frames.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/logging/BUILD.gn media/webrtc/trunk/webrtc/logging/BUILD.gn >+index a83238db6eb9..98776d3f90ee 100644 >+--- media/webrtc/trunk/webrtc/logging/BUILD.gn >++++ media/webrtc/trunk/webrtc/logging/BUILD.gn >+@@ -7,9 +7,7 @@ >+ # be found in the AUTHORS file in the root of the source tree. >+ >+ import("../build/webrtc.gni") >+-if (!build_with_mozilla) { >+- import("//third_party/protobuf/proto_library.gni") >+-} >++import("//third_party/protobuf/proto_library.gni") >+ if (is_android) { >+ import("//build/config/android/config.gni") >+ import("//build/config/android/rules.gni") >+diff --git media/webrtc/trunk/webrtc/media/BUILD.gn media/webrtc/trunk/webrtc/media/BUILD.gn >+index e27e39892367..060b6afa9a3e 100644 >+--- media/webrtc/trunk/webrtc/media/BUILD.gn >++++ media/webrtc/trunk/webrtc/media/BUILD.gn >+@@ -10,17 +10,10 @@ import("//build/config/linux/pkg_config.gni") >+ import("../build/webrtc.gni") >+ >+ group("media") { >+- public_deps = [] >+- if (!build_with_mozilla) { >+- public_deps += [ >+- ":rtc_media", >+- ":rtc_media_base", >+- ] >+- } else { >+- public_deps += [ >+- ":mozilla_rtc_media", >+- ] >+- } >++ public_deps = [ >++ ":rtc_media", >++ ":rtc_media_base", >++ ] >+ } >+ >+ config("rtc_media_defines_config") { >+@@ -49,22 +42,6 @@ if (is_linux && rtc_use_gtk) { >+ } >+ } >+ >+-if (build_with_mozilla) { >+- rtc_static_library("mozilla_rtc_media") { >+- defines = [] >+- libs = [] >+- deps = [] >+- sources = [ >+- "base/videoadapter.cc", >+- "base/videoadapter.h", >+- "base/videobroadcaster.cc", >+- "base/videobroadcaster.h", >+- "base/videosourcebase.cc", >+- "base/videosourcebase.h", >+- ] >+- } >+-} >+- >+ rtc_static_library("rtc_media_base") { >+ defines = [] >+ libs = [] >+@@ -125,13 +102,8 @@ rtc_static_library("rtc_media_base") { >+ deps += [ >+ "..:webrtc_common", >+ "../base:rtc_base_approved", >++ "../p2p", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../p2p", >+- ] >+- } >+ } >+ >+ rtc_static_library("rtc_media") { >+diff --git media/webrtc/trunk/webrtc/media/media.gyp media/webrtc/trunk/webrtc/media/media.gyp >+new file mode 100644 >+index 000000000000..eda77532241a >+--- /dev/null >++++ media/webrtc/trunk/webrtc/media/media.gyp >+@@ -0,0 +1,219 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'targets': [ >++ { >++ 'target_name': 'mozilla_rtc_media', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(libyuv_dir)/include', >++ ], >++ }, >++ 'sources': [ >++ 'base/videoadapter.cc', >++ 'base/videoadapter.h', >++ 'base/videobroadcaster.cc', >++ 'base/videobroadcaster.h', >++ 'base/videosourcebase.cc', >++ 'base/videosourcebase.h', >++ ], >++ # TODO(kjellander): Make the code compile without disabling these flags. >++ # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307 >++ 'cflags': [ >++ '-Wno-deprecated-declarations', >++ ], >++ 'cflags!': [ >++ '-Wextra', >++ ], >++ 'cflags_cc!': [ >++ '-Woverloaded-virtual', >++ ], >++ }, >++ { >++ 'target_name': 'rtc_media', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/webrtc.gyp:webrtc_lib', >++ '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/p2p/p2p.gyp:rtc_p2p', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(libyuv_dir)/include', >++ ], >++ }, >++ 'sources': [ >++ 'base/adaptedvideotracksource.cc', >++ 'base/adaptedvideotracksource.h', >++ 'base/audiosource.h', >++ 'base/codec.cc', >++ 'base/codec.h', >++ 'base/cpuid.cc', >++ 'base/cpuid.h', >++ 'base/cryptoparams.h', >++ 'base/device.h', >++ 'base/hybriddataengine.h', >++ 'base/mediachannel.h', >++ 'base/mediacommon.h', >++ 'base/mediaconstants.cc', >++ 'base/mediaconstants.h', >++ 'base/mediaengine.cc', >++ 'base/mediaengine.h', >++ 'base/rtpdataengine.cc', >++ 'base/rtpdataengine.h', >++ 'base/rtpdump.cc', >++ 'base/rtpdump.h', >++ 'base/rtputils.cc', >++ 'base/rtputils.h', >++ 'base/screencastid.h', >++ 'base/streamparams.cc', >++ 'base/streamparams.h', >++ 'base/turnutils.cc', >++ 'base/turnutils.h', >++ 'base/videoadapter.cc', >++ 'base/videoadapter.h', >++ 'base/videobroadcaster.cc', >++ 'base/videobroadcaster.h', >++ 'base/videocapturer.cc', >++ 'base/videocapturer.h', >++ 'base/videocapturerfactory.h', >++ 'base/videocommon.cc', >++ 'base/videocommon.h', >++ 'base/videoframe.cc', >++ 'base/videoframe.h', >++ 'base/videosourcebase.cc', >++ 'base/videosourcebase.h', >++ 'devices/videorendererfactory.h', >++ 'engine/internaldecoderfactory.cc', >++ 'engine/internaldecoderfactory.h', >++ 'engine/internalencoderfactory.cc', >++ 'engine/internalencoderfactory.h', >++ 'engine/nullwebrtcvideoengine.h', >++ 'engine/payload_type_mapper.cc', >++ 'engine/payload_type_mapper.h', >++ 'engine/simulcast.cc', >++ 'engine/simulcast.h', >++ 'engine/videodecodersoftwarefallbackwrapper.cc', >++ 'engine/videodecodersoftwarefallbackwrapper.h', >++ 'engine/videoencodersoftwarefallbackwrapper.cc', >++ 'engine/videoencodersoftwarefallbackwrapper.h', >++ 'engine/webrtccommon.h', >++ 'engine/webrtcmediaengine.cc', >++ 'engine/webrtcmediaengine.h', >++ 'engine/webrtcmediaengine.cc', >++ 'engine/webrtcvideocapturer.cc', >++ 'engine/webrtcvideocapturer.h', >++ 'engine/webrtcvideocapturerfactory.h', >++ 'engine/webrtcvideocapturerfactory.cc', >++ 'engine/webrtcvideodecoderfactory.h', >++ 'engine/webrtcvideoencoderfactory.h', >++ 'engine/webrtcvideoengine2.cc', >++ 'engine/webrtcvideoengine2.h', >++ 'engine/webrtcvideoframe.cc', >++ 'engine/webrtcvideoframe.h', >++ 'engine/webrtcvoe.h', >++ 'engine/webrtcvoiceengine.cc', >++ 'engine/webrtcvoiceengine.h', >++ 'sctp/sctptransportinternal.h', >++# 'sctp/sctpdataengine.cc', >++# 'sctp/sctpdataengine.h', >++ ], >++ # TODO(kjellander): Make the code compile without disabling these flags. >++ # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307 >++ 'cflags': [ >++ '-Wno-deprecated-declarations', >++ ], >++ 'cflags!': [ >++ '-Wextra', >++ ], >++ 'cflags_cc!': [ >++ '-Woverloaded-virtual', >++ ], >++ 'msvs_disabled_warnings': [ >++ 4245, # conversion from 'int' to 'size_t', signed/unsigned mismatch. >++ 4267, # conversion from 'size_t' to 'int', possible loss of data. >++ 4389, # signed/unsigned mismatch. >++ ], >++ 'conditions': [ >++ ['build_libyuv==1', { >++ 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',], >++ }], >++ #TODO: build_usrsctp not defined >++ #['build_usrsctp==1', { >++ # 'include_dirs': [ >++ # # TODO(jiayl): move this into the direct_dependent_settings of >++ # # usrsctp.gyp. >++ # '<(DEPTH)/third_party/usrsctp/usrsctplib', >++ # ], >++ # 'dependencies': [ >++ # '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib', >++ # ], >++ #}], >++ ['enable_intelligibility_enhancer==1', { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=1',], >++ }, { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=0',], >++ }], >++ ['build_with_chromium==1', { >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:video_capture', >++ ], >++ }, { >++ 'defines': [ >++ 'HAVE_WEBRTC_VIDEO', >++ 'HAVE_WEBRTC_VOICE', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ 'HAVE_WEBRTC_VIDEO', >++ 'HAVE_WEBRTC_VOICE', >++ ], >++ }, >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl', >++ ], >++ }], >++ ['OS=="linux" and use_gtk==1', { >++ 'sources': [ >++ 'devices/gtkvideorenderer.cc', >++ 'devices/gtkvideorenderer.h', >++ ], >++ 'cflags': [ >++ '<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)', >++ ], >++ }], >++ ['OS=="win"', { >++ 'sources': [ >++ 'devices/gdivideorenderer.cc', >++ 'devices/gdivideorenderer.h', >++ ], >++ 'msvs_settings': { >++ 'VCLibrarianTool': { >++ 'AdditionalDependencies': [ >++ 'd3d9.lib', >++ 'gdi32.lib', >++ 'strmiids.lib', >++ ], >++ }, >++ }, >++ }], >++ ], >++ }, # target rtc_media >++ ], # targets. >++} >+diff --git media/webrtc/trunk/webrtc/modules/BUILD.gn media/webrtc/trunk/webrtc/modules/BUILD.gn >+index 2212adebd378..ff059accf54f 100644 >+--- media/webrtc/trunk/webrtc/modules/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/BUILD.gn >+@@ -23,26 +23,16 @@ group("modules") { >+ "audio_processing", >+ "bitrate_controller", >+ "congestion_controller", >++ "desktop_capture", >+ "media_file", >+ "pacing", >+ "remote_bitrate_estimator", >+ "rtp_rtcp", >+ "utility", >++ "video_capture", >+ "video_coding", >+ "video_processing", >+ ] >+- >+- if (!build_with_mozilla) { >+- public_deps += [ >+- "video_capture", >+- ] >+- } >+- >+- if (rtc_desktop_capture_supported) { >+- public_deps += [ >+- "desktop_capture", >+- ] >+- } >+ } >+ >+ if (rtc_include_tests) { >+@@ -76,6 +66,7 @@ if (rtc_include_tests) { >+ deps = [ >+ "..:webrtc_common", >+ "../common_video", >++ "../media:rtc_media_base", >+ "../modules/audio_coding", >+ "../modules/audio_coding:audio_format_conversion", >+ "../modules/rtp_rtcp", >+@@ -88,12 +79,6 @@ if (rtc_include_tests) { >+ "//testing/gtest", >+ ] >+ >+- if (!build_with_mozilla) { >+- deps += [ >+- "../media:rtc_media_base", >+- ] >+- } >+- >+ sources = [ >+ "audio_coding/test/APITest.cc", >+ "audio_coding/test/Channel.cc", >+@@ -561,7 +546,7 @@ if (rtc_include_tests) { >+ sources += [ "video_coding/codecs/h264/h264_encoder_impl_unittest.cc" ] >+ } >+ >+- if (rtc_desktop_capture_supported || (is_android && !build_with_mozilla)) { >++ if (rtc_desktop_capture_supported || is_android) { >+ deps += [ "desktop_capture" ] >+ sources += [ >+ "desktop_capture/desktop_region_unittest.cc", >+@@ -663,6 +648,7 @@ if (rtc_include_tests) { >+ ":audio_network_adaptor_unittests", >+ "..:webrtc_common", >+ "../api:transport_api", >++ "../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+ "../base:rtc_base_tests_utils", >+ "../common_audio", >+ "../common_video", >+@@ -707,11 +693,6 @@ if (rtc_include_tests) { >+ "//third_party/gflags", >+ ] >+ >+- if (!build_with_mozilla) { >+- deps += [ >+- "../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+- ] >+- } >+ data = modules_unittests_resources >+ >+ if (is_android) { >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/BUILD.gn media/webrtc/trunk/webrtc/modules/audio_coding/BUILD.gn >+index 0706c9f5ad16..3b852d32cf5f 100644 >+--- media/webrtc/trunk/webrtc/modules/audio_coding/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/audio_coding/BUILD.gn >+@@ -9,9 +9,7 @@ >+ import("../../build/webrtc.gni") >+ import("audio_coding.gni") >+ import("//build/config/arm.gni") >+-if (!build_with_mozilla) { >+- import("//third_party/protobuf/proto_library.gni") >+-} >++import("//third_party/protobuf/proto_library.gni") >+ >+ audio_codec_deps = [ >+ ":cng", >+@@ -24,12 +22,14 @@ if (rtc_include_ilbc) { >+ if (rtc_include_opus) { >+ audio_codec_deps += [ ":webrtc_opus" ] >+ } >+-if (current_cpu == "arm") { >+- audio_codec_deps += [ ":isac_fix" ] >+-} else { >+- audio_codec_deps += [ ":isac" ] >++if (!build_with_mozilla) { >++ if (current_cpu == "arm") { >++ audio_codec_deps += [ ":isac_fix" ] >++ } else { >++ audio_codec_deps += [ ":isac" ] >++ } >++ audio_codec_deps += [ ":g722" ] >+ } >+-audio_codec_deps += [ ":g722" ] >+ if (!build_with_mozilla && !build_with_chromium) { >+ audio_codec_deps += [ ":red" ] >+ } >+@@ -873,7 +873,7 @@ rtc_source_set("webrtc_opus_c") { >+ rtc_opus_dir, >+ ] >+ } else if (build_with_mozilla) { >+- include_dirs = [ "/media/libopus/include" ] >++ include_dirs = [ getenv("DIST") + "/include/opus" ] >+ } >+ >+ deps = [ >+@@ -1043,15 +1043,17 @@ rtc_static_library("neteq") { >+ defines += [ "WEBRTC_CODEC_OPUS" ] >+ deps += [ ":webrtc_opus" ] >+ } >+- if (current_cpu == "arm") { >+- defines += [ "WEBRTC_CODEC_ISACFX" ] >+- deps += [ ":isac_fix" ] >+- } else { >+- defines += [ "WEBRTC_CODEC_ISAC" ] >+- deps += [ ":isac" ] >++ if (!build_with_mozilla) { >++ if (current_cpu == "arm") { >++ defines += [ "WEBRTC_CODEC_ISACFX" ] >++ deps += [ ":isac_fix" ] >++ } else { >++ defines += [ "WEBRTC_CODEC_ISAC" ] >++ deps += [ ":isac" ] >++ } >++ defines += [ "WEBRTC_CODEC_G722" ] >++ deps += [ ":g722" ] >+ } >+- defines += [ "WEBRTC_CODEC_G722" ] >+- deps += [ ":g722" ] >+ } >+ >+ # Although providing only test support, this target must be outside of the >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gni media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gni >+index a176724027b4..13577f86b363 100644 >+--- media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gni >++++ media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gni >+@@ -21,8 +21,8 @@ if (!build_with_mozilla) { >+ } else { >+ audio_codec_defines += [ "WEBRTC_CODEC_ISAC" ] >+ } >++ audio_codec_defines += [ "WEBRTC_CODEC_G722" ] >+ } >+-audio_codec_defines += [ "WEBRTC_CODEC_G722" ] >+ if (!build_with_mozilla && !build_with_chromium) { >+ audio_codec_defines += [ "WEBRTC_CODEC_RED" ] >+ } >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gypi media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gypi >+new file mode 100644 >+index 000000000000..214df95d28cd >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding.gypi >+@@ -0,0 +1,257 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../build/common.gypi', >++ 'audio_network_adaptor/audio_network_adaptor.gypi', >++ 'codecs/interfaces.gypi', >++ 'codecs/cng/cng.gypi', >++ 'codecs/g711/g711.gypi', >++ 'codecs/g722/g722.gypi', >++ 'codecs/ilbc/ilbc.gypi', >++ 'codecs/isac/isac.gypi', >++ 'codecs/isac/isac_common.gypi', >++ 'codecs/isac/isacfix.gypi', >++ 'codecs/pcm16b/pcm16b.gypi', >++ 'codecs/red/red.gypi', >++ 'neteq/neteq.gypi', >++ ], >++ 'variables': { >++ 'variables': { >++ 'audio_codec_dependencies': [ >++ 'cng', >++ 'g711', >++ 'pcm16b', >++ ], >++ 'audio_codec_defines': [], >++ 'conditions': [ >++ ['include_g722==1', { >++ 'audio_coding_dependencies': ['g722',], >++ 'audio_coding_defines': ['WEBRTC_CODEC_G722',], >++ }], >++ ['include_isac==1', { >++ 'audio_coding_dependencies': ['isac',], >++ 'audio_coding_defines': ['WEBRTC_CODEC_ISAC',], >++ }], >++ ['include_ilbc==1', { >++ 'audio_codec_dependencies': ['ilbc',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_ILBC',], >++ }], >++ ['include_opus==1', { >++ 'audio_codec_dependencies': ['webrtc_opus',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_OPUS',], >++ 'conditions': [ >++ ['rtc_opus_variable_complexity==1', { >++ 'audio_codec_defines': [ "WEBRTC_OPUS_VARIABLE_COMPLEXITY=1" ] >++ },{ >++ 'audio_codec_defines': [ "WEBRTC_OPUS_VARIABLE_COMPLEXITY=0" ] >++ }], >++ ], >++ }], >++ ['build_with_mozilla==0', { >++ 'conditions': [ >++ ['target_arch=="arm"', { >++ 'audio_codec_dependencies': ['isac_fix',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_ISACFX',], >++ }, { >++ 'audio_codec_dependencies': ['isac',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_ISAC',], >++ }], >++ ], >++ 'audio_codec_dependencies': ['g722',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_G722',], >++ }], >++ ['build_with_mozilla==0 and build_with_chromium==0', { >++ 'audio_codec_dependencies': ['red',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_RED',], >++ }], >++ ['build_with_mozilla==1', { >++ 'audio_codec_dependencies': ['g722',], >++ 'audio_codec_defines': ['WEBRTC_CODEC_G722',], >++ }], >++ ], >++ }, >++ 'audio_codec_dependencies': '<(audio_codec_dependencies)', >++ 'audio_codec_defines': '<(audio_codec_defines)', >++ 'audio_coding_dependencies': [ >++ '<@(audio_codec_dependencies)', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'audio_coding_defines': '<(audio_codec_defines)', >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'audio_decoder_factory_interface', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ 'audio_format', >++ ], >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'codecs/audio_decoder_factory.h', >++ ], >++ }, >++ { >++ 'target_name': 'audio_format', >++ 'type': 'static_library', >++ 'defines': [ >++ '<@(audio_codec_defines)', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'codecs/audio_format.cc', >++ 'codecs/audio_format.h', >++ ], >++ }, >++ { >++ 'target_name': 'audio_format_conversion', >++ 'type': 'static_library', >++ 'defines': [ >++ '<@(audio_codec_defines)', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ 'audio_format', >++ ], >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'codecs/audio_format_conversion.cc', >++ 'codecs/audio_format_conversion.h', >++ ], >++ }, >++ { >++ 'target_name': 'builtin_audio_decoder_factory', >++ 'type': 'static_library', >++ 'defines': [ >++ '<@(audio_codec_defines)', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<@(audio_codec_dependencies)', >++ 'audio_decoder_factory_interface', >++ ], >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'codecs/builtin_audio_decoder_factory.cc', >++ 'codecs/builtin_audio_decoder_factory.h', >++ ], >++ }, >++ { >++ 'target_name': 'rent_a_codec', >++ 'type': 'static_library', >++ 'defines': [ >++ '<@(audio_codec_defines)', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<@(audio_codec_dependencies)', >++ ], >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'acm2/acm_codec_database.cc', >++ 'acm2/acm_codec_database.h', >++ 'acm2/rent_a_codec.cc', >++ 'acm2/rent_a_codec.h', >++ ], >++ }, >++ { >++ 'target_name': 'audio_coding_module', >++ 'type': 'static_library', >++ 'defines': [ >++ '<@(audio_coding_defines)', >++ ], >++ 'dependencies': [ >++ '<@(audio_coding_dependencies)', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_api', >++ 'audio_network_adaptor', >++ 'neteq', >++ 'rent_a_codec', >++ 'audio_format_conversion', >++ ], >++ 'include_dirs': [ >++ 'include', >++ '../include', >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ '../include', >++ '<(webrtc_root)', >++ ], >++ }, >++ 'conditions': [ >++ ['include_opus==1', { >++ 'export_dependent_settings': ['webrtc_opus'], >++ }], >++ ], >++ 'sources': [ >++ 'acm2/acm_common_defs.h', >++ 'acm2/acm_receiver.cc', >++ 'acm2/acm_receiver.h', >++ 'acm2/acm_resampler.cc', >++ 'acm2/acm_resampler.h', >++ 'acm2/audio_coding_module.cc', >++ 'acm2/call_statistics.cc', >++ 'acm2/call_statistics.h', >++ 'acm2/codec_manager.cc', >++ 'acm2/codec_manager.h', >++ 'include/audio_coding_module.h', >++ 'include/audio_coding_module_typedefs.h', >++ ], >++ }, >++ ], >++ 'conditions': [ >++ ['include_opus==1', { >++ 'includes': ['codecs/opus/opus.gypi',], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding_tests.gypi media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding_tests.gypi >+new file mode 100644 >+index 000000000000..0b1a22d8d048 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/audio_coding_tests.gypi >+@@ -0,0 +1,42 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../build/common.gypi', >++ 'codecs/isac/isac_test.gypi', >++ 'codecs/isac/isacfix_test.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'audio_codec_speed_tests', >++ 'type': '<(gtest_target_type)', >++ 'dependencies': [ >++ 'audio_processing', >++ 'isac_fix', >++ 'webrtc_opus', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ ], >++ 'sources': [ >++ 'codecs/isac/fix/test/isac_speed_test.cc', >++ 'codecs/opus/opus_speed_test.cc', >++ 'codecs/tools/audio_codec_speed_test.h', >++ 'codecs/tools/audio_codec_speed_test.cc', >++ ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'dependencies': [ >++ '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code', >++ ], >++ }], >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.gypi media/webrtc/trunk/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.gypi >+new file mode 100644 >+index 000000000000..406282e9cc00 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor.gypi >+@@ -0,0 +1,77 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { 'target_name': 'audio_network_adaptor', >++ 'type': 'static_library', >++ 'sources': [ >++ 'audio_network_adaptor.cc', >++ 'audio_network_adaptor_impl.cc', >++ 'audio_network_adaptor_impl.h', >++ 'bitrate_controller.h', >++ 'bitrate_controller.cc', >++ 'channel_controller.cc', >++ 'channel_controller.h', >++ 'controller.h', >++ 'controller.cc', >++ 'controller_manager.cc', >++ 'controller_manager.h', >++ 'debug_dump_writer.cc', >++ 'debug_dump_writer.h', >++ 'dtx_controller.h', >++ 'dtx_controller.cc', >++ 'fec_controller.h', >++ 'fec_controller.cc', >++ 'frame_length_controller.cc', >++ 'frame_length_controller.h', >++ 'include/audio_network_adaptor.h', >++ ], # sources >++ 'conditions': [ >++ ['enable_protobuf==1', { >++ 'dependencies': [ >++ 'ana_config_proto', >++ 'ana_debug_dump_proto', >++ ], >++ 'defines': ['WEBRTC_AUDIO_NETWORK_ADAPTOR_DEBUG_DUMP'], >++ }], >++ ], # conditions >++ }, >++ ], # targets >++ >++ 'conditions': [ >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { 'target_name': 'ana_debug_dump_proto', >++ 'type': 'static_library', >++ 'sources': ['debug_dump.proto',], >++ 'variables': { >++ 'proto_in_dir': '.', >++ # Workaround to protect against gyp's pathname relativization when >++ # this file is included by modules.gyp. >++ 'proto_out_protected': 'webrtc/modules/audio_coding/audio_network_adaptor', >++ 'proto_out_dir': '<(proto_out_protected)', >++ }, >++ 'includes': ['../../../build/protoc.gypi',], >++ }, >++ { 'target_name': 'ana_config_proto', >++ 'type': 'static_library', >++ 'sources': ['config.proto',], >++ 'variables': { >++ 'proto_in_dir': '.', >++ # Workaround to protect against gyp's pathname relativization when >++ # this file is included by modules.gyp. >++ 'proto_out_protected': 'webrtc/modules/audio_coding/audio_network_adaptor', >++ 'proto_out_dir': '<(proto_out_protected)', >++ }, >++ 'includes': ['../../../build/protoc.gypi',], >++ }, >++ ], # targets >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/cng/cng.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/cng/cng.gypi >+new file mode 100644 >+index 000000000000..bbff9f8edfee >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/cng/cng.gypi >+@@ -0,0 +1,26 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'cng', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ 'audio_encoder_interface', >++ ], >++ 'sources': [ >++ 'audio_encoder_cng.cc', >++ 'audio_encoder_cng.h', >++ 'webrtc_cng.cc', >++ 'webrtc_cng.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g711/g711.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g711/g711.gypi >+new file mode 100644 >+index 000000000000..364a1e6a8fa1 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g711/g711.gypi >+@@ -0,0 +1,30 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'g711', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_encoder_interface', >++ 'audio_decoder_interface', >++ ], >++ 'sources': [ >++ 'audio_decoder_pcm.cc', >++ 'audio_decoder_pcm.h', >++ 'audio_encoder_pcm.cc', >++ 'audio_encoder_pcm.h', >++ 'g711_interface.c', >++ 'g711_interface.h', >++ 'g711.c', >++ 'g711.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g722/g722.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g722/g722.gypi >+new file mode 100644 >+index 000000000000..836afa1203ad >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/g722/g722.gypi >+@@ -0,0 +1,30 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'targets': [ >++ { >++ 'target_name': 'g722', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_encoder_interface', >++ 'audio_decoder_interface', >++ ], >++ 'sources': [ >++ 'audio_decoder_g722.cc', >++ 'audio_decoder_g722.h', >++ 'audio_encoder_g722.cc', >++ 'audio_encoder_g722.h', >++ 'g722_interface.c', >++ 'g722_interface.h', >++ 'g722_decode.c', >++ 'g722_enc_dec.h', >++ 'g722_encode.c', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi >+new file mode 100644 >+index 000000000000..762a8fab1a28 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/ilbc/ilbc.gypi >+@@ -0,0 +1,166 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'ilbc', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ 'audio_encoder_interface', >++ ], >++ 'sources': [ >++ 'abs_quant.c', >++ 'abs_quant_loop.c', >++ 'audio_decoder_ilbc.cc', >++ 'audio_decoder_ilbc.h', >++ 'audio_encoder_ilbc.cc', >++ 'audio_encoder_ilbc.h', >++ 'augmented_cb_corr.c', >++ 'bw_expand.c', >++ 'cb_construct.c', >++ 'cb_mem_energy.c', >++ 'cb_mem_energy_augmentation.c', >++ 'cb_mem_energy_calc.c', >++ 'cb_search.c', >++ 'cb_search_core.c', >++ 'cb_update_best_index.c', >++ 'chebyshev.c', >++ 'comp_corr.c', >++ 'constants.c', >++ 'create_augmented_vec.c', >++ 'decode.c', >++ 'decode_residual.c', >++ 'decoder_interpolate_lsf.c', >++ 'do_plc.c', >++ 'encode.c', >++ 'energy_inverse.c', >++ 'enh_upsample.c', >++ 'enhancer.c', >++ 'enhancer_interface.c', >++ 'filtered_cb_vecs.c', >++ 'frame_classify.c', >++ 'gain_dequant.c', >++ 'gain_quant.c', >++ 'get_cd_vec.c', >++ 'get_lsp_poly.c', >++ 'get_sync_seq.c', >++ 'hp_input.c', >++ 'hp_output.c', >++ 'ilbc.c', >++ 'ilbc.h', >++ 'index_conv_dec.c', >++ 'index_conv_enc.c', >++ 'init_decode.c', >++ 'init_encode.c', >++ 'interpolate.c', >++ 'interpolate_samples.c', >++ 'lpc_encode.c', >++ 'lsf_check.c', >++ 'lsf_interpolate_to_poly_dec.c', >++ 'lsf_interpolate_to_poly_enc.c', >++ 'lsf_to_lsp.c', >++ 'lsf_to_poly.c', >++ 'lsp_to_lsf.c', >++ 'my_corr.c', >++ 'nearest_neighbor.c', >++ 'pack_bits.c', >++ 'poly_to_lsf.c', >++ 'poly_to_lsp.c', >++ 'refiner.c', >++ 'simple_interpolate_lsf.c', >++ 'simple_lpc_analysis.c', >++ 'simple_lsf_dequant.c', >++ 'simple_lsf_quant.c', >++ 'smooth.c', >++ 'smooth_out_data.c', >++ 'sort_sq.c', >++ 'split_vq.c', >++ 'state_construct.c', >++ 'state_search.c', >++ 'swap_bytes.c', >++ 'unpack_bits.c', >++ 'vq3.c', >++ 'vq4.c', >++ 'window32_w32.c', >++ 'xcorr_coef.c', >++ 'abs_quant.h', >++ 'abs_quant_loop.h', >++ 'augmented_cb_corr.h', >++ 'bw_expand.h', >++ 'cb_construct.h', >++ 'cb_mem_energy.h', >++ 'cb_mem_energy_augmentation.h', >++ 'cb_mem_energy_calc.h', >++ 'cb_search.h', >++ 'cb_search_core.h', >++ 'cb_update_best_index.h', >++ 'chebyshev.h', >++ 'comp_corr.h', >++ 'constants.h', >++ 'create_augmented_vec.h', >++ 'decode.h', >++ 'decode_residual.h', >++ 'decoder_interpolate_lsf.h', >++ 'do_plc.h', >++ 'encode.h', >++ 'energy_inverse.h', >++ 'enh_upsample.h', >++ 'enhancer.h', >++ 'enhancer_interface.h', >++ 'filtered_cb_vecs.h', >++ 'frame_classify.h', >++ 'gain_dequant.h', >++ 'gain_quant.h', >++ 'get_cd_vec.h', >++ 'get_lsp_poly.h', >++ 'get_sync_seq.h', >++ 'hp_input.h', >++ 'hp_output.h', >++ 'defines.h', >++ 'index_conv_dec.h', >++ 'index_conv_enc.h', >++ 'init_decode.h', >++ 'init_encode.h', >++ 'interpolate.h', >++ 'interpolate_samples.h', >++ 'lpc_encode.h', >++ 'lsf_check.h', >++ 'lsf_interpolate_to_poly_dec.h', >++ 'lsf_interpolate_to_poly_enc.h', >++ 'lsf_to_lsp.h', >++ 'lsf_to_poly.h', >++ 'lsp_to_lsf.h', >++ 'my_corr.h', >++ 'nearest_neighbor.h', >++ 'pack_bits.h', >++ 'poly_to_lsf.h', >++ 'poly_to_lsp.h', >++ 'refiner.h', >++ 'simple_interpolate_lsf.h', >++ 'simple_lpc_analysis.h', >++ 'simple_lsf_dequant.h', >++ 'simple_lsf_quant.h', >++ 'smooth.h', >++ 'smooth_out_data.h', >++ 'sort_sq.h', >++ 'split_vq.h', >++ 'state_construct.h', >++ 'state_search.h', >++ 'swap_bytes.h', >++ 'unpack_bits.h', >++ 'vq3.h', >++ 'vq4.h', >++ 'window32_w32.h', >++ 'xcorr_coef.h', >++ ], # sources >++ }, # ilbc >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/interfaces.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/interfaces.gypi >+new file mode 100644 >+index 000000000000..adcddcf9fee8 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/interfaces.gypi >+@@ -0,0 +1,39 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'audio_decoder_interface', >++ 'type': 'static_library', >++ 'sources': [ >++ 'audio_decoder.cc', >++ 'audio_decoder.h', >++ 'legacy_encoded_audio_frame.cc', >++ 'legacy_encoded_audio_frame.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ }, >++ >++ { >++ 'target_name': 'audio_encoder_interface', >++ 'type': 'static_library', >++ 'sources': [ >++ 'audio_encoder.cc', >++ 'audio_encoder.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac.gypi >+new file mode 100644 >+index 000000000000..55d7c3199513 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac.gypi >+@@ -0,0 +1,95 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'isac', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ 'audio_decoder_interface', >++ 'audio_encoder_interface', >++ 'isac_common', >++ ], >++ 'include_dirs': [ >++ 'main/include', >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'main/include', >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'main/include/audio_decoder_isac.h', >++ 'main/include/audio_encoder_isac.h', >++ 'main/include/isac.h', >++ 'main/source/arith_routines.c', >++ 'main/source/arith_routines_hist.c', >++ 'main/source/arith_routines_logist.c', >++ 'main/source/audio_decoder_isac.cc', >++ 'main/source/audio_encoder_isac.cc', >++ 'main/source/bandwidth_estimator.c', >++ 'main/source/crc.c', >++ 'main/source/decode.c', >++ 'main/source/decode_bwe.c', >++ 'main/source/encode.c', >++ 'main/source/encode_lpc_swb.c', >++ 'main/source/entropy_coding.c', >++ 'main/source/fft.c', >++ 'main/source/filter_functions.c', >++ 'main/source/filterbank_tables.c', >++ 'main/source/intialize.c', >++ 'main/source/isac.c', >++ 'main/source/isac_float_type.h', >++ 'main/source/filterbanks.c', >++ 'main/source/pitch_lag_tables.c', >++ 'main/source/lattice.c', >++ 'main/source/lpc_gain_swb_tables.c', >++ 'main/source/lpc_analysis.c', >++ 'main/source/lpc_shape_swb12_tables.c', >++ 'main/source/lpc_shape_swb16_tables.c', >++ 'main/source/lpc_tables.c', >++ 'main/source/pitch_estimator.c', >++ 'main/source/pitch_filter.c', >++ 'main/source/pitch_gain_tables.c', >++ 'main/source/spectrum_ar_model_tables.c', >++ 'main/source/transform.c', >++ 'main/source/arith_routines.h', >++ 'main/source/bandwidth_estimator.h', >++ 'main/source/codec.h', >++ 'main/source/crc.h', >++ 'main/source/encode_lpc_swb.h', >++ 'main/source/entropy_coding.h', >++ 'main/source/fft.h', >++ 'main/source/filterbank_tables.h', >++ 'main/source/lpc_gain_swb_tables.h', >++ 'main/source/lpc_analysis.h', >++ 'main/source/lpc_shape_swb12_tables.h', >++ 'main/source/lpc_shape_swb16_tables.h', >++ 'main/source/lpc_tables.h', >++ 'main/source/pitch_estimator.h', >++ 'main/source/pitch_gain_tables.h', >++ 'main/source/pitch_lag_tables.h', >++ 'main/source/settings.h', >++ 'main/source/spectrum_ar_model_tables.h', >++ 'main/source/structs.h', >++ 'main/source/os_specific_inline.h', >++ ], >++ 'conditions': [ >++ ['OS=="linux"', { >++ 'link_settings': { >++ 'libraries': ['-lm',], >++ }, >++ }], >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_common.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_common.gypi >+new file mode 100644 >+index 000000000000..135ecd27cc91 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_common.gypi >+@@ -0,0 +1,22 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'isac_common', >++ 'type': 'static_library', >++ 'sources': [ >++ 'audio_encoder_isac_t.h', >++ 'audio_encoder_isac_t_impl.h', >++ 'locked_bandwidth_info.cc', >++ 'locked_bandwidth_info.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_test.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_test.gypi >+new file mode 100644 >+index 000000000000..90d15d8fb3d3 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isac_test.gypi >+@@ -0,0 +1,83 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ # simple kenny >++ { >++ 'target_name': 'isac_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'isac', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ ], >++ 'include_dirs': [ >++ './main/include', >++ './main/test', >++ './main/util', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ 'empty.cc', # force build system to use C++ linker >++ './main/test/simpleKenny.c', >++ './main/util/utility.c', >++ ], >++ 'conditions': [ >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-format', >++ ], >++ }, >++ }, >++ }], >++ ], # conditions. >++ }, >++ # ReleaseTest-API >++ { >++ 'target_name': 'isac_api_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'isac', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ ], >++ 'include_dirs': [ >++ './main/test', >++ './main/include', >++ './main/util', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ './main/test/ReleaseTest-API/ReleaseTest-API.cc', >++ './main/util/utility.c', >++ ], >++ }, >++ # SwitchingSampRate >++ { >++ 'target_name': 'isac_switch_samprate_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'isac', >++ ], >++ 'include_dirs': [ >++ './main/test', >++ './main/include', >++ '../../../../common_audio/signal_processing/include', >++ './main/util', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ './main/test/SwitchingSampRate/SwitchingSampRate.cc', >++ './main/util/utility.c', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix.gypi >+new file mode 100644 >+index 000000000000..25c285c1afe1 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix.gypi >+@@ -0,0 +1,149 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'isac_fix', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ 'isac_common', >++ ], >++ 'include_dirs': [ >++ 'fix/include', >++ '<(webrtc_root)' >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'fix/include', >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'fix/include/audio_decoder_isacfix.h', >++ 'fix/include/audio_encoder_isacfix.h', >++ 'fix/include/isacfix.h', >++ 'fix/source/arith_routines.c', >++ 'fix/source/arith_routines_hist.c', >++ 'fix/source/arith_routines_logist.c', >++ 'fix/source/audio_decoder_isacfix.cc', >++ 'fix/source/audio_encoder_isacfix.cc', >++ 'fix/source/bandwidth_estimator.c', >++ 'fix/source/decode.c', >++ 'fix/source/decode_bwe.c', >++ 'fix/source/decode_plc.c', >++ 'fix/source/encode.c', >++ 'fix/source/entropy_coding.c', >++ 'fix/source/fft.c', >++ 'fix/source/filterbank_tables.c', >++ 'fix/source/filterbanks.c', >++ 'fix/source/filters.c', >++ 'fix/source/initialize.c', >++ 'fix/source/isac_fix_type.h', >++ 'fix/source/isacfix.c', >++ 'fix/source/lattice.c', >++ 'fix/source/lattice_c.c', >++ 'fix/source/lpc_masking_model.c', >++ 'fix/source/lpc_tables.c', >++ 'fix/source/pitch_estimator.c', >++ 'fix/source/pitch_estimator_c.c', >++ 'fix/source/pitch_filter.c', >++ 'fix/source/pitch_filter_c.c', >++ 'fix/source/pitch_gain_tables.c', >++ 'fix/source/pitch_lag_tables.c', >++ 'fix/source/spectrum_ar_model_tables.c', >++ 'fix/source/transform.c', >++ 'fix/source/transform_tables.c', >++ 'fix/source/arith_routins.h', >++ 'fix/source/bandwidth_estimator.h', >++ 'fix/source/codec.h', >++ 'fix/source/entropy_coding.h', >++ 'fix/source/fft.h', >++ 'fix/source/filterbank_tables.h', >++ 'fix/source/lpc_masking_model.h', >++ 'fix/source/lpc_tables.h', >++ 'fix/source/pitch_estimator.h', >++ 'fix/source/pitch_gain_tables.h', >++ 'fix/source/pitch_lag_tables.h', >++ 'fix/source/settings.h', >++ 'fix/source/spectrum_ar_model_tables.h', >++ 'fix/source/structs.h', >++ ], >++ 'conditions': [ >++ ['target_arch=="arm" and arm_version>=7', { >++ 'sources': [ >++ 'fix/source/lattice_armv7.S', >++ 'fix/source/pitch_filter_armv6.S', >++ ], >++ 'sources!': [ >++ 'fix/source/lattice_c.c', >++ 'fix/source/pitch_filter_c.c', >++ ], >++ }], >++ ['build_with_neon==1', { >++ 'dependencies': ['isac_neon', ], >++ }], >++ ['target_arch=="mipsel" and mips_arch_variant!="r6"', { >++ 'sources': [ >++ 'fix/source/entropy_coding_mips.c', >++ 'fix/source/filters_mips.c', >++ 'fix/source/lattice_mips.c', >++ 'fix/source/pitch_estimator_mips.c', >++ 'fix/source/transform_mips.c', >++ ], >++ 'sources!': [ >++ 'fix/source/lattice_c.c', >++ 'fix/source/pitch_estimator_c.c', >++ ], >++ 'conditions': [ >++ ['mips_dsp_rev>0', { >++ 'sources': [ >++ 'fix/source/filterbanks_mips.c', >++ ], >++ }], >++ ['mips_dsp_rev>1', { >++ 'sources': [ >++ 'fix/source/lpc_masking_model_mips.c', >++ 'fix/source/pitch_filter_mips.c', >++ ], >++ 'sources!': [ >++ 'fix/source/pitch_filter_c.c', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }, >++ ], >++ 'conditions': [ >++ ['build_with_neon==1', { >++ 'targets': [ >++ { >++ 'target_name': 'isac_neon', >++ 'type': 'static_library', >++ 'includes': ['../../../../build/arm_neon.gypi',], >++ 'dependencies': [ >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ ], >++ 'sources': [ >++ 'fix/source/entropy_coding_neon.c', >++ 'fix/source/filterbanks_neon.c', >++ 'fix/source/filters_neon.c', >++ 'fix/source/lattice_neon.c', >++ 'fix/source/transform_neon.c', >++ ], >++ }, >++ ], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix_test.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix_test.gypi >+new file mode 100644 >+index 000000000000..7d9bc995199d >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/isac/isacfix_test.gypi >+@@ -0,0 +1,35 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ # kenny >++ { >++ 'target_name': 'isac_fix_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'isac_fix', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ ], >++ 'include_dirs': [ >++ './fix/test', >++ './fix/include', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ './fix/test/kenny.cc', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, >++ ], >++} >++ >++# TODO(kma): Add bit-exact test for iSAC-fix. >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi >+new file mode 100644 >+index 000000000000..b2bffc1d1e9d >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/opus/opus.gypi >+@@ -0,0 +1,68 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'variables': { >++ 'opus_complexity%': 0, >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_opus', >++ 'type': 'static_library', >++ 'conditions': [ >++ ['build_opus==1', { >++ 'dependencies': [ >++ '<(opus_dir)/opus.gyp:opus' >++ ], >++ 'export_dependent_settings': [ >++ '<(opus_dir)/opus.gyp:opus', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ # need by Neteq audio classifier. >++ '<(opus_dir)/src/src', >++ '<(opus_dir)/src/celt', >++ ], >++ }, >++ }, { >++ 'conditions': [ >++ ['build_with_mozilla==1', { >++ # Mozilla provides its own build of the opus library. >++ 'include_dirs': [ >++ '/media/libopus/include', >++ '/media/libopus/src', >++ '/media/libopus/celt', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '/media/libopus/include', >++ '/media/libopus/src', >++ '/media/libopus/celt', >++ ], >++ }, >++ }], >++ ], >++ }], >++ ], >++ 'dependencies': [ >++ 'audio_encoder_interface', >++ ], >++ 'defines': [ >++ 'OPUS_COMPLEXITY=<(opus_complexity)' >++ ], >++ 'sources': [ >++ 'audio_decoder_opus.cc', >++ 'audio_decoder_opus.h', >++ 'audio_encoder_opus.cc', >++ 'audio_encoder_opus.h', >++ 'opus_inst.h', >++ 'opus_interface.c', >++ 'opus_interface.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.gypi >+new file mode 100644 >+index 000000000000..e6ffb16640fe >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/pcm16b/pcm16b.gypi >+@@ -0,0 +1,29 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'pcm16b', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_encoder_interface', >++ 'audio_decoder_interface', >++ 'g711', >++ ], >++ 'sources': [ >++ 'audio_decoder_pcm16b.cc', >++ 'audio_decoder_pcm16b.h', >++ 'audio_encoder_pcm16b.cc', >++ 'audio_encoder_pcm16b.h', >++ 'pcm16b.c', >++ 'pcm16b.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/codecs/red/red.gypi media/webrtc/trunk/webrtc/modules/audio_coding/codecs/red/red.gypi >+new file mode 100644 >+index 000000000000..667ac866c9c3 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/codecs/red/red.gypi >+@@ -0,0 +1,33 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'red', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_encoder_interface', >++ ], >++ 'include_dirs': [ >++ 'include', >++ '<(webrtc_root)', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ '<(webrtc_root)', >++ ], >++ }, >++ 'sources': [ >++ 'audio_encoder_copy_red.h', >++ 'audio_encoder_copy_red.cc', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi >+new file mode 100644 >+index 000000000000..c77ef5087d12 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq.gypi >+@@ -0,0 +1,130 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'variables': { >++ 'codecs': [ >++ 'cng', >++ 'g711', >++ 'pcm16b', >++ ], >++ 'neteq_defines': [], >++ 'conditions': [ >++ ['include_ilbc==1', { >++ 'codecs': ['ilbc',], >++ 'neteq_defines': ['WEBRTC_CODEC_ILBC',], >++ }], >++ ['include_opus==1', { >++ 'codecs': ['webrtc_opus',], >++ 'neteq_defines': ['WEBRTC_CODEC_OPUS',], >++ }], >++ ['include_g722==1', { >++ 'codecs': ['g722',], >++ 'neteq_defines': ['WEBRTC_CODEC_G722',], >++ }], >++ ['include_isac==1', { >++ 'codecs': ['isac', 'isac_fix',], >++ 'neteq_defines': ['WEBRTC_CODEC_ISAC', 'WEBRTC_CODEC_ISACFIX',], >++ }], >++ ], >++ 'neteq_dependencies': [ >++ '<@(codecs)', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ 'audio_decoder_interface', >++ ], >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'neteq', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<@(neteq_dependencies)', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ 'builtin_audio_decoder_factory', >++ 'rent_a_codec', >++ ], >++ 'defines': [ >++ '<@(neteq_defines)', >++ ], >++ 'sources': [ >++ 'include/neteq.h', >++ 'accelerate.cc', >++ 'accelerate.h', >++ 'audio_decoder_impl.cc', >++ 'audio_decoder_impl.h', >++ 'audio_multi_vector.cc', >++ 'audio_multi_vector.h', >++ 'audio_vector.cc', >++ 'audio_vector.h', >++ 'background_noise.cc', >++ 'background_noise.h', >++ 'buffer_level_filter.cc', >++ 'buffer_level_filter.h', >++ 'comfort_noise.cc', >++ 'comfort_noise.h', >++ 'cross_correlation.cc', >++ 'cross_correlation.h', >++ 'decision_logic.cc', >++ 'decision_logic.h', >++ 'decision_logic_fax.cc', >++ 'decision_logic_fax.h', >++ 'decision_logic_normal.cc', >++ 'decision_logic_normal.h', >++ 'decoder_database.cc', >++ 'decoder_database.h', >++ 'defines.h', >++ 'delay_manager.cc', >++ 'delay_manager.h', >++ 'delay_peak_detector.cc', >++ 'delay_peak_detector.h', >++ 'dsp_helper.cc', >++ 'dsp_helper.h', >++ 'dtmf_buffer.cc', >++ 'dtmf_buffer.h', >++ 'dtmf_tone_generator.cc', >++ 'dtmf_tone_generator.h', >++ 'expand.cc', >++ 'expand.h', >++ 'merge.cc', >++ 'merge.h', >++ 'nack_tracker.h', >++ 'nack_tracker.cc', >++ 'neteq_impl.cc', >++ 'neteq_impl.h', >++ 'neteq.cc', >++ 'statistics_calculator.cc', >++ 'statistics_calculator.h', >++ 'normal.cc', >++ 'normal.h', >++ 'packet.cc', >++ 'packet.h', >++ 'packet_buffer.cc', >++ 'packet_buffer.h', >++ 'red_payload_splitter.cc', >++ 'red_payload_splitter.h', >++ 'post_decode_vad.cc', >++ 'post_decode_vad.h', >++ 'preemptive_expand.cc', >++ 'preemptive_expand.h', >++ 'random_vector.cc', >++ 'random_vector.h', >++ 'rtcp.cc', >++ 'rtcp.h', >++ 'sync_buffer.cc', >++ 'sync_buffer.h', >++ 'tick_timer.cc', >++ 'tick_timer.h', >++ 'timestamp_scaler.cc', >++ 'timestamp_scaler.h', >++ 'time_stretch.cc', >++ 'time_stretch.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq_tests.gypi media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq_tests.gypi >+new file mode 100644 >+index 000000000000..b37eb5193022 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_coding/neteq/neteq_tests.gypi >+@@ -0,0 +1,312 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'conditions': [ >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { >++ 'target_name': 'neteq_rtpplay', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ 'neteq', >++ 'neteq_unittest_tools', >++ ], >++ 'sources': [ >++ 'tools/neteq_rtpplay.cc', >++ ], >++ 'defines': [ >++ ], >++ }, # neteq_rtpplay >++ ], >++ }], >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'RTPencode', >++ 'type': 'executable', >++ 'dependencies': [ >++ # TODO(hlundin): Make RTPencode use ACM to encode files. >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ 'cng', >++ 'g711', >++ 'g722', >++ 'ilbc', >++ 'isac', >++ 'neteq_test_tools', # Test helpers >++ 'pcm16b', >++ 'webrtc_opus', >++ ], >++ 'defines': [ >++ 'CODEC_ILBC', >++ 'CODEC_PCM16B', >++ 'CODEC_G711', >++ 'CODEC_G722', >++ 'CODEC_ISAC', >++ 'CODEC_PCM16B_WB', >++ 'CODEC_ISAC_SWB', >++ 'CODEC_PCM16B_32KHZ', >++ 'CODEC_PCM16B_48KHZ', >++ 'CODEC_CNGCODEC8', >++ 'CODEC_CNGCODEC16', >++ 'CODEC_CNGCODEC32', >++ 'CODEC_ATEVENT_DECODE', >++ 'CODEC_RED', >++ 'CODEC_OPUS', >++ ], >++ 'include_dirs': [ >++ 'include', >++ 'test', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ 'test/RTPencode.cc', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, >++ >++ { >++ 'target_name': 'RTPjitter', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ ], >++ 'sources': [ >++ 'test/RTPjitter.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'rtp_analyze', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ 'neteq_unittest_tools', >++ ], >++ 'sources': [ >++ 'tools/rtp_analyze.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'RTPchange', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ 'neteq_test_tools', >++ ], >++ 'sources': [ >++ 'test/RTPchange.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'RTPtimeshift', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ 'neteq_test_tools', >++ ], >++ 'sources': [ >++ 'test/RTPtimeshift.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'rtpcat', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/test/test.gyp:rtp_test_utils', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ ], >++ 'sources': [ >++ 'tools/rtpcat.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'audio_classifier_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'neteq', >++ 'webrtc_opus', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ ], >++ 'sources': [ >++ 'test/audio_classifier_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_test_support', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ 'neteq', >++ 'neteq_unittest_tools', >++ 'pcm16b', >++ ], >++ 'sources': [ >++ 'tools/neteq_external_decoder_test.cc', >++ 'tools/neteq_external_decoder_test.h', >++ 'tools/neteq_performance_test.cc', >++ 'tools/neteq_performance_test.h', >++ ], >++ }, # neteq_test_support >++ >++ { >++ 'target_name': 'neteq_quality_test_support', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ 'neteq', >++ 'neteq_unittest_tools', >++ ], >++ 'sources': [ >++ 'tools/neteq_quality_test.cc', >++ 'tools/neteq_quality_test.h', >++ ], >++ }, # neteq_test_support >++ >++ { >++ 'target_name': 'neteq_speed_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ 'neteq', >++ 'neteq_test_support', >++ ], >++ 'sources': [ >++ 'test/neteq_speed_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_opus_quality_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ 'neteq', >++ 'neteq_quality_test_support', >++ 'webrtc_opus', >++ ], >++ 'sources': [ >++ 'test/neteq_opus_quality_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_isac_quality_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ 'isac_fix', >++ 'neteq', >++ 'neteq_quality_test_support', >++ ], >++ 'sources': [ >++ 'test/neteq_isac_quality_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_pcmu_quality_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ 'g711', >++ 'neteq', >++ 'neteq_quality_test_support', >++ ], >++ 'sources': [ >++ 'test/neteq_pcmu_quality_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_ilbc_quality_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ 'neteq', >++ 'neteq_quality_test_support', >++ 'ilbc', >++ ], >++ 'sources': [ >++ 'test/neteq_ilbc_quality_test.cc', >++ ], >++ }, >++ >++ { >++ 'target_name': 'neteq_test_tools', >++ # Collection of useful functions used in other tests. >++ 'type': 'static_library', >++ 'variables': { >++ # Expects RTP packets without payloads when enabled. >++ 'neteq_dummy_rtp%': 0, >++ }, >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ 'cng', >++ 'g711', >++ 'g722', >++ 'ilbc', >++ 'isac', >++ 'pcm16b', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ 'test', >++ '<(webrtc_root)', >++ ], >++ }, >++ 'defines': [ >++ ], >++ 'include_dirs': [ >++ 'include', >++ 'test', >++ '<(webrtc_root)', >++ ], >++ 'sources': [ >++ 'test/NETEQTEST_DummyRTPpacket.cc', >++ 'test/NETEQTEST_DummyRTPpacket.h', >++ 'test/NETEQTEST_RTPpacket.cc', >++ 'test/NETEQTEST_RTPpacket.h', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi media/webrtc/trunk/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi >+new file mode 100644 >+index 000000000000..9d7179504c4d >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_conference_mixer/audio_conference_mixer.gypi >+@@ -0,0 +1,34 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'audio_conference_mixer', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_processing', >++ 'webrtc_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/audio_conference_mixer.h', >++ 'include/audio_conference_mixer_defines.h', >++ 'source/audio_frame_manipulator.cc', >++ 'source/audio_frame_manipulator.h', >++ 'source/memory_pool.h', >++ 'source/memory_pool_posix.h', >++ 'source/memory_pool_win.h', >++ 'source/audio_conference_mixer_impl.cc', >++ 'source/audio_conference_mixer_impl.h', >++ 'source/time_scheduler.cc', >++ 'source/time_scheduler.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_device/BUILD.gn media/webrtc/trunk/webrtc/modules/audio_device/BUILD.gn >+index 49430c62ed39..ab9406e13fb0 100644 >+--- media/webrtc/trunk/webrtc/modules/audio_device/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/audio_device/BUILD.gn >+@@ -81,13 +81,6 @@ rtc_static_library("audio_device") { >+ "include/audio_device_defines.h", >+ ] >+ >+- if (build_with_mozilla) { >+- sources += [ >+- "opensl/single_rw_fifo.cc", >+- "opensl/single_rw_fifo.h", >+- ] >+- } >+- >+ include_dirs = [] >+ if (is_linux) { >+ include_dirs += [ "linux" ] >+@@ -133,36 +126,26 @@ rtc_static_library("audio_device") { >+ "log", >+ "OpenSLES", >+ ] >+- >+- if (build_with_mozilla) { >+- include_dirs += [ >+- "/config/external/nspr", >+- "/nsprpub/lib/ds", >+- "/nsprpub/pr/include", >+- ] >+- } >+ } >+ if (rtc_use_dummy_audio_file_devices) { >+ defines += [ "WEBRTC_DUMMY_FILE_DEVICES" ] >+ } else { >+ if (is_linux) { >+ sources += [ >++ "linux/alsasymboltable_linux.cc", >++ "linux/alsasymboltable_linux.h", >++ "linux/audio_device_alsa_linux.cc", >++ "linux/audio_device_alsa_linux.h", >++ "linux/audio_mixer_manager_alsa_linux.cc", >++ "linux/audio_mixer_manager_alsa_linux.h", >+ "linux/latebindingsymboltable_linux.cc", >+ "linux/latebindingsymboltable_linux.h", >+ ] >+- libs = [ "dl" ] >+- if (!build_with_mozilla) { >+- sources += [ >+- "linux/alsasymboltable_linux.cc", >+- "linux/alsasymboltable_linux.h", >+- "linux/audio_device_alsa_linux.cc", >+- "linux/audio_device_alsa_linux.h", >+- "linux/audio_mixer_manager_alsa_linux.cc", >+- "linux/audio_mixer_manager_alsa_linux.h", >+- ] >+- defines += [ "LINUX_ALSA" ] >+- libs += [ "X11" ] >+- } >++ defines += [ "LINUX_ALSA" ] >++ libs = [ >++ "dl", >++ "X11", >++ ] >+ if (rtc_include_pulse_audio) { >+ sources += [ >+ "linux/audio_device_pulse_linux.cc", >+diff --git media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi >+new file mode 100644 >+index 000000000000..a0c4de18cdcf >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_device/audio_device.gypi >+@@ -0,0 +1,316 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'audio_device', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'webrtc_utility', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'include_dirs': [ >++ '.', >++ '../include', >++ 'include', >++ 'dummy', # Contains dummy audio device implementations. >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ '../include', >++ 'include', >++ ], >++ }, >++ # TODO(xians): Rename files to e.g. *_linux.{ext}, remove sources in conditions section >++ 'sources': [ >++ 'include/audio_device.h', >++ 'include/audio_device_defines.h', >++ 'audio_device_buffer.cc', >++ 'audio_device_buffer.h', >++ 'audio_device_generic.cc', >++ 'audio_device_generic.h', >++ 'audio_device_config.h', >++ 'dummy/audio_device_dummy.cc', >++ 'dummy/audio_device_dummy.h', >++ 'dummy/file_audio_device.cc', >++ 'dummy/file_audio_device.h', >++ 'fine_audio_buffer.cc', >++ 'fine_audio_buffer.h', >++ ], >++ 'conditions': [ >++ ['build_with_mozilla==1', { >++ 'cflags_mozilla': [ >++ '$(NSPR_CFLAGS)', >++ ], >++ }], >++ ['hardware_aec_ns==1', { >++ 'defines': [ >++ 'WEBRTC_HARDWARE_AEC_NS', >++ ], >++ }], >++ ['include_sndio_audio==1', { >++ 'include_dirs': [ >++ 'sndio', >++ ], >++ }], # include_sndio_audio==1 >++ ['OS=="linux" or include_alsa_audio==1 or include_pulse_audio==1', { >++ 'include_dirs': [ >++ 'linux', >++ ], >++ }], # OS=="linux" or include_alsa_audio==1 or include_pulse_audio==1 >++ ['OS=="ios"', { >++ 'include_dirs': [ >++ 'ios', >++ ], >++ }], # OS==ios >++ ['OS=="mac"', { >++ 'include_dirs': [ >++ 'mac', >++ ], >++ }], # OS==mac >++ ['OS=="win"', { >++ 'include_dirs': [ >++ 'win', >++ ], >++ }], >++ ['OS=="android"', { >++ 'include_dirs': [ >++ '/widget/android', >++ 'android', >++ ], >++ }], # OS==android >++ ['enable_android_opensl==1', { >++ 'include_dirs': [ >++ 'dom/media/systemservices', >++ 'opensl', >++ ], >++ }], # enable_android_opensl >++ ['include_internal_audio_device==0', { >++ 'defines': [ >++ 'WEBRTC_DUMMY_AUDIO_BUILD', >++ ], >++ }], >++ ['build_with_chromium==0', { >++ 'sources': [ >++ # Don't link these into Chrome since they contain static data. >++ 'dummy/file_audio_device_factory.cc', >++ 'dummy/file_audio_device_factory.h', >++ ], >++ }], >++ ['include_internal_audio_device==1', { >++ 'sources': [ >++ 'audio_device_impl.cc', >++ 'audio_device_impl.h', >++ # used externally for getUserMedia >++ 'opensl/single_rw_fifo.cc', >++ 'opensl/single_rw_fifo.h', >++ ], >++ 'conditions': [ >++ ['use_dummy_audio_file_devices==1', { >++ 'defines': [ >++ 'WEBRTC_DUMMY_FILE_DEVICES', >++ ], >++ }, { # use_dummy_audio_file_devices==0, so use a platform device. >++ 'conditions': [ >++ ['OS=="android"', { >++ 'sources': [ >++ 'android/audio_device_template.h', >++ 'android/audio_manager.cc', >++ 'android/audio_manager.h', >++ 'android/audio_record_jni.cc', >++ 'android/audio_record_jni.h', >++ 'android/audio_track_jni.cc', >++ 'android/audio_track_jni.h', >++ 'android/build_info.cc', >++ 'android/build_info.h', >++ 'android/opensles_common.cc', >++ 'android/opensles_common.h', >++ 'android/opensles_player.cc', >++ 'android/opensles_player.h', >++ 'android/opensles_recorder.cc', >++ 'android/opensles_recorder.h', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-llog', >++ '-lOpenSLES', >++ ], >++ }, >++ }], >++ ['OS=="linux"', { >++ 'link_settings': { >++ 'libraries': [ >++ '-ldl', >++ ], >++ }, >++ }], >++ ['include_sndio_audio==1', { >++ 'link_settings': { >++ 'libraries': [ >++ '-lsndio', >++ ], >++ }, >++ 'sources': [ >++ 'sndio/audio_device_sndio.cc', >++ 'sndio/audio_device_sndio.h', >++ ], >++ }], >++ ['include_alsa_audio==1', { >++ 'cflags_mozilla': [ >++ '$(MOZ_ALSA_CFLAGS)', >++ ], >++ 'defines': [ >++ 'LINUX_ALSA', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-lX11', >++ ], >++ }, >++ 'sources': [ >++ 'linux/alsasymboltable_linux.cc', >++ 'linux/alsasymboltable_linux.h', >++ 'linux/audio_device_alsa_linux.cc', >++ 'linux/audio_device_alsa_linux.h', >++ 'linux/audio_mixer_manager_alsa_linux.cc', >++ 'linux/audio_mixer_manager_alsa_linux.h', >++ 'linux/latebindingsymboltable_linux.cc', >++ 'linux/latebindingsymboltable_linux.h', >++ ], >++ }], >++ ['include_pulse_audio==1', { >++ 'cflags_mozilla': [ >++ '$(MOZ_PULSEAUDIO_CFLAGS)', >++ ], >++ 'defines': [ >++ 'LINUX_PULSE', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-lX11', >++ ], >++ }, >++ 'sources': [ >++ 'linux/audio_device_pulse_linux.cc', >++ 'linux/audio_device_pulse_linux.h', >++ 'linux/audio_mixer_manager_pulse_linux.cc', >++ 'linux/audio_mixer_manager_pulse_linux.h', >++ 'linux/latebindingsymboltable_linux.cc', >++ 'linux/latebindingsymboltable_linux.h', >++ 'linux/pulseaudiosymboltable_linux.cc', >++ 'linux/pulseaudiosymboltable_linux.h', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ 'mac/audio_device_mac.cc', >++ 'mac/audio_device_mac.h', >++ 'mac/audio_mixer_manager_mac.cc', >++ 'mac/audio_mixer_manager_mac.h', >++ 'mac/portaudio/pa_memorybarrier.h', >++ 'mac/portaudio/pa_ringbuffer.c', >++ 'mac/portaudio/pa_ringbuffer.h', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework', >++ '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework', >++ ], >++ }, >++ }], >++ ['OS=="ios"', { >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base', >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', >++ ], >++ 'export_dependent_settings': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', >++ ], >++ 'sources': [ >++ 'ios/audio_device_ios.h', >++ 'ios/audio_device_ios.mm', >++ 'ios/audio_device_not_implemented_ios.mm', >++ 'ios/audio_session_observer.h', >++ 'ios/objc/RTCAudioSession+Configuration.mm', >++ 'ios/objc/RTCAudioSession+Private.h', >++ 'ios/objc/RTCAudioSession.h', >++ 'ios/objc/RTCAudioSession.mm', >++ 'ios/objc/RTCAudioSessionConfiguration.h', >++ 'ios/objc/RTCAudioSessionConfiguration.m', >++ 'ios/objc/RTCAudioSessionDelegateAdapter.h', >++ 'ios/objc/RTCAudioSessionDelegateAdapter.mm', >++ 'ios/voice_processing_audio_unit.h', >++ 'ios/voice_processing_audio_unit.mm', >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework AudioToolbox', >++ '-framework AVFoundation', >++ '-framework Foundation', >++ '-framework UIKit', >++ ], >++ }, >++ }, >++ }], >++ ['OS=="win"', { >++ 'sources': [ >++ 'win/audio_device_core_win.cc', >++ 'win/audio_device_core_win.h', >++ 'win/audio_device_wave_win.cc', >++ 'win/audio_device_wave_win.h', >++ 'win/audio_mixer_manager_win.cc', >++ 'win/audio_mixer_manager_win.h', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ # Required for the built-in WASAPI AEC. >++ '-ldmoguids.lib', >++ '-lwmcodecdspuuid.lib', >++ '-lamstrmid.lib', >++ '-lmsdmo.lib', >++ ], >++ }, >++ }], >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-bool-conversion', >++ '-Wno-delete-non-virtual-dtor', >++ '-Wno-logical-op-parentheses', >++ '-Wno-microsoft-extra-qualification', >++ '-Wno-microsoft-goto', >++ '-Wno-missing-braces', >++ '-Wno-parentheses-equality', >++ '-Wno-reorder', >++ '-Wno-shift-overflow', >++ '-Wno-tautological-compare', >++ '-Wno-unused-private-field', >++ ], >++ }, >++ }, >++ }], >++ ], # conditions (for non-dummy devices) >++ }], # use_dummy_audio_file_devices check >++ ], # conditions >++ }], # include_internal_audio_device==1 >++ ], # conditions >++ }, >++ ], >++} >++ >+diff --git media/webrtc/trunk/webrtc/modules/audio_mixer/audio_mixer.gypi media/webrtc/trunk/webrtc/modules/audio_mixer/audio_mixer.gypi >+new file mode 100644 >+index 000000000000..570129019115 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_mixer/audio_mixer.gypi >+@@ -0,0 +1,33 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'audio_mixer', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_processing', >++ 'webrtc_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/voice_engine/voice_engine.gyp:level_indicator', >++ ], >++ 'sources': [ >++ 'audio_frame_manipulator.cc', >++ 'audio_frame_manipulator.h', >++ 'audio_mixer.h', >++ 'audio_mixer_impl.cc', >++ 'audio_mixer_impl.h', >++ 'default_output_rate_calculator.cc', >++ 'default_output_rate_calculator.h', >++ 'output_rate_calculator.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_processing/BUILD.gn media/webrtc/trunk/webrtc/modules/audio_processing/BUILD.gn >+index 2dcf155935bc..4178a08a761a 100644 >+--- media/webrtc/trunk/webrtc/modules/audio_processing/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/audio_processing/BUILD.gn >+@@ -7,9 +7,7 @@ >+ # be found in the AUTHORS file in the root of the source tree. >+ >+ import("//build/config/arm.gni") >+-if (!build_with_mozilla) { >+- import("//third_party/protobuf/proto_library.gni") >+-} >++import("//third_party/protobuf/proto_library.gni") >+ import("../../build/webrtc.gni") >+ >+ declare_args() { >+diff --git media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing.gypi media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing.gypi >+new file mode 100644 >+index 000000000000..17bf5622b806 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing.gypi >+@@ -0,0 +1,351 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../build/common.gypi', >++ ], >++ 'variables': { >++ 'shared_generated_dir': '<(SHARED_INTERMEDIATE_DIR)/audio_processing/asm_offsets', >++ 'apm_debug_dump%': 1, >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'audio_processing', >++ 'type': 'static_library', >++ 'variables': { >++ # Outputs some low-level debug files. >++ 'agc_debug_dump%': 0, >++ >++ # Disables the usual mode where we trust the reported system delay >++ # values the AEC receives. The corresponding define is set appropriately >++ # in the code, but it can be force-enabled here for testing. >++ 'aec_untrusted_delay_for_testing%': 0, >++ }, >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++# '<(webrtc_root)/modules/modules.gyp:isac', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'aec/aec_core.cc', >++ 'aec/aec_core.h', >++ 'aec/aec_core_optimized_methods.h', >++ 'aec/aec_resampler.cc', >++ 'aec/aec_resampler.h', >++ 'aec/echo_cancellation.cc', >++ 'aec/echo_cancellation.h', >++ 'aec3/aec3_constants.h', >++ 'aec3/block_framer.cc', >++ 'aec3/block_framer.h', >++ 'aec3/block_processor.cc', >++ 'aec3/block_processor.h', >++ 'aec3/cascaded_biquad_filter.cc', >++ 'aec3/cascaded_biquad_filter.h', >++ 'aec3/echo_canceller3.cc', >++ 'aec3/echo_canceller3.h', >++ 'aec3/frame_blocker.cc', >++ 'aec3/frame_blocker.h', >++ 'aecm/aecm_core.cc', >++ 'aecm/aecm_core.h', >++ 'aecm/echo_control_mobile.cc', >++ 'aecm/echo_control_mobile.h', >++ 'agc/agc.cc', >++ 'agc/agc.h', >++ 'agc/agc_manager_direct.cc', >++ 'agc/agc_manager_direct.h', >++ 'agc/gain_map_internal.h', >++ 'agc/legacy/analog_agc.c', >++ 'agc/legacy/analog_agc.h', >++ 'agc/legacy/digital_agc.c', >++ 'agc/legacy/digital_agc.h', >++ 'agc/legacy/gain_control.h', >++ 'agc/loudness_histogram.cc', >++ 'agc/loudness_histogram.h', >++ 'agc/legacy/gain_control.h', >++ 'agc/utility.cc', >++ 'agc/utility.h', >++ 'audio_buffer.cc', >++ 'audio_buffer.h', >++ 'audio_processing_impl.cc', >++ 'audio_processing_impl.h', >++ 'beamformer/array_util.cc', >++ 'beamformer/array_util.h', >++ 'beamformer/complex_matrix.h', >++ 'beamformer/covariance_matrix_generator.cc', >++ 'beamformer/covariance_matrix_generator.h', >++ 'beamformer/matrix.h', >++ 'beamformer/nonlinear_beamformer.cc', >++ 'beamformer/nonlinear_beamformer.h', >++ 'common.h', >++ 'echo_cancellation_impl.cc', >++ 'echo_cancellation_impl.h', >++ 'echo_control_mobile_impl.cc', >++ 'echo_control_mobile_impl.h', >++ 'echo_detector/circular_buffer.cc', >++ 'echo_detector/circular_buffer.h', >++ 'echo_detector/mean_variance_estimator.cc', >++ 'echo_detector/mean_variance_estimator.h', >++ 'echo_detector/moving_max.cc', >++ 'echo_detector/moving_max.h', >++ 'echo_detector/normalized_covariance_estimator.cc', >++ 'echo_detector/normalized_covariance_estimator.h', >++ 'gain_control_for_experimental_agc.cc', >++ 'gain_control_for_experimental_agc.h', >++ 'gain_control_impl.cc', >++ 'gain_control_impl.h', >++ 'include/audio_processing.cc', >++ 'include/audio_processing.h', >++ 'include/config.cc', >++ 'include/config.h', >++ 'level_controller/biquad_filter.cc', >++ 'level_controller/biquad_filter.h', >++ 'level_controller/down_sampler.cc', >++ 'level_controller/down_sampler.h', >++ 'level_controller/gain_applier.cc', >++ 'level_controller/gain_applier.h', >++ 'level_controller/gain_selector.cc', >++ 'level_controller/gain_selector.h', >++ 'level_controller/lc_constants.h', >++ 'level_controller/level_controller.cc', >++ 'level_controller/level_controller.h', >++ 'level_controller/noise_spectrum_estimator.cc', >++ 'level_controller/noise_spectrum_estimator.h', >++ 'level_controller/noise_level_estimator.cc', >++ 'level_controller/noise_level_estimator.h', >++ 'level_controller/peak_level_estimator.cc', >++ 'level_controller/peak_level_estimator.h', >++ 'level_controller/saturating_gain_estimator.cc', >++ 'level_controller/saturating_gain_estimator.h', >++ 'level_controller/signal_classifier.cc', >++ 'level_controller/signal_classifier.h', >++ 'level_estimator_impl.cc', >++ 'level_estimator_impl.h', >++ 'logging/apm_data_dumper.cc', >++ 'logging/apm_data_dumper.h', >++ 'low_cut_filter.cc', >++ 'low_cut_filter.h', >++ 'noise_suppression_impl.cc', >++ 'noise_suppression_impl.h', >++ 'render_queue_item_verifier.h', >++ 'residual_echo_detector.cc', >++ 'residual_echo_detector.h', >++ 'rms_level.cc', >++ 'rms_level.h', >++ 'splitting_filter.cc', >++ 'splitting_filter.h', >++ 'three_band_filter_bank.cc', >++ 'three_band_filter_bank.h', >++ 'transient/common.h', >++ 'transient/daubechies_8_wavelet_coeffs.h', >++ 'transient/dyadic_decimator.h', >++ 'transient/moving_moments.cc', >++ 'transient/moving_moments.h', >++ 'transient/transient_detector.cc', >++ 'transient/transient_detector.h', >++ 'transient/transient_suppressor.cc', >++ 'transient/transient_suppressor.h', >++ 'transient/wpd_node.cc', >++ 'transient/wpd_node.h', >++ 'transient/wpd_tree.cc', >++ 'transient/wpd_tree.h', >++ 'typing_detection.cc', >++ 'typing_detection.h', >++ 'utility/block_mean_calculator.cc', >++ 'utility/block_mean_calculator.h', >++ 'utility/delay_estimator.cc', >++ 'utility/delay_estimator.h', >++ 'utility/delay_estimator_internal.h', >++ 'utility/delay_estimator_wrapper.cc', >++ 'utility/delay_estimator_wrapper.h', >++ 'utility/ooura_fft.cc', >++ 'utility/ooura_fft.h', >++ 'utility/ooura_fft_tables_common.h', >++ 'vad/common.h', >++ 'vad/gmm.cc', >++ 'vad/gmm.h', >++ 'vad/noise_gmm_tables.h', >++ 'vad/pitch_based_vad.cc', >++ 'vad/pitch_based_vad.h', >++ 'vad/pitch_internal.cc', >++ 'vad/pitch_internal.h', >++ 'vad/pole_zero_filter.cc', >++ 'vad/pole_zero_filter.h', >++ 'vad/standalone_vad.cc', >++ 'vad/standalone_vad.h', >++ 'vad/vad_audio_proc.cc', >++ 'vad/vad_audio_proc.h', >++ 'vad/vad_audio_proc_internal.h', >++ 'vad/vad_circular_buffer.cc', >++ 'vad/vad_circular_buffer.h', >++ 'vad/voice_activity_detector.cc', >++ 'vad/voice_activity_detector.h', >++ 'vad/voice_gmm_tables.h', >++ 'voice_detection_impl.cc', >++ 'voice_detection_impl.h', >++ ], >++ 'conditions': [ >++ ['apm_debug_dump==1', { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=1',], >++ }, { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=0',], >++ }], >++ ['aec_untrusted_delay_for_testing==1', { >++ 'defines': ['WEBRTC_UNTRUSTED_DELAY',], >++ }], >++ ['agc_debug_dump==1', { >++ 'defines': ['WEBRTC_AGC_DEBUG_DUMP',], >++ }], >++ ['enable_protobuf==1', { >++ 'dependencies': ['audioproc_debug_proto'], >++ 'defines': ['WEBRTC_AUDIOPROC_DEBUG_DUMP'], >++ }], >++ ['enable_intelligibility_enhancer==1', { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=1',], >++ 'sources': [ >++ 'intelligibility/intelligibility_enhancer.cc', >++ 'intelligibility/intelligibility_enhancer.h', >++ 'intelligibility/intelligibility_utils.cc', >++ 'intelligibility/intelligibility_utils.h', >++ ], >++ }, { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=0',], >++ }], >++ ['prefer_fixed_point==1', { >++ 'defines': ['WEBRTC_NS_FIXED'], >++ 'sources': [ >++ 'ns/noise_suppression_x.h', >++ 'ns/noise_suppression_x.c', >++ 'ns/nsx_core.c', >++ 'ns/nsx_core.h', >++ 'ns/nsx_defines.h', >++ ], >++ 'conditions': [ >++ ['target_arch=="mipsel" and mips_arch_variant!="r6"', { >++ 'sources': [ >++ 'ns/nsx_core_mips.c', >++ ], >++ }, { >++ 'sources': [ >++ 'ns/nsx_core_c.c', >++ ], >++ }], >++ ], >++ }, { >++ 'defines': ['WEBRTC_NS_FLOAT'], >++ 'sources': [ >++ 'ns/defines.h', >++ 'ns/noise_suppression.h', >++ 'ns/noise_suppression.c', >++ 'ns/ns_core.c', >++ 'ns/ns_core.h', >++ 'ns/windows_private.h', >++ ], >++ }], >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'dependencies': ['audio_processing_sse2',], >++ }], >++ ['build_with_neon==1', { >++ 'dependencies': ['audio_processing_neon',], >++ }], >++ ['target_arch=="mipsel" and mips_arch_variant!="r6"', { >++ 'sources': [ >++ 'aecm/aecm_core_mips.cc', >++ ], >++ 'conditions': [ >++ ['mips_float_abi=="hard"', { >++ 'sources': [ >++ 'aec/aec_core_mips.cc', >++ 'aec/aec_rdft_mips.cc', >++ 'utility/ooura_fft_mips.cc', >++ ], >++ }], >++ ], >++ }, { >++ 'sources': [ >++ 'aecm/aecm_core_c.cc', >++ ], >++ }], >++ ], >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], >++ 'conditions': [ >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { >++ 'target_name': 'audioproc_debug_proto', >++ 'type': 'static_library', >++ 'sources': ['debug.proto',], >++ 'variables': { >++ 'proto_in_dir': '.', >++ # Workaround to protect against gyp's pathname relativization when >++ # this file is included by modules.gyp. >++ 'proto_out_protected': 'webrtc/modules/audio_processing', >++ 'proto_out_dir': '<(proto_out_protected)', >++ }, >++ 'includes': ['../../build/protoc.gypi',], >++ }, >++ ], >++ }], >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'targets': [ >++ { >++ 'target_name': 'audio_processing_sse2', >++ 'type': 'static_library', >++ 'sources': [ >++ 'aec/aec_core_sse2.cc', >++ 'utility/ooura_fft_sse2.cc', >++ 'utility/ooura_fft_tables_neon_sse2.h', >++ ], >++ 'conditions': [ >++ ['apm_debug_dump==1', { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=1',], >++ }, { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=0',], >++ }], >++ ['os_posix==1', { >++ 'cflags': [ '-msse2', ], >++ 'cflags_mozilla': [ '-msse2', ], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ '-msse2', ], >++ }, >++ }], >++ ], >++ }, >++ ], >++ }], >++ ['build_with_neon==1', { >++ 'targets': [{ >++ 'target_name': 'audio_processing_neon', >++ 'type': 'static_library', >++ 'includes': ['../../build/arm_neon.gypi',], >++ 'dependencies': [ >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ ], >++ 'sources': [ >++ 'aec/aec_core_neon.cc', >++ 'aecm/aecm_core_neon.cc', >++ 'ns/nsx_core_neon.c', >++ 'utility/ooura_fft_neon.cc', >++ ], >++ 'conditions': [ >++ ['apm_debug_dump==1', { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=1',], >++ }], >++ ['apm_debug_dump==0', { >++ 'defines': ['WEBRTC_APM_DEBUG_DUMP=0',], >++ }], >++ ], >++ }], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_tests.gypi media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_tests.gypi >+new file mode 100644 >+index 000000000000..d68fed3ff194 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/audio_processing/audio_processing_tests.gypi >+@@ -0,0 +1,166 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'audioproc_test_utils', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ ], >++ 'sources': [ >++ 'test/audio_buffer_tools.cc', >++ 'test/audio_buffer_tools.h', >++ 'test/test_utils.cc', >++ 'test/test_utils.h', >++ ], >++ }, >++ { >++ 'target_name': 'transient_suppression_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ '<(webrtc_root)/modules/modules.gyp:audio_processing', >++ ], >++ 'sources': [ >++ 'transient/transient_suppression_test.cc', >++ 'transient/file_utils.cc', >++ 'transient/file_utils.h', >++ ], >++ }, # transient_suppression_test >++ { >++ 'target_name': 'click_annotate', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:audio_processing', >++ ], >++ 'sources': [ >++ 'transient/click_annotate.cc', >++ 'transient/file_utils.cc', >++ 'transient/file_utils.h', >++ ], >++ }, # click_annotate >++ { >++ 'target_name': 'nonlinear_beamformer_test', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'audioproc_test_utils', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/modules/modules.gyp:audio_processing', >++ ], >++ 'sources': [ >++ 'beamformer/nonlinear_beamformer_test.cc', >++ ], >++ }, # nonlinear_beamformer_test >++ ], >++ 'conditions': [ >++ ['enable_intelligibility_enhancer==1', { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=1',], >++ 'targets': [ >++ { >++ 'target_name': 'intelligibility_proc', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'audioproc_test_utils', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/modules/modules.gyp:audio_processing', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ ], >++ 'sources': [ >++ 'intelligibility/test/intelligibility_proc.cc', >++ ], >++ }, >++ ], >++ }, { >++ 'defines': ['WEBRTC_INTELLIGIBILITY_ENHANCER=0',], >++ }], >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { >++ 'target_name': 'audioproc_unittest_proto', >++ 'type': 'static_library', >++ 'sources': [ 'test/unittest.proto', ], >++ 'variables': { >++ 'proto_in_dir': 'test', >++ # Workaround to protect against gyp's pathname relativization when >++ # this file is included by modules.gyp. >++ 'proto_out_protected': 'webrtc/modules/audio_processing', >++ 'proto_out_dir': '<(proto_out_protected)', >++ }, >++ 'includes': [ '../../build/protoc.gypi', ], >++ }, >++ { >++ 'target_name': 'audioproc_protobuf_utils', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audioproc_debug_proto', >++ ], >++ 'sources': [ >++ 'test/protobuf_utils.cc', >++ 'test/protobuf_utils.h', >++ ], >++ }, >++ { >++ 'target_name': 'audioproc', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'audio_processing', >++ 'audioproc_debug_proto', >++ 'audioproc_test_utils', >++ 'audioproc_protobuf_utils', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ ], >++ 'sources': [ 'test/process_test.cc', ], >++ }, >++ { >++ 'target_name': 'audioproc_f', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'audio_processing', >++ 'audioproc_debug_proto', >++ 'audioproc_test_utils', >++ 'audioproc_protobuf_utils', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ ], >++ 'sources': [ >++ 'test/audio_processing_simulator.cc', >++ 'test/audio_processing_simulator.h', >++ 'test/aec_dump_based_simulator.cc', >++ 'test/aec_dump_based_simulator.h', >++ 'test/wav_based_simulator.cc', >++ 'test/wav_based_simulator.h', >++ 'test/audioproc_float.cc', >++ ], >++ }, >++ { >++ 'target_name': 'unpack_aecdump', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'audioproc_debug_proto', >++ 'audioproc_test_utils', >++ 'audioproc_protobuf_utils', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ ], >++ 'sources': [ 'test/unpack.cc', ], >++ }, >++ ], >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/bitrate_controller/bitrate_controller.gypi media/webrtc/trunk/webrtc/modules/bitrate_controller/bitrate_controller.gypi >+new file mode 100644 >+index 000000000000..82121cdddf88 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/bitrate_controller/bitrate_controller.gypi >+@@ -0,0 +1,35 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'bitrate_controller', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'bitrate_controller_impl.cc', >++ 'bitrate_controller_impl.h', >++ 'include/bitrate_controller.h', >++ 'send_side_bandwidth_estimation.cc', >++ 'send_side_bandwidth_estimation.h', >++ ], >++ 'conditions': [ >++ ['enable_bwe_test_logging==1', { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=1' ], >++ }, { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0' ], >++ }], >++ ], >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/congestion_controller/BUILD.gn media/webrtc/trunk/webrtc/modules/congestion_controller/BUILD.gn >+index 34843a313177..16794a16fe93 100644 >+--- media/webrtc/trunk/webrtc/modules/congestion_controller/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/congestion_controller/BUILD.gn >+@@ -44,6 +44,7 @@ rtc_static_library("congestion_controller") { >+ >+ deps = [ >+ "../..:webrtc_common", >++ "../../base:rtc_base", >+ "../../base:rtc_base_approved", >+ "../../base:rtc_numerics", >+ "../../system_wrappers", >+@@ -53,10 +54,4 @@ rtc_static_library("congestion_controller") { >+ "../rtp_rtcp", >+ "../utility", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", >+- ] >+- } >+ } >+diff --git media/webrtc/trunk/webrtc/modules/congestion_controller/congestion_controller.gypi media/webrtc/trunk/webrtc/modules/congestion_controller/congestion_controller.gypi >+new file mode 100644 >+index 000000000000..83064eb7dc97 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/congestion_controller/congestion_controller.gypi >+@@ -0,0 +1,40 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'congestion_controller', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:bitrate_controller', >++ '<(webrtc_root)/modules/modules.gyp:paced_sender', >++ ], >++ 'sources': [ >++ 'congestion_controller.cc', >++ 'delay_based_bwe.cc', >++ 'delay_based_bwe.h', >++ 'include/congestion_controller.h', >++ 'median_slope_estimator.cc', >++ 'median_slope_estimator.h', >++ 'probe_bitrate_estimator.cc', >++ 'probe_bitrate_estimator.h', >++ 'probe_controller.cc', >++ 'probe_controller.h', >++ 'probing_interval_estimator.cc', >++ 'probing_interval_estimator.h', >++ 'transport_feedback_adapter.cc', >++ 'transport_feedback_adapter.h', >++ 'trendline_estimator.cc', >++ 'trendline_estimator.h', >++ ], >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn >+index ed12a1521eb0..4920611bec6d 100644 >+--- media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/desktop_capture/BUILD.gn >+@@ -28,13 +28,8 @@ rtc_static_library("primitives") { >+ >+ deps = [ >+ "../..:webrtc_common", >++ "../../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+- ] >+- } >+ } >+ >+ if (rtc_include_tests) { >+@@ -180,23 +175,6 @@ rtc_static_library("desktop_capture") { >+ "window_capturer_win.cc", >+ ] >+ >+- if (build_with_mozilla) { >+- defines = [ "MULTI_MONITOR_SCREENSHARE" ] >+- sources += [ >+- "desktop_device_info.cc", >+- "desktop_device_info.h", >+- "app_capturer_win.cc", >+- "win/desktop_device_info_win.cc", >+- "win/win_shared.cc", >+- ] >+- >+- if (is_mac) { >+- sources += [ >+- "app_capturer_mac.mm", >+- ] >+- } >+- } >+- >+ if (use_x11) { >+ sources += [ >+ "mouse_cursor_monitor_x11.cc", >+@@ -209,18 +187,6 @@ rtc_static_library("desktop_capture") { >+ "x11/x_server_pixel_buffer.cc", >+ "x11/x_server_pixel_buffer.h", >+ ] >+- >+- if (build_with_mozilla) { >+- sources += [ >+- "app_capturer_x11.cc", >+- "app_capturer_x11.h", >+- "x11/desktop_device_info_x11.cc", >+- "x11/desktop_device_info_x11.h", >+- "x11/shared_x_util.cc", >+- "x11/shared_x_util.h", >+- ] >+- } >+- >+ configs += [ "//build/config/linux:x11" ] >+ } >+ >+@@ -238,12 +204,6 @@ rtc_static_library("desktop_capture") { >+ "IOKit.framework", >+ "OpenGL.framework", >+ ] >+- >+- if (build_with_mozilla) { >+- sources += [ >+- "mac/desktop_device_info_mac.mm", >+- ] >+- } >+ } >+ >+ if (is_win) { >+@@ -256,28 +216,14 @@ rtc_static_library("desktop_capture") { >+ deps = [ >+ ":primitives", >+ "../..:webrtc_common", >++ "../../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+ "../../system_wrappers", >++ "//third_party/libyuv", >+ ] >+ >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", # TODO(kjellander): Cleanup in bugs.webrtc.org/3806. >+- ] >+- } >+- >+- if (rtc_build_libyuv) { >+- deps += [ "$rtc_libyuv_dir" ] >+- } else { >+- include_dirs = [ "$rtc_libyuv_dir/include" ] >+- } >+- >+ if (use_desktop_capture_differ_sse2) { >+ deps += [ ":desktop_capture_differ_sse2" ] >+ } >+- >+- if (build_with_mozilla) { >+- deps += ["../../base:rtc_base_approved"] >+- } >+ } >+ >+ if (use_desktop_capture_differ_sse2) { >+diff --git media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture.gypi media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture.gypi >+new file mode 100644 >+index 000000000000..c7d6212ba3a9 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/desktop_capture/desktop_capture.gypi >+@@ -0,0 +1,300 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'variables': { >++ 'multi_monitor_screenshare%' : 1, >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'primitives', >++ 'type': 'static_library', >++ 'sources': [ >++ 'desktop_capture_types.h', >++ 'desktop_frame.cc', >++ 'desktop_frame.h', >++ 'desktop_geometry.cc', >++ 'desktop_geometry.h', >++ 'desktop_region.cc', >++ 'desktop_region.h', >++ ], >++ }, >++ { >++ 'target_name': 'desktop_capture', >++ 'type': 'static_library', >++ 'dependencies': [ >++ ':primitives', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ ], >++ 'include_dirs': [ >++ '../../../../../libyuv/libyuv/include/', >++ ], >++ 'sources': [ >++ 'cropped_desktop_frame.cc', >++ 'cropped_desktop_frame.h', >++ 'cropping_window_capturer.cc', >++ 'cropping_window_capturer.h', >++ 'cropping_window_capturer_win.cc', >++ 'desktop_and_cursor_composer.cc', >++ 'desktop_and_cursor_composer.h', >++ 'desktop_capture_options.h', >++ 'desktop_capture_options.cc', >++ 'desktop_capturer.h', >++ 'desktop_capturer_differ_wrapper.cc', >++ 'desktop_capturer_differ_wrapper.h', >++ 'desktop_frame_rotation.cc', >++ 'desktop_frame_rotation.h', >++# 'desktop_frame_win.cc', >++# 'desktop_frame_win.h', >++ 'differ_block.cc', >++ 'differ_block.h', >++# 'mac/desktop_configuration.h', >++# 'mac/desktop_configuration.mm', >++# 'mac/desktop_configuration_monitor.h', >++# 'mac/desktop_configuration_monitor.cc', >++# 'mac/full_screen_chrome_window_detector.cc', >++# 'mac/full_screen_chrome_window_detector.h', >++# 'mac/scoped_pixel_buffer_object.cc', >++# 'mac/scoped_pixel_buffer_object.h', >++# 'mac/window_list_utils.cc', >++# 'mac/window_list_utils.h', >++ 'mouse_cursor.cc', >++ 'mouse_cursor.h', >++ 'mouse_cursor_monitor.h', >++# 'mouse_cursor_monitor_mac.mm', >++# 'mouse_cursor_monitor_win.cc', >++ 'screen_capture_frame_queue.h', >++ 'screen_capturer.h', >++ 'screen_capturer_helper.cc', >++ 'screen_capturer_helper.h', >++# 'screen_capturer_mac.mm', >++# 'screen_capturer_win.cc', >++ 'shared_desktop_frame.cc', >++ 'shared_desktop_frame.h', >++ 'shared_memory.cc', >++ 'shared_memory.h', >++# 'win/cursor.cc', >++# 'win/cursor.h', >++# 'win/d3d_device.cc', >++# 'win/d3d_device.h', >++# 'win/desktop.cc', >++# 'win/desktop.h', >++# 'win/dxgi_adapter_duplicator.cc', >++# 'win/dxgi_adapter_duplicator.h', >++# 'win/dxgi_duplicator_controller.cc', >++# 'win/dxgi_duplicator_controller.h', >++# 'win/dxgi_output_duplicator.cc', >++# 'win/dxgi_output_duplicator.h', >++# 'win/dxgi_texture.cc', >++# 'win/dxgi_texture.h', >++# 'win/dxgi_texture_mapping.cc', >++# 'win/dxgi_texture_mapping.h', >++# 'win/dxgi_texture_staging.cc', >++# 'win/dxgi_texture_staging.h', >++# 'win/scoped_gdi_object.h', >++# 'win/scoped_thread_desktop.cc', >++# 'win/scoped_thread_desktop.h', >++# 'win/screen_capture_utils.cc', >++# 'win/screen_capture_utils.h', >++# 'win/screen_capturer_win_directx.cc', >++# 'win/screen_capturer_win_directx.h', >++# 'win/screen_capturer_win_gdi.cc', >++# 'win/screen_capturer_win_gdi.h', >++# 'win/screen_capturer_win_magnifier.cc', >++# 'win/screen_capturer_win_magnifier.h', >++# 'win/window_capture_utils.cc', >++# 'win/window_capture_utils.h', >++ 'window_capturer.h', >++# 'window_capturer_mac.mm', >++# 'window_capturer_win.cc', >++ "desktop_capturer.h", >++ "desktop_capturer.cc", >++ "desktop_device_info.h", >++ "desktop_device_info.cc", >++# "app_capturer.h", >++# "app_capturer.cc", >++ ], >++ 'conditions': [ >++ ['OS!="android"', { >++ 'sources': [ >++ '../../video_engine/desktop_capture_impl.cc', >++ '../../video_engine/desktop_capture_impl.h', >++ ], >++ }], >++ ['multi_monitor_screenshare != 0', { >++ 'defines': [ >++ 'MULTI_MONITOR_SCREENSHARE' >++ ], >++ }], >++ ['OS!="ios" and (target_arch=="ia32" or target_arch=="x64")', { >++ 'dependencies': [ >++ 'desktop_capture_differ_sse2', >++ ], >++ }], >++ ['use_x11==1', { >++ 'defines':[ >++ 'USE_X11', >++ ], >++ 'sources': [ >++ 'mouse_cursor_monitor_x11.cc', >++ 'screen_capturer_x11.cc', >++ 'window_capturer_x11.cc', >++ "x11/shared_x_util.h", >++ "x11/shared_x_util.cc", >++ 'x11/shared_x_display.h', >++ 'x11/shared_x_display.cc', >++ 'x11/x_error_trap.cc', >++ 'x11/x_error_trap.h', >++ 'x11/x_server_pixel_buffer.cc', >++ 'x11/x_server_pixel_buffer.h', >++ 'x11/desktop_device_info_x11.h', >++ 'x11/desktop_device_info_x11.cc', >++ 'app_capturer_x11.cc', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-lX11', >++ '-lXcomposite', >++ '-lXdamage', >++ '-lXext', >++ '-lXfixes', >++ '-lXrender', >++ ], >++ }, >++ }], >++ ['OS!="win" and OS!="mac" and use_x11==0', { >++ 'sources': [ >++ "app_capturer_null.cc", >++ "desktop_device_info_null.cc", >++ 'mouse_cursor_monitor_null.cc', >++ 'screen_capturer_null.cc', >++ 'window_capturer_null.cc', >++ ], >++ }], >++ ['OS!="ios" ', { >++ 'sources': [ >++ 'differ_block.cc', >++ 'differ_block.h', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ "mac/desktop_configuration.h", >++ "mac/desktop_configuration.mm", >++ "mac/desktop_configuration_monitor.h", >++ "mac/desktop_configuration_monitor.cc", >++ "mac/full_screen_chrome_window_detector.cc", >++ "mac/full_screen_chrome_window_detector.h", >++ "mac/window_list_utils.cc", >++ "mac/window_list_utils.h", >++ "mac/scoped_pixel_buffer_object.cc", >++ "mac/scoped_pixel_buffer_object.h", >++ "mac/desktop_device_info_mac.h", >++ "mac/desktop_device_info_mac.mm", >++ "mouse_cursor_monitor_mac.mm", >++ "screen_capturer_mac.mm", >++ "window_capturer_mac.mm", >++ "app_capturer_mac.mm", >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '$(SDKROOT)/System/Library/Frameworks/AppKit.framework', >++ '$(SDKROOT)/System/Library/Frameworks/IOKit.framework', >++ '$(SDKROOT)/System/Library/Frameworks/OpenGL.framework', >++ ], >++ }, >++ }], >++ ['OS=="win"', { >++ 'sources': [ >++ "desktop_frame_win.cc", >++ "desktop_frame_win.h", >++ "mouse_cursor_monitor_win.cc", >++ "screen_capturer_win.cc", >++ "win/cursor.cc", >++ "win/cursor.h", >++# 'win/d3d_device.cc', >++# 'win/d3d_device.h', >++ "win/desktop.cc", >++ "win/desktop.h", >++# 'win/dxgi_adapter_duplicator.cc', >++# 'win/dxgi_adapter_duplicator.h', >++# 'win/dxgi_duplicator_controller.cc', >++# 'win/dxgi_duplicator_controller.h', >++# 'win/dxgi_output_duplicator.cc', >++# 'win/dxgi_output_duplicator.h', >++# 'win/dxgi_texture.cc', >++# 'win/dxgi_texture.h', >++# 'win/dxgi_texture_mapping.cc', >++# 'win/dxgi_texture_mapping.h', >++# 'win/dxgi_texture_staging.cc', >++# 'win/dxgi_texture_staging.h', >++ "win/scoped_gdi_object.h", >++ "win/scoped_thread_desktop.cc", >++ "win/scoped_thread_desktop.h", >++ "win/win_shared.h", >++ "win/win_shared.cc", >++ "win/desktop_device_info_win.h", >++ "win/desktop_device_info_win.cc", >++# "win/screen_capturer_win_directx.cc", >++# "win/screen_capturer_win_directx.h", >++ "win/screen_capturer_win_gdi.cc", >++ "win/screen_capturer_win_gdi.h", >++ "win/screen_capturer_win_magnifier.cc", >++ "win/screen_capturer_win_magnifier.h", >++ "win/screen_capture_utils.cc", >++ "win/screen_capture_utils.h", >++ "win/window_capture_utils.cc", >++ "win/window_capture_utils.h", >++ "window_capturer_win.cc", >++ "app_capturer_win.cc", >++ ], >++ }], >++ ], >++ 'all_dependent_settings': { >++ 'conditions': [ >++ ['OS=="win"', { >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'AdditionalDependencies': [ >++ 'd3d11.lib', >++ 'dxgi.lib', >++ ], >++ }, >++ }, >++ }], >++ ], >++ }, >++ }, >++ ], # targets >++ 'conditions': [ >++ ['OS!="ios" and (target_arch=="ia32" or target_arch=="x64")', { >++ 'targets': [ >++ { >++ # Have to be compiled as a separate target because it needs to be >++ # compiled with SSE2 enabled. >++ 'target_name': 'desktop_capture_differ_sse2', >++ 'type': 'static_library', >++ 'sources': [ >++ 'differ_vector_sse2.cc', >++ 'differ_vector_sse2.h', >++ ], >++ 'conditions': [ >++ ['os_posix==1', { >++ 'cflags': [ '-msse2', ], >++ 'cflags_mozilla': [ '-msse2', ], >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ '-msse2', ], >++ }, >++ }], >++ ], >++ }, >++ ], # targets >++ }], >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/desktop_capture/win/cursor.cc media/webrtc/trunk/webrtc/modules/desktop_capture/win/cursor.cc >+index f27bbaf3eb77..304d5960d5ed 100644 >+--- media/webrtc/trunk/webrtc/modules/desktop_capture/win/cursor.cc >++++ media/webrtc/trunk/webrtc/modules/desktop_capture/win/cursor.cc >+@@ -42,6 +42,8 @@ namespace { >+ >+ #endif // !defined(WEBRTC_ARCH_LITTLE_ENDIAN) >+ >++const int kBytesPerPixel = DesktopFrame::kBytesPerPixel; >++ >+ // Pixel colors used when generating cursor outlines. >+ const uint32_t kPixelRgbaBlack = RGBA(0, 0, 0, 0xff); >+ const uint32_t kPixelRgbaWhite = RGBA(0xff, 0xff, 0xff, 0xff); >+@@ -74,7 +76,7 @@ void AddCursorOutline(int width, int height, uint32_t* data) { >+ // Premultiplies RGB components of the pixel data in the given image by >+ // the corresponding alpha components. >+ void AlphaMul(uint32_t* data, int width, int height) { >+- static_assert(sizeof(uint32_t) == DesktopFrame::kBytesPerPixel, >++ static_assert(sizeof(uint32_t) == kBytesPerPixel, >+ "size of uint32 should be the number of bytes per pixel"); >+ >+ for (uint32_t* data_end = data + width * height; data != data_end; ++data) { >+@@ -142,7 +144,7 @@ MouseCursor* CreateMouseCursorFromHCursor(HDC dc, HCURSOR cursor) { >+ bmi.bV5Width = width; >+ bmi.bV5Height = -height; // request a top-down bitmap. >+ bmi.bV5Planes = 1; >+- bmi.bV5BitCount = DesktopFrame::kBytesPerPixel * 8; >++ bmi.bV5BitCount = kBytesPerPixel * 8; >+ bmi.bV5Compression = BI_RGB; >+ bmi.bV5AlphaMask = 0xff000000; >+ bmi.bV5CSType = LCS_WINDOWS_COLOR_SPACE; >+diff --git media/webrtc/trunk/webrtc/modules/media_file/media_file.gypi media/webrtc/trunk/webrtc/modules/media_file/media_file.gypi >+new file mode 100644 >+index 000000000000..94a99a22f1e2 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/media_file/media_file.gypi >+@@ -0,0 +1,31 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'media_file', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ ], >++ 'sources': [ >++ 'media_file.h', >++ 'media_file_defines.h', >++ 'media_file_impl.cc', >++ 'media_file_impl.h', >++ 'media_file_utility.cc', >++ 'media_file_utility.h', >++ ], # source >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/modules.gyp media/webrtc/trunk/webrtc/modules/modules.gyp >+new file mode 100644 >+index 000000000000..3037b5604edc >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/modules.gyp >+@@ -0,0 +1,31 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ 'audio_coding/audio_coding.gypi', >++ 'audio_conference_mixer/audio_conference_mixer.gypi', >++ 'audio_device/audio_device.gypi', >++ 'audio_mixer/audio_mixer.gypi', >++ 'audio_processing/audio_processing.gypi', >++ 'bitrate_controller/bitrate_controller.gypi', >++ 'congestion_controller/congestion_controller.gypi', >++ 'desktop_capture/desktop_capture.gypi', >++ 'media_file/media_file.gypi', >++ 'pacing/pacing.gypi', >++ 'remote_bitrate_estimator/remote_bitrate_estimator.gypi', >++ 'rtp_rtcp/rtp_rtcp.gypi', >++ 'utility/utility.gypi', >++ 'video_coding/codecs/h264/h264.gypi', >++ 'video_coding/codecs/i420/i420.gypi', >++ 'video_coding/video_coding.gypi', >++ 'video_capture/video_capture.gypi', >++ 'video_processing/video_processing.gypi', >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/pacing/pacing.gypi media/webrtc/trunk/webrtc/modules/pacing/pacing.gypi >+new file mode 100644 >+index 000000000000..d74f9cae0a7e >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/pacing/pacing.gypi >+@@ -0,0 +1,30 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'paced_sender', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/modules/modules.gyp:bitrate_controller', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ ], >++ 'sources': [ >++ 'alr_detector.cc', >++ 'bitrate_prober.cc', >++ 'bitrate_prober.h', >++ 'paced_sender.cc', >++ 'paced_sender.h', >++ 'packet_router.cc', >++ 'packet_router.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/BUILD.gn media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/BUILD.gn >+index cdd8db2bf608..7ddb0bb1e89f 100644 >+--- media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/BUILD.gn >+@@ -51,15 +51,10 @@ rtc_static_library("remote_bitrate_estimator") { >+ >+ deps = [ >+ "../..:webrtc_common", >++ "../../base:rtc_base", >+ "../../base:rtc_base_approved", >+ "../../system_wrappers", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", >+- ] >+- } >+ } >+ >+ if (rtc_include_tests) { >+@@ -116,6 +111,7 @@ if (rtc_include_tests) { >+ ":remote_bitrate_estimator", >+ "../..:webrtc_common", >+ "../../base:gtest_prod", >++ "../../base:rtc_base", >+ "../../base:rtc_base_approved", >+ "../../system_wrappers", >+ "../../test:test_support", >+@@ -127,12 +123,6 @@ if (rtc_include_tests) { >+ "//testing/gmock", >+ "//testing/gtest", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", >+- ] >+- } >+ } >+ >+ rtc_source_set("remote_bitrate_estimator_perf_tests") { >+diff --git media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi >+new file mode 100644 >+index 000000000000..a5b0ab86bf30 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator.gypi >+@@ -0,0 +1,118 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'remote_bitrate_estimator', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/bwe_defines.h', >++ 'include/remote_bitrate_estimator.h', >++ 'include/send_time_history.h', >++ 'aimd_rate_control.cc', >++ 'aimd_rate_control.h', >++ 'bwe_defines.cc', >++ 'inter_arrival.cc', >++ 'inter_arrival.h', >++ 'overuse_detector.cc', >++ 'overuse_detector.h', >++ 'overuse_estimator.cc', >++ 'overuse_estimator.h', >++ 'remote_bitrate_estimator_abs_send_time.cc', >++ 'remote_bitrate_estimator_abs_send_time.h', >++ 'remote_bitrate_estimator_single_stream.cc', >++ 'remote_bitrate_estimator_single_stream.h', >++ 'remote_estimator_proxy.cc', >++ 'remote_estimator_proxy.h', >++ 'send_time_history.cc', >++ 'test/bwe_test_logging.h', >++ ], # source >++ 'conditions': [ >++ ['enable_bwe_test_logging==1', { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=1' ], >++ 'sources': [ >++ 'test/bwe_test_logging.cc' >++ ], >++ }, { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0' ], >++ }], >++ ], >++ }, >++ ], # targets >++ 'conditions': [ >++ ['include_tests==1', { >++ 'targets': [ >++ { >++ 'target_name': 'bwe_tools_util', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ 'rtp_rtcp', >++ ], >++ 'sources': [ >++ 'tools/bwe_rtp.cc', >++ 'tools/bwe_rtp.h', >++ ], >++ }, >++ { >++ 'target_name': 'bwe_rtp_to_text', >++ 'type': 'executable', >++ 'includes': [ >++ '../rtp_rtcp/rtp_rtcp.gypi', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:rtp_test_utils', >++ 'bwe_tools_util', >++ 'rtp_rtcp', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ ], >++ }, >++ 'sources': [ >++ 'tools/rtp_to_text.cc', >++ ], # source >++ }, >++ { >++ 'target_name': 'bwe_rtp_play', >++ 'type': 'executable', >++ 'includes': [ >++ '../rtp_rtcp/rtp_rtcp.gypi', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:rtp_test_utils', >++ 'bwe_tools_util', >++ 'rtp_rtcp', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'include', >++ ], >++ }, >++ 'sources': [ >++ 'tools/bwe_rtp_play.cc', >++ ], # source >++ }, >++ ], >++ }], # include_tests==1 >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/rtp_rtcp/rtp_rtcp.gypi media/webrtc/trunk/webrtc/modules/rtp_rtcp/rtp_rtcp.gypi >+new file mode 100644 >+index 000000000000..6e3ebca9bc8f >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/rtp_rtcp/rtp_rtcp.gypi >+@@ -0,0 +1,192 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'rtp_rtcp', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/modules/modules.gyp:remote_bitrate_estimator', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ # Common >++ 'include/fec_receiver.h', >++ 'include/flexfec_receiver.h', >++ 'include/flexfec_sender.h', >++ 'include/receive_statistics.h', >++ 'include/remote_ntp_time_estimator.h', >++ 'include/rtp_audio_level_observer.h', >++ 'include/rtp_header_parser.h', >++ 'include/rtp_payload_registry.h', >++ 'include/rtp_receiver.h', >++ 'include/rtp_rtcp.h', >++ 'include/rtp_rtcp_defines.h', >++ 'source/byte_io.h', >++ 'source/fec_private_tables_bursty.h', >++ 'source/fec_private_tables_random.h', >++ 'source/flexfec_header_reader_writer.cc', >++ 'source/flexfec_header_reader_writer.h', >++ 'source/flexfec_receiver.cc', >++ 'source/flexfec_sender.cc', >++ 'source/packet_loss_stats.cc', >++ 'source/packet_loss_stats.h', >++ 'source/playout_delay_oracle.cc', >++ 'source/playout_delay_oracle.h', >++ 'source/receive_statistics_impl.cc', >++ 'source/receive_statistics_impl.h', >++ 'source/remote_ntp_time_estimator.cc', >++ 'source/rtcp_packet.cc', >++ 'source/rtcp_packet.h', >++ 'source/rtcp_packet/app.cc', >++ 'source/rtcp_packet/app.h', >++ 'source/rtcp_packet/bye.cc', >++ 'source/rtcp_packet/bye.h', >++ 'source/rtcp_packet/common_header.cc', >++ 'source/rtcp_packet/common_header.h', >++ 'source/rtcp_packet/compound_packet.cc', >++ 'source/rtcp_packet/compound_packet.h', >++ 'source/rtcp_packet/dlrr.cc', >++ 'source/rtcp_packet/dlrr.h', >++ 'source/rtcp_packet/extended_jitter_report.cc', >++ 'source/rtcp_packet/extended_jitter_report.h', >++ 'source/rtcp_packet/extended_reports.cc', >++ 'source/rtcp_packet/extended_reports.h', >++ 'source/rtcp_packet/fir.cc', >++ 'source/rtcp_packet/fir.h', >++ 'source/rtcp_packet/nack.cc', >++ 'source/rtcp_packet/nack.h', >++ 'source/rtcp_packet/pli.cc', >++ 'source/rtcp_packet/pli.h', >++ 'source/rtcp_packet/psfb.cc', >++ 'source/rtcp_packet/psfb.h', >++ 'source/rtcp_packet/rapid_resync_request.cc', >++ 'source/rtcp_packet/rapid_resync_request.h', >++ 'source/rtcp_packet/receiver_report.cc', >++ 'source/rtcp_packet/receiver_report.h', >++ 'source/rtcp_packet/remb.cc', >++ 'source/rtcp_packet/remb.h', >++ 'source/rtcp_packet/report_block.cc', >++ 'source/rtcp_packet/report_block.h', >++ 'source/rtcp_packet/rpsi.cc', >++ 'source/rtcp_packet/rpsi.h', >++ 'source/rtcp_packet/rrtr.cc', >++ 'source/rtcp_packet/rrtr.h', >++ 'source/rtcp_packet/rtpfb.cc', >++ 'source/rtcp_packet/rtpfb.h', >++ 'source/rtcp_packet/sdes.cc', >++ 'source/rtcp_packet/sdes.h', >++ 'source/rtcp_packet/sender_report.cc', >++ 'source/rtcp_packet/sender_report.h', >++ 'source/rtcp_packet/sli.cc', >++ 'source/rtcp_packet/sli.h', >++ 'source/rtcp_packet/target_bitrate.cc', >++ 'source/rtcp_packet/target_bitrate.h', >++ 'source/rtcp_packet/tmmb_item.cc', >++ 'source/rtcp_packet/tmmb_item.h', >++ 'source/rtcp_packet/tmmbn.cc', >++ 'source/rtcp_packet/tmmbn.h', >++ 'source/rtcp_packet/tmmbr.cc', >++ 'source/rtcp_packet/tmmbr.h', >++ 'source/rtcp_packet/transport_feedback.cc', >++ 'source/rtcp_packet/transport_feedback.h', >++ 'source/rtcp_packet/voip_metric.cc', >++ 'source/rtcp_packet/voip_metric.h', >++ 'source/rtcp_receiver.cc', >++ 'source/rtcp_receiver.h', >++ 'source/rtcp_sender.cc', >++ 'source/rtcp_sender.h', >++ 'source/rtcp_utility.cc', >++ 'source/rtcp_utility.h', >++ 'source/rtp_header_extension.cc', >++ 'source/rtp_header_extension.h', >++ 'source/rtp_header_extensions.cc', >++ 'source/rtp_header_extensions.h', >++ 'source/rtp_header_parser.cc', >++ 'source/rtp_packet.cc', >++ 'source/rtp_packet.h', >++ 'source/rtp_packet_received.h', >++ 'source/rtp_packet_to_send.h', >++ 'source/rtp_receiver_impl.cc', >++ 'source/rtp_receiver_impl.h', >++ 'source/rtp_rtcp_config.h', >++ 'source/rtp_rtcp_impl.cc', >++ 'source/rtp_rtcp_impl.h', >++ 'source/rtp_sender.cc', >++ 'source/rtp_sender.h', >++ 'source/rtp_utility.cc', >++ 'source/rtp_utility.h', >++ 'source/ssrc_database.cc', >++ 'source/ssrc_database.h', >++ 'source/time_util.cc', >++ 'source/time_util.h', >++ 'source/tmmbr_help.cc', >++ 'source/tmmbr_help.h', >++ # Audio Files >++ 'source/dtmf_queue.cc', >++ 'source/dtmf_queue.h', >++ 'source/rtp_receiver_audio.cc', >++ 'source/rtp_receiver_audio.h', >++ 'source/rtp_sender_audio.cc', >++ 'source/rtp_sender_audio.h', >++ # Video Files >++ 'source/fec_private_tables_random.h', >++ 'source/fec_private_tables_bursty.h', >++ 'source/flexfec_header_reader_writer.cc', >++ 'source/flexfec_header_reader_writer.h', >++ 'source/forward_error_correction.cc', >++ 'source/forward_error_correction.h', >++ 'source/forward_error_correction_internal.cc', >++ 'source/forward_error_correction_internal.h', >++ 'source/rtp_packet_history.cc', >++ 'source/rtp_packet_history.h', >++ 'source/rtp_payload_registry.cc', >++ 'source/rtp_receiver_strategy.cc', >++ 'source/rtp_receiver_strategy.h', >++ 'source/rtp_receiver_video.cc', >++ 'source/rtp_receiver_video.h', >++ 'source/rtp_sender_video.cc', >++ 'source/rtp_sender_video.h', >++ 'source/video_codec_information.h', >++ 'source/rtp_format.cc', >++ 'source/rtp_format.h', >++ 'source/rtp_format_h264.cc', >++ 'source/rtp_format_h264.h', >++ 'source/rtp_format_vp8.cc', >++ 'source/rtp_format_vp8.h', >++ 'source/rtp_format_vp9.cc', >++ 'source/rtp_format_vp9.h', >++ 'source/rtp_format_video_generic.cc', >++ 'source/rtp_format_video_generic.h', >++ 'source/ulpfec_generator.cc', >++ 'source/ulpfec_generator.h', >++ 'source/ulpfec_header_reader_writer.cc', >++ 'source/ulpfec_header_reader_writer.h', >++ 'source/ulpfec_receiver_impl.cc', >++ 'source/ulpfec_receiver_impl.h', >++ 'source/video_codec_information.h', >++ 'source/vp8_partition_aggregator.cc', >++ 'source/vp8_partition_aggregator.h', >++ # Mocks >++ 'mocks/mock_rtp_rtcp.h', >++ 'source/mock/mock_rtp_payload_strategy.h', >++ ], # source >++ 'conditions': [ >++ ['enable_bwe_test_logging==1', { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=1' ], >++ }, { >++ 'defines': [ 'BWE_TEST_LOGGING_COMPILE_TIME_ENABLE=0' ], >++ }], >++ ], >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/rtp_rtcp/test/testFec/test_fec.gypi media/webrtc/trunk/webrtc/modules/rtp_rtcp/test/testFec/test_fec.gypi >+new file mode 100644 >+index 000000000000..2843894a5e48 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/rtp_rtcp/test/testFec/test_fec.gypi >+@@ -0,0 +1,26 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ # The test below takes long to run, no need to add it to any bot. >++ 'target_name': 'test_packet_masks_metrics', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'rtp_rtcp', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ ], >++ 'sources': [ >++ 'test_packet_masks_metrics.cc', >++ 'average_residual_loss_xor_codes.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/utility/utility.gypi media/webrtc/trunk/webrtc/modules/utility/utility.gypi >+new file mode 100644 >+index 000000000000..3b8f8c22fa28 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/utility/utility.gypi >+@@ -0,0 +1,37 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_utility', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'audio_coding_module', >++ 'media_file', >++ '<(webrtc_root)/base/base.gyp:rtc_task_queue', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/audio_frame_operations.h', >++ 'include/file_player.h', >++ 'include/file_recorder.h', >++ 'include/helpers_android.h', >++ 'include/helpers_ios.h', >++ 'include/jvm_android.h', >++ 'include/process_thread.h', >++ 'source/helpers_android.cc', >++ 'source/helpers_ios.mm', >++ 'source/jvm_android.cc', >++ 'source/process_thread_impl.cc', >++ 'source/process_thread_impl.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_capture/BUILD.gn media/webrtc/trunk/webrtc/modules/video_capture/BUILD.gn >+index 0658ab74b3ff..6887552b583a 100644 >+--- media/webrtc/trunk/webrtc/modules/video_capture/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/video_capture/BUILD.gn >+@@ -124,18 +124,9 @@ if (!build_with_chromium) { >+ >+ libs = [ "Strmiids.lib" ] >+ >+- if (!build_with_mozilla) { >+- deps += [ "//third_party/winsdk_samples" ] >+- } else { >+- sources += [ >+- "windows/BasePin.cpp", >+- "windows/BaseFilter.cpp", >+- "windows/BaseInputPin.cpp", >+- "windows/MediaType.cpp", >+- ] >+- } >++ deps += [ "//third_party/winsdk_samples" ] >+ } >+- if (!build_with_mozilla && (is_ios || is_mac)) { >++ if (is_ios || is_mac) { >+ sources = [ >+ "objc/device_info.h", >+ "objc/device_info.mm", >+@@ -157,34 +148,6 @@ if (!build_with_chromium) { >+ ] >+ } >+ >+- if (build_with_mozilla && is_android) { >+- include_dirs = [ >+- "/config/external/nspr", >+- "/nsprpub/lib/ds", >+- "/nsprpub/pr/include", >+- ] >+- >+- sources = [ >+- "android/device_info_android.cc", >+- "android/video_capture_android.cc", >+- ] >+- } >+- >+- if (build_with_mozilla && is_mac) { >+- sources = [ >+- "mac/avfoundation/video_capture_avfoundation.h", >+- "mac/avfoundation/video_capture_avfoundation.mm", >+- "mac/avfoundation/video_capture_avfoundation_info.h", >+- "mac/avfoundation/video_capture_avfoundation_info.mm", >+- "mac/avfoundation/video_capture_avfoundation_info_objc.h", >+- "mac/avfoundation/video_capture_avfoundation_info_objc.mm", >+- "mac/avfoundation/video_capture_avfoundation_objc.h", >+- "mac/avfoundation/video_capture_avfoundation_objc.mm", >+- "mac/avfoundation/video_capture_avfoundation_utility.h", >+- "mac/video_capture_mac.mm", >+- ] >+- } >+- >+ all_dependent_configs = [ ":video_capture_internal_impl_config" ] >+ >+ if (!build_with_chromium && is_clang) { >+diff --git media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi >+new file mode 100644 >+index 000000000000..ebda305e08ca >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_capture/video_capture.gypi >+@@ -0,0 +1,200 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ # Note this library is missing an implementation for the video capture. >++ # Targets must link with either 'video_capture' or >++ # 'video_capture_module_internal_impl' depending on whether they want to >++ # use the internal capturer. >++ 'target_name': 'video_capture_module', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'webrtc_utility', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'cflags_mozilla': [ >++ '$(NSPR_CFLAGS)', >++ ], >++ 'sources': [ >++ 'device_info_impl.cc', >++ 'device_info_impl.h', >++ 'video_capture.h', >++ 'video_capture_config.h', >++ 'video_capture_defines.h', >++ 'video_capture_delay.h', >++ 'video_capture_factory.h', >++ 'video_capture_factory.cc', >++ 'video_capture_impl.cc', >++ 'video_capture_impl.h', >++ ], >++ }, >++ { >++ # Default video capture module implementation that only supports external >++ # capture. >++ 'target_name': 'video_capture', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'video_capture_module', >++ ], >++ 'cflags_mozilla': [ >++ '$(NSPR_CFLAGS)', >++ ], >++ 'sources': [ >++ 'external/device_info_external.cc', >++ 'external/video_capture_external.cc', >++ ], >++ }, >++ ], # targets >++ 'conditions': [ >++ ['build_with_chromium==0', { >++ 'targets': [ >++ { >++ 'target_name': 'video_capture_module_internal_impl', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'video_capture_module', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'cflags_mozilla': [ >++ '$(NSPR_CFLAGS)', >++ ], >++ 'conditions': [ >++ ['include_v4l2_video_capture==1', { >++ 'sources': [ >++ 'linux/device_info_linux.cc', >++ 'linux/device_info_linux.h', >++ 'linux/video_capture_linux.cc', >++ 'linux/video_capture_linux.h', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ 'mac/avfoundation/video_capture_avfoundation.h', >++ 'mac/avfoundation/video_capture_avfoundation.mm', >++ 'mac/avfoundation/video_capture_avfoundation_info.h', >++ 'mac/avfoundation/video_capture_avfoundation_info.mm', >++ 'mac/avfoundation/video_capture_avfoundation_info_objc.h', >++ 'mac/avfoundation/video_capture_avfoundation_info_objc.mm', >++ 'mac/avfoundation/video_capture_avfoundation_objc.h', >++ 'mac/avfoundation/video_capture_avfoundation_objc.mm', >++ 'mac/avfoundation/video_capture_avfoundation_utility.h', >++ 'mac/video_capture_mac.mm', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework Cocoa', >++ '-framework CoreVideo', >++ ], >++ }, >++ }, >++ }], # mac >++ ['OS=="win"', { >++ 'conditions': [ >++ ['build_with_mozilla==0', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/winsdk_samples/winsdk_samples.gyp:directshow_baseclasses', >++ ], >++ }], >++ ], >++ 'sources': [ >++ 'windows/device_info_ds.cc', >++ 'windows/device_info_ds.h', >++ 'windows/device_info_mf.cc', >++ 'windows/device_info_mf.h', >++ 'windows/help_functions_ds.cc', >++ 'windows/help_functions_ds.h', >++ 'windows/sink_filter_ds.cc', >++ 'windows/sink_filter_ds.h', >++ 'windows/video_capture_ds.cc', >++ 'windows/video_capture_ds.h', >++ 'windows/video_capture_factory_windows.cc', >++ 'windows/video_capture_mf.cc', >++ 'windows/video_capture_mf.h', >++ 'windows/BasePin.cpp', >++ 'windows/BaseFilter.cpp', >++ 'windows/BaseInputPin.cpp', >++ 'windows/MediaType.cpp', >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-lStrmiids.lib', >++ ], >++ }, >++ }], # win >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-comment', >++ '-Wno-ignored-attributes', >++ '-Wno-microsoft-extra-qualification', >++ '-Wno-missing-braces', >++ '-Wno-overloaded-virtual', >++ '-Wno-reorder', >++ '-Wno-writable-strings', >++ ], >++ }, >++ }, >++ }], >++ ['OS=="android"', { >++ 'sources': [ >++ 'android/device_info_android.cc', >++ 'android/device_info_android.h', >++ 'android/video_capture_android.cc', >++ 'android/video_capture_android.h', >++ ], >++ }], # android >++ ['OS=="ios"', { >++ 'sources': [ >++ 'objc/device_info.h', >++ 'objc/device_info.mm', >++ 'objc/device_info_objc.h', >++ 'objc/device_info_objc.mm', >++ 'objc/rtc_video_capture_objc.h', >++ 'objc/rtc_video_capture_objc.mm', >++ 'objc/video_capture.h', >++ 'objc/video_capture.mm', >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ 'cflags_mozilla': [ >++ '-fobjc-arc', >++ ], >++ 'all_dependent_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework AVFoundation', >++ '-framework CoreMedia', >++ '-framework CoreVideo', >++ ], >++ }, >++ }, >++ }], # ios >++ ['OS=="ios"', { >++ 'all_dependent_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework UIKit', >++ ], >++ }, >++ }, >++ }], # ios >++ ], # conditions >++ }, >++ ], >++ }], # build_with_chromium==0 >++ ], >++} >++ >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/BUILD.gn media/webrtc/trunk/webrtc/modules/video_coding/BUILD.gn >+index b932dc825579..f70a314f9232 100644 >+--- media/webrtc/trunk/webrtc/modules/video_coding/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/video_coding/BUILD.gn >+@@ -93,6 +93,7 @@ rtc_static_library("video_coding") { >+ ":webrtc_vp8", >+ ":webrtc_vp9", >+ "../..:webrtc_common", >++ "../../base:rtc_base", >+ "../../base:rtc_base_approved", >+ "../../base:rtc_numerics", >+ "../../base:rtc_task_queue", >+@@ -101,12 +102,6 @@ rtc_static_library("video_coding") { >+ "../rtp_rtcp:rtp_rtcp", >+ "../utility:utility", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../base:rtc_base", >+- ] >+- } >+ } >+ >+ rtc_static_library("video_coding_utility") { >+@@ -188,15 +183,10 @@ rtc_static_library("webrtc_h264") { >+ ] >+ deps += [ >+ "../../common_video", >++ "../../media:rtc_media_base", >+ "//third_party/ffmpeg:ffmpeg", >+ "//third_party/openh264:encoder", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../../media:rtc_media_base", >+- ] >+- } >+ } >+ } >+ >+@@ -255,10 +245,6 @@ rtc_static_library("webrtc_vp8") { >+ if (rtc_build_libvpx) { >+ deps += [ rtc_libvpx_dir ] >+ } >+- >+- if (build_with_mozilla) { >+- include_dirs = [ "$rtc_libyuv_dir/include" ] >+- } >+ } >+ >+ rtc_static_library("webrtc_vp9") { >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/h264/h264.gypi media/webrtc/trunk/webrtc/modules/video_coding/codecs/h264/h264.gypi >+new file mode 100644 >+index 000000000000..08f418dd70f6 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/h264/h264.gypi >+@@ -0,0 +1,97 @@ >++# Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_h264', >++ 'type': 'static_library', >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'dependencies': [ >++ 'webrtc_h264_video_toolbox', >++ ], >++ 'sources': [ >++ 'h264_objc.mm', >++ ], >++ }], >++ #TODO: rtc_use_h264 not defined here >++ # TODO(hbos): Consider renaming this flag and the below macro to >++ # something which helps distinguish OpenH264/FFmpeg from other H264 >++ # implementations. >++ #['rtc_use_h264==1', { >++ # 'defines': [ >++ # 'WEBRTC_USE_H264', >++ # ], >++ # 'conditions': [ >++ # ['rtc_initialize_ffmpeg==1', { >++ # 'defines': [ >++ # 'WEBRTC_INITIALIZE_FFMPEG', >++ # ], >++ # }], >++ # ], >++ # 'dependencies': [ >++ # '<(DEPTH)/third_party/ffmpeg/ffmpeg.gyp:ffmpeg', >++ # '<(DEPTH)/third_party/openh264/openh264.gyp:openh264_encoder', >++ # '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ # ], >++ # 'sources': [ >++ # 'h264_decoder_impl.cc', >++ # 'h264_decoder_impl.h', >++ # 'h264_encoder_impl.cc', >++ # 'h264_encoder_impl.h', >++ # ], >++ #}], >++ ], >++ 'sources': [ >++ 'h264.cc', >++ 'include/h264.h', >++ ], >++ }, # webrtc_h264 >++ ], >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_h264_video_toolbox', >++ 'type': 'static_library', >++ 'includes': [ '../../../../build/objc_common.gypi' ], >++ 'dependencies': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CoreFoundation', >++ '-framework CoreMedia', >++ '-framework CoreVideo', >++ '-framework VideoToolbox', >++ ], >++ }, >++ }, >++ 'sources': [ >++ 'h264_video_toolbox_decoder.cc', >++ 'h264_video_toolbox_decoder.h', >++ 'h264_video_toolbox_encoder.h', >++ 'h264_video_toolbox_encoder.mm', >++ 'h264_video_toolbox_nalu.cc', >++ 'h264_video_toolbox_nalu.h', >++ ], >++ 'conditions': [ >++ ['build_libyuv==1', { >++ 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv'], >++ }], >++ ], >++ }, # webrtc_h264_video_toolbox >++ ], # targets >++ }], # OS=="ios" >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/i420/i420.gypi media/webrtc/trunk/webrtc/modules/video_coding/codecs/i420/i420.gypi >+new file mode 100644 >+index 000000000000..4fd8e318bd66 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/i420/i420.gypi >+@@ -0,0 +1,23 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_i420', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/i420.h', >++ 'i420.cc', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/test/video_codecs_test_framework.gypi media/webrtc/trunk/webrtc/modules/video_coding/codecs/test/video_codecs_test_framework.gypi >+new file mode 100644 >+index 000000000000..700616aa6624 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/test/video_codecs_test_framework.gypi >+@@ -0,0 +1,34 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'conditions': [ >++ ['include_tests==1', { >++ 'targets': [ >++ { >++ 'target_name': 'video_codecs_test_framework', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/test/test.gyp:test_support', >++ ], >++ 'sources': [ >++ 'mock/mock_packet_manipulator.h', >++ 'packet_manipulator.h', >++ 'packet_manipulator.cc', >++ 'predictive_packet_manipulator.h', >++ 'predictive_packet_manipulator.cc', >++ 'stats.h', >++ 'stats.cc', >++ 'videoprocessor.h', >++ 'videoprocessor.cc', >++ ], >++ }, >++ ], # targets >++ }], # include_tests >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi media/webrtc/trunk/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi >+new file mode 100644 >+index 000000000000..813d3b83b430 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/tools/video_codecs_tools.gypi >+@@ -0,0 +1,36 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'conditions': [ >++ ['include_tests==1', { >++ 'targets': [ >++ { >++ 'target_name': 'video_quality_measurement', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'video_codecs_test_framework', >++ 'webrtc_video_coding', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_support', >++ '<(webrtc_vp8_dir)/vp8.gyp:webrtc_vp8', >++ ], >++ 'sources': [ >++ 'video_quality_measurement.cc', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, >++ ], # targets >++ }], # include_tests >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8.gyp media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8.gyp >+new file mode 100644 >+index 000000000000..6918986f6fab >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp8/vp8.gyp >+@@ -0,0 +1,82 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_vp8', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/modules/video_coding/utility/video_coding_utility.gyp:video_coding_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'include_dirs': [ >++ '../../../../../../../libyuv/libyuv/include', >++ ], >++ 'conditions': [ >++ ['build_libvpx==1', { >++ 'dependencies': [ >++ '<(libvpx_dir)/libvpx.gyp:libvpx', >++ ], >++ },{ >++ 'link_settings': { >++ 'libraries': [ >++ '$(LIBVPX_OBJ)/libvpx.a', >++ ], >++ }, >++ }], >++ ], >++ 'sources': [ >++ 'default_temporal_layers.cc', >++ 'default_temporal_layers.h', >++ 'include/vp8.h', >++ 'include/vp8_common_types.h', >++ 'realtime_temporal_layers.cc', >++ 'reference_picture_selection.cc', >++ 'reference_picture_selection.h', >++ 'screenshare_layers.cc', >++ 'screenshare_layers.h', >++ 'simulcast_encoder_adapter.cc', >++ 'simulcast_encoder_adapter.h', >++ 'temporal_layers.h', >++ 'vp8_impl.cc', >++ 'vp8_impl.h', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, >++ ], # targets >++ 'conditions': [ >++ ['include_tests==1', { >++ 'targets': [ >++ { >++ 'target_name': 'vp8_coder', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'webrtc_vp8', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/test/test.gyp:test_support_main', >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ ], >++ 'sources': [ >++ 'vp8_sequence_coder.cc', >++ ], >++ }, >++ ], # targets >++ }], # include_tests >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp9/vp9.gyp media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp9/vp9.gyp >+new file mode 100644 >+index 000000000000..9f3193201f0b >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/codecs/vp9/vp9.gyp >+@@ -0,0 +1,54 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_vp9', >++ 'type': 'static_library', >++ 'conditions': [ >++ ['build_libvpx==1', { >++ 'dependencies': [ >++ '<(libvpx_dir)/libvpx.gyp:libvpx', >++ ], >++ }, { >++ 'include_dirs': [ >++ '$(MOZ_LIBVPX_CFLAGS)', >++ '<(libvpx_dir)', >++ ], >++ }], >++ ['libvpx_build_vp9==1', { >++ 'sources': [ >++ 'screenshare_layers.cc', >++ 'screenshare_layers.h', >++ 'vp9_frame_buffer_pool.cc', >++ 'vp9_frame_buffer_pool.h', >++ 'vp9_impl.cc', >++ 'vp9_impl.h', >++ ], >++ }, { >++ 'sources': [ >++ 'vp9_noop.cc', >++ ], >++ } >++ ], >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/modules/video_coding/utility/video_coding_utility.gyp:video_coding_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/vp9.h', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/utility/video_coding_utility.gyp media/webrtc/trunk/webrtc/modules/video_coding/utility/video_coding_utility.gyp >+new file mode 100644 >+index 000000000000..a1e9a4258b8b >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/utility/video_coding_utility.gyp >+@@ -0,0 +1,40 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../../../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'video_coding_utility', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'default_video_bitrate_allocator.cc', >++ 'frame_dropper.cc', >++ 'frame_dropper.h', >++ 'ivf_file_writer.cc', >++ 'ivf_file_writer.h', >++ 'moving_average.cc', >++ 'moving_average.h', >++ 'qp_parser.cc', >++ 'qp_parser.h', >++ 'quality_scaler.cc', >++ 'quality_scaler.h', >++ 'simulcast_rate_allocator.cc', >++ 'simulcast_rate_allocator.h', >++ 'vp8_header_parser.cc', >++ 'vp8_header_parser.h', >++ ], >++ }, >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/video_coding.gypi media/webrtc/trunk/webrtc/modules/video_coding/video_coding.gypi >+new file mode 100644 >+index 000000000000..5027cda6a47f >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/video_coding.gypi >+@@ -0,0 +1,98 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_video_coding', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'webrtc_h264', >++ 'webrtc_i420', >++ '../base/base.gyp:rtc_task_queue', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/modules/video_coding/utility/video_coding_utility.gyp:video_coding_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_vp8_dir)/vp8.gyp:webrtc_vp8', >++ '<(webrtc_vp9_dir)/vp9.gyp:webrtc_vp9', >++ ], >++ 'sources': [ >++ # interfaces >++ 'include/video_coding.h', >++ 'include/video_coding_defines.h', >++ >++ # headers >++ 'codec_database.h', >++ 'codec_timer.h', >++ 'decoding_state.h', >++ 'encoded_frame.h', >++ 'fec_rate_table.h', >++ 'frame_buffer.h', >++ 'frame_buffer2.h', >++ 'frame_object.h', >++ 'rtp_frame_reference_finder.h', >++ 'generic_decoder.h', >++ 'generic_encoder.h', >++ 'histogram.h', >++ 'inter_frame_delay.h', >++ 'internal_defines.h', >++ 'jitter_buffer.h', >++ 'jitter_buffer_common.h', >++ 'jitter_estimator.h', >++ 'media_opt_util.h', >++ 'media_optimization.h', >++ 'nack_fec_tables.h', >++ 'nack_module.h', >++ 'packet.h', >++ 'packet_buffer.h', >++ 'protection_bitrate_calculator.h', >++ 'receiver.h', >++ 'rtt_filter.h', >++ 'session_info.h', >++ 'timestamp_map.h', >++ 'timing.h', >++ 'video_coding_impl.h', >++ >++ # sources >++ 'codec_database.cc', >++ 'codec_timer.cc', >++ 'decoding_state.cc', >++ 'encoded_frame.cc', >++ 'frame_buffer.cc', >++ 'frame_buffer2.cc', >++ 'frame_object.cc', >++ 'rtp_frame_reference_finder.cc', >++ 'generic_decoder.cc', >++ 'generic_encoder.cc', >++ 'h264_sprop_parameter_sets.cc', >++ 'h264_sps_pps_tracker.cc', >++ 'inter_frame_delay.cc', >++ 'histogram.cc', >++ 'jitter_buffer.cc', >++ 'jitter_estimator.cc', >++ 'media_opt_util.cc', >++ 'media_optimization.cc', >++ 'protection_bitrate_calculator.cc', >++ 'nack_module.cc', >++ 'packet.cc', >++ 'packet_buffer.cc', >++ 'receiver.cc', >++ 'rtt_filter.cc', >++ 'session_info.cc', >++ 'timestamp_map.cc', >++ 'timing.cc', >++ 'video_codec_initializer.cc', >++ 'video_coding_impl.cc', >++ 'video_sender.cc', >++ 'video_receiver.cc', >++ ], # source >++ # TODO(jschuh): Bug 1348: fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4267, ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_coding/video_coding_test.gypi media/webrtc/trunk/webrtc/modules/video_coding/video_coding_test.gypi >+new file mode 100644 >+index 000000000000..8f7bc03ef971 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_coding/video_coding_test.gypi >+@@ -0,0 +1,35 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'rtp_player', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'rtp_rtcp', >++ 'webrtc_video_coding', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ '<(webrtc_root)/test/test.gyp:test_common', >++ ], >++ 'sources': [ >++ # headers >++ 'test/receiver_tests.h', >++ 'test/rtp_player.h', >++ 'test/vcm_payload_sink_factory.h', >++ >++ # sources >++ 'test/rtp_player.cc', >++ 'test/test_util.cc', >++ 'test/tester_main.cc', >++ 'test/vcm_payload_sink_factory.cc', >++ 'test/video_rtp_play.cc', >++ ], # sources >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/modules/video_processing/BUILD.gn media/webrtc/trunk/webrtc/modules/video_processing/BUILD.gn >+index f585b64b1b1a..5ab3f457ecdc 100644 >+--- media/webrtc/trunk/webrtc/modules/video_processing/BUILD.gn >++++ media/webrtc/trunk/webrtc/modules/video_processing/BUILD.gn >+@@ -43,10 +43,6 @@ rtc_static_library("video_processing") { >+ # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). >+ suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] >+ } >+- >+- if (build_with_mozilla) { >+- include_dirs = [ "$rtc_libyuv_dir/include" ] >+- } >+ } >+ >+ if (build_video_processing_sse2) { >+diff --git media/webrtc/trunk/webrtc/modules/video_processing/video_processing.gypi media/webrtc/trunk/webrtc/modules/video_processing/video_processing.gypi >+new file mode 100644 >+index 000000000000..c34f8749326a >+--- /dev/null >++++ media/webrtc/trunk/webrtc/modules/video_processing/video_processing.gypi >+@@ -0,0 +1,86 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'targets': [ >++ { >++ 'target_name': 'video_processing', >++ 'type': 'static_library', >++ 'include_dirs': [ >++ '<(libyuv_dir)/include', >++ ], >++ 'dependencies': [ >++ 'webrtc_utility', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ 'sources': [ >++ 'include/video_processing.h', >++ 'include/video_processing_defines.h', >++ 'video_denoiser.cc', >++ 'video_denoiser.h', >++ 'util/denoiser_filter.cc', >++ 'util/denoiser_filter.h', >++ 'util/denoiser_filter_c.cc', >++ 'util/denoiser_filter_c.h', >++ 'util/noise_estimation.cc', >++ 'util/noise_estimation.h', >++ 'util/skin_detection.cc', >++ 'util/skin_detection.h', >++ ], >++ 'conditions': [ >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'dependencies': [ 'video_processing_sse2', ], >++ }], >++ ['target_arch=="arm" or target_arch == "arm64"', { >++ 'dependencies': [ 'video_processing_neon', ], >++ }], >++ ], >++ }, >++ ], >++ 'conditions': [ >++ ['target_arch=="ia32" or target_arch=="x64"', { >++ 'targets': [ >++ { >++ 'target_name': 'video_processing_sse2', >++ 'type': 'static_library', >++ 'sources': [ >++ 'util/denoiser_filter_sse2.cc', >++ 'util/denoiser_filter_sse2.h', >++ ], >++ 'conditions': [ >++ ['os_posix==1 and OS!="mac"', { >++ 'cflags': [ '-msse2', ], >++ 'cflags_mozilla': [ '-msse2', ], >++ }], >++ ['OS=="mac"', { >++ 'xcode_settings': { >++ 'OTHER_CFLAGS': [ '-msse2', ], >++ }, >++ }], >++ ], >++ }, >++ ], >++ }], >++ ['target_arch=="arm" or target_arch == "arm64"', { >++ 'targets': [ >++ { >++ 'target_name': 'video_processing_neon', >++ 'type': 'static_library', >++ 'includes': [ '../../build/arm_neon.gypi', ], >++ 'sources': [ >++ 'util/denoiser_filter_neon.cc', >++ 'util/denoiser_filter_neon.h', >++ ], >++ }, >++ ], >++ }], >++ ], >++} >++ >+diff --git media/webrtc/trunk/webrtc/p2p/p2p.gyp media/webrtc/trunk/webrtc/p2p/p2p.gyp >+new file mode 100644 >+index 000000000000..9511d1c974e2 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/p2p/p2p.gyp >+@@ -0,0 +1,145 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'targets': [ >++ { >++ 'target_name': 'rtc_p2p', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'base/asyncstuntcpsocket.cc', >++ 'base/asyncstuntcpsocket.h', >++ 'base/basicpacketsocketfactory.cc', >++ 'base/basicpacketsocketfactory.h', >++ 'base/candidate.h', >++ 'base/common.h', >++ 'base/dtlstransport.h', >++ 'base/dtlstransportchannel.cc', >++ 'base/dtlstransportchannel.h', >++ 'base/p2pconstants.cc', >++ 'base/p2pconstants.h', >++ 'base/p2ptransport.cc', >++ 'base/p2ptransport.h', >++ 'base/p2ptransportchannel.cc', >++ 'base/p2ptransportchannel.h', >++ 'base/packetsocketfactory.h', >++ 'base/port.cc', >++ 'base/port.h', >++ 'base/portallocator.cc', >++ 'base/portallocator.h', >++ 'base/portinterface.h', >++ 'base/pseudotcp.cc', >++ 'base/pseudotcp.h', >++ 'base/relayport.cc', >++ 'base/relayport.h', >++ 'base/session.cc', >++ 'base/session.h', >++ 'base/sessiondescription.cc', >++ 'base/sessiondescription.h', >++ 'base/stun.cc', >++ 'base/stun.h', >++ 'base/stunport.cc', >++ 'base/stunport.h', >++ 'base/stunrequest.cc', >++ 'base/stunrequest.h', >++ 'base/tcpport.cc', >++ 'base/tcpport.h', >++ 'base/transport.cc', >++ 'base/transport.h', >++ 'base/transportchannel.cc', >++ 'base/transportchannel.h', >++ 'base/transportchannelimpl.h', >++ 'base/transportcontroller.cc', >++ 'base/transportcontroller.h', >++ 'base/transportdescription.cc', >++ 'base/transportdescription.h', >++ 'base/transportdescriptionfactory.cc', >++ 'base/transportdescriptionfactory.h', >++ 'base/transportinfo.h', >++ 'base/turnport.cc', >++ 'base/turnport.h', >++ 'base/udpport.h', >++ 'client/basicportallocator.cc', >++ 'client/basicportallocator.h', >++ 'client/httpportallocator.cc', >++ 'client/httpportallocator.h', >++ 'client/socketmonitor.cc', >++ 'client/socketmonitor.h', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ 'FEATURE_ENABLE_VOICEMAIL', >++ ], >++ }, >++ 'conditions': [ >++ ['build_with_chromium==0', { >++ 'sources': [ >++ 'base/relayserver.cc', >++ 'base/relayserver.h', >++ 'base/stunserver.cc', >++ 'base/stunserver.h', >++ 'base/turnserver.cc', >++ 'base/turnserver.h', >++ ], >++ 'defines': [ >++ 'FEATURE_ENABLE_VOICEMAIL', >++ 'FEATURE_ENABLE_PSTN', >++ ], >++ }], >++ ['use_quic==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/libquic/libquic.gyp:libquic', >++ ], >++ 'sources': [ >++ 'quic/quicconnectionhelper.cc', >++ 'quic/quicconnectionhelper.h', >++ 'quic/quicsession.cc', >++ 'quic/quicsession.h', >++ 'quic/quictransport.cc', >++ 'quic/quictransport.h', >++ 'quic/quictransportchannel.cc', >++ 'quic/quictransportchannel.h', >++ 'quic/reliablequicstream.cc', >++ 'quic/reliablequicstream.h', >++ ], >++ 'export_dependent_settings': [ >++ '<(DEPTH)/third_party/libquic/libquic.gyp:libquic', >++ ], >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'libstunprober', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'stunprober/stunprober.cc', >++ ], >++ }, >++ { >++ 'target_name': 'stun_prober', >++ 'type': 'executable', >++ 'dependencies': [ >++ 'libstunprober', >++ 'rtc_p2p' >++ ], >++ 'sources': [ >++ 'stunprober/main.cc', >++ ], >++ }, >++ ], # targets >++} >++ >+diff --git media/webrtc/trunk/webrtc/pc/pc.gyp media/webrtc/trunk/webrtc/pc/pc.gyp >+new file mode 100755 >+index 000000000000..e42e240a4cf1 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/pc/pc.gyp >+@@ -0,0 +1,77 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': ['../build/common.gypi'], >++ 'variables': { >++ 'rtc_pc_defines': [ >++ 'SRTP_RELATIVE_PATH', >++ 'HAVE_SCTP', >++ 'HAVE_SRTP', >++ ], >++ }, >++ 'targets': [ >++ { >++ 'target_name': 'rtc_pc', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/media/media.gyp:rtc_media', >++ ], >++ 'conditions': [ >++ ['build_with_chromium==1', { >++ 'sources': [ >++ 'externalhmac.h', >++ 'externalhmac.cc', >++ ], >++ }], >++ # TODO: lisrtp.gyp not found >++ #['build_libsrtp==1', { >++ # 'dependencies': [ >++ # '<(DEPTH)/third_party/libsrtp/libsrtp.gyp:libsrtp', >++ # ], >++ #}], >++ ], >++ 'defines': [ >++ '<@(rtc_pc_defines)', >++ ], >++ 'include_dirs': [ >++ '<(DEPTH)/testing/gtest/include', >++ ], >++ 'direct_dependent_settings': { >++ 'defines': [ >++ '<@(rtc_pc_defines)' >++ ], >++ 'include_dirs': [ >++ '<(DEPTH)/testing/gtest/include', >++ ], >++ }, >++ 'sources': [ >++ 'audiomonitor.cc', >++ 'audiomonitor.h', >++ 'bundlefilter.cc', >++ 'bundlefilter.h', >++ 'channel.cc', >++ 'channel.h', >++ 'channelmanager.cc', >++ 'channelmanager.h', >++ 'currentspeakermonitor.cc', >++ 'currentspeakermonitor.h', >++ 'mediamonitor.cc', >++ 'mediamonitor.h', >++ 'mediasession.cc', >++ 'mediasession.h', >++ 'rtcpmuxfilter.cc', >++ 'rtcpmuxfilter.h', >++ 'srtpfilter.cc', >++ 'srtpfilter.h', >++ 'voicechannel.h', >++ ], >++ }, # target rtc_pc >++ ], # targets >++} >+diff --git media/webrtc/trunk/webrtc/sdk/sdk.gyp media/webrtc/trunk/webrtc/sdk/sdk.gyp >+new file mode 100644 >+index 000000000000..908d544abba5 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/sdk/sdk.gyp >+@@ -0,0 +1,342 @@ >++# Copyright 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ 'sdk.gypi', >++ ], >++ 'conditions': [ >++ ['OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7")', { >++ 'targets': [ >++ { >++ 'target_name': 'rtc_sdk_common_objc', >++ 'type': 'static_library', >++ 'includes': [ '../build/objc_common.gypi' ], >++ 'dependencies': [ >++ '../base/base.gyp:rtc_base', >++ ], >++ 'include_dirs': [ >++ 'objc/Framework/Classes', >++ 'objc/Framework/Headers', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'objc/Framework/Classes', >++ 'objc/Framework/Headers', >++ ], >++ }, >++ 'sources': [ >++ 'objc/Framework/Classes/NSString+StdString.h', >++ 'objc/Framework/Classes/NSString+StdString.mm', >++ 'objc/Framework/Classes/RTCDispatcher.m', >++ 'objc/Framework/Classes/RTCFieldTrials.mm', >++ 'objc/Framework/Classes/RTCLogging.mm', >++ 'objc/Framework/Classes/RTCMetrics.mm', >++ 'objc/Framework/Classes/RTCMetricsSampleInfo+Private.h', >++ 'objc/Framework/Classes/RTCMetricsSampleInfo.mm', >++ 'objc/Framework/Classes/RTCSSLAdapter.mm', >++ 'objc/Framework/Classes/RTCTracing.mm', >++ 'objc/Framework/Headers/WebRTC/RTCDispatcher.h', >++ 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h', >++ 'objc/Framework/Headers/WebRTC/RTCLogging.h', >++ 'objc/Framework/Headers/WebRTC/RTCMacros.h', >++ 'objc/Framework/Headers/WebRTC/RTCMetrics.h', >++ 'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h', >++ 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h', >++ 'objc/Framework/Headers/WebRTC/RTCTracing.h', >++ ], >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'sources': [ >++ 'objc/Framework/Classes/RTCCameraPreviewView.m', >++ 'objc/Framework/Classes/RTCUIApplication.h', >++ 'objc/Framework/Classes/RTCUIApplication.mm', >++ 'objc/Framework/Classes/UIDevice+RTCDevice.mm', >++ 'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h', >++ 'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework AVFoundation', >++ ], >++ }, >++ }, >++ }], # OS=="ios" >++ ['build_with_chromium==0', { >++ 'sources': [ >++ 'objc/Framework/Classes/RTCFileLogger.mm', >++ 'objc/Framework/Headers/WebRTC/RTCFileLogger.h', >++ ], >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'rtc_sdk_peerconnection_objc', >++ 'type': 'static_library', >++ 'includes': [ '../build/objc_common.gypi' ], >++ 'dependencies': [ >++ '<(webrtc_root)/api/api.gyp:libjingle_peerconnection', >++ 'rtc_sdk_common_objc', >++ ], >++ 'include_dirs': [ >++ 'objc/Framework/Classes', >++ 'objc/Framework/Headers', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'objc/Framework/Classes', >++ 'objc/Framework/Headers', >++ ], >++ }, >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework AVFoundation', >++ ], >++ }, >++ 'libraries': [ >++ '-lstdc++', >++ ], >++ }, # link_settings >++ 'sources': [ >++ 'objc/Framework/Classes/RTCAVFoundationVideoSource+Private.h', >++ 'objc/Framework/Classes/RTCAVFoundationVideoSource.mm', >++ 'objc/Framework/Classes/RTCAudioSource+Private.h', >++ 'objc/Framework/Classes/RTCAudioSource.mm', >++ 'objc/Framework/Classes/RTCAudioTrack+Private.h', >++ 'objc/Framework/Classes/RTCAudioTrack.mm', >++ 'objc/Framework/Classes/RTCConfiguration+Private.h', >++ 'objc/Framework/Classes/RTCConfiguration.mm', >++ 'objc/Framework/Classes/RTCDataChannel+Private.h', >++ 'objc/Framework/Classes/RTCDataChannel.mm', >++ 'objc/Framework/Classes/RTCDataChannelConfiguration+Private.h', >++ 'objc/Framework/Classes/RTCDataChannelConfiguration.mm', >++ 'objc/Framework/Classes/RTCI420Shader.mm', >++ 'objc/Framework/Classes/RTCIceCandidate+Private.h', >++ 'objc/Framework/Classes/RTCIceCandidate.mm', >++ 'objc/Framework/Classes/RTCIceServer+Private.h', >++ 'objc/Framework/Classes/RTCIceServer.mm', >++ 'objc/Framework/Classes/RTCLegacyStatsReport+Private.h', >++ 'objc/Framework/Classes/RTCLegacyStatsReport.mm', >++ 'objc/Framework/Classes/RTCMediaConstraints+Private.h', >++ 'objc/Framework/Classes/RTCMediaConstraints.mm', >++ 'objc/Framework/Classes/RTCMediaSource+Private.h', >++ 'objc/Framework/Classes/RTCMediaSource.mm', >++ 'objc/Framework/Classes/RTCMediaStream+Private.h', >++ 'objc/Framework/Classes/RTCMediaStream.mm', >++ 'objc/Framework/Classes/RTCMediaStreamTrack+Private.h', >++ 'objc/Framework/Classes/RTCMediaStreamTrack.mm', >++ 'objc/Framework/Classes/RTCOpenGLDefines.h', >++ 'objc/Framework/Classes/RTCOpenGLVideoRenderer.h', >++ 'objc/Framework/Classes/RTCOpenGLVideoRenderer.mm', >++ 'objc/Framework/Classes/RTCPeerConnection+DataChannel.mm', >++ 'objc/Framework/Classes/RTCPeerConnection+Private.h', >++ 'objc/Framework/Classes/RTCPeerConnection+Stats.mm', >++ 'objc/Framework/Classes/RTCPeerConnection.mm', >++ 'objc/Framework/Classes/RTCPeerConnectionFactory+Private.h', >++ 'objc/Framework/Classes/RTCPeerConnectionFactory.mm', >++ 'objc/Framework/Classes/RTCRtpCodecParameters+Private.h', >++ 'objc/Framework/Classes/RTCRtpCodecParameters.mm', >++ 'objc/Framework/Classes/RTCRtpEncodingParameters+Private.h', >++ 'objc/Framework/Classes/RTCRtpEncodingParameters.mm', >++ 'objc/Framework/Classes/RTCRtpParameters+Private.h', >++ 'objc/Framework/Classes/RTCRtpParameters.mm', >++ 'objc/Framework/Classes/RTCRtpReceiver+Private.h', >++ 'objc/Framework/Classes/RTCRtpReceiver.mm', >++ 'objc/Framework/Classes/RTCRtpSender+Private.h', >++ 'objc/Framework/Classes/RTCRtpSender.mm', >++ 'objc/Framework/Classes/RTCSessionDescription+Private.h', >++ 'objc/Framework/Classes/RTCSessionDescription.mm', >++ 'objc/Framework/Classes/RTCShader+Private.h', >++ 'objc/Framework/Classes/RTCShader.h', >++ 'objc/Framework/Classes/RTCShader.mm', >++ 'objc/Framework/Classes/RTCVideoFrame+Private.h', >++ 'objc/Framework/Classes/RTCVideoFrame.mm', >++ 'objc/Framework/Classes/RTCVideoRendererAdapter+Private.h', >++ 'objc/Framework/Classes/RTCVideoRendererAdapter.h', >++ 'objc/Framework/Classes/RTCVideoRendererAdapter.mm', >++ 'objc/Framework/Classes/RTCVideoSource+Private.h', >++ 'objc/Framework/Classes/RTCVideoSource.mm', >++ 'objc/Framework/Classes/RTCVideoTrack+Private.h', >++ 'objc/Framework/Classes/RTCVideoTrack.mm', >++ 'objc/Framework/Classes/avfoundationvideocapturer.h', >++ 'objc/Framework/Classes/avfoundationvideocapturer.mm', >++ 'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCAudioSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCAudioTrack.h', >++ 'objc/Framework/Headers/WebRTC/RTCConfiguration.h', >++ 'objc/Framework/Headers/WebRTC/RTCDataChannel.h', >++ 'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h', >++ 'objc/Framework/Headers/WebRTC/RTCIceCandidate.h', >++ 'objc/Framework/Headers/WebRTC/RTCIceServer.h', >++ 'objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaStream.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h', >++ 'objc/Framework/Headers/WebRTC/RTCPeerConnection.h', >++ 'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpSender.h', >++ 'objc/Framework/Headers/WebRTC/RTCSessionDescription.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoFrame.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoTrack.h', >++ ], # sources >++ 'conditions': [ >++ ['build_libyuv==1', { >++ 'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv'], >++ }], >++ ['OS=="ios"', { >++ 'sources': [ >++ 'objc/Framework/Classes/RTCEAGLVideoView.m', >++ 'objc/Framework/Classes/RTCNativeNV12Shader.mm', >++ 'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CoreGraphics', >++ '-framework GLKit', >++ '-framework OpenGLES', >++ '-framework QuartzCore', >++ ], >++ }, >++ }, # link_settings >++ }], # OS=="ios" >++ ['OS=="mac"', { >++ 'sources': [ >++ 'objc/Framework/Classes/RTCNSGLVideoView.m', >++ 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h', >++ ], >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CoreMedia', >++ '-framework OpenGL', >++ ], >++ }, >++ }, >++ }], >++ ], # conditions >++ }, # rtc_sdk_peerconnection_objc >++ { >++ 'target_name': 'rtc_sdk_framework_objc', >++ 'type': 'shared_library', >++ 'product_name': 'WebRTC', >++ 'mac_bundle': 1, >++ 'includes': [ '../build/objc_common.gypi' ], >++ # Slightly hacky, but we need to re-declare files here that are C >++ # interfaces because otherwise they will be dead-stripped during >++ # linking (ObjC classes cannot be dead-stripped). We might consider >++ # just only using ObjC interfaces. >++ 'sources': [ >++ 'objc/Framework/Classes/RTCFieldTrials.mm', >++ 'objc/Framework/Classes/RTCLogging.mm', >++ 'objc/Framework/Classes/RTCMetrics.mm', >++ 'objc/Framework/Classes/RTCSSLAdapter.mm', >++ 'objc/Framework/Classes/RTCTracing.mm', >++ 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h', >++ 'objc/Framework/Headers/WebRTC/RTCLogging.h', >++ 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h', >++ 'objc/Framework/Headers/WebRTC/RTCTracing.h', >++ 'objc/Framework/Headers/WebRTC/WebRTC.h', >++ 'objc/Framework/Modules/module.modulemap', >++ ], >++ 'mac_framework_headers': [ >++ 'objc/Framework/Headers/WebRTC/RTCAudioSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCAudioTrack.h', >++ 'objc/Framework/Headers/WebRTC/RTCAVFoundationVideoSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCCameraPreviewView.h', >++ 'objc/Framework/Headers/WebRTC/RTCConfiguration.h', >++ 'objc/Framework/Headers/WebRTC/RTCDataChannel.h', >++ 'objc/Framework/Headers/WebRTC/RTCDataChannelConfiguration.h', >++ 'objc/Framework/Headers/WebRTC/RTCDispatcher.h', >++ 'objc/Framework/Headers/WebRTC/RTCEAGLVideoView.h', >++ 'objc/Framework/Headers/WebRTC/RTCFieldTrials.h', >++ 'objc/Framework/Headers/WebRTC/RTCFileLogger.h', >++ 'objc/Framework/Headers/WebRTC/RTCIceCandidate.h', >++ 'objc/Framework/Headers/WebRTC/RTCIceServer.h', >++ 'objc/Framework/Headers/WebRTC/RTCLegacyStatsReport.h', >++ 'objc/Framework/Headers/WebRTC/RTCLogging.h', >++ 'objc/Framework/Headers/WebRTC/RTCMacros.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaConstraints.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaStream.h', >++ 'objc/Framework/Headers/WebRTC/RTCMediaStreamTrack.h', >++ 'objc/Framework/Headers/WebRTC/RTCMetrics.h', >++ 'objc/Framework/Headers/WebRTC/RTCMetricsSampleInfo.h', >++ 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h', >++ 'objc/Framework/Headers/WebRTC/RTCPeerConnection.h', >++ 'objc/Framework/Headers/WebRTC/RTCPeerConnectionFactory.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpCodecParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpEncodingParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpParameters.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpReceiver.h', >++ 'objc/Framework/Headers/WebRTC/RTCRtpSender.h', >++ 'objc/Framework/Headers/WebRTC/RTCSessionDescription.h', >++ 'objc/Framework/Headers/WebRTC/RTCSSLAdapter.h', >++ 'objc/Framework/Headers/WebRTC/RTCTracing.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoFrame.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoRenderer.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoSource.h', >++ 'objc/Framework/Headers/WebRTC/RTCVideoTrack.h', >++ 'objc/Framework/Headers/WebRTC/UIDevice+RTCDevice.h', >++ 'objc/Framework/Headers/WebRTC/WebRTC.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ 'rtc_sdk_peerconnection_objc', >++ ], >++ 'xcode_settings': { >++ 'CODE_SIGNING_REQUIRED': 'NO', >++ 'CODE_SIGN_IDENTITY': '', >++ 'DEFINES_MODULE': 'YES', >++ 'INFOPLIST_FILE': 'objc/Framework/Info.plist', >++ 'LD_DYLIB_INSTALL_NAME': '@rpath/WebRTC.framework/WebRTC', >++ 'MODULEMAP_FILE': '<(webrtc_root)/sdk/Framework/Modules/module.modulemap', >++ }, >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework AVFoundation', >++ '-framework AudioToolbox', >++ '-framework CoreGraphics', >++ '-framework CoreMedia', >++ '-framework GLKit', >++ '-framework VideoToolbox', >++ ], >++ }, >++ }, # link_settings >++ 'conditions': [ >++ # TODO(tkchin): Generate WebRTC.h based off of >++ # mac_framework_headers instead of hard-coding. Ok for now since we >++ # only really care about dynamic lib on iOS outside of chromium. >++ ['OS!="mac"', { >++ 'mac_framework_headers!': [ >++ 'objc/Framework/Headers/WebRTC/RTCNSGLVideoView.h', >++ ], >++ }], >++ ['build_with_chromium==1', { >++ 'mac_framework_headers!': [ >++ 'objc/Framework/Headers/WebRTC/RTCFileLogger.h', >++ ], >++ }], >++ ], # conditions >++ }, # rtc_sdk_framework_objc >++ ], # targets >++ }], # OS=="ios" or (OS=="mac" and mac_deployment_target=="10.7") >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/sdk/sdk.gypi media/webrtc/trunk/webrtc/sdk/sdk.gypi >+new file mode 100644 >+index 000000000000..8f8ee97a9d20 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/sdk/sdk.gypi >+@@ -0,0 +1,26 @@ >++# Copyright 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'target_defaults': { >++ 'configurations': { >++ 'Profile': { >++ 'xcode_settings': { >++ 'DEBUG_INFORMARTION_FORMAT': 'dwarf-with-dsym', >++ # We manually strip using strip -S and strip -x. We need to run >++ # dsymutil ourselves so we need symbols around before that. >++ 'DEPLOYMENT_POSTPROCESSING': 'NO', >++ 'GCC_OPTIMIZATION_LEVEL': 's', >++ 'GCC_SYMBOLS_PRIVATE_EXTERN': 'YES', >++ 'STRIP_INSTALLED_PRODUCT': 'NO', >++ 'USE_HEADERMAP': 'YES', >++ }, >++ }, >++ }, >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/stats/stats.gyp media/webrtc/trunk/webrtc/stats/stats.gyp >+new file mode 100644 >+index 000000000000..bbeb0213d0ba >+--- /dev/null >++++ media/webrtc/trunk/webrtc/stats/stats.gyp >+@@ -0,0 +1,27 @@ >++# Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'targets': [ >++ { >++ # GN version: webrtc/stats:rtc_stats >++ 'target_name': 'rtc_stats', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/api/api.gyp:rtc_stats_api', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ ], >++ 'sources': [ >++ 'rtcstats.cc', >++ 'rtcstats_objects.cc', >++ 'rtcstatsreport.cc', >++ ], >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/supplement.gypi media/webrtc/trunk/webrtc/supplement.gypi >+new file mode 100644 >+index 000000000000..05f1deffec15 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/supplement.gypi >+@@ -0,0 +1,64 @@ >++{ >++ 'variables': { >++ 'variables': { >++ 'webrtc_root%': '<(DEPTH)', # '<(DEPTH)/webrtc', >++ # Override the defaults in Chromium's build/common.gypi. >++ # Needed for ARC and libc++. >++ 'mac_sdk_min%': '10.11', >++ 'mac_deployment_target%': '10.7', >++ # Disable use of sysroot for Linux. It's enabled by default in Chromium, >++ # but it currently lacks the libudev-dev package. >++ # TODO(kjellander): Remove when crbug.com/561584 is fixed. >++ 'use_sysroot': 0, >++ }, >++ 'webrtc_root%': '<(webrtc_root)', >++ 'mac_deployment_target%': '<(mac_deployment_target)', >++ 'use_sysroot%': '<(use_sysroot)', >++ 'build_with_chromium': 0, >++ 'conditions': [ >++ ['OS=="ios"', { >++ # Set target_subarch for if not already set. This is needed because the >++ # Chromium iOS toolchain relies on target_subarch being set. >++ 'conditions': [ >++ ['target_arch=="arm" or target_arch=="ia32"', { >++ 'target_subarch%': 'arm32', >++ }], >++ ['target_arch=="arm64" or target_arch=="x64"', { >++ 'target_subarch%': 'arm64', >++ }], >++ ], >++ }], >++ ['OS=="android"', { >++ # MJPEG capture is not used on Android. Disable to reduce >++ # libjingle_peerconnection_so file size. >++ 'libyuv_disable_jpeg%': 1, >++ }], >++ ], >++ }, >++ 'target_defaults': { >++ 'target_conditions': [ >++ ['_target_name=="sanitizer_options"', { >++ 'conditions': [ >++ ['lsan==1', { >++ # Replace Chromium's LSan suppressions with our own for WebRTC. >++ 'sources/': [ >++ ['exclude', 'lsan_suppressions.cc'], >++ ], >++ 'sources': [ >++ '<(webrtc_root)/build/sanitizers/lsan_suppressions_webrtc.cc', >++ ], >++ }], >++ ['tsan==1', { >++ # Replace Chromium's TSan v2 suppressions with our own for WebRTC. >++ 'sources/': [ >++ ['exclude', 'tsan_suppressions.cc'], >++ ], >++ 'sources': [ >++ '<(webrtc_root)/build/sanitizers/tsan_suppressions_webrtc.cc', >++ ], >++ }], >++ ], >++ }], >++ ], >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/system_wrappers/BUILD.gn media/webrtc/trunk/webrtc/system_wrappers/BUILD.gn >+index f963f9427d7e..745867bf912b 100644 >+--- media/webrtc/trunk/webrtc/system_wrappers/BUILD.gn >++++ media/webrtc/trunk/webrtc/system_wrappers/BUILD.gn >+@@ -82,15 +82,7 @@ rtc_static_library("system_wrappers") { >+ >+ defines += [ "WEBRTC_THREAD_RR" ] >+ >+- if (!build_with_mozilla) { >+- deps += [ ":cpu_features_android" ] >+- } else { >+- include_dirs = [ >+- "/config/external/nspr", >+- "/nsprpub/lib/ds", >+- "/nsprpub/pr/include", >+- ] >+- } >++ deps += [ ":cpu_features_android" ] >+ >+ libs += [ "log" ] >+ } >+@@ -153,7 +145,7 @@ group("system_wrappers_default") { >+ ] >+ } >+ >+-if (is_android && !build_with_mozilla) { >++if (is_android) { >+ rtc_static_library("cpu_features_android") { >+ sources = [ >+ "source/cpu_features_android.c", >+diff --git media/webrtc/trunk/webrtc/system_wrappers/cpu_features_chromium.gyp media/webrtc/trunk/webrtc/system_wrappers/cpu_features_chromium.gyp >+new file mode 100644 >+index 000000000000..519fe4411958 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/system_wrappers/cpu_features_chromium.gyp >+@@ -0,0 +1,26 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'conditions': [ >++ ['OS=="android"', { >++ 'targets': [ >++ { >++ 'target_name': 'cpu_features_android', >++ 'type': 'static_library', >++ 'sources': [ >++ 'source/cpu_features_android.c', >++ ], >++ 'dependencies': [ >++ '../../../build/android/ndk.gyp:cpu_features', >++ ], >++ }, >++ ], >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/system_wrappers/cpu_features_webrtc.gyp media/webrtc/trunk/webrtc/system_wrappers/cpu_features_webrtc.gyp >+new file mode 100644 >+index 000000000000..228e8730725e >+--- /dev/null >++++ media/webrtc/trunk/webrtc/system_wrappers/cpu_features_webrtc.gyp >+@@ -0,0 +1,56 @@ >++# Copyright (c) 2014 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'variables': { >++ 'include_ndk_cpu_features%': 0, >++ }, >++ 'includes': [ '../build/common.gypi', ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'targets': [ >++ { >++ 'target_name': 'cpu_features_android', >++ 'type': 'static_library', >++ 'sources': [ >++ 'source/cpu_features_android.c', >++ ], >++ 'conditions': [ >++ ['include_ndk_cpu_features==1', { >++ 'includes': [ >++ '../../build/android/cpufeatures.gypi', >++ ], >++ }, { >++ 'sources': [ >++ 'source/droid-cpu-features.c', >++ 'source/droid-cpu-features.h', >++ ], >++ }], >++ 'dependencies': [ >++ # Not supported, please refer to the GN build. >++ #'../../build/android/ndk.gyp:cpu_features', >++ ], >++ }, >++ ], >++ }], >++ ['OS=="linux"', { >++ 'targets': [ >++ { >++ 'target_name': 'cpu_features_linux', >++ 'type': 'static_library', >++ 'sources': [ >++ 'source/cpu_features_linux.c', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ }, >++ ], >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/system_wrappers/system_wrappers.gyp media/webrtc/trunk/webrtc/system_wrappers/system_wrappers.gyp >+new file mode 100644 >+index 000000000000..d16263366d1c >+--- /dev/null >++++ media/webrtc/trunk/webrtc/system_wrappers/system_wrappers.gyp >+@@ -0,0 +1,194 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ '../build/common.gypi', ], >++ 'targets': [ >++ { >++ 'target_name': 'system_wrappers', >++ 'type': 'static_library', >++ 'dependencies': [ >++# '<(webrtc_root)/common.gyp:webrtc_common', >++# '../base/base.gyp:rtc_base_approved', >++ 'field_trial_default', >++ ], >++ 'sources': [ >++ 'include/aligned_array.h', >++ 'include/aligned_malloc.h', >++ 'include/atomic32.h', >++ 'include/clock.h', >++ 'include/cpu_features_wrapper.h', >++ 'include/cpu_info.h', >++ 'include/critical_section_wrapper.h', >++ 'include/data_log.h', >++ 'include/data_log_c.h', >++ 'include/data_log_impl.h', >++ 'include/event_wrapper.h', >++ 'include/field_trial.h', >++ 'include/file_wrapper.h', >++ 'include/fix_interlocked_exchange_pointer_win.h', >++ 'include/logging.h', >++ 'include/metrics.h', >++ 'include/ntp_time.h', >++ 'include/rtp_to_ntp.h', >++ 'include/rw_lock_wrapper.h', >++ 'include/sleep.h', >++ 'include/sort.h', >++ 'include/static_instance.h', >++ 'include/stl_util.h', >++ 'include/stringize_macros.h', >++ 'include/timestamp_extrapolator.h', >++ 'include/trace.h', >++ 'include/utf_util_win.h', >++ 'source/aligned_malloc.cc', >++ 'source/atomic32_win.cc', >++ 'source/clock.cc', >++ 'source/condition_variable_event_win.cc', >++ 'source/condition_variable_event_win.h', >++ 'source/cpu_features.cc', >++ 'source/cpu_info.cc', >++# TODO: removed >++# 'source/data_log_c.cc', >++ 'source/event.cc', >++ 'source/event_timer_posix.cc', >++ 'source/event_timer_posix.h', >++ 'source/event_timer_win.cc', >++ 'source/event_timer_win.h', >++ 'source/file_impl.cc', >++ 'source/logging.cc', >++ 'source/rtp_to_ntp_estimator.cc', >++ 'source/rw_lock.cc', >++ 'source/rw_lock_posix.cc', >++ 'source/rw_lock_posix.h', >++ 'source/rw_lock_win.cc', >++ 'source/rw_lock_win.h', >++ 'source/rw_lock_winxp_win.cc', >++ 'source/rw_lock_winxp_win.h', >++ 'source/sleep.cc', >++# TODO: removed >++# 'source/sort.cc', >++ 'source/timestamp_extrapolator.cc', >++ 'source/trace_impl.cc', >++ 'source/trace_impl.h', >++ 'source/trace_posix.cc', >++ 'source/trace_posix.h', >++ 'source/trace_win.cc', >++ 'source/trace_win.h', >++ ], >++ 'conditions': [ >++ #TODO: missing >++ #['enable_data_logging==1', { >++ # 'sources': [ 'source/data_log.cc', ], >++ #}, { >++ # 'sources': [ 'source/data_log_no_op.cc', ], >++ #},], >++ ['build_with_mozilla', { >++ 'sources': [ >++ 'source/metrics_default.cc', >++ ], >++ }], >++ ['OS=="android"', { >++ 'defines': [ >++ 'WEBRTC_THREAD_RR', >++ ], >++ 'conditions': [ >++ ['build_with_chromium==1', { >++ 'dependencies': [ >++# 'cpu_features_chromium.gyp:cpu_features_android', >++ ], >++ }, { >++ 'dependencies': [ >++# 'cpu_features_webrtc.gyp:cpu_features_android', >++ ], >++ }], >++ ], >++ 'link_settings': { >++ 'libraries': [ >++ '-llog', >++ ], >++ }, >++ 'sources': [ >++ 'include/logcat_trace_context.h', >++ 'source/logcat_trace_context.cc', >++ ], >++ }], >++ ['OS=="linux"', { >++ 'defines': [ >++ 'WEBRTC_THREAD_RR', >++ ], >++ 'conditions': [ >++ ['build_with_chromium==0', { >++ 'dependencies': [ >++# 'cpu_features_webrtc.gyp:cpu_features_linux', >++ ], >++ }], >++ ], >++ 'link_settings': { >++ 'libraries': [ '-lrt', ], >++ }, >++ }], >++ ['OS=="mac"', { >++ 'link_settings': { >++ 'libraries': [ '$(SDKROOT)/System/Library/Frameworks/ApplicationServices.framework', ], >++ }, >++ }], >++ ['os_bsd==1', { >++ 'defines': [ >++ 'WEBRTC_THREAD_RR', >++ ], >++ }], >++ ['OS=="linux" or OS=="android" or os_bsd==1', { >++ 'sources': [ >++ 'source/atomic32_non_darwin_unix.cc', >++ ], >++ }], >++ ['OS=="ios" or OS=="mac"', { >++ 'defines': [ >++ 'WEBRTC_THREAD_RR', >++ ], >++ 'sources': [ >++ 'source/atomic32_darwin.cc', >++ ], >++ }], >++ ['OS=="win"', { >++ 'link_settings': { >++ 'libraries': [ '-lwinmm.lib', ], >++ }, >++ }], >++ ], # conditions >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ 4334, # Ignore warning on shift operator promotion. >++ ], >++ }, { >++ 'target_name': 'field_trial_default', >++ 'type': 'static_library', >++ 'sources': [ >++ 'include/field_trial_default.h', >++ 'source/field_trial_default.cc', >++ ] >++ }, { >++ 'target_name': 'metrics_default', >++ 'type': 'static_library', >++ 'sources': [ >++ 'include/metrics_default.h', >++ 'source/metrics_default.cc', >++ ], >++ }, { >++ 'target_name': 'system_wrappers_default', >++ 'type': 'static_library', >++ 'dependencies': [ >++# 'system_wrappers', >++# 'field_trial_default', >++# 'metrics_default', >++ ] >++ }, >++ ], # targets >++} >++ >+diff --git media/webrtc/trunk/webrtc/test/test.gyp media/webrtc/trunk/webrtc/test/test.gyp >+new file mode 100644 >+index 000000000000..c80714a4a9d3 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/test/test.gyp >+@@ -0,0 +1,296 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# TODO(andrew): consider moving test_support to src/base/test. >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'video_test_common', >++ 'type': 'static_library', >++ 'sources': [ >++ 'fake_texture_frame.cc', >++ 'fake_texture_frame.h', >++ 'frame_generator.cc', >++ 'frame_generator.h', >++ 'frame_utils.cc', >++ 'frame_utils.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ ], >++ }, >++ { >++ 'target_name': 'rtp_test_utils', >++ 'type': 'static_library', >++ 'sources': [ >++ 'rtcp_packet_parser.cc', >++ 'rtcp_packet_parser.h', >++ 'rtp_file_reader.cc', >++ 'rtp_file_reader.h', >++ 'rtp_file_writer.cc', >++ 'rtp_file_writer.h', >++ ], >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ ], >++ }, >++ { >++ 'target_name': 'field_trial', >++ 'type': 'static_library', >++ 'sources': [ >++ 'field_trial.cc', >++ 'field_trial.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ ], >++ }, >++ { >++ 'target_name': 'test_main', >++ 'type': 'static_library', >++ 'sources': [ >++ 'test_main.cc', >++ ], >++ 'dependencies': [ >++ 'field_trial', >++ 'test_support', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ], >++ }, >++ { >++ 'target_name': 'test_support', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/testing/gmock.gyp:gmock', >++ '<(webrtc_root)/base/base.gyp:gtest_prod', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ 'video_test_common', >++ ], >++ 'sources': [ >++ 'gmock.h', >++ 'gtest.h', >++ 'testsupport/fileutils.cc', >++ 'testsupport/fileutils.h', >++ 'testsupport/frame_reader.cc', >++ 'testsupport/frame_reader.h', >++ 'testsupport/frame_writer.cc', >++ 'testsupport/frame_writer.h', >++ 'testsupport/iosfileutils.mm', >++ 'testsupport/metrics/video_metrics.h', >++ 'testsupport/metrics/video_metrics.cc', >++ 'testsupport/mock/mock_frame_reader.h', >++ 'testsupport/mock/mock_frame_writer.h', >++ 'testsupport/packet_reader.cc', >++ 'testsupport/packet_reader.h', >++ 'testsupport/perf_test.cc', >++ 'testsupport/perf_test.h', >++ 'testsupport/trace_to_stderr.cc', >++ 'testsupport/trace_to_stderr.h', >++ ], >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ }], >++ ['use_x11==1', { >++ 'dependencies': [ >++ '<(DEPTH)/tools/xdisplaycheck/xdisplaycheck.gyp:xdisplaycheck', >++ ], >++ }], >++ ], >++ }, >++ { >++ # Depend on this target when you want to have test_support but also the >++ # main method needed for gtest to execute! >++ 'target_name': 'test_support_main', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'field_trial', >++ 'test_support', >++ '<(DEPTH)/testing/gmock.gyp:gmock', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ], >++ 'sources': [ >++ 'run_all_unittests.cc', >++ 'test_suite.cc', >++ 'test_suite.h', >++ ], >++ }, >++ { >++ # Depend on this target when you want to have test_support and a special >++ # main for mac which will run your test on a worker thread and consume >++ # events on the main thread. Useful if you want to access a webcam. >++ # This main will provide all the scaffolding and objective-c black magic >++ # for you. All you need to do is to implement a function in the >++ # run_threaded_main_mac.h file (ImplementThisToRunYourTest). >++ 'target_name': 'test_support_main_threaded_mac', >++ 'type': 'static_library', >++ 'dependencies': [ >++ 'test_support', >++ ], >++ 'sources': [ >++ 'testsupport/mac/run_threaded_main_mac.h', >++ 'testsupport/mac/run_threaded_main_mac.mm', >++ ], >++ }, >++ { >++ 'target_name': 'test_common', >++ 'type': 'static_library', >++ 'sources': [ >++ 'call_test.cc', >++ 'call_test.h', >++ 'configurable_frame_size_encoder.cc', >++ 'configurable_frame_size_encoder.h', >++ 'constants.cc', >++ 'constants.h', >++ 'direct_transport.cc', >++ 'direct_transport.h', >++ 'drifting_clock.cc', >++ 'drifting_clock.h', >++ 'encoder_settings.cc', >++ 'encoder_settings.h', >++ 'fake_audio_device.cc', >++ 'fake_audio_device.h', >++ 'fake_decoder.cc', >++ 'fake_decoder.h', >++ 'fake_encoder.cc', >++ 'fake_encoder.h', >++ 'fake_network_pipe.cc', >++ 'fake_network_pipe.h', >++ 'fake_videorenderer.h', >++ 'frame_generator_capturer.cc', >++ 'frame_generator_capturer.h', >++ 'layer_filtering_transport.cc', >++ 'layer_filtering_transport.h', >++ 'mock_transport.h', >++ 'mock_voe_channel_proxy.h', >++ 'mock_voice_engine.h', >++ 'null_transport.cc', >++ 'null_transport.h', >++ 'rtp_rtcp_observer.h', >++ 'statistics.cc', >++ 'statistics.h', >++ 'vcm_capturer.cc', >++ 'vcm_capturer.h', >++ 'video_capturer.h', >++ 'win/run_loop_win.cc', >++ ], >++ 'conditions': [ >++ ['OS!="win"', { >++ 'sources': [ >++ 'run_loop.h', >++ 'run_loop.cc', >++ ], >++ }], >++ ], >++ 'dependencies': [ >++ '<(DEPTH)/testing/gmock.gyp:gmock', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/modules/modules.gyp:media_file', >++ '<(webrtc_root)/webrtc.gyp:webrtc', >++ 'rtp_test_utils', >++ 'test_support', >++ ], >++ }, >++ { >++ 'target_name': 'test_renderer', >++ 'type': 'static_library', >++ 'sources': [ >++ 'linux/glx_renderer.cc', >++ 'linux/glx_renderer.h', >++ 'linux/video_renderer_linux.cc', >++ 'mac/video_renderer_mac.h', >++ 'mac/video_renderer_mac.mm', >++ 'video_renderer.cc', >++ 'video_renderer.h', >++ 'win/d3d_renderer.cc', >++ 'win/d3d_renderer.h', >++ ], >++ 'conditions': [ >++ ['OS!="linux" and OS!="mac" and OS!="win"', { >++ 'sources': [ >++ 'null_platform_renderer.cc', >++ ], >++ }], >++ ['OS=="linux" or OS=="mac"', { >++ 'sources' : [ >++ 'gl/gl_renderer.cc', >++ 'gl/gl_renderer.h', >++ ], >++ }], >++ ['OS=="win"', { >++ 'include_dirs': [ >++ '<(directx_sdk_path)/Include', >++ ], >++ }], >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-bool-conversion', >++ '-Wno-comment', >++ '-Wno-delete-non-virtual-dtor', >++ ], >++ }, >++ }, >++ }], >++ ], >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/modules/modules.gyp:media_file', >++ 'test_support', >++ 'video_test_common', >++ ], >++ 'direct_dependent_settings': { >++ 'conditions': [ >++ ['OS=="linux"', { >++ 'libraries': [ >++ '-lXext', >++ '-lX11', >++ '-lGL', >++ ], >++ }], >++ ['OS=="android"', { >++ 'libraries' : [ >++ '-lGLESv2', '-llog', >++ ], >++ }], >++ ['OS=="mac"', { >++ 'xcode_settings' : { >++ 'OTHER_LDFLAGS' : [ >++ '-framework Cocoa', >++ '-framework OpenGL', >++ '-framework CoreVideo', >++ ], >++ }, >++ }], >++ ], >++ }, >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/tools/internal_tools.gyp media/webrtc/trunk/webrtc/tools/internal_tools.gyp >+new file mode 100644 >+index 000000000000..bee8a8bf0e21 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/tools/internal_tools.gyp >+@@ -0,0 +1,28 @@ >++ # Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++# This file is used for internal tools used by the WebRTC code only. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'command_line_parser', >++ 'type': 'static_library', >++ 'sources': [ >++ 'simple_command_line_parser.h', >++ 'simple_command_line_parser.cc', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:gtest_prod', >++ ], >++ }, # command_line_parser >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/tools/tools.gyp media/webrtc/trunk/webrtc/tools/tools.gyp >+new file mode 100644 >+index 000000000000..3b3a84292d5f >+--- /dev/null >++++ media/webrtc/trunk/webrtc/tools/tools.gyp >+@@ -0,0 +1,146 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'video_quality_analysis', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ ], >++ 'export_dependent_settings': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ ], >++ 'sources': [ >++ 'frame_analyzer/video_quality_analysis.h', >++ 'frame_analyzer/video_quality_analysis.cc', >++ ], >++ }, # video_quality_analysis >++ { >++ 'target_name': 'frame_analyzer', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ 'video_quality_analysis', >++ ], >++ 'sources': [ >++ 'frame_analyzer/frame_analyzer.cc', >++ ], >++ }, # frame_analyzer >++ { >++ 'target_name': 'psnr_ssim_analyzer', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ 'video_quality_analysis', >++ ], >++ 'sources': [ >++ 'psnr_ssim_analyzer/psnr_ssim_analyzer.cc', >++ ], >++ }, # psnr_ssim_analyzer >++ { >++ 'target_name': 'rgba_to_i420_converter', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ ], >++ 'sources': [ >++ 'converter/converter.h', >++ 'converter/converter.cc', >++ 'converter/rgba_to_i420_converter.cc', >++ ], >++ }, # rgba_to_i420_converter >++ { >++ 'target_name': 'frame_editing_lib', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ ], >++ 'sources': [ >++ 'frame_editing/frame_editing_lib.cc', >++ 'frame_editing/frame_editing_lib.h', >++ ], >++ # Disable warnings to enable Win64 build, issue 1323. >++ 'msvs_disabled_warnings': [ >++ 4267, # size_t to int truncation. >++ ], >++ }, # frame_editing_lib >++ { >++ 'target_name': 'frame_editor', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ 'frame_editing_lib', >++ ], >++ 'sources': [ >++ 'frame_editing/frame_editing.cc', >++ ], >++ }, # frame_editing >++ { >++ 'target_name': 'force_mic_volume_max', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:audio_device', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ ], >++ 'sources': [ >++ 'force_mic_volume_max/force_mic_volume_max.cc', >++ ], >++ }, # force_mic_volume_max >++ ], >++ 'conditions': [ >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { >++ 'target_name': 'chart_proto', >++ 'type': 'static_library', >++ 'sources': [ >++ 'event_log_visualizer/chart.proto', >++ ], >++ 'variables': { >++ 'proto_in_dir': 'event_log_visualizer', >++ 'proto_out_dir': 'webrtc/tools/event_log_visualizer', >++ }, >++ 'includes': ['../build/protoc.gypi'], >++ }, >++ { >++ # RTC event log visualization library >++ 'target_name': 'event_log_visualizer_utils', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_impl', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_parser', >++ '<(webrtc_root)/modules/modules.gyp:congestion_controller', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ':chart_proto', >++ ], >++ 'sources': [ >++ 'event_log_visualizer/analyzer.cc', >++ 'event_log_visualizer/analyzer.h', >++ 'event_log_visualizer/plot_base.cc', >++ 'event_log_visualizer/plot_base.h', >++ 'event_log_visualizer/plot_protobuf.cc', >++ 'event_log_visualizer/plot_protobuf.h', >++ 'event_log_visualizer/plot_python.cc', >++ 'event_log_visualizer/plot_python.h', >++ ], >++ 'export_dependent_settings': [ >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_parser', >++ ':chart_proto', >++ ], >++ }, >++ ], >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/video/BUILD.gn media/webrtc/trunk/webrtc/video/BUILD.gn >+index 53422e2e56a1..3b33be38a353 100644 >+--- media/webrtc/trunk/webrtc/video/BUILD.gn >++++ media/webrtc/trunk/webrtc/video/BUILD.gn >+@@ -63,6 +63,7 @@ rtc_static_library("video") { >+ "../base:rtc_task_queue", >+ "../common_video", >+ "../logging:rtc_event_log_api", >++ "../media:rtc_media_base", >+ "../modules/bitrate_controller", >+ "../modules/congestion_controller", >+ "../modules/pacing", >+@@ -74,12 +75,6 @@ rtc_static_library("video") { >+ "../system_wrappers", >+ "../voice_engine", >+ ] >+- >+- if (!build_with_mozilla) { >+- deps += [ >+- "../media:rtc_media_base", >+- ] >+- } >+ } >+ >+ if (rtc_include_tests) { >+@@ -91,6 +86,7 @@ if (rtc_include_tests) { >+ ] >+ deps = [ >+ "../base:rtc_task_queue", >++ "../media:rtc_media_base", >+ "../system_wrappers", >+ "//testing/gtest", >+ "//webrtc/test:test_renderer", >+@@ -102,11 +98,6 @@ if (rtc_include_tests) { >+ # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163). >+ suppressed_configs += [ "//build/config/clang:find_bad_constructs" ] >+ } >+- if (!build_with_mozilla) { >+- deps += [ >+- "../media:rtc_media_base", >+- ] >+- } >+ } >+ >+ rtc_source_set("video_full_stack_tests") { >+@@ -217,6 +208,7 @@ if (rtc_include_tests) { >+ ] >+ deps = [ >+ ":video", >++ "../media:rtc_media_base", >+ "//testing/gmock", >+ "//testing/gtest", >+ ] >+@@ -227,10 +219,5 @@ if (rtc_include_tests) { >+ if (rtc_use_h264) { >+ defines += [ "WEBRTC_USE_H264" ] >+ } >+- if (!build_with_mozilla) { >+- deps += [ >+- "../media:rtc_media_base", >+- ] >+- } >+ } >+ } >+diff --git media/webrtc/trunk/webrtc/video/webrtc_video.gypi media/webrtc/trunk/webrtc/video/webrtc_video.gypi >+new file mode 100644 >+index 000000000000..8d5280282fb3 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/video/webrtc_video.gypi >+@@ -0,0 +1,69 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'variables': { >++ 'webrtc_video_dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_video/common_video.gyp:common_video', >++ '<(webrtc_root)/modules/modules.gyp:bitrate_controller', >++ '<(webrtc_root)/modules/modules.gyp:congestion_controller', >++ '<(webrtc_root)/modules/modules.gyp:paced_sender', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ '<(webrtc_root)/modules/modules.gyp:video_capture_module', >++ '<(webrtc_root)/modules/modules.gyp:video_processing', >++ '<(webrtc_root)/modules/modules.gyp:webrtc_utility', >++ '<(webrtc_root)/modules/modules.gyp:webrtc_video_coding', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_api', >++ '<(webrtc_root)/api/api.gyp:video_frame_api', >++ '<(webrtc_root)/media/media.gyp:mozilla_rtc_media' >++ ], >++ 'webrtc_video_sources': [ >++ 'video/call_stats.cc', >++ 'video/call_stats.h', >++ 'video/encoder_rtcp_feedback.cc', >++ 'video/encoder_rtcp_feedback.h', >++ 'video/overuse_frame_detector.cc', >++ 'video/overuse_frame_detector.h', >++ 'video/payload_router.cc', >++ 'video/payload_router.h', >++ 'video/quality_threshold.cc', >++ 'video/quality_threshold.h', >++ 'video/receive_statistics_proxy.cc', >++ 'video/receive_statistics_proxy.h', >++ 'video/report_block_stats.cc', >++ 'video/report_block_stats.h', >++ 'video/rtp_stream_receiver.cc', >++ 'video/rtp_stream_receiver.h', >++ 'video/rtp_streams_synchronizer.cc', >++ 'video/rtp_streams_synchronizer.h', >++ 'video/send_delay_stats.cc', >++ 'video/send_delay_stats.h', >++ 'video/send_statistics_proxy.cc', >++ 'video/send_statistics_proxy.h', >++ 'video/stats_counter.cc', >++ 'video/stats_counter.h', >++ 'video/stream_synchronization.cc', >++ 'video/stream_synchronization.h', >++ 'video/transport_adapter.cc', >++ 'video/transport_adapter.h', >++ 'video/video_receive_stream.cc', >++ 'video/video_receive_stream.h', >++ 'video/video_send_stream.cc', >++ 'video/video_send_stream.h', >++ 'video/video_stream_decoder.cc', >++ 'video/video_stream_decoder.h', >++ 'video/vie_encoder.cc', >++ 'video/vie_encoder.h', >++ 'video/vie_remb.cc', >++ 'video/vie_remb.h', >++ ], >++ }, >++} >+diff --git media/webrtc/trunk/webrtc/voice_engine/voice_engine.gyp media/webrtc/trunk/webrtc/voice_engine/voice_engine.gyp >+new file mode 100644 >+index 000000000000..63d1991dc3e3 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/voice_engine/voice_engine.gyp >+@@ -0,0 +1,146 @@ >++# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++ >++{ >++ 'includes': [ >++ '../build/common.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'audio_coder', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'coder.cc', >++ 'coder.h', >++ ] >++ }, >++ { >++ 'target_name': 'file_player', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'file_player.cc', >++ 'file_player.h', >++ ] >++ }, >++ { >++ 'target_name': 'file_recorder', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ ], >++ 'sources': [ >++ 'file_recorder.cc', >++ 'file_recorder.h', >++ ] >++ }, >++ { >++ 'target_name': 'voice_engine', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/api/api.gyp:call_api', >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ '<(webrtc_root)/modules/modules.gyp:audio_coding_module', >++ '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer', >++ '<(webrtc_root)/modules/modules.gyp:audio_device', >++ '<(webrtc_root)/modules/modules.gyp:audio_processing', >++ '<(webrtc_root)/modules/modules.gyp:bitrate_controller', >++ '<(webrtc_root)/modules/modules.gyp:media_file', >++ '<(webrtc_root)/modules/modules.gyp:paced_sender', >++ '<(webrtc_root)/modules/modules.gyp:rtp_rtcp', >++ '<(webrtc_root)/modules/modules.gyp:webrtc_utility', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ '<(webrtc_root)/webrtc.gyp:rtc_event_log_api', >++ 'audio_coder', >++ 'file_player', >++ 'file_recorder', >++ 'level_indicator', >++ ], >++ 'export_dependent_settings': [ >++ '<(webrtc_root)/modules/modules.gyp:audio_coding_module', >++ ], >++ 'sources': [ >++ 'include/voe_audio_processing.h', >++ 'include/voe_base.h', >++ 'include/voe_codec.h', >++ 'include/voe_errors.h', >++ 'include/voe_external_media.h', >++ 'include/voe_file.h', >++ 'include/voe_hardware.h', >++ 'include/voe_neteq_stats.h', >++ 'include/voe_network.h', >++ 'include/voe_rtp_rtcp.h', >++ 'include/voe_video_sync.h', >++ 'include/voe_volume_control.h', >++ 'channel.cc', >++ 'channel.h', >++ 'channel_manager.cc', >++ 'channel_manager.h', >++ 'channel_proxy.cc', >++ 'channel_proxy.h', >++ 'monitor_module.cc', >++ 'monitor_module.h', >++ 'output_mixer.cc', >++ 'output_mixer.h', >++ 'shared_data.cc', >++ 'shared_data.h', >++ 'statistics.cc', >++ 'statistics.h', >++ 'transmit_mixer.cc', >++ 'transmit_mixer.h', >++ 'utility.cc', >++ 'utility.h', >++ 'voe_audio_processing_impl.cc', >++ 'voe_audio_processing_impl.h', >++ 'voe_base_impl.cc', >++ 'voe_base_impl.h', >++ 'voe_codec_impl.cc', >++ 'voe_codec_impl.h', >++ 'voe_external_media_impl.cc', >++ 'voe_external_media_impl.h', >++ 'voe_file_impl.cc', >++ 'voe_file_impl.h', >++ 'voe_hardware_impl.cc', >++ 'voe_hardware_impl.h', >++ 'voe_neteq_stats_impl.cc', >++ 'voe_neteq_stats_impl.h', >++ 'voe_network_impl.cc', >++ 'voe_network_impl.h', >++ 'voe_rtp_rtcp_impl.cc', >++ 'voe_rtp_rtcp_impl.h', >++ 'voe_video_sync_impl.cc', >++ 'voe_video_sync_impl.h', >++ 'voe_volume_control_impl.cc', >++ 'voe_volume_control_impl.h', >++ 'voice_engine_defines.h', >++ 'voice_engine_impl.cc', >++ 'voice_engine_impl.h', >++ ], >++ }, >++ { >++ 'target_name': 'level_indicator', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', >++ ], >++ 'sources': [ >++ 'level_indicator.cc', >++ 'level_indicator.h', >++ ] >++ }, >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/webrtc.gyp media/webrtc/trunk/webrtc/webrtc.gyp >+new file mode 100644 >+index 000000000000..cefd8e5a5333 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/webrtc.gyp >+@@ -0,0 +1,129 @@ >++# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'includes': [ >++ 'build/common.gypi', >++ 'audio/webrtc_audio.gypi', >++ 'call/webrtc_call.gypi', >++ 'video/webrtc_video.gypi', >++ ], >++ 'targets': [ >++ { >++ 'target_name': 'webrtc_lib', >++ 'type': 'static_library', >++ 'sources': [ >++ 'call.h', >++ 'config.h', >++ 'video_receive_stream.h', >++ 'video_send_stream.h', >++ >++ '<@(webrtc_audio_sources)', >++ '<@(webrtc_call_sources)', >++ '<@(webrtc_video_sources)', >++ ], >++ 'dependencies': [ >++ 'common.gyp:*', >++ '<@(webrtc_audio_dependencies)', >++ '<@(webrtc_call_dependencies)', >++ '<@(webrtc_video_dependencies)', >++ 'rtc_event_log_impl', >++ '<(webrtc_root)/modules/modules.gyp:audio_mixer', >++ ], >++ 'conditions': [ >++ # TODO(andresp): Chromium should link directly with this and no if >++ # conditions should be needed on webrtc build files. >++ ['build_with_chromium==1', { >++ 'dependencies': [ >++ '<(webrtc_root)/modules/modules.gyp:video_capture', >++ ], >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'rtc_event_log_api', >++ 'type': 'static_library', >++ 'sources': [ >++ 'logging/rtc_event_log/rtc_event_log.h', >++ ], >++ }, >++ { >++ 'target_name': 'rtc_event_log_impl', >++ 'type': 'static_library', >++ 'sources': [ >++ 'logging/rtc_event_log/ringbuffer.h', >++ 'logging/rtc_event_log/rtc_event_log.cc', >++ 'logging/rtc_event_log/rtc_event_log_helper_thread.cc', >++ 'logging/rtc_event_log/rtc_event_log_helper_thread.h', >++ ], >++ 'conditions': [ >++ # If enable_protobuf is defined, we want to compile the protobuf >++ # and add rtc_event_log.pb.h and rtc_event_log.pb.cc to the sources. >++ ['enable_protobuf==1', { >++ 'dependencies': [ >++ 'rtc_event_log_api', >++ 'rtc_event_log_proto', >++ ], >++ 'defines': [ >++ 'ENABLE_RTC_EVENT_LOG', >++ ], >++ }], >++ ], >++ }, >++ ], # targets >++ 'conditions': [ >++ ['include_tests==1', { >++ 'includes': [ >++ 'webrtc_tests.gypi', >++ ], >++ }], >++ ['enable_protobuf==1', { >++ 'targets': [ >++ { >++ # This target should only be built if enable_protobuf is defined >++ 'target_name': 'rtc_event_log_proto', >++ 'type': 'static_library', >++ 'sources': ['logging/rtc_event_log/rtc_event_log.proto',], >++ 'variables': { >++ 'proto_in_dir': 'logging/rtc_event_log', >++ 'proto_out_dir': 'webrtc/logging/rtc_event_log', >++ }, >++ 'includes': ['build/protoc.gypi'], >++ }, >++ { >++ 'target_name': 'rtc_event_log_parser', >++ 'type': 'static_library', >++ 'sources': [ >++ 'logging/rtc_event_log/rtc_event_log_parser.cc', >++ 'logging/rtc_event_log/rtc_event_log_parser.h', >++ ], >++ 'dependencies': [ >++ 'rtc_event_log_proto', >++ ], >++ 'export_dependent_settings': [ >++ 'rtc_event_log_proto', >++ ], >++ }, >++ ], >++ }], >++ ['include_tests==1 and enable_protobuf==1', { >++ 'targets': [ >++ { >++ 'target_name': 'rtc_event_log2rtp_dump', >++ 'type': 'executable', >++ 'sources': ['logging/rtc_event_log2rtp_dump.cc',], >++ 'dependencies': [ >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ 'rtc_event_log_parser', >++ 'rtc_event_log_proto', >++ 'test/test.gyp:rtp_test_utils' >++ ], >++ }, >++ ], >++ }], >++ ], # conditions >++} >+diff --git media/webrtc/trunk/webrtc/webrtc_examples.gyp media/webrtc/trunk/webrtc/webrtc_examples.gyp >+new file mode 100755 >+index 000000000000..6627c3134338 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/webrtc_examples.gyp >+@@ -0,0 +1,471 @@ >++# Copyright (c) 2012 The WebRTC Project Authors. All rights reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'conditions': [ >++ ['OS=="linux" or OS=="win"', { >++ 'targets': [ >++ { >++ 'target_name': 'relayserver', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/pc/pc.gyp:rtc_pc', >++ ], >++ 'sources': [ >++ 'examples/relayserver/relayserver_main.cc', >++ ], >++ }, # target relayserver >++ { >++ 'target_name': 'stunserver', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/pc/pc.gyp:rtc_pc', >++ ], >++ 'sources': [ >++ 'examples/stunserver/stunserver_main.cc', >++ ], >++ }, # target stunserver >++ { >++ 'target_name': 'turnserver', >++ 'type': 'executable', >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/pc/pc.gyp:rtc_pc', >++ ], >++ 'sources': [ >++ 'examples/turnserver/turnserver_main.cc', >++ ], >++ }, # target turnserver >++ { >++ 'target_name': 'peerconnection_server', >++ 'type': 'executable', >++ 'sources': [ >++ 'examples/peerconnection/server/data_socket.cc', >++ 'examples/peerconnection/server/data_socket.h', >++ 'examples/peerconnection/server/main.cc', >++ 'examples/peerconnection/server/peer_channel.cc', >++ 'examples/peerconnection/server/peer_channel.h', >++ 'examples/peerconnection/server/utils.cc', >++ 'examples/peerconnection/server/utils.h', >++ ], >++ 'dependencies': [ >++ '<(webrtc_root)/base/base.gyp:rtc_base_approved', >++ '<(webrtc_root)/common.gyp:webrtc_common', >++ '<(webrtc_root)/tools/internal_tools.gyp:command_line_parser', >++ ], >++ # TODO(ronghuawu): crbug.com/167187 fix size_t to int truncations. >++ 'msvs_disabled_warnings': [ 4309, ], >++ }, # target peerconnection_server >++ { >++ 'target_name': 'peerconnection_client', >++ 'type': 'executable', >++ 'sources': [ >++ 'examples/peerconnection/client/conductor.cc', >++ 'examples/peerconnection/client/conductor.h', >++ 'examples/peerconnection/client/defaults.cc', >++ 'examples/peerconnection/client/defaults.h', >++ 'examples/peerconnection/client/peer_connection_client.cc', >++ 'examples/peerconnection/client/peer_connection_client.h', >++ ], >++ 'dependencies': [ >++ 'api/api.gyp:libjingle_peerconnection', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ], >++ 'conditions': [ >++ ['build_json==1', { >++ 'dependencies': [ >++ '<(DEPTH)/third_party/jsoncpp/jsoncpp.gyp:jsoncpp', >++ ], >++ }], >++ # TODO(ronghuawu): Move these files to a win/ directory then they >++ # can be excluded automatically. >++ ['OS=="win"', { >++ 'sources': [ >++ 'examples/peerconnection/client/flagdefs.h', >++ 'examples/peerconnection/client/main.cc', >++ 'examples/peerconnection/client/main_wnd.cc', >++ 'examples/peerconnection/client/main_wnd.h', >++ ], >++ 'msvs_settings': { >++ 'VCLinkerTool': { >++ 'SubSystem': '2', # Windows >++ }, >++ }, >++ }], # OS=="win" >++ ['OS=="win" and clang==1', { >++ 'msvs_settings': { >++ 'VCCLCompilerTool': { >++ 'AdditionalOptions': [ >++ # Disable warnings failing when compiling with Clang on Windows. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 >++ '-Wno-reorder', >++ '-Wno-unused-function', >++ ], >++ }, >++ }, >++ }], # OS=="win" and clang==1 >++ ['OS=="linux"', { >++ 'sources': [ >++ 'examples/peerconnection/client/linux/main.cc', >++ 'examples/peerconnection/client/linux/main_wnd.cc', >++ 'examples/peerconnection/client/linux/main_wnd.h', >++ ], >++ 'cflags': [ >++ '<!@(pkg-config --cflags glib-2.0 gobject-2.0 gtk+-2.0)', >++ ], >++ 'link_settings': { >++ 'ldflags': [ >++ '<!@(pkg-config --libs-only-L --libs-only-other glib-2.0' >++ ' gobject-2.0 gthread-2.0 gtk+-2.0)', >++ ], >++ 'libraries': [ >++ '<!@(pkg-config --libs-only-l glib-2.0 gobject-2.0' >++ ' gthread-2.0 gtk+-2.0)', >++ '-lX11', >++ '-lXcomposite', >++ '-lXext', >++ '-lXrender', >++ ], >++ }, >++ }], # OS=="linux" >++ ['OS=="linux" and target_arch=="ia32"', { >++ 'cflags': [ >++ '-Wno-sentinel', >++ ], >++ }], # OS=="linux" and target_arch=="ia32" >++ ], # conditions >++ }, # target peerconnection_client >++ ], # targets >++ }], # OS=="linux" or OS=="win" >++ >++ ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', { >++ 'targets': [ >++ { >++ 'target_name': 'apprtc_common', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:field_trial_default', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default', >++ ], >++ 'sources': [ >++ 'examples/objc/AppRTCMobile/common/ARDUtilities.h', >++ 'examples/objc/AppRTCMobile/common/ARDUtilities.m', >++ ], >++ 'include_dirs': [ >++ 'examples/objc/AppRTCMobile/common', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'examples/objc/AppRTCMobile/common', >++ ], >++ }, >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'xcode_settings': { >++ 'WARNING_CFLAGS': [ >++ # Suppress compiler warnings about deprecated that triggered >++ # when moving from ios_deployment_target 7.0 to 9.0. >++ # See webrtc:5549 for more details. >++ '-Wno-deprecated-declarations', >++ ], >++ }, >++ }], >++ ['OS=="mac"', { >++ 'xcode_settings': { >++ 'MACOSX_DEPLOYMENT_TARGET' : '10.8', >++ }, >++ }], >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework QuartzCore', >++ ], >++ }, >++ }, >++ }, >++ { >++ 'target_name': 'apprtc_signaling', >++ 'type': 'static_library', >++ 'dependencies': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_peerconnection_objc', >++ 'apprtc_common', >++ 'socketrocket', >++ ], >++ 'sources': [ >++ 'examples/objc/AppRTCMobile/ARDAppClient.h', >++ 'examples/objc/AppRTCMobile/ARDAppClient.m', >++ 'examples/objc/AppRTCMobile/ARDAppClient+Internal.h', >++ 'examples/objc/AppRTCMobile/ARDAppEngineClient.h', >++ 'examples/objc/AppRTCMobile/ARDAppEngineClient.m', >++ 'examples/objc/AppRTCMobile/ARDBitrateTracker.h', >++ 'examples/objc/AppRTCMobile/ARDBitrateTracker.m', >++ 'examples/objc/AppRTCMobile/ARDCEODTURNClient.h', >++ 'examples/objc/AppRTCMobile/ARDCEODTURNClient.m', >++ 'examples/objc/AppRTCMobile/ARDJoinResponse.h', >++ 'examples/objc/AppRTCMobile/ARDJoinResponse.m', >++ 'examples/objc/AppRTCMobile/ARDJoinResponse+Internal.h', >++ 'examples/objc/AppRTCMobile/ARDMessageResponse.h', >++ 'examples/objc/AppRTCMobile/ARDMessageResponse.m', >++ 'examples/objc/AppRTCMobile/ARDMessageResponse+Internal.h', >++ 'examples/objc/AppRTCMobile/ARDRoomServerClient.h', >++ 'examples/objc/AppRTCMobile/ARDSDPUtils.h', >++ 'examples/objc/AppRTCMobile/ARDSDPUtils.m', >++ 'examples/objc/AppRTCMobile/ARDSignalingChannel.h', >++ 'examples/objc/AppRTCMobile/ARDSignalingMessage.h', >++ 'examples/objc/AppRTCMobile/ARDSignalingMessage.m', >++ 'examples/objc/AppRTCMobile/ARDStatsBuilder.h', >++ 'examples/objc/AppRTCMobile/ARDStatsBuilder.m', >++ 'examples/objc/AppRTCMobile/ARDTURNClient.h', >++ 'examples/objc/AppRTCMobile/ARDWebSocketChannel.h', >++ 'examples/objc/AppRTCMobile/ARDWebSocketChannel.m', >++ 'examples/objc/AppRTCMobile/RTCIceCandidate+JSON.h', >++ 'examples/objc/AppRTCMobile/RTCIceCandidate+JSON.m', >++ 'examples/objc/AppRTCMobile/RTCIceServer+JSON.h', >++ 'examples/objc/AppRTCMobile/RTCIceServer+JSON.m', >++ 'examples/objc/AppRTCMobile/RTCMediaConstraints+JSON.h', >++ 'examples/objc/AppRTCMobile/RTCMediaConstraints+JSON.m', >++ 'examples/objc/AppRTCMobile/RTCSessionDescription+JSON.h', >++ 'examples/objc/AppRTCMobile/RTCSessionDescription+JSON.m', >++ ], >++ 'include_dirs': [ >++ 'examples/objc/AppRTCMobile', >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'examples/objc/AppRTCMobile', >++ ], >++ }, >++ 'export_dependent_settings': [ >++ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_peerconnection_objc', >++ ], >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'xcode_settings': { >++ 'WARNING_CFLAGS': [ >++ # Suppress compiler warnings about deprecated that triggered >++ # when moving from ios_deployment_target 7.0 to 9.0. >++ # See webrtc:5549 for more details. >++ '-Wno-deprecated-declarations', >++ ], >++ }, >++ }], >++ ['OS=="mac"', { >++ 'xcode_settings': { >++ 'MACOSX_DEPLOYMENT_TARGET' : '10.8', >++ }, >++ }], >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ }, >++ { >++ 'target_name': 'AppRTCMobile', >++ 'type': 'executable', >++ 'product_name': 'AppRTCMobile', >++ 'mac_bundle': 1, >++ 'dependencies': [ >++ 'apprtc_common', >++ 'apprtc_signaling', >++ ], >++ 'conditions': [ >++ ['OS=="ios"', { >++ 'mac_bundle_resources': [ >++ 'examples/objc/AppRTCMobile/ios/resources/Roboto-Regular.ttf', >++ 'examples/objc/AppRTCMobile/ios/resources/iPhone5@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/iPhone6@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/iPhone6p@3x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_call_end_black_24dp@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_clear_black_24dp.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_clear_black_24dp@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_surround_sound_black_24dp@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp.png', >++ 'examples/objc/AppRTCMobile/ios/resources/ic_switch_video_black_24dp@2x.png', >++ 'examples/objc/AppRTCMobile/ios/resources/mozart.mp3', >++ 'examples/objc/Icon.png', >++ ], >++ 'sources': [ >++ 'examples/objc/AppRTCMobile/ios/ARDAppDelegate.h', >++ 'examples/objc/AppRTCMobile/ios/ARDAppDelegate.m', >++ 'examples/objc/AppRTCMobile/ios/ARDMainView.h', >++ 'examples/objc/AppRTCMobile/ios/ARDMainView.m', >++ 'examples/objc/AppRTCMobile/ios/ARDMainViewController.h', >++ 'examples/objc/AppRTCMobile/ios/ARDMainViewController.m', >++ 'examples/objc/AppRTCMobile/ios/ARDStatsView.h', >++ 'examples/objc/AppRTCMobile/ios/ARDStatsView.m', >++ 'examples/objc/AppRTCMobile/ios/ARDVideoCallView.h', >++ 'examples/objc/AppRTCMobile/ios/ARDVideoCallView.m', >++ 'examples/objc/AppRTCMobile/ios/ARDVideoCallViewController.h', >++ 'examples/objc/AppRTCMobile/ios/ARDVideoCallViewController.m', >++ 'examples/objc/AppRTCMobile/ios/AppRTCMobile-Prefix.pch', >++ 'examples/objc/AppRTCMobile/ios/UIImage+ARDUtilities.h', >++ 'examples/objc/AppRTCMobile/ios/UIImage+ARDUtilities.m', >++ 'examples/objc/AppRTCMobile/ios/main.m', >++ ], >++ 'xcode_settings': { >++ 'INFOPLIST_FILE': 'examples/objc/AppRTCMobile/ios/Info.plist', >++ 'WARNING_CFLAGS': [ >++ # Suppress compiler warnings about deprecated that triggered >++ # when moving from ios_deployment_target 7.0 to 9.0. >++ # See webrtc:5549 for more details. >++ '-Wno-deprecated-declarations', >++ ], >++ }, >++ }], >++ ['OS=="mac"', { >++ 'sources': [ >++ 'examples/objc/AppRTCMobile/mac/APPRTCAppDelegate.h', >++ 'examples/objc/AppRTCMobile/mac/APPRTCAppDelegate.m', >++ 'examples/objc/AppRTCMobile/mac/APPRTCViewController.h', >++ 'examples/objc/AppRTCMobile/mac/APPRTCViewController.m', >++ 'examples/objc/AppRTCMobile/mac/main.m', >++ ], >++ 'xcode_settings': { >++ 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', >++ 'INFOPLIST_FILE': 'examples/objc/AppRTCMobile/mac/Info.plist', >++ 'MACOSX_DEPLOYMENT_TARGET' : '10.8', >++ 'OTHER_LDFLAGS': [ >++ '-framework AVFoundation', >++ ], >++ }, >++ }], >++ ['target_arch=="ia32"', { >++ 'dependencies' : [ >++ '<(DEPTH)/testing/iossim/iossim.gyp:iossim#host', >++ ], >++ }], >++ ], >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ }, >++ }, # target AppRTCMobile >++ { >++ # TODO(tkchin): move this into the real third party location and >++ # have it mirrored on chrome infra. >++ 'target_name': 'socketrocket', >++ 'type': 'static_library', >++ 'sources': [ >++ 'examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.h', >++ 'examples/objc/AppRTCMobile/third_party/SocketRocket/SRWebSocket.m', >++ ], >++ 'conditions': [ >++ ['OS=="mac"', { >++ 'xcode_settings': { >++ # SocketRocket autosynthesizes some properties. Disable the >++ # warning so we can compile successfully. >++ 'CLANG_WARN_OBJC_MISSING_PROPERTY_SYNTHESIS': 'NO', >++ 'MACOSX_DEPLOYMENT_TARGET' : '10.8', >++ # SRWebSocket.m uses code with partial availability. >++ # https://code.google.com/p/webrtc/issues/detail?id=4695 >++ 'WARNING_CFLAGS!': [ >++ '-Wpartial-availability', >++ ], >++ }, >++ }], >++ ], >++ 'direct_dependent_settings': { >++ 'include_dirs': [ >++ 'examples/objc/AppRTCMobile/third_party/SocketRocket', >++ ], >++ }, >++ 'xcode_settings': { >++ 'CLANG_ENABLE_OBJC_ARC': 'YES', >++ 'WARNING_CFLAGS': [ >++ '-Wno-deprecated-declarations', >++ '-Wno-nonnull', >++ # Hide the warning for SecRandomCopyBytes(), till we update >++ # to upstream. >++ # https://bugs.chromium.org/p/webrtc/issues/detail?id=6396 >++ '-Wno-unused-result', >++ ], >++ }, >++ 'link_settings': { >++ 'xcode_settings': { >++ 'OTHER_LDFLAGS': [ >++ '-framework CFNetwork', >++ '-licucore', >++ ], >++ }, >++ } >++ }, # target socketrocket >++ ], # targets >++ }], # OS=="ios" or (OS=="mac" and target_arch!="ia32") >++ >++ ['OS=="android"', { >++ 'targets': [ >++ { >++ 'target_name': 'AppRTCMobile', >++ 'type': 'none', >++ 'dependencies': [ >++ 'api/api_java.gyp:libjingle_peerconnection_java', >++ ], >++ 'variables': { >++ 'apk_name': 'AppRTCMobile', >++ 'java_in_dir': 'examples/androidapp', >++ 'has_java_resources': 1, >++ 'resource_dir': 'examples/androidapp/res', >++ 'R_package': 'org.appspot.apprtc', >++ 'R_package_relpath': 'org/appspot/apprtc', >++ 'input_jars_paths': [ >++ 'examples/androidapp/third_party/autobanh/lib/autobanh.jar', >++ ], >++ 'library_dexed_jars_paths': [ >++ 'examples/androidapp/third_party/autobanh/lib/autobanh.jar', >++ ], >++ 'native_lib_target': 'libjingle_peerconnection_so', >++ 'add_to_dependents_classpaths':1, >++ }, >++ 'includes': [ '../build/java_apk.gypi' ], >++ }, # target AppRTCMobile >++ >++ { >++ # AppRTCMobile creates a .jar as a side effect. Any java targets >++ # that need that .jar in their classpath should depend on this target, >++ # AppRTCMobile_apk. Dependents of AppRTCMobile_apk receive its >++ # jar path in the variable 'apk_output_jar_path'. >++ # This target should only be used by targets which instrument >++ # AppRTCMobile_apk. >++ 'target_name': 'AppRTCMobile_apk', >++ 'type': 'none', >++ 'dependencies': [ >++ 'AppRTCMobile', >++ ], >++ 'includes': [ '../build/apk_fake_jar.gypi' ], >++ }, # target AppRTCMobile_apk >++ >++ { >++ 'target_name': 'AppRTCMobileTest', >++ 'type': 'none', >++ 'dependencies': [ >++ 'AppRTCMobile_apk', >++ ], >++ 'variables': { >++ 'apk_name': 'AppRTCMobileTest', >++ 'java_in_dir': 'examples/androidtests', >++ 'is_test_apk': 1, >++ 'test_type': 'instrumentation', >++ 'test_runner_path': '<(DEPTH)/webrtc/build/android/test_runner.py', >++ }, >++ 'includes': [ >++ '../build/java_apk.gypi', >++ '../build/android/test_runner.gypi', >++ ], >++ }, >++ ], # targets >++ }], # OS=="android" >++ ], >++} >+diff --git media/webrtc/trunk/webrtc/webrtc_tests.gypi media/webrtc/trunk/webrtc/webrtc_tests.gypi >+new file mode 100644 >+index 000000000000..354476b883e5 >+--- /dev/null >++++ media/webrtc/trunk/webrtc/webrtc_tests.gypi >+@@ -0,0 +1,84 @@ >++# Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. >++# >++# Use of this source code is governed by a BSD-style license >++# that can be found in the LICENSE file in the root of the source >++# tree. An additional intellectual property rights grant can be found >++# in the file PATENTS. All contributing project authors may >++# be found in the AUTHORS file in the root of the source tree. >++{ >++ 'targets': [ >++ { >++ 'target_name': 'video_quality_test', >++ 'type': 'static_library', >++ 'sources': [ >++ 'video/video_quality_test.cc', >++ 'video/video_quality_test.h', >++ ], >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', >++ 'webrtc', >++ ], >++ 'conditions': [ >++ ['OS=="android"', { >++ 'dependencies!': [ >++ '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl', >++ ], >++ }], >++ ], >++ }, >++ { >++ 'target_name': 'screenshare_loopback', >++ 'type': 'executable', >++ 'sources': [ >++ 'test/mac/run_test.mm', >++ 'test/run_test.cc', >++ 'test/run_test.h', >++ 'video/screenshare_loopback.cc', >++ ], >++ 'conditions': [ >++ ['OS=="mac"', { >++ 'sources!': [ >++ 'test/run_test.cc', >++ ], >++ }], >++ ], >++ 'dependencies': [ >++ 'video_quality_test', >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ 'test/test.gyp:test_common', >++ 'test/test.gyp:test_main', >++ 'test/test.gyp:test_renderer', >++ 'webrtc', >++ ], >++ }, >++ { >++ 'target_name': 'video_replay', >++ 'type': 'executable', >++ 'sources': [ >++ 'test/mac/run_test.mm', >++ 'test/run_test.cc', >++ 'test/run_test.h', >++ 'video/replay.cc', >++ ], >++ 'conditions': [ >++ ['OS=="mac"', { >++ 'sources!': [ >++ 'test/run_test.cc', >++ ], >++ }], >++ ], >++ 'dependencies': [ >++ '<(DEPTH)/testing/gtest.gyp:gtest', >++ '<(DEPTH)/third_party/gflags/gflags.gyp:gflags', >++ 'test/test.gyp:test_common', >++ 'test/test.gyp:test_renderer', >++ '<(webrtc_root)/modules/modules.gyp:video_capture', >++ '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default', >++ 'webrtc', >++ ], >++ }, >++ ], >++} >+diff --git python/mozbuild/mozbuild/gn_processor.py python/mozbuild/mozbuild/gn_processor.py >+index e0c84a755e85..355f0c0fa000 100644 >+--- python/mozbuild/mozbuild/gn_processor.py >++++ python/mozbuild/mozbuild/gn_processor.py >+@@ -67,7 +67,7 @@ class MozbuildWriter(object): >+ for k in sorted(context_attrs.keys()): >+ v = context_attrs[k] >+ if isinstance(v, (list, set)): >+- self.write_mozbuild_list(k, v) >++ self.write_mozbuild_list(k, alphabetical_sorted(v)) >+ elif isinstance(v, dict): >+ self.write_mozbuild_dict(k, v) >+ else: >+@@ -78,7 +78,7 @@ class MozbuildWriter(object): >+ self.write('\n') >+ self.write(self.indent + key) >+ self.write(' += [\n ' + self.indent) >+- self.write((',\n ' + self.indent).join(alphabetical_sorted(self.mb_serialize(v) for v in value))) >++ self.write((',\n ' + self.indent).join(sorted(self.mb_serialize(v) for v in value))) >+ self.write('\n') >+ self.write_ln(']') >+ >diff --git a/www/firefox/files/patch-bug1021761 b/www/firefox/files/patch-bug1021761 >index f0764a8c4b22..d2cddd428791 100644 >--- a/www/firefox/files/patch-bug1021761 >+++ b/www/firefox/files/patch-bug1021761 >@@ -1198,9 +1198,9 @@ index b139b8f497fd..d1f8a223c6d8 100755 > cp $1/src/cubeb_mixer.h src > cp $1/src/cubeb_opensl.c src > +cp $1/src/cubeb_oss.c src >- cp $1/src/cubeb_osx_run_loop.h src >- cp $1/src/cubeb_panner.cpp src >- cp $1/src/cubeb_panner.h src >+ cp $1/src/cubeb-jni.cpp src >+ cp $1/src/cubeb-jni.h src >+ cp $1/src/android/cubeb-output-latency.h src/android > diff --git toolkit/library/moz.build toolkit/library/moz.build > index a61c689c83c3..7764df6f8a6b 100644 > --- toolkit/library/moz.build >diff --git a/www/firefox/files/patch-bug1418162 b/www/firefox/files/patch-bug1418162 >new file mode 100644 >index 000000000000..b454e74c438a >--- /dev/null >+++ b/www/firefox/files/patch-bug1418162 >@@ -0,0 +1,58 @@ >+commit b2ebb8d82be2 >+Author: Tom Ritter <tom@mozilla.com> >+Date: Mon Feb 19 09:43:27 2018 -0600 >+ >+ Bug 1418162 Use a build constant to determine update channel, and update ESR equation for 60 r?gijs,Build >+ >+ Previously we used Services.appinfo.defaultUpdateChannel to determine if we were on ESR >+ and if so, we would assert to make sure the ESR equation hadn't changed. But that method >+ is a footgun. We could use UpdateUtils.getUpdateChannel, but for our purposes here, the >+ compile-time constant will work just as well. >+ >+ If it's set correctly, for Mozilla, we will perform our assert check. If it's not set to >+ esr (e.g. for Tor), they'll skip the assert. They probably want to control their user agent >+ themselves anyway. >+ >+ MozReview-Commit-ID: DLnWSEpCVJ6 >+--- >+ .../resistfingerprinting/nsRFPService.cpp | 21 +++++++-------------- >+ 1 file changed, 7 insertions(+), 14 deletions(-) >+ >+diff --git toolkit/components/resistfingerprinting/nsRFPService.cpp toolkit/components/resistfingerprinting/nsRFPService.cpp >+index aeb3cb6b3539..1fd6a6e8fe8d 100644 >+--- toolkit/components/resistfingerprinting/nsRFPService.cpp >++++ toolkit/components/resistfingerprinting/nsRFPService.cpp >+@@ -606,26 +606,19 @@ nsRFPService::GetSpoofedUserAgent(nsACString &userAgent) >+ uint32_t firefoxVersion = appVersion.ToInteger(&rv); >+ NS_ENSURE_SUCCESS(rv, rv); >+ >+- // Starting from Firefox 10, Firefox ESR was released once every seven >+- // Firefox releases, e.g. Firefox 10, 17, 24, 31, and so on. >+- // We infer the last and closest ESR version based on this rule. >+- nsCOMPtr<nsIXULRuntime> runtime = >+- do_GetService("@mozilla.org/xre/runtime;1", &rv); >+- NS_ENSURE_SUCCESS(rv, rv); >+- >+- nsAutoCString updateChannel; >+- rv = runtime->GetDefaultUpdateChannel(updateChannel); >+- NS_ENSURE_SUCCESS(rv, rv); >+- >+ // If we are running in Firefox ESR, determine whether the formula of ESR >+ // version has changed. Once changed, we must update the formula in this >+ // function. >+- if (updateChannel.EqualsLiteral("esr")) { >+- MOZ_ASSERT(((firefoxVersion % 7) == 3), >++ if (!strcmp(NS_STRINGIFY(MOZ_UPDATE_CHANNEL), "esr")) { >++ MOZ_ASSERT(((firefoxVersion % 7) == 4), >+ "Please udpate ESR version formula in nsRFPService.cpp"); >+ } >+ >+- uint32_t spoofedVersion = firefoxVersion - ((firefoxVersion - 3) % 7); >++ // Starting from Firefox 10, Firefox ESR was released once every seven >++ // Firefox releases, e.g. Firefox 10, 17, 24, 31, and so on. >++ // Except we used 60 as an ESR instead of 59. >++ // We infer the last and closest ESR version based on this rule. >++ uint32_t spoofedVersion = firefoxVersion - ((firefoxVersion - 4) % 7); >+ userAgent.Assign(nsPrintfCString( >+ "Mozilla/5.0 (%s; rv:%d.0) Gecko/%s Firefox/%d.0", >+ SPOOFED_UA_OS, spoofedVersion, LEGACY_BUILD_ID, spoofedVersion)); >diff --git a/www/firefox/files/patch-bug1433747 b/www/firefox/files/patch-bug1433747 >deleted file mode 100644 >index 1a3b8737e8c3..000000000000 >--- a/www/firefox/files/patch-bug1433747 >+++ /dev/null >@@ -1,24 +0,0 @@ >-Apply simd@cf87865a998a to unbreak -C target-cpu with Rust >= 1.24 >- >-diff --git third_party/rust/simd/.cargo-checksum.json third_party/rust/simd/.cargo-checksum.json >-index 65f31b0560e6..f16d0dd4fd61 100644 >---- third_party/rust/simd/.cargo-checksum.json >-+++ third_party/rust/simd/.cargo-checksum.json >-@@ -1 +1 @@ >--{"files":{".travis.yml":"e2c720c3633b7671efce49147c62b12bcbf630d7c5d6fc65cd97620bfa4ddcea","Cargo.toml":"608aad04f17a524ee21048fa2ce9f656ae344e0473dd0e331dc954f0f9677c63","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6d3a9431e65e69c73a8923e6517b889d17549b23db406b9ec027710d16af701f","README.md":"249294a9a5f63c64c0f7fe4a607060f43f3507dce2378067aa59d25fb3ae681d","benches/mandelbrot.rs":"051b5199e66bca6cf7774e9024915fd4e1349ab39726a10a14e06b60d65d87a4","benches/matrix.rs":"048a21dacdb62365e0105d00d2c8cd6bd2396ac81134f2bff7eb4f7d095fb735","examples/axpy.rs":"4307626045d64ec08361c97c9c72c5dc8d361bdc88f64453b97ac0212041a1b2","examples/convert.rs":"8e658fde050f8a0d8b84ad7570446b10fcf544afbd551b940ca340474f324840","examples/dot-product.rs":"6fe2e007c147af5353804173a593c5b9d57dbccec156e1da37e9e32537363f91","examples/fannkuch-redux-nosimd.rs":"7b2fbde35e8666929d14d67328471cb0483d038a5325232f8db148b30865312b","examples/fannkuch-redux.rs":"ea21fdbd2274488a62cc984acad6e0b65d52f24fb4ff63b7057a3a667e9c8aae","examples/mandelbrot.rs":"8b8fdca1edac50e5a33e0e0592bd41eb75114f31839ccd40d485c61a9a664380","examples/matrix-inverse.rs":"a378d20ef20c2119bb10a86de27c92fec2c2f77f374e6bfd36707c9825a5fe92","examples/nbody-nosimd.rs":"2c8e0a7feacd202fdd65eeceb6420d6e9f43340b81f20a8e532704a587a2796b","examples/nbody.rs":"a864311affab262024479d6348ff51af43d809e9ad332ec30ea4aacceaa2eae1","examples/ops.rs":"1316f915d0afcfa98fdc4077e965ccccf6b4b21c433cbe487ff0cdc60df3cd39","examples/spectral-norm-nosimd.rs":"ffc8512ecde779078ea467f38f423a0ea623c63da7078193f9dd370200773f79","examples/spectral-norm.rs":"edb09c9d477f83939098cfb77a27cc298bc7a0c8a8e29cece0cccae0d70d890e","src/aarch64/mod.rs":"83f52775364c98de0cecb7e1509530c18972e932469f5f1522aa24a735d0fa37","src/aarch64/neon.rs":"1fe769979e07d8e2bc3c78ce116e05d735860744efe097a894cc9421153257fb","src/arm/mod.rs":"dcdd90bc0b39abaf86a0c8946d442b16313563fbae1ff03248628275c74d8617","src/arm/neon.rs":"51cc509856200e80f8e4cc2c982586e6d1cef593ec4537e153dce0cfe31d3428","src/common.rs":"62f4e7e0fefb52ad190d0f2191bc435ac4deab3f2bc70dc427f2a7f9ccb7856e","src/lib.rs":"25f0b39c038fa85af858318135dfd87865be26c33bb4bd1438aec96a1e68d8b5","src/sixty_four.rs":"510a9e00189a61e4f0a5beb7052d5dee37fc8261f94a2af45ef10327e0f3b7df","src/v256.rs":"2e328e49034876d535e0627c7a62191da2b4fb156a657614bf531a5fc75b1385","src/x86/avx.rs":"c66140abefca634b48eae307c3ec8cf5a40f2279b10e246a7e2ac602a2a2bb28","src/x86/avx2.rs":"efe3006b13a13261a3dec3d37dc1d8cb53950f3803c420069231803374949937","src/x86/mod.rs":"0acc5a5e2672e2a0fddc11065663be8b8fa2da87320ea291fa86ff8c2f33edf5","src/x86/sse2.rs":"5ceda75a401958a135fc9d851b22075314cdeed69fd483b6a7be4f11373f40da","src/x86/sse3.rs":"9bd01a4f08069ca4f445952e744d651efe887e3835b18872e757375f0d053bd2","src/x86/sse4_1.rs":"9ceb80dd70a7e7dfeef508cb935e1a2637175bc87a3b090f5dea691ff6aa0516","src/x86/sse4_2.rs":"c59321aed8decdce4d0d8570cff46aed02e1a8265647ef7702e9b180fc581254","src/x86/ssse3.rs":"2290f0269bae316b8e0491495645ee38a9bd73525c8572759c1328341c3bdb4c"},"package":"7a94d14a2ae1f1f110937de5fb69e494372560181c7e1739a097fcc2cee37ba0"} >-\ No newline at end of file >-+{"files":{".travis.yml":"e2c720c3633b7671efce49147c62b12bcbf630d7c5d6fc65cd97620bfa4ddcea","Cargo.toml":"608aad04f17a524ee21048fa2ce9f656ae344e0473dd0e331dc954f0f9677c63","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6d3a9431e65e69c73a8923e6517b889d17549b23db406b9ec027710d16af701f","README.md":"249294a9a5f63c64c0f7fe4a607060f43f3507dce2378067aa59d25fb3ae681d","benches/mandelbrot.rs":"051b5199e66bca6cf7774e9024915fd4e1349ab39726a10a14e06b60d65d87a4","benches/matrix.rs":"048a21dacdb62365e0105d00d2c8cd6bd2396ac81134f2bff7eb4f7d095fb735","examples/axpy.rs":"4307626045d64ec08361c97c9c72c5dc8d361bdc88f64453b97ac0212041a1b2","examples/convert.rs":"8e658fde050f8a0d8b84ad7570446b10fcf544afbd551b940ca340474f324840","examples/dot-product.rs":"6fe2e007c147af5353804173a593c5b9d57dbccec156e1da37e9e32537363f91","examples/fannkuch-redux-nosimd.rs":"7b2fbde35e8666929d14d67328471cb0483d038a5325232f8db148b30865312b","examples/fannkuch-redux.rs":"ea21fdbd2274488a62cc984acad6e0b65d52f24fb4ff63b7057a3a667e9c8aae","examples/mandelbrot.rs":"8b8fdca1edac50e5a33e0e0592bd41eb75114f31839ccd40d485c61a9a664380","examples/matrix-inverse.rs":"a378d20ef20c2119bb10a86de27c92fec2c2f77f374e6bfd36707c9825a5fe92","examples/nbody-nosimd.rs":"2c8e0a7feacd202fdd65eeceb6420d6e9f43340b81f20a8e532704a587a2796b","examples/nbody.rs":"a864311affab262024479d6348ff51af43d809e9ad332ec30ea4aacceaa2eae1","examples/ops.rs":"1316f915d0afcfa98fdc4077e965ccccf6b4b21c433cbe487ff0cdc60df3cd39","examples/spectral-norm-nosimd.rs":"ffc8512ecde779078ea467f38f423a0ea623c63da7078193f9dd370200773f79","examples/spectral-norm.rs":"edb09c9d477f83939098cfb77a27cc298bc7a0c8a8e29cece0cccae0d70d890e","src/aarch64/mod.rs":"83f52775364c98de0cecb7e1509530c18972e932469f5f1522aa24a735d0fa37","src/aarch64/neon.rs":"1fe769979e07d8e2bc3c78ce116e05d735860744efe097a894cc9421153257fb","src/arm/mod.rs":"dcdd90bc0b39abaf86a0c8946d442b16313563fbae1ff03248628275c74d8617","src/arm/neon.rs":"51cc509856200e80f8e4cc2c982586e6d1cef593ec4537e153dce0cfe31d3428","src/common.rs":"62f4e7e0fefb52ad190d0f2191bc435ac4deab3f2bc70dc427f2a7f9ccb7856e","src/lib.rs":"25f0b39c038fa85af858318135dfd87865be26c33bb4bd1438aec96a1e68d8b5","src/sixty_four.rs":"510a9e00189a61e4f0a5beb7052d5dee37fc8261f94a2af45ef10327e0f3b7df","src/v256.rs":"2e328e49034876d535e0627c7a62191da2b4fb156a657614bf531a5fc75b1385","src/x86/avx.rs":"c66140abefca634b48eae307c3ec8cf5a40f2279b10e246a7e2ac602a2a2bb28","src/x86/avx2.rs":"3bcb3f391ad5f16f0a6da0bc1301329beb478ad6265bd3b2c9c124fc2e6198e5","src/x86/mod.rs":"0acc5a5e2672e2a0fddc11065663be8b8fa2da87320ea291fa86ff8c2f33edf5","src/x86/sse2.rs":"5ceda75a401958a135fc9d851b22075314cdeed69fd483b6a7be4f11373f40da","src/x86/sse3.rs":"9bd01a4f08069ca4f445952e744d651efe887e3835b18872e757375f0d053bd2","src/x86/sse4_1.rs":"9ceb80dd70a7e7dfeef508cb935e1a2637175bc87a3b090f5dea691ff6aa0516","src/x86/sse4_2.rs":"c59321aed8decdce4d0d8570cff46aed02e1a8265647ef7702e9b180fc581254","src/x86/ssse3.rs":"2290f0269bae316b8e0491495645ee38a9bd73525c8572759c1328341c3bdb4c"},"package":"7a94d14a2ae1f1f110937de5fb69e494372560181c7e1739a097fcc2cee37ba0"} >-\ No newline at end of file >-diff --git third_party/rust/simd/src/x86/avx2.rs third_party/rust/simd/src/x86/avx2.rs >-index fa92e3b60786..e86a33d3b5bb 100644 >---- third_party/rust/simd/src/x86/avx2.rs >-+++ third_party/rust/simd/src/x86/avx2.rs >-@@ -42,7 +42,7 @@ extern "platform-intrinsic" { >- fn x86_mm256_packus_epi32(x: i32x8, y: i32x8) -> u16x16; >- fn x86_mm256_permutevar8x32_epi32(x: i32x8, y: i32x8) -> i32x8; >- fn x86_mm256_permutevar8x32_ps(x: f32x8, y: i32x8) -> f32x8; >-- fn x86_mm256_sad_epu8(x: u8x32, y: u8x32) -> u8x32; >-+ fn x86_mm256_sad_epu8(x: u8x32, y: u8x32) -> u64x4; >- fn x86_mm256_shuffle_epi8(x: i8x32, y: i8x32) -> i8x32; >- fn x86_mm256_sign_epi8(x: i8x32, y: i8x32) -> i8x32; >- fn x86_mm256_sign_epi16(x: i16x16, y: i16x16) -> i16x16; >diff --git a/www/firefox/files/patch-bug1442746 b/www/firefox/files/patch-bug1442746 >new file mode 100644 >index 000000000000..3c5fc4daeb89 >--- /dev/null >+++ b/www/firefox/files/patch-bug1442746 >@@ -0,0 +1,40 @@ >+commit 9761b190924d >+Author: Landry Breuil <landry@openbsd.org> >+Date: Fri Mar 9 13:39:58 2018 +0000 >+ >+ Bug 1442746 - use clock_gettime on all unices but osx, not only linux - fixes build on BSD. r=chutten >+--- >+ toolkit/components/telemetry/Telemetry.cpp | 6 +++--- >+ 1 file changed, 3 insertions(+), 3 deletions(-) >+ >+diff --git toolkit/components/telemetry/Telemetry.cpp toolkit/components/telemetry/Telemetry.cpp >+index 98eba99fe53d..00a0334ea200 100644 >+--- toolkit/components/telemetry/Telemetry.cpp >++++ toolkit/components/telemetry/Telemetry.cpp >+@@ -8,7 +8,7 @@ >+ >+ #include <prio.h> >+ #include <prproces.h> >+-#ifdef XP_LINUX >++#if defined(XP_UNIX) && !defined(XP_DARWIN) >+ #include <time.h> >+ #else >+ #include <chrono> >+@@ -1674,7 +1674,7 @@ TelemetryImpl::MsSinceProcessStart(double* aResult) >+ NS_IMETHODIMP >+ TelemetryImpl::MsSystemNow(double* aResult) >+ { >+-#ifdef XP_LINUX >++#if defined(XP_UNIX) && !defined(XP_DARWIN) >+ timespec ts; >+ clock_gettime(CLOCK_REALTIME, &ts); >+ *aResult = ts.tv_sec * 1000 + ts.tv_nsec / 1000000; >+@@ -1682,7 +1682,7 @@ TelemetryImpl::MsSystemNow(double* aResult) >+ using namespace std::chrono; >+ milliseconds ms = duration_cast<milliseconds>(system_clock::now().time_since_epoch()); >+ *aResult = static_cast<double>(ms.count()); >+-#endif // XP_LINUX >++#endif // XP_UNIX && !XP_DARWIN >+ >+ return NS_OK; >+ } >diff --git a/www/firefox/files/patch-bug1442791 b/www/firefox/files/patch-bug1442791 >new file mode 100644 >index 000000000000..fe097d8375d2 >--- /dev/null >+++ b/www/firefox/files/patch-bug1442791 >@@ -0,0 +1,33 @@ >+Build Linux version of GetExecutablePathImpl() on other Unix systems >+ >+ANGLE system_utils* are unused in Gecko. >+https://searchfox.org/mozilla-central/search?regexp=true&q=\bGetExecutable%28Path%7CDirectory%29\B >+ >+diff --git gfx/angle/targets/angle_common/moz.build gfx/angle/targets/angle_common/moz.build >+index bd4b743ec0dd..3c0dbfae491a 100644 >+--- gfx/angle/targets/angle_common/moz.build >++++ gfx/angle/targets/angle_common/moz.build >+@@ -118,17 +118,17 @@ SOURCES += [ >+ '../../checkout/src/common/uniform_type_info_autogen.cpp', >+ '../../checkout/src/common/utilities.cpp', >+ ] >+-if CONFIG['OS_ARCH'] == 'Darwin': >++if CONFIG['OS_ARCH'] == 'WINNT': >+ SOURCES += [ >+- '../../checkout/src/common/system_utils_mac.cpp', >++ '../../checkout/src/common/system_utils_win.cpp', >+ ] >+-if CONFIG['OS_ARCH'] == 'Linux': >++elif CONFIG['OS_ARCH'] == 'Darwin': >+ SOURCES += [ >+- '../../checkout/src/common/system_utils_linux.cpp', >++ '../../checkout/src/common/system_utils_mac.cpp', >+ ] >+-if CONFIG['OS_ARCH'] == 'WINNT': >++else: # Android, Linux, BSDs, etc. >+ SOURCES += [ >+- '../../checkout/src/common/system_utils_win.cpp', >++ '../../checkout/src/common/system_utils_linux.cpp', >+ ] >+ # >+ #LDFLAGS += [ >diff --git a/www/firefox/files/patch-z-bug517422 b/www/firefox/files/patch-z-bug517422 >index a3ce1fe5b450..db617d716b25 100644 >--- a/www/firefox/files/patch-z-bug517422 >+++ b/www/firefox/files/patch-z-bug517422 >@@ -160,7 +160,7 @@ diff --git dom/media/moz.build dom/media/moz.build > index 86b051c58d33..fb6186dce78b 100644 > --- dom/media/moz.build > +++ dom/media/moz.build >-@@ -318,6 +318,21 @@ if CONFIG['MOZ_WEBRTC']: >+@@ -326,6 +326,21 @@ if CONFIG['MOZ_WEBRTC']: > > DEFINES['MOZILLA_INTERNAL_API'] = True > >@@ -179,16 +179,16 @@ index 86b051c58d33..fb6186dce78b 100644 > +if CONFIG['MOZ_SYSTEM_SOUNDTOUCH']: > + CXXFLAGS += CONFIG['MOZ_SOUNDTOUCH_CFLAGS'] > + >- if CONFIG['MOZ_ANDROID_HLS_SUPPORT'] and CONFIG['MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE']: >+ if CONFIG['MOZ_ANDROID_HLS_SUPPORT']: > DEFINES['MOZ_ANDROID_HLS_SUPPORT'] = True > > diff --git dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp > index 078f6ea5ef60..c600db067539 100644 > --- dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp > +++ dom/media/platforms/ffmpeg/ffvpx/FFVPXRuntimeLinker.cpp >-@@ -11,9 +11,13 @@ >- #include "prmem.h" >- #include "prlink.h" >+@@ -15,9 +15,13 @@ >+ #include <windows.h> >+ #endif > > +#ifdef MOZ_SYSTEM_SOUNDTOUCH > +#include "nsXPCOMPrivate.h" // for XUL_DLL >@@ -200,7 +200,7 @@ index 078f6ea5ef60..c600db067539 100644 > > namespace mozilla { > >-@@ -54,6 +58,12 @@ FFVPXRuntimeLinker::Init() >+@@ -64,6 +68,12 @@ FFVPXRuntimeLinker::Init() > > sLinkStatus = LinkStatus_FAILED; > >@@ -212,13 +212,13 @@ index 078f6ea5ef60..c600db067539 100644 > +#else > // We retrieve the path of the lgpllibs library as this is where mozavcodec > // and mozavutil libs are located. >- char* lgpllibsname = PR_GetLibraryName(nullptr, "lgpllibs"); >-@@ -64,6 +74,7 @@ FFVPXRuntimeLinker::Init() >- PR_GetLibraryFilePathname(lgpllibsname, >- (PRFuncPtr)&soundtouch::SoundTouch::getVersionId); >- PR_FreeLibraryName(lgpllibsname); >+ PathString lgpllibsname = GetLibraryName(nullptr, "lgpllibs"); >+@@ -73,6 +83,7 @@ FFVPXRuntimeLinker::Init() >+ PathString path = >+ GetLibraryFilePathname(lgpllibsname.get(), >+ (PRFuncPtr)&soundtouch::SoundTouch::getVersionId); > +#endif >- if (!path) { >+ if (path.IsEmpty()) { > return false; > } > diff --git media/libogg/README_MOZILLA media/libogg/README_MOZILLA
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 226476
:
191341
|
191460
|
191546
|
191556
|
191654
|
191746
|
191780
|
191860
|
191963
|
192155
|
192238
|
192374
|
192488
|
192576
|
192684