Blame ChangeLog

Packit b40e2e
ChangeLog of MCPP and its accompanying Validation Suite
Packit b40e2e
Packit b40e2e
2008/11/30  kmatsui
Packit b40e2e
        * V.2.7.2
Packit b40e2e
        * Enabled some CPU-specific predefined macros in compiler-
Packit b40e2e
        independent-build as well as compiler-specific-build, because
Packit b40e2e
        there are some occasions which require those macros when we use
Packit b40e2e
        some compiler system's header files.  Created init_cpu_macro().
Packit b40e2e
        (configure.ac, noconfig.H, configed.H, main.c, system.c)
Packit b40e2e
        * Enabled -m32 and -m64 options even on 32-bits systems and on
Packit b40e2e
        compiler-independent-build, when the OS is UNIX-like one.  These
Packit b40e2e
        options change some predefined macros.  (system.c)
Packit b40e2e
        * Made -z option to output #include lines themselves.  (system.c)
Packit b40e2e
        * Fixed a bug of source line numbering in library-build.  (by
Packit b40e2e
        Dwayne Boone) (main.c)
Packit b40e2e
        * Fixed a few minor bugs.
Packit b40e2e
        * Dropped support for Borland C 4.0.
Packit b40e2e
        * Updated the shell-scripts, makefiles and difference files, and
Packit b40e2e
        revised some mistakes.
Packit b40e2e
        * Updated the documents.
Packit b40e2e
Packit b40e2e
2008/05/19  kmatsui
Packit b40e2e
        * V.2.7.1
Packit b40e2e
        * Fixed a bug of newline synchronization on -K option.  Created
Packit b40e2e
        sync_linenum().  (Thanks to Benjamin Smedberg) (directive.c)
Packit b40e2e
        * Made GCC-specific-build on x86_64 and ppc64 have two sets of
Packit b40e2e
        predefines for 32bit mode and 64bit mode, and implemented -m32
Packit b40e2e
        and -m64 options.  (Thanks to Benjamin Smedberg) (configure.ac,
Packit b40e2e
        set_mcpp.sh, system.c)
Packit b40e2e
        * Stopped to use freopen() so that a main program which links
Packit b40e2e
        libmcpp can use stdin, stdout and stderr.  (by Benoit Foucher)
Packit b40e2e
        (main.c)
Packit b40e2e
        * Fixed a bug of file-handle leak on -MD and -MF options.
Packit b40e2e
        (Thanks to Masashi Fujita) (system.c)
Packit b40e2e
        * Added ports to Vicual C++ 6.0 and Borland C++ 5.9 (aka C++
Packit b40e2e
        Builder 2007).  (by Dwayne Boone) (vc6.dif, bc59.dif, eval.c)
Packit b40e2e
        * Revised declaration of stpcpy().  (internal.H)
Packit b40e2e
        * Split mcpp_out.h from mcpp_lib.h.
Packit b40e2e
        * Made library-build install also an mcpp executable and minimal
Packit b40e2e
        documents as well as libmcpp for a convenience of library
Packit b40e2e
        package.  Created main_mcpplib.c.  Made all the binary packages
Packit b40e2e
        library-build.  (by Yutaka Niibe and kmatsui) (Makefile.am, src/
Packit b40e2e
        Makefile.am)
Packit b40e2e
        * Split config/cygwin_root and config/mingw_root from
Packit b40e2e
        configure.ac to avoid a trouble of backslash character handling
Packit b40e2e
        on some version of bash.  (Thanks to Aleksandar Samardzic)
Packit b40e2e
        * Changed autoconf 2.59 to 2.61 and automake 1.9.6 to 1.10.
Packit b40e2e
        * Updated the documents accordingly.
Packit b40e2e
Packit b40e2e
2008/03/23  kmatsui
Packit b40e2e
        * V.2.7
Packit b40e2e
        * Created macro notification mode, implemented -K option and '#
Packit b40e2e
        pragma MCPP debug macro_call' sub-directive to enable this mode
Packit b40e2e
        on STD mode.  Created get_src_location(), print_macro_inf(),
Packit b40e2e
        print_macro_arg(), close_macro_inf(), chk_magic_balance(),
