@c Copyright (C) 1988-2005 Free Software Foundation, Inc.
@c For copying conditions, see the file gpc.texi
@c This file is part of the GPC Manual.
@c
@c Authors: Peter Gerwinski <peter@gerwinski.de>
@c          Frank Heckenbach <frank@pascal.gnu.de>
@c
@c Last modification: 2005-01-01 (file up to date)
@c Translator: Mirsad Todorovac <mtodorov_69@yahoo.com>

@node Invoking GPC
@chapter Opcije u naredbenoj liniji koje podržava GNU Pascal.
@cindex GNU Pascal opcije komandne linije
@cindex opcije komandne linije
@cindex opcije naredbene linije

(Pozivanje GPC-a).

GPC je prevodilac (engl. compiler) koji se poziva iz naredbene (komandne)
linije tj. potrebno je pozvati @file{gpc} prosljeđujući mu ime datoteke koju
želite da prevede, plus (eventualne) opcije.

GPC podržava sve opcije komandne linije (engl. command-line options) koje
poznaje GCC prevodilac, osim velikog broja opcija za preprocesor.
Za kompletni referentni popis i opis svih opcija
pogledajte @ref{Invoking GCC,,GCC Command Options,gcc,the GCC Manual}.
Niže ćete naći listu dodatnih opcija koje GPC podržava, kao i listu
najvažnijih opcija koje GPC podržava (uključujući i neke on onih koje podržava
jednako i GCC).

Moguće je miješati opcije i imena datoteka u komandnoj liniji. U većini
slučajeva poredak nije bitan. Poredak postaje bitan npr. kad koristite više
opcija istog tipa; za primjer, ako navedete @samp{-L} više nego jednom,
direktoriji (kazala) se pretražuju u poretku u kojem su specificirani.
@emph{Note:} Kako mnoge opcije imaju višeslovna imena, višestruke jednoslovne
opcije @emph{ne} mogu se grupirati na način koji je moguć u mnogim drugim
programima: @samp{-dr} je vrlo različito od @w{@samp{-d -r}}.

Mnoge opcije imaju duga imena koja započinju sa @samp{--} ili, potpuno
ekvivalentno @samp{-f}. Npr. @samp{--mixed-comments} je isto što i
@samp{-fmixed-comments}. Neke opcije upućuju GPC da daje upozorenja (engl.
warnings) tj. dijagnostičke poruke koje izvještavaju o konstrukcijama koje
nisu same u sebi pogrešne, ali su rizične; ili može sugerirati da je možda
došlo do pogreške. Te opcije započinju s @samp{-W}.

Većina za GPC specifičnih opcija mogu također biti promijenjene tijekom
jedne kompilacije korištenjem naredbi prevodiocu (engl. compiler directives)
u izvornom kodu (engl. source), npr. @samp{@{$X+@}} ili
@samp{@{$extended-syntax@}} za @samp{--extended-syntax}
(@pxref{Compiler Directives}).

GPC razumije iste varijable okoline (engl. environment variables) koje
razumije i GCC
(@pxref{Environment variables,,Environment Variables Affecting GCC,gcc,the GCC manual}).
Dodatno, GPC prepoznaje @samp{GPC_EXEC_PREFIX} sa istim značenjem koje
@samp{GCC_EXEC_PREFIX} ima za GCC. GPC također prepoznaje
@samp{GCC_EXEC_PREFIX}, ali @samp{GPC_EXEC_PREFIX} ima veći prioritet.

Neke od dugih opcija (npr. @samp{--unit-path}) trebaju argument (parametar).
Ovaj je parametar odvojen jednim @samp{=} znakom, npr.

@smallexample
--unit-path=/home/foo/units
@end smallexample

@menu
* GPC Command Line Options::    GPC opcije komandne linije osim GCC-ovih.
* GPC Options::                 Najčešće korištene opcije GPC-a.
@end menu

(Napomena: naslovi poglavlja su neprevedeni zbog unakrsnih referenci iz
neprevedenih poglavlja priručnika i prema njima.)

@c ==========================================================================


@node GPC Command Line Options
@section GPC opcije osim GCC-ovih.

Slijedeća tablica navodi opcije komandne linije osim onih koje također
razumije i GCC.

