Provided by: icmake_13.04.00-1ubuntu2_amd64 

NAME
icmstart.rc - The icmstart(1) resource file
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.
INSTALLATION MODE
An installation mode consists of a combination of:
o either a P (don’t install with icmstart xxx library) or an L (don’t install with icmstart xxx
program);
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.
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.
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.
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 icmbuild CLASSES file;
o /usr/share/icmake/icmstart.rc: default skeleton resource file.
SEE ALSO
bisonc++(1), flexc++(1), icmake(1), icmbuild(1), icmconf(7), icmstart(1)
BUGS
None reported
COPYRIGHT
This is free software, distributed under the terms of the GNU General Public License (GPL).
AUTHOR
Frank B. Brokken (f.b.brokken@rug.nl).
icmake.13.04.00 1992-2025 icmstart.rc(7)