bake-toolkit 2.26.1 → 2.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -188,14 +188,12 @@ z-index: 100;
188
188
  </span>
189
189
  &nbsp; &nbsp; <br></span><br></span>
190
190
  &nbsp; }<br>
191
+ }<br><br>
192
+ Adapt toolchain: &#60;name&#62;, os: &#60;name&#62;, mainProject: &#60;name&#62;, mainConfig: &#60;name&#62;{<br>
193
+ ... see adapt documention for details.<br>
191
194
  }<br>
192
195
 
193
196
 
194
-
195
-
196
-
197
-
198
-
199
197
  <div id="dhtmltooltip"></div>
200
198
 
201
199
  <script type="text/javascript">
@@ -140,10 +140,16 @@
140
140
  <div class="section" id="changelog">
141
141
  <h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1>
142
142
  <dl class="docutils">
143
+ <dt>January x, 2017 - bake-toolkit 2.27.0</dt>
144
+ <dd><ul class="first last simple">
145
+ <li>Added: local <em>Adapt</em> with conditions (e.g. toolchain), see <a class="reference internal" href="syntax/adapt_configs.html#adapt-reference"><span>Adapt configs</span></a>.</li>
146
+ <li>Changed: qac: cip workaround slightly adapted, removed temporary debug output.</li>
147
+ </ul>
148
+ </dd>
143
149
  <dt>December 23, 2016 - bake-toolkit 2.26.1</dt>
144
150
  <dd><ul class="first last simple">
