/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . android . build . gradle . internal . cxx . configure Ċ Ċ import Ġcom . android . build . gradle . internal . cxx . model . Prefab Configuration State Ċ import Ġcom . android . build . gradle . tasks . External Native Build Task Utils Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* ĠLogic Ġresponsible Ġfor Ġdetermining Ġwhether Ġconfiguration ĠJSON Ġfor Ġthe Ġgiven ĠABI Ġshould Ġbe Ċ Ġ* Ġregenerated . Ċ Ġ*/ Ċ class ĠJson Generation Invalid ation State ( ĊĠĠĠ Ġprivate Ġval Ġforce Re generation : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġexpected Json : ĠFile , ĊĠĠĠ Ġprivate Ġval Ġcommand File : ĠFile , ĊĠĠĠ Ġcurrent Build Command : ĠString , ĊĠĠĠ Ġprevious Build Command : ĠString , ĊĠĠĠ Ġprivate Ġval Ġdependent Build Files : ĠList < File >, ĊĠĠĠ Ġcurrent Prefab Configuration : ĠPref ab Configuration State , ĊĠĠĠ Ġprevious Prefab Configuration : ĠPref ab Configuration State ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrebuild Due To Missing Json Ġ= Ġ! expected Json . exists () ĊĠĠĠ Ġprivate Ġval Ġrebuild Due To Missing Previous Command Ġ= Ġ! command File . exists () ĊĠĠĠ Ġprivate Ġval Ġrebuild Due To Change In Command File Ġ= Ġprevious Build Command Ġ!= Ġcurrent Build Command ĊĠĠĠ Ġprivate Ġval Ġdependent Build Files Changed Ġ: ĠList < File > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! expected Json . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdependent Build Files . filter Ġ{ Ġbuild File Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! External Native Build Task Utils . file Is Up ToDate ( build File , Ġexpected Json ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġrebuild Due To Dependent Build File Changed Ġ= Ġdependent Build Files Changed . isNotEmpty () ĊĠĠĠ Ġprivate Ġval Ġrebuild Due To Prefab Configuration Change Ġ= ĊĠĠĠĠĠĠĠ Ġcurrent Prefab Configuration Ġ!= Ġprevious Prefab Configuration ĊĠĠĠ Ġval Ġsoft Re generation Ġ= Ġrebuild Due To Dependent Build File Changed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! force Re generation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! rebuild Due To Missing Json ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! rebuild Due To Missing Previous Command ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! rebuild Due To Change In Command File ĊĠĠĠ Ġval Ġrebuild Ġ= Ġforce Re generation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrebuild Due To Missing Json ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrebuild Due To Missing Previous Command ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrebuild Due To Change In Command File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrebuild Due To Dependent Build File Changed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġrebuild Due To Prefab Configuration Change ĊĠĠĠ Ġval Ġrebuild Re asons : ĠList < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsoft Re generate Message Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( soft Re generation ) Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ", Ġwill Ġremove Ġstale Ġjson Ġfolder " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( force Re generation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġforce Ġflag , Ġwill Ġremove Ġstale Ġjson Ġfolder " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rebuild Due To Missing Json ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġexpected Ġjson Ġ$ expected Json Ġfile Ġis Ġnot Ġpresent $ soft Re generate Message " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rebuild Due To Missing Previous Command ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġmissing Ġprevious Ġcommand Ġfile Ġ$ command File $ soft Re generate Message " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rebuild Due To Change In Command File ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġcommand Ġchanged Ġfrom Ġprevious $ soft Re generate Message " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rebuild Due To Dependent Build File Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġa Ġdependent Ġbuild Ġfile Ġchanged " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( dependent Build File Ġin Ġdependent Build Files Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ" Ġ Ġ- Ġ${ dependent Build File . absolute Path }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rebuild Due To Prefab Configuration Change ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessages Ġ+= Ġ"- Ġpref ab Ġconfiguration Ġhas Ġchanged " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessages ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