Come già detto negli articoli precedenti, il Platform Builder costituisce esclusivamente un’interfaccia grafica verso il sistema di build che è in realtà costituito da una serie di tool (file eseguibili) e di script (file batch) che possono essere eseguiti anche da linea di comando.
In questo articolo, darò una breve descrizione del ruolo di ciascun tool in gioco, per poi approfondirne il comportamento negli articoli successivi.
Preparazione del build system
Per poter eseguire correttamente il build dell’immagine del sistema operativo, è necessario che il build system sia opportunamente configurato ed inizializzato, settando le variabili di ambiente necessarie. Per tale scopo entrano in gioco i due seguenti file batch :
-
PBInitEnv.bat : l’acronimo del suo nome è autoesplicativo, ossia “Platform Builder Initialization Environment”. Esso viene eseguito in automatico dal Platform Builder quando lanciamo un’azione di build oppure nel caso in cui vogliamo eseguire delle operazione a linea di comando ed utilizziamo la voce “Open Release Directory in Build Window” dal menu Build. Il suo scopo è quello di settare le principali Environment Variable (es. _WINCEROOT, _FLATRELEASEDIR, …), nonchè le Sysgen Variable associate ai componenti selezionati nel Catalog Items e quelle relative alla BSP per i driver inclusi nell’immagine. Tale file viene sempre modificato ogni qual volta aggiungiamo/rimuoviamo componenti dall’immagine, perché a tali azioni corrisponde il set o meno di una variabile. Si trova al percorso %_PROJECTROOT%;
-
wince.bat : viene invocato dal PBInitEnv.bat per settare altre variabili di carattere generale e soprattutto per inizializzare il _DEPTREES, la variabile che conterrà l’elenco delle cartelle sulle quali eseguire le operazioni di Sysgen e Build. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\MISC;
-
%_TGTPROJ%.bat : file batch che non è sempre presente ma che può essere creato dallo sviluppatore al percorso %_PROJECTROOT% per eseguire eventuali azioni custom. Esso è invocato dal wince.bat;
System Generation (SysGen)
La generazione dell’immagine viene eseguita attraverso una serie di file batch invocati in maniera gerarchica l’uno dopo l’altro e sono i seguenti :
-
blddemo.bat : è il primo batch ad essere lanciato e coordina l’esecuzione di tutti gli altri batch. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\MISC;
-
cebuild.bat, sysgen.bat e cesysgen.bat : sono lanciati dal blddemo.bat in un’opportuna sequenza ed eseguono le operazioni di filtraggio dei componenti sulla base delle Sysgen e BSP Variable settate. Inoltre, invocano i tool di compilazione. Si trovano tutti al percorso %_PUBLICROOT%\COMMON\OAK\MISC;
Compilazione
Per quanto riguarda il processo di compilazione vero e proprio dei file sorgenti scritti in codice C, C++ o ASSEMBLER e la relativa generazione di librerie statiche, dinamiche e di file eseguibili, i tool in gioco sono i seguenti :
-
build.exe : invocato dal sistema di build su ciascuna directory da compilare, questo tool esegue l’operazione di attraversamento della directory stessa nelle sue varie sottocartelle, utilizzando il file dirs contenuto in essa. Tale file specifica quali sottocartelle vanno analizzate a partire dalla cartella corrente. Ovviamente ciascuna sottocartella potrà contenere un file dirs e così via, creando proprio una gerarchia di attraversamento delle cartelle. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;
-
nmake.exe : viene invocato dal tool build.exe su uno specifico target (contenuto di una cartella) da buildare, durante le operazioni di attraversamento delle directory. Esso utilizza un makefile per le operazioni di compilazione ed invoca a sua volta i vari compilatori C, C++ (cl.exe) ed ASSEMBLER (armasm.exe, ml.exe, ..) nonchè il linker (link.exe). Tutti questi tool si trovano al percorso %_WINCEROOT%\SDK\BIN\I386 considerando che l’nmake.exe è unico, mentre i compilatori ed i linker sono distinti per architettura in più sottocartelle (X86, ARM, MIPS, SH) poiché ovviamente le operazioni di compilazione e link variano a secondo del processore;
Release e make dell’immagine
La generazione si conclude con la copia dei componenti nella release directory e con la creazione del file binario NK.bin. I tool in gioco sono :
-
buildrel.bat : ha il compito di copiare tutte le librerie e gli eseguibili nella _FLATRELEASEDIR, prelevandole dai percorsi relativi al progetto ed alla BSP sulla base del filtraggio dei componenti eseguito. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\MISC;
-
makeimg.exe : tool finale che ha il compito di generare il file binario dell’immagine (NK.bin) utilizzando le informazioni dei file .bib, .reg, .dat e .db. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;
-
fmerge.exe : invocato dal makeimg.exe, ha il compito di eseguire il merge dei file .bib, .reg, .dat e .db. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;
-
regcomp.exe : lanciato dal makeimg.exe, ha il compito di generare il file compresso del registro di sistema e dell’hive registry a partire dal reginit.ini. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;
-
res2exe.exe : lanciato dal makeimg.exe, esegue la localizzazione delle risorse dell’immagine. Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;
-
romimage.exe : ultimo tool, lanciato dal makeimg.exe, per la creazione del file binario finale (NK.bin). Si trova al percorso %_PUBLICROOT%\COMMON\OAK\BIN\I386;