145
- <li>Changed: qac: next try to add a workaround for the cip file bug..</li>
146
- <li>Cosmetic: possible wrong message when reloading metas (&#8220;corrupt&#8221; instead of &#8220;changed&#8221;)</li>
151
+ <li>Changed: qac: next try to add a workaround for the cip file bug.</li>
152
+ <li>Cosmetic: fixed possible wrong message when reloading metas (&#8220;corrupt&#8221; instead of &#8220;changed&#8221;)</li>
147
153
  </ul>
148
154
  </dd>
149
155
  <dt>December 20, 2016 - bake-toolkit 2.26.0</dt>
@@ -5,7 +5,7 @@
5
5
  <head>
6
6
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
7
7
 
8
- <title>bake 2.26.1 &mdash; bake documentation</title>
8
+ <title>bake 2.27.0 &mdash; bake documentation</title>
9
9
 
10
10
  <link rel="stylesheet" href="_static/basic.css" type="text/css" />
11
11
  <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
@@ -94,7 +94,7 @@
94
94
  <ul class="dropdown-menu localtoc"
95
95
  role="menu"
96
96
  aria-labelledby="dLabelLocalToc"><ul>
97
- <li><a class="reference internal" href="#">bake 2.26.1</a><ul>
97
+ <li><a class="reference internal" href="#">bake 2.27.0</a><ul>
98
98
  </ul>
99
99
  </li>
100
100
  </ul>
@@ -134,8 +134,8 @@
134
134
  <div class="row">
135
135
  <div class="col-md-12">
136
136
 
137
- <div class="section" id="bake-2-26-1">
138
- <h1>bake 2.26.1<a class="headerlink" href="#bake-2-26-1" title="Permalink to this headline">¶</a></h1>
137
+ <div class="section" id="bake-2-27-0">
138
+ <h1>bake 2.27.0<a class="headerlink" href="#bake-2-27-0" title="Permalink to this headline">¶</a></h1>
139
139
  <p>bake, building software <strong>fast</strong> and <strong>easy</strong>!</p>
140
140
  <table border="1" class="docutils">
141
141
  <colgroup>
Binary file
@@ -1 +1 @@
1
- Search.setIndex({envversion:47,filenames:["changelog","commandline/commandline","concepts/build_hierarchy","concepts/concepts","concepts/inject","concepts/link_order","concepts/prebuild","concepts/the_main_project","concepts/the_project_meta_file","ide/eclipse/eclipse","ide/eclipse/how_to_convert_existing_cdt_workspace","ide/eclipse/how_to_create_a_new_project_in_eclipse","ide/eclipse/how_to_create_a_workspace_in_eclipse","ide/eclipse/how_to_debug_in_eclipse","ide/eclipse/how_to_install_eclipse_plugin","ide/eclipse/how_to_use_bake_in_eclipse","ide/ide_integrations","ide/vs/how_to_create_vs_projects","ide/vs/how_to_debug_in_vs","ide/vs/how_to_used_bake_in_vs","ide/vs/vs","ide/vs/vs_install","index","install/install_bake","internal","known_issues","license","performance/performance","quickstart/quickstart","syntax/adapt_configs","syntax/auto_adjustment","syntax/derive_configs","syntax/project_meta_syntax","syntax/syntax","syntax/variable_substitutions","tips_and_tricks/bakeclean","tips_and_tricks/dot","tips_and_tricks/how_to_use_bake_with_cygwin","tips_and_tricks/qac","tips_and_tricks/static_code_analysis","tips_and_tricks/the_bakery","tips_and_tricks/the_clang","tips_and_tricks/tips_and_tricks","why_bake/why_bake"],objects:{},objnames:{},objtypes:{},terms:{"0x00":24,"0x02":24,"0x3":0,"0xff":24,"1_5_1":38,"2p180":27,"2p95":[23,28],"3p0":27,"6p398":27,"7p352":27,"__all__":29,"__main__":29,"_dev":37,"_lintout":39,"_one_":42,"break":[0,43],"byte":24,"case":[0,6,12,30,39],"class":4,"default":[0,1,12,23,28,32,38,40],"export":10,"float":38,"function":0,"import":[],"long":[0,19,27],"new":[],"null":0,"return":[0,28,37],"static":[],"switch":[0,10,15,28,37,38,43],"throw":23,"true":[0,4,29,32],"try":[0,10],"while":23,abc:[1,29,34],abi:0,abl:[39,43],abort:[0,24,37],about:[0,15,38],abov:[0,2,6,10,16,26,29,31,38],absolut:0,absolute_path_to_working_dir:42,accept:[0,14],access:0,account:0,acf:38,action:26,activ:0,actual:23,adapt:[],add:[],addit:[19,26,27],addition:38,adjust:[],adjustcdt:0,adjustinclud:0,admin:[],adr:32,advantag:[],advis:26,after:[0,14,37,39,40],again:[0,10,27],algorithm:6,alia:[0,37,39],all:[0,1,2,6,7,12,13,15,26,29,31,32,36,37,39,40,41,42],allow:[0,1,7,31,34],allunittest:40,almost:11,along:0,alpha:41,alphabet:0,alreadi:15,also:[0,11,12,13,15,18,34,38],altern:38,alternativli:[],although:0,alwai:[0,7,13,15,32],ambigu:0,analys:0,analysi:[],analyz:[],ani:[7,18,26,35],annot:[0,19],anoth:[0,1,18,25,39],anotherfold:38,ansi:[1,37],anymor:[0,7,10,37],anyth:25,appear:15,append:[0,38],appli:[0,13,26,29,30,37,38],appropri:[0,6,10,15,18,38],april:0,apropri:23,ar470:0,archiv:[0,2,6,8,25,32,34],archiverpath:[0,15,34],aren:43,arg:0,argument:[0,6,18,35],aris:26,around:39,arrai:32,arrow:13,articular:26,artifact:34,artifactnam:[0,8,31,32,34],artifactnamebas:[0,34],asm:[1,32],asmpath:[0,15,34],asscoat:39,assembl:[34,42],associ:[9,26],assum:[1,8,23],atom:21,attribut:[0,29,31],august:0,author:26,auto:[],autodir:0,automat:[0,8,13,30,38],avail:[0,4,6,12,14,18,21,38],avoid:[0,7,23,37,43],back:[4,32,38],background:37,backward:0,bake:[],bakeclean:[],bakeqac:[],bakeri:[],base:[0,6,31,34],basedon:32,basi:42,basic:[],bat:[18,37],batch:[0,18],beauti:16,becaus:[4,8,31,39,43],becom:0,been:[0,1,25,26],befor:[0,5,10,15],begin:0,behaviour:[0,6,38],below:[0,14,18,21],best:[16,42],beteween:43,better:0,between:[0,15,43],big:43,bin:[0,18,34,37],binari:[0,26,37,39],bla:0,black:[1,28,37,40],blue:[32,40],bootload:34,bootloader_1:34,bootloaderupdat:30,both:[6,31],bottom:2,box:[13,15],broken:0,browser:23,bsp:40,bspabc:1,bspcorez6:0,bug:[0,23],bugfix:0,build:[],build_:[0,35],built:[0,1,6,7,8,25,37,38,39,43],bundl:0,busi:26,cach:[0,28],calcul:[0,30,38],calcvar:34,call:[0,1,8,18,35,37,38,39,40,41],can:[],candriv:[0,34],cannot:[0,4,7,13],care:0,caus:[23,26],cc2j:0,ccsv5:0,cct:[0,38],cdt:[],certain:38,chang:[0,6,7,10,13,15,23,25,29,35],charact:[0,37],charg:26,check:[0,1,18,21,23,40,42],checkbox:10,checker:41,checkout:38,child:[29,31],choos:[],chosen:[0,15,38],cip:0,circl:15,circular:0,cl470:0,claim:26,clang:[],clang_analyz:[0,41],clean:[],cleanup:35,clear:0,clearer:0,clearn:0,click:[13,15,19,21],client:[0,31],clobber:0,close:[0,6],cmake:[],cmd:[0,32,34],cmdline:[0,32],code:[],code_st:0,collect:[],collectionmandatori:40,color:[0,1,23,28,37,38,40],color_schem:38,com:[14,21],combin:[0,2,38],come:[17,39],comma:[0,1,31],command:[0,2,6,9,15,18,19,24,28,29,32,34,37,38,39,40,43],commandlin:[],comment:[0,1,32,40],commit:[10,12,42],common7:18,common:16,compar:[12,16],compat:[0,43],compil:[],complet:[0,6,10,15,39],complex:[],compon:[4,26],concaten:31,concret:4,condit:26,config:[],confignam:[0,34,39],configpkg:0,configur:[],confnam:34,confus:0,connect:[23,24,26],consecut:38,consequenti:26,consist:[0,8,26],consol:[0,1,15,37,40],contain:[8,26,30],content:[0,2,10,32,38],context:[4,7,10,12],contract:26,contrast:27,contributor:26,control:[10,12,29],conveni:[29,38],convers:[0,10],conversion_info:0,convert:[],copi:[0,6,26],copyright:26,corez6:0,corpor:26,correct:[0,37],correctli:[0,21,23],corrupt:0,cosmet:0,could:0,cpath:[0,15,34],cplusplu:41,cpp:[1,7,8,18,28,29,31,32,39,41],cpppath:[0,15,34],cprojec:12,cproject:[10,11,12,15],cpu:27,crash:0,creat:[],createvsproject:[0,17],creativ:16,ctrl:[0,37],ctt:[],current:[0,1,6,32,34,35,39,40],cursor:[32,40],custom:[2,8,39],customconfig:[0,2,29,31,32,36,41],cxxproject:[0,26],cyan:36,cyclic:0,cygdriv:[13,37],cygwin:[],damag:26,darwin13:[23,28],data:[0,26],databas:38,deadcod:41,deal:26,debug:[],debug_info:7,debug_main:8,decemb:0,decor:15,def:[0,34],defaulttoolchain:[0,7,8,15,18,19,29,31,32,34,39,41],defin:[],definit:[0,5,7,34],delet:[0,10,25,35],deped:23,depenc:43,depend:[],dependend:43,deprec:0,deprect:0,deriv:[],derv:31,describ:[15,18],descript:[0,32,34,40],deselect:19,desgin:[],design:[16,43],detail:28,detect:0,develop:[],devenv:18,diab:[0,29,31],diag_warn:0,dialog:[0,13],did:0,differ:[],dir:[0,32,34],direct:[0,26],directli:[6,15,34,38],directori:[],disabl:[0,19],discard:24,disclaim:26,disk:10,dismiss:38,displai:[0,15,19,32,40],distribut:[],doc:[0,39],docu:[0,32],document:[0,16,23,26,38,43],doe:[],don:[13,18,30,43],done:[0,7,13,28],dot:[],doubl:[21,32,40],download:[9,21],due:[],eabi:0,each:[0,26],earli:0,earlier:0,easi:[11,22,23,31,36,43],easier:[],easiest:[37,43],easili:[7,41,43],echo:8,eclips:[],eclipseord:[0,29,32],edit:[12,25,41],editor:9,either:[31,41],element:[29,30,31,32,40],elf:[0,34],ellips:36,els:[1,25],email:32,embrac:43,empti:[0,7,11,34,35],en_u:[23,38],enabl:[0,9,12,15],end:0,energi:43,enforc:38,english:23,ensur:[0,10],entir:43,env:[0,32],environ:[],environmentvari:[],equal:[0,34],equip:2,equival:26,error:[],escap:37,especi:0,esrlab:[14,21],etc:[8,18,34,37,38,39,42],evalu:[0,23,34],evalut:34,even:[0,26,35,39,43],event:26,everi:[0,2,8,39],everyth:7,exactli:[29,38],exampl:[],except:[0,6,15,24,28,32],exclud:[0,40],exclude_filt:0,excludefil:[0,32],execut:[0,2,6,8,13,18,25,39,42],executableconfig:[0,2,4,7,8,29,31,32,36,39,41],exemplari:26,exens:34,exist:[],exit:[0,28],exitstep:[0,32],expand:0,experiment:0,explicit:39,explicitli:[0,6,26],explor:[10,12,15],express:26,extend:[],extens:21,extern:[],externallibrari:[0,5,8,30,32],externallibrarysearchpath:[8,30,32],extrem:0,fact:39,fail:[],failur:43,fals:[0,32],fan:43,fast:[22,43],faster:27,featur:[12,14,15],februari:0,fetch:23,few:[0,6,15,38,43],file:[],filenam:[0,24,36],filesystem:35,fill:[10,11,15],filter:[0,32,38],find:10,finish:12,first:[0,1,18,30,31,38,39,40],fit:[26,43],fix:[0,27],flag:[0,7,8,18,31,32,39,41],flex:39,focu:43,folder:[0,1,6,11,30,35,38,39],follow:[6,13,14,16,21,26,28,30,31,34,37,39,41],follw:28,forget:13,form:26,format:[0,38,39],format_specif:39,forth:38,forward:[0,31,39],found:[0,10,12,13,23,28,29,34,37,38],framework:38,free:26,from:[],front:[0,4,32],fstab:37,full:34,furnish:26,gcc:[0,7,8,13,18,29,31,34,38,39,41],gcc_env:0,gdb:13,gem:[0,23],gener:[],get:[],ghz:27,git:42,github:[0,9],given:24,gizmomogwai:0,glob:[0,6],gmock:38,goal:[],goe:0,good:[12,26,43],googl:23,googletest:4,govern:26,grant:26,graphic:26,graphviz:36,greater:[0,24],green:[13,36],greenhil:0,gsub:23,gtest:38,had:0,hand:0,handl:[0,39],handler:37,happen:[0,8],hard:[4,30,36,43],hardcod:0,hash:[32,40],have:[0,1,4,7,10,11,12,13,15,18,23,26,30,31,32,37,38,39,40,41,43],hdd:27,header:[],hello:34,helper:39,here:[0,12,18,29,43],herebi:26,hereinaft:26,hide:[0,6],high:31,higher:0,highest:0,highlin:23,hinder:43,hit:37,holder:26,hopefulli:0,host:[0,1,8,23,28,29,34,39],hostnam:34,hour:43,howev:[0,13,23,26,42],http:[14,21,36],icon:16,idea:12,ignor:[0,12,14],ignore_cach:0,iinclud:[8,28],imag:36,imagin:41,immedi:0,impact:0,implement:4,impli:26,implicitli:31,improv:0,inc:[0,31],incident:26,includ:[],include_filt:0,include_path:0,includedir:[],inclus:0,incomplet:38,inconsist:[0,7],incorrect:[0,42],incorrectli:0,independ:[0,38,40,43],indirect:[0,26],infix:0,info:[0,24,28,42],informationen:10,inherit:[],inject:[],input:0,instal:[],instead:[0,4,7,10,37,38,41],integr:[],intel:27,intend:0,intern:[],internaldefin:[0,15,32],internalinclud:[0,15,32],internat:23,interrupt:[26,37],introduc:0,invalid:[],invert:0,invok:41,issu:[],istal:23,isystem:0,item:[15,19],itself:7,januari:0,java:0,json:0,juli:0,junction:[],june:0,kat:16,keep:32,keil:0,keyword:[0,29],kicker:43,kind:26,know:4,known:[],lab:[14,21,26],label:15,lack:16,lake:26,larg:43,larger:[0,36],last:[0,18,19],latest:0,latter:[6,34],lc_all:23,ldebug:0,lead:0,lear:26,least:2,leav:[7,25],length:24,less:43,let:8,level:[0,4,29],liabil:26,liabl:26,lib2:36,lib:[0,4,7,8,32,34,37],lib_bootloader_debug:34,lib_some_debug:34,libpostfixflag:32,libprefixflag:32,librari:[],libraryconfig:[0,2,4,7,8,29,31,32,36,39],libsub:8,licens:[],life:34,lightweight:43,like:[0,1,2,7,15,18,21,23,29,30,31,34,37,39,41],limit:26,line:[0,6,15,18,19,24,26,29,32,34,37,38,39,40,43],link:[],link_onli:0,linker:[0,2,18,29,31,32,34],linkerpath:[0,15,34],linkerscript:[0,32],lint:[],lint_cmac:39,lint_cppmac:39,lint_max:0,lint_min:0,lintpolici:[32,39],linux:[0,42],list:[0,12,26,31,39,42],listen:[0,24],llvm:0,lnt:[0,39],load:[0,28],local:0,localhost:24,locat:[0,8,11],lock:0,logic:6,longer:0,look:[21,31,34,43],loss:26,lower:4,luckili:0,machin:0,made:[0,13],magic:0,mai:[0,6,37,38],main1:40,main2:40,main:[],mainconfignam:[0,7,34,38],mainproj:[1,40],mainprojectdir:[0,34,39],mainprojectnam:[0,7,34],maintain:43,maintanc:43,major:[6,12,32,37],mak:39,make:[0,4,6,10,23,37,39,43],makefil:[],mani:[],manipul:29,manual:[0,9,10,25],map:[],mapfil:32,mar:13,march:0,mark:[0,10,15,32,40],marker:0,match:[0,1,29],materi:26,matter:31,matur:16,max:[0,39],maximum:[0,32],mcpp:38,mean:[0,10,29,41,43],mechan:12,mention:38,menu:[0,10,12,15,19],merchant:26,merg:[0,1,6,26,31],messag:[],met:26,meta:[],method:23,microsoft:18,might:[0,10,15,23,42],min:[0,27,39],mind:32,mingw:0,minimum:[0,32],minor:[0,32],minut:[15,28,43],misra:[0,38,39],miss:[],mix:29,mkdir:28,mmd:0,mock:[4,38],mode:[0,35,37],modif:26,modifi:26,modul:0,more:[],mount:13,mous:[32,40],move:[0,32,40],msvc:[0,18],multi:0,multipl:[],must:[0,5,6,7,13,15,26,37,39,40,43],mv7a8:0,my_comput:34,my_project:[8,28],myinclud:[],mylib:4,mylibraryproject:39,myproj:[0,1,17],myproject:34,myprojectnam:30,myspecialcollect:40,myvar:34,name:[0,1,6,7,11,13,15,23,24,29,30,32,34,38,39,40,41],narrow:38,nativ:[18,27],navig:11,nbsp:[32,40],ndebug:7,ndefault:40,necessari:[0,37,38,43],need:[0,4,6,7,9,10,27,30,34,38,39],neglig:26,nest:[],network:23,never:0,nevertheless:13,newer:37,newlib:6,next:[0,13,39],nice:38,nicer:0,nico:0,nicoretti:28,nil:23,nilclass:23,nmake:17,no_autodir:0,non:[0,6],none:[26,37],noninfring:26,note:[],noth:28,notic:26,novemb:0,now:[],number:[0,7,15,24,38],oathnam:0,object:[0,5,6],obtain:26,occur:0,octob:0,off:[0,15,32],offici:0,often:[23,36,39],old:[0,12],omit:[0,1,6,40],onc:[10,31,40],onli:[],open:[0,6,23,39],opinion:43,opt:0,optim:[6,7],option:[],order:[],org:36,origin:[0,4,29,37,38,42],other:[0,2,6,7,11,13,19,26,30,34,39,43],otherwis:[0,13,26,38,39],our:[37,43],out:[0,1,10,15,18,26,38,40,42],output:[],outputdir:[0,32,34],outsid:[4,7],over:[0,32,40],overview:[],overwrit:[0,7,38],overwritten:[0,12],owner:26,packag:37,page:[0,9,12,15,18,38],paht:39,paket:24,paramet:[0,19,30,35,37,38,39],parent:[0,1,29,31,32],pars:29,parser:[0,23],part:[6,26,30,36,39,40],parti:[0,6,26],particular:26,pass:0,password:23,patch:[0,32],path:[],path_separ:0,pathnam:0,pathto:32,pattern:[0,1,32],pclint:39,peak:27,peopl:43,per:[0,12,23,38],perfect:10,perform:[],perman:37,permiss:26,permit:26,person:[26,32],personali:43,phisolophi:43,phrase:26,pictur:0,pipe:0,place:[0,39,41],plain:0,platform:[0,28,34,38],pleas:[14,21,38],plugin:[0,14,18,21],png:36,point:[16,43],pointer:0,polici:32,port:24,portion:26,posix:37,possibl:[0,1,4,6,9,10,26,29,31,34,36,39,40,42],post:[2,8],poststep:[0,8,32],practic:42,pragma:39,pre:[],prebuild:[],predefin:[],prefer:[],prefix:[0,37],prepro:0,preproc_with_compil:0,press:12,prestep:[0,32,39],prestepmain:2,pretti:[31,43],preview:35,previou:0,primarybootloader2includ:30,print:[0,38,42],print_less:0,prior:0,prioriti:[0,31,34],probabl:0,problem:[0,15,39],procedur:35,process:[0,26,43],procur:26,product:26,profit:26,program:[26,37],programm:37,progress:43,progressbar:[0,23],proj:0,projec:[10,34],project:[],projectdir:[0,34,39],projectnam:[0,34,39],projnam:34,properli:0,properti:[12,18],protect:23,prove:43,provid:[0,9,16,26,28,39,43],proxi:23,prqa:38,publish:26,puh:[],purpos:[26,43],put:31,python:38,qac:[0,38],qac_hom:[0,38],qac_rcf:0,qaccctpatch:0,qacdata:[0,38],qacdoc:[0,38],qacfilt:0,qacli:[0,38],qacnofilt:[0,38],qacnoformat:0,qacpp:[],qacrawformat:[0,38],qacretri:[0,38],qacstep:[0,38],qaf:38,quickstart:[],quot:[32,40],raid:27,rake:0,ram:27,rare:[0,39],rather:43,raw:[0,37,38],rcf:[0,38],rcr:38,rdoc:23,reach:[0,38],read:[0,8,10,14,37,43],readi:28,real:[29,34],realli:[0,1],reanm:0,reason:[37,43],rebuild:[15,25,27,38],rebuilt:0,recogn:[0,30],recognit:0,recommend:17,recompil:0,recorgn:39,recreat:[0,12],rectangl:36,recurs:[0,31,35],red:36,redirect:39,redistribut:26,reduc:7,redund:0,refactor:25,refer:[0,6,7,30],referenc:[0,7,26,30],reformat:[0,38],refus:0,regardless:[0,29,39],regener:0,regular:[0,7,29,38,41],rel:[0,30,32],releas:[0,6,7,40],relev:6,reload:[0,28],remov:[],renam:[0,37],render:36,repetet:31,replac:[],report:[],repositori:[10,42],reproduc:26,requir:0,requiredbakevers:32,reserv:26,resourc:0,respons:32,rest:[24,39],restart:14,restrict:[0,26],result:[],retain:26,retri:[0,38],retriev:[],reus:0,revis:23,rework:0,rewrit:17,rfc:[],rgen:[0,23],rid:[12,37],right:[0,15,19,26,38],robust:0,root1:[1,40],root2:[1,40],root:[],rtext:[0,9,23],rtext_eclipse_plugin:9,rubi:[],ruby192:37,rubygem:[0,23],rule:[0,38],run:[0,13,23,27,37,40,43],same:[],satisfi:10,scenario:0,script:[0,6,10,17,32,38,43],scroll:0,search:[],sec:27,second:[0,15,38],secur:[14,41],see:[0,15,19,23,26,36,37,41,43],seem:42,seen:[0,15],select:[],sell:26,sens:10,sensit:0,separ:[0,1,26,31,39],seper:34,septemb:0,sequenc:37,server:21,servic:26,set:[],setup:[],sever:[0,1,10,24,31,40],shall:[4,6,12,26],shell:[2,37],shift:0,shortcut:0,should:[],show:[0,39],show_abs_path:0,show_config:0,show_doc:0,show_incs_and_def:0,show_licens:0,shown:[0,10,15,18,19,25,38],signal:37,similar:[12,38],simliar:41,simpli:[7,10,12,15,31,38],singl:[],site:[9,14,21],size:[15,39],skip:0,slash:[0,32],slightli:38,slow:0,small:[0,10],softwar:[9,14,22,26,42],solut:[18,23,39],some:[0,6,10,12,15,18,26,38,39],someth:[0,1,34],sometim:43,soon:[0,9],sorri:0,sort:0,sourc:[0,6,8,10,12,13,19,23,25,26,41],space:[0,32],spam:0,special:[0,26,30],specifi:[0,1,2,6,7,8,10,15,19,29,32,38,39,40,42],spefici:[],spent:43,spider:13,src:[0,8,28],standard:12,start:[],startup:[0,27],startupcod:0,startupstep:[0,32],state:26,statement:[15,42],stdin:[0,37],stdout:38,step:[2,8,10,14,21,37,39,41,43],stick:43,still:[0,10,16],stop:[0,1,40],stoponfirsterror:0,store:0,straight:31,strategi:0,stream:0,strict:26,string:[0,32,34,40],structur:[28,36],stty:37,studio:[],stuff:[2,7,34],style:0,sub1:42,sub2:42,sub3:40,sub:[0,7,8,12,31],subcollect:40,subfold:[0,38],subject:26,sublicens:26,subprocess:37,subproject:7,subset:10,substanti:26,substitu:[],substitut:[0,8,26,32,34],subtag:0,success:0,successful:14,successfulli:[23,25,42],suitabl:13,suppli:39,supplier:6,support:[],suppress:[0,38,39],sur:38,sure:[6,23,39],svn:42,swcabc:0,swcabcd:0,symbol:13,symlink:[],sync:[0,42],system:[0,7,10,23,27,32,34,37,39],tag:[0,6],take:[0,15,27,41,43],taken:[0,8],target:[0,32],team:10,templat:[0,38],temporari:0,term:26,test:[],testa:36,text:[32,36],than:[],thank:0,theconfig:34,thei:[1,6,12,16,29,35,43],them:[0,12,29,38],themselv:4,theori:26,theproject:34,therefor:[7,34,43],thi:[0,1,4,6,10,11,12,13,15,18,19,21,23,24,26,28,29,30,31,34,37,38,39,40,41,42,43],thing:38,think:43,third:[0,6,26,38],those:[6,15,43],though:[39,43],thread:[0,27],three:[6,11,32,38],through:43,ti_ar:0,ti_cl:0,ti_hom:0,time:[0,10,28,34],timeout:[0,38],tip:[],tms470:0,too:[],tool:[0,10,18,21,30,34,38,43],toolchain:[0,7,8,18,32,38,39],toolchain_info:0,toolchain_nam:0,toolchainnam:[0,34],toolkit:[0,17,23,40],toolsprqaprqa:[],top:29,tort:26,touch:25,tpng:36,treat:0,tred:36,tree:0,tri:[24,38],trick:[],trust:14,tty:37,turn:[0,6],two:[0,1,6,18,34,40],type:[],typic:[],typo:0,uncach:0,unchang:25,uncommon:1,undefin:23,under:[0,10,13,16],underscor:26,understand:[36,43],unfilt:38,uniniti:0,unintention:0,uniqu:40,unit:[0,38,40],unittest:[0,4,40],unittestlib:40,unittestlibswithoutbsp:40,unix:[],unknown:24,unless:[0,26],unlock:23,unnecessari:[],unter:12,until:38,updat:[0,9,14,21],updatesit:14,upper:4,upward:0,usag:34,user:[],userlibrari:[30,32],usr:34,usual:[1,2,15,18,34,43],usuali:23,valid:[0,7,30,31,32],validexitcod:[0,32],valu:[0,32,34],variabl:[],vcvarsal:18,verbos:0,veri:[0,11,12,23,27,31,40],version:[0,17,23,27,37,38,39,43],via:[0,10,15,19,21,29,37],view:15,violat:38,virtual:0,visibl:37,visual:[],vs2013:0,w3520:27,wai:[0,17,23,26,34,37,43],wait:43,wall:8,want:[0,1,6,10,12,28,29,41,43],warn:[],warn_sect:0,warranti:26,web:23,webpag:23,well:[0,39],were:[0,23,26],what:[],whatev:[7,30],when:[0,6,17,25,26,42],where:[0,43],whether:[26,43],which:[],white:37,whole:[0,10,26,27,36],whom:26,why:[],wildcard:[1,40],window:[0,9,10,15,19,27,34,37,42],wishlist:0,without:[18,25,26,27,29,34],wizard:[0,10],won:[2,39],word:0,work:[0,10,13,15,29,35,37,41,42],workaround:[0,25],workflow:[],workspac:[],world:34,would:[0,4,34],wrap:0,wrapper:[10,11,12,38],write:[0,29,30,38,41],writecc2j:0,written:[0,1,15],wrong:0,www:[14,21,36],wysiwyg:43,x86_64:[23,28],xeon:27,xml:[21,39],yesquant:40,yet:[10,18],you:[],your:[]},titles:["Changelog","Commandline","The build hierarchy","Concepts","Injection and inheritance of IncludeDir and Dependency","The link order","Prebuild configurations for distributions","The main project","The Project.meta file","Eclipse","How to convert existing CDT workspaces","How to create a new project in Eclipse","How to create a workspace in Eclipse","How to debug in Eclipse","How to install bake Eclipse integration","How to use bake in Eclipse","IDE Support","How to create VS-Projects using bake","How to Debug in Visual Studio","How to use bake in Visual Studio","Visual Studio","How to install bake Visual Studio integration","bake 2.26.1","Install bake","Internal developing notes","Known Issues","License","Performance","Quickstart","Adapt configs","Auto-adjustment of paths to existing projects","Derive configs","The Syntax of the Project.meta file","Syntax","Variables in Project.meta","bakeclean","Generating dot graphs","How to use bake with cygwin","QACPP","Static Code Analysis","The Bakery","Clang Analyze","Additional features","Why you should use bake"],titleterms:{"0x01":24,"0x0a":24,"import":[1,12],"new":11,"static":39,adapt:29,add:13,addit:[38,42],adjust:[15,30],admin:38,advantag:7,analysi:39,analyz:[38,41],applic:[1,13],arbitrari:1,auto:30,bake:[1,14,15,17,19,21,22,23,27,34,37,39,43],bakeclean:35,bakeqac:38,bakeri:40,basic:[16,39],bind:9,build:[1,2,15,24],can:13,cdt:[10,15],changelog:0,choos:15,clang:41,clean:[1,15],cmake:27,code:[13,39],collect:40,commandlin:[1,40],compil:[13,39],complex:34,concept:3,config:[29,31],configur:[6,13,15,39],convert:10,creat:[11,12,13,17],cygwin:37,debug:[13,18],defin:[15,34,39],depend:4,deriv:31,desgin:43,develop:24,differ:27,differnt:1,directori:[1,7],distribut:6,doe:23,dot:36,due:39,dure:23,eclips:[9,11,12,13,14,15,27],effect:29,environ:[27,34],error:[23,24,39],exampl:[1,2,5,7,8,23,38,39],exist:[10,30],extend:29,extern:5,fail:39,featur:42,file:[1,8,15,32],from:1,gener:36,get:1,goal:43,graph:[2,36],header:24,help:1,hierarchi:2,highlight:9,how:[1,10,11,12,13,14,15,17,18,19,21,23,37,40],implic:31,includ:[15,39,42],includedir:4,inform:13,inherit:[4,31],inject:4,instal:[14,21,23],instruct:32,integr:[14,16,21],interact:32,intern:24,introduct:29,invalid:23,issu:[23,25,39],junction:42,just:1,kei:9,known:[23,25,39],languag:23,librari:5,licens:26,link:5,lint:39,main:[7,15],makefil:27,mani:39,map:13,messag:23,meta:[8,32,34,40],miss:39,more:1,most:1,multipl:31,nest:34,note:[24,34,38],now:13,occurr:29,onli:39,option:[1,38],order:5,output:[7,38],packet:24,path:[13,30],perform:27,perspect:15,pre:[],prebuild:6,predefin:34,prefer:15,project:[1,7,8,11,15,17,24,30,32,34],qacpp:38,quickstart:28,receiv:24,remov:29,replac:29,report:38,result:[15,27],root:1,rubi:27,same:5,search:39,select:15,send:24,set:23,setup:39,should:43,singl:1,socket:24,specif:1,start:[23,24],step:38,studio:[18,19,20,21],support:16,symlink:42,syntax:[9,32,33,40],test:27,than:1,tip:[],todo:[],too:39,trick:[],type:[24,29],typic:6,unix:27,unnecessari:42,user:34,variabl:34,view:38,viewer:32,visual:[18,19,20,21],warn:34,what:[8,40],which:1,why:43,within:1,without:38,workflow:6,workspac:[10,12],you:[13,43],your:13}})
1
+ Search.setIndex({envversion:47,filenames:["changelog","commandline/commandline","concepts/build_hierarchy","concepts/concepts","concepts/inject","concepts/link_order","concepts/prebuild","concepts/the_main_project","concepts/the_project_meta_file","ide/eclipse/eclipse","ide/eclipse/how_to_convert_existing_cdt_workspace","ide/eclipse/how_to_create_a_new_project_in_eclipse","ide/eclipse/how_to_create_a_workspace_in_eclipse","ide/eclipse/how_to_debug_in_eclipse","ide/eclipse/how_to_install_eclipse_plugin","ide/eclipse/how_to_use_bake_in_eclipse","ide/ide_integrations","ide/vs/how_to_create_vs_projects","ide/vs/how_to_debug_in_vs","ide/vs/how_to_used_bake_in_vs","ide/vs/vs","ide/vs/vs_install","index","install/install_bake","internal","known_issues","license","performance/performance","quickstart/quickstart","syntax/adapt_configs","syntax/auto_adjustment","syntax/derive_configs","syntax/project_meta_syntax","syntax/syntax","syntax/variable_substitutions","tips_and_tricks/bakeclean","tips_and_tricks/dot","tips_and_tricks/how_to_use_bake_with_cygwin","tips_and_tricks/qac","tips_and_tricks/static_code_analysis","tips_and_tricks/the_bakery","tips_and_tricks/the_clang","tips_and_tricks/tips_and_tricks","why_bake/why_bake"],objects:{},objnames:{},objtypes:{},terms:{"0x00":24,"0x02":24,"0x3":0,"0xff":24,"1_5_1":38,"2p180":27,"2p95":[23,28],"3p0":27,"6p398":27,"7p352":27,"__all__":29,"__main__":29,"__this__":29,"_dev":37,"_lintout":39,"_one_":42,"break":[0,43],"byte":24,"case":[0,6,12,29,30,39],"class":4,"default":[0,1,12,23,28,32,38,40],"export":10,"float":38,"function":0,"import":[],"long":[0,19,27],"new":[],"null":0,"return":[0,28,37],"static":[],"switch":[0,10,15,28,37,38,43],"throw":23,"true":[0,4,29,32],"try":[0,10],"while":23,abc:[1,29,34],abi:0,abl:[39,43],abort:[0,24,37],about:[0,15,38],abov:[0,2,6,10,16,26,31,38],absolut:0,absolute_path_to_working_dir:42,accept:[0,14],access:0,account:0,acf:38,action:26,activ:0,actual:23,adapt:[],add:[],addit:[19,26,27],addition:38,adjust:[],adjustcdt:0,adjustinclud:0,admin:[],adr:32,advantag:[],advis:26,after:[0,14,37,39,40],again:[0,10,27],algorithm:6,alia:[0,37,39],all:[0,1,2,6,7,12,13,15,26,29,31,32,36,37,39,40,41,42],allow:[0,1,7,31,34],allunittest:40,almost:11,along:0,alpha:41,alphabet:0,alreadi:15,also:[0,11,12,13,15,18,34,38],altern:38,alternativli:[],although:0,alwai:[0,7,13,15,32],ambigu:0,analys:0,analysi:[],analyz:[],ani:[7,18,26,35],annot:[0,19],anoth:[0,1,18,25,39],anotherfold:38,ansi:[1,37],anymor:[0,7,10,37],anyth:25,appear:15,append:[0,29,38],appli:[13,26,30,37,38],appropri:[0,6,10,15,18,38],april:0,apropri:23,ar470:0,archiv:[0,2,6,8,25,32,34],archiverpath:[0,15,34],aren:43,arg:0,argument:[0,6,18,35],aris:26,around:39,arrai:32,arrow:13,articular:26,artifact:34,artifactnam:[0,8,31,32,34],artifactnamebas:[0,34],asm:[1,32],asmpath:[0,15,34],asscoat:39,assembl:[34,42],associ:[9,26],assum:[1,8,23],atom:21,attribut:[0,29,31],august:0,author:26,auto:[],autodir:0,automat:[0,8,13,30,38],avail:[0,4,6,12,14,18,21,38],avoid:[0,7,23,37,43],awar:29,back:[4,32,38],background:37,backward:0,bake:[],bakeclean:[],bakeqac:[],bakeri:[],base:[0,6,31,34],basedon:32,basi:42,basic:[],bat:[18,37],batch:[0,18],beauti:16,becaus:[4,8,31,39,43],becom:0,been:[0,1,25,26],befor:[0,5,10,15],begin:[0,29],behaviour:[0,6,38],below:[0,14,18,21,29],best:[16,42],beteween:43,better:0,between:[0,15,43],big:43,bin:[0,18,34,37],binari:[0,26,37,39],bla:0,black:[1,28,37,40],blue:[32,40],bootload:34,bootloader_1:34,bootloaderupdat:30,both:[6,29,31],bottom:2,box:[13,15],broken:0,browser:23,bsp:40,bspabc:1,bspcorez6:0,bug:[0,23],bugfix:0,build:[],build_:[0,35],built:[0,1,6,7,8,25,37,38,39,43],bundl:0,busi:26,cach:[0,28],calcul:[0,30,38],calcvar:34,call:[0,1,8,18,35,37,38,39,40,41],can:[],candriv:[0,34],cannot:[0,4,7,13],care:0,caus:[23,26],cc2j:0,ccsv5:0,cct:[0,38],cdt:[],certain:38,chang:[0,6,7,10,13,15,23,25,29,35],charact:[0,37],charg:26,check:[0,1,18,21,23,40,42],checkbox:10,checker:41,checkout:38,child:[29,31],choos:[],chosen:[0,15,38],cip:0,circl:15,circular:0,cl470:0,claim:26,clang:[],clang_analyz:[0,41],clean:[],cleanup:35,clear:0,clearer:0,clearn:0,click:[13,15,19,21],client:[0,31],clobber:0,close:[0,6],cmake:[],cmd:[0,32,34],cmdline:[0,32],code:[],code_st:0,collect:[],collectionmandatori:40,color:[0,1,23,28,37,38,40],color_schem:38,com:[14,21],combin:[0,2,38],come:[17,39],comma:[0,1,31],command:[2,6,9,15,18,19,24,28,34,37,38,39,40,43],commandlin:[],comment:[0,1,32,40],commit:[10,12,42],common7:18,common:16,compar:[12,16],compat:[0,43],compil:[],complet:[0,6,10,15,39],complex:[],compon:[4,26],concaten:31,concret:4,condit:26,config:[],confignam:[0,34,39],configpkg:0,configur:[],confnam:34,confus:0,connect:[23,24,26],consecut:38,consequenti:26,consist:[0,8,26],consol:[0,1,15,37,40],contain:[8,26,30],content:[0,2,10,32,38],context:[4,7,10,12],contract:26,contrast:27,contributor:26,control:[10,12,29],conveni:[29,38],convers:[0,10],conversion_info:0,convert:[],copi:[0,6,26],copyright:26,corez6:0,corpor:26,correct:[0,37],correctli:[0,21,23],corrupt:0,cosmet:0,could:0,cpath:[0,15,34],cplusplu:41,cpp:[1,7,8,18,28,29,31,32,39,41],cpppath:[0,15,34],cprojec:12,cproject:[10,11,12,15],cpu:27,crash:0,creat:[],createvsproject:[0,17],creativ:16,ctrl:[0,37],ctt:[],current:[0,1,6,29,32,34,35,39,40],cursor:[32,40],custom:[2,8,39],customconfig:[0,2,29,31,32,36,41],cxxproject:[0,26],cyan:36,cyclic:0,cygdriv:[13,37],cygwin:[],damag:26,darwin13:[23,28],data:[0,26],databas:38,deadcod:41,deal:26,debug:[],debug_info:7,debug_main:8,decemb:0,decor:15,def:[0,34],defaulttoolchain:[0,7,8,15,18,19,29,31,32,34,39,41],defin:[],definit:[0,5,7,34],delet:[0,10,25,35],deped:23,depenc:43,depend:[],dependend:43,deprec:0,deprect:0,deriv:[],derv:31,describ:[15,18],descript:[0,32,34,40],deselect:19,desgin:[],design:[16,43],detail:[28,29,32],detect:0,develop:[],devenv:18,diab:[0,29,31],diag_warn:0,dialog:[0,13],did:0,differ:[],dir:[0,32,34],direct:[0,26],directli:[6,15,34,38],directori:[],disabl:[0,19],discard:24,disclaim:26,disk:10,dismiss:38,displai:[0,15,19,32,40],distribut:[],doc:[0,39],docu:[0,32],document:[0,16,23,26,32,38,43],doe:[],don:[13,18,30,43],done:[0,7,13,28],dot:[],doubl:[21,32,40],download:[9,21],due:[],eabi:0,each:[0,26],earli:0,earlier:0,easi:[11,22,23,31,36,43],easier:[],easiest:[37,43],easili:[7,41,43],echo:8,eclips:[],eclipseord:[0,29,32],edit:[12,25,41],editor:9,either:[29,31,41],element:[29,30,31,32,40],elf:[0,34],ellips:36,els:[1,25],email:32,embrac:43,empti:[0,7,11,29,34,35],en_u:[23,38],enabl:[0,9,12,15],end:0,energi:43,enforc:38,english:23,ensur:[0,10],entir:43,env:[0,32],environ:[],environmentvari:[],equal:[0,34],equip:2,equival:26,error:[],escap:37,especi:0,esrlab:[14,21],etc:[8,18,34,37,38,39,42],evalu:[0,23,34],evalut:34,even:[0,26,35,39,43],event:26,everi:[0,2,8,39],everyth:7,exactli:[29,38],exampl:[],except:[0,6,15,24,28,32],exclud:[0,40],exclude_filt:0,excludefil:[0,32],execut:[0,2,6,8,13,18,25,39,42],executableconfig:[0,2,4,7,8,29,31,32,36,39,41],exemplari:26,exens:34,exist:[],exit:[0,28],exitstep:[0,32],expand:0,experiment:0,explain:29,explicit:39,explicitli:[0,6,26],explor:[10,12,15],express:26,extend:[],extens:21,extern:[],externallibrari:[0,5,8,30,32],externallibrarysearchpath:[8,30,32],extrem:0,fact:39,fail:[],failur:43,fals:[0,32],fan:43,fast:[22,43],faster:27,featur:[12,14,15],februari:0,fetch:23,few:[0,6,15,38,43],file:[],filenam:[0,24,36],filesystem:35,fill:[10,11,15],filter:[0,32,38],find:10,finish:12,first:[0,1,18,29,30,31,38,39,40],fit:[26,43],fix:[0,27],flag:[0,7,8,18,31,32,39,41],flex:39,focu:43,folder:[0,1,6,11,30,35,38,39],follow:[6,13,14,16,21,26,28,30,31,34,37,39,41],follw:28,forget:13,form:26,format:[0,38,39],format_specif:39,forth:38,forward:[0,31,39],found:[0,10,12,13,23,28,29,34,37,38],four:29,framework:38,free:26,from:[],front:[0,4,32],fstab:37,full:34,furnish:26,gcc:[0,7,8,13,18,29,31,34,38,39,41],gcc_env:0,gdb:13,gem:[0,23],gener:[],get:[],ghz:27,git:42,github:[0,9],given:24,gizmomogwai:0,glob:[0,6],gmock:38,goal:[],goe:0,good:[12,26,43],googl:23,googletest:4,govern:26,grant:26,graphic:26,graphviz:36,greater:[0,24],green:[13,36],greenhil:0,gsub:23,gtest:38,had:0,hand:0,handl:[0,39],handler:37,happen:[0,8],hard:[4,30,36,43],hardcod:0,hash:[32,40],have:[0,1,4,7,10,11,12,13,15,18,23,26,29,30,31,32,37,38,39,40,41,43],hdd:27,header:[],hello:34,helper:39,here:[0,12,18,29,43],herebi:26,hereinaft:26,hide:[0,6],high:31,higher:0,highest:0,highlin:23,hinder:43,hit:37,holder:26,hopefulli:0,host:[0,1,8,23,28,29,34,39],hostnam:34,hour:43,howev:[0,13,23,26,42],http:[14,21,36],icon:16,idea:12,ignor:[0,12,14],ignore_cach:0,iinclud:[8,28],imag:36,imagin:41,immedi:[0,29],impact:0,implement:4,impli:26,implicitli:31,improv:0,inc:[0,31],incident:26,includ:[],include_filt:0,include_path:0,includedir:[],inclus:0,incomplet:38,inconsist:[0,7],incorrect:[0,42],incorrectli:0,independ:[0,38,40,43],indirect:[0,26],infix:0,info:[0,24,28,29,42],informationen:10,inherit:[],inject:[],input:0,instal:[],instead:[0,4,7,10,37,38,41],integr:[],intel:27,intend:0,intern:[],internaldefin:[0,15,32],internalinclud:[0,15,32],internat:23,interrupt:[26,37],introduc:0,invalid:[],invert:0,invok:41,issu:[],istal:23,isystem:0,item:[15,19],itself:7,januari:0,java:0,json:0,juli:0,junction:[],june:0,kat:16,keep:32,keil:0,keyword:[0,29],kicker:43,kind:26,know:4,known:[],lab:[14,21,26],label:15,lack:16,lake:26,larg:43,larger:[0,36],last:[0,18,19],latest:0,latter:[6,34],lc_all:23,ldebug:0,lead:0,lear:26,least:2,leav:[7,25],length:24,less:43,let:8,level:[0,4,29],liabil:26,liabl:26,lib2:36,lib:[0,4,7,8,32,34,37],lib_bootloader_debug:34,lib_some_debug:34,libpostfixflag:32,libprefixflag:32,librari:[],libraryconfig:[0,2,4,7,8,29,31,32,36,39],libsub:8,licens:[],life:34,lightweight:43,like:[0,1,2,7,15,18,21,23,29,30,31,34,37,39,41],limit:26,line:[6,15,18,19,24,26,34,37,38,39,40,43],link:[],link_onli:0,linker:[0,2,18,29,31,32,34],linkerpath:[0,15,34],linkerscript:[0,32],lint:[],lint_cmac:39,lint_cppmac:39,lint_max:0,lint_min:0,lintpolici:[32,39],linux:[0,29,42],list:[0,12,26,29,31,39,42],listen:[0,24],llvm:0,lnt:[0,39],load:[0,28],local:[0,29],localhost:24,locat:[0,8,11],lock:0,logic:6,longer:0,look:[21,29,31,34,43],loss:26,lower:4,luckili:0,mac:29,machin:0,made:[0,13],magic:0,mai:[0,6,37,38],main1:40,main2:40,main:[],mainconfig:[29,32],mainconfignam:[0,7,34,38],mainproj:[1,40],mainproject:[29,32],mainprojectdir:[0,34,39],mainprojectnam:[0,7,34],maintain:43,maintanc:43,major:[6,12,29,32,37],mak:39,make:[0,4,6,10,23,37,39,43],makefil:[],mani:[],manipul:29,manual:[0,9,10,25],map:[],mapfil:32,mar:13,march:0,mark:[0,10,15,32,40],marker:0,match:[0,1,29],materi:26,matter:31,matur:16,max:[0,39],maximum:[0,32],mcpp:38,mean:[0,10,29,41,43],mechan:12,mention:38,menu:[0,10,12,15,19],merchant:26,merg:[0,1,6,26,31],messag:[],met:26,meta:[],method:23,microsoft:18,might:[0,10,15,23,42],min:[0,27,39],mind:32,mingw:0,minimum:[0,32],minor:[0,32],minut:[15,28,43],misra:[0,38,39],miss:[],mix:29,mkdir:28,mmd:0,mock:[4,38],mode:[0,35,37],modif:26,modifi:26,modul:0,more:[],mount:13,mous:[32,40],move:[0,32,40],msvc:[0,18],multi:0,multipl:[],must:[0,5,6,7,13,15,26,37,39,40,43],mv7a8:0,my_comput:34,my_project:[8,28],myinclud:[],mylib:4,mylibraryproject:39,myproj:[0,1,17],myproject:34,myprojectnam:30,myspecialcollect:40,myvar:34,name:[0,1,6,7,11,13,15,23,24,29,30,32,34,38,39,40,41],narrow:38,nativ:[18,27],navig:11,nbsp:[32,40],ndebug:7,ndefault:40,necessari:[0,37,38,43],need:[0,4,6,7,9,10,27,30,34,38,39],neglig:26,nest:[],network:23,never:0,nevertheless:13,newer:37,newlib:6,next:[0,13,39],nice:38,nicer:0,nico:0,nicoretti:28,nil:23,nilclass:23,nmake:17,no_autodir:0,non:[0,6],none:[26,37],noninfring:26,note:[],noth:28,notic:26,novemb:0,now:[],number:[0,7,15,24,38],oathnam:0,object:[0,5,6],obtain:26,occur:0,octob:0,off:[0,15,32],offici:0,often:[23,36,39],old:[0,12],omit:[0,1,6,40],onc:[10,31,40],onli:[],open:[0,6,23,39],oper:29,opinion:43,opt:0,optim:[6,7],option:[],order:[],org:36,origin:[0,4,29,37,38,42],other:[0,2,6,7,11,13,19,26,30,34,39,43],otherwis:[0,13,26,38,39],our:[37,43],out:[0,1,10,15,18,26,38,40,42],output:[],outputdir:[0,32,34],outsid:[4,7,29],over:[0,32,40],overview:[],overwrit:[0,7,38],overwritten:[0,12],owner:26,packag:37,page:[0,9,12,15,18,38],paht:39,paket:24,paramet:[0,19,30,35,37,38,39],parent:[0,1,29,31,32],pars:29,parser:[0,23],part:[6,26,30,36,39,40],parti:[0,6,26],particular:26,pass:0,password:23,patch:[0,32],path:[],path_separ:0,pathnam:0,pathto:32,pattern:[0,1,32],pclint:39,peak:27,peopl:43,per:[0,12,23,38],perfect:10,perform:[],perman:37,permiss:26,permit:26,person:[26,32],personali:43,phisolophi:43,phrase:26,pictur:0,pipe:0,place:[0,39,41],plain:0,platform:[0,28,34,38],pleas:[14,21,38],plugin:[0,14,18,21],png:36,point:[16,43],pointer:0,polici:32,port:24,portion:26,posix:37,possibl:[0,1,4,6,9,10,26,29,31,34,36,39,40,42],post:[2,8],poststep:[0,8,32],practic:42,pragma:39,pre:[],prebuild:[],predefin:[],prefer:[],prefix:[0,37],prepro:0,preproc_with_compil:0,press:12,prestep:[0,32,39],prestepmain:2,pretti:[31,43],preview:35,previou:0,primarybootloader2includ:30,print:[0,38,42],print_less:0,prior:0,prioriti:[0,31,34],probabl:0,problem:[0,15,39],procedur:35,process:[0,26,43],procur:26,product:26,profit:26,program:[26,37],programm:37,progress:43,progressbar:[0,23],proj:0,projec:[10,34],project:[],projectdir:[0,34,39],projectnam:[0,34,39],projnam:34,properli:0,properti:[12,18],protect:23,prove:43,provid:[0,9,16,26,28,39,43],proxi:23,prqa:38,publish:26,puh:[],purpos:[26,43],put:31,python:38,qac:[0,38],qac_hom:[0,38],qac_rcf:0,qaccctpatch:0,qacdata:[0,38],qacdoc:[0,38],qacfilt:0,qacli:[0,38],qacnofilt:[0,38],qacnoformat:0,qacpp:[],qacrawformat:[0,38],qacretri:[0,38],qacstep:[0,38],qaf:38,quickstart:[],quot:[32,40],raid:27,rake:0,ram:27,rare:[0,39],rather:43,raw:[0,37,38],rcf:[0,38],rcr:38,rdoc:23,reach:[0,38],read:[0,8,10,14,29,37,43],readi:28,real:[29,34],realli:[0,1],reanm:0,reason:[37,43],rebuild:[15,25,27,38],rebuilt:0,recogn:[0,30],recognit:0,recommend:17,recompil:0,recorgn:39,recreat:[0,12],rectangl:36,recurs:[0,31,35],red:36,redirect:39,redistribut:26,reduc:7,redund:0,refactor:25,refer:[0,6,7,30],referenc:[0,7,26,29,30],reformat:[0,38],refus:0,regardless:[0,29,39],regener:0,regular:[0,7,29,38,41],rel:[0,30,32],releas:[0,6,7,40],relev:6,reload:[0,28],rememb:29,remov:[],renam:[0,37],render:36,repetet:31,replac:[],report:[],repositori:[10,42],reproduc:26,requir:0,requiredbakevers:32,reserv:26,resourc:0,respons:32,rest:[24,39],restart:14,restrict:[0,26,29],result:[],retain:26,retri:[0,38],retriev:[],reus:0,revis:23,rework:0,rewrit:17,rfc:[],rgen:[0,23],rid:[12,37],right:[0,15,19,26,38],robust:0,root1:[1,40],root2:[1,40],root:[],rtext:[0,9,23],rtext_eclipse_plugin:9,rubi:[],ruby192:37,rubygem:[0,23],rule:[0,38],run:[0,13,23,27,37,40,43],same:[],satisfi:10,scenario:0,script:[0,6,10,17,32,38,43],scroll:0,search:[],sec:27,second:[0,15,38],secur:[14,41],see:[0,15,19,23,26,32,36,37,41,43],seem:42,seen:[0,15],select:[],sell:26,sens:10,sensit:0,separ:[0,1,26,31,39],seper:34,septemb:0,sequenc:37,server:21,servic:26,set:[],setup:[],sever:[0,1,10,24,31,40],shall:[4,6,12,26],shell:[2,37],shift:0,shortcut:0,should:[],show:[0,39],show_abs_path:0,show_config:0,show_doc:0,show_incs_and_def:0,show_licens:0,shown:[0,10,15,18,19,25,38],signal:37,similar:[12,29,38],simliar:41,simpli:[7,10,12,15,31,38],singl:[],site:[9,14,21],size:[15,39],skip:0,slash:[0,32],slightli:[0,38],slow:0,small:[0,10],softwar:[9,14,22,26,42],solut:[18,23,39],some:[0,6,10,12,15,18,26,38,39],someth:[0,1,34],sometim:43,soon:[0,9],sorri:0,sort:0,sourc:[0,6,8,10,12,13,19,23,25,26,41],space:[0,32],spam:0,special:[0,26,30],specifi:[0,1,2,6,7,8,10,15,19,29,32,38,39,40,42],spefici:[],spent:43,spider:13,src:[0,8,28],standard:12,start:[],startup:[0,27],startupcod:0,startupstep:[0,32],state:26,statement:[15,42],stdin:[0,37],stdout:38,step:[2,8,10,14,21,37,39,41,43],stick:43,still:[0,10,16],stop:[0,1,40],stoponfirsterror:0,store:0,straight:31,strategi:0,stream:0,strict:26,string:[0,32,34,40],structur:[28,36],stty:37,studio:[],stuff:[2,7,34],style:0,sub1:42,sub2:42,sub3:40,sub:[0,7,8,12,31],subcollect:40,subfold:[0,38],subject:26,sublicens:26,subprocess:37,subproject:7,subset:10,substanti:26,substitu:[],substitut:[0,8,26,32,34],subtag:0,success:0,successful:14,successfulli:[23,25,42],suitabl:13,suppli:39,supplier:6,support:[],suppress:[0,38,39],sur:38,sure:[6,23,39],svn:42,swcabc:0,swcabcd:0,symbol:13,symlink:[],sync:[0,42],system:[0,7,10,23,27,29,32,34,37,39],tag:[0,6],take:[0,15,27,41,43],taken:[0,8],target:[0,32],team:10,templat:[0,38],temporari:0,term:26,test:[],testa:36,text:[32,36],than:[],thank:0,theconfig:34,thei:[1,6,12,16,29,35,43],them:[0,12,29,38],themselv:4,theori:26,theproject:34,therefor:[7,34,43],thi:[0,1,4,6,10,11,12,13,15,18,19,21,23,24,26,28,29,30,31,34,37,38,39,40,41,42,43],thing:[29,38],think:43,third:[0,6,26,38],those:[6,15,43],though:[39,43],thread:[0,27],three:[6,11,32,38],through:43,ti_ar:0,ti_cl:0,ti_hom:0,time:[0,10,28,34],timeout:[0,38],tip:[],tms470:0,too:[],tool:[0,10,18,21,30,34,38,43],toolchain:[0,7,8,18,29,32,38,39],toolchain_info:0,toolchain_nam:0,toolchainnam:[0,34],toolkit:[0,17,23,40],toolsprqaprqa:[],top:29,tort:26,touch:25,tpng:36,treat:0,tred:36,tree:0,tri:[24,38],trick:[],trust:14,tty:37,turn:[0,6],two:[0,1,6,18,29,34,40],type:[],typic:[],typo:0,uncach:0,unchang:25,uncommon:1,undefin:23,under:[0,10,13,16],underscor:26,understand:[36,43],unfilt:38,uniniti:0,unintention:0,uniqu:40,unit:[0,38,40],unittest:[0,4,40],unittestlib:40,unittestlibswithoutbsp:40,unix:[],unknown:24,unless:[0,26],unlock:23,unnecessari:[],unter:12,until:38,updat:[0,9,14,21],updatesit:14,upper:4,upward:0,usag:34,user:[],userlibrari:[30,32],usr:34,usual:[1,2,15,18,29,34,43],usuali:23,valid:[0,7,29,30,31,32],validexitcod:[0,32],valu:[0,32,34],variabl:[],vcvarsal:18,verbos:0,veri:[0,11,12,23,27,29,31,40],version:[0,17,23,27,37,38,39,43],via:[0,10,15,19,21,29,37],view:15,violat:38,virtual:0,visibl:37,visual:[],vs2013:0,w3520:27,wai:[0,17,23,26,34,37,43],wait:43,wall:8,want:[0,1,6,10,12,28,29,41,43],warn:[],warn_sect:0,warranti:26,web:23,webpag:23,well:[0,39],were:[0,23,26,29],what:[],whatev:[7,30],when:[0,6,17,25,26,29,42],where:[0,43],whether:[26,43],which:[],white:37,whole:[0,10,26,27,36],whom:26,why:[],wildcard:[1,40],window:[0,9,10,15,19,27,29,34,37,42],wishlist:0,without:[18,25,26,27,34],wizard:[0,10],won:[2,39],word:0,work:[0,10,13,15,29,35,37,41,42],workaround:[0,25],workflow:[],workspac:[],world:34,would:[0,4,34],wrap:0,wrapper:[10,11,12,38],write:[0,29,30,38,41],writecc2j:0,written:[0,1,15],wrong:0,www:[14,21,36],wysiwyg:43,x86_64:[23,28],xeon:27,xml:[21,39],yesquant:40,yet:[10,18],you:[],your:[]},titles:["Changelog","Commandline","The build hierarchy","Concepts","Injection and inheritance of IncludeDir and Dependency","The link order","Prebuild configurations for distributions","The main project","The Project.meta file","Eclipse","How to convert existing CDT workspaces","How to create a new project in Eclipse","How to create a workspace in Eclipse","How to debug in Eclipse","How to install bake Eclipse integration","How to use bake in Eclipse","IDE Support","How to create VS-Projects using bake","How to Debug in Visual Studio","How to use bake in Visual Studio","Visual Studio","How to install bake Visual Studio integration","bake 2.27.0","Install bake","Internal developing notes","Known Issues","License","Performance","Quickstart","Adapt configs","Auto-adjustment of paths to existing projects","Derive configs","The Syntax of the Project.meta file","Syntax","Variables in Project.meta","bakeclean","Generating dot graphs","How to use bake with cygwin","QACPP","Static Code Analysis","The Bakery","Clang Analyze","Additional features","Why you should use bake"],titleterms:{"0x01":24,"0x0a":24,"import":[1,12],"new":11,"static":39,adapt:29,add:13,addit:[38,42],adjust:[15,30],admin:38,advantag:7,analysi:39,analyz:[38,41],appli:29,applic:[1,13],arbitrari:1,auto:30,bake:[1,14,15,17,19,21,22,23,27,34,37,39,43],bakeclean:35,bakeqac:38,bakeri:40,basic:[16,39],bind:9,build:[1,2,15,24],can:13,cdt:[10,15],changelog:0,choos:15,clang:41,clean:[1,15],cmake:27,code:[13,39],collect:40,command:29,commandlin:[1,40],compil:[13,39],complex:34,concept:3,condit:29,config:[29,31],configur:[6,13,15,39],convert:10,creat:[11,12,13,17],cygwin:37,debug:[13,18],defin:[15,34,39],depend:4,deriv:31,desgin:43,develop:24,differ:27,differnt:1,directori:[1,7],distribut:6,doe:23,dot:36,due:39,dure:23,eclips:[9,11,12,13,14,15,27],effect:29,environ:[27,34],error:[23,24,39],exampl:[1,2,5,7,8,23,38,39],exist:[10,30],extend:29,extern:5,fail:39,featur:42,file:[1,8,15,32],from:[1,29],gener:36,get:1,goal:43,graph:[2,36],header:24,help:1,hierarchi:2,highlight:9,how:[1,10,11,12,13,14,15,17,18,19,21,23,37,40],implic:31,includ:[15,39,42],includedir:4,inform:13,inherit:[4,31],inject:4,instal:[14,21,23],instruct:32,integr:[14,16,21],interact:32,intern:24,introduct:29,invalid:23,issu:[23,25,39],junction:42,just:1,kei:9,known:[23,25,39],languag:23,librari:5,licens:26,line:29,link:5,lint:39,main:[7,15],makefil:27,mani:39,map:13,messag:23,meta:[8,29,32,34,40],miss:39,more:1,most:1,multipl:31,nest:34,note:[24,34,38],now:13,occurr:29,onli:39,option:[1,38],order:[5,29],output:[7,38],packet:24,path:[13,30],perform:27,perspect:15,pre:[],prebuild:6,predefin:34,prefer:15,project:[1,7,8,11,15,17,24,29,30,32,34],qacpp:38,quickstart:28,receiv:24,remov:29,replac:29,report:38,result:[15,27],root:1,rubi:27,same:5,search:39,select:15,send:24,set:23,setup:39,should:43,singl:1,socket:24,specif:1,start:[23,24],step:38,studio:[18,19,20,21],support:16,symlink:42,syntax:[9,32,33,40],test:27,than:1,tip:[],todo:[],too:39,trick:[],type:[24,29],typic:6,unix:27,unnecessari:42,user:34,variabl:34,view:38,viewer:32,visual:[18,19,20,21],warn:34,what:[8,40],which:1,why:43,within:1,without:38,workflow:6,workspac:[10,12],you:[13,43],your:13}})
@@ -75,7 +75,7 @@
75
75
  <li class="toctree-l1 current"><a class="reference internal" href="syntax.html">Syntax</a></li>
76
76
  <li class="toctree-l1"><a class="reference internal" href="../commandline/commandline.html">Commandline</a></li>
77
77
  <li class="toctree-l1"><a class="reference internal" href="../ide/ide_integrations.html">IDE Support</a></li>
78
- <li class="toctree-l1"><a class="reference internal" href="../tips_and_tricks/tips_and_tricks.html">Tips and Tricks</a></li>
78
+ <li class="toctree-l1"><a class="reference internal" href="../tips_and_tricks/tips_and_tricks.html">Additional features</a></li>
79
79
  <li class="toctree-l1"><a class="reference internal" href="../performance/performance.html">Performance</a></li>
80
80
  <li class="toctree-l1"><a class="reference internal" href="../known_issues.html">Known Issues</a></li>
81
81
  <li class="toctree-l1"><a class="reference internal" href="../changelog.html">Changelog</a></li>
@@ -98,8 +98,15 @@
98
98
  aria-labelledby="dLabelLocalToc"><ul>
99
99
  <li><a class="reference internal" href="#">Adapt configs</a><ul>
100
100
  <li><a class="reference internal" href="#introduction">Introduction</a></li>
101
+ <li><a class="reference internal" href="#from-command-line">From command line</a></li>
102
+ <li><a class="reference internal" href="#from-project-meta">From Project.meta</a></li>
103
+ <li><a class="reference internal" href="#conditions-and-effectiveness">Conditions and effectiveness</a><ul>
104
+ <li><a class="reference internal" href="#condition">Condition</a></li>
101
105
  <li><a class="reference internal" href="#effectiveness">Effectiveness</a></li>
106
+ </ul>
107
+ </li>
102
108
  <li><a class="reference internal" href="#occurrences">Occurrences</a></li>
109
+ <li><a class="reference internal" href="#apply-order">Apply order</a></li>
103
110
  <li><a class="reference internal" href="#types">Types</a><ul>
104
111
  <li><a class="reference internal" href="#type-extend">Type: extend</a></li>
105
112
  <li><a class="reference internal" href="#type-remove">Type: remove</a></li>
@@ -150,14 +157,23 @@
150
157
  <div class="col-md-12">
151
158
 
152
159
  <div class="section" id="adapt-configs">
153
- <h1>Adapt configs<a class="headerlink" href="#adapt-configs" title="Permalink to this headline">¶</a></h1>
160
+ <span id="adapt-reference"></span><h1>Adapt configs<a class="headerlink" href="#adapt-configs" title="Permalink to this headline">¶</a></h1>
154
161
  <div class="section" id="introduction">
155
162
  <h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
163
+ <p>There are two major use cases:</p>
164
+ <ul class="simple">
165
+ <li>Changing the configs from outside, e.g. injecting a toolchain.</li>
166
+ <li>Changing the configs depending on variables like the operating system.</li>
167
+ </ul>
168
+ <p>Both is possible with the <em>Adapt</em> feature.</p>
169
+ </div>
170
+ <div class="section" id="from-command-line">
171
+ <h2>From command line<a class="headerlink" href="#from-command-line" title="Permalink to this headline">¶</a></h2>
156
172
  <p>If you want to manipulate existing configs without changing them, you can &#8220;adapt&#8221; them via command line.</p>
157
173
  <div class="highlight-console"><div class="highlight"><pre><span class="gp">User@Host:~$</span> bake <span class="nb">test</span> --adapt abc
158
174
  </pre></div>
159
175
  </div>
160
- <p>bake searches for abc/Adapt.meta within the workspace roots. If found, the configs from the adapt file are parsed:</p>
176
+ <p>bake searches for abc/Adapt.meta within the workspace roots. If found, the configs from the Adapt.meta are parsed:</p>
161
177
  <div class="highlight-text"><div class="highlight"><pre>Adapt {
162
178
  ExecutableConfig ... # 0..n
163
179
  LibraryConfig ... # 0..n
@@ -165,7 +181,7 @@
165
181
  }
166
182
  </pre></div>
167
183
  </div>
168
- <p>Here is an example to change the DefaultToolchain</p>
184
+ <p>Here is an example to change the DefaultToolchain (details explained below):</p>
169
185
  <div class="highlight-text"><div class="highlight"><pre>Adapt {
170
186
  ExecutableConfig test, project: __MAIN__, type: replace {
171
187
  DefaultToolchain GCC
@@ -174,11 +190,60 @@
174
190
  </pre></div>
175
191
  </div>
176
192
  </div>
193
+ <div class="section" id="from-project-meta">
194
+ <h2>From Project.meta<a class="headerlink" href="#from-project-meta" title="Permalink to this headline">¶</a></h2>
195
+ <p>You can do the same within the Project.meta:</p>
196
+ <div class="highlight-text"><div class="highlight"><pre>Project {
197
+ ...
198
+ }
199
+ Adapt {
200
+ ...
201
+ }
202
+ Adapt {
203
+ ...
204
+ }
205
+ </pre></div>
206
+ </div>
207
+ </div>
208
+ <div class="section" id="conditions-and-effectiveness">
209
+ <h2>Conditions and effectiveness<a class="headerlink" href="#conditions-and-effectiveness" title="Permalink to this headline">¶</a></h2>
210
+ <p>Be aware, these are two different things but look very similar.</p>
211
+ <div class="section" id="condition">
212
+ <h3>Condition<a class="headerlink" href="#condition" title="Permalink to this headline">¶</a></h3>
213
+ <p>An <em>Adapt</em> can have up to four attributes:</p>
214
+ <ul class="simple">
215
+ <li><strong>toolchain</strong>: e.g. GCC</li>
216
+ <li><strong>os</strong>: can be Windows, Mac, Linux, Unix (which is != Linux)</li>
217
+ <li><strong>mainConfig</strong>: name of the main config</li>
218
+ <li><strong>mainProject</strong>: name of the main project</li>
219
+ </ul>
220
+ <p>The &#8220;Adapt* configs will be only applied if all these attributes are either empty or true. Example:</p>
221
+ <div class="highlight-text"><div class="highlight"><pre>Adapt toolchain: GCC, os: Windows {
222
+ ...
223
+ }
224
+ </pre></div>
225
+ </div>
226
+ <p>Here the <em>Adapt</em> configs will be applied if toolchain is GCC on Windows.</p>
227
+ </div>
177
228
  <div class="section" id="effectiveness">
178
- <h2>Effectiveness<a class="headerlink" href="#effectiveness" title="Permalink to this headline">¶</a></h2>
179
- <p>The adapt configs can be applied to all configs from regular build. This can be controlled by the config names and the project attributes. The example above
180
- is adapted only to the config &#8220;test&#8221; of the main project. __MAIN__ and __ALL__ are keywords. __MAIN__ means the main project or config, __ALL__ means all
181
- projects or configs. If you want to apply the changes only to the top level config, write:</p>
229
+ <h3>Effectiveness<a class="headerlink" href="#effectiveness" title="Permalink to this headline">¶</a></h3>
230
+ <p>The <em>Adapt</em> configs can be applied to all configs from regular build. This can be controlled by the config names and the project attributes.
231
+ Remember the example from the beginning?</p>
232
+ <div class="highlight-text"><div class="highlight"><pre>Adapt {
233
+ ExecutableConfig test, project: __MAIN__, type: replace {
234
+ DefaultToolchain GCC
235
+ }
236
+ }
237
+ </pre></div>
238
+ </div>
239
+ <p>This config is applied only to the config &#8220;test&#8221; of the main project.</p>
240
+ <p>__MAIN__, __ALL__ and __THIS__ are keywords:</p>
241
+ <ul class="simple">
242
+ <li><strong>__MAIN__</strong> means the main project or main config</li>
243
+ <li><strong>__ALL__</strong> means all projects or configs</li>
244
+ <li><strong>__THIS__</strong> is only valid for project name, which can be used for <em>Adapts</em> within a Project.meta to restrict the adaption to the current project.</li>
245
+ </ul>
246
+ <p>If you want to apply the changes only to the top level config, write:</p>
182
247
  <div class="highlight-text"><div class="highlight"><pre>ExecutableConfig __MAIN__, project: __MAIN__, ...
183
248
  </pre></div>
184
249
  </div>
@@ -188,9 +253,10 @@ projects or configs. If you want to apply the changes only to the top level conf
188
253
  </div>
189
254
  <p>It is possible to mix the keywords with reals project or config names.</p>
190
255
  </div>
256
+ </div>
191
257
  <div class="section" id="occurrences">
192
258
  <h2>Occurrences<a class="headerlink" href="#occurrences" title="Permalink to this headline">¶</a></h2>
193
- <p>You can specify more configs in one adapt file and you can specify more than one adapt file:</p>
259
+ <p>You can specify more configs in one <em>Adapt</em> and you can specify more than one Adapt.meta file:</p>
194
260
  <div class="highlight-text"><div class="highlight"><pre>Adapt {
195
261
  ExecutableConfig ..., project: ..., type: ... {
196
262
  ...
@@ -208,7 +274,20 @@ projects or configs. If you want to apply the changes only to the top level conf
208
274
  <div class="highlight-console"><div class="highlight"><pre><span class="gp">User@Host:~$</span> bake <span class="nb">test</span> --adapt abc --adapt xy
209
275
  </pre></div>
210
276
  </div>
211
- <p>They will be applied in the specified order.</p>
277
+ </div>
278
+ <div class="section" id="apply-order">
279
+ <h2>Apply order<a class="headerlink" href="#apply-order" title="Permalink to this headline">¶</a></h2>
280
+ <p>The <em>Adapt</em> configs will be applied in the order in which they were parsed. First the Adapt.metas referenced from the command line are read. Then the Project.metas are read
281
+ one by one as usual. If an <em>Adapt</em> is found, it will be appended to the list of <em>Adapts</em>. Note, <em>Adapts</em> will be applied immediately when a Project.meta is read.</p>
282
+ <p>If you inject a Toolchain from outside, e.g. &#8220;&#8211;adapt gcc&#8221;, you can use the toolchain info for local <em>Adapts</em>:</p>
283
+ <div class="highlight-text"><div class="highlight"><pre>Project {
284
+ ...
285
+ }
286
+ Adapt toolchain: GCC {
287
+ ...
288
+ }
289
+ </pre></div>
290
+ </div>
212
291
  </div>
213
292
  <div class="section" id="types">
214
293
  <h2>Types<a class="headerlink" href="#types" title="Permalink to this headline">¶</a></h2>
@@ -216,7 +295,12 @@ projects or configs. If you want to apply the changes only to the top level conf
216
295
  <div class="highlight-text"><div class="highlight"><pre>ExecutableConfig ..., type: replace
217
296
  </pre></div>
218
297
  </div>
219
- <p>The type can be &#8220;replace&#8221;, &#8220;remove&#8221; or &#8220;extend&#8221;.</p>
298
+ <p>The type can be</p>
299
+ <ul class="simple">
300
+ <li><strong>replace</strong></li>
301
+ <li><strong>remove</strong></li>
302
+ <li><strong>extend</strong></li>
303
+ </ul>
220
304
  <div class="section" id="type-extend">
221
305
  <h3>Type: extend<a class="headerlink" href="#type-extend" title="Permalink to this headline">¶</a></h3>
222
306
  <p>This works exactly like for <a class="reference internal" href="derive_configs.html"><em>Derive configs</em></a>.</p>
@@ -230,7 +314,7 @@ projects or configs. If you want to apply the changes only to the top level conf
230
314
  }
231
315
  </pre></div>
232
316
  </div>
233
- <p>Example adapt configs:</p>
317
+ <p>Example <em>Adapt</em> configs:</p>
234
318
  <div class="highlight-text"><div class="highlight"><pre>ExecutableConfig __ALL__, project: __ALL__, type: remove {
235
319
  DefaultToolchain # remove ok
236
320
  }
@@ -261,7 +345,7 @@ ExecutableConfig __ALL__, project: __ALL__, type: remove {
261
345
  }
262
346
  </pre></div>
263
347
  </div>
264
- <p>This removes all &#8220;Files&#8221; and the &#8220;DefaultToolchain&#8221; from the original config regardless their attributes and replaces them by the elements of the adapt config.</p>
348
+ <p>This removes all &#8220;Files&#8221; and the &#8220;DefaultToolchain&#8221; from the original config regardless their attributes and replaces them by the elements of the <em>Adapt</em> config.</p>
265
349
  </div>
266
350
  </div>
267
351
  </div>
@@ -339,14 +339,12 @@ z-index: 100;
339
339
  </span>
340
340
  &nbsp; &nbsp; <br></span><br></span>
341
341
  &nbsp; }<br>
342
+ }<br><br>
343
+ Adapt toolchain: &#60;name&#62;, os: &#60;name&#62;, mainProject: &#60;name&#62;, mainConfig: &#60;name&#62;{<br>
344
+ ... see adapt documention for details.<br>
342
345
  }<br>
343
346
 
344
347
 
345
-
346
-
347
-
348
-
349
-
350
348
  <div id="dhtmltooltip"></div>
351
349
 
352
350
  <script type="text/javascript">
@@ -163,8 +163,11 @@
163
163
  </li>
164
164
  <li class="toctree-l1"><a class="reference internal" href="adapt_configs.html">Adapt configs</a><ul>
165
165
  <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#introduction">Introduction</a></li>
166
- <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#effectiveness">Effectiveness</a></li>
166
+ <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#from-command-line">From command line</a></li>
167
+ <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#from-project-meta">From Project.meta</a></li>
168
+ <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#conditions-and-effectiveness">Conditions and effectiveness</a></li>
167
169
  <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#occurrences">Occurrences</a></li>
170
+ <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#apply-order">Apply order</a></li>
168
171
  <li class="toctree-l2"><a class="reference internal" href="adapt_configs.html#types">Types</a></li>
169
172
  </ul>
170
173
  </li>
@@ -18,15 +18,19 @@ module Bake
18
18
 
19
19
  f = @loader.load(filename)
20
20
 
21
- if f.root_elements.length != 1 or not Metamodel::Adapt === f.root_elements[0]
22
- Bake.formatter.printError("Config file must have exactly one 'Adapt' element as root element", filename)
21
+ if f.root_elements.any? { |re| ! Metamodel::Adapt === re }
22
+ Bake.formatter.printError("Config file must have only 'Adapt' elements as roots", filename)
23
23
  ExitHelper.exit(1)
24
24
  end
25
25
 
26
- adapt = f.root_elements[0]
27
- configs = adapt.getConfig
26
+ configs = []
27
+ f.root_elements.each { |re| configs.concat(re.getConfig) }
28
+ AdaptConfig::checkSyntax(configs, filename)
29
+ configs
30
+ end
28
31
 
29
- Bake::Configs::Checks::commonMetamodelCheck(configs, filename)
32
+ def self.checkSyntax(configs, filename)
33
+ Bake::Configs::Checks::commonMetamodelCheck(configs, filename, true)
30
34
 
31
35
  configs.each do |c|
32
36
  if not c.extends.empty?
@@ -46,8 +50,6 @@ module Bake
46
50
  ExitHelper.exit(1)
47
51
  end
48
52
  end
49
-
50
- configs
51
53
  end
52
54
 
53
55
  def getPotentialAdaptionProjects()
@@ -20,9 +20,9 @@ module Bake
20
20
  end
21
21
  end
22
22
 
23
- def self.commonMetamodelCheck(configs, filename)
23
+ def self.commonMetamodelCheck(configs, filename, isAdapt = false)
24
24
 
25
- if configs.length == 0
25
+ if configs.length == 0 && !isAdapt
26
26
  Bake.formatter.printError("No config found", filename)
27
27
  ExitHelper.exit(1)
28
28
  end
@@ -1,5 +1,6 @@
1
1
  require 'bake/model/loader'
2
2
  require 'bake/config/checks'
3
+ require 'adapt/config/loader'
3
4
 
4
5
  module Bake
5
6
 
@@ -8,6 +9,9 @@ module Bake
8
9
 
9
10
  def initialize()
10
11
  @fullProjects = {}
12
+ @defaultToolchainName = ""
13
+ @mainProjectName = ""
14
+ @mainConfigName = ""
11
15
  end
12
16
 
13
17
  def resolveConfigName(configs, configname)
@@ -79,6 +83,18 @@ module Bake
79
83
  @adaptConfigs.each do |c|
80
84
  if c.project == config.parent.name or (isMain and c.project == "__MAIN__") or c.project == "__ALL__"
81
85
  if c.name == config.name or (isMain and c.name == "__MAIN__") or c.name == "__ALL__"
86
+
87
+ if isMain
88
+ @defaultToolchainName = config.defaultToolchain.basedOn unless config.defaultToolchain.nil?
89
+ @mainProjectName = config.parent.name
90
+ @mainConfigName = config.name
91
+ end
92
+
93
+ next if c.parent.toolchain != "" && c.parent.toolchain != @defaultToolchainName
94
+ next if c.parent.os != "" && c.parent.os != Utils::OS.name
95
+ next if c.parent.mainProject != "" && c.parent.mainProject != @mainProjectName
96
+ next if c.parent.mainConfig != "" && c.parent.mainConfig != @mainConfigName
97
+
82
98
  MergeConfig.new(c, config).merge(c.type.to_sym)
83
99
  end
84
100
  end
@@ -152,11 +168,12 @@ module Bake
152
168
 
153
169
  config = nil
154
170
 
155
- if f.root_elements.length != 1 or not Metamodel::Project === f.root_elements[0]
171
+ projRoots = f.root_elements.select { |re| Metamodel::Project === re }
172
+ if projRoots.length != 1
156
173
  Bake.formatter.printError("Config file must have exactly one 'Project' element as root element", filename)
157
174
  ExitHelper.exit(1)
158
175
  end
159
- proj = f.root_elements[0]
176
+ proj = projRoots[0]
160
177
 
161
178
  reqVersion = proj.getRequiredBakeVersion
162
179
  checkVer(reqVersion)
@@ -175,6 +192,18 @@ module Bake
175
192
  end
176
193
  end
177
194
 
195
+ adaptRoots = f.root_elements.select { |re| Metamodel::Adapt === re }
196
+ if adaptRoots.length > 0
197
+ adaptRoots.each do |adapt|
198
+ adaptConfigs = adapt.getConfig
199
+ AdaptConfig.checkSyntax(adaptConfigs, filename)
200
+ adaptConfigs.each do |ac|
201
+ ac.project = proj.name if ac.project == "__THIS__"
202
+ end
203
+ @adaptConfigs.concat(adaptConfigs)
204
+ end
205
+ end
206
+
178
207
  configs
179
208
  end
180
209
 
@@ -285,6 +285,14 @@ module Bake
285
285
  end
286
286
  end
287
287
 
288
+ class Adapt < ModelElement
289
+ has_attr 'toolchain', String, :defaultValueLiteral => ""
290
+ has_attr 'os', String, :defaultValueLiteral => ""
291
+ has_attr 'mainProject', String, :defaultValueLiteral => ""
292
+ has_attr 'mainConfig', String, :defaultValueLiteral => ""
293
+ contains_many 'config', BaseConfig_INTERNAL, 'parent'
294
+ end
295
+
288
296
  class Project < ModelElement
289
297
  has_attr 'default', String, :defaultValueLiteral => ""
290
298
  contains_one 'description', Description, 'parent'
@@ -302,10 +310,6 @@ module Bake
302
310
 
303
311
  end
304
312
 
305
- class Adapt < ModelElement
306
- contains_many 'config', BaseConfig_INTERNAL, 'parent'
307
- end
308
-
309
313
  end
310
314
 
311
315
  end
data/lib/bake/subst.rb CHANGED
@@ -1,314 +1,314 @@
1
- require 'pathname'
2
-
3
- module Bake
4
-
5
- class Subst
6
-
7
- # this is done lazy because usually there is no need to calculate that
8
- def self.lazyPathes
9
- return unless @@lazy
10
-
11
- cppCmd = @@toolchain[:COMPILER][:CPP][:COMMAND]
12
- cCmd = @@toolchain[:COMPILER][:C][:COMMAND]
13
- asmCmd = @@toolchain[:COMPILER][:ASM][:COMMAND]
14
- archiverCmd = @@toolchain[:ARCHIVER][:COMMAND]
15
- linkerCmd = @@toolchain[:LINKER][:COMMAND]
16
-
17
- if @@config.toolchain
18
- linkerCmd = @@config.toolchain.linker.command if @@config.toolchain.linker and @@config.toolchain.linker.command != ""
19
- archiverCmd = @@config.toolchain.archiver.command if @@config.toolchain.linker and @@config.toolchain.archiver.command != ""
20
- @@config.toolchain.compiler.each do |c|
21
- if c.command != ""
22
- if c.ctype == :CPP
23
- cppCmd = c.command
24
- elsif c.ctype == :C
25
- cCmd = c.command
26
- elsif c.ctype == :ASM
27
- asmCmd = c.command
28
- end
29
- end
30
- end
31
- end
32
-
33
- @@cppExe = File.which(cppCmd)
34
- @@cExe = File.which(cCmd)
35
- @@asmExe = File.which(asmCmd)
36
- @@archiverExe = File.which(archiverCmd)
37
- @@linkerExe = File.which(linkerCmd)
38
-
39
- @@lazy = false
40
- end
41
-
42
- def self.itute(config, projName, isMainProj, toolchain, referencedConfigs, configTcMap)
43
- @@lazy = true
44
- @@config = config
45
- @@toolchain = toolchain
46
- @@referencedConfigs = referencedConfigs
47
- @@configTcMap = configTcMap
48
- @@toolchainName = config.defaultToolchain.basedOn if isMainProj
49
-
50
- @@configName = config.name
51
- @@projDir = config.parent.get_project_dir
52
- @@projName = projName
53
- @@resolvedVars = 0
54
- @@configFilename = config.file_name
55
-
56
- @@artifactName = ""
57
- if Metamodel::ExecutableConfig === config || Metamodel::LibraryConfig === config
58
- if not config.artifactName.nil?
59
- @@artifactName = config.artifactName.name
60
- else
61
- if Metamodel::ExecutableConfig === config
62
- @@artifactName = projName+Bake::Toolchain.outputEnding(toolchain)
63
- elsif Metamodel::LibraryConfig === config
64
- @@artifactName = "lib#{projName}.a"
65
- end
66
- end
67
- end
68
-
69
- if isMainProj
70
- @@userVarMap = {}
71
- else
72
- @@userVarMap = @@userVarMapMain.clone
73
- end
74
-
75
- config.set.each do |s|
76
-
77
- if (s.value != "" and s.cmd != "")
78
- Bake.formatter.printError("value and cmd attributes must be used exclusively", s)
79
- ExitHelper.exit(1)
80
- end
81
-
82
- if (s.value != "")
83
- setName = substString(s.name, s)
84
- if (setName.empty?)
85
- Bake.formatter.printWarning("Name of variable must not be empty - variable will be ignored", s)
86
- else
87
- @@userVarMap[s.name] = substString(s.value, s)
88
- ENV[s.name] = @@userVarMap[s.name] if s.env
89
- end
90
- else
91
- cmd_result = false
92
- consoleOutput = ""
93
- begin
94
- Dir.chdir(@@projDir) do
95
- cmd = [substString(s.cmd, s)]
96
- cmd_result, consoleOutput = ProcessHelper.run(cmd)
97
- @@userVarMap[s.name] = consoleOutput.chomp
98
- ENV[s.name] = @@userVarMap[s.name] if s.env
99
- end
100
- rescue Exception=>e
101
- consoleOutput = e.message
102
- end
103
- if (cmd_result == false)
104
- Bake.formatter.printWarning("Command not successful, variable #{s.name} will be set to \"\" (#{consoleOutput.chomp}).", s)
105
- @@userVarMap[s.name] = ""
106
- ENV[s.name] = "" if s.env
107
- end
108
- end
109
-
110
- end
111
-
112
- @@userVarMapMain = @@userVarMap.clone if isMainProj
113
-
114
- 3.times {
115
- subst(config);
116
- substToolchain(toolchain)
117
- }
118
-
119
- @@resolvedVars = 0
120
- lastFoundInVar = -1
121
- 100.times do
122
- subst(config)
123
- break if @@resolvedVars == 0 or (@@resolvedVars >= lastFoundInVar and lastFoundInVar >= 0)
124
- lastFoundInVar = @@resolvedVars
125
- end
126
- if (@@resolvedVars > 0)
127
- Bake.formatter.printError("Cyclic variable substitution detected", config.file_name)
128
- ExitHelper.exit(1)
129
- end
130
-
131
- end
132
-
133
- def self.substString(str, elem=nil)
134
- substStr = ""
135
- posSubst = 0
136
- while (true)
137
- posStart = str.index("$(", posSubst)
138
- break if posStart.nil?
139
- posEnd = str.index(")", posStart)
140
- break if posEnd.nil?
141
- posStartSub = str.index("$(", posStart+1)
142
- if (not posStartSub.nil? and posStartSub < posEnd) # = nested vars
143
- newStr = str[0,posStartSub] + substString(str[posStartSub..posEnd],elem)
144
- if (str.length + 1 > posEnd)
145
- str = newStr + str[posEnd+1..-1]
146
- else
147
- str = newStr
148
- end
149
- next
150
- end
151
-
152
- substStr << str[posSubst..posStart-1] if posStart>0
153
-
154
- @@resolvedVars += 1
155
- var = str[posStart+2..posEnd-1]
156
-
157
- splittedVar = var.split(",")
158
-
159
- if Bake.options.vars.has_key?(var)
160
- substStr << Bake.options.vars[var]
161
- elsif @@userVarMap.has_key?(var)
162
- substStr << @@userVarMap[var]
163
- elsif var == "MainConfigName"
164
- substStr << Bake.options.build_config
165
- elsif var == "MainProjectName"
166
- substStr << Bake.options.main_project_name
167
- elsif var == "MainProjectDir"
168
- substStr << Bake.options.main_dir
169
- elsif var == "ConfigName"
170
- substStr << @@configName
171
- elsif var == "ToolchainName" and defined?@@toolchainName
172
- substStr << @@toolchainName
173
- elsif var == "ProjectName"
174
- substStr << @@projName
175
- elsif var == "ProjectDir"
176
- substStr << @@projDir
177
- elsif var == "OutputDir" or (splittedVar.length == 3 and splittedVar[0] == "OutputDir")
178
- if (var == "OutputDir")
179
- out_proj_name = @@projName
180
- out_conf_name = @@configName
181
- else
182
- out_proj_name = splittedVar[1].strip
183
- out_conf_name = splittedVar[2].strip
184
- end
185
- if @@referencedConfigs.has_key?out_proj_name
186
- configs = @@referencedConfigs[out_proj_name]
187
- config = configs.select {|c| c.name == out_conf_name }.first
188
- if config
189
- out_dir = nil
190
- if (config.toolchain and config.toolchain.outputDir and config.toolchain.outputDir != "")
191
- out_dir = config.toolchain.outputDir
192
- else
193
- out_dir = @@configTcMap[config][:OUTPUT_DIR]
194
- end
195
- if not out_dir
196
- qacPart = Bake.options.qac ? (".qac" + Bake.options.buildDirDelimiter) : ""
197
- if out_proj_name == Bake.options.main_project_name and out_conf_name == Bake.options.build_config
198
- out_dir = "build" + Bake.options.buildDirDelimiter + qacPart + Bake.options.build_config
199
- else
200
- out_dir = "build" + Bake.options.buildDirDelimiter + qacPart + out_conf_name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
201
- end
202
- end
203
- out_dir = substString(out_dir, elem)
204
- if File.is_absolute?(out_dir)
205
- substStr << out_dir
206
- else
207
- substStr << Pathname.new(File.rel_from_to_project(@@projDir,config.get_project_dir,true) + out_dir).cleanpath.to_s
208
- end
209
- else
210
- if Bake.options.verbose > 0
211
- msg = "Substitute variable '$(#{var})' with empty string, because config #{out_conf_name} not found for project #{out_proj_name}"
212
- Bake.formatter.printInfo(msg, elem ? elem : @@config)
213
- end
214
- end
215
- else
216
- if Bake.options.verbose > 0
217
- msg = "Substitute variable '$(#{var})' with empty string, because project #{out_proj_name} not found"
218
- Bake.formatter.printInfo(msg, elem ? elem : @@config)
219
- end
220
- end
221
- elsif splittedVar.length > 1 and splittedVar[0] == "OutputDir"
222
- if Bake.options.verbose > 0
223
- msg = "Substitute variable '$(#{var})' with empty string, because syntax of complex variable OutputDir is not $(OutputDir,<project name>,<config name>)"
224
- Bake.formatter.printInfo(msg, elem ? elem : @@config)
225
- end
226
- elsif var == "Time"
227
- substStr << Time.now.to_s
228
- elsif var == "Hostname"
229
- substStr << Socket.gethostname
230
- elsif var == "ArtifactName"
231
- substStr << @@artifactName
232
- elsif var == "ArtifactNameBase"
233
- substStr << @@artifactName.chomp(File.extname(@@artifactName))
234
- elsif var == "CPPPath"
235
- self.lazyPathes
236
- substStr << @@cppExe
237
- elsif var == "CPath"
238
- self.lazyPathes
239
- substStr << @@cExe
240
- elsif var == "ASMPath"
241
- self.lazyPathes
242
- substStr << @@asmExe
243
- elsif var == "ArchiverPath"
244
- self.lazyPathes
245
- substStr << @@archiverExe
246
- elsif var == "LinkerPath"
247
- self.lazyPathes
248
- substStr << @@linkerExe
249
- elsif var == "Roots"
250
- substStr << "___ROOTS___"
251
- elsif var == "/"
252
- substStr << File::SEPARATOR
253
- elsif var == ":"
254
- substStr << File::PATH_SEPARATOR
255
- elsif ENV[var]
256
- substStr << ENV[var]
257
- else
258
- if Bake.options.verbose >= 2
259
- msg = "Substitute variable '$(#{var})' with empty string"
260
- if elem
261
- Bake.formatter.printInfo(msg, elem)
262
- else
263
- Bake.formatter.printInfo(msg + " in the toolchain", @@config)
264
- end
265
- end
266
- end
267
-
268
- posSubst = posEnd + 1
269
- end
270
- substStr << str[posSubst..-1]
271
- substStr
272
- end
273
-
274
- def self.substToolchain(elem)
275
- if Hash === elem
276
- elem.each do |k, e|
277
- if Hash === e or Array === e
278
- substToolchain(e)
279
- elsif String === e
280
- elem[k] = substString(e)
281
- end
282
- end
283
- elsif Array === elem
284
- elem.each_with_index do |e, i|
285
- if Hash === e or Array === e
286
- substToolchain(e)
287
- elsif String === e
288
- elem[i] = substString(e)
289
- end
290
- end
291
- end
292
- end
293
-
294
- def self.subst(elem)
295
- elem.class.ecore.eAllAttributes_derived.each do |a|
296
- next if a.name == "file_name" or a.name == "line_number"
297
- return if Metamodel::Set === elem.class
298
- return if Metamodel::DefaultToolchain === elem
299
- return if Metamodel::Toolchain === elem.class
300
- next if a.eType.name != "EString"
301
- substStr = substString(elem.getGeneric(a.name), elem)
302
- elem.setGeneric(a.name, substStr)
303
- end
304
-
305
- childsRefs = elem.class.ecore.eAllReferences.select{|r| r.containment}
306
- childsRefs.each do |c|
307
- elem.getGenericAsArray(c.name).each { |child| subst(child) }
308
- end
309
- end
310
-
311
- end
312
-
313
- end
314
-
1
+ require 'pathname'
2
+
3
+ module Bake
4
+
5
+ class Subst
6
+
7
+ # this is done lazy because usually there is no need to calculate that
8
+ def self.lazyPathes
9
+ return unless @@lazy
10
+
11
+ cppCmd = @@toolchain[:COMPILER][:CPP][:COMMAND]
12
+ cCmd = @@toolchain[:COMPILER][:C][:COMMAND]
13
+ asmCmd = @@toolchain[:COMPILER][:ASM][:COMMAND]
14
+ archiverCmd = @@toolchain[:ARCHIVER][:COMMAND]
15
+ linkerCmd = @@toolchain[:LINKER][:COMMAND]
16
+
17
+ if @@config.toolchain
18
+ linkerCmd = @@config.toolchain.linker.command if @@config.toolchain.linker and @@config.toolchain.linker.command != ""
19
+ archiverCmd = @@config.toolchain.archiver.command if @@config.toolchain.linker and @@config.toolchain.archiver.command != ""
20
+ @@config.toolchain.compiler.each do |c|
21
+ if c.command != ""
22
+ if c.ctype == :CPP
23
+ cppCmd = c.command
24
+ elsif c.ctype == :C
25
+ cCmd = c.command
26
+ elsif c.ctype == :ASM
27
+ asmCmd = c.command
28
+ end
29
+ end
30
+ end
31
+ end
32
+
33
+ @@cppExe = File.which(cppCmd)
34
+ @@cExe = File.which(cCmd)
35
+ @@asmExe = File.which(asmCmd)
36
+ @@archiverExe = File.which(archiverCmd)
37
+ @@linkerExe = File.which(linkerCmd)
38
+
39
+ @@lazy = false
40
+ end
41
+
42
+ def self.itute(config, projName, isMainProj, toolchain, referencedConfigs, configTcMap)
43
+ @@lazy = true
44
+ @@config = config
45
+ @@toolchain = toolchain
46
+ @@referencedConfigs = referencedConfigs
47
+ @@configTcMap = configTcMap
48
+ @@toolchainName = config.defaultToolchain.basedOn if isMainProj
49
+
50
+ @@configName = config.name
51
+ @@projDir = config.parent.get_project_dir
52
+ @@projName = projName
53
+ @@resolvedVars = 0
54
+ @@configFilename = config.file_name
55
+
56
+ @@artifactName = ""
57
+ if Metamodel::ExecutableConfig === config || Metamodel::LibraryConfig === config
58
+ if not config.artifactName.nil?
59
+ @@artifactName = config.artifactName.name
60
+ else
61
+ if Metamodel::ExecutableConfig === config
62
+ @@artifactName = projName+Bake::Toolchain.outputEnding(toolchain)
63
+ elsif Metamodel::LibraryConfig === config
64
+ @@artifactName = "lib#{projName}.a"
65
+ end
66
+ end
67
+ end
68
+
69
+ if isMainProj
70
+ @@userVarMap = {}
71
+ else
72
+ @@userVarMap = @@userVarMapMain.clone
73
+ end
74
+
75
+ config.set.each do |s|
76
+
77
+ if (s.value != "" and s.cmd != "")
78
+ Bake.formatter.printError("value and cmd attributes must be used exclusively", s)
79
+ ExitHelper.exit(1)
80
+ end
81
+
82
+ if (s.value != "")
83
+ setName = substString(s.name, s)
84
+ if (setName.empty?)
85
+ Bake.formatter.printWarning("Name of variable must not be empty - variable will be ignored", s)
86
+ else
87
+ @@userVarMap[s.name] = substString(s.value, s)
88
+ ENV[s.name] = @@userVarMap[s.name] if s.env
89
+ end
90
+ else
91
+ cmd_result = false
92
+ consoleOutput = ""
93
+ begin
94
+ Dir.chdir(@@projDir) do
95
+ cmd = [substString(s.cmd, s)]
96
+ cmd_result, consoleOutput = ProcessHelper.run(cmd)
97
+ @@userVarMap[s.name] = consoleOutput.chomp
98
+ ENV[s.name] = @@userVarMap[s.name] if s.env
99
+ end
100
+ rescue Exception=>e
101
+ consoleOutput = e.message
102
+ end
103
+ if (cmd_result == false)
104
+ Bake.formatter.printWarning("Command not successful, variable #{s.name} will be set to \"\" (#{consoleOutput.chomp}).", s)
105
+ @@userVarMap[s.name] = ""
106
+ ENV[s.name] = "" if s.env
107
+ end
108
+ end
109
+
110
+ end
111
+
112
+ @@userVarMapMain = @@userVarMap.clone if isMainProj
113
+
114
+ 3.times {
115
+ subst(config);
116
+ substToolchain(toolchain)
117
+ }
118
+
119
+ @@resolvedVars = 0
120
+ lastFoundInVar = -1
121
+ 100.times do
122
+ subst(config)
123
+ break if @@resolvedVars == 0 or (@@resolvedVars >= lastFoundInVar and lastFoundInVar >= 0)
124
+ lastFoundInVar = @@resolvedVars
125
+ end
126
+ if (@@resolvedVars > 0)
127
+ Bake.formatter.printError("Cyclic variable substitution detected", config.file_name)
128
+ ExitHelper.exit(1)
129
+ end
130
+
131
+ end
132
+
133
+ def self.substString(str, elem=nil)
134
+ substStr = ""
135
+ posSubst = 0
136
+ while (true)
137
+ posStart = str.index("$(", posSubst)
138
+ break if posStart.nil?
139
+ posEnd = str.index(")", posStart)
140
+ break if posEnd.nil?
141
+ posStartSub = str.index("$(", posStart+1)
142
+ if (not posStartSub.nil? and posStartSub < posEnd) # = nested vars
143
+ newStr = str[0,posStartSub] + substString(str[posStartSub..posEnd],elem)
144
+ if (str.length + 1 > posEnd)
145
+ str = newStr + str[posEnd+1..-1]
146
+ else
147
+ str = newStr
148
+ end
149
+ next
150
+ end
151
+
152
+ substStr << str[posSubst..posStart-1] if posStart>0
153
+
154
+ @@resolvedVars += 1
155
+ var = str[posStart+2..posEnd-1]
156
+
157
+ splittedVar = var.split(",")
158
+
159
+ if Bake.options.vars.has_key?(var)
160
+ substStr << Bake.options.vars[var]
161
+ elsif @@userVarMap.has_key?(var)
162
+ substStr << @@userVarMap[var]
163
+ elsif var == "MainConfigName"
164
+ substStr << Bake.options.build_config
165
+ elsif var == "MainProjectName"
166
+ substStr << Bake.options.main_project_name
167
+ elsif var == "MainProjectDir"
168
+ substStr << Bake.options.main_dir
169
+ elsif var == "ConfigName"
170
+ substStr << @@configName
171
+ elsif var == "ToolchainName" and defined?@@toolchainName
172
+ substStr << @@toolchainName
173
+ elsif var == "ProjectName"
174
+ substStr << @@projName
175
+ elsif var == "ProjectDir"
176
+ substStr << @@projDir
177
+ elsif var == "OutputDir" or (splittedVar.length == 3 and splittedVar[0] == "OutputDir")
178
+ if (var == "OutputDir")
179
+ out_proj_name = @@projName
180
+ out_conf_name = @@configName
181
+ else
182
+ out_proj_name = splittedVar[1].strip
183
+ out_conf_name = splittedVar[2].strip
184
+ end
185
+ if @@referencedConfigs.has_key?out_proj_name
186
+ configs = @@referencedConfigs[out_proj_name]
187
+ config = configs.select {|c| c.name == out_conf_name }.first
188
+ if config
189
+ out_dir = nil
190
+ if (config.toolchain and config.toolchain.outputDir and config.toolchain.outputDir != "")
191
+ out_dir = config.toolchain.outputDir
192
+ else
193
+ out_dir = @@configTcMap[config][:OUTPUT_DIR]
194
+ end
195
+ if not out_dir
196
+ qacPart = Bake.options.qac ? (".qac" + Bake.options.buildDirDelimiter) : ""
197
+ if out_proj_name == Bake.options.main_project_name and out_conf_name == Bake.options.build_config
198
+ out_dir = "build" + Bake.options.buildDirDelimiter + qacPart + Bake.options.build_config
199
+ else
200
+ out_dir = "build" + Bake.options.buildDirDelimiter + qacPart + out_conf_name + "_" + Bake.options.main_project_name + "_" + Bake.options.build_config
201
+ end
202
+ end
203
+ out_dir = substString(out_dir, elem)
204
+ if File.is_absolute?(out_dir)
205
+ substStr << out_dir
206
+ else
207
+ substStr << Pathname.new(File.rel_from_to_project(@@projDir,config.get_project_dir,true) + out_dir).cleanpath.to_s
208
+ end
209
+ else
210
+ if Bake.options.verbose > 0
211
+ msg = "Substitute variable '$(#{var})' with empty string, because config #{out_conf_name} not found for project #{out_proj_name}"
212
+ Bake.formatter.printInfo(msg, elem ? elem : @@config)
213
+ end
214
+ end
215
+ else
216
+ if Bake.options.verbose > 0
217
+ msg = "Substitute variable '$(#{var})' with empty string, because project #{out_proj_name} not found"
218
+ Bake.formatter.printInfo(msg, elem ? elem : @@config)
219
+ end
220
+ end
221
+ elsif splittedVar.length > 1 and splittedVar[0] == "OutputDir"
222
+ if Bake.options.verbose > 0
223
+ msg = "Substitute variable '$(#{var})' with empty string, because syntax of complex variable OutputDir is not $(OutputDir,<project name>,<config name>)"
224
+ Bake.formatter.printInfo(msg, elem ? elem : @@config)
225
+ end
226
+ elsif var == "Time"
227
+ substStr << Time.now.to_s
228
+ elsif var == "Hostname"
229
+ substStr << Socket.gethostname
230
+ elsif var == "ArtifactName"
231
+ substStr << @@artifactName
232
+ elsif var == "ArtifactNameBase"
233
+ substStr << @@artifactName.chomp(File.extname(@@artifactName))
234
+ elsif var == "CPPPath"
235
+ self.lazyPathes
236
+ substStr << @@cppExe
237
+ elsif var == "CPath"
238
+ self.lazyPathes
239
+ substStr << @@cExe
240
+ elsif var == "ASMPath"
241
+ self.lazyPathes
242
+ substStr << @@asmExe
243
+ elsif var == "ArchiverPath"
244
+ self.lazyPathes
245
+ substStr << @@archiverExe
246
+ elsif var == "LinkerPath"
247
+ self.lazyPathes
248
+ substStr << @@linkerExe
249
+ elsif var == "Roots"
250
+ substStr << "___ROOTS___"
251
+ elsif var == "/"
252
+ substStr << File::SEPARATOR
253
+ elsif var == ":"
254
+ substStr << File::PATH_SEPARATOR
255
+ elsif ENV[var]
256
+ substStr << ENV[var]
257
+ else
258
+ if Bake.options.verbose >= 2
259
+ msg = "Substitute variable '$(#{var})' with empty string"
260
+ if elem
261
+ Bake.formatter.printInfo(msg, elem)
262
+ else
263
+ Bake.formatter.printInfo(msg + " in the toolchain", @@config)
264
+ end
265
+ end
266
+ end
267
+
268
+ posSubst = posEnd + 1
269
+ end
270
+ substStr << str[posSubst..-1]
271
+ substStr
272
+ end
273
+
274
+ def self.substToolchain(elem)
275
+ if Hash === elem
276
+ elem.each do |k, e|
277
+ if Hash === e or Array === e
278
+ substToolchain(e)
279
+ elsif String === e
280
+ elem[k] = substString(e)
281
+ end
282
+ end
283
+ elsif Array === elem
284
+ elem.each_with_index do |e, i|
285
+ if Hash === e or Array === e
286
+ substToolchain(e)
287
+ elsif String === e
288
+ elem[i] = substString(e)
289
+ end
290
+ end
291
+ end
292
+ end
293
+
294
+ def self.subst(elem)
295
+ elem.class.ecore.eAllAttributes_derived.each do |a|
296
+ next if a.name == "file_name" or a.name == "line_number"
297
+ return if Metamodel::Set === elem.class
298
+ return if Metamodel::DefaultToolchain === elem
299
+ return if Metamodel::Toolchain === elem.class
300
+ next if a.eType.name != "EString"
301
+ substStr = substString(elem.getGeneric(a.name), elem)
302
+ elem.setGeneric(a.name, substStr)
303
+ end
304
+
305
+ childsRefs = elem.class.ecore.eAllReferences.select{|r| r.containment}
306
+ childsRefs.each do |c|
307
+ elem.getGenericAsArray(c.name).each { |child| subst(child) }
308
+ end
309
+ end
310
+
311
+ end
312
+
313
+ end
314
+