Compilazione
dell'interprete |
Questo capitolo spiega come compilare l'interprete Proteus; se
la distribuzione in vostro possesso comprende già un eseguibile
compatibile con il vostro sistema, potete passare al capitolo successivo.
La distribuzione dei sorgenti di Proteus è disponibile in diverse versioni, identiche dal punto di
vista dei contenuti, che differiscono unicamente per il formato
dei file e l'eventuale mappatura dei caratteri utilizzati nei
messaggi di sistema e nei sorgenti.
Prima di procedere alla compilazione, è necessario lanciare
lo script di configurazione: configur.bat sotto Ms-Dos e
Windows 95, configure sotto Unix.
Vi verranno sottoposte alcune domande relative a:
- il formato predefinito della data (europeo, americano o
giapponese): questo formato sarà utilizzato da Proteus
di default, se non modificato attraverso il parametro
sulla linea di comando -d o
attraverso l'assegnazione di un altro valore
all'identificatore predefinito DATE_TYPE;
- il formato predefinito per l'ora (12 o 24 ore); questo
formato sarà utilizzato da Proteus di default, se non
modificato attraverso il parametro sulla linea di comando
-t o attraverso
l'assegnazione di un altro valore all'identificatore
predefinito TIME_TYPE;
- l'impostazione dell'epoca (per l'interpretazione delle
date con anni di due sole cifre); questa impostazione
permette di interpretare correttamente date con sole 2 o
3 cifre per l'anno. Se si risponde SI,
l'epoca sarà impostata al 1970 e pertanto tutti gli anni
>= 1970 e <= 2069 potranno essere accorciati
indicando solo due cifre. Se si risponde NO,
l'epoca sarà impostata a 0 (tutte le date utilizzeranno
4 cifre per l'anno). Questa impostazione può essere
modificata dal parametro sulla linea di comando -e oppure attraverso
l'assegnazione di un altro valore all'identificatore
predefinito EPOCH;
- l'architettura del sistema in uso (solo per sistemi
Unix); richiede di indicare il tipo di computer sul quale
l'interprete sta venendo compilato, per attivare delle
ottimizzazioni specifiche;
- la disponibilità della funzione "realpath"
(solo per sistemi Unix); questa funzione permette, con
una singola chiamata di sistema, di ottenere un percorso
assoluto da un percorso relativo: rispondere SI
se il vostro sistema operativo ha questa funzione (es.
Linux), NO altrimenti (es. Digital
Unix). Nel dubbio, rispondete NO: verrà
utilizzata, in questo caso, un funzione sostitutiva che
emula realpath con chiamate di sistema presenti su ogni
SO Unix;
- l'inclusione delle informazioni di debugging: rispondete SI
solo se volete debuggare l'interprete
Proteus; tutte le ottimizzazioni sono inoltre
disattivate; è possibile comunque compilare l'interprete
con le informazioni simboliche per debugging definendo
sulla riga di chiamata del programma di make la label DEBUG
(es. make all DEBUG=1);
- il compilatore da utilizzare (solo per sistemi Dos);
l'interprete Proteus può essere compilato con diversi
compilatori; la versione compilata con DJGPP è
sensibilmente più veloce, ma richiede un Dos extender
qualora eseguita in un ambiente in cui i servizi DPMI non
sono disponibili normalmente (Windows 95 ha tali servizi,
Ms-Dos 6.22 no);
- la scelta della precisione per il calcolo in virgola
mobile (solo per sistemi Dos e compilatore Borland):
questa impostazione influenza tutti i calcoli in virgola
mobile in Proteus; se decidete di utilizzare i long
double, otterrete la massima precisione al prezzo di una
velocità di calcolo inferiore.
Una volta completata la configurazione, è necessario editare
il percorso di installazione in Makefile o proteus.mak;
aprire con un editor di testo il file e cambiare opportunamente
il valore di DOSINSTDIR/UNXINSTDIR
(in Makefile) o INSTALLDIR (in proteus.mak). In
queste directory saranno copiati l'interprete Proteus, il file proteus.man,
lo script prothelp.prt e verrà creato lo script
di shell prothelp (invoca l'help system a linea
di comando di Proteus); inoltre, tutti gli esempi, i test, i file
di supporto linguistico e la documentazione in formato
ipertestuale saranno copiati nelle sottodirectory samples,
test, language e html.
Nel caso in cui si desideri modificare permanentemente tali
valori, anche nel caso di ri-configurazione e ri-compilazione
dell'interprete, le modifiche dovranno essere apportate
rispettivamente a gccmake.def o bcmake.def
prima di effettuare la configurazione. Per avviare la
compilazione, digitare (DJGPP/GCC):
make
oppure (Borland C):
make -fproteus.mak
Comparirà una lista dei target ammessi con la rispettiva
descrizione; invocare make come sopra con il target
scelto fra i seguenti:
help
|
stampa questo testo di aiuto |
all
|
ricompila l'eseguibile |
install
|
installa l'eseguibile, la documentazione e gli esempi
(modificare prima la destinazione nel Makefile) |
clean
|
rimuove i file oggetto e l'eseguibile |
zip
|
crea un file zip con la distribuzione corrente |
dos
|
crea la distribuzione Dos (usa Proteus e samples\distrib.prt) |
unx
|
crea la distribuzione Unix (usa Proteus e samples\distrib.prt) |
w95
|
crea la distribuzione Windows 95 (usa Proteus e samples\distrib.prt) |
zipdos
|
crea la distribuzione Dos e la comprime in uno zip
(implica dos) |
zipunx
|
crea la distribuzione Unix e la comprime in uno zip
(implica unix) |
zipw95
|
crea la distribuzione Windows 95 e la comprime in uno
zip (implica w95) |
Nella distribuzione originale, Proteus ha inizialmente i
messaggi in italiano e le parole chiave in inglese; mediante lo
script language.prt
ed il file language.txt
(nella sottodirectory language) è possibile
rigenerare i file header di supporto per impostare
la lingua delle parole chiave e/o dei messaggi ad un'altra
lingua supportata.
Proteus è stato testato con le seguenti combinazioni di
sistemi operativi e compilatori:
- Borland C v3.1: Ms-Dos 6.22 e Windows 95 OSR1
- DJGPP 2.7.2.1: Ms-Dos 6.22 e Windows 95 OSR1
- Gnu C 2.7.2.1: Linux kernel 2.0.27
- Gnu C: Digital Unix
Alcune note:
- la versione Dos/Windows 95 di Proteus compilata con DJGPP
utilizza il buffer di trasferimento interno per scambiare
dati tra il programma e la memoria convenzionale; poiché
quasi tutti i debugger utilizzano tale buffer per
funzionare, non è possibile debuggare le funzioni che
invocano interrupt Dos/Windows (cioé tutte le funzioni
che invocano esplicitamente __dpmi_int). Evitare
il trace, dunque, di tali funzioni, oppure debuggare
l'interprete compilandolo con Borland C;
- volendo compilare Proteus su una nuova piattaforma per la
quale esiste un port di Gnu C, dovrebbe essere
sufficiente determinare se il sistema operativo supporta
la funzione realpath (nel caso di sistema Unix, si provi
a lanciare "man realpath" o "man -k
realpath"); nel caso non sia disponibile, verrà
utilizzata una macro che impiega getcwd e chdir
(ovviamente meno efficiente);
- la quadrupla precisione è attualmente disponibile solo
sotto Ms-Dos, in quanto il compilatore Borland è l'unico
ad avere tutte le funzioni matematiche richieste da
Proteus in quadrupla precisione. Avendo una libreria
matematica in quadrupla precisione, dovrebbe essere
sufficiente modificare opportunamente i nomi delle
funzioni richiamate in proteus.h e
linkare tale libreria.