(Sadržaj se automatski generira na engleskom.)

@include lang-options.texi


@c ==========================================================================


@node GPC Options
@section Najčešće korištene opcije GPC-a

Kao najjednostavniji primjer, pozivanje

@smallexample
gpc foo.pas
@end smallexample

kaže GPC-u da prevede izvorni kod u datoteci @file{foo.pas} i da proizvede
izvršnu (engl. executable) datoteku sa podrazumijevanim (engl. default)
imenom, koje je @file{foo.exe} na EMX platformi, @file{a.exe} na CygWin,
ujedno @file{a.out} i @file{a.exe} na DJGPP, te @file{a.out} na većini
ostalih platformi.

Korisnik blizak s BP-om (Borland Pascalom) može uočiti da je neophodno dati
datoteci ekstenziju (sufiks) @samp{.pas}: GPC je zajedničko sučelje (engl.
interface) za Pascal prevodilac, ali i za C, ObjC, i C++ prevodilac,
asembler, linker; a možda i za Adu i Fortran prevodilac. Prema ekstenziji
vaše izvorne datoteke GPC određuje koji prevodilac treba pokrenuti. GPC
prepoznaje Pascal programe prema ekstenziji @file{.pas}, @file{.p}, @file{.pp}
ili @file{.dpr}. GPC također prihvaća izvorne kodove u drugim jezicima (npr.
@file{.c} for C) i poziva odgovarajuće prevoditelje za njih. Datoteke s
ekstenzijom @file{.o} ili bez ijedne poznate se smatraju objektnim datotekama
ili bibliotekama funkcija (engl. library) koje treba povezati (engl. link).

Još jedan primjer:

@smallexample
gpc -O2 -Wall --executable-file-name --automake --unit-path=units foo.pas
@end smallexample

Ovo će prevesti izvornu datoteku @file{foo.pas} u u izvršnu datoteku imena
@file{foo} (@samp{--executable-file-name}) sa relativno dobrom optimizacijom
(@samp{-O2}), uz upozorenja o potencijalnim problemima @samp{-Wall}. Ako
program koristi jedinice (UNIT) ili importira module, njih će prevodilac
potražiti u direktoriju imena @file{units} (@samp{--unit-path}) i automatski
prevesti i povezati (@samp{--automake}).

Slijedeća tablica navodi najčešće korištene opcije GPC-a.

@table @code
@item --automake
Provjerava da li korišteni moduli/jedinice moraju biti ponovno prevedeni
i vrši ponovno prevođenje ako je to neophodno.

@item --unit-path=@var{dir}[:@var{dir}@dots{}]
Traži jedinice (engl. i Pascal UNIT) i objektne datoteke u danim direktorijima.

@item --object-path=@var{dir}[:@var{dir}@dots{}]
Traži objektne datoteke u navedenim direktorijima.

@item --unit-destination-path=@var{dir}
Smješta prevedene jedinice (GPI i objektne datoteke) u direktorij @var{dir}.
Podrazumna (engl. default) vrijednost u slučaju izostavljanja opcije je
trenutni direktorij.

@item --object-destination-path=@var{dir}
Smješta prevedene objektne datoteke (npr. od C datoteka, ali ne od Pascal
jedinica) u direktorij @var{dir}. Podrazumijevana (default) vrijednost je
direktorij dan sa @samp{--unit-destination-path}.

@item --executable-path=@var{dir}
Smješta proizvedenu izvršnu datoteku u direktorij @var{dir}. Podrazumna
vrijednost je direktorij u kojem se nalazi glavna izvorna datoteka.

@item -o @var{file}
@cindex opcija ime izlazne datoteke
Smjesti izlaz u datoteku @var{file}. Ovo vrijedi bez obzira na tip izlaza
koji je proizveden, bio on izvršna datoteka, objektna datoteka, asemblerski
listing itd.

Kako samo jedna izlazna datoteka može biti navedena, nema smisla koristiti
@samp{-o} opciju kad se prevodi više od jedne ulazne datoteke, osim ako se
proizvodi izvršna datoteka kao izlaz.

