2.3.7.2        Configurare il codice sorgente di POV-Ray


Per ogni piattaforma si ha un file header, config.h che si trova generalmente nella directory specifica per la piattaforma, ma che si può anche trovare nella directory specifica per il compilatore. Alcune piattaforme hanno più versioni differenti di questo file, per cui può presentarsi la necessità di copiarlo e rinominarlo come config.h. Questo file è incluso in ogni modulo del programma. Contiene tutti i prototipi, le procedure (macro) o altre definizioni che sono necessarie per le parti generiche del programma, ma che devono essere messe a punto manualmente per una particolare piattaforma o compilatore.
Per esempio, diversi sistemi operativi utilizzano caratteri diversi come separatori tra i nomi delle directory e dei file. MS-Dos utilizza il 'back slash' (\), Unix il 'front slash' (/), MacOS i due punti. Il file config.h per MS-Dos e Windows contiene il testo seguente :

#define FILENAME_SEPARATOR '\'

Che istruisce la parte generica di POV-Ray ad usare un back slash.
Ogni personalizzazione di cui la parte generica del codice sorgente ha bisogno, ha una regolazione standard nel file souce\frame.h che è incluso in ogni modulo. L' header frame.h contiene molti gruppi di definizioni di questo tipo :

#ifndef FILENAME_SEPARATOR
#define FILENAME_SEPARATOR '/'

#endif

che significa 'se questo parametro non è stato definito prima in config.h allora questo è un valore di default'. Controllare quindi il file frame.h per vedere quali altri valori devono essere configurati. Se vengono utilizzate delle definizioni per specificare funzioni specifiche per una data piattaforma, deve essere incluso anche un prototipo per quella funzione. Il file source\msdos\config.h per esempio, non solo contiene la macro :

#define POV_DISPLAY_INIT(w,h) MSDOS_Display_Init ((w), (h));

per definire il nome della funzione di inizializzazione del display grafico, ma contiene anche il prototipo :

void MSDOS_Display_Init (int w, int h);

Progettando di portare POV-Ray ad una piattaforma non supportata, probabilmente è meglio cominciare con la più semplice versione (senza output a video) generica per Unix, quindi aggiungere nuove parti tramite il file config.h.