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.
- checksums.yaml +4 -4
- data/bin/bakeqac +58 -97
- data/documentation/_build/html/_sources/changelog.txt +6 -2
- data/documentation/_build/html/_sources/index.txt +1 -1
- data/documentation/_build/html/_sources/syntax/adapt_configs.txt +107 -17
- data/documentation/_build/html/_static/syntax.html +3 -5
- data/documentation/_build/html/changelog.html +8 -2
- data/documentation/_build/html/index.html +4 -4
- data/documentation/_build/html/objects.inv +0 -0
- data/documentation/_build/html/searchindex.js +1 -1
- data/documentation/_build/html/syntax/adapt_configs.html +97 -13
- data/documentation/_build/html/syntax/project_meta_syntax.html +3 -5
- data/documentation/_build/html/syntax/syntax.html +4 -1
- data/lib/adapt/config/loader.rb +9 -7
- data/lib/bake/config/checks.rb +2 -2
- data/lib/bake/config/loader.rb +31 -2
- data/lib/bake/model/metamodel.rb +8 -4
- data/lib/bake/subst.rb +314 -314
- data/lib/common/utils.rb +22 -1
- data/lib/common/version.rb +1 -1
- metadata +2 -2
@@ -188,14 +188,12 @@ z-index: 100;
|
|
188
188
|
</span>
|
189
189
|
<br></span><br></span>
|
190
190
|
}<br>
|
191
|
+
}<br><br>
|
192
|
+
Adapt toolchain: <name>, os: <name>, mainProject: <name>, mainConfig: <name>{<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
|
146
|
-
<li>Cosmetic: possible wrong message when reloading metas (“corrupt” instead of “changed”)</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 (“corrupt” instead of “changed”)</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.
|
8
|
+
<title>bake 2.27.0 — 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.
|
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-
|
138
|
-
<h1>bake 2.
|
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">
|
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 “adapt” 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
|
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
|
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 “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
|
-
<
|
179
|
-
<p>The
|
180
|
-
|
181
|
-
|
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 “test” 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
|
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
|
-
|
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. “–adapt gcc”, 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
|
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
|
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 “Files” and the “DefaultToolchain” from the original config regardless their attributes and replaces them by the elements of the
|
348
|
+
<p>This removes all “Files” and the “DefaultToolchain” 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
|
<br></span><br></span>
|
341
341
|
}<br>
|
342
|
+
}<br><br>
|
343
|
+
Adapt toolchain: <name>, os: <name>, mainProject: <name>, mainConfig: <name>{<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#
|
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>
|
data/lib/adapt/config/loader.rb
CHANGED
@@ -18,15 +18,19 @@ module Bake
|
|
18
18
|
|
19
19
|
f = @loader.load(filename)
|
20
20
|
|
21
|
-
if f.root_elements.
|
22
|
-
Bake.formatter.printError("Config file must have
|
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
|
-
|
27
|
-
|
26
|
+
configs = []
|
27
|
+
f.root_elements.each { |re| configs.concat(re.getConfig) }
|
28
|
+
AdaptConfig::checkSyntax(configs, filename)
|
29
|
+
configs
|
30
|
+
end
|
28
31
|
|
29
|
-
|
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()
|
data/lib/bake/config/checks.rb
CHANGED
@@ -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
|
data/lib/bake/config/loader.rb
CHANGED
@@ -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
|
-
|
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 =
|
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
|
|
data/lib/bake/model/metamodel.rb
CHANGED
@@ -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
|
+
|