@item --executable-file-name[=@var{name}]
@cindex opcija izlazna datoteka
Proizvodi ime izvršne datoteke iz imena izvorne datoteke, ili koristi
@var{name} kao ime izvršne datoteke. Razlika u odnosu na @samp{-o} opciju
je da @samp{--executable-file-name} uzima u obzir @samp{--executable-path},
dok @samp{-o} to ne čini i prihvaća ime datoteke koje uključuje direktorij.
Dalje, @samp{--executable-file-name} se odnosi samo na izvršne datoteke, ne
na ostale izabrane oblike izlaznih datoteka.

@item -L@var{dir}
Traži biblioteke funkcija (eng. libraries) u direktoriju @var{dir}. Može se
navesti više puta.

@item -I@var{dir}
Traži include (uključne) datoteke u direktoriju @var{dir}. Može se navesti
više puta.

@item -l@var{library}
@cindex Libraries
Potraži biblioteku funkcija @var{library} kod povezivanja. Ova se opcija
mora nalaziti u komandnoj liniji @emph{iza} svih izvornih ili objektnih
datoteka te drugih biblioteka koje referenciraju @var{library}.

@item -O[@var{n}]
Izaberi nivo optimizacije. Bez optimizacije (ili @samp{-O0} što je podrazumna
-default- vrijednost), cilj prevoditelja je da smanji vrijeme prevođenja i
da proces otkrivanja pogrešaka (engl. debugging) da očekivane rezultate.
Naredbe su neovisne: ako zaustavite program prekidnom točkom (engl. breakpoint)
između naredbi, možete dodijeliti novu vrijednost nekoj varijabli ili
promijeniti programski brojač na bilo koju drugu naredbu u istoj rutini i
dobiti točno rezultate koje očekujete od izvornog koda.

S optimizacijom, prevodilac nastoji reducirati veličinu izvršnog koda i
trajanje izvršavanja. Što veća vrijednost @var{n}, više će se optimizacija
izvesti, ali će prevođenje trajati dulje.

Ako koristite više @samp{-O} opcija, sa ili bez @var{n}, zadnja opcija je
ona koja je važeća.

@item -g
Proizvedi informacije za debugging (ispravljanje progrešaka) prikladne za
@samp{gdb}. Za razliku od nekih drugih prevoditelja, GNU Pascal dozvoljava
da koristite @samp{-g} sa @samp{-O}. Prečice poduzete od strane optimiziranog
koda mogu povremeno proizvesti iznenađujuće rezultate: neke varijable koje
ste deklarirali mogu uopće ne postojati; tijek programa može se skokovito
premjestiti gdje ga niste očekivali; neke naredbe se mogu ne izvršiti jer
izračunavaju konstantnu vrijednost ili su njihove vrijednosti već bile pri
ruci; neke se naredbe mogu izvršiti na drugim mjestima jer su pomaknute
izvan petlji. Međutim, pokazuje se mogućim debuggirati optimizirani izlaz.
Ovo čini razumnim koristiti optimizer za programe još i u testnoj fazi.

@item -s
Ukloni sve simbol tablice i relokacijske informacije iz izvršne datoteke.
Primjedba: ovo nema utjecaja na performanse prevedene izvršne datoteke.

@item -Wall
Daj upozorenja za izvjestan broj konstrukata koji nisu po sebi pogrešni ali
su rizični ili sugeriraj da je možda učinjena pogreška u kodiranju. Postoje
dodatne opcije upozorenja koje nisu uključene sa @samp{-Wall}, vidi GCC
opcije upozorenja (engl. warnings)
(@pxref{Warning Options,,Options to Request or Suppress Warnings,gcc,the GCC manual}),
dok @samp{-Wall} samo upozorava na takve konstrukte koje je lako izbjeći
u programima. Dakle, savjetujemo koristiti @samp{-Wall} na većini programa.

Primijetimo da neka upozorenja (npr. ona o neinicijaliziranim varijablama)
nisu nikad dana ako se ne prevodi s optimizacijom (vidi gore), jer prevodilac
inače ne analizira uzorke korištenja varijabli.

@item -Werror
Pretvara sva upozorenja u pogreške.

@item -S
Zaustavi se nakon prevođenja; ne asembliraj. Izlaz je u obliku asemblerskog
koda za svaku izvornu datoteku. Podrazumno (default), ime asemblerske datoteke
za datu izvornu datoteku nastaje zamjenom ekstenzije sa @samp{.s}.

