icmake (7.21.01)

  * By default, ./icm_bootstrap no longer specifies -g when compiling icmake's
    sources. If you *want* to use the -g flag, define an environment variable
    CFLAGS. E.g., CFLAGS="-Wall -O2 -g".

  * Applied Colin Herbert's patches (to see Colin's patches use the prefix
    https://gist.github.com/ColinHebert/): 

    Removed the redundant definition of __STDC_VERSION__ from lexer.c:
        1377507/raw/545a60cb39105c80d97e543dc77e00ab7ecbb5ff/lexer.c.diff

    Removed the hard coded path to CONFDIR:
        1377533/raw/c7cb3f768deafa8c2e393bed1f5d4acd42edc7bd/icm_install.diff

  * The above changes were suggested by Florian Franzen. Thanks!

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 20 Jan 2014 11:00:27 +0100
        
icmake (7.21.00)

  * Repaired segfaults found in icmake, icm-exec, and icmun by Alexandre
    Reber.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 30 Jul 2013 16:49:58 +0200
    
icmake (7.20.00)

  * added missing '\n' to the strtok call in icmbuild's 'dependenciesOf'
    function

  * line continuation in CLASSES results in one line being counted in the
    icmbuild script.

  * Added suggestions by Johann 'Myrkraverk' Oskarsson about compiling icmake
    on solaris (in ./contributions/solaris)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 09 Mar 2013 14:48:45 +0100

icmake (7.19.00)

  * build scripts for constructing icmake now support the CC environment
    flags as well. CC defines the C-compiler to use.

  * icmbuild script's COMPILER and COMPILER_OPTIONS variables should be
    considered obsolete, and are overruled by 
        CXX and CXXFLAGS, defining the C++ compiler and flags
    or
        CC and CFLAGS, defining the C compiler and flags
    in that order.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 16 Jul 2012 15:39:52 +0200

icmake (7.18.00)

  * Fine-tuned icmbuild so that only used USE_ALL files are removed instead of
    all files named so

  * The initial program files installed by default by icmstart assume that the
    flexc++ scanner generator (0.93.00) and the bisonc++ parser generator (>=
    3.00.00) is available.

  * The documentation about class dependency handling was improved

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 22 Feb 2012 14:06:48 +0100

icmake (7.17.00)

  * Changed (mproved/repaired) the directory dependencies handling (as defined
    in CLASSES) by icmbuild.in; improved the readability of icmbuild's output.

  * Updated YEAR(S) information in VERSION and ./usr/share/icmake/version.cc
    to 2012.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 03 Jan 2012 17:39:28 +0100

icmake (7.16.01)

  * Removed erroneous -o from '-fPIC -o' in icmbuild at line 450 in
    icmbuild.in 

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 28 Sep 2011 20:41:33 +0200

icmake (7.16.00)

  * `icm_bootstrap' script now recognizes CFLAGS and LDFLAGS environment
    variables for, resp. gcc and ld flags. 

  * icmbuild script now correctly interprets class dependencies defined in
    CLASSES and correctly interprets USE_ALL (see `man icmconf') 

  * `icmbuild' script now recognizes (configurable) CXXFLAGS and LDFLAGS for,
    resp. g++ and ld flags. Default values are defined in the program's
    'icmconf' file.

  * By default the COMPILER setting now includes --std=c++0x and -Wall, 
    preventing accidental omission by CXXFLAGS. 

  * The default file name suggested for USE_ALL is 'a' (e.g., class/a)

  * Documentation was updated (in particular the `icmconf' man-page)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 24 Jun 2011 20:29:38 +0200

icmake (7.15.00)

  * AUTHOR, VERSION and YEAR removed from /etc/icmake, see icmstart(1)

  * Double installation of changelog.gz prevented

  * /usr/share/doc/icmake/mail.frank removed from the installation

  * icmstart.rc supports optional P and L flags for program and library
    only icmake project installations. See icmstart.rc(7)

  * Using standard x.yy.zz version number format

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 14 Feb 2011 20:56:28 +0100

icmake (7.14.1)

  * Added test for defined SHAREDREQ to icmbuild

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Mon, 17 Jan 2011 20:29:51 +0100

