Reference

icmstart.rc(7)

The icmstart(1) resource file

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 ([email protected]).

History