@item -c
Prevedi i asembliraj izvornu datoteku, ali ne povezuj. Izlaz je u obliku
objektne datoteke za svaku izvornu datoteku. Podrazumno, ukoliko se drugačije
ne navede, ime objektne datoteke za izvornu datoteku nastaje zamjenom
ekstenzije izvorne datoteke sa @samp{.o}.

@item -static
Na sistemima koji podržavaju dinamičko povezivanje, ovo zabranjuje povezivanje
sa dijeljenim bibliotekama (engl. shared libraries), tj. traži statičko
povezivanje. Na ostalim sistemima ova opcija nema efekta.

@item -D@var{macro}[=@var{def}]
Definiraj makro i uvjetni simbol @var{macro} kao @var{def} (ili kao @samp{1}
ako je @var{def} izostavljen).

@item -b @var{machine}
Parametar @var{machine} specificira ciljni stroj za prevođenje. Ovo je korisno
ako je GNU Pascal instaliran kao prevodilac za drugu platformu (engl. cross-
compiler).

@item -v
Ispiši (na tok pogreški) naredbe izvršavane da se pokrenu pojedini stupnjevi
prevođenja. Također ispiši broj verzije pogonskog programa prevoditelja,
preprocesora i samog prevoditelja.

@item --classic-pascal-level-0
@itemx --classic-pascal
@itemx --extended-pascal
@itemx --object-pascal
@itemx --ucsd-pascal
@itemx --borland-pascal
@itemx --pascal-sc
@c
@c Mirsad: unhappy with Croatian translation for "typed constant"!!!
@c
GNU Pascal podržava svojstva nekoliko različitih Pascal standarda i dijalekata.
Inicijalno, oni su svi omogućeni. Ovi prekidači upućuju GPC da ograniči sebe
na svojstva specificiranog standarda; ne omogućuju bilo kakva dodatna
svojstva. Upozorenja o nekim opasnim konstruktima koji bi bili legalni
za specificirani dijalekt (npr.@: operacija dodjele vrijednosti tipiziranoj
konstanti uz @samp{--borland-pascal}) se potiskuju.

Inicijalno, GNU Pascal dozvoljava redefiniciju inekih ključnih riječi jezika. Svaki
od ovih prekidača prouzročuje da GNU Pascal zabrani redefiniciju ključnih
riječi specificiranog standarda.

Ispravni ISO 7185 Pascal programi bi se trebali prevesti ispravno sa ili
bez @samp{--classic-pascal}. Međutim, bez ove opcije neka GNU proširenja
i značajke drugih dijalekata Pascala su također podržane. Sa ovom opcijom,
ta proširenja su odbijena.

Ove opcije nisu tu s namjerom da budu @i{korisne}, one postoje samo da
zadovolje pedantne koji bi inače tvrdili da GNU Pascal ne ispunjava ISO
standard ili nije @i{zaista} kompatibilan sa Borland Pascalom, ili što već.
Mi preporučujemo, radije, da korisnici iskoriste prednosti ekstenzija
GNU Pascala i zanemare ograničenja drugih prevodilaca.

@item -pedantic-errors
Proizvedi greške radije nego upozorenja za kršenja prenosivosti koda
(engl. portability). Za razliku od C-a, ovo @emph{ne} implicira
@samp{-pedantic} opciju, pa možete, na primjer, koristiti
@samp{-pedantic-errors} bez @samp{-pedantic}, ali sa @samp{--extended-pascal}.

@item --gpc-main=@var{name}
Imenuj ulaznu točku glavnog programa @samp{@var{name}} umjesto @samp{main}
na nivou povezivača. Ovo je korisno npr. kad se radi s nekim C bibliotekama
funkcija koje definiraju svoju vlastitu @samp{main} funkciju i traže da
se programska ulazna točka (engl. entry point) nazove drugačije.

(Preferira se korištenje ove direktive prevodiocu u jedinici ili modulu
koji se povezuje s tom čudnom C bibliotekom, radije nego da se direktiva
daje u naredbenoj (komandnoj) liniji.)

@end table