icmake (7.14.0)

  * Repaired segfault error caused by calling an underfined function
    (comp/callfun.c) 

  * Removed compiler warning about dangerous casts from comp/outcode.c and 
    comp/patchup.c by defining a union for char[2] and INT16, rather than
    casting the char[2] to INT16.

  * Defined icm_prepare, called from icm_bootstrap and rss/build to prepare
    the tmp/ directory

  * The separate 'build' icmake scripts were still expecting librss.a. Changed
    to the proper library name: libicrss.a

  * Modified the shared library construction function to use the linker flag
    --as-needed, repaired the 'defs' flag spelling (was: def), added the
    icmconf entry SHAREDREQ to contain the names and paths of libraries
    required by the shared library, and the shared library construction is now
    using COMPILER (rather than gcc) to construct the shared library with.

  * added the `ALL' facility to icmbuild, allowing the specification of a
    class dependency graph in the CLASSES file. 

  * Added the icmconf(7) man page

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 14 Jan 2011 13:19:59 +0100

icmake (7.13.1)

 * Manpages in release 7.13.0 were not refreshed. Now repaired.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sun, 03 Oct 2010 14:42:48 +0200

icmake (7.13.0)

 * the icmconf file has a (default not active) #define REFRESH that may be
   activated when a binary program is created. When active a new binary is
   always created even if no source was compiled. This may be useful when 
   the program uses a library that is actively under development and is
   frequently changed.

 * the icmbuild script offers the option -c doing a 'tput clear' (clear
   screen) just before starting the build process. The icmconf #define CLS, by
   default not active, accomplishes the same.

 * /etc/icmake/VERSION contains 2010

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 02 Oct 2010 15:52:09 +0200

icmake (7.12.5)

 * added missing test for modified SCANSPEC (lexer) file in
    scripts/icmbuild.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 23 Dec 2009 10:44:30 +0100

icmake (7.12.4)

  * repaired lacking directory recognition in scripts/icmstart.im
  * removed `return 0;' from usr/share/icmake/main.cc as 0 is returned by
    default 
  * replaced endl by `\n' in usr/share/icmake/usage.cc
  * changed the location of the main repository in make/about.c

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 22 Dec 2009 14:53:53 +0100

icmake (7.12.3)

  * applied the patch given in Debian bug report #537574

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 29 Jul 2009 13:22:13 +0200

icmake (7.12.2)

  * icmbuild  touches 'version.cc' only if it exists.

  * The built-in function 'gets()' will now remove a trailing \n as per the
    icmake man-page

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Fri, 17 Jul 2009 13:20:33 +0200

icmake (7.12.1)

  * icm-pp supports the #undef directive

  * updated icmake's release year to 1992-2009.

  * library construction contains code to create a shared library as a
    new option that can be specified in icmconf

  * the top-level directory has been reorganized. See INSTALL and QUICKINSTALL
    for details. Icmake's initial construction uses `icm_bootstrap' and
    prepares an icmake installation under ./tmp/

  * installation of (parts of) icmake constructed by `icm_bootstrap' is done
    using `icm_install'.

  * added `where-is-what' giving an overview of what the various top-level
    files and directories are for.

 * configuration files for icmstart are found in the following locations (in
   order, accepting the first file(s) found:
        (1) determined by -c 
        (2) in $HOME/.icmake 
        (3) found in /etc/default/icmake. 

  * the previously used `def/destinations' file is not used anymore.

  * the file `icmconf' has been modified (see icmbuild(1)), allowing, e.g.,
    multiple lexical scanner specification files.

  * documentation adapted.

  * new man-page: icmstart.rc(7).

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Tue, 14 Apr 2009 13:00:51 +0200

icmake (7.11.1)

  * Introduced a three-digit version number: major, minor and subreleases.

  * Updated icmbuild sources to 2008.

  * The Gnu g++ flags for the upcoming c++0x standard are now mentioned in
    icmconf. 

icmake (7.11)

  * Fixed missing dead[0] initialization in comp/icm-comp.c

    Fixed handling of C and C++ comment in strings in icm-pp: The preprocessor
    now keeps C/C++ comment in string/character constants in #defines allowing
    for constructions like #define PAT "dir/*" which in earlier versions
    resulted in an unterminated C comment error.

    The icmstart and icmbuild scripts are now bisonc++ >= 2.0.0 aware, and
    grambuild is now effectively superfluous (but still available)

    Added #define EXTENSION to def/destinations to allow easy compilation in
    cygwin environments

    The script icmscripts.sh can be used to recreate the icm-scripts in the
    bin/ subdirectory. Primarily useful for maintenance.

    The 'unix' script no longer by default constructs stripped versions of the
    binary programs, the install.sh by default installs unstripped
    binaries. The argument 'strip' may be provided to strip the binaries.

icmake (7.10)

  * Removed Superfluous #defines from icm.h

    #define values may extend over multiple lines, using the \ character as
    the last character on the line to indicate line-continuation. 
    
    Applied size_t where applicable, using unsigned otherwise to prevent
    problematic behavior on some 64 bit architectures. 

    Changed many old-style classic C parameter lists into ANSI C style
    parameter lists 

    Minor textual repairs to the manual pages.

    Added the option to compile with extensive compiler flags in the top-level
    build script.

    MSDOS is no longer suported by specific code. 

icmake (7.02)

  * Repaired a misconfiguration in the bootstrap.sh and install.sh scripts due
    to which the icmstart and icmbuild scripts weren't properly installed.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 21 Feb 2007 14:49:23 +0100

icmake (7.01)

  * The INSTALL file was updated. So were the scripts bootstrap (now named
    bootstrap.sh) and unix. Compilation warnings appearing on Mac OS-X were as
    good as possible removed, some old files and directories 
    were removed or placed in a directory of their own.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Wed, 07 Feb 2007 15:50:33 +0100

icmake (7.00)

  * The subdirectory examples is renamed to templates

        [Above change: Mon, 05 Feb 2007 16:09:46 +0100]

    Defines (#define) may use other #defined variables to determine their
    value. 

    icmake's sources may use hexadecimal constants (0xdead)

    global and local variables may be immediately initialized by constants
    and/or available functions. Variables cannot be used for the
    initialization. 

    execute() function repaired: it never succeeded due to invalid return
    value

    initial source may or may not have .im extension, as suggested in the 
    general usage info provided by icmake itself. If the specified initial
    source does not exist, an .im extension is attempted.

    The IM environment variable may contain several, `:'-delimited paths

    getenv() implemented: returns list: [0]: ok (or not), [1]: value of the
    environment variable

    strlen/strupr/strlwr now defined as rss-functions, no longer as macros

    strstr renamed to strfind. 

    substr() added, returning a substring from an existing string.

    (f)printf() now have int-return values (instead of undefined)

    icmake manual page rewritten

    added icmbuild script for general program maintenance
    added icmbuild manual page

    added icmstart script to start an icmake maintenance project using
    icmbuild 
    added icmstart manual page

    the `unix' script will regenerate the parser and the lexical scanner if
    their specification files have changed.

        [Above changes: Tue, 21 Sep 2006 14:31:43 +0200]

    icmcomp uses a resizing rather than a fixed sized buffer to store strings
    found in an icmake script (used to be a fixed-sized buffer of 100 chars,
    causing icmcomp to segfault with, e.g., long option lists)

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 18 Nov 2006 10:34:13 +0100

    The type `unsigned' was changed to `size_t' where appropriate
    Fixed some flaws in the `unix' script, and (??) added icm-exec.c to
    my local icmake svn repository

    Added icmstart script to start an icmake project in some subdir
    
    Global strings weren't initialized to empty strings. Now they are.

 -- Frank B. Brokken <f.b.brokken@rug.nl>  Sat, 04 Nov 2006 17:41:32 +0100

icmake (6.30)
    
    Debian patches up to 6.22-7 processed; more in general: the sources now
    compile free of warnings

    chdir("") now returns initial working directory

    Execution error on the powerpc repaired. Caused by strcmp() sometimes
    returning a non-zero value having its lowest 16 bits equal to zero. Since 
    icmake internally uses 16-bits int values, this results in a zero value
    following an int to int16 assignment. See, e.g.,  exec/string/compare.c

    During the process of repairing the above error, Icm-exec was completely
    rewritten. 

    Lintian warning about an error in the icmake.1 manual page repaired
    Lindian warning about the inappropriate executable mode of 
    examples/defines.im repaired.

    Newer versions of icmake programs operate fine on existing (older) binary
    scripts as long as icmake's major version isn't upgraded. Newer versions
    of binary icmake files remain to be inexecutable with older icmake
    versions. 
    
    PRE-ANNOUNCING VERSION 7.00:

    A major upgrade (to version 7.00) will be released soon. As a prelude: it
    will define new built-in functions: getenv() and substr() will be
    completely new, and strstr() will be replaced by the new function
    strfind(). Existing scripts defining getenv(), substr() and/or strfind()
    should rename these functions to, e.g., my_getenv() (and comparable) or
    (possibly) remove these definitions and use the new built-in functions.

    The distiction between distribution version and program version (see
    below) is removed. All programs will have the same version as the
    distribution. 

NOTE:   The version referred to here is the version of the distribution,
        not of the icmake programs.

6.22    Compiler warnings and the use of gets() removed from the sources
        All programs now use the same version, which is defined in 
        version.c, which is defined in the rss.
        Standard manpage (icmake.1) included in the distribution.
    
6.21    Elf binaries for unix

6.20    Unix-icmake accepts the -t flag, to specify a temporary binary-
        icmake file. Allowing in unix-environments the riddance of the
        permanent bim-file. The temporary binary makefile will --in this
        case-- get the process-id for its extension.

6.18 - 6.19: Not distributed.

6.17b   DOS-distribution only: Dependencies on icce.h and sicce.lib
    removed from the distribution. Programs are *not* affected by
    this distribution.
    
6.17    Comment accepted in #define directives,
        Trailing info on #include lines ignored,
    Minor changes to documentation files.

6.17    This is as far as our memory reaches: the log of changes before
        this distribution are lost to future generations...
        This release never made sunsite or tsx-11. Only ftp.icce.rug.nl
    got it, and two sub-releases beyond.


    
    
