icmstart.rc - The icmstart(1) resource file
Contents
Bugs
None reported
Copyright
This is free software, distributed under the terms of the GNU General Public License (GPL).
Description
The icmstart.rc file specifies files to be installed by icmstart(1).
A default icmstart.rc is found in /etc/icmake/icmstart.rc, but if $HOME/.icmake/icmstart.rc exists then
the latter file is used by icmstart(1). $HOME/.icmake/icmstart.rc in turn is overruled by specifying a -c
option when invoking icmstart(1).
The default resource file contains the following specifications, preparing for the construction of a C++
program using icmbuild(1):
CLASSES
icmconf
P main.cc
P main.ih
Pb usage.cc
Pb version.cc
P ? scanner
P ? parser
The icmstart.rc file may contain:
o empty lines, which are ignored;
o lines beginning with a hash-character (#), also ignored;
o an optional installation mode followed by a source-destination specification.
Files
The mentioned paths are sugestive only and may be installation dependent:
o /usr/share/icmake/icmconf: example of an icmbuild configuration file;
o /usr/share/icmake/CLASSES: example of an icmbuildCLASSES file;
o /usr/share/icmake/icmstart.rc: default skeleton resource file.
Fine-Tuning Icmconf
The default icmconf file contains #defines which are used when a project uses a parser (by default
generated by bisonc++(1)) and/or a scanner (by default generated by flexc++(1)). All those #defines are
commented out in the default icmconf file. They are:
#define PARSER_DIR ""
#define PARSGEN "bisonc++"
#define PARSFLAGS "-V"
#define PARSSPEC "grammar"
#define PARSFILES ""
#define PARSOUT "parse.cc"
#define SCANNER_DIR ""
#define SCANGEN "flexc++"
#define SCANFLAGS ""
#define SCANSPEC "lexer"
#define SCANFILES ""
#define SCANOUT "lex.cc"
However, the icmstart.rc file can be modified so that these #defines are omitted from the project’s
icmconf file unless a parser and/or scanner is actually used by the project. For this:
o copy the files in /usr/share/icmake to ~/.icmake;
o if the program uses a parser then define the file ~/.icmake/parser/icmconf containing
#define PARSER_DIR "parser"
#define PARSGEN "bisonc++"
#define PARSFLAGS "-V"
#define PARSSPEC "grammar"
#define PARSFILES ""
#define PARSOUT "parse.cc"
(here `parser’ is the name of the directory containing the parser’s implementation; optionally
another directory name can be specified);
Remove the parser-defines from ~/.icmake/icmconf;
In ~/.icmake/icmconf/icmstart.rc replace the parser-directory specification, like
? parser parser
by
? ~/.icmake/parser parser
o if the program uses a scanner then define the file ~/.icmake/scanner/icmconf containing
#define SCANNER_DIR "scanner"
#define SCANGEN "flexc++"
#define SCANFLAGS ""
#define SCANSPEC "lexer"
#define SCANFILES ""
#define SCANOUT "lex.cc"
(here `scanner’ is the name of the directory containing the scanner’s implementation; optionally
another directory name can be specified);n() Remove the scanner-defines from ~/.icmake/icmconf;
In ~/.icmake/icmconf/icmstart.rc replace the scanner-directory specification, like
? scanner scanner
by
? ~/.icmake/scanner scanner
In general: icmconf#defines can be redefined by removing them from ~/.icmake/icmconf, specifying their
redefinitions in icmconf files in subdirectories of ~/.icmake/icmconf.
Installation Mode
An installation mode consists of a combination of:
o either a P (don’t install with icmstartxxxlibrary) or an L (don’t install with icmstartxxxprogram);
o a D, indicating that the source must also be installed by default, i.e., if neither `program’ or
`library’ was specified as second argument;
o a b, indicating that the file must not be installed if the -b (basic installation) option was
specified when calling icmstart;
o Following the optional P,L,D, or b character a space delimited optional ? may be specified. If
specified the installation of the file or directory must be confirmed by the user.
Name
icmstart.rc - The icmstart(1) resource file
See Also
bisonc++(1), flexc++(1), icmake(1), icmbuild(1), icmconf(7), icmstart(1)
Source-Destination Specifications
The following source-destination specifications can be used in an icmstart.rc file (using skeletons below
to refer to icmstart’s skeleton files directory):
o source
a file named source must exist in skeletons. It is installed in the destination directory `dest’
that’s specified when calling icmstart(1). Example:
CLASSES
skeletons/CLASSES is installed as dest/CLASSES;
o pathspec
if `pathspec’ does not begin with a slash it must exist in skeletons. It is installed as
`pathspec’ in the destination directory specified when calling icmstart(1). Example:
dir/file
skeletons/file is installed as dest/dir/file;
o /pathspec or ~/pathspec
the ~-character is expanded to the user’s home directory. The pathspec’s final element is
installed in the destination directory specified when calling icmstart(1). Example:
~/.icmake/file$HOME/.icmake/file is installed as dest/file
When the above source specifications are followed by a destination specification destspec (a file or
non-absolute directory specification) then the source specification is installed as dest/destspec below
the destination directory specified when calling icmstart(1). Examples:
CLASSES CLASSES # skeletons/CLASSES is installed as
# dest/CLASSES
dir/file dir/file # skeletons/dir/file is installed as
# dest/dir/file
~/.icmake/file .icmake/file # $HOME/.icmake/file is installed as
# dest/.icmake/file
Icmstart converts destination specifications to absolute paths. If these absolute paths do not begin with
dest’s absolute path then an error message is displayed and icmstart ends.