Packit b40e2e
        remove_magics(), some MAC_* macros to define magic characters,
Packit b40e2e
        struct LINE_COL, MACRO_INF.  Revised many functions.
Packit b40e2e
        (Specifications mostly by Taras Glek, partly by Samuel,
Packit b40e2e
        implemented mostly by kmatsui and partly by Taras Glek and
Packit b40e2e
        Samuel).  (internal.H, main.c, directive.c, eval.c, expand.c,
Packit b40e2e
        support.c, system.c)
Packit b40e2e
        * Created -k option to keep horizontal white spaces as they are
Packit b40e2e
        and convert comment to spaces of the same length on STD mode.
Packit b40e2e
        (Specs by Taras Glek, implemented by kmatsui).  (internal,H,
Packit b40e2e
        main.c, directive.c, mbchar.c, support.c)
Packit b40e2e
        * Implemented GCC2-spec variadic macro on STD mode in GCC-
Packit b40e2e
        specific-build.  (by Taras Glek and kmatsui).  (directive.c)
Packit b40e2e
        * Enabled GCC-like buggy handling of macro containing 'defined'
Packit b40e2e
        token in #if directive on GCC-specific-build.  (by Taras Glek).
Packit b40e2e
        (expand.c)
Packit b40e2e
        * Reordered initialization steps and enabled undefining of not-
Packit b40e2e
        Standard-required predefined macros.  Created undef_macros().
Packit b40e2e
        Removed undef_a_predef().  (main.c, system.c)
Packit b40e2e
        * Enabled non-conforming predefined macros such as 'linux' by
Packit b40e2e
        default on GCC-specific-build for compatibility with GCC.
Packit b40e2e
        Removed undef_gcc_macros().  Created DEF_NOARGS_* macros for
Packit b40e2e
        diagnostics sake.  (internal.H, system.c)
Packit b40e2e
        * Fixed a bug of file searching failure when a file is specified
Packit b40e2e
        by relative path in -include option.  Split is_full_path() from
Packit b40e2e
        open_include().  (thanks to Benjamin Smedberg) (system.c)
Packit b40e2e
        * Fixed a bug of mcpplib initialization which caused problem on
Packit b40e2e
        CygWIN.  (main.c, system.c, lib.c)
Packit b40e2e
        * Fixed a bug of unterminated source file handling.  (thanks to
Packit b40e2e
        Phil Knight) (support.c)
Packit b40e2e
        * Made norm_path() check existence of directory/file before
Packit b40e2e
        normalization.  As its results, non-existent directory specified
Packit b40e2e
        by -I option was disabled, "non-existent/../existent" was judged
Packit b40e2e
        as non-existent before wrongly normalizing to "existent", and #
Packit b40e2e
        include "directory" was made not to open.  Created norm_dir().
Packit b40e2e
        (thanks to Taras Glek and Dave Mandelin) (system.c)
Packit b40e2e
        * Stopped to convert path-list on Windows to lowercase-letters.
Packit b40e2e
        Changed path-list comparing function on Windows from strcmp() to
Packit b40e2e
        strcasecmp() or stricmp().  (system.c)
Packit b40e2e
        * Changed allocation of buffer for -M* options and incdir[],
Packit b40e2e
        fnamelist[], once_list[] from fixed size to dynamically
Packit b40e2e
        enlarging ones.  (system.c)
Packit b40e2e
        * Made #line output for GCC-specific-build closer to GCC.
Packit b40e2e
        Changed FILEINFO and DEFBUF struct, moved sharp() from main.c to
Packit b40e2e
        system.c, revised many functions.  (system.c, support.c, main.c,
Packit b40e2e
        directive.c)
Packit b40e2e
        * Absorbed lib.c into system.c.  Renamed getopt() to mcpp_getopt
Packit b40e2e
        (), also variables opt* to mcpp_opt*, and made static in order
Packit b40e2e
        to prevent linking of glibc getopt().  (thanks to Dwayne Boone)
Packit b40e2e
        * Fixed a bug of UTF-8 multibyte character handling, enabled 4-
Packit b40e2e
        bytes long sequences, and enabled checking of overlong sequences
Packit b40e2e
        and UTF-16 surrogate pairs.  (by Matt Wozniski) (mbchar.c,
Packit b40e2e
        support.c)
