Provided by: icmake_13.04.00-1ubuntu2_amd64 bug

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)