icmbuild man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

icmbuild(1)	     A generic program maintenance script	   icmbuild(1)

NAME
       icmbuild - A generic, easy configurable, program maintenance script

SYNOPSIS
       icmbuild mode

DESCRIPTION
       The  icmbuild script is a generic script that can be used to do program
       maintenance using icmake(1).

       The script expects two files to be available  in	 the  directory	 where
       program	maintenance  is	 required,  and	 the icmbuild script should be
       available in your path or it should be started as, e.g., ./icmbuild

       Icmbuild assumes that your sources exist in and below  a	 directory  in
       which the files icmconf and CLASSES live. The file CLASSES contains the
       names of all subdirectories in which class-specific sources  are	 kept.
       The  file  icmconf in icmake(1)’s distribution offers an example of the
       configuration parameters that are used for program maintenance. In this
       latter file it is assumed that C++ sources are maintained, but the icm‐
       build script is not restricted to do maintenance for C++ programs.

       Icmbuild compiles all sources in each of the  subdirectories  named  in
       the  file CLASSES, and then compiles all sources in the current working
       directory (except for the source containing main()).

       The compiled sources result in object modules which are then kept in  a
       library,	 against  which	 the  main-object module is linked. It is also
       possible to specify additional libraries against which the program must
       be linked.

       Once  a	library	 is  constructed  it is kept up to date by the script.
       Changing a source will result in replacing its former module by its new
       module in the library.

KICK-STARTING ICMBUILD
       Normally, icmbuild is installed and used as follows:

       o      Install icmbuild in your path;

       o      copy icmconf and CLASSES to your project’s base directory (i.e.,
	      the directory in which and where below the project’s sources are
	      found);

       o      Modify the #defines in the file icmconf to taste;

       o      List the subdirectories containing sources in the file CLASSES

	      Note that the order of the classes mentioned in classes is rele‐
	      vant here.  It’s no problem  to  add  new	 class	(subdirectory)
	      names,  but  reordering  should  be  prevented. If reordering is
	      required, recompile the library, as the final object files  con‐
	      tain  class  order-numbers.   These  class-order numbers prevent
	      file-name collisions and thus prevent replacing  file  x.o  from
	      class A by file x.o from class B;

       o      Now simply run

			  icmbuild

	      from the project’s base directory and let the help-info tell you
	      what your options are. See the next section  for	the  modes  of
	      operation.

OPTIONS
       Icmbuild may be called with the following operational modes:

       o      clean
	      clean up remnants of previous activities

       o      help
	      provide help and exit (default when called without arguments)

       o      library
	      build the library (static and optionally the dynamic library)

       o      program
	      build the binary program

       o      program strip
	      build the stripped binary program

       o      install  <base> install the software in the locations defined in
	      the icmconf file, optionally below the directory <base> The icm‐
	      conf  file  may  be  given a line defining DEFCOM containing the
	      default operational mode to use when none is specified. E.g.,

		  #define DEFCOM "program"

	      constructs the program when the command `icmbuild’  is  entered.
	      DEFCOM may also contain combined options, like

		  #define DEFCOM "program strip"

	      Note that DEFCOM is ignored when an explicit operational mode is
	      provided to the icmbuild script.

FILES
       The mentioned paths are sugestive only and may be  installation	depen‐
       dent:

       o      /usr/share/icmake/icmconf	 Example  of  a icmbuild configuration
	      file;

       o      /usr/share/icmake/CLASSES Example of a icmbuild CLASSES file.

EXAMPLES
       Here is an example of the configuration file  icmconf  for  a  concrete
       program, using the library libbobcat1 as an additional library:

	   // Inspect the following #defines. Change them to taste. If you don’t
	   // need a particular option, change its value into an empty string

	   // For more information about this file: ’man 7 icmconf’

	   // define any additional libraries the program may need:
       #define ADD_LIBRARIES	   ""

	   // define any additional paths (other than the standard paths) the
	   // additional libraries are located in:
       #define ADD_LIBRARY_PATHS   ""

	   // Uncomment to clear the screen just before starting the compilation
	   // process
       //#define CLS

	   // The compiler to use. Define CC instead if a C compiler should be used.
       #define CXX	      "g++"
       //#define CC	       "gcc"

	   // The compiler options to use. Define CFLAGS instead if a C compiler is
	   // used.
       #define CXXFLAGS	       " --std=c++14 -Wall -g -O2"
       //#define CFLAGS	       " -Wall -g -O2"

	   // Options passed to the linker:
       #define LDFLAGS	       ""

	   // Uncomment to construct a library. Optionally use another name (don’t
	   // use lib or an extension like .a)
       //#define LIBRARY	   "modules"

	   // The source containing main():
       #define MAIN		   "main.cc"

	   //  The extension of object modules:
       #define OBJ_EXT		   ".o"

	   // If a parser must be generated define the subdirectory containing the
	   // parser’s specification file
       #define PARSER_DIR	   ""

	   // Specify additional grammar specification files using patterns
	   // these files are (in)directly included by PARSSPEC. Specify patterns
	   // relative to PARSER_DIR
       //#define PARSFILES	     ""

	   // Flags to provide PARSGEN with:
       #define PARSFLAGS	   "-V"

	   // What is the program generating a parser?
       #define PARSGEN		   "bisonc++"

	   // Name of the file generated by the parser generator containing the
	   // parser function
       #define PARSOUT		   "parse.cc"

	   // What is the grammar specification file?
       #define PARSSPEC		   "grammar"

	   // Uncomment to relink the binary, even when no sources were changed
       //#define REFRESH

	   // If a lexical scanner must be generated: the subdirectory containing
	   // the scanner’s specification file.
       #define SCANNER_DIR	   ""

	   // Specify additional lexer specification files using patterns
	   // these files are (in)directly included by SCANSPEC
       //#define SCANFILES	      ""

	   // Flags to provide SCANGEN with:
       #define SCANFLAGS	   ""

	   // What is the program generating the lexical scanner?
       #define SCANGEN		   "flexc++"

	   // Name of the file generated by the lexical scanner
       #define SCANOUT		   "lex.cc"

	   // Name of the lexical scanner specification file
       #define SCANSPEC		   "lexer"

	   // Uncomment to construct a shared library
       //#define SHARED

	   // When creating a shared library:
	   // Specify the names of any libraries and library paths that are required
	   // by the shared library. E.g., if a library is found in /usr/lib/special
	   // use "-L/usr/lib/special -lspecial" if the name of the library is
	   // libspecial.so
	   // The /lib and /usr/lib paths are usually predefined and need not be
	   // specified
       #define SHAREDREQ	   ""

	   // The pattern locating sources in a directory:
       #define SOURCES		   "*.cc"

	   // Directory below this directory to contain temporary results
       #define TMP_DIR		   "tmp"

	   // Uncomment to use the ALL facility and a class dependency setup in the
	   // CLASSES file. When a directory contains a file ALL (optionally rename
	   // this filename by providing an alternative name) then all its sources
	   // and all sources of all classes depending on it are also compiled.
	   // Class dependencies are indicated by the class name (as the first
	   // word on a line) optionally followed by additional class names, which
	   // are the classes directly depending on the line’s first class name.
       //#define USE_ALL	     "a"

	   // should commands be echoed (ON) or not (OFF) ?
       #define USE_ECHO		     ON

	   //  Use the VERSION file
       #define USE_VERSION

	   // #define DEFCOM "program" (or "library") may be added (by, e.g.,
	   // icmstart)

SEE ALSO
       icmake(1), icmconf(7), icmstart(1), icmstart.rc(7)

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.7.22.01.tar.gz		   1992-2015			   icmbuild(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net