P.OSes := [win32,win64,wince,haiku,linux,freebsd,openbsd,netbsd,darwin,iphonesim,ios,solaris,aix];
- T:=P.Targets.AddProgram('instantfpc.pas');
+ T:=P.Targets.AddProgram('ifpc.pas');
T.Dependencies.AddUnit('instantfptools');
P.Targets.AddUnit('instantfptools.pas').Install:=False;
Version = '1.3';
// 1.3 compile in a separate directory, so that parallel invocations do not overwrite link.res files
+var
+ BinPath, BinName: string;
Procedure Usage(Err : string);
-
begin
if (Err<>'') then
Writeln('Error : ',Err);
- writeln('instantfpc '+Version);
+ writeln(BinName, ' ', Version);
writeln;
writeln('Run pascal source files as scripts.');
writeln('Normal usage is to add to a program source file a first line');
- writeln('("shebang") "#!/usr/bin/instantfpc".');
+ writeln('("shebang") "#!', BinPath, BinName, '".');
writeln('Then you can execute the source directly in the terminal/console.');
writeln;
- writeln('instantfpc -h');
+ writeln(BinName, ' -h');
writeln(' Print this help message and exit.');
writeln;
- writeln('instantfpc -v');
+ writeln(BinName, ' -v');
writeln(' Print version and exit.');
writeln;
- writeln('instantfpc [compiler options] <source file> [program parameters]');
+ writeln(BinName, ' [compiler options] <source file> [program parameters]');
writeln(' Compiles source and runs program.');
writeln(' Source is compared with the cache. If cache is not valid then');
writeln(' source is copied to cache with the shebang line commented and');
writeln(' cached source is compiled.');
writeln(' If compilation fails the fpc output is written to stdout and');
- writeln(' instantfpc exits with error code 1.');
+ writeln(' ', BinName, ' exits with error code 1.');
writeln(' If compilation was successful the program is executed.');
writeln(' If the compiler options contains -B the program is always');
writeln(' compiled.');
writeln(' If the environment option INSTANTFPCOPTIONS is set it is');
writeln(' passed to the compiler as first parameters.');
writeln;
- writeln('instantfpc --get-cache');
+ writeln(BinName, ' --get-cache');
writeln(' Prints current cache directory and exit.');
writeln;
writeln('Options:');
if (P='') then exit;
if p='-v' then
begin
- writeln('instantfpc '+Version);
+ writeln(BinName, ' ', Version);
Halt(1);
end
else if p='-h' then
{ For example:
/usr/bin/instantfpc -MObjFpc -Sh ./envvars.pas param1
}
+ BinPath := ExtractFilePath(ParamStr(0));
+ BinName := 'ifpc';
for i:=1 to Paramcount do
begin
p:=ParamStr(i);
--- /dev/null
+.TH ifpc 1 "18 May 2013" "Free Pascal" "Instant pascal code interpreter"
+.SH NAME
+ifpc \- The Free Pascal Interpreter.
+
+.SH SYNOPSIS
+
+.B ifpc
+[\fI\-h\fR] [\fI\-v\fR] [\fIcompiler options\fR] <\fIsource file\fR>
+[\fIprogram parameters\fR]
+
+.SH DESCRIPTION
+
+.B ifpc
+This is a pascal code interpreter program. It compiles source and runs the
+ generated program.
+
+Source is compared with the cache. If cache is not valid then then source is
+copied to cache with the shebang line commented and cached source is compiled.
+If compilation fails the fpc output is written to stdout and and exit code 1
+is returned
+If compilation was successful the program is executed.
+If the compiler options contains \-B the program is always recompiled.
+If the environment option INSTANTFPCOPTIONS is set it is passed to compiler as
+the first parameters.
+
+.SH USAGE
+
+.B ifpc
+takes the following arguments:
+.TP
+.B \-h
+Prints this help message and exit.
+.TP
+.B \-v
+Prints version and exit.
+.TP
+.B \-\-get\-cache
+Prints current cache directory and exit.
+.TP
+.B \-\-set\-cache=<path to cache>
+Set the cache to be used. Otherwise using environment variable INSTANTFPCCACHE.
+.TP
+.B \-\-compiler=<path to compiler>
+Normally fpc is searched in PATH and used as compiler.
+.TP
+.B \-\-skip\-run
+Do not execute the program. Useful to test if script compiles
+.TP
+.B \-B
+Always recompile.
+
+.SH SEE ALSO
+.IP
+.BR fpc (1)