bake-toolkit 2.26.1 → 2.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+