Scroll to navigation

icmstart.rc(7) icmstart resource file icmstart.rc(7)

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:
empty lines, which are ignored;
lines beginning with a hash-character (#), also ignored;
an optional installation mode followed by a source-destination specification.

INSTALLATION MODE

An installation mode consists of a combination of:

either a P (don’t install with icmstart xxx library) or an L (don’t install with icmstart xxx program);
a D, indicating that the source must also be installed by default, i.e., if neither `program’ or `library’ was specified as second argument;
a b, indicating that the file must not be installed if the -b (basic installation) option was specified when calling icmstart;
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):

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;
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;
/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:

copy the files in /usr/share/icmake to ~/.icmake;
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

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:

/usr/share/icmake/icmconf: example of an icmbuild configuration file;
/usr/share/icmake/CLASSES: example of an icmbuild CLASSES file;
/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).

1992-2025 icmake.13.04.00