Packit b40e2e
        * Fixed a bug of tokenization in KR and OLD modes.  (support.c)
Packit b40e2e
        * Changed FILENAME_MAX to PATH_MAX and FILENAMEMAX to PATHMAX,
Packit b40e2e
        because FILENAME_MAX of some systems are too short.  (thanks to
Packit b40e2e
        Dwayne Boone)
Packit b40e2e
        * Bundled some variables into structs (std_limits, option_flags,
Packit b40e2e
        etc.).  Tidied up the sources removing unused codes, rewriting
Packit b40e2e
        old comments.  (most of the sources)
Packit b40e2e
        * Ported to Mac OS X / Apple-GCC.  Enabled searching of
Packit b40e2e
        "framework" directories for #include.  Enabled to search "header
Packit b40e2e
        map" file.  Enabled #import, which is #include with
Packit b40e2e
        unconditional "once only" feature.  Implemented -F, -arch,
Packit b40e2e
        -isysroot options.  Created init_framework(), search_framework(),
Packit b40e2e
        search_subdir(), search_header_map(), hmap_hash().  (system.c,
Packit b40e2e
        directive.c, set_mcpp.sh, unset_mcpp.sh, configure.ac, src/
Packit b40e2e
        Makefile.am)
Packit b40e2e
        * Ported to Visual C++ 2008.  Enabled '$' in identifier by
Packit b40e2e
        default in Visual-C-specific-build and GCC-specific-build.
Packit b40e2e
        (system.H, internal.H, support.c, system.c)
Packit b40e2e
        * Added documentation on source checking of firefox 3.0pre.
Packit b40e2e
        Added comments on system headers in Mac OS X.  (mcpp-manual.html)
Packit b40e2e
        * Updated all the documents.  (mainly by kmatsui, partly by
Packit b40e2e
        Taras Glek)
Packit b40e2e
Packit b40e2e
2007/05/19  kmatsui
Packit b40e2e
        * V.2.6.4
Packit b40e2e
        * Fixed memory leaks in subroutine-build related to file->
Packit b40e2e
        filename, sharp_filename and others.  (by Juergen Mueller and
Packit b40e2e
        kmatsui).  (main.c, directive.c, support.c, system.c)
Packit b40e2e
        * Revised expanding() and expanding_macro[] to fix memory leaks.
Packit b40e2e
        Created clear_exp_mac().  (internal.H, expand.c, support.c)
Packit b40e2e
        * Fixed a bug of accessing non-allocated memory.  (by isr).
Packit b40e2e
        (support.c)
Packit b40e2e
        * Revised output of // comment by -C option.  Output // comment
Packit b40e2e
        as it is, not converting to /* */.  (thanks to Taras Glek).
Packit b40e2e
        (support.c)
Packit b40e2e
        * Changed output of line top white spaces in other than
Packit b40e2e
        POST_STANDARD mode to preserve them as they are, rather than
Packit b40e2e
        squeezing to one space, in order to make output more human-
Packit b40e2e
        readable.  (main.c, support.c)
