/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 7 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 Ġ Ġorg . jetbrains . kotlin . native . interop . tool Ċ Ċ import Ġorg . jetbrains . kotlin . kon an . target .* Ċ import Ġorg . jetbrains . kotlin . kon an . target . Kon an Target .* Ċ import Ġorg . jetbrains . kotlin . kon an . properties .* Ċ Ċ // ĠTODO : ĠHalf Ġof Ġthese Ġcalculations Ġare Ġalready Ġprovided Ġ Ċ // Ġby ĠC lang Host Ġclass Ġof Ġ" shared " Ġproject . Ċ // ĠBut Ġthere Ġare Ġsome Ġdis cre p ancies , Ġin Ġparticular Ġthe Ġ- B Ġcl ac ulation . Ċ fun ĠKon an Properties . default Compiler Opts (): ĠList < String > Ġ{ ĊĊĠĠĠ Ġ// ĠTODO : Ġeliminate Ġthis . Ġbelow ĊĠĠĠ Ġval Ġtarget Tool chain Ġ= Ġabsolute Target Tool chain ĊĠĠĠ Ġval Ġtarget Sys Root Ġ= Ġabsolute Target Sys Root ĊĠĠĠ Ġval Ġllvm Home Ġ= Ġabsolute Ll vm Home ĊĠĠĠ Ġval Ġllvm Version Ġ= Ġhost String (" llvm Version ") !! ĊĊĠĠĠ Ġ// ĠStub Generator Ġpasses Ġthe Ġarguments Ġto Ġlib clang Ġwhich ĊĠĠĠ Ġ// Ġworks Ġnot Ġexactly Ġthe Ġsame Ġway Ġas Ġthe Ġclang Ġbinary Ġand ĊĠĠĠ Ġ// Ġ( in Ġparticular ) Ġuses Ġdifferent Ġdefault Ġheader Ġsearch Ġpath . ĊĠĠĠ Ġ// ĠSee Ġe . g . Ġhttp :// lists . llvm . org / pi per mail / cfe - dev / 2 0 1 3 - November / 0 3 3 6 8 0 . html ĊĠĠĠ Ġ// ĠWe Ġworkaround Ġthe Ġproblem Ġwith Ġ- is ystem Ġflag Ġbelow . ĊĠĠĠ Ġval Ġis ystem Ġ= Ġ"$ llvm Home / lib / clang /$ llvm Version / include " ĊĠĠĠ Ġval Ġquadr uple Ġ= Ġtarget String (" quadr uple ") ĊĠĠĠ Ġval Ġarch Ġ= Ġtarget String (" arch ") ĊĠĠĠ Ġval Ġarch Selector Ġ= Ġif Ġ( quadr uple Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ ĠlistOf ("- target ", Ġquadr uple ) Ġelse ĠlistOf ("- arch ", Ġarch !! ) ĊĠĠĠ Ġval Ġcommon Args Ġ= ĠlistOf ("- is ystem ", Ġis ystem , Ġ"-- sys root =$ target Sys Root ") ĊĊĠĠĠ Ġval Ġhost Ġ= ĠTarget Manager . host ĊĠĠĠ Ġval Ġhost Specific Args Ġ= Ġwhen Ġ( host ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMAC BOOK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Version Min Flag Ġ= Ġtarget String (" os Version Min Flag C lang ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Version MinValue Ġ= Ġtarget String (" os Version Min ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("- B $ target Tool chain / usr / bin ") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( os Version Min Flag Ġ!= Ġnull Ġ&& Ġos Version MinValue Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("$ os Version Min Flag =$ os Version MinValue ") Ġelse Ġempty List ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠLIN UX Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlib G cc Ġ= Ġtarget String (" lib G cc ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbin Dir Ġ= Ġ"$ target Sys Root /${ lib G cc Ġ?: Ġ" bin "} " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- B $ bin Dir ", Ġ"-- gcc - toolchain =$ target Tool chain ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"- fuse - ld =$ target Tool chain / bin / ld ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠM ING W Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ("- B $ target Sys Root / bin ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unexpected Ġhost : Ġ${ host }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġarch Selector Ġ+ Ġcommon Args Ġ+ Ġhost Specific Args Ċ } ĊĊ