# Installare il programma da codice sorgente

## Come installare il codice sorgente e compilarlo con Lazarus

Il modo più semplice è aggiungere una directory `src` sotto la cartella principale dei file binari di CdC.

Scarica il file contenente i sorgenti `skychart_v3_xxx_source.tar.gz` in questa directory ed estrai i file.
Su Linux il comando per estrarre i file è:

     tar xzf skychart_v3_xxx_source.tar.gz

Meglio ancora sarebbe scaricare i sorgenti da Subversion usando un client svn.
Il comando è:

    svn co https://skychart.svn.sourceforge.net/svnroot/skychart/trunk .

### Compilazione e installazione automatica

Se vuoi solo compilare il software senza utilizzare l'ambiente interattivo Lazarus, puoi utilizzare gli script disponibili nella directory principale.

Prima di lanciare questi script assicurati di avere i binari di Free Pascal impostati nel PATH del tuo sistema, in particolare il comando fpcmake.

Nella directory principale trovi anche lo script daily_build.sh che uso di solito per compilare i pacchetti Linux e Windows.

#### Per Linux e Mac

    ./configure [fpc=free_pascal_path] [lazarus=lazarus_path] [prefix=installation_path]
    make
    make install
    make install_data

#### Per Windows

- Fai attenzione a non avere un altro comando make oltre a quello di Free Pascal nel tuo PATH.
- Compila manualmente le librerie getdss e plan404 con Mingw
- Installa il comando sed per Windows
- Modifica il file configure.cmd impostando i valori corretti per sed=, fpc=, lazarus=, prefix=
- Potresti dovere modificare gli script secondo quelli della versione Linux in quanto io non li uso e probabilmente sono obsoleti.

    configure.cmd
    make
    make install
    make install_data

### Compilazione interattiva

Primo, installa i componenti richiesti dalla cartella src/skychart/component.

Clicca “Apri pacchetto”, seleziona “componente/cdccomponents.lpk”, clicca “Compila”, “Installa”.
quando l'installazione ti chiede di ricompilare Lazarus rispondi Sì.

Ora puoi aprire il file di progetto principale skychart/cdc.lpi e compilarlo.

Per l'esecuzione in modalità debug modifica Run-Run Parameters-Working Directory alla tua directory CdC.

Per ridurre la dimensione dell'eseguibile usa strip e upx.

Le librerie getdss e plan404 sono scritte in C. Per compilarle installa il compilatore gcc (Mingw su Windows) e lancia make dalla cartella di ciascuna libreria.

Alcune librerie specifiche di Windows non sono ancora portate su Lazarus, usa Delphi se vuoi compilarle.

## Installa Lazarus

Per conoscere quale versione di Lazarus è richiesta per una specifica versione di Skychart, installa la versione binaria e guarda nel menu Aiuto / About. C'è una riga che mostra le versioni utilizzate di FPC e Lazarus.

Installa Lazarus da http://lazarus.freepascal.org. Vedi http://wiki.lazarus.freepascal.org/Installing_Lazarus per le istruzioni.

Lancia Lazarus e apri Components-Configure, Installed Packages.

Assicurati che Printer4Lazarus e TurboPowerIPro siano installati, questa dovrebbe essere la norma. Altrimenti installali da lazarus/component :

- printers/printer4lazarus.lpk
- turbopower_ipro/turbopoweripro.lpk

Io uso la seguente procedura per installare o aggiornare Free Pascal e Lazarus su Linux con il cross compiler per Windows:

    cd ~/fpc
    # svn co http://svn.freepascal.org/svn/fpc/branches/fixes_2_2 .
    svn up
    make clean
    make build
    sudo make install
    make clean OS_TARGET=win32 CPU_TARGET=i386
    make build OS_TARGET=win32 CPU_TARGET=i386
    sudo make crossinstall OS_TARGET=win32 CPU_TARGET=i386
    ver=`fpc -iV`
    sudo ln -f -s /usr/local/lib/fpc/$ver/ppc386 /usr/local/bin
    sudo ln -f -s /usr/local/lib/fpc/$ver/ppcross386 /usr/local/bin
    cd ~/lazarus
    # svn co http://svn.freepascal.org/svn/lazarus/trunk .
    svn up
    make clean
    make OS_TARGET=win32 CPU_TARGET=i386 clean
    make bigide
    make OS_TARGET=win32 CPU_TARGET=i386 bigide

## Convenzioni dei nomi per i sorgenti i programma

Per una più rapida identificazione della destinazione di un'unità viene seguita la seguente convenzione per nominare i file:

    cdc.lpi         : Progetto principale
    pu_*.pas        : Form units with specific code only
    pu_*.lfm        : Form definition
    cu_*.pas        : Unità contenenti oggetti non visivi.
    u_*.pas         : Unità con codice generico.

## Struttura delle directory

         |- src -|                            < base directory, compilation scripts
                 |- skychart |                < skychart module
                             |- component     < project component
                             |- library       < project library
                             |- ...
                             |- units         < all compilation object go here

                 |- varobs   |                < varobs module

                 |- tools | - data            < the "data" directory structure require to run the progran
                          | - cat             < the basic catalogs, the program used to build them
                          | - ...             < other data files