Packit b40e2e
        * Removed the settings to be compiled with C++.  (configed.H,
Packit b40e2e
        noconfig.H, noconfig/*.mak)
Packit b40e2e
        * Updated version-info for shared-library-build from 0:0:0 to 0:
Packit b40e2e
        1:0.
Packit b40e2e
        * Changed installation directory of some documents in stand-
Packit b40e2e
        alone-and-compiler-independent-build by configure or by binary
Packit b40e2e
        packages.
Packit b40e2e
        * Updated the documents.  Note that cpp-test.html were not
Packit b40e2e
        updated.
Packit b40e2e
Packit b40e2e
2007/04/07  kmatsui
Packit b40e2e
        * V.2.6.3
Packit b40e2e
        * Fixed a bug of some #line directive handling which wrongly
Packit b40e2e
        affected #include path.  Added a new member for real file name
Packit b40e2e
        to struct FILEINFO, and made #line directive does not affect
Packit b40e2e
        real file name.  (internal.H, main.c, support.c, system.c)
Packit b40e2e
        * Enabled dereferencing of symbolic linked directory (as well as
Packit b40e2e
        file) of #include path-list and include directory.  Split
Packit b40e2e
        deref_syml() from norm_path().  (system.c)
Packit b40e2e
        * Revised again diagnostic messages for some macro expansions.
Packit b40e2e
        (internal.H, expand.c, support.c)
Packit b40e2e
        * Relaxed token checking and syntax checking in lang_asm mode.
Packit b40e2e
        (expand,c, support.c)
Packit b40e2e
        * Implemented GCC3-spec variadic macro for GCC-specific-build.
Packit b40e2e
        (internal.H, directive.c, expand.c)
Packit b40e2e
        * Added some predefined macro for GCC-specific-build.  (system.c)
Packit b40e2e
        * Revised output routines abstracting output device, and
Packit b40e2e
        implementing optional memory buffer output when built with
Packit b40e2e
        MCPP_LIB macro.  Created mcpp_lib.h, mcpp_lib_fputs(),
Packit b40e2e
        mcpp_lib_fputc(), mcpp_lib_fprintf(), mcpp_use_mem_buffers(),
Packit b40e2e
        mcpp_get_mem_buffer(), mcpp_set_out_func(),
Packit b40e2e
        mcpp_reset_def_out_func(), mem_putc(), mem_puts(),
Packit b40e2e
        append_to_buffer(), function pointers mcpp_fputs, mcpp_fputc,
Packit b40e2e
        mcpp_fprintf and some macros.  This update disabled compilation
Packit b40e2e
        by C++.  (All were contributed by Greg Kress and slightly
Packit b40e2e
        modified by kmatsui) (internal.H, main.c, directive.c, eval.c,
Packit b40e2e
        expand.c, mbchar.c, support.c, system.c, lib.c, mcpp_lib.h)
Packit b40e2e
        * Renamed some global names in order to lessen the possibility
Packit b40e2e
        of name collisions in subroutine-build.  Renamed the variables
Packit b40e2e
        mode, cplus, line, debug, type[] and work[] to mcpp_mode,
Packit b40e2e
        cplus_val, src_line, mcpp_debug, char_type[] and work_buf[]
Packit b40e2e
        respectively.  Renamed the functions install(), eval(), expand(),
Packit b40e2e
        get() and unget() to install_macro(), eval_if(), expand_macro(),
Packit b40e2e
        get_ch() and unget_ch() respectively.  (internal.H, main.c,
Packit b40e2e
        directive.c, eval.c, expand.c, mbchar.c, support.c, system.c)
Packit b40e2e
        * Added 'mcpplib' target to make subroutine (library) build in
Packit b40e2e
        configure.ac and noconfig/*.mak.
Packit b40e2e
        * Revised some other minor points.  (all sources)
Packit b40e2e
        * Changed default setting of noconfig.H to that of FreeBSD 6.* /
Packit b40e2e
        stand-alone / GCC 3.4.  (noconfig.H)
Packit b40e2e
        * Added documentation on source checking of glibc 2.4.  (mcpp-
Packit b40e2e
        manual.html)
Packit b40e2e
        * Abolished 'install-data' and 'uninstall-data' targets of
Packit b40e2e
        configured makefile.  On the other hand, made 'install' target
Packit b40e2e
        install also mcpp-manual.html.
Packit b40e2e
        * Provided stand-alone-and-compiler-independent-build binary
Packit b40e2e
        packages port, rpm, deb, zip and their corresponding source
Packit b40e2e
        packages.
Packit b40e2e
Packit b40e2e
2006/11/12  kmatsui
Packit b40e2e
        * V.2.6.2
Packit b40e2e
        * Renamed control.c as directive.c and renamed control() as
Packit b40e2e
        directive().
Packit b40e2e
        * Fixed a bug of #else handling in pre-Standard modes.
Packit b40e2e
        (directive.c)
Packit b40e2e
        * Fixed a bug of mcpp specific directives such as #debug or #
Packit b40e2e
        put_defines in pre-Standard modes.  (system.c)
Packit b40e2e
        * Fixed a bug of warning options for GCC-specific-builds.
Packit b40e2e
        (system.c)
Packit b40e2e
        * Fixed a bug of macro expansion timing in #include directive
Packit b40e2e
        line.  (system.c)
Packit b40e2e
        * Revised some other minor points, moved cur_file() from main.c
Packit b40e2e
        to system.c.  (main.c, eval.c, system.c)
Packit b40e2e
        * Revised diagnostic messages for some macro expansions.
Packit b40e2e
        (internal.H, expand.c, support.c)
Packit b40e2e
        * Fixed a bug of nested includes with relative paths.  (thanks
Packit b40e2e
        to Leo Savernik).  (system.c)
Packit b40e2e
        * Fixed memory leaks in routines related to normalizing path-
Packit b40e2e
        list.  (by Juergen Mueller).  (system.c)
Packit b40e2e
        * Added MCPP_LIB setting to use mcpp as a subroutine from other
Packit b40e2e
        main program.  Created init_main(), init_directive(), init_eval(),
Packit b40e2e
        init_support(), init_system(), init_lib(), clear_filelist() and
Packit b40e2e
        clear_symtable().  Created testmain.c as a sample source.  (all
Packit b40e2e
        were contributed by Juergen Mueller and slightly modified by
Packit b40e2e
        kmatsui).  (internal.H, main.c, directive.c, eval.c, expand.c,
Packit b40e2e
        support.c, system.c, lib.c)
Packit b40e2e
        * Changed the macro STAND_ALONE to INDEPENDENT.
Packit b40e2e
        * Changed the terminology of building methods in the documents.
Packit b40e2e
        (INSTALL, mcpp-porting.html, mcpp-manual.html)
Packit b40e2e
        * Rewrote and converted the text files in 'doc' and 'doc-jp'
Packit b40e2e
        directories into html files.
Packit b40e2e
        * Updated and corrected many points of the documents.
Packit b40e2e
Packit b40e2e
2006/08/12  kmatsui
Packit b40e2e
        * V.2.6.1
Packit b40e2e
        * Enabled automatic conversion from [CR+LF] to [LF].  (support.c)
Packit b40e2e
        * Set the limit of #include nesting to INCLUDE_NEST (default:
Packit b40e2e
        256) in order to prevent infinitely recursive #includes.
Packit b40e2e
        (system.H, system.c)
Packit b40e2e
        * Revised white space handling in <header with spaces.h> style
Packit b40e2e
        header-name which is defined by macro.  (system.c)
Packit b40e2e
        * Enabled -fworking-directory option for GCC-specific-build.
Packit b40e2e
        created put_info().  (system.c)
Packit b40e2e
        * Fixed a bug of macro definition.  (lib.c)
Packit b40e2e
        * Fixed a bug of '#pragma once' failure.  (by Greg Kress).
Packit b40e2e
        (system.c)
Packit b40e2e
        * Fixed some other minor bugs in sources.
Packit b40e2e
        * Revised path-list handling on CygWIN.  Enabled -mno-cygwin
Packit b40e2e
        option for CygWIN GCC-specific-build.  (configure.ac, noconfig.H,
Packit b40e2e
        system.c)
Packit b40e2e
        * Ported to MinGW.  Created cc1.c to be invoked from GCC and to
Packit b40e2e
        invoke mcpp or GCC's cc1/cc1plus from it, because MinGW GCC
Packit b40e2e
        rejects to invoke a shell-script even if it is named cc1 and
Packit b40e2e
        because MinGW does not support symbolic link.  (configure.ac,
Packit b40e2e
        src/Makefile.am, configed.H, noconfig.H, system.c)
Packit b40e2e
        * Fixed bugs in some noconfig/*.mak.
Packit b40e2e
        * Moved changelogs from the source files to ChangeLog and
Packit b40e2e
        ChangeLog.old.
Packit b40e2e
Packit b40e2e
2006/07/15  kmatsui
Packit b40e2e
        * V.2.6
Packit b40e2e
        * Integrated STANDARD mode and PRE_STANDARD mode into one
Packit b40e2e
        executable, differentiating the modes by the execution time
Packit b40e2e
        options.  (all the sources)
Packit b40e2e
        * Absorbed DEBUG, DEBUG_EVAL, OK_MAKE into default, OK_DIGRAPHS,
Packit b40e2e
        OK_PRAGMA_OP into default of STD and POST_STD mode, OK_TRIGRAPHS
Packit b40e2e
        into default of STD mode, OK_SIZE into default of KR and
Packit b40e2e
        OLD_PREP modes.  (all the sources)
Packit b40e2e
        * Changed --enable-maintainer-mode option of configure to
Packit b40e2e
        --enable-replace-cpp option which generates compiler-specific-
Packit b40e2e
        build of mcpp.  Made compiler-specific-build to be installed
Packit b40e2e
        only into a compiler-specific-directory.  (configure.ac, src/
Packit b40e2e
        Makefile.am)
Packit b40e2e
        * Made stand-alone-build independent from any compiler-systems.
Packit b40e2e
        It no longer requires GCC-specific header files.  (configure.ac,
Packit b40e2e
        configed.H, noconfig.H, system.c)
Packit b40e2e
        * Revised '#pragma once' and handling of include directories
Packit b40e2e
        list, judging a identity of directory and file by converting it
Packit b40e2e
        to absolute path, and dereferencing symbolic linked file.
Packit b40e2e
        (system.c)
Packit b40e2e
        * Revised #line output and its related problem at the end of an
Packit b40e2e
        included file.  (thanks to Jay Prakash).  (internal.H, support.c)
Packit b40e2e
        * Ported to GCC V.4.0, CygWIN 1.5.18, Visual C++ 2005 and LCC-
Packit b40e2e
        Win32 2006-03.  (noconfig.H, system.c)
Packit b40e2e
        * Added some options for Visual C++.  (system.c)
Packit b40e2e
        * Removed settings for pre-C90 compiler (string concatenation by
Packit b40e2e
        preprocessor, '\a' and '\v' handling, no unsigned long #if, no
Packit b40e2e
        Standard library functions, non-prototype declarations, no #
Packit b40e2e
        pragma).  (all the sources)
Packit b40e2e
        * Removed settings for MS-DOS compiler, DJGPP and Plan9.  (*.H,
Packit b40e2e
        system.c, mbchar.c)
Packit b40e2e
        * Removed the implementation of post_preproc() for pre-Standard
Packit b40e2e
        compiler.  Removed conv_esc(), is_last_esc(), conv2oct().
Packit b40e2e
        Removed HAVE_C_BACKSLASH_A and CONCAT_STRINGS macros.  (main.c)
Packit b40e2e
        * Degraded the diagnostic of #if expression from error to
Packit b40e2e
        warning, which only overflows the range of 'long / unsigned
Packit b40e2e
        long' and does not overflow the range of 'long long / unsigned
Packit b40e2e
        long long' in modes other than C99.  (eval.c)
Packit b40e2e
        * Enabled 'i64' ('ui64', 'i32', 'i16', etc.) suffixes for
Packit b40e2e
        integer, which are recognized when COMPILER is MSC or BORLANDC.
Packit b40e2e
        (eval.c)
Packit b40e2e
        * Renamed functions and some variables, created expand_init(),
Packit b40e2e
        according to integration of STANDARD and PRE_STANDARD modes.
Packit b40e2e
        (expand.c)
Packit b40e2e
        * Removed '#pragma MCPP include_next'.  (system.c)
Packit b40e2e
        * Created init_msc_macro(), parse_warn_level(), chk_opts(),
Packit b40e2e
        init_predefines(), init_std_defines(), do_prestd_directive().
Packit b40e2e
        Removed set_cplus(), mem_model().  (system.c)
Packit b40e2e
        * Removed Standard functions (memmove(), memcpy(), memcmp(),
Packit b40e2e
        strstr(), strcspn()).  (lib.c)
Packit b40e2e
        * Changed default setting of noconfig.H to FreeBSD 5.* / stand-
Packit b40e2e
        alone / GCC 3.4.  (noconfig.H)
Packit b40e2e
        * Renamed 'doc' directory as 'doc-jp' and renamed 'doc_eng' as
Packit b40e2e
        'doc'.
Packit b40e2e
        * Removed some manuscript files of mcpp-summary.pdf from the
Packit b40e2e
        distribution.
Packit b40e2e
        * Validation Suite: Revised a few testcases.
Packit b40e2e
        * Updated all the documents accordingly.
Packit b40e2e