/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠB loom berg ĠFinance ĠL . P . Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 . Ċ Ġ*/ Ċ Ċ import Ġorg . gradle . api . Plugin Ċ import Ġorg . gradle . api . Project Ċ import Ġorg . gradle . api . tasks . Java Exec Ċ import Ġorg . gradle . api . tasks . Source Set Container Ċ import Ġorg . gradle . kotlin . dsl . get Ċ Ċ class ĠJ mh Plugin Ġ: ĠPlugin < Project > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġapply ( target : ĠProject ): ĠUnit Ġ= Ġtarget . run Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Sets . create (" j mh ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . src Dirs (" src / j mh / kotlin ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdependencies . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurations . get ByName (" j mh Implementation ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( name , Ġproject ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( name , Ġ" org . openjdk . j mh : j mh - core :${ Versions . J MH }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfigurations . get ByName (" k apt J mh ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( name , Ġ" org . openjdk . j mh : j mh - generator - ann process :${ Versions . J MH }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtasks . register (" j mh ", ĠJava Exec :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Dir Ġ= Ġ"$ build Dir / reports / j mh " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport File Ġ= Ġ"$ report Dir / j mh . json " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgroup Ġ= Ġ" benchmark " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends On (" j mh Classes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Class . set (" org . openjdk . j mh . Main ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- rf ", Ġ" json ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- r ff ", Ġreport File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath ( source Sets . get ByName (" j mh "). runtime Classpath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo First Ġ{ Ġmkdir ( report Dir ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutputs . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ( report File ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup ToDate When Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval ĠProject . source Sets : ĠSource Set Container Ġget () Ġ= Ġextensions [" source Sets "] Ġas ĠSource Set Container Ċ