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.
- 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
|
+
|