import Ġde . under couch . gradle . tasks . download . Download Ċ import Ġorg . gradle . internal . jvm . Jvm Ċ import Ġorg . gradle . internal . os . Operating System Ċ import Ġjava . nio . file . Files Ċ import Ġjava . nio . file . Path Ċ Ċ plugins Ġ{ ĊĠĠĠ Ġ` cpp - library ` ĊĠĠĠ Ġid (" de . under couch . download ") Ġversion Ġ" 4 . 0 . 4 " Ċ } Ċ Ċ apply Ġ{ ĊĠĠĠ Ġfrom (" gradle / tool chains . gradle . k ts ") Ċ } Ċ Ċ // ĠDownload Ġg ul r ak / filesystem Ġto Ġreplace Ġc ++ 1 7 's Ġfilesystem Ġif Ġnot Ġsupported Ġby Ġthe Ġcurrent Ġsystem . Ċ val Ġdownload Native Dependencies Ġby Ġtasks . register ing ( Download :: class ) Ġ{ ĊĠĠĠ Ġsrc (" https :// github . com / g ul r ak / filesystem / releases / download / v 1 . 3 . 2 / filesystem . hpp ") ĊĠĠĠ Ġdest ( temporary Dir ) ĊĊĠĠĠ Ġoutputs . file ( temporary Dir . resolve (" filesystem . hpp ")) ĊĠĠĠ Ġoutputs . dir ( temporary Dir ) Ċ } Ċ Ċ val Ġdownload J ni Header Ġby Ġtasks . register ing ( Download :: class ) Ġ{ ĊĠĠĠ Ġsrc (" https :// raw . githubusercontent . com / openjdk / jdk / master / src / java . base / share / native / include / jni . h ") ĊĠĠĠ Ġdest ( temporary Dir ) ĊĠĠĠ Ġoutputs . dir ( temporary Dir ) Ċ } Ċ Ċ val Ġdownload J ni Md Header Unix Ġby Ġtasks . register ing ( Download :: class ) Ġ{ ĊĠĠĠ Ġsrc (" https :// raw . githubusercontent . com / openjdk / jdk / master / src / java . base / unix / native / include / jni _ md . h ") ĊĠĠĠ Ġdest ( temporary Dir ) ĊĠĠĠ Ġoutputs . dir ( temporary Dir ) Ċ } Ċ Ċ val Ġdownload J ni Md Header Windows Ġby Ġtasks . register ing ( Download :: class ) Ġ{ ĊĠĠĠ Ġsrc (" https :// raw . githubusercontent . com / openjdk / jdk / master / src / java . base / windows / native / include / jni _ md . h ") ĊĠĠĠ Ġdest ( temporary Dir ) ĊĠĠĠ Ġoutputs . dir ( temporary Dir ) Ċ } Ċ Ċ tasks . with Type ( Cpp Compile :: class ). configure Each Ġ{ ĊĠĠĠ Ġcompiler Args . addAll ( tool Chain . map Ġ{ Ġtool Chain Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( this @ configure Each . name . toLowerCase (). contains (" windows ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tool Chain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVisual Cpp Ġ-> ĠlistOf ("/ std : c ++ 1 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG cc Ġ-> ĠlistOf ("- l stdc ++ ", Ġ"- std = c ++ 1 1 ", Ġ"- static - lib gcc ", Ġ"- static - lib stdc ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC lang Ġ-> ĠlistOf ("- l stdc ++ ", Ġ"- std = c ++ 1 1 ", Ġ"- static - lib stdc ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tool Chain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVisual Cpp Ġ-> ĠlistOf ("/ std : c ++ 1 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG cc Ġ-> ĠlistOf ("- l stdc ++ ", Ġ"- std = c ++ 1 1 ", Ġ"- static - lib gcc ", Ġ"- static - lib stdc ++ ", Ġ"- ld l ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC lang Ġ-> ĠlistOf ("- l stdc ++ ", Ġ"- std = c ++ 1 1 ", Ġ"- static - lib stdc ++ ", Ġ"- ld l ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġ// ĠA Ġlittle Ġbit Ġof Ġa Ġweird Ġworkaround Ġbecause Ġwe Ġcan 't Ġresolve Ġtarget Machine Ġhere ĊĠĠĠ Ġif Ġ( name . toLowerCase (). contains (" android ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompiler Args . add ("- l log ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ tasks . with Type ( Link Shared Library :: class ). configure Each Ġ{ ĊĠĠĠ Ġlinker Args . addAll ( tool Chain . map Ġ{ Ġtool Chain Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( this @ configure Each . name . toLowerCase (). contains (" windows ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tool Chain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG cc Ġ-> ĠlistOf ("- shared ", Ġ"- static - lib gcc ", Ġ"- static - lib stdc ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC lang Ġ-> ĠlistOf ("- shared ", Ġ"- static - lib stdc ++ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( tool Chain ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠG cc Ġ-> ĠlistOf ("- shared ", Ġ"- static - lib gcc ", Ġ"- static - lib stdc ++ ", Ġ"- ld l ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠC lang Ġ-> ĠlistOf ("- shared ", Ġ"- static - lib stdc ++ ", Ġ"- ld l ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġ// ĠA Ġlittle Ġbit Ġof Ġa Ġweird Ġworkaround Ġbecause Ġwe Ġcan 't Ġresolve Ġtarget Machine Ġhere ĊĠĠĠ Ġif Ġ( name . toLowerCase (). contains (" android ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġlinker Args . add ("- l log ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ library Ġ{ ĊĠĠĠ Ġtarget Machines . set ( listOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . windows . x 8 6 , Ġmachines . windows . x 8 6 _ 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . macOS . x 8 6 _ 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . linux . x 8 6 , Ġmachines . linux . x 8 6 _ 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . os (" android "). architecture (" arm v 7 a "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . os (" android "). architecture (" arm 6 4 - v 8 a "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . os (" android "). x 8 6 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmachines . os (" android "). x 8 6 _ 6 4 )) ĊĊĠĠĠ Ġ// ĠInclude ĠJNI Ġheaders Ġgenerated Ġby Ġde vol ay - java ĊĠĠĠ Ġval Ġheader Only : ĠConfiguration Ġby Ġconfigurations . creating Ġ{} ĊĠĠĠ Ġdependencies Ġ{ ĊĠĠĠĠĠĠĠ Ġheader Only ( project (": dev ol ay - java ", Ġ" jni Includes ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Headers Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom ( header Only ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInclude Ġplatform - independent ĠJNI ĠPath ĊĠĠĠĠĠĠĠ Ġfrom ( download J ni Header ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInclude Ġour Ġdownloaded Ġheaders ĊĠĠĠĠĠĠĠ Ġfrom ( download Native Dependencies ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠInclude ĠN DI Ġheaders ĊĠĠĠĠĠĠĠ Ġfrom ( files ( locate N di Includes ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġbinaries . when Element Final ized Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . target Machine . operating System Family . is Windows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . compile Task . get (). depends On ( download J ni Md Header Windows ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . compile Task . get (). includes . from ( download J ni Md Header Windows ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . compile Task . get (). depends On ( download J ni Md Header Unix ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . compile Task . get (). includes . from ( download J ni Md Header Unix ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġlocate N di Includes (): ĠPath Ġ{ ĊĠĠĠ Ġ// ĠCheck Ġsystem Ġproperty ĊĠĠĠ Ġvar Ġn di Sdk Ġ= Ġif Ġ( System . getProperty (" n di Sdk ") Ġ!= Ġnull ) Ġfile ( System . getProperty (" n di Sdk ")). to Path () Ġelse Ġnull ĊĊĠĠĠ Ġ// ĠCheck Ġ" N DI _ SDK _ DIR " Ġenvironment Ġvariable ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& ĠSystem . getenv (" N DI _ SDK _ DIR ") Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile ( System . getenv (" N DI _ SDK _ DIR ")). to Path () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġtypical Ġinstall Ġlocations ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& ĠOperating System . current (). is Windows Ġ&& Ġfile (" C :/ Program ĠFiles / N DI Ġ 4 ĠSDK "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile (" C :/ Program ĠFiles / N DI Ġ 4 ĠSDK "). to Path () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& ĠOperating System . current (). is Mac Os X Ġ&& Ġfile ("/ Library / N DI ĠSDK Ġfor ĠApple "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile ("/ Library / N DI ĠSDK Ġfor ĠApple "). to Path () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġthe Ġworking Ġdirectory ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& Ġfile ("../ N DI ĠSDK Ġfor ĠLinux "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠLinux "). to Path () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& Ġfile ("../ N DI ĠSDK Ġfor ĠApple "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠApple "). to Path () ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull Ġ&& Ġfile ("../ N DI Ġ 4 ĠSDK "). exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġn di Sdk Ġ= Ġfile (" N DI Ġ 4 ĠSDK "). to Path () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( n di Sdk Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" No ĠN DI ĠSDK Ġfound . ĠPlease Ġset Ġthe ĠN DI _ SDK _ DIR Ġvariable Ġto Ġthe Ġinstall Ġlocation , Ġrun Ġgradle Ġwith Ġ- Dn di Sdk =< Install ĠPath >, Ġor Ġsymlink Ġthe Ġinstall Ġpath Ġto Ġyour Ġ\" dev ol ay \" Ġfolder .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠFiles . exists ( n di Sdk . resolve (" include ")) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn di Sdk . resolve (" include ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠFiles . exists ( n di Sdk . resolve (" Include ")) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn di Sdk . resolve (" Include ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" N DI ĠSDK Ġat Ġ$ n di Sdk Ġis Ġinvalid : ĠHas Ġno Ġ' include ' Ġor Ġ' Include ' Ġsubdirectory .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ // ĠAdd Ġartifacts Ġfor Ġde vol ay - java Ġto Ġdepend Ġon Ċ val Ġassemble Native Artifacts Ġby Ġtasks . register ing ( Jar :: class ) Ġ{ ĊĠĠĠ Ġarchive Base Name . set (" dev ol ay - native - artifacts ") ĊĠĠĠ Ġdestination Directory . set ( temporary Dir ) ĊĊĠĠĠ Ġcomponents . with Type ( Component With Bin aries :: class ). forEach Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠ Ġ( component Ġas ĠComponent With Bin aries ). binaries . when Element Final ized ( Component With Outputs :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠComponent With Native Runtime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmachine Ġ= Ġthis . target Machine ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġinclude Ġrelease Ġbinaries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . is Optim ized Ġ&& Ġ! this . getName (). toLowerCase (). contains (" debug ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( this . outputs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinto (" n atives /" Ġ+ Ġmachine . operating System Family . name Ġ+ Ġ"/" Ġ+ Ġmachine . architecture . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude (" *. lib ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexclude (" *. debug ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( machine . operating System Family . name Ġ== Ġ" android ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrename Ġ{ Ġit . sub Sequence ( 0 , Ġit . lastIndexOf ('. ')). toString () Ġ+ Ġ". android native " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġassemble Integr ated N DI Artifacts Ġby Ġtasks . register ing ( Jar :: class ) Ġ{ ĊĠĠĠ Ġarchive Base Name . set (" n di - lib - artifacts ") ĊĠĠĠ Ġdestination Directory . set ( temporary Dir ) ĊĊĠĠĠ Ġcomponents . with Type ( Component With Bin aries :: class ). forEach Ġ{ Ġcomponent Ġ-> ĊĠĠĠĠĠĠĠ Ġ( component Ġas ĠComponent With Bin aries ). binaries . when Element Final ized ( Component With Outputs :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠComponent With Native Runtime Ġ&& Ġthis . is Optim ized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmachine Ġ= Ġthis . target Machine ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnative Lib Path : ĠPath ? Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnative License Paths : ĠMutable List < Path > Ġ= Ġmutable ListOf (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnative Lib Name : ĠString ? Ġ= Ġnull ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( machine . operating System Family . name Ġ== Ġ" android ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Name Ġ= Ġ" lib n di . android native " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠAndroid / licenses / Bon j our . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠAndroid / licenses / lib n di _ licenses . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( machine . architecture . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arm v 7 a " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠAndroid / lib / ar me abi - v 7 a / lib n di . so "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" arm 6 4 - v 8 a " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠAndroid / lib / arm 6 4 - v 8 a / lib n di . so "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠAndroid / lib / x 8 6 / lib n di . so "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 - 6 4 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠAndroid / lib / x 8 6 _ 6 4 / lib n di . so "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( machine . operating System Family . name Ġ== Ġ" windows ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Name Ġ= Ġ" n di . dll " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( machine . architecture . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠWindows / Bin / x 8 6 / Processing . N DI . Lib . x 8 6 . dll "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠWindows / Bin / x 8 6 / Processing . N DI . Lib . License s . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 - 6 4 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠWindows / Bin / x 6 4 / Processing . N DI . Lib . x 6 4 . dll "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠWindows / Bin / x 6 4 / Processing . N DI . Lib . License s . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( machine . operating System Family . name Ġ== Ġ" macos ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Name Ġ= Ġ" lib n di . dylib " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠApple / licenses / lib n di _ licenses . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( machine . architecture . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 - 6 4 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠApple / lib / x 6 4 / lib n di . 4 . dylib "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( machine . operating System Family . name Ġ== Ġ" linux ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Name Ġ= Ġ" lib n di . so " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . add ( file ("../ N DI ĠSDK Ġfor ĠLinux / licenses / lib n di _ licenses . txt "). to Path ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġlinux Ġlibs Ġhave Ġ 2 Ġsymlink s Ġand Ġ 1 Ġregular Ġfile Ġin Ġthe Ġlib Ġfolder , Ġfind Ġthe Ġregular Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnative Lib Parent Path : ĠPath ? Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( machine . architecture . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Parent Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠLinux / lib / i 6 8 6 - linux - gnu "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x 8 6 - 6 4 " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Parent Path Ġ= Ġfile ("../ N DI ĠSDK Ġfor ĠLinux / lib / x 8 6 _ 6 4 - linux - gnu "). to Path () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( native Lib Parent Path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Path Ġ= ĠFiles . walk ( native Lib Parent Path ). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFiles . is Regular File ( it ) Ġ&& ĠFiles . size ( it ) Ġ> Ġ 1 0 Ġ* Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. findFirst (). orElse ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( native Lib Path Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Files . exists ( native Lib Path )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Adding ĠN DI Ġlib Ġfrom Ġ" Ġ+ Ġnative Lib Path . toString () Ġ+ Ġ" Ġto Ġintegrated Ġbuild .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( native Lib Path !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrename Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Lib Name !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinto (" n atives /" Ġ+ Ġmachine . operating System Family . name Ġ+ Ġ"/" Ġ+ Ġmachine . architecture . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative License Paths . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinto (" n atives /" Ġ+ Ġmachine . operating System Family . name Ġ+ Ġ"/" Ġ+ Ġmachine . architecture . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" Could Ġnot Ġfind ĠN DI Ġlib Ġin Ġexpected Ġlocation Ġ(" Ġ+ Ġnative Lib Path . toString () Ġ+ Ġ") Ġfor ĠOS Ġ\"" Ġ+ Ġmachine . operating System Family . name Ġ+ Ġ"\" Ġand Ġarch Ġ\"" Ġ+ Ġmachine . architecture . name Ġ+ Ġ"\" . ĠNo Ġintegrated Ġbuilds Ġavailable ."); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println (" No ĠN DI Ġpath Ġspecified Ġfor ĠOS Ġ\"" Ġ+ Ġmachine . operating System Family . name Ġ+ Ġ"\" Ġand Ġarch Ġ\"" Ġ+ Ġmachine . architecture . name Ġ+ Ġ"\ ", Ġno Ġintegrated Ġbuilds Ġavailable .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġnative Artifacts : ĠConfiguration ? Ġby Ġconfigurations . creating Ġ{ ĊĠĠĠ Ġis Can Be Cons umed Ġ= Ġtrue ĊĠĠĠ Ġis Can Be Resolved Ġ= Ġfalse Ċ } Ċ Ċ val Ġintegrated N di Artifacts : ĠConfiguration ? Ġby Ġconfigurations . creating Ġ{ ĊĠĠĠ Ġis Can Be Cons umed Ġ= Ġtrue ĊĠĠĠ Ġis Can Be Resolved Ġ= Ġfalse Ċ } Ċ Ċ artifacts Ġ{ ĊĠĠĠ Ġadd (" native Artifacts ", Ġassemble Native Artifacts ) ĊĠĠĠ Ġadd (" integr ated N di Artifacts ", Ġassemble Integr ated N DI Artifacts ) Ċ } Ċ