cpputest-4.0/000755 000765 000024 00000000000 13663444567 014200 5ustar00basvoddestaff000000 000000 cpputest-4.0/generated/000755 000765 000024 00000000000 13663444566 016135 5ustar00basvoddestaff000000 000000 cpputest-4.0/install-sh000755 000765 000024 00000036435 13663176420 016205 0ustar00basvoddestaff000000 000000 #!/bin/sh # install - install a program, script, or datafile scriptversion=2018-03-11.20; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dstbase=`basename "$src"` case $dst in */) dst=$dst$dstbase;; *) dst=$dst/$dstbase;; esac dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi case $dstdir in */) dstdirslash=$dstdir;; *) dstdirslash=$dstdir/;; esac obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) # Note that $RANDOM variable is not portable (e.g. dash); Use it # here however when possible just to lower collision chance. tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 # Because "mkdir -p" follows existing symlinks and we likely work # directly in world-writeable /tmp, make sure that the '$tmpdir' # directory is successfully created first before we actually test # 'mkdir -p' feature. if (umask $mkdir_umask && $mkdirprog $mkdir_mode "$tmpdir" && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. test_tmpdir="$tmpdir/a" ls_ld_tmpdir=`ls -ld "$test_tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=${dstdirslash}_inst.$$_ rmtmp=${dstdirslash}_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && { test -z "$stripcmd" || { # Create $dsttmp read-write so that cp doesn't create it read-only, # which would cause strip to fail. if test -z "$doit"; then : >"$dsttmp" # No need to fork-exec 'touch'. else $doit touch "$dsttmp" fi } } && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cpputest-4.0/platforms/000755 000765 000024 00000000000 13663444566 016206 5ustar00basvoddestaff000000 000000 cpputest-4.0/configure.ac000644 000765 000024 00000066065 13663444073 016473 0ustar00basvoddestaff000000 000000 AC_PREREQ([2.68]) AC_INIT([CppUTest], [4.0], [https://github.com/cpputest/cpputest]) AC_CONFIG_AUX_DIR([.]) AM_INIT_AUTOMAKE([subdir-objects]) AC_CONFIG_SRCDIR([src/CppUTest/Utest.cpp]) AC_CONFIG_HEADERS([config.h]) AX_PREFIX_CONFIG_H(generated/CppUTestGeneratedConfig.h) AC_CONFIG_FILES([cpputest.pc]) AC_CONFIG_MACRO_DIR([m4]) AC_LIBTOOL_DLOPEN AC_PROG_LIBTOOL AC_CANONICAL_HOST default_use_std_cpp=yes case "x$build_os" in *darwin*) AC_SUBST([CPPUTEST_ON_MACOSX], [yes]) ;; *mingw*) default_use_std_cpp=no ;; esac AC_PROG_CC AC_PROG_CPP AC_PROG_CXX AC_PROG_LN_S AC_PROG_MAKE_SET AM_PROG_CC_C_O AM_SILENT_RULES ACX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS"]) AX_COMPILER_VERSION # This additional -lpthread was added due to a bug on gcc for MacOSX: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42159 # According to the bug report, a workaround is to link -lpthread. Even the ACX_PTHREAD doesn't do that, so we add an # additional check if that it possible, and if it is, then we link pthread saved_libs="$LIBS" LIBS=-lpthread AC_MSG_CHECKING([if we can link -lpthread to work around a gcc bug (on MacOSX)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); HACK_TO_USE_PTHREAD_LIBS=" -lpthread"], [AC_MSG_RESULT([no])]) LIBS="$saved_libs $HACK_TO_USE_PTHREAD_LIBS" AC_CHECK_HEADERS([stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h]) AC_C_INLINE AC_TYPE_INT16_T AC_TYPE_INT32_T AC_TYPE_INT64_T AC_TYPE_INT8_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_UINT8_T AC_TYPE_LONG_LONG_INT # Checks for library functions. AC_FUNC_FORK AC_CHECK_FUNCS([gettimeofday memset strstr strdup pthread_mutex_lock]) AC_CHECK_PROG([CPPUTEST_HAS_GCC], [gcc], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_CLANG], [clang], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_LCOV], [lcov], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_VALGRIND], [valgrind], [yes], [no]) AC_CHECK_PROG([CPPUTEST_HAS_DASH], [dash], [yes], [no]) # Checking for warning flags on the compiler saved_cflags="$CFLAGS" saved_cxxflags="$CXXFLAGS" saved_ldflags="$LDFLAGS" if test "x$USE_MAINTAINER_MODE" = "xyes"; then # FLag -Werror. CFLAGS=-Werror AC_MSG_CHECKING([whether CC and CXX supports -Werror]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS_STRICT="${CPPUTEST_CWARNINGFLAGS} -Werror"; CPPUTEST_CXXWARNINGFLAGS_STRICT="${CPPUTEST_CXXWARNINGFLAGS} -Werror" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" fi AC_LANG_PUSH([C++]) ##################################################################################### ##### C++ checks # FLag -std=c++1y CXXFLAGS="-Werror -std=c++1y" AC_MSG_CHECKING([whether CXX supports -std=c++1y]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP14FLAG="-std=c++1y" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag std=c++14 CXXFLAGS="-Werror -std=c++14" AC_MSG_CHECKING([whether CXX supports -std=c++14]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP14FLAG="-std=c++14" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag std=c++17 CXXFLAGS="-Werror -std=c++17" AC_MSG_CHECKING([whether CXX supports -std=c++17]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP17FLAG="-std=c++17" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag std=c++20 CXXFLAGS="-Werror -std=c++2a" AC_MSG_CHECKING([whether CXX supports -std=c++2a]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP20FLAG="-std=c++2a" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag std=c++20 CXXFLAGS="-Werror -std=c++20" AC_MSG_CHECKING([whether CXX supports -std=c++20]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP20FLAG="-std=c++20" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" ##################################################################################### ##### C++ version checks ### Checking for C++ version compiler flags # FLag -std=c++98 CXXFLAGS="-Werror -std=c++98" AC_MSG_CHECKING([whether CXX supports -std=c++98]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP98FLAG="-std=c++98" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -std=c++0x CXXFLAGS="-Werror -std=c++0x" AC_MSG_CHECKING([whether CXX supports -std=c++0x]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="-std=c++0x" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" CXXFLAGS="-Werror -std=c++11" AC_MSG_CHECKING([whether CXX supports -std=c++11]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="-std=c++11" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" CXXFLAGS="-Werror -stdlib=libc++" AC_MSG_CHECKING([whether CXX supports -stdlib=libc++]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]])], [AC_MSG_RESULT([yes]); CPPUTEST_CPP11FLAG="${CPPUTEST_CPP11FLAG} -stdlib=libc++" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++98-compat CXXFLAGS="-Werror -Wno-c++98-compat" AC_MSG_CHECKING([whether CXX supports -Wno-c++98-compat]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++98-compat" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++98-compat-pedantic CXXFLAGS="-Werror -Wno-c++98-compat-pedantic" AC_MSG_CHECKING([whether CXX supports -Wno-c++98-compat-pedantic]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++98-compat-pedantic" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++14-compat CXXFLAGS="-Werror -Wno-c++14-compat" AC_MSG_CHECKING([whether CXX supports -Wno-c++14-compat]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++14-compat" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wno-c++11-long-long. This must be on if it is available as otherwise long long is supported but causes a warning. CFLAGS="-Werror -Wno-c++11-long-long" AC_MSG_CHECKING([whether CC and CXX supports -Wno-c++11-long-long]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-c++11-long-long" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++11-long-long" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-long-long must be on for C. CFLAGS="-Werror -Wno-long-long" AC_MSG_CHECKING([whether CC and CXX supports -Wno-long-long]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-long-long" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-long-long"], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" ##################################################################################### ##### More of these warnings # FLag -Weverything. CFLAGS="-Werror -Weverything -Wno-unused-macros" AC_MSG_CHECKING([whether CC and CXX supports -Weverything]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Weverything"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Weverything" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wall. CFLAGS="-Werror -Wall" AC_MSG_CHECKING([whether CC and CXX supports -Wall]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wall"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wall" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wextra. CFLAGS="-Werror -Wextra" AC_MSG_CHECKING([whether CC and CXX supports -Wextra]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wextra"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wextra" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wshadow. CFLAGS="-Werror -Wshadow" AC_MSG_CHECKING([whether CC and CXX supports -Wshadow]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wshadow"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wshadow" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wswitch-default CFLAGS="-Werror -Wswitch-default" AC_MSG_CHECKING([whether CC and CXX supports -Wswitch-default]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-default"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-default" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wswitch-enum CFLAGS="-Werror -Wswitch-enum" AC_MSG_CHECKING([whether CC and CXX supports -Wswitch-enum]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-enum"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-enum" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wconversion CFLAGS="-Werror -Wconversion" AC_MSG_CHECKING([whether CC and CXX supports -Wconversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wconversion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wconversion" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -pedantic CFLAGS="-Werror -pedantic" AC_MSG_CHECKING([whether CC and CXX supports -pedantic]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -pedantic"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -pedantic" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wsign-conversion CFLAGS="-Werror -Wsign-conversion" AC_MSG_CHECKING([whether CC supports -Wsign-conversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wsign-conversion"], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" ##### C++ Warnings # FLag -Wsign-conversion (for CXX) AC_LANG_PUSH([C++]) CXXFLAGS="-Werror -Wsign-conversion" AC_MSG_CHECKING([whether CXX supports -Wsign-conversion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wsign-conversion"], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -Woverloaded-virtual CXXFLAGS="-Werror -Woverloaded-virtual" AC_MSG_CHECKING([whether CXX supports -Woverloaded-virtual]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Woverloaded-virtual" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP # FLag -Wstrict-prototypes CFLAGS="-Werror -Wstrict-prototypes" AC_MSG_CHECKING([whether CC supports -Wstrict-prototypes]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wstrict-prototypes" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" ##################################################################################### ##### Less of these warnings # # Disable some warnings as CppUTest has this and can't be prevented at the moment. # FLag -Wno-disabled-macro-expansion. CFLAGS="-Werror -Wno-disabled-macro-expansion" AC_MSG_CHECKING([whether CC and CXX supports -Wno-disabled-macro-expansion]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-disabled-macro-expansion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-disabled-macro-expansion" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-padded. CFLAGS="-Werror -Wno-padded" AC_MSG_CHECKING([whether CC and CXX supports -Wno-padded]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-padded"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-padded" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-reserved-id-macro. CFLAGS="-Werror -Wno-reserved-id-macro" AC_MSG_CHECKING([whether CC and CXX supports -Wno-reserved-id-macro]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-reserved-id-macro"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-reserved-id-macro" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" # FLag -Wno-keyword-macro. CFLAGS="-Werror -Wno-keyword-macro" AC_MSG_CHECKING([whether CC and CXX supports -Wno-keyword-macro]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-keyword-macro"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-keyword-macro" ], [AC_MSG_RESULT([no])]) CFLAGS="$saved_cflags" AC_LANG_PUSH([C++]) # FLag -Wno-global-constructors. CXXFLAGS="-Werror -Wno-global-constructors" AC_MSG_CHECKING([whether CXX supports -Wno-global-constructors]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-global-constructors" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -Wno-exit-time-destructors. CXXFLAGS="-Werror -Wno-exit-time-destructors" AC_MSG_CHECKING([whether CXX supports -Wno-exit-time-destructors]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-exit-time-destructors" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -Wno-weak-vtables. CXXFLAGS="-Werror -Wno-weak-vtables" AC_MSG_CHECKING([whether CXX supports -Wno-weak-vtables]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-weak-vtables" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" # FLag -Wno-old-style-cast. CXXFLAGS="-Werror -Wno-old-style-cast" AC_MSG_CHECKING([whether CXX supports -Wno-old-style-cast]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-old-style-cast" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ##################################################### ######## End warning section # FLag --coverage AC_LANG_PUSH([C++]) CXXFLAGS="-Werror --coverage" AC_MSG_CHECKING([whether CXX and the linker supports --coverage (broken in clang 3.3)]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); coverage_flag_supported="yes" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ###################################################### # Exception Handling # # Checking for strange exception handling behavior, related to bugs in compilers... AC_LANG_PUSH([C++]) # Can we use operator delete without exception handling specifier? (clang warns on this!) CXXFLAGS="-Werror" AC_MSG_CHECKING([whether CXX supports operator delete without exception handling specifier]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include \nvoid operator delete(void* mem);])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); UT_DELETE_MUST_HAVE_EXCEPTION_SPECIFIER="yes"]) CXXFLAGS="$saved_cxxflags" # Can we use operator new with exception specifier (g++4.7 on MacOSX is broken here) CXXFLAGS="-Werror" AC_MSG_CHECKING([whether CXX supports operator new with exception handling specifier]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include \nvoid* operator new(size_t size) throw(std::bad_alloc);;])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); UT_NEW_CANT_HAVE_EXCEPTION_SPECIFIER="yes"]) CXXFLAGS="$saved_cxxflags" # FLag -Wno-missing-exception-spec CXXFLAGS="-Werror -Wno-missing-exception-spec" AC_MSG_CHECKING([whether CXX supports -Wno-missing-exception-spec]) AC_COMPILE_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_CXX_NO_INC_WARNINGFLAGS="${CPPUTEST_CXX_NO_INC_WARNINGFLAGS} -Wno-missing-exception-spec" ], [AC_MSG_RESULT([no])]) CXXFLAGS="$saved_cxxflags" AC_LANG_POP ##### Linker checking. # # TBD! # Things that need to be fixed! # # The below code is checking for the -Qunused-arguments which is a linker flag. However, it says gcc supports it, while in fact, it doesn't. # As a workaround, we'll just check whether it is clang hardcoded, this is not in the automake spirit and will need to be fixed. # # LDFLAGS= # AC_MSG_CHECKING([whether LD supports -Qunused-arguments]) # AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" -Qunused-arguments" ], [AC_MSG_RESULT([no])]) # LDFLAGS="$saved_ldflags" AC_MSG_CHECKING([whether CXXLD supports -Qunused-arguments linker option]) OUTPUT_WHEN_CLANG_COMPILER=`${CXX} --version | grep clang` AM_CONDITIONAL([TEST_COMPILER_IS_CLANG], [ ! test -z "$OUTPUT_WHEN_CLANG_COMPILER]") AM_COND_IF([TEST_COMPILER_IS_CLANG], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} -Qunused-arguments"], [AC_MSG_RESULT([no])]; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING="${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} ") # Checking for options for creating map files LDFLAGS=" -Wl,-map,filename.map.txt" AC_MSG_CHECKING([whether LD supports -Wl,-map]) AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_LD_MAP_GENERATION=" -Wl,-map,filename.map.txt" ], [AC_MSG_RESULT([no])]) LDFLAGS="$saved_ldflags" # Different features AC_ARG_ENABLE([std-c], [AC_HELP_STRING([--disable-std-c], [disable the use of Standard C Library (warning: requires implementing Platforms/GccNoStdC) ])], [use_std_c=${enableval}], [use_std_c=yes]) AC_ARG_ENABLE([std-cpp], [AC_HELP_STRING([--disable-std-cpp], [disable the use of Standard C++ Library])], [use_std_cpp=${enableval}], [use_std_cpp=${default_use_std_cpp}]) AC_ARG_ENABLE([std-cpp98], [AC_HELP_STRING([--enable-std-cpp98], [enable the use of Standard C++ 98 (if the compiler supports that)])], [use_std_cpp98=${enableval}], [use_std_cpp98=no]) AC_ARG_ENABLE([std-cpp11], [AC_HELP_STRING([--enable-std-cpp11], [enable the use of Standard C++ 11 (if the compiler supports that)])], [use_std_cpp11=${enableval}], [use_std_cpp11=no]) AC_ARG_ENABLE([std-cpp14], [AC_HELP_STRING([--enable-std-cpp14], [enable the use of Standard C++ 14 (if the compiler supports that)])], [use_std_cpp14=${enableval}], [use_std_cpp14=no]) AC_ARG_ENABLE([std-cpp17], [AC_HELP_STRING([--enable-std-cpp17], [enable the use of Standard C++ 17 (if the compiler supports that)])], [use_std_cpp17=${enableval}], [use_std_cpp17=no]) AC_ARG_ENABLE([std-cpp20], [AC_HELP_STRING([--enable-std-cpp20], [enable the use of Standard C++ 20 (if the compiler supports that)])], [use_std_cpp20=${enableval}], [use_std_cpp20=no]) AC_ARG_ENABLE([cpputest-flags], [AC_HELP_STRING([--disable-cpputest-flags], [disable CFLAGS/CPPFLAGS/CXXFLAGS set by CppUTest])], [cpputest_flags=${enableval}], [cpputest_flags=yes]) AC_ARG_ENABLE([memory-leak-detection], [AC_HELP_STRING([--disable-memory-leak-detection], [disable memory leak detection])], [memory_leak_detection=${enableval}], [memory_leak_detection=yes]) AC_ARG_ENABLE([extensions], [AC_HELP_STRING([--disable-extensions], [disable CppUTest extension library])], [cpputest_ext=${enableval}], [cpputest_ext=yes]) AC_ARG_ENABLE([longlong], [AC_HELP_STRING([--disable-longlong], [disable support for long long type])], [use_longlong=${enableval}], [use_longlong=yes]) AC_ARG_ENABLE([generate-map-file], [AC_HELP_STRING([--enable-generate-map-file], [enable the creation of a map file])], [generate_map_file=${enableval}], [generate_map_file=no]) AC_ARG_ENABLE([coverage], [AC_HELP_STRING([--enable-coverage], [enable running with coverage])], [coverage=${enableval}], [coverage=no]) AC_ARG_ENABLE([sanitize-address], [AC_HELP_STRING([--enable-sanitize-address], [enable running with address sanitizer])], [sanitize_address=${enableval}], [sanitize_address=no]) ############################## Setting options ############################### AM_CONDITIONAL([INCLUDE_CPPUTEST_EXT], [test "x${cpputest_ext}" = xyes]) # Dealing with not having a Standard C library... (usually for Kernel development) if test "x${use_std_c}" = xno; then use_std_cpp=no memory_leak_detection=no CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -nostdinc" CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} -nostdlib" AC_DEFINE([STD_C_LIB_DISABLED], [1], [Standard C library disabled]) CPP_PLATFORM="GccNoStdC" else CPP_PLATFORM="Gcc" fi # Using standard C++ if test "x${use_std_cpp}" = xno; then AC_DEFINE([STD_CPP_LIB_DISABLED], 1, [Standard C++ library disabled]) if test "x${use_std_c}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -nostdinc++ ${CPPUTEST_CXX_NO_INC_WARNINGFLAGS}" # Since automake passes the CXXFLAGS to the linker, this will cause warnings with clang 3.2 (which become errors) CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING}" fi fi cpp_standard_used="default" # Using the C++98 standard? if test "x${use_std_cpp98}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP98FLAG}" cpp_standard_used="C++98" fi # Using the C++11 standard? if test "x${use_std_cpp11}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP11FLAG}" cpp_standard_used="C++11" fi # Using the C++14 standard? if test "x${use_std_cpp14}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP14FLAG}" cpp_standard_used="C++14" fi # Using the C++17 standard? if test "x${use_std_cpp17}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP17FLAG}" cpp_standard_used="C++17" fi # Using the C++20 standard? if test "x${use_std_cpp20}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP20FLAG}" cpp_standard_used="C++20" fi # Dealing with memory leak detection if test "x${memory_leak_detection}" = xno; then AC_DEFINE([MEM_LEAK_DETECTION_DISABLED], 1, [memory leak detection disabled]) else CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorNewMacros.h" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorMallocMacros.h" fi # Disabling long long support if test "x${use_longlong}" = xno; then AC_DEFINE([LONG_LONG_DISABLED], 1, [disable long long]) fi # Dealing with address sanitizer if test "x${sanitize_address}" = xyes; then CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} -fsanitize=address -fno-omit-frame-pointer" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -fsanitize=address -fno-omit-frame-pointer" CPPUTEST_LDFLAGS="${CPPUTEST_CXXFLAGS} -fsanitize=address -fno-omit-frame-pointer" fi # Generating map files. if test "x${generate_map_file}" = xyes; then CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_LD_MAP_GENERATION}" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.map.txt" fi if test "x${coverage_flag_supported}" = xyes; then if test "x${coverage}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} --coverage" CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} --coverage" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.gcda *.gcno" fi fi # GMock, check whether we can compile the GMock tests. AC_ARG_VAR([GMOCK_HOME], Directory where gmock is installed so the gmock tests can run) AC_MSG_CHECKING([for the availability of gmock via the GMOCK_HOME variable]) AM_CONDITIONAL([INCLUDE_GMOCKTESTS], [test -n "${GMOCK_HOME}"]) if test -n "${GMOCK_HOME}"; then AC_DEFINE([INCLUDE_GTEST_TESTS], 1, [Include the GTest-related tests in the build]) AC_ARG_VAR([GMOCK_HOME], [Location of the GMock]) if test -z "${GTEST_HOME}"; then GTEST_HOME=${GMOCK_HOME}/gtest fi CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I${GMOCK_HOME}/include -I${GTEST_HOME}/include -I${GTEST_HOME}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1 -DGMOCK_RENAME_MAIN=1" if test -e ${GMOCK_HOME}/lib/libgmock.la && test -e ${GTEST_HOME}/lib/libgtest.la; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/lib/libgmock.la ${GTEST_HOME}/lib/libgtest.la"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GTEST_HOME}/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GTEST_HOME}/libgtest.a"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GMOCK_HOME}/gtest/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GMOCK_HOME}/gtest/libgtest.a"; \ else \ AC_MSG_ERROR([ ------------------------------------- GMOCK_HOME was set, but couldn't find the compiled library. Did you compile it? -------------------------------------]); fi # In Travis, do not show warnings. The GTest warnings cause a log overflow that errors the build. Nice :) if test -n "${TRAVIS_BRANCH}"; then CPPUTEST_CWARNINGFLAGS="" CPPUTEST_CXXWARNINGFLAGS="" fi else # When we don't compile with GMock, we can be a bit stricter on warnings. CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} ${CPPUTEST_CWARNINGFLAGS_STRICT}" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} ${CPPUTEST_CXXWARNINGFLAGS_STRICT}" fi CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} ${CPPUTEST_CWARNINGFLAGS}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CXXWARNINGFLAGS}" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I ${srcdir}/include ${CPPUTEST_CPPWARNINGFLAGS}" if test "x${cpputest_flags}" = xno; then CPPUTEST_CFLAGS="" CPPUTEST_CXXFLAGS="" CPPUTEST_CPPFLAGS="" fi ############################## Values ######################################## ### All files in git if test -e "${srcdir}/.git"; then ALL_FILES_IN_GIT="`git --git-dir=${srcdir}/.git ls-files | tr '[ \n]' ' '`" fi # Variables to substitute AC_SUBST([CPP_PLATFORM]) AC_SUBST([INCLUDE_CPPUTEST_EXT]) # Replacement of tool flags AC_SUBST([CPPUTEST_CFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CFLAGS]) AC_SUBST([CPPUTEST_CXXFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CXXFLAGS]) AC_SUBST([CPPUTEST_CPPFLAGS]) AC_SUBST([CPPUTEST_ADDITIONAL_CPPFLAGS]) AC_SUBST([CPPUTEST_LDADD]) AC_SUBST([CPPUTEST_LDFLAGS]) AC_SUBST([MOSTLYCLEANFILES]) AC_SUBST([CPPUTEST_HAS_GCC]) AC_SUBST([CPPUTEST_HAS_CLANG]) AC_SUBST([ALL_FILES_IN_GIT]) LT_INIT AC_CONFIG_FILES([Makefile]) AC_OUTPUT echo \ "---------------------------------------------------------------- ${PACKAGE_NAME} Version ${PACKAGE_VERSION} Current compiler options: CC: ${CC} CXX: ${CXX} CC version: ${ax_cv_c_compiler_version} CXX version: ${ax_cv_cxx_compiler_version} LD: ${LD} Default CFLAGS: ${CFLAGS} Default CXXFLAGS: ${CXXFLAGS} CppUTest CFLAGS: ${CPPUTEST_CFLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXXFLAGS} CppUTest CPPFLAGS: ${CPPUTEST_CPPFLAGS} CppUTest LDFLAGS: ${CPPUTEST_LDFLAGS} CppUTest LIB: ${LIBS} Features configured in ${PACKAGE_NAME}: C++ standard used: ${cpp_standard_used} Memory Leak Detection: ${memory_leak_detection} Compiling extensions: ${cpputest_ext} Use Long Long (if available): ${use_longlong} Disable CppUTest compile/link flags: ${cpputest_flags} Address sanitizer: ${sanitize_address} Using Standard C++ Library: ${use_std_cpp} Using Standard C Library: ${use_std_c} Generating map file: ${generate_map_file} Compiling w coverage info: ${coverage} ----------------------------------------------------------------" cpputest-4.0/docker/000755 000765 000024 00000000000 13663444566 015446 5ustar00basvoddestaff000000 000000 cpputest-4.0/INSTALL000644 000765 000024 00000036614 13663176420 015231 0ustar00basvoddestaff000000 000000 Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. cpputest-4.0/ltmain.sh000644 000765 000024 00001170771 13663176414 016027 0ustar00basvoddestaff000000 000000 #! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2014-01-03.01 # libtool (GNU libtool) 2.4.6 # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6 package_revision=2.4.6 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2015-01-20.17; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # Copyright (C) 2004-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # As a special exception to the GNU General Public License, if you distribute # this file as part of a program or library that is built using GNU Libtool, # you may include this file under the same distribution terms that you use # for the rest of that program. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1+=\\ \$func_quote_for_eval_result" }' else func_append_quoted () { $debug_cmd func_quote_for_eval "$2" eval "$1=\$$1\\ \$func_quote_for_eval_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_for_eval ARG... # -------------------------- # Aesthetically quote ARGs to be evaled later. # This function returns two values: # i) func_quote_for_eval_result # double-quoted, suitable for a subsequent eval # ii) func_quote_for_eval_unquoted_result # has all characters that are still active within double # quotes backslashified. func_quote_for_eval () { $debug_cmd func_quote_for_eval_unquoted_result= func_quote_for_eval_result= while test 0 -lt $#; do case $1 in *[\\\`\"\$]*) _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;; *) _G_unquoted_arg=$1 ;; esac if test -n "$func_quote_for_eval_unquoted_result"; then func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg" else func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg" fi case $_G_unquoted_arg in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_quoted_arg=\"$_G_unquoted_arg\" ;; *) _G_quoted_arg=$_G_unquoted_arg ;; esac if test -n "$func_quote_for_eval_result"; then func_append func_quote_for_eval_result " $_G_quoted_arg" else func_append func_quote_for_eval_result "$_G_quoted_arg" fi shift done } # func_quote_for_expand ARG # ------------------------- # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { $debug_cmd case $1 in *[\\\`\"]*) _G_arg=`$ECHO "$1" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;; *) _G_arg=$1 ;; esac case $_G_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") _G_arg=\"$_G_arg\" ;; esac func_quote_for_expand_result=$_G_arg } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_for_expand "$_G_cmd" eval "func_notquiet $func_quote_for_expand_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_for_expand "$_G_cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # Set a version string for this script. scriptversion=2014-01-07.03; # UTC # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # Copyright (C) 2010-2015 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Please report bugs or propose patches to gary@gnu.org. ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# warranty; '. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # to the main code. A hook is just a named list of of function, that can # be run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of functions called by FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It is assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook funcions.n" ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do eval $_G_hook '"$@"' # store returned options list back into positional # parameters for next 'cmd' execution. eval _G_hook_result=\$${_G_hook}_result eval set dummy "$_G_hook_result"; shift done func_quote_for_eval ${1+"$@"} func_run_hooks_result=$func_quote_for_eval_result } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list in your hook function, remove any # options that you action, and then pass back the remaining unprocessed # options in '_result', escaped suitably for # 'eval'. Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # func_quote_for_eval ${1+"$@"} # my_options_prep_result=$func_quote_for_eval_result # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # # Note that for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # ;; # *) set dummy "$_G_opt" "$*"; shift; break ;; # esac # done # # func_quote_for_eval ${1+"$@"} # my_silent_option_result=$func_quote_for_eval_result # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # # func_quote_for_eval ${1+"$@"} # my_option_validation_result=$func_quote_for_eval_result # } # func_add_hook func_validate_options my_option_validation # # You'll alse need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd func_options_prep ${1+"$@"} eval func_parse_options \ ${func_options_prep_result+"$func_options_prep_result"} eval func_validate_options \ ${func_parse_options_result+"$func_parse_options_result"} eval func_run_hooks func_options \ ${func_validate_options_result+"$func_validate_options_result"} # save modified positional parameters for caller func_options_result=$func_run_hooks_result } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propogate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before # returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} # save modified positional parameters for caller func_options_prep_result=$func_run_hooks_result } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd func_parse_options_result= # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} # Adjust func_parse_options positional parameters to match eval set dummy "$func_run_hooks_result"; shift # Break out of the loop if we already parsed every option. test $# -gt 0 || break _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) test $# = 0 && func_missing_arg $_G_opt && break case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} func_parse_options_result=$func_quote_for_eval_result } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE # save modified positional parameters for caller func_validate_options_result=$func_run_hooks_result } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables after # splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} test "x$func_split_equals_lhs" = "x$1" \ && func_split_equals_rhs= }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /(C)/!b go :more /\./!{ N s|\n# | | b more } :go /^# Written by /,/# warranty; / { s|^# || s|^# *$|| s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| p } /^# Written by / { s|^# || p } /^warranty; /q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func__fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Pass back the list of options. func_quote_for_eval ${1+"$@"} libtool_options_prep_result=$func_quote_for_eval_result } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;; esac done # save modified positional parameters for caller func_quote_for_eval ${1+"$@"} libtool_parse_options_result=$func_quote_for_eval_result } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote_for_eval ${1+"$@"} libtool_validate_options_result=$func_quote_for_eval_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_for_eval "$libobj" test "X$libobj" != "X$func_quote_for_eval_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" func_append install_prog "$func_quote_for_eval_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" func_append install_prog " $func_quote_for_eval_result" if test -n "$arg2"; then func_quote_for_eval "$arg2" fi func_append install_shared_prog " $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_for_eval "$install_override_mode" func_append install_shared_prog " -m $func_quote_for_eval_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=\"$qECHO\" fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $func_quote_for_eval_result" func_append compiler_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_for_eval "$flag" func_append arg " $wl$func_quote_for_eval_result" func_append compiler_flags " $wl$func_quote_for_eval_result" func_append linker_flags " $func_quote_for_eval_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -stdlib=* select c++ std lib with clang -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_for_eval "$arg" arg=$func_quote_for_eval_result fi ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg=$func_quote_for_eval_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: cpputest-4.0/CMakeLists.txt000644 000765 000024 00000020305 13663444073 016730 0ustar00basvoddestaff000000 000000 project(CppUTest) set(CppUTest_version_major 4) set(CppUTest_version_minor 0) # 2.6.3 is needed for ctest support # 3.1 is needed for target_sources cmake_minimum_required(VERSION 3.1) ############### # Conan support ############### if (EXISTS "${CMAKE_BINARY_DIR}/conanbuildinfo.cmake") include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) message(STATUS "conan_basic_setup()") conan_basic_setup() endif() # Check for functions before setting a lot of stuff include(CheckFunctionExists) set (CMAKE_REQUIRED_INCLUDES "unistd.h") check_function_exists(fork HAVE_FORK) if(HAVE_FORK) add_definitions(-DCPPUTEST_HAVE_FORK) endif(HAVE_FORK) check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) if(HAVE_GETTIMEOFDAY) add_definitions(-DCPPUTEST_HAVE_GETTIMEOFDAY=1) endif(HAVE_GETTIMEOFDAY) check_function_exists(pthread_mutex_lock HAVE_PTHREAD_MUTEX_LOCK) if(HAVE_PTHREAD_MUTEX_LOCK) add_definitions(-DCPPUTEST_HAVE_PTHREAD_MUTEX_LOCK=1) endif(HAVE_PTHREAD_MUTEX_LOCK) check_function_exists(strdup HAVE_STRDUP) if(HAVE_STRDUP) add_definitions(-DCPPUTEST_HAVE_STRDUP=1) endif(HAVE_STRDUP) if (MINGW) # Apply workaround for MinGW timespec redefinition (pthread.h / time.h) include(CheckStructHasMember) check_struct_has_member("struct timespec" tv_sec time.h HAVE_STRUCT_TIMESPEC) if (HAVE_STRUCT_TIMESPEC) add_definitions(-D_TIMESPEC_DEFINED=1) endif() if (NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") # Apply workaround for static/shared libraries on MinGW C/C++ compiler # Issue occurs with CMake >= 3.9.0, it doesn't filter out gcc,gcc_s,gcc_eh from # the implicit library list anymore, so the C++ linker is getting passed the static # gcc_eh library since that's what the C linker uses by default. Only solution appears # to be to force static linkage. set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") endif() endif() option(STD_C "Use the standard C library" ON) option(STD_CPP "Use the standard C++ library" ON) option(CPPUTEST_FLAGS "Use the CFLAGS/CXXFLAGS/LDFLAGS set by CppUTest" ON) option(MEMORY_LEAK_DETECTION "Enable memory leak detection" ON) option(EXTENSIONS "Use the CppUTest extension library" ON) option(LONGLONG "Support long long" OFF) option(MAP_FILE "Enable the creation of a map file" OFF) option(COVERAGE "Enable running with coverage" OFF) option(C++11 "Compile with C++11 support" OFF) option(WERROR "Compile with warnings as errors" OFF) option(TESTS "Compile and make tests for the code?" ON) option(TESTS_DETAILED "Run each test separately instead of grouped?" OFF) option(TESTS_BUILD_DISCOVER "Build time test discover" ON) option(EXAMPLES "Compile and make exaples?" OFF) option(VERBOSE_CONFIG "Print configuration to stdout during generation" ON) if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING "What kind of build this is" FORCE) endif(NOT CMAKE_BUILD_TYPE) # Pkg-config file include(FindPkgConfig) set(CppUTest_PKGCONFIG_FILE cpputest.pc) set(CppUTestRootDirectory ${PROJECT_SOURCE_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CppUTestRootDirectory}/cmake/Modules) include("${CppUTestRootDirectory}/cmake/Modules/CppUTestConfigurationOptions.cmake") include(CTest) #include("${CppUTestRootDirectory}/cmake/Modules/CheckFunctionExists.cmake") include("${CppUTestRootDirectory}/cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake") include("${CppUTestRootDirectory}/cmake/Modules/CppUTestNormalizeTestOutputLocation.cmake") include(GNUInstallDirs) enable_testing() configure_file ( "${PROJECT_SOURCE_DIR}/config.h.cmake" "${PROJECT_BINARY_DIR}/generated/CppUTestGeneratedConfig.h" ) include_directories(${PROJECT_BINARY_DIR}) add_definitions(-DHAVE_CONFIG_H) include_directories(${CppUTestRootDirectory}/include) add_subdirectory(src/CppUTest) if (EXTENSIONS) add_subdirectory(src/CppUTestExt) endif (EXTENSIONS) if (TESTS) add_subdirectory(tests/CppUTest) if (EXTENSIONS) add_subdirectory(tests/CppUTestExt) endif (EXTENSIONS) endif (TESTS) if (EXAMPLES) add_subdirectory(examples) endif(EXAMPLES) set (INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}") set (LIB_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}") set (INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") # Pkg-config file. set (prefix "${CMAKE_INSTALL_PREFIX}") set (exec_prefix "\${prefix}") set (libdir "\${exec_prefix}/${LIB_INSTALL_DIR}") set (includedir "\${prefix}/${INCLUDE_INSTALL_DIR}") set (PACKAGE_VERSION "${CppUTest_version_major}.${CppUTest_version_minor}") configure_file (cpputest.pc.in ${CMAKE_CURRENT_BINARY_DIR}/${CppUTest_PKGCONFIG_FILE} @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${CppUTest_PKGCONFIG_FILE} DESTINATION ${LIB_INSTALL_DIR}/pkgconfig ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/generated/CppUTestGeneratedConfig.h" DESTINATION "${INCLUDE_INSTALL_DIR}/CppUTest" ) # Try to include helper module include(CMakePackageConfigHelpers OPTIONAL RESULT_VARIABLE PkgHelpers_AVAILABLE) # guard against older versions of cmake which do not provide it if(PkgHelpers_AVAILABLE) configure_package_config_file(CppUTestConfig.cmake.install.in ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfig.cmake INSTALL_DESTINATION ${LIB_INSTALL_DIR}/CppUTest/cmake PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfigVersion.cmake VERSION ${CppUTest_version_major}.${CppUTest_version_minor} COMPATIBILITY SameMajorVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/install/CppUTestConfigVersion.cmake DESTINATION ${LIB_INSTALL_DIR}/CppUTest/cmake ) install(EXPORT CppUTestTargets DESTINATION ${LIB_INSTALL_DIR}/CppUTest/cmake) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake DESTINATION ${LIB_INSTALL_DIR}/CppUTest/cmake/Scripts) install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake DESTINATION ${LIB_INSTALL_DIR}/CppUTest/cmake/Modules) configure_package_config_file(CppUTestConfig.cmake.build.in ${CMAKE_CURRENT_BINARY_DIR}/CppUTestConfig.cmake INSTALL_DESTINATION ${CMAKE_CURRENT_BINARY_DIR} PATH_VARS INCLUDE_DIR CMAKE_CURRENT_BINARY_DIR) if (EXTENSIONS) export(TARGETS CppUTest CppUTestExt FILE "${CMAKE_CURRENT_BINARY_DIR}/CppUTestTargets.cmake") else() export(TARGETS CppUTest FILE "${CMAKE_CURRENT_BINARY_DIR}/CppUTestTargets.cmake") endif() write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/CppUTestConfigVersion.cmake VERSION ${CppUTest_version_major}.${CppUTest_version_minor} COMPATIBILITY SameMajorVersion ) set(CppUTest_DIR "${CMAKE_CURRENT_BINARY_DIR}" CACHE PATH "The directory containing a CMake configuration file for CppUTest.") else() message("If you wish to use find_package(CppUTest) in your own project to find CppUTest library" " please update cmake to version which provides CMakePackageConfighelpers module" " or write generators for CppUTestConfig.cmake by yourself.") endif() if(VERBOSE_CONFIG) message(" ------------------------------------------------------- CppUTest Version ${CppUTest_version_major}.${CppUTest_version_minor} Current compiler options: CC: ${CMAKE_C_COMPILER} CXX: ${CMAKE_CXX_COMPILER} CppUTest CFLAGS: ${CPPUTEST_C_FLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXX_FLAGS} CppUTest LDFLAGS: ${CPPUTEST_LD_FLAGS} Features configured in CppUTest: Memory Leak Detection: ${MEMORY_LEAK_DETECTION} Compiling Extensions: ${EXTENSIONS} Support Long Long: ${LONGLONG} Use CppUTest flags: ${CPPUTEST_FLAGS} Using Standard C library: ${STD_C} Using Standard C++ library: ${STD_CPP} Using C++11 library: ${C++11} Generating map file: ${MAP_FILE} Compiling with coverage: ${COVERAGE} Compile and run self-tests ${TESTS} Run self-tests separately ${TESTS_DETAILED} ------------------------------------------------------- ") endif() cpputest-4.0/cmake/000755 000765 000024 00000000000 13663444566 015257 5ustar00basvoddestaff000000 000000 cpputest-4.0/configure000755 000765 000024 00002616436 13663444464 016125 0ustar00basvoddestaff000000 000000 #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for CppUTest 4.0. # # Report bugs to . # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: https://github.com/cpputest/cpputest about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='CppUTest' PACKAGE_TARNAME='cpputest' PACKAGE_VERSION='4.0' PACKAGE_STRING='CppUTest 4.0' PACKAGE_BUGREPORT='https://github.com/cpputest/cpputest' PACKAGE_URL='' ac_unique_file="src/CppUTest/Utest.cpp" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS ALL_FILES_IN_GIT MOSTLYCLEANFILES CPPUTEST_LDFLAGS CPPUTEST_LDADD CPPUTEST_ADDITIONAL_CPPFLAGS CPPUTEST_CPPFLAGS CPPUTEST_ADDITIONAL_CXXFLAGS CPPUTEST_CXXFLAGS CPPUTEST_ADDITIONAL_CFLAGS CPPUTEST_CFLAGS INCLUDE_CPPUTEST_EXT CPP_PLATFORM INCLUDE_GMOCKTESTS_FALSE INCLUDE_GMOCKTESTS_TRUE GMOCK_HOME INCLUDE_CPPUTEST_EXT_FALSE INCLUDE_CPPUTEST_EXT_TRUE TEST_COMPILER_IS_CLANG_FALSE TEST_COMPILER_IS_CLANG_TRUE CPPUTEST_HAS_DASH CPPUTEST_HAS_VALGRIND CPPUTEST_HAS_LCOV CPPUTEST_HAS_CLANG CPPUTEST_HAS_GCC PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC acx_pthread_config CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE ac_ct_CXX CXXFLAGS CXX CPPUTEST_ON_MACOSX CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR DLLTOOL OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_shared enable_static with_pic enable_fast_install with_aix_soname enable_dependency_tracking with_gnu_ld with_sysroot enable_libtool_lock enable_std_c enable_std_cpp enable_std_cpp98 enable_std_cpp11 enable_std_cpp14 enable_std_cpp17 enable_std_cpp20 enable_cpputest_flags enable_memory_leak_detection enable_extensions enable_longlong enable_generate_map_file enable_coverage enable_sanitize_address ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CPP CXX CXXFLAGS CCC CXXCPP GMOCK_HOME' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures CppUTest 4.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/cpputest] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of CppUTest 4.0:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-libtool-lock avoid locking (might break parallel builds) --disable-std-c disable the use of Standard C Library (warning: requires implementing Platforms/GccNoStdC) --disable-std-cpp disable the use of Standard C++ Library --enable-std-cpp98 enable the use of Standard C++ 98 (if the compiler supports that) --enable-std-cpp11 enable the use of Standard C++ 11 (if the compiler supports that) --enable-std-cpp14 enable the use of Standard C++ 14 (if the compiler supports that) --enable-std-cpp17 enable the use of Standard C++ 17 (if the compiler supports that) --enable-std-cpp20 enable the use of Standard C++ 20 (if the compiler supports that) --disable-cpputest-flags disable CFLAGS/CPPFLAGS/CXXFLAGS set by CppUTest --disable-memory-leak-detection disable memory leak detection --disable-extensions disable CppUTest extension library --disable-longlong disable support for long long type --enable-generate-map-file enable the creation of a map file --enable-coverage enable running with coverage --enable-sanitize-address enable running with address sanitizer Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor GMOCK_HOME Directory where gmock is installed so the gmock tests can run Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF CppUTest configure 4.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_cxx_try_compile LINENO # ---------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_compile # ac_fn_cxx_try_cpp LINENO # ------------------------ # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_cpp # ac_fn_cxx_try_link LINENO # ------------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_cxx_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_cxx_try_link # ac_fn_c_compute_int LINENO EXPR VAR INCLUDES # -------------------------------------------- # Tries to find the compile-time value of EXPR in a program that includes # INCLUDES, setting VAR accordingly. Returns whether the value could be # computed ac_fn_c_compute_int () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if test "$cross_compiling" = yes; then # Depending upon the size, compute the lo and hi bounds. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=0 ac_mid=0 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid; break else as_fn_arith $ac_mid + 1 && ac_lo=$as_val if test $ac_lo -le $ac_mid; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) < 0)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=-1 ac_mid=-1 while :; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) >= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_lo=$ac_mid; break else as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val if test $ac_mid -le $ac_hi; then ac_lo= ac_hi= break fi as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done else ac_lo= ac_hi= fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Binary search between lo and hi bounds. while test "x$ac_lo" != "x$ac_hi"; do as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { static int test_array [1 - 2 * !(($2) <= $ac_mid)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_hi=$ac_mid else as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done case $ac_lo in #(( ?*) eval "$3=\$ac_lo"; ac_retval=0 ;; '') ac_retval=1 ;; esac else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 static long int longval () { return $2; } static unsigned long int ulongval () { return $2; } #include #include int main () { FILE *f = fopen ("conftest.val", "w"); if (! f) return 1; if (($2) < 0) { long int i = longval (); if (i != ($2)) return 1; fprintf (f, "%ld", i); } else { unsigned long int i = ulongval (); if (i != ($2)) return 1; fprintf (f, "%lu", i); } /* Do not output a trailing newline, as this causes \r\n confusion on some platforms. */ return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : echo >>conftest.val; read $3 &5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## --------------------------------------------------- ## ## Report this to https://github.com/cpputest/cpputest ## ## --------------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_find_intX_t LINENO BITS VAR # ----------------------------------- # Finds a signed integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_intX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for int$2_t" >&5 $as_echo_n "checking for int$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in int$2_t 'int' 'long int' \ 'long long int' 'short int' 'signed char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default enum { N = $2 / 2 - 1 }; int main () { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else case $ac_type in #( int$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_intX_t # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_find_uintX_t LINENO BITS VAR # ------------------------------------ # Finds an unsigned integer type with width BITS, setting cache variable VAR # accordingly. ac_fn_c_find_uintX_t () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uint$2_t" >&5 $as_echo_n "checking for uint$2_t... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" # Order is important - never check a type that is potentially smaller # than half of the expected target width. for ac_type in uint$2_t 'unsigned int' 'unsigned long int' \ 'unsigned long long int' 'unsigned short int' 'unsigned char'; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; test_array [0] = 0; return test_array [0]; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : case $ac_type in #( uint$2_t) : eval "$3=yes" ;; #( *) : eval "$3=\$ac_type" ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if eval test \"x\$"$3"\" = x"no"; then : else break fi done fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_find_uintX_t cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by CppUTest $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in . "$srcdir"/.; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in . \"$srcdir\"/." "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. am__api_version='1.16' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='cpputest' VERSION='4.0' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_config_headers="$ac_config_headers config.h" ac_config_commands="$ac_config_commands generated/CppUTestGeneratedConfig.h" ac_config_files="$ac_config_files cpputest.pc" enable_dlopen=yes case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6' macro_revision='2.4.6' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 $as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } case $?:`cat confinc.out 2>/dev/null` in #( '0:this is the am__doit target') : case $s in #( BSD) : am__include='.include' am__quote='"' ;; #( *) : am__include='include' am__quote='' ;; esac ;; #( *) : ;; esac if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 $as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} : ${AR_FLAGS=cru} { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR cru libconftest.a conftest.o" >&5 $AR cru libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: default_use_std_cpp=yes case "x$build_os" in *darwin*) CPPUTEST_ON_MACOSX=yes ;; *mingw*) default_use_std_cpp=no ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CXX+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if ${ac_cv_cxx_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if ${ac_cv_prog_cxx_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes else CXXFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : else ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : ac_cv_prog_cxx_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CXX_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi func_stripname_cnf () { case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED "s%^$1%%; s%$2\$%%"`;; esac } # func_stripname_cnf if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if ${ac_cv_prog_CXXCPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_cxx_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu else _lt_caught_CXX_error=yes fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds reload_flag_CXX=$reload_flag reload_cmds_CXX=$reload_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC compiler_CXX=$CC func_cc_basename $compiler cc_basename=$func_cc_basename_result if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec_CXX='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. no_undefined_flag_CXX='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec_CXX='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath__CXX+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath__CXX"; then lt_cv_aix_libpath__CXX=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath__CXX fi hardcode_libdir_flag_spec_CXX='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' $wl-bernotok' allow_undefined_flag_CXX=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' fi archive_cmds_need_lc_CXX=yes archive_expsym_cmds_CXX='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds_CXX="$archive_expsym_cmds_CXX"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec_CXX=' ' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=yes file_list_spec_CXX='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' enable_shared_with_static_runtimes_CXX=yes # Don't use ranlib old_postinstall_cmds_CXX='chmod 644 $oldlib' postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' export_dynamic_flag_spec_CXX='$wl--export-all-symbols' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds_CXX='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec_CXX='' fi link_all_deplibs_CXX=yes allow_undefined_flag_CXX=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds_CXX="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" if test yes != "$lt_cv_apple_cc_single_mod"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" archive_expsym_cmds_CXX="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi else ld_shlibs_CXX=no fi ;; os2*) hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_minus_L_CXX=yes allow_undefined_flag_CXX=unsupported shrext_cmds=.dll archive_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds_CXX='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds_CXX='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes_CXX=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; haiku*) archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs_CXX=yes ;; hpux9*) hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='$wl-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec_CXX='$wl+b $wl$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5].* | *pgcpp\ [1-5].*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl--rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' whole_archive_flag_spec_CXX='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' export_dynamic_flag_spec_CXX='$wl--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='$wl-E' whole_archive_flag_spec_CXX=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then allow_undefined_flag_CXX=' $wl-expect_unresolved $wl\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='$wl-rpath $wl$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then no_undefined_flag_CXX=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='$wl-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='$wl-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='$wl-z,text' allow_undefined_flag_CXX='$wl-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='$wl-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ '"$old_archive_cmds_CXX" reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ '"$reload_cmds_CXX" ;; *) archive_cmds_CXX='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no GCC_CXX=$GXX LD_CXX=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX=$prev$p else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX=$prev$p else postdeps_CXX="${postdeps_CXX} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$predep_objects_CXX"; then predep_objects_CXX=$p else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX=$p else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi lt_prog_compiler_pic_CXX='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static_CXX='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) # IBM XL 8.0, 9.0 on PPC and BlueGene lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works_CXX"; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test yes = "$lt_cv_prog_compiler_static_works_CXX"; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o_CXX" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' ;; esac ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test no = "$ld_shlibs_CXX" && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc_CXX=no else lt_cv_archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 $as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec_CXX='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test yes = "$hardcode_automatic_CXX"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct_CXX" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" && test no != "$hardcode_minus_L_CXX"; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test relink = "$hardcode_action_CXX" || test yes = "$inherit_rpath_CXX"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5 $as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char pthread_join (); int main () { return pthread_join (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5 $as_echo_n "checking whether pthreads work without any flags... " >&6; } ;; -*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5 $as_echo_n "checking whether pthreads work with $flag... " >&6; } PTHREAD_CFLAGS="$flag" ;; pthread-config) # Extract the first word of "pthread-config", so it can be a program name with args. set dummy pthread-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_acx_pthread_config+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$acx_pthread_config"; then ac_cv_prog_acx_pthread_config="$acx_pthread_config" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_acx_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_acx_pthread_config" && ac_cv_prog_acx_pthread_config="no" fi fi acx_pthread_config=$ac_cv_prog_acx_pthread_config if test -n "$acx_pthread_config"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_config" >&5 $as_echo "$acx_pthread_config" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5 $as_echo_n "checking for the pthreads library -l$flag... " >&6; } PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : acx_pthread_ok=yes fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acx_pthread_ok" >&5 $as_echo "$acx_pthread_ok" >&6; } if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5 $as_echo_n "checking for joinable pthread attribute... " >&6; } attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { int attr=$attr; return attr; ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : attr_name=$attr; break fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext done { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5 $as_echo "$attr_name" >&6; } if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then cat >>confdefs.h <<_ACEOF #define PTHREAD_CREATE_JOINABLE $attr_name _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then for ac_prog in xlc_r cc_r do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_PTHREAD_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$PTHREAD_CC"; then ac_cv_prog_PTHREAD_CC="$PTHREAD_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi PTHREAD_CC=$ac_cv_prog_PTHREAD_CC if test -n "$PTHREAD_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PTHREAD_CC" >&5 $as_echo "$PTHREAD_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$PTHREAD_CC" && break done test -n "$PTHREAD_CC" || PTHREAD_CC="${CC}" else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then LIBS="$PTHREAD_LIBS $LIBS" : else acx_pthread_ok=no fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler vendor" >&5 $as_echo_n "checking for C compiler vendor... " >&6; } if ${ax_cv_c_compiler_vendor+:} false; then : $as_echo_n "(cached) " >&6 else vendors=" intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ cray: _CRAYC fujitsu: __FUJITSU sdcc: SDCC,__SDCC sx: _SX portland: __PGI gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ comeau: __COMO__ kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ tcc: __TINYC__ unknown: UNKNOWN " for ventest in $vendors; do case $ventest in *:) vendor=$ventest continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if !($vencpp) thisisanerror; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : break fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext done ax_cv_c_compiler_vendor=`echo $vendor | cut -d: -f1` fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_vendor" >&5 $as_echo "$ax_cv_c_compiler_vendor" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 $as_echo_n "checking for C compiler version... " >&6; } if ${ax_cv_c_compiler_version+:} false; then : $as_echo_n "(cached) " >&6 else case $ax_cv_c_compiler_vendor in #( intel) : if ac_fn_c_compute_int "$LINENO" "__INTEL_COMPILER/100" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__INTEL_COMPILER%100)/10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__INTEL_COMPILER%10)" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_INTEL unknown intel compiler version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( ibm) : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__COMPILER_VER__) choke me; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if ac_fn_c_compute_int "$LINENO" "__xlC__/100" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler major version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__xlC__%100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__xlC_ver__/0x100" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__xlC_ver__%0x100" "_ax_c_compiler_version_build" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler build version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch.$_ax_c_compiler_version_build" else if ac_fn_c_compute_int "$LINENO" "__xlC__%1000" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__xlC__/10000)%10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__xlC__/100000)%10" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_IBM unknown IBM compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #( pathscale) : if ac_fn_c_compute_int "$LINENO" "__PATHCC__" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale major See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__PATHCC_MINOR__" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale minor See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__PATHCC_PATCHLEVEL__" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PATHSCALE unknown pathscale patch level See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( clang) : if ac_fn_c_compute_int "$LINENO" "__clang_major__" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_CLANG unknown clang major See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__clang_minor__" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_CLANG unknown clang minor See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__clang_patchlevel__" "_ax_c_compiler_version_patch" ""; then : else 0 fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( cray) : if ac_fn_c_compute_int "$LINENO" "_RELEASE" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_CRAY unknown crayc release See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "_RELEASE_MINOR" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_CRAY unknown crayc minor See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor" ;; #( fujitsu) : if ac_fn_c_compute_int "$LINENO" "__FCC_VERSION" "ax_cv_c_compiler_version" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_FUJITSUunknown fujitsu release See \`config.log' for more details" "$LINENO" 5; } fi ;; #( gnu) : if ac_fn_c_compute_int "$LINENO" "__GNUC__" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc major See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__GNUC_MINOR__" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc minor See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__GNUC_PATCHLEVEL__" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_GNU unknown gcc patch level See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( sun) : if ac_fn_c_compute_int "$LINENO" "!!( #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif < 0x1000)" "_ax_c_compiler_version_until59" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun release version See \`config.log' for more details" "$LINENO" 5; } fi if test "X$_ax_c_compiler_version_until59" = X1; then : if ac_fn_c_compute_int "$LINENO" " #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif % 0x10" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif / 0x10) % 0x10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif / 0x100)" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun major version See \`config.log' for more details" "$LINENO" 5; } fi else if ac_fn_c_compute_int "$LINENO" " #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif % 0x10" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif / 0x100) % 0x100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif / 0x1000)" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SUN unknown sun major version See \`config.log' for more details" "$LINENO" 5; } fi fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( hp) : if ac_fn_c_compute_int "$LINENO" "!!( #if defined(__HP_cc) __HP_cc #else __HP_aCC #endif <= 1)" "_ax_c_compiler_version_untilA0121" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp release version See \`config.log' for more details" "$LINENO" 5; } fi if test "X$_ax_c_compiler_version_untilA0121" = X1; then : ax_cv_c_compiler_version="01.21.00" else if ac_fn_c_compute_int "$LINENO" "( #if defined(__HP_cc) __HP_cc #else __HP_aCC #endif % 100)" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp release version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(( #if defined(__HP_cc) __HP_cc #else __HP_aCC #endif / 100)%100)" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(( #if defined(__HP_cc) __HP_cc #else __HP_aCC #endif / 10000)%100)" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_HP unknown hp major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" fi ;; #( dec) : if ac_fn_c_compute_int "$LINENO" "( #if defined(__DECC_VER) __DECC_VER #else __DECCXX_VER #endif % 10000)" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec release version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(( #if defined(__DECC_VER) __DECC_VER #else __DECCXX_VER #endif / 100000UL)%100)" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(( #if defined(__DECC_VER) __DECC_VER #else __DECCXX_VER #endif / 10000000UL)%100)" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_DEC unknown dec major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( borland) : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #if defined(__TURBOC__) __TURBOC__ #else choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : if ac_fn_c_compute_int "$LINENO" " #if defined(__TURBOC__) __TURBOC__ #else choke me #endif " "_ax_c_compiler_version_turboc_raw" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc version See \`config.log' for more details" "$LINENO" 5; } fi if test $_ax_c_compiler_version_turboc_raw -lt 661 || test $_ax_c_compiler_version_turboc_raw -gt 1023; then : if ac_fn_c_compute_int "$LINENO" " #if defined(__TURBOC__) __TURBOC__ #else choke me #endif % 0x100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(__TURBOC__) __TURBOC__ #else choke me #endif /0x100)%0x100" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown turboc major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="0turboc:$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor" else case $_ax_c_compiler_version_turboc_raw in #( 661) : ax_cv_c_compiler_version="0turboc:1.00" ;; #( 662) : ax_cv_c_compiler_version="0turboc:1.01" ;; #( 663) : ax_cv_c_compiler_version="0turboc:2.00" ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: [_AX_COMPILER_VERSION_BORLAND] unknown turboc version between 0x295 and 0x400 please report bug" >&5 $as_echo "$as_me: WARNING: [_AX_COMPILER_VERSION_BORLAND] unknown turboc version between 0x295 and 0x400 please report bug" >&2;} ax_cv_c_compiler_version="" ;; esac fi else # borlandc if ac_fn_c_compute_int "$LINENO" " #if defined(__BORLANDC__) __BORLANDC__ #else __CODEGEARC__ #endif " "_ax_c_compiler_version_borlandc_raw" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_BORLAND unknown borlandc version See \`config.log' for more details" "$LINENO" 5; } fi case $_ax_c_compiler_version_borlandc_raw in #( 512 ) : ax_cv_c_compiler_version="1borlanc:2.00" ;; #( 1024) : ax_cv_c_compiler_version="1borlanc:3.00" ;; #( 1024) : ax_cv_c_compiler_version="1borlanc:3.00" ;; #( 1040) : ax_cv_c_compiler_version="1borlanc:3.1" ;; #( 1106) : ax_cv_c_compiler_version="1borlanc:4.0" ;; #( 1280) : ax_cv_c_compiler_version="1borlanc:5.0" ;; #( 1312) : ax_cv_c_compiler_version="1borlanc:5.02" ;; #( 1328) : ax_cv_c_compiler_version="2cppbuilder:3.0" ;; #( 1344) : ax_cv_c_compiler_version="2cppbuilder:4.0" ;; #( 1360) : ax_cv_c_compiler_version="3borlancpp:5.5" ;; #( 1361) : ax_cv_c_compiler_version="3borlancpp:5.51" ;; #( 1378) : ax_cv_c_compiler_version="3borlancpp:5.6.4" ;; #( 1392) : ax_cv_c_compiler_version="4cppbuilder:2006" ;; #( 1424) : ax_cv_c_compiler_version="4cppbuilder:2007" ;; #( 1555) : ax_cv_c_compiler_version="4cppbuilder:2009" ;; #( 1569) : ax_cv_c_compiler_version="4cppbuilder:2010" ;; #( 1584) : ax_cv_c_compiler_version="5xe" ;; #( 1600) : ax_cv_c_compiler_version="5xe:2" ;; #( 1616) : ax_cv_c_compiler_version="5xe:3" ;; #( 1632) : ax_cv_c_compiler_version="5xe:4" ;; #( *) : { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: [_AX_COMPILER_VERSION_BORLAND] Unknown borlandc compiler version $_ax_c_compiler_version_borlandc_raw please report bug" >&5 $as_echo "$as_me: WARNING: [_AX_COMPILER_VERSION_BORLAND] Unknown borlandc compiler version $_ax_c_compiler_version_borlandc_raw please report bug" >&2;} ;; esac fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ;; #( comeau) : if ac_fn_c_compute_int "$LINENO" "__COMO_VERSION__%100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_COMEAU unknown comeau compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__COMO_VERSION__/100)%10" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_COMEAU unknown comeau compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor" ;; #( kai) : if ac_fn_c_compute_int "$LINENO" "__KCC_VERSION%100" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__KCC_VERSION/100)%10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__KCC_VERSION/1000)%10" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_KAI unknown kay compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( sgi) : if ac_fn_c_compute_int "$LINENO" " #if defined(_COMPILER_VERSION) _COMPILER_VERSION #else _SGI_COMPILER_VERSION #endif %10" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(_COMPILER_VERSION) _COMPILER_VERSION #else _SGI_COMPILER_VERSION #endif /10)%10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "( #if defined(_COMPILER_VERSION) _COMPILER_VERSION #else _SGI_COMPILER_VERSION #endif /100)%10" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SGI unknown SGI compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( microsoft) : if ac_fn_c_compute_int "$LINENO" "_MSC_VER%100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(_MSC_VER/100)%100" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler major version See \`config.log' for more details" "$LINENO" 5; } fi _ax_c_compiler_version_patch=0 _ax_c_compiler_version_build=0 # special case for version 6 if test "X$_ax_c_compiler_version_major" = "X12"; then : if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%1000" "_ax_c_compiler_version_patch" ""; then : else _ax_c_compiler_version_patch=0 fi fi # for version 7 if test "X$_ax_c_compiler_version_major" = "X13"; then : if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%1000" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi fi # for version > 8 if test $_ax_c_compiler_version_major -ge 14; then : if ac_fn_c_compute_int "$LINENO" "_MSC_FULL_VER%10000" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi fi if test $_ax_c_compiler_version_major -ge 15; then : if ac_fn_c_compute_int "$LINENO" "_MSC_BUILD" "_ax_c_compiler_version_build" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_MICROSOFT unknown microsoft compiler build version See \`config.log' for more details" "$LINENO" 5; } fi fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch.$_ax_c_compiler_version_build" ;; #( metrowerks) : if ac_fn_c_compute_int "$LINENO" "__MWERKS__%0x100" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler patch version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__MWERKS__/0x100)%0x10" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__MWERKS__/0x1000)%0x10" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_METROWERKS unknown metrowerks compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( watcom) : if ac_fn_c_compute_int "$LINENO" "__WATCOMC__%100" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_WATCOM unknown watcom compiler minor version See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "(__WATCOMC__/100)%100" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_WATCOM unknown watcom compiler major version See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor" ;; #( portland) : if ac_fn_c_compute_int "$LINENO" "__PGIC__" "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi major See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__PGIC_MINOR__" "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi minor See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "__PGIC_PATCHLEVEL__" "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_PORTLAND unknown pgi patch level See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( tcc) : ax_cv_c_compiler_version=`tcc -v | $SED 's/^[ ]*tcc[ ]\+version[ ]\+\([0-9.]\+\).*/\1/g'` ;; #( sdcc) : if ac_fn_c_compute_int "$LINENO" "/* avoid parse error with comments */ #if(defined(__SDCC_VERSION_MAJOR)) __SDCC_VERSION_MAJOR #else SDCC/100 #endif " "_ax_c_compiler_version_major" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SDCC unknown sdcc major See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" "/* avoid parse error with comments */ #if(defined(__SDCC_VERSION_MINOR)) __SDCC_VERSION_MINOR #else (SDCC%100)/10 #endif " "_ax_c_compiler_version_minor" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SDCC unknown sdcc minor See \`config.log' for more details" "$LINENO" 5; } fi if ac_fn_c_compute_int "$LINENO" " /* avoid parse error with comments */ #if(defined(__SDCC_VERSION_PATCH)) __SDCC_VERSION_PATCH #elsif(defined(_SDCC_VERSION_PATCHLEVEL)) __SDCC_VERSION_PATCHLEVEL #else SDCC%10 #endif " "_ax_c_compiler_version_patch" ""; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "_AX_COMPILER_VERSION_SDCC unknown sdcc patch level See \`config.log' for more details" "$LINENO" 5; } fi ax_cv_c_compiler_version="$_ax_c_compiler_version_major.$_ax_c_compiler_version_minor.$_ax_c_compiler_version_patch" ;; #( *) : ax_cv_c_compiler_version="" ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_c_compiler_version" >&5 $as_echo "$ax_cv_c_compiler_version" >&6; } # This additional -lpthread was added due to a bug on gcc for MacOSX: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42159 # According to the bug report, a workaround is to link -lpthread. Even the ACX_PTHREAD doesn't do that, so we add an # additional check if that it possible, and if it is, then we link pthread saved_libs="$LIBS" LIBS=-lpthread { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can link -lpthread to work around a gcc bug (on MacOSX)" >&5 $as_echo_n "checking if we can link -lpthread to work around a gcc bug (on MacOSX)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; HACK_TO_USE_PTHREAD_LIBS=" -lpthread" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS="$saved_libs $HACK_TO_USE_PTHREAD_LIBS" for ac_header in stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 $as_echo_n "checking for inline... " >&6; } if ${ac_cv_c_inline+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifndef __cplusplus typedef int foo_t; static $ac_kw foo_t static_foo () {return 0; } $ac_kw foo_t foo () {return 0; } #endif _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_inline=$ac_kw fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext test "$ac_cv_c_inline" != no && break done fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 $as_echo "$ac_cv_c_inline" >&6; } case $ac_cv_c_inline in inline | yes) ;; *) case $ac_cv_c_inline in no) ac_val=;; *) ac_val=$ac_cv_c_inline;; esac cat >>confdefs.h <<_ACEOF #ifndef __cplusplus #define inline $ac_val #endif _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "16" "ac_cv_c_int16_t" case $ac_cv_c_int16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int16_t $ac_cv_c_int16_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "32" "ac_cv_c_int32_t" case $ac_cv_c_int32_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int32_t $ac_cv_c_int32_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "64" "ac_cv_c_int64_t" case $ac_cv_c_int64_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int64_t $ac_cv_c_int64_t _ACEOF ;; esac ac_fn_c_find_intX_t "$LINENO" "8" "ac_cv_c_int8_t" case $ac_cv_c_int8_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define int8_t $ac_cv_c_int8_t _ACEOF ;; esac ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" if test "x$ac_cv_type_pid_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define pid_t int _ACEOF fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi ac_fn_c_find_uintX_t "$LINENO" "16" "ac_cv_c_uint16_t" case $ac_cv_c_uint16_t in #( no|yes) ;; #( *) cat >>confdefs.h <<_ACEOF #define uint16_t $ac_cv_c_uint16_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "32" "ac_cv_c_uint32_t" case $ac_cv_c_uint32_t in #( no|yes) ;; #( *) $as_echo "#define _UINT32_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint32_t $ac_cv_c_uint32_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "64" "ac_cv_c_uint64_t" case $ac_cv_c_uint64_t in #( no|yes) ;; #( *) $as_echo "#define _UINT64_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint64_t $ac_cv_c_uint64_t _ACEOF ;; esac ac_fn_c_find_uintX_t "$LINENO" "8" "ac_cv_c_uint8_t" case $ac_cv_c_uint8_t in #( no|yes) ;; #( *) $as_echo "#define _UINT8_T 1" >>confdefs.h cat >>confdefs.h <<_ACEOF #define uint8_t $ac_cv_c_uint8_t _ACEOF ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5 $as_echo_n "checking for unsigned long long int... " >&6; } if ${ac_cv_type_unsigned_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_unsigned_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* For now, do not test the preprocessor; as of 2007 there are too many implementations with broken preprocessors. Perhaps this can be revisited in 2012. In the meantime, code should not expect #if to work with literals wider than 32 bits. */ /* Test literals. */ long long int ll = 9223372036854775807ll; long long int nll = -9223372036854775807LL; unsigned long long int ull = 18446744073709551615ULL; /* Test constant expressions. */ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll) ? 1 : -1)]; typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1 ? 1 : -1)]; int i = 63; int main () { /* Test availability of runtime routines for shift and division. */ long long int llmax = 9223372036854775807ll; unsigned long long int ullmax = 18446744073709551615ull; return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i) | (llmax / ll) | (llmax % ll) | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i) | (ullmax / ull) | (ullmax % ull)); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : else ac_cv_type_unsigned_long_long_int=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5 $as_echo "$ac_cv_type_unsigned_long_long_int" >&6; } if test $ac_cv_type_unsigned_long_long_int = yes; then $as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5 $as_echo_n "checking for long long int... " >&6; } if ${ac_cv_type_long_long_int+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_type_long_long_int=yes if test "x${ac_cv_prog_cc_c99-no}" = xno; then ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int if test $ac_cv_type_long_long_int = yes; then if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #ifndef LLONG_MAX # define HALF \ (1LL << (sizeof (long long int) * CHAR_BIT - 2)) # define LLONG_MAX (HALF - 1 + HALF) #endif int main () { long long int n = 1; int i; for (i = 0; ; i++) { long long int m = n << i; if (m >> i != n) return 1; if (LLONG_MAX / 2 < m) break; } return 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_type_long_long_int=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5 $as_echo "$ac_cv_type_long_long_int" >&6; } if test $ac_cv_type_long_long_int = yes; then $as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h fi # Checks for library functions. for ac_header in vfork.h do : ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" if test "x$ac_cv_header_vfork_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_VFORK_H 1 _ACEOF fi done for ac_func in fork vfork do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done if test "x$ac_cv_func_fork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 $as_echo_n "checking for working fork... " >&6; } if ${ac_cv_func_fork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_fork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $ac_includes_default int main () { /* By Ruediger Kuhlmann. */ return fork () < 0; ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_fork_works=yes else ac_cv_func_fork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 $as_echo "$ac_cv_func_fork_works" >&6; } else ac_cv_func_fork_works=$ac_cv_func_fork fi if test "x$ac_cv_func_fork_works" = xcross; then case $host in *-*-amigaos* | *-*-msdosdjgpp*) # Override, as these systems have only a dummy fork() stub ac_cv_func_fork_works=no ;; *) ac_cv_func_fork_works=yes ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} fi ac_cv_func_vfork_works=$ac_cv_func_vfork if test "x$ac_cv_func_vfork" = xyes; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 $as_echo_n "checking for working vfork... " >&6; } if ${ac_cv_func_vfork_works+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_vfork_works=cross else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Thanks to Paul Eggert for this test. */ $ac_includes_default #include #ifdef HAVE_VFORK_H # include #endif /* On some sparc systems, changes by the child to local and incoming argument registers are propagated back to the parent. The compiler is told about this with #include , but some compilers (e.g. gcc -O) don't grok . Test for this by using a static variable whose address is put into a register that is clobbered by the vfork. */ static void #ifdef __cplusplus sparc_address_test (int arg) # else sparc_address_test (arg) int arg; #endif { static pid_t child; if (!child) { child = vfork (); if (child < 0) { perror ("vfork"); _exit(2); } if (!child) { arg = getpid(); write(-1, "", 0); _exit (arg); } } } int main () { pid_t parent = getpid (); pid_t child; sparc_address_test (0); child = vfork (); if (child == 0) { /* Here is another test for sparc vfork register problems. This test uses lots of local variables, at least as many local variables as main has allocated so far including compiler temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should reuse the register of parent for one of the local variables, since it will think that parent can't possibly be used any more in this routine. Assigning to the local variable will thus munge parent in the parent process. */ pid_t p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); /* Convince the compiler that p..p7 are live; otherwise, it might use the same hardware register for all 8 local variables. */ if (p != p1 || p != p2 || p != p3 || p != p4 || p != p5 || p != p6 || p != p7) _exit(1); /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent from child file descriptors. If the child closes a descriptor before it execs or exits, this munges the parent's descriptor as well. Test for this by closing stdout in the child. */ _exit(close(fileno(stdout)) != 0); } else { int status; struct stat st; while (wait(&status) != child) ; return ( /* Was there some problem with vforking? */ child < 0 /* Did the child fail? (This shouldn't happen.) */ || status /* Did the vfork/compiler bug occur? */ || parent != getpid() /* Did the file descriptor bug occur? */ || fstat(fileno(stdout), &st) != 0 ); } } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_vfork_works=yes else ac_cv_func_vfork_works=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 $as_echo "$ac_cv_func_vfork_works" >&6; } fi; if test "x$ac_cv_func_fork_works" = xcross; then ac_cv_func_vfork_works=$ac_cv_func_vfork { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 $as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} fi if test "x$ac_cv_func_vfork_works" = xyes; then $as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h else $as_echo "#define vfork fork" >>confdefs.h fi if test "x$ac_cv_func_fork_works" = xyes; then $as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h fi for ac_func in gettimeofday memset strstr strdup pthread_mutex_lock do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CPPUTEST_HAS_GCC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_GCC"; then ac_cv_prog_CPPUTEST_HAS_GCC="$CPPUTEST_HAS_GCC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CPPUTEST_HAS_GCC="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CPPUTEST_HAS_GCC" && ac_cv_prog_CPPUTEST_HAS_GCC="no" fi fi CPPUTEST_HAS_GCC=$ac_cv_prog_CPPUTEST_HAS_GCC if test -n "$CPPUTEST_HAS_GCC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_GCC" >&5 $as_echo "$CPPUTEST_HAS_GCC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "clang", so it can be a program name with args. set dummy clang; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CPPUTEST_HAS_CLANG+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_CLANG"; then ac_cv_prog_CPPUTEST_HAS_CLANG="$CPPUTEST_HAS_CLANG" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CPPUTEST_HAS_CLANG="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CPPUTEST_HAS_CLANG" && ac_cv_prog_CPPUTEST_HAS_CLANG="no" fi fi CPPUTEST_HAS_CLANG=$ac_cv_prog_CPPUTEST_HAS_CLANG if test -n "$CPPUTEST_HAS_CLANG"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_CLANG" >&5 $as_echo "$CPPUTEST_HAS_CLANG" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "lcov", so it can be a program name with args. set dummy lcov; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CPPUTEST_HAS_LCOV+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_LCOV"; then ac_cv_prog_CPPUTEST_HAS_LCOV="$CPPUTEST_HAS_LCOV" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CPPUTEST_HAS_LCOV="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CPPUTEST_HAS_LCOV" && ac_cv_prog_CPPUTEST_HAS_LCOV="no" fi fi CPPUTEST_HAS_LCOV=$ac_cv_prog_CPPUTEST_HAS_LCOV if test -n "$CPPUTEST_HAS_LCOV"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_LCOV" >&5 $as_echo "$CPPUTEST_HAS_LCOV" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "valgrind", so it can be a program name with args. set dummy valgrind; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CPPUTEST_HAS_VALGRIND+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_VALGRIND"; then ac_cv_prog_CPPUTEST_HAS_VALGRIND="$CPPUTEST_HAS_VALGRIND" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CPPUTEST_HAS_VALGRIND="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CPPUTEST_HAS_VALGRIND" && ac_cv_prog_CPPUTEST_HAS_VALGRIND="no" fi fi CPPUTEST_HAS_VALGRIND=$ac_cv_prog_CPPUTEST_HAS_VALGRIND if test -n "$CPPUTEST_HAS_VALGRIND"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_VALGRIND" >&5 $as_echo "$CPPUTEST_HAS_VALGRIND" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Extract the first word of "dash", so it can be a program name with args. set dummy dash; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CPPUTEST_HAS_DASH+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CPPUTEST_HAS_DASH"; then ac_cv_prog_CPPUTEST_HAS_DASH="$CPPUTEST_HAS_DASH" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CPPUTEST_HAS_DASH="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_prog_CPPUTEST_HAS_DASH" && ac_cv_prog_CPPUTEST_HAS_DASH="no" fi fi CPPUTEST_HAS_DASH=$ac_cv_prog_CPPUTEST_HAS_DASH if test -n "$CPPUTEST_HAS_DASH"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPPUTEST_HAS_DASH" >&5 $as_echo "$CPPUTEST_HAS_DASH" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi # Checking for warning flags on the compiler saved_cflags="$CFLAGS" saved_cxxflags="$CXXFLAGS" saved_ldflags="$LDFLAGS" if test "x$USE_MAINTAINER_MODE" = "xyes"; then # FLag -Werror. CFLAGS=-Werror { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Werror" >&5 $as_echo_n "checking whether CC and CXX supports -Werror... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS_STRICT="${CPPUTEST_CWARNINGFLAGS} -Werror"; CPPUTEST_CXXWARNINGFLAGS_STRICT="${CPPUTEST_CXXWARNINGFLAGS} -Werror" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ##################################################################################### ##### C++ checks # FLag -std=c++1y CXXFLAGS="-Werror -std=c++1y" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++1y" >&5 $as_echo_n "checking whether CXX supports -std=c++1y... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP14FLAG="-std=c++1y" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag std=c++14 CXXFLAGS="-Werror -std=c++14" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++14" >&5 $as_echo_n "checking whether CXX supports -std=c++14... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP14FLAG="-std=c++14" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag std=c++17 CXXFLAGS="-Werror -std=c++17" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++17" >&5 $as_echo_n "checking whether CXX supports -std=c++17... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP17FLAG="-std=c++17" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag std=c++20 CXXFLAGS="-Werror -std=c++2a" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++2a" >&5 $as_echo_n "checking whether CXX supports -std=c++2a... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP20FLAG="-std=c++2a" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag std=c++20 CXXFLAGS="-Werror -std=c++20" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++20" >&5 $as_echo_n "checking whether CXX supports -std=c++20... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP20FLAG="-std=c++20" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ##################################################################################### ##### C++ version checks ### Checking for C++ version compiler flags # FLag -std=c++98 CXXFLAGS="-Werror -std=c++98" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++98" >&5 $as_echo_n "checking whether CXX supports -std=c++98... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP98FLAG="-std=c++98" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -std=c++0x CXXFLAGS="-Werror -std=c++0x" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++0x" >&5 $as_echo_n "checking whether CXX supports -std=c++0x... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="-std=c++0x" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" CXXFLAGS="-Werror -std=c++11" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -std=c++11" >&5 $as_echo_n "checking whether CXX supports -std=c++11... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="-std=c++11" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" CXXFLAGS="-Werror -stdlib=libc++" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -stdlib=libc++" >&5 $as_echo_n "checking whether CXX supports -stdlib=libc++... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CPP11FLAG="${CPPUTEST_CPP11FLAG} -stdlib=libc++" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++98-compat CXXFLAGS="-Werror -Wno-c++98-compat" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-c++98-compat" >&5 $as_echo_n "checking whether CXX supports -Wno-c++98-compat... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++98-compat" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++98-compat-pedantic CXXFLAGS="-Werror -Wno-c++98-compat-pedantic" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-c++98-compat-pedantic" >&5 $as_echo_n "checking whether CXX supports -Wno-c++98-compat-pedantic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++98-compat-pedantic" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # Flag -Wno-c++14-compat CXXFLAGS="-Werror -Wno-c++14-compat" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-c++14-compat" >&5 $as_echo_n "checking whether CXX supports -Wno-c++14-compat... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++14-compat" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # FLag -Wno-c++11-long-long. This must be on if it is available as otherwise long long is supported but causes a warning. CFLAGS="-Werror -Wno-c++11-long-long" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-c++11-long-long" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-c++11-long-long... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-c++11-long-long" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-c++11-long-long" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-long-long must be on for C. CFLAGS="-Werror -Wno-long-long" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-long-long" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-long-long... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-long-long" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-long-long" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" ##################################################################################### ##### More of these warnings # FLag -Weverything. CFLAGS="-Werror -Weverything -Wno-unused-macros" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Weverything" >&5 $as_echo_n "checking whether CC and CXX supports -Weverything... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Weverything"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Weverything" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wall. CFLAGS="-Werror -Wall" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wall" >&5 $as_echo_n "checking whether CC and CXX supports -Wall... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wall"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wall" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wextra. CFLAGS="-Werror -Wextra" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wextra" >&5 $as_echo_n "checking whether CC and CXX supports -Wextra... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wextra"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wextra" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wshadow. CFLAGS="-Werror -Wshadow" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wshadow" >&5 $as_echo_n "checking whether CC and CXX supports -Wshadow... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wshadow"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wshadow" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wswitch-default CFLAGS="-Werror -Wswitch-default" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wswitch-default" >&5 $as_echo_n "checking whether CC and CXX supports -Wswitch-default... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-default"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-default" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wswitch-enum CFLAGS="-Werror -Wswitch-enum" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wswitch-enum" >&5 $as_echo_n "checking whether CC and CXX supports -Wswitch-enum... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wswitch-enum"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wswitch-enum" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wconversion CFLAGS="-Werror -Wconversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wconversion" >&5 $as_echo_n "checking whether CC and CXX supports -Wconversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wconversion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wconversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -pedantic CFLAGS="-Werror -pedantic" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -pedantic" >&5 $as_echo_n "checking whether CC and CXX supports -pedantic... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -pedantic"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -pedantic" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wsign-conversion CFLAGS="-Werror -Wsign-conversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wsign-conversion" >&5 $as_echo_n "checking whether CC supports -Wsign-conversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wsign-conversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" ##### C++ Warnings # FLag -Wsign-conversion (for CXX) ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS="-Werror -Wsign-conversion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wsign-conversion" >&5 $as_echo_n "checking whether CXX supports -Wsign-conversion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wsign-conversion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Woverloaded-virtual CXXFLAGS="-Werror -Woverloaded-virtual" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Woverloaded-virtual" >&5 $as_echo_n "checking whether CXX supports -Woverloaded-virtual... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Woverloaded-virtual" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # FLag -Wstrict-prototypes CFLAGS="-Werror -Wstrict-prototypes" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wstrict-prototypes" >&5 $as_echo_n "checking whether CC supports -Wstrict-prototypes... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wstrict-prototypes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" ##################################################################################### ##### Less of these warnings # # Disable some warnings as CppUTest has this and can't be prevented at the moment. # FLag -Wno-disabled-macro-expansion. CFLAGS="-Werror -Wno-disabled-macro-expansion" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-disabled-macro-expansion" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-disabled-macro-expansion... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-disabled-macro-expansion"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-disabled-macro-expansion" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-padded. CFLAGS="-Werror -Wno-padded" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-padded" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-padded... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-padded"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-padded" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-reserved-id-macro. CFLAGS="-Werror -Wno-reserved-id-macro" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-reserved-id-macro" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-reserved-id-macro... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-reserved-id-macro"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-reserved-id-macro" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" # FLag -Wno-keyword-macro. CFLAGS="-Werror -Wno-keyword-macro" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CC and CXX supports -Wno-keyword-macro" >&5 $as_echo_n "checking whether CC and CXX supports -Wno-keyword-macro... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} -Wno-keyword-macro"; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-keyword-macro" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CFLAGS="$saved_cflags" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # FLag -Wno-global-constructors. CXXFLAGS="-Werror -Wno-global-constructors" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-global-constructors" >&5 $as_echo_n "checking whether CXX supports -Wno-global-constructors... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-global-constructors" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Wno-exit-time-destructors. CXXFLAGS="-Werror -Wno-exit-time-destructors" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-exit-time-destructors" >&5 $as_echo_n "checking whether CXX supports -Wno-exit-time-destructors... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-exit-time-destructors" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Wno-weak-vtables. CXXFLAGS="-Werror -Wno-weak-vtables" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-weak-vtables" >&5 $as_echo_n "checking whether CXX supports -Wno-weak-vtables... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-weak-vtables" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Wno-old-style-cast. CXXFLAGS="-Werror -Wno-old-style-cast" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-old-style-cast" >&5 $as_echo_n "checking whether CXX supports -Wno-old-style-cast... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} -Wno-old-style-cast" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ##################################################### ######## End warning section # FLag --coverage ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CXXFLAGS="-Werror --coverage" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX and the linker supports --coverage (broken in clang 3.3)" >&5 $as_echo_n "checking whether CXX and the linker supports --coverage (broken in clang 3.3)... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; coverage_flag_supported="yes" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ###################################################### # Exception Handling # # Checking for strange exception handling behavior, related to bugs in compilers... ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu # Can we use operator delete without exception handling specifier? (clang warns on this!) CXXFLAGS="-Werror" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports operator delete without exception handling specifier" >&5 $as_echo_n "checking whether CXX supports operator delete without exception handling specifier... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include \nvoid operator delete(void* mem); int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; UT_DELETE_MUST_HAVE_EXCEPTION_SPECIFIER="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # Can we use operator new with exception specifier (g++4.7 on MacOSX is broken here) CXXFLAGS="-Werror" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports operator new with exception handling specifier" >&5 $as_echo_n "checking whether CXX supports operator new with exception handling specifier... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include \nvoid* operator new(size_t size) throw(std::bad_alloc);; int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; UT_NEW_CANT_HAVE_EXCEPTION_SPECIFIER="yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" # FLag -Wno-missing-exception-spec CXXFLAGS="-Werror -Wno-missing-exception-spec" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXX supports -Wno-missing-exception-spec" >&5 $as_echo_n "checking whether CXX supports -Wno-missing-exception-spec... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_cxx_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_CXX_NO_INC_WARNINGFLAGS="${CPPUTEST_CXX_NO_INC_WARNINGFLAGS} -Wno-missing-exception-spec" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext CXXFLAGS="$saved_cxxflags" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ##### Linker checking. # # TBD! # Things that need to be fixed! # # The below code is checking for the -Qunused-arguments which is a linker flag. However, it says gcc supports it, while in fact, it doesn't. # As a workaround, we'll just check whether it is clang hardcoded, this is not in the automake spirit and will need to be fixed. # # LDFLAGS= # AC_MSG_CHECKING([whether LD supports -Qunused-arguments]) # AC_LINK_IFELSE([AC_LANG_PROGRAM([])], [AC_MSG_RESULT([yes]); CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" -Qunused-arguments" ], [AC_MSG_RESULT([no])]) # LDFLAGS="$saved_ldflags" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CXXLD supports -Qunused-arguments linker option" >&5 $as_echo_n "checking whether CXXLD supports -Qunused-arguments linker option... " >&6; } OUTPUT_WHEN_CLANG_COMPILER=`${CXX} --version | grep clang` if ! test -z "$OUTPUT_WHEN_CLANG_COMPILER"; then TEST_COMPILER_IS_CLANG_TRUE= TEST_COMPILER_IS_CLANG_FALSE='#' else TEST_COMPILER_IS_CLANG_TRUE='#' TEST_COMPILER_IS_CLANG_FALSE= fi if test -z "$TEST_COMPILER_IS_CLANG_TRUE"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING=" ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} -Qunused-arguments" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; }; CPPUTEST_NO_UNUSED_ARGUMENT_WARNING="${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING} " fi # Checking for options for creating map files LDFLAGS=" -Wl,-map,filename.map.txt" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether LD supports -Wl,-map" >&5 $as_echo_n "checking whether LD supports -Wl,-map... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; }; CPPUTEST_LD_MAP_GENERATION=" -Wl,-map,filename.map.txt" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$saved_ldflags" # Different features # Check whether --enable-std-c was given. if test "${enable_std_c+set}" = set; then : enableval=$enable_std_c; use_std_c=${enableval} else use_std_c=yes fi # Check whether --enable-std-cpp was given. if test "${enable_std_cpp+set}" = set; then : enableval=$enable_std_cpp; use_std_cpp=${enableval} else use_std_cpp=${default_use_std_cpp} fi # Check whether --enable-std-cpp98 was given. if test "${enable_std_cpp98+set}" = set; then : enableval=$enable_std_cpp98; use_std_cpp98=${enableval} else use_std_cpp98=no fi # Check whether --enable-std-cpp11 was given. if test "${enable_std_cpp11+set}" = set; then : enableval=$enable_std_cpp11; use_std_cpp11=${enableval} else use_std_cpp11=no fi # Check whether --enable-std-cpp14 was given. if test "${enable_std_cpp14+set}" = set; then : enableval=$enable_std_cpp14; use_std_cpp14=${enableval} else use_std_cpp14=no fi # Check whether --enable-std-cpp17 was given. if test "${enable_std_cpp17+set}" = set; then : enableval=$enable_std_cpp17; use_std_cpp17=${enableval} else use_std_cpp17=no fi # Check whether --enable-std-cpp20 was given. if test "${enable_std_cpp20+set}" = set; then : enableval=$enable_std_cpp20; use_std_cpp20=${enableval} else use_std_cpp20=no fi # Check whether --enable-cpputest-flags was given. if test "${enable_cpputest_flags+set}" = set; then : enableval=$enable_cpputest_flags; cpputest_flags=${enableval} else cpputest_flags=yes fi # Check whether --enable-memory-leak-detection was given. if test "${enable_memory_leak_detection+set}" = set; then : enableval=$enable_memory_leak_detection; memory_leak_detection=${enableval} else memory_leak_detection=yes fi # Check whether --enable-extensions was given. if test "${enable_extensions+set}" = set; then : enableval=$enable_extensions; cpputest_ext=${enableval} else cpputest_ext=yes fi # Check whether --enable-longlong was given. if test "${enable_longlong+set}" = set; then : enableval=$enable_longlong; use_longlong=${enableval} else use_longlong=yes fi # Check whether --enable-generate-map-file was given. if test "${enable_generate_map_file+set}" = set; then : enableval=$enable_generate_map_file; generate_map_file=${enableval} else generate_map_file=no fi # Check whether --enable-coverage was given. if test "${enable_coverage+set}" = set; then : enableval=$enable_coverage; coverage=${enableval} else coverage=no fi # Check whether --enable-sanitize-address was given. if test "${enable_sanitize_address+set}" = set; then : enableval=$enable_sanitize_address; sanitize_address=${enableval} else sanitize_address=no fi ############################## Setting options ############################### if test "x${cpputest_ext}" = xyes; then INCLUDE_CPPUTEST_EXT_TRUE= INCLUDE_CPPUTEST_EXT_FALSE='#' else INCLUDE_CPPUTEST_EXT_TRUE='#' INCLUDE_CPPUTEST_EXT_FALSE= fi # Dealing with not having a Standard C library... (usually for Kernel development) if test "x${use_std_c}" = xno; then use_std_cpp=no memory_leak_detection=no CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -nostdinc" CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} -nostdlib" $as_echo "#define STD_C_LIB_DISABLED 1" >>confdefs.h CPP_PLATFORM="GccNoStdC" else CPP_PLATFORM="Gcc" fi # Using standard C++ if test "x${use_std_cpp}" = xno; then $as_echo "#define STD_CPP_LIB_DISABLED 1" >>confdefs.h if test "x${use_std_c}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -nostdinc++ ${CPPUTEST_CXX_NO_INC_WARNINGFLAGS}" # Since automake passes the CXXFLAGS to the linker, this will cause warnings with clang 3.2 (which become errors) CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_NO_UNUSED_ARGUMENT_WARNING}" fi fi cpp_standard_used="default" # Using the C++98 standard? if test "x${use_std_cpp98}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP98FLAG}" cpp_standard_used="C++98" fi # Using the C++11 standard? if test "x${use_std_cpp11}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP11FLAG}" cpp_standard_used="C++11" fi # Using the C++14 standard? if test "x${use_std_cpp14}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP14FLAG}" cpp_standard_used="C++14" fi # Using the C++17 standard? if test "x${use_std_cpp17}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP17FLAG}" cpp_standard_used="C++17" fi # Using the C++20 standard? if test "x${use_std_cpp20}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CPP20FLAG}" cpp_standard_used="C++20" fi # Dealing with memory leak detection if test "x${memory_leak_detection}" = xno; then $as_echo "#define MEM_LEAK_DETECTION_DISABLED 1" >>confdefs.h else CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorNewMacros.h" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -include ${srcdir}/include/CppUTest/MemoryLeakDetectorMallocMacros.h" fi # Disabling long long support if test "x${use_longlong}" = xno; then $as_echo "#define LONG_LONG_DISABLED 1" >>confdefs.h fi # Dealing with address sanitizer if test "x${sanitize_address}" = xyes; then CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} -fsanitize=address -fno-omit-frame-pointer" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -fsanitize=address -fno-omit-frame-pointer" CPPUTEST_LDFLAGS="${CPPUTEST_CXXFLAGS} -fsanitize=address -fno-omit-frame-pointer" fi # Generating map files. if test "x${generate_map_file}" = xyes; then CPPUTEST_LDFLAGS="${CPPUTEST_LDFLAGS} ${CPPUTEST_LD_MAP_GENERATION}" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.map.txt" fi if test "x${coverage_flag_supported}" = xyes; then if test "x${coverage}" = xyes; then CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} --coverage" CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} --coverage" MOSTLYCLEANFILES="${MOSTLYCLEANFILES} *.gcda *.gcno" fi fi # GMock, check whether we can compile the GMock tests. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the availability of gmock via the GMOCK_HOME variable" >&5 $as_echo_n "checking for the availability of gmock via the GMOCK_HOME variable... " >&6; } if test -n "${GMOCK_HOME}"; then INCLUDE_GMOCKTESTS_TRUE= INCLUDE_GMOCKTESTS_FALSE='#' else INCLUDE_GMOCKTESTS_TRUE='#' INCLUDE_GMOCKTESTS_FALSE= fi if test -n "${GMOCK_HOME}"; then $as_echo "#define INCLUDE_GTEST_TESTS 1" >>confdefs.h if test -z "${GTEST_HOME}"; then GTEST_HOME=${GMOCK_HOME}/gtest fi CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I${GMOCK_HOME}/include -I${GTEST_HOME}/include -I${GTEST_HOME}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1 -DGMOCK_RENAME_MAIN=1" if test -e ${GMOCK_HOME}/lib/libgmock.la && test -e ${GTEST_HOME}/lib/libgtest.la; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/lib/libgmock.la ${GTEST_HOME}/lib/libgtest.la"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GTEST_HOME}/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GTEST_HOME}/libgtest.a"; \ elif test -e ${GMOCK_HOME}/libgmock.a && test -e ${GMOCK_HOME}/gtest/libgtest.a; then \ CPPUTEST_LDADD="${CPPUTEST_LDADD} ${GMOCK_HOME}/libgmock.a ${GMOCK_HOME}/gtest/libgtest.a"; \ else \ as_fn_error $? " ------------------------------------- GMOCK_HOME was set, but couldn't find the compiled library. Did you compile it? -------------------------------------" "$LINENO" 5; fi # In Travis, do not show warnings. The GTest warnings cause a log overflow that errors the build. Nice :) if test -n "${TRAVIS_BRANCH}"; then CPPUTEST_CWARNINGFLAGS="" CPPUTEST_CXXWARNINGFLAGS="" fi else # When we don't compile with GMock, we can be a bit stricter on warnings. CPPUTEST_CWARNINGFLAGS="${CPPUTEST_CWARNINGFLAGS} ${CPPUTEST_CWARNINGFLAGS_STRICT}" CPPUTEST_CXXWARNINGFLAGS="${CPPUTEST_CXXWARNINGFLAGS} ${CPPUTEST_CXXWARNINGFLAGS_STRICT}" fi CPPUTEST_CFLAGS="${CPPUTEST_CFLAGS} ${CPPUTEST_CWARNINGFLAGS}" CPPUTEST_CXXFLAGS="${CPPUTEST_CXXFLAGS} ${CPPUTEST_CXXWARNINGFLAGS}" CPPUTEST_CPPFLAGS="${CPPUTEST_CPPFLAGS} -I ${srcdir}/include ${CPPUTEST_CPPWARNINGFLAGS}" if test "x${cpputest_flags}" = xno; then CPPUTEST_CFLAGS="" CPPUTEST_CXXFLAGS="" CPPUTEST_CPPFLAGS="" fi ############################## Values ######################################## ### All files in git if test -e "${srcdir}/.git"; then ALL_FILES_IN_GIT="`git --git-dir=${srcdir}/.git ls-files | tr ' \n' ' '`" fi # Variables to substitute # Replacement of tool flags ac_config_files="$ac_config_files Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${TEST_COMPILER_IS_CLANG_TRUE}" && test -z "${TEST_COMPILER_IS_CLANG_FALSE}"; then as_fn_error $? "conditional \"TEST_COMPILER_IS_CLANG\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_CPPUTEST_EXT_TRUE}" && test -z "${INCLUDE_CPPUTEST_EXT_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_CPPUTEST_EXT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${INCLUDE_GMOCKTESTS_TRUE}" && test -z "${INCLUDE_GMOCKTESTS_FALSE}"; then as_fn_error $? "conditional \"INCLUDE_GMOCKTESTS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by CppUTest $as_me 4.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ CppUTest config.status 4.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # PACKAGE="$PACKAGE" AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ DLLTOOL \ sharedlib_from_linklib_cmd \ AR \ AR_FLAGS \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ reload_flag_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_separator_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path \ reload_cmds_CXX \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX \ postlink_cmds_CXX; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "generated/CppUTestGeneratedConfig.h") CONFIG_COMMANDS="$CONFIG_COMMANDS generated/CppUTestGeneratedConfig.h" ;; "cpputest.pc") CONFIG_FILES="$CONFIG_FILES cpputest.pc" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "generated/CppUTestGeneratedConfig.h":C) ac_prefix_conf_OUT=`echo generated/CppUTestGeneratedConfig.h` ac_prefix_conf_DEF=`echo _$ac_prefix_conf_OUT | sed -e "y:abcdefghijklmnopqrstuvwxyz:ABCDEFGHIJKLMNOPQRSTUVWXYZ:" -e "s/[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g"` ac_prefix_conf_PKG=`echo $PACKAGE` ac_prefix_conf_LOW=`echo _$ac_prefix_conf_PKG | sed -e "y:ABCDEFGHIJKLMNOPQRSTUVWXYZ-:abcdefghijklmnopqrstuvwxyz_:"` ac_prefix_conf_UPP=`echo $ac_prefix_conf_PKG | sed -e "y:abcdefghijklmnopqrstuvwxyz-:ABCDEFGHIJKLMNOPQRSTUVWXYZ_:" -e "/^[0123456789]/s/^/_/"` ac_prefix_conf_INP=`echo "" | sed -e 's/ *//'` if test ".$ac_prefix_conf_INP" = "."; then for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue case "$ac_file" in *.h) ac_prefix_conf_INP=$ac_file ;; *) esac test ".$ac_prefix_conf_INP" != "." && break done fi if test ".$ac_prefix_conf_INP" = "."; then case "$ac_prefix_conf_OUT" in */*) ac_prefix_conf_INP=`basename "$ac_prefix_conf_OUT"` ;; *-*) ac_prefix_conf_INP=`echo "$ac_prefix_conf_OUT" | sed -e "s/[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*-//"` ;; *) ac_prefix_conf_INP=config.h ;; esac fi if test -z "$ac_prefix_conf_PKG" ; then as_fn_error $? "no prefix for _PREFIX_PKG_CONFIG_H" "$LINENO" 5 else if test ! -f "$ac_prefix_conf_INP" ; then if test -f "$srcdir/$ac_prefix_conf_INP" ; then ac_prefix_conf_INP="$srcdir/$ac_prefix_conf_INP" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&5 $as_echo "$as_me: creating $ac_prefix_conf_OUT - prefix $ac_prefix_conf_UPP for $ac_prefix_conf_INP defines" >&6;} if test -f $ac_prefix_conf_INP ; then $as_echo "s/^#undef *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_]\\)/#undef $ac_prefix_conf_UPP""_\\1/" > conftest.prefix $as_echo "s/^#undef *\\([abcdefghijklmnopqrstuvwxyz]\\)/#undef $ac_prefix_conf_LOW""_\\1/" >> conftest.prefix $as_echo "s/^#define *\\([ABCDEFGHIJKLMNOPQRSTUVWXYZ_][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_UPP""_\\1\\" >> conftest.prefix $as_echo "#define $ac_prefix_conf_UPP""_\\1\\2\\" >> conftest.prefix $as_echo "#endif/" >> conftest.prefix $as_echo "s/^#define *\\([abcdefghijklmnopqrstuvwxyz][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*\\)\\(.*\\)/#ifndef $ac_prefix_conf_LOW""_\\1\\" >> conftest.prefix $as_echo "#define $ac_prefix_conf_LOW""_\\1\\2\\" >> conftest.prefix $as_echo "#endif/" >> conftest.prefix # now executing _script on _DEF input to create _OUT output file echo "#ifndef $ac_prefix_conf_DEF" >$tmp/pconfig.h echo "#define $ac_prefix_conf_DEF 1" >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo /'*' $ac_prefix_conf_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h sed -f conftest.prefix $ac_prefix_conf_INP >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo '/* once:' $ac_prefix_conf_DEF '*/' >>$tmp/pconfig.h echo "#endif" >>$tmp/pconfig.h if cmp -s $ac_prefix_conf_OUT $tmp/pconfig.h 2>/dev/null; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_prefix_conf_OUT is unchanged" >&5 $as_echo "$as_me: $ac_prefix_conf_OUT is unchanged" >&6;} else ac_dir=`$as_dirname -- "$ac_prefix_conf_OUT" || $as_expr X"$ac_prefix_conf_OUT" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_prefix_conf_OUT" : 'X\(//\)[^/]' \| \ X"$ac_prefix_conf_OUT" : 'X\(//\)$' \| \ X"$ac_prefix_conf_OUT" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_prefix_conf_OUT" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p rm -f "$ac_prefix_conf_OUT" mv $tmp/pconfig.h "$ac_prefix_conf_OUT" fi else as_fn_error $? "input file $ac_prefix_conf_INP does not exist - skip generating $ac_prefix_conf_OUT" "$LINENO" 5 fi rm -f conftest.* fi ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. case $CONFIG_FILES in #( *\'*) : eval set x "$CONFIG_FILES" ;; #( *) : set x $CONFIG_FILES ;; #( *) : ;; esac shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`$as_dirname -- "$am_mf" || $as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$am_mf" : 'X\(//\)[^/]' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` am_filepart=`$as_basename -- "$am_mf" || $as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ X"$am_mf" : 'X\(//\)$' \| \ X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$am_mf" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` { echo "$as_me:$LINENO: cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles" >&5 (cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } || am_rc=$? done if test $am_rc -ne 0; then { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE=\"gmake\" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking). See \`config.log' for more details" "$LINENO" 5; } fi { am_dirpart=; unset am_dirpart;} { am_filepart=; unset am_filepart;} { am_mf=; unset am_mf;} { am_rc=; unset am_rc;} rm -f conftest-deps.mk } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='CXX ' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # DLL creation program. DLLTOOL=$lt_DLLTOOL # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive. AR_FLAGS=$lt_AR_FLAGS # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # How to create reloadable object files. reload_flag=$lt_reload_flag_CXX reload_cmds=$lt_reload_cmds_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo \ "---------------------------------------------------------------- ${PACKAGE_NAME} Version ${PACKAGE_VERSION} Current compiler options: CC: ${CC} CXX: ${CXX} CC version: ${ax_cv_c_compiler_version} CXX version: ${ax_cv_cxx_compiler_version} LD: ${LD} Default CFLAGS: ${CFLAGS} Default CXXFLAGS: ${CXXFLAGS} CppUTest CFLAGS: ${CPPUTEST_CFLAGS} CppUTest CXXFLAGS: ${CPPUTEST_CXXFLAGS} CppUTest CPPFLAGS: ${CPPUTEST_CPPFLAGS} CppUTest LDFLAGS: ${CPPUTEST_LDFLAGS} CppUTest LIB: ${LIBS} Features configured in ${PACKAGE_NAME}: C++ standard used: ${cpp_standard_used} Memory Leak Detection: ${memory_leak_detection} Compiling extensions: ${cpputest_ext} Use Long Long (if available): ${use_longlong} Disable CppUTest compile/link flags: ${cpputest_flags} Address sanitizer: ${sanitize_address} Using Standard C++ Library: ${use_std_cpp} Using Standard C Library: ${use_std_c} Generating map file: ${generate_map_file} Compiling w coverage info: ${coverage} ----------------------------------------------------------------" cpputest-4.0/CppUTest_VS201x.sln000644 000765 000024 00000003714 13663176127 017447 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "tests\AllTests.vcxproj", "{913088F6-37C0-4195-80E9-548C7C5303CB}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUTest", "CppUTest.vcxproj", "{F468F539-27BD-468E-BE64-DDE641400B51}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 Release|Win32 = Release|Win32 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|Win32.ActiveCfg = Debug|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|Win32.Build.0 = Debug|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|x64.ActiveCfg = Debug|x64 {913088F6-37C0-4195-80E9-548C7C5303CB}.Debug|x64.Build.0 = Debug|x64 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|Win32.ActiveCfg = Release|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|Win32.Build.0 = Release|Win32 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|x64.ActiveCfg = Release|x64 {913088F6-37C0-4195-80E9-548C7C5303CB}.Release|x64.Build.0 = Release|x64 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|Win32.ActiveCfg = Debug|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|Win32.Build.0 = Debug|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|x64.ActiveCfg = Debug|x64 {F468F539-27BD-468E-BE64-DDE641400B51}.Debug|x64.Build.0 = Debug|x64 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|Win32.ActiveCfg = Release|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|Win32.Build.0 = Release|Win32 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|x64.ActiveCfg = Release|x64 {F468F539-27BD-468E-BE64-DDE641400B51}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-4.0/ChangeLog000644 000765 000024 00000000114 13663176127 015740 0ustar00basvoddestaff000000 000000 For changelog check the github page: https://github.com/cpputest/cpputest cpputest-4.0/AUTHORS000644 000765 000024 00000000311 13663176127 015235 0ustar00basvoddestaff000000 000000 The current main authors of CppUTest are James Grenning and Bas Vodde. Thanks for all the other contributions. You can find them on github at: https://github.com/cpputest/cpputest/graphs/contributorscpputest-4.0/gcovr.cfg000644 000765 000024 00000000151 13663176127 015770 0ustar00basvoddestaff000000 000000 filter = src/ filter = include/ html = yes html-details = yes output = coverage.html print-summary = yes cpputest-4.0/CppUTest.vcxproj000644 000765 000024 00000040002 13663176127 017312 0ustar00basvoddestaff000000 000000  Debug Win32 Debug x64 Release Win32 Release x64 {F468F539-27BD-468E-BE64-DDE641400B51} StaticLibrary false MultiByte StaticLibrary false MultiByte StaticLibrary false MultiByte StaticLibrary false MultiByte <_ProjectFileVersion>10.0.30319.1 lib\ lib\ cpputest_build\Debug\$(ProjectName)\ cpputest_build\Debug\$(ProjectName)\ lib\ lib\ cpputest_build\Release\$(ProjectName)\ cpputest_build\Release\$(ProjectName)\ $(ProjectName)d $(ProjectName)d Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _LIB;WIN32;_DEBUG;STDC_WANT_SECURE_LIB;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Debug/CppUTestd.bsc true Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _LIB;WIN32;_DEBUG;STDC_WANT_SECURE_LIB;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL Level3 true ProgramDatabase _DEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Debug/CppUTestd.bsc true Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OnlyExplicitInline WIN32;NDEBUG;_LIB;STDC_WANT_SECURE_LIB;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true OldStyle true NDEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Release/CppUTest.bsc true Disabled .\include;.\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OnlyExplicitInline WIN32;NDEBUG;_LIB;STDC_WANT_SECURE_LIB;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true OldStyle true NDEBUG;%(PreprocessorDefinitions) 0x0409 true winmm.lib;%(AdditionalDependencies) true .\Release/CppUTest.bsc true cpputest-4.0/include/000755 000765 000024 00000000000 13663444566 015622 5ustar00basvoddestaff000000 000000 cpputest-4.0/CppUTest.vcproj000644 000765 000024 00000060237 13663176127 017136 0ustar00basvoddestaff000000 000000 cpputest-4.0/tests/000755 000765 000024 00000000000 13663444567 015342 5ustar00basvoddestaff000000 000000 cpputest-4.0/config.h.in000644 000765 000024 00000012737 13663444566 016234 0ustar00basvoddestaff000000 000000 /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the `fork' function. */ #undef HAVE_FORK /* Define to 1 if you have the `gettimeofday' function. */ #undef HAVE_GETTIMEOFDAY /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if the system has the type `long long int'. */ #undef HAVE_LONG_LONG_INT /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define if you have POSIX threads libraries and header files. */ #undef HAVE_PTHREAD /* Define to 1 if you have the `pthread_mutex_lock' function. */ #undef HAVE_PTHREAD_MUTEX_LOCK /* Define to 1 if you have the header file. */ #undef HAVE_STDDEF_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strstr' function. */ #undef HAVE_STRSTR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TIME_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to 1 if the system has the type `unsigned long long int'. */ #undef HAVE_UNSIGNED_LONG_LONG_INT /* Define to 1 if you have the `vfork' function. */ #undef HAVE_VFORK /* Define to 1 if you have the header file. */ #undef HAVE_VFORK_H /* Define to 1 if `fork' works. */ #undef HAVE_WORKING_FORK /* Define to 1 if `vfork' works. */ #undef HAVE_WORKING_VFORK /* Include the GTest-related tests in the build */ #undef INCLUDE_GTEST_TESTS /* disable long long */ #undef LONG_LONG_DISABLED /* Define to the sub-directory where libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* memory leak detection disabled */ #undef MEM_LEAK_DETECTION_DISABLED /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to necessary symbol if this constant uses a non-standard name on your system. */ #undef PTHREAD_CREATE_JOINABLE /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Standard C++ library disabled */ #undef STD_CPP_LIB_DISABLED /* Standard C library disabled */ #undef STD_C_LIB_DISABLED /* Version number of package */ #undef VERSION /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT32_T /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT64_T /* Define for Solaris 2.5.1 so the uint8_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ #undef _UINT8_T /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus #undef inline #endif /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef int16_t /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef int32_t /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef int64_t /* Define to the type of a signed integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef int8_t /* Define to `int' if does not define. */ #undef pid_t /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ #undef uint16_t /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ #undef uint32_t /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ #undef uint64_t /* Define to the type of an unsigned integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ #undef uint8_t /* Define as `fork' if `vfork' does not work. */ #undef vfork cpputest-4.0/Makefile_CppUTestExt000644 000765 000024 00000001015 13663176127 020077 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet ifndef SILENCE SILENCE = @ endif #---- Outputs ----# COMPONENT_NAME = CppUTestExt #--- Inputs ----# CPPUTEST_HOME = . CPP_PLATFORM = Gcc WARNINGFLAGS = -pedantic-errors -Wall -Wextra -Werror -Wshadow -Wswitch-default -Wswitch-enum -Wconversion SRC_DIRS = src/CppUTestExt TEST_SRC_DIRS = tests/CppUTestExt INCLUDE_DIRS = $(CPPUTEST_HOME)/include LD_LIBRARIES += -lstdc++ -L$(CPPUTEST_LIB_DIR)/$(TARGET_PLATFORM) -lCppUTest include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-4.0/Makefile_using_MakefileWorker000644 000765 000024 00000010307 13663176127 022027 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #--- Inputs ----# COMPONENT_NAME = CppUTest ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPP_PLATFORM = GccNoStdC else CPP_PLATFORM = Gcc endif CPPUTEST_HOME = . OLD_MAKE = oldmake MAKE_CMD = make -f $(CPPUTEST_HOME)/Makefile_using_MakefileWorker CPPUTEST_ENABLE_DEBUG = Y SRC_DIRS = \ src/CppUTest \ src/Platforms/$(CPP_PLATFORM) TEST_SRC_DIRS = \ tests/CppUTest INCLUDE_DIRS =\ include include $(CPPUTEST_HOME)/build/MakefileWorker.mk #these are a sample of the other alternative flag settings .PHONY: test_all test_all: start @echo Building with the default flags. $(MAKE_CMD) clean $(TIME) $(MAKE_CMD) ./$(TEST_TARGET) -r $(MAKE_CMD) clean @echo Building with the STDC++ new disabled. $(TIME) $(MAKE_CMD) CPPUTEST_USE_STD_CPP_LIB=Y extensions $(MAKE_CMD) CPPUTEST_USE_STD_CPP_LIB=Y cleanExtensions @echo Building with Memory Leak Detection disabled $(TIME) $(MAKE_CMD) CPPUTEST_USE_MEM_LEAK_DETECTION=N extensions $(MAKE_CMD) CPPUTEST_USE_MEM_LEAK_DETECTION=N cleanExtensions @echo Building with Memory Leak Detection disabled and STD C++ disabled $(TIME) $(MAKE_CMD) CPPUTEST_USE_MEM_LEAK_DETECTION=N CPPUTEST_USE_STD_CPP_LIB=Y extensions $(MAKE_CMD) CPPUTEST_USE_MEM_LEAK_DETECTION=N CPPUTEST_USE_STD_CPP_LIB=Y cleanExtensions @echo Building with debug disabled $(TIME) $(MAKE_CMD) CPPUTEST_ENABLE_DEBUG=N extensions $(MAKE_CMD) CPPUTEST_ENABLE_DEBUG=N cleanExtensions @echo Building with overridden CXXFLAGS and CFLAGS and CPPFLAGS $(TIME) $(MAKE_CMD) CLFAGS="" CXXFLAGS="" CPPFLAGS="-Iinclude" $(MAKE_CMD) CFLAGS="" CXXFLAGS="" clean @echo Building without Standard C library includes $(TIME) $(MAKE_CMD) CPPUTEST_USE_STD_C_LIB=N all_no_tests $(MAKE_CMD) CPPUTEST_USE_STD_C_LIB=N clean @echo Building with a different TARGET_PLATFORM $(MAKE_CMD) TARGET_PLATFORM=real_platform @echo Building with overridden CXXFLAGS and CFLAGS and memory leak and STDC++ disabled $(TIME) $(MAKE_CMD) CLFAGS="" CXXFLAGS="" CPPFLAGS="-Iinclude -DCPPUTEST_STD_CPP_LIB_DISABLED -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED" $(MAKE_CMD) CFLAGS="" CXXFLAGS="" CPPFLAGS="-DCPPUTEST_STD_CPP_LIB_DISABLED -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED" clean @echo Building examples $(MAKE_CMD) cleanExamples $(TIME) $(MAKE_CMD) examples $(MAKE_CMD) cleanExamples @echo Testing JUnit output $(TIME) $(MAKE_CMD) $(SILENCE)./$(TEST_TARGET) -ojunit > junit_run_output $(SILENCE)if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi $(MAKE_CMD) clean $(MAKE_CMD) CPPUTEST_MAP_FILE=map.txt $(MAKE_CMD) clean @echo Testing GCOV usage $(TIME) $(MAKE_CMD) CPPUTEST_USE_GCOV=Y everythingInstall $(MAKE_CMD) gcov $(MAKE) -f Makefile_CppUTestExt gcov $(MAKE) -C examples gcov $(MAKE_CMD) cleanEverythingInstall @echo Testing VPATH usage $(TIME) $(MAKE_CMD) CPPUTEST_USE_GCOV=Y CPPUTEST_USE_VPATH=Y everythingInstall $(MAKE_CMD) CPPUTEST_USE_VPATH=Y gcov $(MAKE) CPPUTEST_USE_VPATH=Y -f Makefile_CppUTestExt gcov $(MAKE) CPPUTEST_USE_VPATH=Y -C examples gcov $(MAKE_CMD) clean cleanExamples @echo Testing VPATH usage $(TIME) $(MAKE_CMD) CPPUTEST_USE_VPATH=Y everythingInstall $(MAKE_CMD) CPPUTEST_USE_VPATH=Y cleanEverythingInstall $(MAKE_CMD) flags $(MAKE_CMD) debug .PHONY: examples examples: $(TEST_TARGET) extensions +$(TIME) $(MAKE) -C examples all CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) extensions: $(TEST_TARGET) +$(TIME) $(MAKE) -f Makefile_CppUTestExt all CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) TARGET_PLATFORM=$(TARGET_PLATFORM) cleanExtensions: clean +$(TIME) $(MAKE) -f Makefile_CppUTestExt clean CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) TARGET_PLATFORM=$(TARGET_PLATFORM) cleanExamples: clean cleanExtensions +$(TIME) $(MAKE) -C examples clean CPPUTEST_USE_STD_CPP_LIB=$(CPPUTEST_USE_STD_CPP_LIB) CPPUTEST_USE_MEM_LEAK_DETECTION=$(CPPUTEST_USE_MEM_LEAK_DETECTION) .PHONY: everythingInstall everythingInstall: all extensions examples .PHONY: cleanEverythingInstall cleanEverythingInstall: clean cleanExtensions cleanExamples cpputest-4.0/config.guess000755 000765 000024 00000136471 13663176420 016522 0ustar00basvoddestaff000000 000000 #! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. tmp= # shellcheck disable=SC2172 trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 set_cc_for_build() { # prevent multiple calls if $tmp is already set test "$tmp" && return 0 : "${TMPDIR=/tmp}" # shellcheck disable=SC2039 { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } dummy=$tmp/dummy case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in ,,) echo "int x;" > "$dummy.c" for driver in cc gcc c89 c99 ; do if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$driver" break fi done if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac } # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if test -f /.attbin/uname ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "$UNAME_SYSTEM" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu set_cc_for_build cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`" # If ldd exists, use it to detect musl libc. if command -v ldd >/dev/null && \ ldd --version 2>&1 | grep -q ^musl then LIBC=musl fi ;; esac # Note: order is significant - the case branches are not exclusive. case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ "/sbin/$sysctl" 2>/dev/null || \ "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` case "$UNAME_MACHINE_ARCH" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` machine="${arch}${endian}"-unknown ;; *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "$UNAME_VERSION" in Debian*) release='-gnu' ;; *) release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "$machine-${os}${release}${abi-}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE" exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) echo "$UNAME_MACHINE"-unknown-midnightbsd"$UNAME_RELEASE" exit ;; *:ekkoBSD:*:*) echo "$UNAME_MACHINE"-unknown-ekkobsd"$UNAME_RELEASE" exit ;; *:SolidBSD:*:*) echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE" exit ;; *:OS108:*:*) echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE" exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:MirBSD:*:*) echo "$UNAME_MACHINE"-unknown-mirbsd"$UNAME_RELEASE" exit ;; *:Sortix:*:*) echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Twizzler:*:*) echo "$UNAME_MACHINE"-unknown-twizzler exit ;; *:Redox:*:*) echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`" # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo "$UNAME_MACHINE"-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix"$UNAME_RELEASE" exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`" exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux"$UNAME_RELEASE" exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`" exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos"$UNAME_RELEASE" exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos"$UNAME_RELEASE" ;; sun4) echo sparc-sun-sunos"$UNAME_RELEASE" ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos"$UNAME_RELEASE" exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint"$UNAME_RELEASE" exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint"$UNAME_RELEASE" exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint"$UNAME_RELEASE" exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint"$UNAME_RELEASE" exit ;; m68k:machten:*:*) echo m68k-apple-machten"$UNAME_RELEASE" exit ;; powerpc:machten:*:*) echo powerpc-apple-machten"$UNAME_RELEASE" exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix"$UNAME_RELEASE" exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix"$UNAME_RELEASE" exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix"$UNAME_RELEASE" exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`"$dummy" "$dummyarg"` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos"$UNAME_RELEASE" exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ] then if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \ [ "$TARGET_BINARY_INTERFACE"x = x ] then echo m88k-dg-dgux"$UNAME_RELEASE" else echo m88k-dg-dguxbcs"$UNAME_RELEASE" fi else echo i586-dg-dgux"$UNAME_RELEASE" fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`" exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$UNAME_MACHINE"-ibm-aix"$IBM_REV" exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV="$UNAME_VERSION.$UNAME_RELEASE" fi echo "$IBM_ARCH"-ibm-aix"$IBM_REV" exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd"$UNAME_RELEASE" # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` case "$UNAME_MACHINE" in 9000/31?) HP_ARCH=m68000 ;; 9000/[34]??) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "$sc_cpu_version" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "$sc_kernel_bits" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "$HP_ARCH" = "" ]; then set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ "$HP_ARCH" = hppa2.0w ] then set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo "$HP_ARCH"-hp-hpux"$HPUX_REV" exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux"$HPUX_REV" exit ;; 3050*:HI-UX:*:*) set_cc_for_build sed 's/^ //' << EOF > "$dummy.c" #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo "$UNAME_MACHINE"-unknown-osf1mk else echo "$UNAME_MACHINE"-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo "$UNAME_MACHINE"-pc-bsdi"$UNAME_RELEASE" exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi"$UNAME_RELEASE" exit ;; *:BSD/OS:*:*) echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE" exit ;; arm:FreeBSD:*:*) UNAME_PROCESSOR=`uname -p` set_cc_for_build if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi else echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf fi exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; i*:CYGWIN*:*) echo "$UNAME_MACHINE"-pc-cygwin exit ;; *:MINGW64*:*) echo "$UNAME_MACHINE"-pc-mingw64 exit ;; *:MINGW*:*) echo "$UNAME_MACHINE"-pc-mingw32 exit ;; *:MSYS*:*) echo "$UNAME_MACHINE"-pc-msys exit ;; i*:PW*:*) echo "$UNAME_MACHINE"-pc-pw32 exit ;; *:Interix*:*) case "$UNAME_MACHINE" in x86) echo i586-pc-interix"$UNAME_RELEASE" exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix"$UNAME_RELEASE" exit ;; IA64) echo ia64-unknown-interix"$UNAME_RELEASE" exit ;; esac ;; i*:UWIN*:*) echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-pc-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" exit ;; *:GNU:*:*) # the GNU system echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`" exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC" exit ;; *:Minix:*:*) echo "$UNAME_MACHINE"-unknown-minix exit ;; aarch64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; arm*:Linux:*:*) set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabi else echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"eabihf fi fi exit ;; avr32*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; cris:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; crisv32:Linux:*:*) echo "$UNAME_MACHINE"-axis-linux-"$LIBC" exit ;; e2k:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; frv:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; hexagon:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; ia64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; k1om:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m32r*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; m68*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; mips:Linux:*:* | mips64:Linux:*:*) set_cc_for_build IS_GLIBC=0 test x"${LIBC}" = xgnu && IS_GLIBC=1 sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef mips #undef mipsel #undef mips64 #undef mips64el #if ${IS_GLIBC} && defined(_ABI64) LIBCABI=gnuabi64 #else #if ${IS_GLIBC} && defined(_ABIN32) LIBCABI=gnuabin32 #else LIBCABI=${LIBC} #endif #endif #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa64r6 #else #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 CPU=mipsisa32r6 #else #if defined(__mips64) CPU=mips64 #else CPU=mips #endif #endif #endif #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) MIPS_ENDIAN=el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) MIPS_ENDIAN= #else MIPS_ENDIAN= #endif #endif EOF eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'`" test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } ;; mips64el:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; padre:Linux:*:*) echo sparc-unknown-linux-"$LIBC" exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-"$LIBC" exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;; PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;; *) echo hppa-unknown-linux-"$LIBC" ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-"$LIBC" exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-"$LIBC" exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-"$LIBC" exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-"$LIBC" exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo "$UNAME_MACHINE"-ibm-linux-"$LIBC" exit ;; sh64*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sh*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; tile*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; vax:Linux:*:*) echo "$UNAME_MACHINE"-dec-linux-"$LIBC" exit ;; x86_64:Linux:*:*) echo "$UNAME_MACHINE"-pc-linux-"$LIBC" exit ;; xtensa*:Linux:*:*) echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo "$UNAME_MACHINE"-pc-sysv4.2uw"$UNAME_VERSION" exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo "$UNAME_MACHINE"-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo "$UNAME_MACHINE"-unknown-stop exit ;; i*86:atheos:*:*) echo "$UNAME_MACHINE"-unknown-atheos exit ;; i*86:syllable:*:*) echo "$UNAME_MACHINE"-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos"$UNAME_RELEASE" exit ;; i*86:*DOS:*:*) echo "$UNAME_MACHINE"-pc-msdosdjgpp exit ;; i*86:*:4.*:*) UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv"$UNAME_REL" fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}" exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo "$UNAME_MACHINE"-pc-sco"$UNAME_REL" else echo "$UNAME_MACHINE"-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv"$UNAME_RELEASE" # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv"$UNAME_RELEASE" # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos"$UNAME_RELEASE" exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos"$UNAME_RELEASE" exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos"$UNAME_RELEASE" exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos"$UNAME_RELEASE" exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv"$UNAME_RELEASE" exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo "$UNAME_MACHINE"-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo "$UNAME_MACHINE"-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux"$UNAME_RELEASE" exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv"$UNAME_RELEASE" else echo mips-unknown-sysv"$UNAME_RELEASE" fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux"$UNAME_RELEASE" exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux"$UNAME_RELEASE" exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux"$UNAME_RELEASE" exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux"$UNAME_RELEASE" exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux"$UNAME_RELEASE" exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux"$UNAME_RELEASE" exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux"$UNAME_RELEASE" exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Rhapsody:*:*) echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE" exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac if command -v xcode-select > /dev/null 2> /dev/null && \ ! xcode-select --print-path > /dev/null 2> /dev/null ; then # Avoid executing cc if there is no toolchain installed as # cc will be a stub that puts up a graphical alert # prompting the user to install developer tools. CC_FOR_BUILD=no_compiler_found else set_cc_for_build fi if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi elif test "$UNAME_PROCESSOR" = i386 ; then # uname -m returns i386 or x86_64 UNAME_PROCESSOR=$UNAME_MACHINE fi echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE" exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo "$UNAME_PROCESSOR"-"$UNAME_MACHINE"-nto-qnx"$UNAME_RELEASE" exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk"$UNAME_RELEASE" exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk"$UNAME_RELEASE" exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk"$UNAME_RELEASE" exit ;; NSV-*:NONSTOP_KERNEL:*:*) echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo "$UNAME_MACHINE"-"$UNAME_SYSTEM"-"$UNAME_RELEASE" exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. # shellcheck disable=SC2154 if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux"$UNAME_RELEASE" exit ;; *:DragonFly:*:*) echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`" exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "$UNAME_MACHINE" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`" exit ;; i*86:rdos:*:*) echo "$UNAME_MACHINE"-pc-rdos exit ;; i*86:AROS:*:*) echo "$UNAME_MACHINE"-pc-aros exit ;; x86_64:VMkernel:*:*) echo "$UNAME_MACHINE"-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; *:Unleashed:*:*) echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE" exit ;; esac # No uname command or uname output not recognized. set_cc_for_build cat > "$dummy.c" < #include #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #include #if defined(_SIZE_T_) || defined(SIGLOST) #include #endif #endif #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) #if !defined (ultrix) #include #if defined (BSD) #if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); #else #if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); #else printf ("vax-dec-bsd\n"); exit (0); #endif #endif #else printf ("vax-dec-bsd\n"); exit (0); #endif #else #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname un; uname (&un); printf ("vax-dec-ultrix%s\n", un.release); exit (0); #else printf ("vax-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) #if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) #if defined(_SIZE_T_) || defined(SIGLOST) struct utsname *un; uname (&un); printf ("mips-dec-ultrix%s\n", un.release); exit (0); #else printf ("mips-dec-ultrix\n"); exit (0); #endif #endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } echo "$0: unable to guess system type" >&2 case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&2 <&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = "$UNAME_MACHINE" UNAME_RELEASE = "$UNAME_RELEASE" UNAME_SYSTEM = "$UNAME_SYSTEM" UNAME_VERSION = "$UNAME_VERSION" EOF exit 1 # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cpputest-4.0/depcomp000755 000765 000024 00000056020 13663176420 015546 0ustar00basvoddestaff000000 000000 #! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2020 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cpputest-4.0/missing000755 000765 000024 00000015336 13663176420 015575 0ustar00basvoddestaff000000 000000 #! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1996-2020 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=https://www.perl.org/ flex_URL=https://github.com/westes/flex gnu_software_URL=https://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cpputest-4.0/builds/000755 000765 000024 00000000000 13663444566 015461 5ustar00basvoddestaff000000 000000 cpputest-4.0/README000644 000765 000024 00000000126 13663176127 015051 0ustar00basvoddestaff000000 000000 Please see the README.md. This file exists to be compliant to GNU coding standards. cpputest-4.0/config.h.cmake000644 000765 000024 00000000372 13663176127 016671 0ustar00basvoddestaff000000 000000 #ifndef CONFIG_H_ #define CONFIG_H_ #cmakedefine CPPUTEST_MEM_LEAK_DETECTION_DISABLED #cmakedefine CPPUTEST_USE_LONG_LONG #cmakedefine CPPUTEST_STD_C_LIB_DISABLED #cmakedefine CPPUTEST_STD_CPP_LIB_DISABLED #cmakedefine INCLUDE_GTEST_TESTS #endif cpputest-4.0/valgrind.suppressions000644 000765 000024 00000002263 13663176127 020502 0ustar00basvoddestaff000000 000000 { Supressions because the memory leak detector will print content of memory but can't know whether it is initialized or not Memcheck:Cond fun:strnlen fun:vfprintf fun:__vsnprintf_chk } { Same as the above, but this one is more specific for clang. This allows the clang to fail on other vprintf errors where it is suppressed at gcc Memcheck:Cond ... fun:_ZN18SimpleStringBuffer3addEPKcz ... fun:_ZN18MemoryLeakDetector25ConstructMemoryLeakReportE13MemLeakPeriod fun:_ZN18MemoryLeakDetector6reportE13MemLeakPeriod ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN45TEST_BasicBehavior_freeInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN47TEST_BasicBehavior_deleteInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } { Supression because it checks whether the memory was set invalid after a de-alloc Memcheck:Addr1 fun:_ZN52TEST_BasicBehavior_deleteArrayInvalidatesMemory_Test8testBodyEv fun:PlatformSpecificSetJmp ... } cpputest-4.0/Makefile.am000644 000765 000024 00000044004 13663176127 016230 0ustar00basvoddestaff000000 000000 ACLOCAL_AMFLAGS = -I m4 CPPUTEST_TESTS = CppUTestTests CPPUTESTEXT_TESTS = CppUTestExtTests EXTRA_LIBRARIES = lib/libCppUTestExt.a EXTRA_PROGRAMS = CppUTestExtTests lib_LIBRARIES = lib/libCppUTest.a check_PROGRAMS = $(CPPUTEST_TESTS) if INCLUDE_CPPUTEST_EXT lib_LIBRARIES+= lib/libCppUTestExt.a check_PROGRAMS += $(CPPUTESTEXT_TESTS) endif if INCLUDE_GMOCKTESTS # check_PROGRAMS += GTestTests endif TESTS = $(check_PROGRAMS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpputest.pc cmakemodulesdir = $(libdir)/CppUTest/cmake/Modules cmakemodules_DATA = \ cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake cmakescriptsdir = $(libdir)/CppUTest/cmake/Scripts cmakescripts_DATA = \ cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake cmakedir = $(libdir)/CppUTest/cmake cmake_DATA = \ build/cmake_package_files/CppUTestConfig.cmake \ build/cmake_package_files/CppUTestConfigVersion.cmake \ build/cmake_package_files/CppUTestTargets-relwithdebinfo.cmake \ build/cmake_package_files/CppUTestTargets.cmake EXTRA_DIST = \ cpputest.pc.in \ $(ALL_FILES_IN_GIT) lib_libCppUTest_a_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) lib_libCppUTest_a_CFLAGS = $(AM_CFLAGS) $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) lib_libCppUTest_a_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) lib_libCppUTest_a_SOURCES = \ src/CppUTest/CommandLineArguments.cpp \ src/CppUTest/CommandLineTestRunner.cpp \ src/CppUTest/JUnitTestOutput.cpp \ src/CppUTest/MemoryLeakDetector.cpp \ src/CppUTest/MemoryLeakWarningPlugin.cpp \ src/CppUTest/SimpleString.cpp \ src/CppUTest/SimpleStringInternalCache.cpp \ src/CppUTest/SimpleMutex.cpp \ src/CppUTest/TeamCityTestOutput.cpp \ src/CppUTest/TestFailure.cpp \ src/CppUTest/TestFilter.cpp \ src/CppUTest/TestHarness_c.cpp \ src/CppUTest/TestMemoryAllocator.cpp \ src/CppUTest/TestOutput.cpp \ src/CppUTest/TestPlugin.cpp \ src/CppUTest/TestRegistry.cpp \ src/CppUTest/TestResult.cpp \ src/CppUTest/TestTestingFixture.cpp \ src/CppUTest/Utest.cpp \ src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp include_cpputestdir = $(includedir)/CppUTest include_cpputest_HEADERS = \ include/CppUTest/CommandLineArguments.h \ include/CppUTest/CommandLineTestRunner.h \ include/CppUTest/CppUTestConfig.h \ include/CppUTest/JUnitTestOutput.h \ include/CppUTest/MemoryLeakDetector.h \ include/CppUTest/MemoryLeakDetectorMallocMacros.h \ include/CppUTest/MemoryLeakDetectorNewMacros.h \ include/CppUTest/MemoryLeakWarningPlugin.h \ include/CppUTest/PlatformSpecificFunctions.h \ include/CppUTest/PlatformSpecificFunctions_c.h \ include/CppUTest/SimpleString.h \ include/CppUTest/SimpleStringInternalCache.h \ include/CppUTest/SimpleMutex.h \ include/CppUTest/StandardCLibrary.h \ include/CppUTest/TeamCityTestOutput.h \ include/CppUTest/TestFailure.h \ include/CppUTest/TestFilter.h \ include/CppUTest/TestHarness.h \ include/CppUTest/TestHarness_c.h \ include/CppUTest/TestMemoryAllocator.h \ include/CppUTest/TestOutput.h \ include/CppUTest/TestPlugin.h \ include/CppUTest/TestRegistry.h \ include/CppUTest/TestResult.h \ include/CppUTest/TestTestingFixture.h \ include/CppUTest/Utest.h \ include/CppUTest/UtestMacros.h \ generated/CppUTestGeneratedConfig.h lib_libCppUTestExt_a_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) lib_libCppUTestExt_a_CFLAGS = $(lib_libCppUTest_a_CFLAGS) lib_libCppUTestExt_a_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) lib_libCppUTestExt_a_SOURCES = \ src/CppUTestExt/CodeMemoryReportFormatter.cpp \ src/CppUTestExt/GTest.cpp \ src/CppUTestExt/IEEE754ExceptionsPlugin.cpp \ src/CppUTestExt/MemoryReportAllocator.cpp \ src/CppUTestExt/MemoryReporterPlugin.cpp \ src/CppUTestExt/MemoryReportFormatter.cpp \ src/CppUTestExt/MockActualCall.cpp \ src/CppUTestExt/MockExpectedCall.cpp \ src/CppUTestExt/MockExpectedCallsList.cpp \ src/CppUTestExt/MockFailure.cpp \ src/CppUTestExt/MockNamedValue.cpp \ src/CppUTestExt/MockSupport.cpp \ src/CppUTestExt/MockSupportPlugin.cpp \ src/CppUTestExt/MockSupport_c.cpp \ src/CppUTestExt/OrderedTest.cpp if INCLUDE_CPPUTEST_EXT include_cpputestextdir = $(includedir)/CppUTestExt include_cpputestext_HEADERS = \ include/CppUTestExt/CodeMemoryReportFormatter.h \ include/CppUTestExt/GMock.h \ include/CppUTestExt/GTest.h \ include/CppUTestExt/GTestSupport.h \ include/CppUTestExt/GTestConvertor.h \ include/CppUTestExt/IEEE754ExceptionsPlugin.h \ include/CppUTestExt/MemoryReportAllocator.h \ include/CppUTestExt/MemoryReporterPlugin.h \ include/CppUTestExt/MemoryReportFormatter.h \ include/CppUTestExt/MockActualCall.h \ include/CppUTestExt/MockCheckedActualCall.h \ include/CppUTestExt/MockCheckedExpectedCall.h \ include/CppUTestExt/MockExpectedCall.h \ include/CppUTestExt/MockExpectedCallsList.h \ include/CppUTestExt/MockFailure.h \ include/CppUTestExt/MockNamedValue.h \ include/CppUTestExt/MockSupport.h \ include/CppUTestExt/MockSupportPlugin.h \ include/CppUTestExt/MockSupport_c.h \ include/CppUTestExt/OrderedTest.h endif CppUTestTests_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) CppUTestTests_CFLAGS = $(lib_libCppUTest_a_CFLAGS) CppUTestTests_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) CppUTestTests_LDADD = lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestTests_LDFLAGS = $(AM_LDFLAGS) $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) CppUTestTests_SOURCES = \ tests/CppUTest/AllocationInCFile.c \ tests/CppUTest/AllocationInCppFile.cpp \ tests/CppUTest/AllocLetTestFree.c \ tests/CppUTest/AllocLetTestFreeTest.cpp \ tests/CppUTest/AllTests.cpp \ tests/CppUTest/CheatSheetTest.cpp \ tests/CppUTest/CompatabilityTests.cpp \ tests/CppUTest/CommandLineArgumentsTest.cpp \ tests/CppUTest/CommandLineTestRunnerTest.cpp \ tests/CppUTest/DummyMemoryLeakDetector.cpp \ tests/CppUTest/JUnitOutputTest.cpp \ tests/CppUTest/MemoryLeakDetectorTest.cpp \ tests/CppUTest/MemoryOperatorOverloadTest.cpp \ tests/CppUTest/MemoryLeakWarningTest.cpp \ tests/CppUTest/PluginTest.cpp \ tests/CppUTest/PreprocessorTest.cpp \ tests/CppUTest/SetPluginTest.cpp \ tests/CppUTest/SimpleStringTest.cpp \ tests/CppUTest/SimpleStringCacheTest.cpp \ tests/CppUTest/SimpleMutexTest.cpp \ tests/CppUTest/TeamCityOutputTest.cpp \ tests/CppUTest/TestFailureNaNTest.cpp \ tests/CppUTest/TestFailureTest.cpp \ tests/CppUTest/TestFilterTest.cpp \ tests/CppUTest/TestHarness_cTest.cpp \ tests/CppUTest/TestHarness_cTestCFile.c \ tests/CppUTest/TestInstallerTest.cpp \ tests/CppUTest/TestMemoryAllocatorTest.cpp \ tests/CppUTest/TestOutputTest.cpp \ tests/CppUTest/TestRegistryTest.cpp \ tests/CppUTest/TestResultTest.cpp \ tests/CppUTest/TestUTestMacro.cpp \ tests/CppUTest/TestUTestStringMacro.cpp \ tests/CppUTest/UtestTest.cpp \ tests/CppUTest/UtestPlatformTest.cpp CppUTestExtTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) CppUTestExtTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) CppUTestExtTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) CppUTestExtTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestExtTests_LDFLAGS = $(CppUTestTests_LDFLAGS) CppUTestExtTests_SOURCES = \ tests/CppUTestExt/AllTests.cpp \ tests/CppUTestExt/CodeMemoryReporterTest.cpp \ tests/CppUTestExt/GMockTest.cpp \ tests/CppUTestExt/GTest1Test.cpp \ tests/CppUTestExt/GTest2ConvertorTest.cpp \ tests/CppUTestExt/IEEE754PluginTest.cpp \ tests/CppUTestExt/IEEE754PluginTest_c.c \ tests/CppUTestExt/MemoryReportAllocatorTest.cpp \ tests/CppUTestExt/MemoryReporterPluginTest.cpp \ tests/CppUTestExt/MemoryReportFormatterTest.cpp \ tests/CppUTestExt/MockActualCallTest.cpp \ tests/CppUTestExt/MockCheatSheetTest.cpp \ tests/CppUTestExt/MockCallTest.cpp \ tests/CppUTestExt/MockComparatorCopierTest.cpp \ tests/CppUTestExt/MockExpectedCallTest.cpp \ tests/CppUTestExt/ExpectedFunctionsListTest.cpp \ tests/CppUTestExt/MockFailureReporterForTest.cpp \ tests/CppUTestExt/MockFailureTest.cpp \ tests/CppUTestExt/MockHierarchyTest.cpp \ tests/CppUTestExt/MockNamedValueTest.cpp \ tests/CppUTestExt/MockParameterTest.cpp \ tests/CppUTestExt/MockPluginTest.cpp \ tests/CppUTestExt/MockSupportTest.cpp \ tests/CppUTestExt/MockSupport_cTest.cpp \ tests/CppUTestExt/MockSupport_cTestCFile.c \ tests/CppUTestExt/MockStrictOrderTest.cpp \ tests/CppUTestExt/MockReturnValueTest.cpp \ tests/CppUTestExt/OrderedTestTest.cpp \ tests/CppUTestExt/OrderedTestTest_c.c \ tests/CppUTestExt/MockFakeLongLong.cpp DISTCLEANFILES = \ filename.map.txt \ generated/CppUTestGeneratedConfig.h if INCLUDE_GMOCKTESTS #GTestTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) #GTestTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) #GTestTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) -DCPPUTEST_USE_MEM_LEAK_DETECTION=0 -DGMOCK_RENAME_MAIN=1 -D_THREAD_SAFE -DGTEST_HAS_PTHREAD=1 #GTestTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) #GTestTests_LDFLAGS = $(CppUTestTests_LDFLAGS) #GTestTests_SOURCES = \ $(GMOCK_HOME)/test/gmock-spec-builders_test.cc \ tests/CppUTestExt/AllTests.cpp endif RUN_CPPUTEST_TESTS = ./$(CPPUTEST_TESTS) RUN_CPPUTESTEXT_TESTS = ./$(CPPUTESTEXT_TESTS) valgrind: check @if test "x$(CPPUTEST_HAS_VALGRIND)" = xno; then echo "Running the valgrind target without having valgrind. Perhaps install it first?"; exit 1; fi valgrind --dsymutil=yes --suppressions=$(srcdir)/valgrind.suppressions --gen-suppressions=all --error-exitcode=1 ./$(CPPUTEST_TESTS) tdd: $(CPPUTEST_TESTS)$(EXEEXT) $(CPPUTESTEXT_TESTS)$(EXEEXT) ./$(CPPUTEST_TESTS) if INCLUDE_CPPUTEST_EXT ./$(CPPUTESTEXT_TESTS) endif cpputest_build_gtest18: mkdir -p cpputest_build_gtest18 cd cpputest_build_gtest18; \ wget https://github.com/google/googletest/archive/release-1.8.0.zip -O gtest-1.8.0.zip && unzip gtest-1.8.0.zip; \ cd googletest-release-1.8.0; cmake .; make cpputest_build_gtest17: mkdir -p cpputest_build_gtest17 cd cpputest_build_gtest17; \ wget https://github.com/google/googletest/archive/release-1.7.0.zip -O gtest-1.7.0.zip && unzip gtest-1.7.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.7.0.zip -O gmock-1.7.0.zip && unzip gmock-1.7.0.zip; \ mv googletest-release-1.7.0 googlemock-release-1.7.0/gtest; \ cd googlemock-release-1.7.0; autoreconf -i; ./configure && make cpputest_build_gtest16: mkdir -p cpputest_build_gtest16 cd cpputest_build_gtest16; \ wget https://github.com/google/googletest/archive/release-1.6.0.zip -O gtest-1.6.0.zip && unzip gtest-1.6.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.6.0.zip -O gmock-1.6.0.zip && unzip gmock-1.6.0.zip; \ mv googletest-release-1.6.0 googlemock-release-1.6.0/gtest; \ cd googlemock-release-1.6.0; autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make cpputest_build_gtest15: mkdir -p cpputest_build_gtest15 cd cpputest_build_gtest15; \ wget https://github.com/google/googletest/archive/release-1.5.0.zip -O gtest-1.5.0.zip && unzip gtest-1.5.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.5.0.zip -O gmock-1.5.0.zip && unzip gmock-1.5.0.zip; \ mv googletest-release-1.5.0 googlemock-release-1.5.0/gtest; \ cd googlemock-release-1.5.0; autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check_gtest15: cpputest_build_gtest15 @echo "Build using gmock 1.5"; export GMOCK_HOME=`pwd`/cpputest_build_gtest15/googlemock-release-1.5.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest16: cpputest_build_gtest16 @echo "Build using gmock 1.6"; export GMOCK_HOME=`pwd`/cpputest_build_gtest16/googlemock-release-1.6.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest17: cpputest_build_gtest17 @echo "Build using gmock 1.7" export GMOCK_HOME=`pwd`/cpputest_build_gtest17/googlemock-release-1.7.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest18: cpputest_build_gtest18 @echo "Build using gmock 1.8" export GMOCK_HOME=`pwd`/cpputest_build_gtest18/googletest-release-1.8.0/googlemock; \ export GTEST_HOME=`pwd`/cpputest_build_gtest18/googletest-release-1.8.0/googletest; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check remove_gtest_directories: rm -rf cpputest_build_gtest15 rm -rf cpputest_build_gtest16 rm -rf cpputest_build_gtest17 rm -rf cpputest_build_gtest18 check_gtest: remove_gtest_directories check_gtest15 check_gtest16 check_gtest17 check_gtest18 check_basic: @echo "If dash is available, run the configure with dash to find bash-isms and increase portability" make distclean; if test "x$(CPPUTEST_HAS_DASH)" = xyes; then CONFIG_SHELL=dash $(srcdir)/configure; fi @echo "Building and valgrinding (skipping this on MacOS due to buggy Valgrind" if test "x$(CPPUTEST_ON_MACOSX)" = xno; then \ make distclean; $(srcdir)/configure; make valgrind; \ fi @echo "Building without extensions" make distclean; $(srcdir)/configure --disable-extensions; make check @echo "Building with the Std C++ 98 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp98; make @echo "Building with the Std C++ 11 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp11; make @echo "Building with the Std C++ 14 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp14; make @echo "Building with the Std C++ 17 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp17; make @echo "Building with the Std C++ 20 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp20; make @echo "Building without the Standard C library" make distclean; $(srcdir)/configure --disable-std-c; make @echo "Building without the Standard C++ library and without long long" make distclean; $(srcdir)/configure --disable-std-cpp --disable-long-long; make check @echo "Building without memory leak detection" make distclean; $(srcdir)/configure --disable-memory-leak-detection; make check @echo "Building with address sanitizer" make distclean; $(srcdir)/configure --enable-sanitize-address; make check @echo "Building without memory leak detection and without Standard C++" make distclean; $(srcdir)/configure --disable-memory-leak-detection --disable-std-cpp; make check @echo "Generate a map file while building" make distclean; $(srcdir)/configure -enable-generate-map-file; make check if [ -s CppUTest.o.map.txt ]; then echo "Generating map file failed. Build failed!"; exit 1; fi check_special_situations: @echo "Does the system have gcc? $(CPPUTEST_HAS_GCC)" if test "x$(CPPUTEST_HAS_GCC)" = xyes; then echo "Compiling with gcc"; make distclean; $(srcdir)/configure CC="gcc" CXX="g++"; make check; fi @echo "Does the system have clang and is a Mac? $(CPPUTEST_HAS_CLANG)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++"; make check; \ fi @echo Testing JUnit output make distclean; $(srcdir)/configure; make check ./$(CPPUTEST_TESTS) -ojunit > junit_run_output if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi rm junit_run_output; rm cpputest_*.xml @echo "Building with all flags turned off" make distclean; $(srcdir)/configure --disable-cpputest-flags CFLAGS="" CXXFLAGS="" CPPFLAGS="-I $(srcdir)/include -I$(srcdir)/include/CppUTestExt/CppUTestGTest -I$(srcdir)/include/CppUTestExt/CppUTestGMock" --disable-dependency-tracking; make check check_coverage: @echo "Compile with coverage (switch to clang for Mac OSX)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++" --enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ else \ make distclean; $(srcdir)/configure -enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ fi make check ./$(CPPUTEST_TESTS) >> test_output.txt; ./$(CPPUTESTEXT_TESTS) >> test_output.txt $(SILENCE)for f in `ls *.gcno` ; do \ gcov $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) -o $$f 1>>gcov_output.txt 2>>gcov_error.txt; \ done $(srcdir)/scripts/filterGcov.sh gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt cat gcov_report.txt if test "x$(CPPUTEST_HAS_LCOV)" = xyes; then lcov -c -d . -o temp.info; lcov -r temp.info /usr\* -o coverage.info; genhtml -o test_coverage coverage.info; fi remove_coverage_output: rm -f gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt gcov_report.txt.html temp.info coverage.info rm -rf test_coverage check_examples: @echo "Using the old Makefile and examples" make distclean $(MAKE) -C $(srcdir) -f Makefile_using_MakefileWorker extensions $(MAKE) -C $(srcdir)/examples all clean @echo "Compiling and running the examples. This will use the old Makefile" make distclean; $(srcdir)/configure; make; $(MAKE) -C $(srcdir)/examples all clean CPPUTEST_LIB_LINK_DIR="`pwd`/lib" check_all: check_basic check_special_situations check_coverage remove_coverage_output check_examples check_gtest @echo "Last... one normal build and test" make distclean; $(srcdir)/configure; make check; @echo "Check running tests repeatedly" $(RUN_CPPUTEST_TESTS) - r; $(RUN_CPPUTESTEXT_TESTS) -r @echo "Check running tests in separate process (CppUTestExtTests TEST_GROUP(TestOrderedTestMacro) would have to fail)" $(RUN_CPPUTEST_TESTS) -p; # Mac OSX adds an annoying directory when packaging. This can be prevented by setting COPYFILE_DISABLE=1 # However, I've not figured out how to set it automatically and neither google nor stackoverflow knew the answer. # The automake mailing list is still thinking about it, and thus, I've added this check so that I don't forget to do it :) # More info: http://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x dist-hook: if test "x$(CPPUTEST_ON_MACOSX)" = "xyes"; then \ if test ! "x$(COPYFILE_DISABLE)" = "x1"; then \ echo ""; \ echo 'ERROR: When packaging on MacOSX, please run "COPYFILE_DISABLE=1 make dist"'; \ echo ""; \ exit 1; \ fi \ fi distclean-local: test -z "generated" || rmdir generated cpputest-4.0/README.md000644 000765 000024 00000020756 13663176127 015463 0ustar00basvoddestaff000000 000000 CppUTest ======== CppUTest unit testing and mocking framework for C/C++ [More information on the project page](http://cpputest.github.com) Travis Linux build status: [![Build Status](https://travis-ci.org/cpputest/cpputest.png?branch=master)](https://travis-ci.org/cpputest/cpputest) AppVeyor Windows build status: [![Build status](https://ci.appveyor.com/api/projects/status/irh38i4wblsb5tew?svg=true)](https://ci.appveyor.com/project/basvodde/cpputest) Coverage: [![Coverage Status](https://coveralls.io/repos/cpputest/cpputest/badge.svg?branch=master&service=github)](https://coveralls.io/github/cpputest/cpputest?branch=master) Slack channel: [Join if link not expired](https://join.slack.com/t/cpputest/shared_invite/zt-dvhne8z8-i_sOcxMF3oYvjoN~qpwiDw) ## Getting Started You'll need to do the following to get started: Building from source (unix-based, cygwin, MacOSX): * git clone git://github.com/cpputest/cpputest.git * cd cpputest_build * autoreconf .. -i * ../configure * make You can use `make install` if you want to install CppUTest system-wide You can also use CMake, which also works for Windows Visual Studio. * Download latest version * cmake CMakeList.txt * make Then to get started, you'll need to do the following: * Add the include path to the Makefile. Something like: * CPPFLAGS += -I$(CPPUTEST_HOME)/include * Add the memory leak macros to your Makefile (needed for additional debug info!). Something like: * CXXFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h * CFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h * Add the library linking to your Makefile. Something like: * LD_LIBRARIES = -L$(CPPUTEST_HOME)/lib -lCppUTest -lCppUTestExt After this, you can write your first test: ```C++ TEST_GROUP(FirstTestGroup) { }; TEST(FirstTestGroup, FirstTest) { FAIL("Fail me!"); } ``` ## Command line switches * -h help, shows the latest help, including the parameters we've implemented after updating this README page. * -v verbose, print each test name as it runs * -r# repeat the tests some number of times, default is one, default if # is not specified is 2. This is handy if you are experiencing memory leaks related to statics and caches. * -s# random shuffle the test execution order. # is an integer used for seeding the random number generator. # is optional, and if omitted, the seed value is chosen automatically, which results in a different order every time. The seed value is printed to console to make it possible to reproduce a previously generated execution order. Handy for detecting problems related to dependencies between tests. * -g group only run test whose group contains the substring group * -n name only run test whose name contains the substring name ## Test Macros * TEST(group, name) - define a test * IGNORE_TEST(group, name) - turn off the execution of a test * TEST_GROUP(group) - Declare a test group to which certain tests belong. This will also create the link needed from another library. * TEST_GROUP_BASE(group, base) - Same as TEST_GROUP, just use a different base class than Utest * TEST_SETUP() - Declare a void setup method in a TEST_GROUP - this is the same as declaring void setup() * TEST_TEARDOWN() - Declare a void setup method in a TEST_GROUP * IMPORT_TEST_GROUP(group) - Export the name of a test group so it can be linked in from a library. Needs to be done in main. ## Set up and tear down support * Each TEST_GROUP may contain a setup and/or a teardown method. * setup() is called prior to each TEST body and teardown() is called after the test body. ## Assertion Macros The failure of one of these macros causes the current test to immediately exit * CHECK(boolean condition) - checks any boolean result * CHECK_TRUE(boolean condition) - checks for true * CHECK_FALSE(boolean condition) - checks for false * CHECK_EQUAL(expected, actual) - checks for equality between entities using ==. So if you have a class that supports operator==() you can use this macro to compare two instances. * STRCMP_EQUAL(expected, actual) - check const char* strings for equality using strcmp * LONGS_EQUAL(expected, actual) - Compares two numbers * BYTES_EQUAL(expected, actual) - Compares two numbers, eight bits wide * POINTERS_EQUAL(expected, actual) - Compares two const void * * DOUBLES_EQUAL(expected, actual, tolerance) - Compares two doubles within some tolerance * ENUMS_EQUAL_INT(excepted, actual) - Compares two enums which their underlying type is int * ENUMS_EQUAL_TYPE(underlying_type, excepted, actual) - Compares two enums which they have the same underlying type * FAIL(text) - always fails * TEST_EXIT - Exit the test without failure - useful for contract testing (implementing an assert fake) Customize CHECK_EQUAL to work with your types that support operator==() * Create the function: `SimpleString StringFrom(const yourType&)` The Extensions directory has a few of these. ## Building default checks with TestPlugin * CppUTest can support extra checking functionality by inserting TestPlugins * TestPlugin is derived from the TestPlugin class and can be inserted in the TestRegistry via the installPlugin method. * TestPlugins can be used for, for example, system stability and resource handling like files, memory or network connection clean-up. * In CppUTest, the memory leak detection is done via a default enabled TestPlugin Example of a main with a TestPlugin: ```C++ int main(int ac, char** av) { LogPlugin logPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&logPlugin); int result = CommandLineTestRunner::RunAllTests(ac, av); TestRegistry::getCurrentRegistry()->resetPlugins(); return result; } ``` Memory leak detection * A platform specific memory leak detection mechanism is provided. * If a test fails and has allocated memory prior to the fail and that memory is not cleaned up by TearDown, a memory leak is reported. It is best to only chase memory leaks when other errors have been eliminated. * Some code uses lazy initialization and appears to leak when it really does not (for example: gcc stringstream used to in an earlier release). One cause is that some standard library calls allocate something and do not free it until after main (or never). To find out if a memory leak is due to lazy initialization set the -r switch to run tests twice. The signature of this situation is that the first run shows leaks and the second run shows no leaks. When both runs show leaks, you have a leak to find. ## How is memory leak detection implemented? * Before setup() a memory usage checkpoint is recorded * After teardown() another checkpoint is taken and compared to the original checkpoint * In Visual Studio the MS debug heap capabilities are used * For GCC a simple new/delete count is used in overridden operators new, new[], delete and delete[] If you use some leaky code that you can't or won't fix you can tell a TEST to ignore a certain number of leaks as in this example: ```C++ TEST(MemoryLeakWarningTest, Ignore1) { EXPECT_N_LEAKS(1); char* arrayToLeak1 = new char[100]; } ``` ## Example Main ```C++ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return RUN_ALL_TESTS(ac, av); } ``` ## Example Test ```C++ #include "CppUTest/TestHarness.h" #include "ClassName.h" TEST_GROUP(ClassName) { ClassName* className; void setup() { className = new ClassName(); } void teardown() { delete className; } }; TEST(ClassName, Create) { CHECK(0 != className); CHECK(true); CHECK_EQUAL(1,1); LONGS_EQUAL(1,1); DOUBLES_EQUAL(1.000, 1.001, .01); STRCMP_EQUAL("hello", "hello"); FAIL("The prior tests pass, but this one doesn't"); } ``` There are some scripts that are helpful in creating your initial h, cpp, and Test files. See scripts/README.TXT ## Integration as external CMake project Sometimes you want to use CppUTest in your project without installing it to your system or for having control over the version you are using. This little snippet get the wanted version from Github and builds it as a library. ```cmake # CppUTest include(FetchContent) FetchContent_Declare( CppUTest GIT_REPOSITORY https://github.com/cpputest/cpputest.git GIT_TAG latest-passing-build # or use release tag, eg. v3.8 ) # Set this to ON if you want to have the CppUTests in your project as well. set(TESTS OFF CACHE BOOL "Switch off CppUTest Test build") FetchContent_MakeAvailable(CppUTest) ``` It can be used then like so: ```cmake add_executable(run_tests UnitTest1.cpp UnitTest2.cpp) target_link_libraries(run_tests PRIVATE CppUTest CppUTestExt) ``` cpputest-4.0/CppUTestConfig.cmake.build.in000644 000765 000024 00000000374 13663176127 021540 0ustar00basvoddestaff000000 000000 @PACKAGE_INIT@ set_and_check(CppUTest_INCLUDE_DIRS "@PACKAGE_INCLUDE_DIR@") if(NOT TARGET CppUTest) include("${CMAKE_CURRENT_LIST_DIR}/CppUTestTargets.cmake") endif() set(CppUTest_LIBRARIES CppUTest CppUTestExt) check_required_components(CppUTest) cpputest-4.0/CppUTestConfig.cmake.install.in000644 000765 000024 00000000464 13663176127 022107 0ustar00basvoddestaff000000 000000 @PACKAGE_INIT@ set_and_check(CppUTest_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@") include("${CMAKE_CURRENT_LIST_DIR}/CppUTestTargets.cmake") set(CppUTest_LIBRARIES CppUTest CppUTestExt) include("${CMAKE_CURRENT_LIST_DIR}/Modules/CppUTestBuildTimeDiscoverTests.cmake") check_required_components(CppUTest) cpputest-4.0/config.sub000755 000765 000024 00000075571 13663176420 016170 0ustar00basvoddestaff000000 000000 #! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2020 Free Software Foundation, Inc. timestamp='2020-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Options: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2020 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; *local*) # First pass through any local machine types. echo "$1" exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Split fields of configuration type # shellcheck disable=SC2162 IFS="-" read field1 field2 field3 field4 <&2 exit 1 ;; *-*-*-*) basic_machine=$field1-$field2 os=$field3-$field4 ;; *-*-*) # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two # parts maybe_os=$field2-$field3 case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \ | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ | storm-chaos* | os2-emx* | rtmk-nova*) basic_machine=$field1 os=$maybe_os ;; android-linux) basic_machine=$field1-unknown os=linux-android ;; *) basic_machine=$field1-$field2 os=$field3 ;; esac ;; *-*) # A lone config we happen to match not fitting any pattern case $field1-$field2 in decstation-3100) basic_machine=mips-dec os= ;; *-*) # Second component is usually, but not always the OS case $field2 in # Prevent following clause from handling this valid os sun*os*) basic_machine=$field1 os=$field2 ;; # Manufacturers dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \ | unicom* | ibm* | next | hp | isi* | apollo | altos* \ | convergent* | ncr* | news | 32* | 3600* | 3100* \ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \ | ultra | tti* | harris | dolphin | highlevel | gould \ | cbm | ns | masscomp | apple | axis | knuth | cray \ | microblaze* | sim | cisco \ | oki | wec | wrs | winbond) basic_machine=$field1-$field2 os= ;; *) basic_machine=$field1 os=$field2 ;; esac ;; esac ;; *) # Convert single-component short-hands not valid as part of # multi-component configurations. case $field1 in 386bsd) basic_machine=i386-pc os=bsd ;; a29khif) basic_machine=a29k-amd os=udi ;; adobe68k) basic_machine=m68010-adobe os=scout ;; alliant) basic_machine=fx80-alliant os= ;; altos | altos3068) basic_machine=m68k-altos os= ;; am29k) basic_machine=a29k-none os=bsd ;; amdahl) basic_machine=580-amdahl os=sysv ;; amiga) basic_machine=m68k-unknown os= ;; amigaos | amigados) basic_machine=m68k-unknown os=amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=sysv4 ;; apollo68) basic_machine=m68k-apollo os=sysv ;; apollo68bsd) basic_machine=m68k-apollo os=bsd ;; aros) basic_machine=i386-pc os=aros ;; aux) basic_machine=m68k-apple os=aux ;; balance) basic_machine=ns32k-sequent os=dynix ;; blackfin) basic_machine=bfin-unknown os=linux ;; cegcc) basic_machine=arm-unknown os=cegcc ;; convex-c1) basic_machine=c1-convex os=bsd ;; convex-c2) basic_machine=c2-convex os=bsd ;; convex-c32) basic_machine=c32-convex os=bsd ;; convex-c34) basic_machine=c34-convex os=bsd ;; convex-c38) basic_machine=c38-convex os=bsd ;; cray) basic_machine=j90-cray os=unicos ;; crds | unos) basic_machine=m68k-crds os= ;; da30) basic_machine=m68k-da30 os= ;; decstation | pmax | pmin | dec3100 | decstatn) basic_machine=mips-dec os= ;; delta88) basic_machine=m88k-motorola os=sysv3 ;; dicos) basic_machine=i686-pc os=dicos ;; djgpp) basic_machine=i586-pc os=msdosdjgpp ;; ebmon29k) basic_machine=a29k-amd os=ebmon ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=ose ;; gmicro) basic_machine=tron-gmicro os=sysv ;; go32) basic_machine=i386-pc os=go32 ;; h8300hms) basic_machine=h8300-hitachi os=hms ;; h8300xray) basic_machine=h8300-hitachi os=xray ;; h8500hms) basic_machine=h8500-hitachi os=hms ;; harris) basic_machine=m88k-harris os=sysv3 ;; hp300 | hp300hpux) basic_machine=m68k-hp os=hpux ;; hp300bsd) basic_machine=m68k-hp os=bsd ;; hppaosf) basic_machine=hppa1.1-hp os=osf ;; hppro) basic_machine=hppa1.1-hp os=proelf ;; i386mach) basic_machine=i386-mach os=mach ;; isi68 | isi) basic_machine=m68k-isi os=sysv ;; m68knommu) basic_machine=m68k-unknown os=linux ;; magnum | m3230) basic_machine=mips-mips os=sysv ;; merlin) basic_machine=ns32k-utek os=sysv ;; mingw64) basic_machine=x86_64-pc os=mingw64 ;; mingw32) basic_machine=i686-pc os=mingw32 ;; mingw32ce) basic_machine=arm-unknown os=mingw32ce ;; monitor) basic_machine=m68k-rom68k os=coff ;; morphos) basic_machine=powerpc-unknown os=morphos ;; moxiebox) basic_machine=moxie-unknown os=moxiebox ;; msdos) basic_machine=i386-pc os=msdos ;; msys) basic_machine=i686-pc os=msys ;; mvs) basic_machine=i370-ibm os=mvs ;; nacl) basic_machine=le32-unknown os=nacl ;; ncr3000) basic_machine=i486-ncr os=sysv4 ;; netbsd386) basic_machine=i386-pc os=netbsd ;; netwinder) basic_machine=armv4l-rebel os=linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=newsos ;; news1000) basic_machine=m68030-sony os=newsos ;; necv70) basic_machine=v70-nec os=sysv ;; nh3000) basic_machine=m68k-harris os=cxux ;; nh[45]000) basic_machine=m88k-harris os=cxux ;; nindy960) basic_machine=i960-intel os=nindy ;; mon960) basic_machine=i960-intel os=mon960 ;; nonstopux) basic_machine=mips-compaq os=nonstopux ;; os400) basic_machine=powerpc-ibm os=os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=ose ;; os68k) basic_machine=m68k-none os=os68k ;; paragon) basic_machine=i860-intel os=osf ;; parisc) basic_machine=hppa-unknown os=linux ;; pw32) basic_machine=i586-unknown os=pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=rdos ;; rdos32) basic_machine=i386-pc os=rdos ;; rom68k) basic_machine=m68k-rom68k os=coff ;; sa29200) basic_machine=a29k-amd os=udi ;; sei) basic_machine=mips-sei os=seiux ;; sequent) basic_machine=i386-sequent os= ;; sps7) basic_machine=m68k-bull os=sysv2 ;; st2000) basic_machine=m68k-tandem os= ;; stratus) basic_machine=i860-stratus os=sysv4 ;; sun2) basic_machine=m68000-sun os= ;; sun2os3) basic_machine=m68000-sun os=sunos3 ;; sun2os4) basic_machine=m68000-sun os=sunos4 ;; sun3) basic_machine=m68k-sun os= ;; sun3os3) basic_machine=m68k-sun os=sunos3 ;; sun3os4) basic_machine=m68k-sun os=sunos4 ;; sun4) basic_machine=sparc-sun os= ;; sun4os3) basic_machine=sparc-sun os=sunos3 ;; sun4os4) basic_machine=sparc-sun os=sunos4 ;; sun4sol2) basic_machine=sparc-sun os=solaris2 ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun os= ;; sv1) basic_machine=sv1-cray os=unicos ;; symmetry) basic_machine=i386-sequent os=dynix ;; t3e) basic_machine=alphaev5-cray os=unicos ;; t90) basic_machine=t90-cray os=unicos ;; toad1) basic_machine=pdp10-xkl os=tops20 ;; tpf) basic_machine=s390x-ibm os=tpf ;; udi29k) basic_machine=a29k-amd os=udi ;; ultra3) basic_machine=a29k-nyu os=sym1 ;; v810 | necv810) basic_machine=v810-nec os=none ;; vaxv) basic_machine=vax-dec os=sysv ;; vms) basic_machine=vax-dec os=vms ;; vsta) basic_machine=i386-pc os=vsta ;; vxworks960) basic_machine=i960-wrs os=vxworks ;; vxworks68) basic_machine=m68k-wrs os=vxworks ;; vxworks29k) basic_machine=a29k-wrs os=vxworks ;; xbox) basic_machine=i686-pc os=mingw32 ;; ymp) basic_machine=ymp-cray os=unicos ;; *) basic_machine=$1 os= ;; esac ;; esac # Decode 1-component or ad-hoc basic machines case $basic_machine in # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) cpu=hppa1.1 vendor=winbond ;; op50n) cpu=hppa1.1 vendor=oki ;; op60c) cpu=hppa1.1 vendor=oki ;; ibm*) cpu=i370 vendor=ibm ;; orion105) cpu=clipper vendor=highlevel ;; mac | mpw | mac-mpw) cpu=m68k vendor=apple ;; pmac | pmac-mpw) cpu=powerpc vendor=apple ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) cpu=m68000 vendor=att ;; 3b*) cpu=we32k vendor=att ;; bluegene*) cpu=powerpc vendor=ibm os=cnk ;; decsystem10* | dec10*) cpu=pdp10 vendor=dec os=tops10 ;; decsystem20* | dec20*) cpu=pdp10 vendor=dec os=tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) cpu=m68k vendor=motorola ;; dpx2*) cpu=m68k vendor=bull os=sysv3 ;; encore | umax | mmax) cpu=ns32k vendor=encore ;; elxsi) cpu=elxsi vendor=elxsi os=${os:-bsd} ;; fx2800) cpu=i860 vendor=alliant ;; genix) cpu=ns32k vendor=ns ;; h3050r* | hiux*) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) cpu=m68000 vendor=hp ;; hp9k3[2-9][0-9]) cpu=m68k vendor=hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) cpu=hppa1.1 vendor=hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) cpu=hppa1.1 vendor=hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) cpu=hppa1.0 vendor=hp ;; i*86v32) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv32 ;; i*86v4*) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv4 ;; i*86v) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=sysv ;; i*86sol2) cpu=`echo "$1" | sed -e 's/86.*/86/'` vendor=pc os=solaris2 ;; j90 | j90-cray) cpu=j90 vendor=cray os=${os:-unicos} ;; iris | iris4d) cpu=mips vendor=sgi case $os in irix*) ;; *) os=irix4 ;; esac ;; miniframe) cpu=m68000 vendor=convergent ;; *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) cpu=m68k vendor=atari os=mint ;; news-3600 | risc-news) cpu=mips vendor=sony os=newsos ;; next | m*-next) cpu=m68k vendor=next case $os in openstep*) ;; nextstep*) ;; ns2*) os=nextstep2 ;; *) os=nextstep3 ;; esac ;; np1) cpu=np1 vendor=gould ;; op50n-* | op60c-*) cpu=hppa1.1 vendor=oki os=proelf ;; pa-hitachi) cpu=hppa1.1 vendor=hitachi os=hiuxwe2 ;; pbd) cpu=sparc vendor=tti ;; pbb) cpu=m68k vendor=tti ;; pc532) cpu=ns32k vendor=pc532 ;; pn) cpu=pn vendor=gould ;; power) cpu=power vendor=ibm ;; ps2) cpu=i386 vendor=ibm ;; rm[46]00) cpu=mips vendor=siemens ;; rtpc | rtpc-*) cpu=romp vendor=ibm ;; sde) cpu=mipsisa32 vendor=sde os=${os:-elf} ;; simso-wrs) cpu=sparclite vendor=wrs os=vxworks ;; tower | tower-32) cpu=m68k vendor=ncr ;; vpp*|vx|vx-*) cpu=f301 vendor=fujitsu ;; w65) cpu=w65 vendor=wdc ;; w89k-*) cpu=hppa1.1 vendor=winbond os=proelf ;; none) cpu=none vendor=none ;; leon|leon[3-9]) cpu=sparc vendor=$basic_machine ;; leon-*|leon[3-9]-*) cpu=sparc vendor=`echo "$basic_machine" | sed 's/-.*//'` ;; *-*) # shellcheck disable=SC2162 IFS="-" read cpu vendor <&2 exit 1 ;; esac ;; esac # Here we canonicalize certain aliases for manufacturers. case $vendor in digital*) vendor=dec ;; commodore*) vendor=cbm ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x$os != x ] then case $os in # First match some system type aliases that might get confused # with valid system types. # solaris* is a basic system type, with this one exception. auroraux) os=auroraux ;; bluegene*) os=cnk ;; solaris1 | solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; solaris) os=solaris2 ;; unixware*) os=sysv4.2uw ;; gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # es1800 is here to avoid being matched by es* (a different OS) es1800*) os=ose ;; # Some version numbers need modification chorusos*) os=chorusos ;; isc) os=isc2.2 ;; sco6) os=sco5v6 ;; sco5) os=sco3.2v5 ;; sco4) os=sco3.2v4 ;; sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` ;; sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; scout) # Don't match below ;; sco*) os=sco3.2v2 ;; psos*) os=psos ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. # sysv* is not here because it comes later, after sysvr4. gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | kopensolaris* | plan9* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \ | knetbsd* | mirbsd* | netbsd* \ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \ | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \ | chorusrdb* | cegcc* | glidix* \ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \ | linux-newlib* | linux-musl* | linux-uclibc* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | interix* | uwin* | mks* | rhapsody* | darwin* \ | openstep* | oskit* | conix* | pw32* | nonstopux* \ | storm-chaos* | tops10* | tenex* | tops20* | its* \ | os2* | vos* | palmos* | uclinux* | nucleus* \ | morphos* | superux* | rtmk* | windiss* \ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \ | skyos* | haiku* | rdos* | toppers* | drops* | es* \ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix) # Remember, each alternative MUST END IN *, to match a version number. ;; qnx*) case $cpu in x86 | i*86) ;; *) os=nto-$os ;; esac ;; hiux*) os=hiuxwe2 ;; nto-qnx*) ;; nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; sim | xray | os68k* | v88r* \ | windows* | osx | abug | netware* | os9* \ | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; linux-dietlibc) os=linux-dietlibc ;; linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; lynx*178) os=lynxos178 ;; lynx*5) os=lynxos5 ;; lynx*) os=lynxos ;; mac*) os=`echo "$os" | sed -e 's|mac|macos|'` ;; opened*) os=openedition ;; os400*) os=os400 ;; sunos5*) os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; sunos6*) os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; wince*) os=wince ;; utek*) os=bsd ;; dynix*) os=bsd ;; acis*) os=aos ;; atheos*) os=atheos ;; syllable*) os=syllable ;; 386bsd) os=bsd ;; ctix* | uts*) os=sysv ;; nova*) os=rtmk-nova ;; ns2) os=nextstep2 ;; # Preserve the version number of sinix5. sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; sinix*) os=sysv4 ;; tpf*) os=tpf ;; triton*) os=sysv3 ;; oss*) os=sysv3 ;; svr4*) os=sysv4 ;; svr3) os=sysv3 ;; sysvr4) os=sysv4 ;; # This must come after sysvr4. sysv*) ;; ose*) os=ose ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) os=mint ;; zvmoe) os=zvmoe ;; dicos*) os=dicos ;; pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $cpu in arm*) os=eabi ;; *) os=elf ;; esac ;; nacl*) ;; ios) ;; none) ;; *-eabi) ;; *) echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $cpu-$vendor in score-*) os=elf ;; spu-*) os=elf ;; *-acorn) os=riscix1.2 ;; arm*-rebel) os=linux ;; arm*-semi) os=aout ;; c4x-* | tic4x-*) os=coff ;; c8051-*) os=elf ;; clipper-intergraph) os=clix ;; hexagon-*) os=elf ;; tic54x-*) os=coff ;; tic55x-*) os=coff ;; tic6x-*) os=coff ;; # This must come before the *-dec entry. pdp10-*) os=tops20 ;; pdp11-*) os=none ;; *-dec | vax-*) os=ultrix4.2 ;; m68*-apollo) os=domain ;; i386-sun) os=sunos4.0.2 ;; m68000-sun) os=sunos3 ;; m68*-cisco) os=aout ;; mep-*) os=elf ;; mips*-cisco) os=elf ;; mips*-*) os=elf ;; or32-*) os=coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=sysv3 ;; sparc-* | *-sun) os=sunos4.1.1 ;; pru-*) os=elf ;; *-be) os=beos ;; *-ibm) os=aix ;; *-knuth) os=mmixware ;; *-wec) os=proelf ;; *-winbond) os=proelf ;; *-oki) os=proelf ;; *-hp) os=hpux ;; *-hitachi) os=hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=sysv ;; *-cbm) os=amigaos ;; *-dg) os=dgux ;; *-dolphin) os=sysv3 ;; m68k-ccur) os=rtu ;; m88k-omron*) os=luna ;; *-next) os=nextstep ;; *-sequent) os=ptx ;; *-crds) os=unos ;; *-ns) os=genix ;; i370-*) os=mvs ;; *-gould) os=sysv ;; *-highlevel) os=bsd ;; *-encore) os=bsd ;; *-sgi) os=irix ;; *-siemens) os=sysv4 ;; *-masscomp) os=rtu ;; f30[01]-fujitsu | f700-fujitsu) os=uxpv ;; *-rom68k) os=coff ;; *-*bug) os=coff ;; *-apple) os=macos ;; *-atari*) os=mint ;; *-wrs) os=vxworks ;; *) os=none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. case $vendor in unknown) case $os in riscix*) vendor=acorn ;; sunos*) vendor=sun ;; cnk*|-aix*) vendor=ibm ;; beos*) vendor=be ;; hpux*) vendor=hp ;; mpeix*) vendor=hp ;; hiux*) vendor=hitachi ;; unos*) vendor=crds ;; dgux*) vendor=dg ;; luna*) vendor=omron ;; genix*) vendor=ns ;; clix*) vendor=intergraph ;; mvs* | opened*) vendor=ibm ;; os400*) vendor=ibm ;; ptx*) vendor=sequent ;; tpf*) vendor=ibm ;; vxsim* | vxworks* | windiss*) vendor=wrs ;; aux*) vendor=apple ;; hms*) vendor=hitachi ;; mpw* | macos*) vendor=apple ;; *mint | mint[0-9]* | *MiNT | MiNT[0-9]*) vendor=atari ;; vos*) vendor=stratus ;; esac ;; esac echo "$cpu-$vendor-$os" exit # Local variables: # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cpputest-4.0/appveyor.yml000644 000765 000024 00000002320 13663176127 016557 0ustar00basvoddestaff000000 000000 version: 3.7.0-ci{build} image: Visual Studio 2015 cache: - C:\ProgramData\chocolatey\bin -> appveyor.yml - C:\ProgramData\chocolatey\lib -> appveyor.yml - C:\Tools\MinGW32 -> appveyor.yml - C:\Tools\MinGW64 -> appveyor.yml environment: Configuration: Release matrix: - Platform: Cygwin32 - Platform: MinGW32 PlatformToolset: 4.8.5 - Platform: MinGW64 PlatformToolset: 4.8.5 - Platform: MinGW32 PlatformToolset: 5.3.0 - Platform: MinGW64 PlatformToolset: 5.3.0 - Platform: MinGWClang64 PlatformToolset: 5.3.0 - Platform: MinGWClang32 PlatformToolset: 5.3.0 - Platform: Win32 PlatformToolset: v90 - Platform: Win32 PlatformToolset: v100 - Platform: Win32 PlatformToolset: v110 - Platform: Win32 PlatformToolset: v120 - Platform: Win32 PlatformToolset: v140 - Platform: x64 PlatformToolset: v140 install: - ps: if ($env:Platform -like 'MinGW*') { choco install mingw --version $env:PlatformToolset $( if ($env:Platform -like '*32') { Write-Output --forcex86 --params /exception:dwarf } ) } build_script: - ps: scripts\appveyor_ci_build.ps1 test_script: - ps: scripts\appveyor_ci_test.ps1 artifacts: - path: lib\CppUTest.lib name: CppUTest cpputest-4.0/COPYING000644 000765 000024 00000002753 13663176127 015234 0ustar00basvoddestaff000000 000000 Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.cpputest-4.0/README_CppUTest_for_C.txt000644 000765 000024 00000004423 13663176127 020572 0ustar00basvoddestaff000000 000000 CPPUTest can and has been used for testing C code also. When testing C code there are a couple of things to keep in mind and a couple of common problems to solve. ---++ Using extern "C" When including C-header files or when declaring C-variables and routines in a .cpp file, you'll have to surround them with an extern "C". This is because the C++ linker works different than the C linker and you need to instruct the compiler about this. If you do NOT do this, you will probably get a linker error, like unresolved symbols, for a routine that you did implement. An example: extern "C" { #include "hello.h" extern HelloWorldApi theRealHelloWorldApi; } ---++ CppUTest support for C CppUTest comes with a file called TestHarness_c.h which contains a couple of routines that can be used in C code, like C-versions of the CHECK-macro's. The file also contains malloc and free routines that can be used for using the CppUTest memory leak detector. These routines should be used instead of the normal malloc/free. This can be achieved by #defining them somewhere, for examples as a compiler option: -Dmalloc=cpputest_malloc. It's important to remember that TestHarness_c.h is a C-header file. It can be used in C code, but when using in C++ code, you need to use extern "C" before including it. ---++ C++ keywords used It sometimes happens that a C file uses a C++ keyword as a type or something else. The most common one is the bool-type. This can typically be solved by #defining the bool to something else. For example: extern "C" { #define bool helloBool #include "hello.h" #undef bool } The #undef is optional. It is possible that this solution leads to problems in some situation (never happened to me). The same solution works for other C++ key-words ---++ Other * In C, sometimes people use empty structs. The sizeof(empty struct) would be 0. In C++, the sizeof(empty struct) would be something. The best way to fix this is to not use empty structs in C. According to http://www.glenmccl.com/bett.htm an empty struct in C is illegal anyway. ---++ References * http://www.glenmccl.com/bett.htm Describes some differences between C and C++ * http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B Wikipedia entry on the compatibility between C and C++ cpputest-4.0/platforms_examples/000755 000765 000024 00000000000 13663444566 020104 5ustar00basvoddestaff000000 000000 cpputest-4.0/compile000755 000765 000024 00000016350 13663176420 015551 0ustar00basvoddestaff000000 000000 #! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2018-03-07.03; # UTC # Copyright (C) 1999-2020 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN* | MSYS*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/* | msys/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cpputest-4.0/NEWS000644 000765 000024 00000000104 13663176127 014664 0ustar00basvoddestaff000000 000000 You can find the main NEWS at: https://github.com/cpputest/cpputestcpputest-4.0/.gitignore000644 000765 000024 00000000016 13663176127 016157 0ustar00basvoddestaff000000 000000 * !.gitignore cpputest-4.0/.settings/000755 000765 000024 00000000000 13663444566 016115 5ustar00basvoddestaff000000 000000 cpputest-4.0/cpputest_doxy_gen.conf000644 000765 000024 00000234040 13663176127 020607 0ustar00basvoddestaff000000 000000 # Doxyfile 1.8.3.1 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project. # # All text after a hash (#) is considered a comment and will be ignored. # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" "). #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file # that follow. The default is UTF-8 which is also the encoding used for all # text before the first occurrence of this tag. Doxygen uses libiconv (or the # iconv built into libc) for the transcoding. See # http://www.gnu.org/software/libiconv for the list of possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or sequence of words) that should # identify the project. Note that if you do not use Doxywizard you need # to put quotes around the project name if it contains spaces. PROJECT_NAME = "CppUTest Documentation" # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer # a quick idea about the purpose of the project. Keep the description short. PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify an logo or icon that is # included in the documentation. The maximum height of the logo should not # exceed 55 pixels and the maximum width should not exceed 200 pixels. # Doxygen will copy the logo to the output directory. PROJECT_LOGO = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, # Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English # messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, # Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, # Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. Note that you specify absolute paths here, but also # relative paths, which will be relative from the directory where doxygen is # started. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful if your file system # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # This tag can be used to specify a number of word-keyword mappings (TCL only). # A mapping has the form "name=value". For example adding # "class=itcl::class" will allow you to use the command class in the # itcl::class meaning. TCL_SUBST = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for # Java. For instance, namespaces will be presented as packages, qualified # scopes will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran # sources only. Doxygen will then generate output that is more tailored for # Fortran. OPTIMIZE_FOR_FORTRAN = NO # Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL # sources. Doxygen will then generate output that is tailored for # VHDL. OPTIMIZE_OUTPUT_VHDL = NO # Doxygen selects the parser to use depending on the extension of the files it # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, # and language is one of the parsers supported by doxygen: IDL, Java, # Javascript, CSharp, C, C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, # C++. For instance to make doxygen treat .inc files as Fortran files (default # is PHP), and .f files as C (default is Fortran), use: inc=Fortran f=C. Note # that for custom extensions you also need to set FILE_PATTERNS otherwise the # files are not read by doxygen. EXTENSION_MAPPING = # If MARKDOWN_SUPPORT is enabled (the default) then doxygen pre-processes all # comments according to the Markdown format, which allows for more readable # documentation. See http://daringfireball.net/projects/markdown/ for details. # The output of markdown processing is further processed by doxygen, so you # can mix doxygen, HTML, and XML commands with Markdown formatting. # Disable only in case of backward compatibilities issues. MARKDOWN_SUPPORT = YES # When enabled doxygen tries to link words that correspond to documented classes, # or namespaces to their corresponding documentation. Such a link can be # prevented in individual cases by by putting a % sign in front of the word or # globally by setting AUTOLINK_SUPPORT to NO. AUTOLINK_SUPPORT = YES # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also makes the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. # Doxygen will parse them like normal C++ but will assume all classes use public # instead of private inheritance when no explicit protection keyword is present. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES (the # default) will make doxygen replace the get and set methods by a property in # the documentation. This will only work if the methods are indeed getting or # setting a simple type. If this is not the case, or you want to show the # methods anyway, you should set this option to NO. IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES # When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and # unions are shown inside the group in which they are included (e.g. using # @ingroup) instead of on a separate page (for HTML and Man pages) or # section (for LaTeX and RTF). INLINE_GROUPED_CLASSES = NO # When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and # unions with only public data fields will be shown inline in the documentation # of the scope in which they are defined (i.e. file, namespace, or group # documentation), provided this scope is documented. If set to NO (the default), # structs, classes, and unions are shown on a separate page (for HTML and Man # pages) or section (for LaTeX and RTF). INLINE_SIMPLE_STRUCTS = NO # When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum # is documented as struct, union, or enum with the name of the typedef. So # typedef struct TypeS {} TypeT, will appear in the documentation as a struct # with name TypeT. When disabled the typedef will appear as a member of a file, # namespace, or class. And the struct will be named TypeS. This can typically # be useful for C code in case the coding convention dictates that all compound # types are typedef'ed and only the typedef is referenced, never the tag name. TYPEDEF_HIDES_STRUCT = NO # The SYMBOL_CACHE_SIZE determines the size of the internal cache use to # determine which symbols to keep in memory and which to flush to disk. # When the cache is full, less often used symbols will be written to disk. # For small to medium size projects (<1000 input files) the default value is # probably good enough. For larger projects a too small cache size can cause # doxygen to be busy swapping symbols to and from disk most of the time # causing a significant performance penalty. # If the system has enough physical memory increasing the cache will improve the # performance by keeping more symbols in memory. Note that the value works on # a logarithmic scale so increasing the size by one will roughly double the # memory usage. The cache size is given by this formula: # 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. SYMBOL_CACHE_SIZE = 0 # Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be # set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given # their name and scope. Since this can be an expensive process and often the # same symbol appear multiple times in the code, doxygen keeps a cache of # pre-resolved symbols. If the cache is too small doxygen will become slower. # If the cache is too large, memory is wasted. The cache size is given by this # formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, # corresponding to a cache size of 2^16 = 65536 symbols. LOOKUP_CACHE_SIZE = 0 #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_PACKAGE tag is set to YES all members with package or internal # scope will be included in the documentation. EXTRACT_PACKAGE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be # extracted and appear in the documentation as a namespace called # 'anonymous_namespace{file}', where file will be replaced with the base # name of the file that contains the anonymous namespace. By default # anonymous namespaces are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen # will list include files with double quotes in the documentation # rather than with sharp brackets. FORCE_LOCAL_INCLUDES = NO # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen # will sort the (brief and detailed) documentation of class members so that # constructors and destructors are listed first. If set to NO (the default) # the constructors will appear in the respective orders defined by # SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. # This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO # and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. SORT_MEMBERS_CTORS_1ST = NO # If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the # hierarchy of group names into alphabetical order. If set to NO (the default) # the group names will appear in their defined order. SORT_GROUP_NAMES = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to # do proper type resolution of all parameters of a function it will reject a # match between the prototype and the implementation of a member function even # if there is only one candidate or it is obvious which candidate to choose # by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen # will still accept a match between prototype and implementation in such cases. STRICT_PROTO_MATCHING = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if section-label ... \endif # and \cond section-label ... \endcond blocks. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or macro consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and macros in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # Set the SHOW_FILES tag to NO to disable the generation of the Files page. # This will remove the Files entry from the Quick Index and from the # Folder Tree View (if specified). The default is YES. SHOW_FILES = YES # Set the SHOW_NAMESPACES tag to NO to disable the generation of the # Namespaces page. # This will remove the Namespaces entry from the Quick Index # and from the Folder Tree View (if specified). The default is YES. SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed # by doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file # that represents doxygen's defaults, run doxygen with the -l option. # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The # .bib extension is automatically appended if omitted. Using this command # requires the bibtex tool to be installed. See also # http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style # of the bibliography can be controlled using LATEX_BIB_STYLE. To use this # feature you need bibtex and perl available in the search path. Do not use # file names with spaces, bibtex cannot handle them. CITE_BIB_FILES = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_NO_PARAMDOC option can be enabled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = include/CppUTest # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is # also the default input encoding. Doxygen uses libiconv (or the iconv built # into libc) for the transcoding. See http://www.gnu.org/software/libiconv for # the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh # *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py # *.f90 *.f *.for *.vhd *.vhdl FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should be # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # Note that relative paths are relative to the directory from which doxygen is # run. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, # AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. # If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. # Doxygen will compare the file name with each pattern and apply the # filter if there is a match. # The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty or if # non of the patterns match the file name, INPUT_FILTER is applied. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO # The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file # pattern. A pattern will override the setting for FILTER_PATTERN (if any) # and it is also possible to disable source filtering for a specific pattern # using *.ext= (so without naming a filter). This option only has effect when # FILTER_SOURCE_FILES is enabled. FILTER_SOURCE_PATTERNS = # If the USE_MD_FILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page (index.html). # This can be useful if you have a project on for instance GitHub and want reuse # the introduction page also for the doxygen output. USE_MDFILE_AS_MAINPAGE = #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C, C++ and Fortran comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = NO # If the REFERENCES_RELATION tag is set to YES # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = NO # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. # Otherwise they will link to the documentation. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. Note that when using a custom header you are responsible # for the proper inclusion of any scripts and style sheets that doxygen # needs, which is dependent on the configuration options used. # It is advised to generate a default header using "doxygen -w html # header.html footer.html stylesheet.css YourConfigFile" and then modify # that header. Note that the header is subject to change so you typically # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If left blank doxygen will # generate a default style sheet. Note that it is recommended to use # HTML_EXTRA_STYLESHEET instead of this one, as it is more robust and this # tag will in the future become obsolete. HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify an additional # user-defined cascading style sheet that is included after the standard # style sheets created by doxygen. Using this option one can overrule # certain style aspects. This is preferred over using HTML_STYLESHEET # since it does not replace the standard style sheet and is therefor more # robust against future updates. Doxygen will copy the style sheet file to # the output directory. HTML_EXTRA_STYLESHEET = # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note # that these files will be copied to the base HTML output directory. Use the # $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these # files. In the HTML_STYLESHEET file, use the file name only. Also note that # the files will be copied as-is; there are no commands or markers available. HTML_EXTRA_FILES = # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. # Doxygen will adjust the colors in the style sheet and background images # according to this color. Hue is specified as an angle on a colorwheel, # see http://en.wikipedia.org/wiki/Hue for more information. # For instance the value 0 represents red, 60 is yellow, 120 is green, # 180 is cyan, 240 is blue, 300 purple, and 360 is red again. # The allowed range is 0 to 359. HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of # the colors in the HTML output. For a value of 0 the output will use # grayscales only. A value of 255 will produce the most vivid colors. HTML_COLORSTYLE_SAT = 100 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to # the luminance component of the colors in the HTML output. Values below # 100 gradually make the output lighter, whereas values above 100 make # the output darker. The value divided by 100 is the actual gamma applied, # so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, # and 100 does not change the gamma. HTML_COLORSTYLE_GAMMA = 80 # If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML # page will contain the date and time when the page was generated. Setting # this to NO can help when comparing the output of multiple runs. HTML_TIMESTAMP = YES # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. HTML_DYNAMIC_SECTIONS = NO # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of # entries shown in the various tree structured indices initially; the user # can expand and collapse entries dynamically later on. Doxygen will expand # the tree to such a level that at most the specified number of entries are # visible (unless a fully collapsed tree already exceeds this amount). # So setting the number of entries 1 will produce a full collapsed tree by # default. 0 is a special value representing an infinite number of entries # and will result in a full expanded tree by default. HTML_INDEX_NUM_ENTRIES = 100 # If the GENERATE_DOCSET tag is set to YES, additional index files # will be generated that can be used as input for Apple's Xcode 3 # integrated development environment, introduced with OSX 10.5 (Leopard). # To create a documentation set, doxygen will generate a Makefile in the # HTML output directory. Running make will produce the docset in that # directory and running "make install" will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find # it at startup. # See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html # for more information. GENERATE_DOCSET = NO # When GENERATE_DOCSET tag is set to YES, this tag determines the name of the # feed. A documentation feed provides an umbrella under which multiple # documentation sets from a single provider (such as a company or product suite) # can be grouped. DOCSET_FEEDNAME = "Doxygen generated docs" # When GENERATE_DOCSET tag is set to YES, this tag specifies a string that # should uniquely identify the documentation set bundle. This should be a # reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen # will append .docset to the name. DOCSET_BUNDLE_ID = org.doxygen.Project # When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely # identify the documentation publisher. This should be a reverse domain-name # style string, e.g. com.mycompany.MyDocSet.documentation. DOCSET_PUBLISHER_ID = org.doxygen.Publisher # The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. DOCSET_PUBLISHER_NAME = Publisher # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compiled HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING # is used to encode HtmlHelp index (hhk), content (hhc) and project file # content. CHM_INDEX_ENCODING = # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated # that can be used as input for Qt's qhelpgenerator to generate a # Qt Compressed Help (.qch) of the generated HTML documentation. GENERATE_QHP = NO # If the QHG_LOCATION tag is specified, the QCH_FILE tag can # be used to specify the file name of the resulting .qch file. # The path specified is relative to the HTML output folder. QCH_FILE = # The QHP_NAMESPACE tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#namespace QHP_NAMESPACE = org.doxygen.Project # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating # Qt Help Project output. For more information please see # http://doc.trolltech.com/qthelpproject.html#virtual-folders QHP_VIRTUAL_FOLDER = doc # If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to # add. For more information please see # http://doc.trolltech.com/qthelpproject.html#custom-filters QHP_CUST_FILTER_NAME = # The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the # custom filter to add. For more information please see # # Qt Help Project / Custom Filters. QHP_CUST_FILTER_ATTRS = # The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this # project's # filter section matches. # # Qt Help Project / Filter Attributes. QHP_SECT_FILTER_ATTRS = # If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can # be used to specify the location of Qt's qhelpgenerator. # If non-empty doxygen will try to run qhelpgenerator on the generated # .qhp file. QHG_LOCATION = # If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files # will be generated, which together with the HTML files, form an Eclipse help # plugin. To install this plugin and make it available under the help contents # menu in Eclipse, the contents of the directory containing the HTML and XML # files needs to be copied into the plugins directory of eclipse. The name of # the directory within the plugins directory should be the same as # the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before # the help appears. GENERATE_ECLIPSEHELP = NO # A unique identifier for the eclipse help plugin. When installing the plugin # the directory name containing the HTML and XML files should also have # this name. ECLIPSE_DOC_ID = org.doxygen.Project # The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) # at top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. Since the tabs have the same information as the # navigation tree you can set this option to NO if you already set # GENERATE_TREEVIEW to YES. DISABLE_INDEX = NO # The GENERATE_TREEVIEW tag is used to specify whether a tree-like index # structure should be generated to display hierarchical information. # If the tag value is set to YES, a side panel will be generated # containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). # Windows users are probably better off using the HTML help feature. # Since the tree basically has the same information as the tab index you # could consider to set DISABLE_INDEX to NO when enabling this option. GENERATE_TREEVIEW = NO # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values # (range [0,1..20]) that doxygen will group on one line in the generated HTML # documentation. Note that a value of 0 will completely suppress the enum # values from appearing in the overview section. ENUM_VALUES_PER_LINE = 4 # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 # When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open # links to external symbols imported via tag files in a separate window. EXT_LINKS_IN_WINDOW = NO # Use this tag to change the font size of Latex formulas included # as images in the HTML documentation. The default is 10. Note that # when you change the font size after a successful doxygen run you need # to manually remove any form_*.png images from the HTML output directory # to force them to be regenerated. FORMULA_FONTSIZE = 10 # Use the FORMULA_TRANPARENT tag to determine whether or not the images # generated for formulas are transparent PNGs. Transparent PNGs are # not supported properly for IE 6.0, but are supported on all modern browsers. # Note that when changing this option you need to delete any form_*.png files # in the HTML output before the changes have effect. FORMULA_TRANSPARENT = YES # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax # (see http://www.mathjax.org) which uses client side Javascript for the # rendering instead of using prerendered bitmaps. Use this if you do not # have LaTeX installed or if you want to formulas look prettier in the HTML # output. When enabled you may also need to install MathJax separately and # configure the path to it using the MATHJAX_RELPATH option. USE_MATHJAX = NO # When MathJax is enabled you can set the default output format to be used for # thA MathJax output. Supported types are HTML-CSS, NativeMML (i.e. MathML) and # SVG. The default value is HTML-CSS, which is slower, but has the best # compatibility. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the # HTML output directory using the MATHJAX_RELPATH option. The destination # directory should contain the MathJax.js script. For instance, if the mathjax # directory is located at the same level as the HTML output directory, then # MATHJAX_RELPATH should be ../mathjax. The default value points to # the MathJax Content Delivery Network so you can quickly see the result without # installing MathJax. # However, it is strongly recommended to install a local # copy of MathJax from http://www.mathjax.org before deployment. MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest # The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension # names that should be enabled during MathJax rendering. MATHJAX_EXTENSIONS = # When the SEARCHENGINE tag is enabled doxygen will generate a search box # for the HTML output. The underlying search engine uses javascript # and DHTML and should work on any modern browser. Note that when using # HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets # (GENERATE_DOCSET) there is already a search function so this one should # typically be disabled. For large projects the javascript based search engine # can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using Javascript. # There are two flavours of web server based search depending on the # EXTERNAL_SEARCH setting. When disabled, doxygen will generate a PHP script for # searching and an index file used by the script. When EXTERNAL_SEARCH is # enabled the indexing and searching needs to be provided by external tools. # See the manual for details. SERVER_BASED_SEARCH = NO # When EXTERNAL_SEARCH is enabled doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain # the search results. Doxygen ships with an example indexer (doxyindexer) and # search engine (doxysearch.cgi) which are based on the open source search engine # library Xapian. See the manual for configuration details. EXTERNAL_SEARCH = NO # The SEARCHENGINE_URL should point to a search engine hosted by a web server # which will returned the search results when EXTERNAL_SEARCH is enabled. # Doxygen ships with an example search engine (doxysearch) which is based on # the open source search engine library Xapian. See the manual for configuration # details. SEARCHENGINE_URL = # When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed # search data is written to a file for indexing by an external tool. With the # SEARCHDATA_FILE tag the name of this file can be specified. SEARCHDATA_FILE = searchdata.xml # When SERVER_BASED_SEARCH AND EXTERNAL_SEARCH are both enabled the # EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is # useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple # projects and redirect the results back to the right project. EXTERNAL_SEARCH_ID = # The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id # of to a relative location where the documentation can be found. # The format is: EXTRA_SEARCH_MAPPINGS = id1=loc1 id2=loc2 ... EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. # Note that when enabling USE_PDFLATEX this option is only used for # generating bitmaps for formulas in the HTML output, but not in the # Makefile that is written to the output directory. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for # the generated latex document. The footer should contain everything after # the last chapter. If it is left blank doxygen will generate a # standard footer. Notice: only use this tag if you know what you are doing! LATEX_FOOTER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO # If LATEX_SOURCE_CODE is set to YES then doxygen will include # source code with syntax highlighting in the LaTeX output. # Note that which sources are shown also depends on other settings # such as SOURCE_BROWSER. LATEX_SOURCE_CODE = NO # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See # http://en.wikipedia.org/wiki/BibTeX for more info. LATEX_BIB_STYLE = plain #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load style sheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. # This is useful # if you want to understand what is going on. # On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # pointed to by INCLUDE_PATH will be searched when a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition that # overrules the definition found in the source code. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all references to function-like macros # that are alone on a line, have an all uppercase name, and do not end with a # semicolon, because these will confuse the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. For each # tag file the location of the external documentation should be added. The # format of a tag file without this location is as follows: # # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths # or URLs. Note that each tag file must have a unique name (where the name does # NOT include the path). If a tag file is not located in the directory in which # doxygen is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option also works with HAVE_DOT disabled, but it is recommended to # install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see # http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the # documentation. The MSCGEN_PATH tag allows you to specify the directory where # the mscgen tool resides. If left empty the tool is assumed to be found in the # default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # The DOT_NUM_THREADS specifies the number of dot invocations doxygen is # allowed to run in parallel. When set to 0 (the default) doxygen will # base this on the number of processors available in the system. You can set it # explicitly to a value larger than 0 to get control over the balance # between CPU load and processing speed. DOT_NUM_THREADS = 0 # By default doxygen will use the Helvetica font for all dot files that # doxygen generates. When you want a differently looking font you can specify # the font name using DOT_FONTNAME. You need to make sure dot is able to find # the font, which can be done by putting it in a standard location or by setting # the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the # directory containing the font. DOT_FONTNAME = Helvetica # The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. # The default size is 10pt. DOT_FONTSIZE = 10 # By default doxygen will tell dot to use the Helvetica font. # If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to # set the path where dot can find it. DOT_FONTPATH = # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If the UML_LOOK tag is enabled, the fields and methods are shown inside # the class node. If there are many fields or methods and many nodes the # graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS # threshold limits the number of items for each type to make the size more # managable. Set this to 0 for no limit. Note that the threshold may be # exceeded by 50% before the limit is enforced. UML_LIMIT_NUM_FIELDS = 10 # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT options are set to YES then # doxygen will generate a call dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable call graphs # for selected functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH and HAVE_DOT tags are set to YES then # doxygen will generate a caller dependency graph for every global function # or class method. Note that enabling this option will significantly increase # the time of a run. So in most cases it will be better to enable caller # graphs for selected functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will generate a graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are svg, png, jpg, or gif. # If left blank png will be used. If you choose svg you need to set # HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible in IE 9+ (other browsers do not have this requirement). DOT_IMAGE_FORMAT = png # If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to # enable generation of interactive SVG images that allow zooming and panning. # Note that this requires a modern browser other than Internet Explorer. # Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you # need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files # visible. Older versions of IE do not have SVG support. INTERACTIVE_SVG = NO # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MSCFILE_DIRS tag can be used to specify one or more directories that # contain msc files that are included in the documentation (see the # \mscfile command). MSCFILE_DIRS = # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the # number of direct children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, because dot on Windows does not # seem to support this out of the box. Warning: Depending on the platform used, # enabling this option may lead to badly anti-aliased labels on the edges of # a graph (i.e. they become hard to read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES cpputest-4.0/examples/000755 000765 000024 00000000000 13663444566 016015 5ustar00basvoddestaff000000 000000 cpputest-4.0/.project000644 000765 000024 00000004356 13663176127 015651 0ustar00basvoddestaff000000 000000 CppUTest org.eclipse.cdt.managedbuilder.core.genmakebuilder ?name? org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.autoBuildTarget all org.eclipse.cdt.make.core.buildArguments org.eclipse.cdt.make.core.buildCommand make org.eclipse.cdt.make.core.cleanBuildTarget clean org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.fullBuildTarget all org.eclipse.cdt.make.core.stopOnError true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-4.0/scripts/000755 000765 000024 00000000000 13663444567 015667 5ustar00basvoddestaff000000 000000 cpputest-4.0/.gitattributes000644 000765 000024 00000000404 13663176127 017063 0ustar00basvoddestaff000000 000000 * text=auto *.c text *.h text *.cpp text # Windows files *.sln text eol=crlf *.bat text eol=crlf *.dsp text eol=crlf *.dsw text eol=crlf *.dep text eol=crlf *.mak text eol=crlf *.vcproj text eol=crlf *.vcxproj text eol=crlf *.sh text *.ac text *.am text cpputest-4.0/test-driver000755 000765 000024 00000011042 13663176420 016362 0ustar00basvoddestaff000000 000000 #! /bin/sh # test-driver - basic testsuite driver script. scriptversion=2018-03-07.03; # UTC # Copyright (C) 2011-2020 Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . # Make unconditional expansion of undefined variables an error. This # helps a lot in preventing typo-related bugs. set -u usage_error () { echo "$0: $*" >&2 print_usage >&2 exit 2 } print_usage () { cat <$log_file 2>&1 estatus=$? if test $enable_hard_errors = no && test $estatus -eq 99; then tweaked_estatus=1 else tweaked_estatus=$estatus fi case $tweaked_estatus:$expect_failure in 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; 0:*) col=$grn res=PASS recheck=no gcopy=no;; 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; *:*) col=$red res=FAIL recheck=yes gcopy=yes;; esac # Report the test outcome and exit status in the logs, so that one can # know whether the test passed or failed simply by looking at the '.log' # file, without the need of also peaking into the corresponding '.trs' # file (automake bug#11814). echo "$res $test_name (exit status: $estatus)" >>$log_file # Report outcome to console. echo "${col}${res}${std}: $test_name" # Register the test result, and other relevant metadata. echo ":test-result: $res" > $trs_file echo ":global-test-result: $res" >> $trs_file echo ":recheck: $recheck" >> $trs_file echo ":copy-in-global-log: $gcopy" >> $trs_file # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cpputest-4.0/m4/000755 000765 000024 00000000000 13663444566 014517 5ustar00basvoddestaff000000 000000 cpputest-4.0/makeVS201x.bat000644 000765 000024 00000000536 13663176127 016467 0ustar00basvoddestaff000000 000000 rem **** rem * Command line build - For CppUTest - Run from CppUTest directory rem * rem * this path works on my machine rem ****PATH=C:\Windows\Microsoft.NET\Framework\v4.0.30319;c:\windows\system32;c:\windows msbuild /t:rebuild /verbosity:quiet CppUTest_VS201x.sln set test_exe=tests\Debug\AllTests.exe if exist %test_exe% %test_exe% -v cpputest-4.0/build/000755 000765 000024 00000000000 13663444566 015276 5ustar00basvoddestaff000000 000000 cpputest-4.0/.cproject000644 000765 000024 00000025426 13663176127 016015 0ustar00basvoddestaff000000 000000 make extensions true true true make examples true true true make cleanExamples true true true cpputest-4.0/Doxyfile000644 000765 000024 00000151355 13663176127 015712 0ustar00basvoddestaff000000 000000 # Doxyfile 1.5.3 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # This tag specifies the encoding used for all characters in the config file that # follow. The default is UTF-8 which is also the encoding used for all text before # the first occurrence of this tag. Doxygen uses libiconv (or the iconv built into # libc) for the transcoding. See http://www.gnu.org/software/libiconv for the list of # possible encodings. DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = CppUTest # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = cpputest_doxygen # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create # 4096 sub-directories (in 2 levels) under the output directory of each output # format and will distribute the generated files over these directories. # Enabling this option can be useful when feeding doxygen a huge amount of # source files, where putting all generated files in the same directory would # otherwise cause performance problems for the file system. CREATE_SUBDIRS = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, # Croatian, Czech, Danish, Dutch, Finnish, French, German, Greek, Hungarian, # Italian, Japanese, Japanese-en (Japanese with English messages), Korean, # Korean-en, Lithuanian, Norwegian, Polish, Portuguese, Romanian, Russian, # Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # This tag implements a quasi-intelligent brief description abbreviator # that is used to form the text in various listings. Each string # in this list, if found as the leading text of the brief description, will be # stripped from the text and the result after processing the whole list, is # used as the annotated text. Otherwise, the brief description is used as-is. # If left blank, the following values are used ("$name" is automatically # replaced with the name of the entity): "The $name class" "The $name widget" # "The $name file" "is" "provides" "specifies" "contains" # "represents" "a" "an" "the" ABBREVIATE_BRIEF = # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. INLINE_INHERITED_MEMB = NO # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = YES # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. The tag can be used to show relative paths in the file list. # If left blank the directory from which doxygen is run is used as the # path to strip. STRIP_FROM_PATH = # The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of # the path mentioned in the documentation of a class, which tells # the reader which header file to include in order to use a class. # If left blank only the name of the header file containing the class # definition is used. Otherwise one should specify the include paths that # are normally passed to the compiler using the -I flag. STRIP_FROM_INC_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like regular Qt-style comments # (thus requiring an explicit @brief command for a brief description.) JAVADOC_AUTOBRIEF = NO # If the QT_AUTOBRIEF tag is set to YES then Doxygen will # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring # an explicit \brief command for a brief description.) QT_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # re-implements. INHERIT_DOCS = YES # If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce # a new page for each member. If set to NO, the documentation of a member will # be part of the file/class/namespace that contains it. SEPARATE_MEMBER_PAGES = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C # sources only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = NO # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java # sources only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to # include (a tag file for) the STL sources as input, then you should # set this tag to YES in order to let doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); v.s. # func(std::string) {}). This also make the inheritance and collaboration # diagrams that involve STL classes more complete and accurate. BUILTIN_STL_SUPPORT = NO # If you use Microsoft's C++/CLI language, you should set this option to YES to # enable parsing support. CPP_CLI_SUPPORT = NO # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = NO # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = NO # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = NO # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # This flag is only useful for Objective-C code. When set to YES local # methods, which are defined in the implementation section but not in # the interface are included in the documentation. # If set to NO (the default) only methods in the interface are included. EXTRACT_LOCAL_METHODS = NO # If this flag is set to YES, the members of anonymous namespaces will be extracted # and appear in the documentation as a namespace called 'anonymous_namespace{file}', # where file will be replaced with the base name of the file that contains the anonymous # namespace. By default anonymous namespace are hidden. EXTRACT_ANON_NSPACES = NO # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = NO # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # and Mac users are advised to set this option to NO. CASE_SENSE_NAMES = NO # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the # brief documentation of file, namespace and class members alphabetically # by member name. If set to NO (the default) the members will appear in # declaration order. SORT_BRIEF_DOCS = NO # If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be # sorted by fully-qualified names, including namespaces. If set to # NO (the default), the class list will be sorted only by class name, # not including the namespace part. # Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. # Note: This option applies only to the class list, not to the # alphabetical list. SORT_BY_SCOPE_NAME = NO # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST= YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES # If the sources in your project are distributed over multiple directories # then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy # in the documentation. The default is NO. SHOW_DIRECTORIES = NO # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via # popen()) the command , where is the value of # the FILE_VERSION_FILTER tag, and is the name of an input file # provided by doxygen. Whatever the program writes to standard output # is used as the file version. See the manual for examples. FILE_VERSION_FILTER = #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # This WARN_NO_PARAMDOC option can be abled to get warnings for # functions that are documented, but have no documentation for their parameters # or return value. If set to NO (the default) doxygen will only warn about # wrong or incomplete parameter documentation, but not about the absence of # documentation. WARN_NO_PARAMDOC = NO # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. Optionally the format may contain # $version, which will be replaced by the version of the file (if it could # be obtained via FILE_VERSION_FILTER) WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = # This tag can be used to specify the character encoding of the source files that # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default # input encoding. Doxygen uses libiconv (or the iconv built into libc) for the transcoding. # See http://www.gnu.org/software/libiconv for the list of possible encodings. INPUT_ENCODING = UTF-8 # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx # *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py FILE_PATTERNS = # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = YES # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or # directories that are symbolic links (a Unix filesystem feature) are excluded # from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. Note that the wildcards are matched # against the file with absolute path, so to exclude all test directories # for example use the pattern */test/* EXCLUDE_PATTERNS = # The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names # (namespaces, classes, functions, etc.) that should be excluded from the output. # The symbol name can be a fully qualified name, a word, or if the wildcard * is used, # a substring. Examples: ANamespace, AClass, AClass::ANamespace, ANamespace::*Test EXCLUDE_SYMBOLS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. If FILTER_PATTERNS is specified, this tag will be # ignored. INPUT_FILTER = # The FILTER_PATTERNS tag can be used to specify filters on a per file pattern # basis. Doxygen will compare the file name with each pattern and apply the # filter if there is a match. The filters are a list of the form: # pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further # info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER # is applied to all files. FILTER_PATTERNS = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. # Note: To get rid of all source code in the generated output, make sure also # VERBATIM_HEADERS is set to NO. If you have enabled CALL_GRAPH or CALLER_GRAPH # then you must also enable this option. If you don't then doxygen will produce # a warning and turn it on anyway SOURCE_BROWSER = NO # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = NO # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = YES # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the REFERENCES_LINK_SOURCE tag is set to YES (the default) # and SOURCE_BROWSER tag is set to YES, then the hyperlinks from # functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will # link to the source code. Otherwise they will link to the documentstion. REFERENCES_LINK_SOURCE = YES # If the USE_HTAGS tag is set to YES then the references to source code # will point to the HTML generated by the htags(1) tool instead of doxygen # built-in source browser. The htags tool is part of GNU's global source # tagging system (see http://www.gnu.org/software/global/global.html). You # will need version 4.8.6 or higher. USE_HTAGS = NO # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = NO # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet. Note that doxygen will try to copy # the style sheet file to the HTML output directory, so don't put your own # stylesheet in the HTML output directory as well, or it will be erased! HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML # documentation will contain sections that can be hidden and shown after the # page has loaded. For this to work a browser that supports # JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox # Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). HTML_DYNAMIC_SECTIONS = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output directory. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = YES # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = a4wide # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = NO # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = NO # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimized for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that # enabling this will significantly increase the size of the XML output. XML_PROGRAMLISTING = YES #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_DEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. To prevent a macro definition from being # undefined via #undef or recursively expanded use the := operator # instead of the = operator. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse # the parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::additions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base # or super classes. Setting the tag to NO turns the diagrams off. Note that # this option is superseded by the HAVE_DOT option below. This is only a # fallback. It is recommended to install and use dot, since it yields more # powerful graphs. CLASS_DIAGRAMS = YES # You can define message sequence charts within doxygen comments using the \msc # command. Doxygen will then run the mscgen tool (see http://www.mcternan.me.uk/mscgen/) to # produce the chart and insert it in the documentation. The MSCGEN_PATH tag allows you to # specify the directory where the mscgen tool resides. If left empty the tool is assumed to # be found in the default search path. MSCGEN_PATH = # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = NO # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen # will generate a graph for groups, showing the direct groups dependencies GROUP_GRAPHS = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = NO # If the CALLER_GRAPH, SOURCE_BROWSER and HAVE_DOT tags are set to YES then doxygen will # generate a caller dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable caller graphs for selected # functions only using the \callergraph command. CALLER_GRAPH = NO # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES # then doxygen will show the dependencies a directory has on other directories # in a graphical way. The dependency relations are determined by the #include # relations between the files in the directories. DIRECTORY_GRAPH = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found in the path. DOT_PATH = # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of # nodes that will be shown in the graph. If the number of nodes in a graph # becomes larger than this value, doxygen will truncate the graph, which is # visualized by representing a node as a red box. Note that doxygen if the number # of direct children of the root node in a graph is already larger than # MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. DOT_GRAPH_MAX_NODES = 50 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes # that lay further from the root node will be omitted. Note that setting this # option to 1 or 2 may greatly reduce the computation time needed for large # code bases. Also note that the size of a graph can be further restricted by # DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. MAX_DOT_GRAPH_DEPTH = 0 # Set the DOT_TRANSPARENT tag to YES to generate images with a transparent # background. This is disabled by default, which results in a white background. # Warning: Depending on the platform used, enabling this option may lead to # badly anti-aliased labels on the edges of a graph (i.e. they become hard to # read). DOT_TRANSPARENT = NO # Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) # support this, this feature is disabled by default. DOT_MULTI_TARGETS = NO # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::additions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO cpputest-4.0/cpputest.pc.in000644 000765 000024 00000000452 13663176127 016773 0ustar00basvoddestaff000000 000000 prefix=@prefix@ exec_prefix=@exec_prefix@ libdir=@libdir@ includedir=@includedir@ Name: CppUtest URL: https://github.com/cpputest/cpputest Description: Easy to use unit test framework for C/C++ Version: @PACKAGE_VERSION@ Cflags: -I${includedir} Libs: -L${libdir} -lstdc++ -lCppUTest -lCppUTestExt cpputest-4.0/cpputest_build/000755 000765 000024 00000000000 13663444566 017225 5ustar00basvoddestaff000000 000000 cpputest-4.0/Makefile.in000644 000765 000024 00001446667 13663444465 016272 0ustar00basvoddestaff000000 000000 # Makefile.in generated by automake 1.16.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2020 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ EXTRA_PROGRAMS = CppUTestExtTests$(EXEEXT) check_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_3) @INCLUDE_CPPUTEST_EXT_TRUE@am__append_1 = lib/libCppUTestExt.a @INCLUDE_CPPUTEST_EXT_TRUE@am__append_2 = $(CPPUTESTEXT_TESTS) subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/acx_pthread.m4 \ $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/m4_ax_compiler_vendor.m4 \ $(top_srcdir)/m4/m4_ax_compiler_version.m4 \ $(top_srcdir)/m4/m4_ax_prefix_config_h.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(include_cpputest_HEADERS) \ $(am__include_cpputestext_HEADERS_DIST) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = cpputest.pc CONFIG_CLEAN_VPATH_FILES = am__EXEEXT_1 = CppUTestTests$(EXEEXT) am__EXEEXT_2 = CppUTestExtTests$(EXEEXT) @INCLUDE_CPPUTEST_EXT_TRUE@am__EXEEXT_3 = $(am__EXEEXT_2) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" \ "$(DESTDIR)$(cmakemodulesdir)" "$(DESTDIR)$(cmakescriptsdir)" \ "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(include_cpputestdir)" \ "$(DESTDIR)$(include_cpputestextdir)" LIBRARIES = $(lib_LIBRARIES) ARFLAGS = cru AM_V_AR = $(am__v_AR_@AM_V@) am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) am__v_AR_0 = @echo " AR " $@; am__v_AR_1 = lib_libCppUTest_a_AR = $(AR) $(ARFLAGS) lib_libCppUTest_a_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp am_lib_libCppUTest_a_OBJECTS = \ src/CppUTest/lib_libCppUTest_a-CommandLineArguments.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-SimpleString.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-SimpleMutex.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestFailure.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestFilter.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestHarness_c.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestOutput.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestPlugin.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestRegistry.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestResult.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-TestTestingFixture.$(OBJEXT) \ src/CppUTest/lib_libCppUTest_a-Utest.$(OBJEXT) \ src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.$(OBJEXT) lib_libCppUTest_a_OBJECTS = $(am_lib_libCppUTest_a_OBJECTS) lib_libCppUTestExt_a_AR = $(AR) $(ARFLAGS) lib_libCppUTestExt_a_LIBADD = am_lib_libCppUTestExt_a_OBJECTS = src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-GTest.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.$(OBJEXT) \ src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.$(OBJEXT) lib_libCppUTestExt_a_OBJECTS = $(am_lib_libCppUTestExt_a_OBJECTS) am_CppUTestExtTests_OBJECTS = \ tests/CppUTestExt/CppUTestExtTests-AllTests.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-GMockTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-GTest1Test.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockCallTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockFailureTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockParameterTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockPluginTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockSupportTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.$(OBJEXT) \ tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.$(OBJEXT) CppUTestExtTests_OBJECTS = $(am_CppUTestExtTests_OBJECTS) am__DEPENDENCIES_1 = CppUTestExtTests_DEPENDENCIES = lib/libCppUTestExt.a lib/libCppUTest.a \ $(am__DEPENDENCIES_1) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = CppUTestExtTests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) \ $(CppUTestExtTests_LDFLAGS) $(LDFLAGS) -o $@ am_CppUTestTests_OBJECTS = \ tests/CppUTest/CppUTestTests-AllocationInCFile.$(OBJEXT) \ tests/CppUTest/CppUTestTests-AllocationInCppFile.$(OBJEXT) \ tests/CppUTest/CppUTestTests-AllocLetTestFree.$(OBJEXT) \ tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-AllTests.$(OBJEXT) \ tests/CppUTest/CppUTestTests-CheatSheetTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-CompatabilityTests.$(OBJEXT) \ tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.$(OBJEXT) \ tests/CppUTest/CppUTestTests-JUnitOutputTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-PluginTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-PreprocessorTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-SetPluginTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-SimpleStringTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-SimpleStringCacheTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-SimpleMutexTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TeamCityOutputTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestFailureNaNTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestFailureTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestFilterTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestHarness_cTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestInstallerTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestOutputTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestRegistryTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestResultTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestUTestMacro.$(OBJEXT) \ tests/CppUTest/CppUTestTests-TestUTestStringMacro.$(OBJEXT) \ tests/CppUTest/CppUTestTests-UtestTest.$(OBJEXT) \ tests/CppUTest/CppUTestTests-UtestPlatformTest.$(OBJEXT) CppUTestTests_OBJECTS = $(am_CppUTestTests_OBJECTS) CppUTestTests_DEPENDENCIES = lib/libCppUTest.a $(am__DEPENDENCIES_1) CppUTestTests_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \ $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) $(CppUTestTests_LDFLAGS) \ $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles am__depfiles_remade = src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po \ src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po \ src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po \ src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po \ tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po \ tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) AM_V_CXX = $(am__v_CXX_@AM_V@) am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) am__v_CXX_0 = @echo " CXX " $@; am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) am__v_CXXLD_0 = @echo " CXXLD " $@; am__v_CXXLD_1 = SOURCES = $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) \ $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) DIST_SOURCES = $(lib_libCppUTest_a_SOURCES) \ $(lib_libCppUTestExt_a_SOURCES) $(CppUTestExtTests_SOURCES) \ $(CppUTestTests_SOURCES) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac DATA = $(cmake_DATA) $(cmakemodules_DATA) $(cmakescripts_DATA) \ $(pkgconfig_DATA) am__include_cpputestext_HEADERS_DIST = \ include/CppUTestExt/CodeMemoryReportFormatter.h \ include/CppUTestExt/GMock.h include/CppUTestExt/GTest.h \ include/CppUTestExt/GTestSupport.h \ include/CppUTestExt/GTestConvertor.h \ include/CppUTestExt/IEEE754ExceptionsPlugin.h \ include/CppUTestExt/MemoryReportAllocator.h \ include/CppUTestExt/MemoryReporterPlugin.h \ include/CppUTestExt/MemoryReportFormatter.h \ include/CppUTestExt/MockActualCall.h \ include/CppUTestExt/MockCheckedActualCall.h \ include/CppUTestExt/MockCheckedExpectedCall.h \ include/CppUTestExt/MockExpectedCall.h \ include/CppUTestExt/MockExpectedCallsList.h \ include/CppUTestExt/MockFailure.h \ include/CppUTestExt/MockNamedValue.h \ include/CppUTestExt/MockSupport.h \ include/CppUTestExt/MockSupportPlugin.h \ include/CppUTestExt/MockSupport_c.h \ include/CppUTestExt/OrderedTest.h HEADERS = $(include_cpputest_HEADERS) $(include_cpputestext_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ config.h.in # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope AM_RECURSIVE_TARGETS = cscope check recheck am__tty_colors_dummy = \ mgn= red= grn= lgn= blu= brg= std=; \ am__color_tests=no am__tty_colors = { \ $(am__tty_colors_dummy); \ if test "X$(AM_COLOR_TESTS)" = Xno; then \ am__color_tests=no; \ elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ am__color_tests=yes; \ elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ am__color_tests=yes; \ fi; \ if test $$am__color_tests = yes; then \ red=''; \ grn=''; \ lgn=''; \ blu=''; \ mgn=''; \ brg=''; \ std=''; \ fi; \ } am__recheck_rx = ^[ ]*:recheck:[ ]* am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* # A command that, given a newline-separated list of test names on the # standard input, print the name of the tests that are to be re-run # upon "make recheck". am__list_recheck_tests = $(AWK) '{ \ recheck = 1; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ { \ if ((getline line2 < ($$0 ".log")) < 0) \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ { \ recheck = 0; \ break; \ } \ else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ { \ break; \ } \ }; \ if (recheck) \ print $$0; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # A command that, given a newline-separated list of test names on the # standard input, create the global log from their .trs and .log files. am__create_global_log = $(AWK) ' \ function fatal(msg) \ { \ print "fatal: making $@: " msg | "cat >&2"; \ exit 1; \ } \ function rst_section(header) \ { \ print header; \ len = length(header); \ for (i = 1; i <= len; i = i + 1) \ printf "="; \ printf "\n\n"; \ } \ { \ copy_in_global_log = 1; \ global_test_result = "RUN"; \ while ((rc = (getline line < ($$0 ".trs"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".trs"); \ if (line ~ /$(am__global_test_result_rx)/) \ { \ sub("$(am__global_test_result_rx)", "", line); \ sub("[ ]*$$", "", line); \ global_test_result = line; \ } \ else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ copy_in_global_log = 0; \ }; \ if (copy_in_global_log) \ { \ rst_section(global_test_result ": " $$0); \ while ((rc = (getline line < ($$0 ".log"))) != 0) \ { \ if (rc < 0) \ fatal("failed to read from " $$0 ".log"); \ print line; \ }; \ printf "\n"; \ }; \ close ($$0 ".trs"); \ close ($$0 ".log"); \ }' # Restructured Text title. am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } # Solaris 10 'make', and several other traditional 'make' implementations, # pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it # by disabling -e (using the XSI extension "set +e") if it's set. am__sh_e_setup = case $$- in *e*) set +e;; esac # Default flags passed to test drivers. am__common_driver_flags = \ --color-tests "$$am__color_tests" \ --enable-hard-errors "$$am__enable_hard_errors" \ --expect-failure "$$am__expect_failure" # To be inserted before the command running the test. Creates the # directory for the log if needed. Stores in $dir the directory # containing $f, in $tst the test, in $log the log. Executes the # developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and # passes TESTS_ENVIRONMENT. Set up options for the wrapper that # will run the test scripts (or their associated LOG_COMPILER, if # thy have one). am__check_pre = \ $(am__sh_e_setup); \ $(am__vpath_adj_setup) $(am__vpath_adj) \ $(am__tty_colors); \ srcdir=$(srcdir); export srcdir; \ case "$@" in \ */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ *) am__odir=.;; \ esac; \ test "x$$am__odir" = x"." || test -d "$$am__odir" \ || $(MKDIR_P) "$$am__odir" || exit $$?; \ if test -f "./$$f"; then dir=./; \ elif test -f "$$f"; then dir=; \ else dir="$(srcdir)/"; fi; \ tst=$$dir$$f; log='$@'; \ if test -n '$(DISABLE_HARD_ERRORS)'; then \ am__enable_hard_errors=no; \ else \ am__enable_hard_errors=yes; \ fi; \ case " $(XFAIL_TESTS) " in \ *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ am__expect_failure=yes;; \ *) \ am__expect_failure=no;; \ esac; \ $(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) # A shell command to get the names of the tests scripts with any registered # extension removed (i.e., equivalently, the names of the test logs, with # the '.log' extension removed). The result is saved in the shell variable # '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, # we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", # since that might cause problem with VPATH rewrites for suffix-less tests. # See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. am__set_TESTS_bases = \ bases='$(TEST_LOGS)'; \ bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ bases=`echo $$bases` RECHECK_LOGS = $(TEST_LOGS) TEST_SUITE_LOG = test-suite.log TEST_EXTENSIONS = @EXEEXT@ .test LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) am__set_b = \ case '$@' in \ */*) \ case '$*' in \ */*) b='$*';; \ *) b=`echo '$@' | sed 's/\.log$$//'`; \ esac;; \ *) \ b='$*';; \ esac am__test_logs1 = $(TESTS:=.log) am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) TEST_LOGS = $(am__test_logs2:.test.log=.log) TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ $(TEST_LOG_FLAGS) am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/cpputest.pc.in AUTHORS COPYING ChangeLog INSTALL \ NEWS README compile config.guess config.sub depcomp install-sh \ ltmain.sh missing test-driver DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ ALL_FILES_IN_GIT = @ALL_FILES_IN_GIT@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CPPUTEST_ADDITIONAL_CFLAGS = @CPPUTEST_ADDITIONAL_CFLAGS@ CPPUTEST_ADDITIONAL_CPPFLAGS = @CPPUTEST_ADDITIONAL_CPPFLAGS@ CPPUTEST_ADDITIONAL_CXXFLAGS = @CPPUTEST_ADDITIONAL_CXXFLAGS@ CPPUTEST_CFLAGS = @CPPUTEST_CFLAGS@ CPPUTEST_CPPFLAGS = @CPPUTEST_CPPFLAGS@ CPPUTEST_CXXFLAGS = @CPPUTEST_CXXFLAGS@ CPPUTEST_HAS_CLANG = @CPPUTEST_HAS_CLANG@ CPPUTEST_HAS_DASH = @CPPUTEST_HAS_DASH@ CPPUTEST_HAS_GCC = @CPPUTEST_HAS_GCC@ CPPUTEST_HAS_LCOV = @CPPUTEST_HAS_LCOV@ CPPUTEST_HAS_VALGRIND = @CPPUTEST_HAS_VALGRIND@ CPPUTEST_LDADD = @CPPUTEST_LDADD@ CPPUTEST_LDFLAGS = @CPPUTEST_LDFLAGS@ CPPUTEST_ON_MACOSX = @CPPUTEST_ON_MACOSX@ CPP_PLATFORM = @CPP_PLATFORM@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GMOCK_HOME = @GMOCK_HOME@ GREP = @GREP@ INCLUDE_CPPUTEST_EXT = @INCLUDE_CPPUTEST_EXT@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ MOSTLYCLEANFILES = @MOSTLYCLEANFILES@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PTHREAD_CC = @PTHREAD_CC@ PTHREAD_CFLAGS = @PTHREAD_CFLAGS@ PTHREAD_LIBS = @PTHREAD_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ acx_pthread_config = @acx_pthread_config@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 CPPUTEST_TESTS = CppUTestTests CPPUTESTEXT_TESTS = CppUTestExtTests EXTRA_LIBRARIES = lib/libCppUTestExt.a lib_LIBRARIES = lib/libCppUTest.a $(am__append_1) # check_PROGRAMS += GTestTests TESTS = $(check_PROGRAMS) pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = cpputest.pc cmakemodulesdir = $(libdir)/CppUTest/cmake/Modules cmakemodules_DATA = \ cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake cmakescriptsdir = $(libdir)/CppUTest/cmake/Scripts cmakescripts_DATA = \ cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake cmakedir = $(libdir)/CppUTest/cmake cmake_DATA = \ build/cmake_package_files/CppUTestConfig.cmake \ build/cmake_package_files/CppUTestConfigVersion.cmake \ build/cmake_package_files/CppUTestTargets-relwithdebinfo.cmake \ build/cmake_package_files/CppUTestTargets.cmake EXTRA_DIST = \ cpputest.pc.in \ $(ALL_FILES_IN_GIT) lib_libCppUTest_a_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) lib_libCppUTest_a_CFLAGS = $(AM_CFLAGS) $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) lib_libCppUTest_a_CXXFLAGS = $(AM_CXXFLAGS) $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) lib_libCppUTest_a_SOURCES = \ src/CppUTest/CommandLineArguments.cpp \ src/CppUTest/CommandLineTestRunner.cpp \ src/CppUTest/JUnitTestOutput.cpp \ src/CppUTest/MemoryLeakDetector.cpp \ src/CppUTest/MemoryLeakWarningPlugin.cpp \ src/CppUTest/SimpleString.cpp \ src/CppUTest/SimpleStringInternalCache.cpp \ src/CppUTest/SimpleMutex.cpp \ src/CppUTest/TeamCityTestOutput.cpp \ src/CppUTest/TestFailure.cpp \ src/CppUTest/TestFilter.cpp \ src/CppUTest/TestHarness_c.cpp \ src/CppUTest/TestMemoryAllocator.cpp \ src/CppUTest/TestOutput.cpp \ src/CppUTest/TestPlugin.cpp \ src/CppUTest/TestRegistry.cpp \ src/CppUTest/TestResult.cpp \ src/CppUTest/TestTestingFixture.cpp \ src/CppUTest/Utest.cpp \ src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp include_cpputestdir = $(includedir)/CppUTest include_cpputest_HEADERS = \ include/CppUTest/CommandLineArguments.h \ include/CppUTest/CommandLineTestRunner.h \ include/CppUTest/CppUTestConfig.h \ include/CppUTest/JUnitTestOutput.h \ include/CppUTest/MemoryLeakDetector.h \ include/CppUTest/MemoryLeakDetectorMallocMacros.h \ include/CppUTest/MemoryLeakDetectorNewMacros.h \ include/CppUTest/MemoryLeakWarningPlugin.h \ include/CppUTest/PlatformSpecificFunctions.h \ include/CppUTest/PlatformSpecificFunctions_c.h \ include/CppUTest/SimpleString.h \ include/CppUTest/SimpleStringInternalCache.h \ include/CppUTest/SimpleMutex.h \ include/CppUTest/StandardCLibrary.h \ include/CppUTest/TeamCityTestOutput.h \ include/CppUTest/TestFailure.h \ include/CppUTest/TestFilter.h \ include/CppUTest/TestHarness.h \ include/CppUTest/TestHarness_c.h \ include/CppUTest/TestMemoryAllocator.h \ include/CppUTest/TestOutput.h \ include/CppUTest/TestPlugin.h \ include/CppUTest/TestRegistry.h \ include/CppUTest/TestResult.h \ include/CppUTest/TestTestingFixture.h \ include/CppUTest/Utest.h \ include/CppUTest/UtestMacros.h \ generated/CppUTestGeneratedConfig.h lib_libCppUTestExt_a_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) lib_libCppUTestExt_a_CFLAGS = $(lib_libCppUTest_a_CFLAGS) lib_libCppUTestExt_a_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) lib_libCppUTestExt_a_SOURCES = \ src/CppUTestExt/CodeMemoryReportFormatter.cpp \ src/CppUTestExt/GTest.cpp \ src/CppUTestExt/IEEE754ExceptionsPlugin.cpp \ src/CppUTestExt/MemoryReportAllocator.cpp \ src/CppUTestExt/MemoryReporterPlugin.cpp \ src/CppUTestExt/MemoryReportFormatter.cpp \ src/CppUTestExt/MockActualCall.cpp \ src/CppUTestExt/MockExpectedCall.cpp \ src/CppUTestExt/MockExpectedCallsList.cpp \ src/CppUTestExt/MockFailure.cpp \ src/CppUTestExt/MockNamedValue.cpp \ src/CppUTestExt/MockSupport.cpp \ src/CppUTestExt/MockSupportPlugin.cpp \ src/CppUTestExt/MockSupport_c.cpp \ src/CppUTestExt/OrderedTest.cpp @INCLUDE_CPPUTEST_EXT_TRUE@include_cpputestextdir = $(includedir)/CppUTestExt @INCLUDE_CPPUTEST_EXT_TRUE@include_cpputestext_HEADERS = \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/CodeMemoryReportFormatter.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GMock.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GTest.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GTestSupport.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/GTestConvertor.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/IEEE754ExceptionsPlugin.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReportAllocator.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReporterPlugin.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MemoryReportFormatter.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockActualCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockCheckedActualCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockCheckedExpectedCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockExpectedCall.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockExpectedCallsList.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockFailure.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockNamedValue.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupport.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupportPlugin.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/MockSupport_c.h \ @INCLUDE_CPPUTEST_EXT_TRUE@ include/CppUTestExt/OrderedTest.h CppUTestTests_CPPFLAGS = $(lib_libCppUTest_a_CPPFLAGS) CppUTestTests_CFLAGS = $(lib_libCppUTest_a_CFLAGS) CppUTestTests_CXXFLAGS = $(lib_libCppUTest_a_CXXFLAGS) CppUTestTests_LDADD = lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestTests_LDFLAGS = $(AM_LDFLAGS) $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) CppUTestTests_SOURCES = \ tests/CppUTest/AllocationInCFile.c \ tests/CppUTest/AllocationInCppFile.cpp \ tests/CppUTest/AllocLetTestFree.c \ tests/CppUTest/AllocLetTestFreeTest.cpp \ tests/CppUTest/AllTests.cpp \ tests/CppUTest/CheatSheetTest.cpp \ tests/CppUTest/CompatabilityTests.cpp \ tests/CppUTest/CommandLineArgumentsTest.cpp \ tests/CppUTest/CommandLineTestRunnerTest.cpp \ tests/CppUTest/DummyMemoryLeakDetector.cpp \ tests/CppUTest/JUnitOutputTest.cpp \ tests/CppUTest/MemoryLeakDetectorTest.cpp \ tests/CppUTest/MemoryOperatorOverloadTest.cpp \ tests/CppUTest/MemoryLeakWarningTest.cpp \ tests/CppUTest/PluginTest.cpp \ tests/CppUTest/PreprocessorTest.cpp \ tests/CppUTest/SetPluginTest.cpp \ tests/CppUTest/SimpleStringTest.cpp \ tests/CppUTest/SimpleStringCacheTest.cpp \ tests/CppUTest/SimpleMutexTest.cpp \ tests/CppUTest/TeamCityOutputTest.cpp \ tests/CppUTest/TestFailureNaNTest.cpp \ tests/CppUTest/TestFailureTest.cpp \ tests/CppUTest/TestFilterTest.cpp \ tests/CppUTest/TestHarness_cTest.cpp \ tests/CppUTest/TestHarness_cTestCFile.c \ tests/CppUTest/TestInstallerTest.cpp \ tests/CppUTest/TestMemoryAllocatorTest.cpp \ tests/CppUTest/TestOutputTest.cpp \ tests/CppUTest/TestRegistryTest.cpp \ tests/CppUTest/TestResultTest.cpp \ tests/CppUTest/TestUTestMacro.cpp \ tests/CppUTest/TestUTestStringMacro.cpp \ tests/CppUTest/UtestTest.cpp \ tests/CppUTest/UtestPlatformTest.cpp CppUTestExtTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) CppUTestExtTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) CppUTestExtTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) CppUTestExtTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) CppUTestExtTests_LDFLAGS = $(CppUTestTests_LDFLAGS) CppUTestExtTests_SOURCES = \ tests/CppUTestExt/AllTests.cpp \ tests/CppUTestExt/CodeMemoryReporterTest.cpp \ tests/CppUTestExt/GMockTest.cpp \ tests/CppUTestExt/GTest1Test.cpp \ tests/CppUTestExt/GTest2ConvertorTest.cpp \ tests/CppUTestExt/IEEE754PluginTest.cpp \ tests/CppUTestExt/IEEE754PluginTest_c.c \ tests/CppUTestExt/MemoryReportAllocatorTest.cpp \ tests/CppUTestExt/MemoryReporterPluginTest.cpp \ tests/CppUTestExt/MemoryReportFormatterTest.cpp \ tests/CppUTestExt/MockActualCallTest.cpp \ tests/CppUTestExt/MockCheatSheetTest.cpp \ tests/CppUTestExt/MockCallTest.cpp \ tests/CppUTestExt/MockComparatorCopierTest.cpp \ tests/CppUTestExt/MockExpectedCallTest.cpp \ tests/CppUTestExt/ExpectedFunctionsListTest.cpp \ tests/CppUTestExt/MockFailureReporterForTest.cpp \ tests/CppUTestExt/MockFailureTest.cpp \ tests/CppUTestExt/MockHierarchyTest.cpp \ tests/CppUTestExt/MockNamedValueTest.cpp \ tests/CppUTestExt/MockParameterTest.cpp \ tests/CppUTestExt/MockPluginTest.cpp \ tests/CppUTestExt/MockSupportTest.cpp \ tests/CppUTestExt/MockSupport_cTest.cpp \ tests/CppUTestExt/MockSupport_cTestCFile.c \ tests/CppUTestExt/MockStrictOrderTest.cpp \ tests/CppUTestExt/MockReturnValueTest.cpp \ tests/CppUTestExt/OrderedTestTest.cpp \ tests/CppUTestExt/OrderedTestTest_c.c \ tests/CppUTestExt/MockFakeLongLong.cpp DISTCLEANFILES = \ filename.map.txt \ generated/CppUTestGeneratedConfig.h #GTestTests_CPPFLAGS = $(lib_libCppUTestExt_a_CPPFLAGS) #GTestTests_CFLAGS = $(lib_libCppUTestExt_a_CFLAGS) #GTestTests_CXXFLAGS = $(lib_libCppUTestExt_a_CXXFLAGS) -DCPPUTEST_USE_MEM_LEAK_DETECTION=0 -DGMOCK_RENAME_MAIN=1 -D_THREAD_SAFE -DGTEST_HAS_PTHREAD=1 #GTestTests_LDADD = lib/libCppUTestExt.a lib/libCppUTest.a $(CPPUTEST_LDADD) #GTestTests_LDFLAGS = $(CppUTestTests_LDFLAGS) #GTestTests_SOURCES = \ # $(GMOCK_HOME)/test/gmock-spec-builders_test.cc \ # tests/CppUTestExt/AllTests.cpp RUN_CPPUTEST_TESTS = ./$(CPPUTEST_TESTS) RUN_CPPUTESTEXT_TESTS = ./$(CPPUTESTEXT_TESTS) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: .c .cpp .lo .log .o .obj .test .test$(EXEEXT) .trs am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @test -f $@ || rm -f stamp-h1 @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 cpputest.pc: $(top_builddir)/config.status $(srcdir)/cpputest.pc.in cd $(top_builddir) && $(SHELL) ./config.status $@ clean-checkPROGRAMS: @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list install-libLIBRARIES: $(lib_LIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(INSTALL_DATA) $$list2 '$(DESTDIR)$(libdir)'"; \ $(INSTALL_DATA) $$list2 "$(DESTDIR)$(libdir)" || exit $$?; } @$(POST_INSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ if test -f $$p; then \ $(am__strip_dir) \ echo " ( cd '$(DESTDIR)$(libdir)' && $(RANLIB) $$f )"; \ ( cd "$(DESTDIR)$(libdir)" && $(RANLIB) $$f ) || exit $$?; \ else :; fi; \ done uninstall-libLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LIBRARIES)'; test -n "$(libdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(libdir)'; $(am__uninstall_files_from_dir) clean-libLIBRARIES: -test -z "$(lib_LIBRARIES)" || rm -f $(lib_LIBRARIES) src/CppUTest/$(am__dirstamp): @$(MKDIR_P) src/CppUTest @: > src/CppUTest/$(am__dirstamp) src/CppUTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/CppUTest/$(DEPDIR) @: > src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-CommandLineArguments.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-SimpleString.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-SimpleMutex.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestFailure.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestFilter.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestHarness_c.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestOutput.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestPlugin.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestRegistry.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestResult.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-TestTestingFixture.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/CppUTest/lib_libCppUTest_a-Utest.$(OBJEXT): \ src/CppUTest/$(am__dirstamp) \ src/CppUTest/$(DEPDIR)/$(am__dirstamp) src/Platforms/@CPP_PLATFORM@/$(am__dirstamp): @$(MKDIR_P) src/Platforms/@CPP_PLATFORM@ @: > src/Platforms/@CPP_PLATFORM@/$(am__dirstamp) src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/Platforms/@CPP_PLATFORM@/$(DEPDIR) @: > src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/$(am__dirstamp) src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.$(OBJEXT): \ src/Platforms/@CPP_PLATFORM@/$(am__dirstamp) \ src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/$(am__dirstamp) lib/$(am__dirstamp): @$(MKDIR_P) lib @: > lib/$(am__dirstamp) lib/libCppUTest.a: $(lib_libCppUTest_a_OBJECTS) $(lib_libCppUTest_a_DEPENDENCIES) $(EXTRA_lib_libCppUTest_a_DEPENDENCIES) lib/$(am__dirstamp) $(AM_V_at)-rm -f lib/libCppUTest.a $(AM_V_AR)$(lib_libCppUTest_a_AR) lib/libCppUTest.a $(lib_libCppUTest_a_OBJECTS) $(lib_libCppUTest_a_LIBADD) $(AM_V_at)$(RANLIB) lib/libCppUTest.a src/CppUTestExt/$(am__dirstamp): @$(MKDIR_P) src/CppUTestExt @: > src/CppUTestExt/$(am__dirstamp) src/CppUTestExt/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) src/CppUTestExt/$(DEPDIR) @: > src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-GTest.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.$(OBJEXT): \ src/CppUTestExt/$(am__dirstamp) \ src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) lib/libCppUTestExt.a: $(lib_libCppUTestExt_a_OBJECTS) $(lib_libCppUTestExt_a_DEPENDENCIES) $(EXTRA_lib_libCppUTestExt_a_DEPENDENCIES) lib/$(am__dirstamp) $(AM_V_at)-rm -f lib/libCppUTestExt.a $(AM_V_AR)$(lib_libCppUTestExt_a_AR) lib/libCppUTestExt.a $(lib_libCppUTestExt_a_OBJECTS) $(lib_libCppUTestExt_a_LIBADD) $(AM_V_at)$(RANLIB) lib/libCppUTestExt.a tests/CppUTestExt/$(am__dirstamp): @$(MKDIR_P) tests/CppUTestExt @: > tests/CppUTestExt/$(am__dirstamp) tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) tests/CppUTestExt/$(DEPDIR) @: > tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-AllTests.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-GMockTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-GTest1Test.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockCallTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockFailureTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockParameterTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockPluginTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockSupportTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.$(OBJEXT): \ tests/CppUTestExt/$(am__dirstamp) \ tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) CppUTestExtTests$(EXEEXT): $(CppUTestExtTests_OBJECTS) $(CppUTestExtTests_DEPENDENCIES) $(EXTRA_CppUTestExtTests_DEPENDENCIES) @rm -f CppUTestExtTests$(EXEEXT) $(AM_V_CXXLD)$(CppUTestExtTests_LINK) $(CppUTestExtTests_OBJECTS) $(CppUTestExtTests_LDADD) $(LIBS) tests/CppUTest/$(am__dirstamp): @$(MKDIR_P) tests/CppUTest @: > tests/CppUTest/$(am__dirstamp) tests/CppUTest/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) tests/CppUTest/$(DEPDIR) @: > tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-AllocationInCFile.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-AllocationInCppFile.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-AllocLetTestFree.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-AllTests.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-CheatSheetTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-CompatabilityTests.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-JUnitOutputTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-PluginTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-PreprocessorTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-SetPluginTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-SimpleStringTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-SimpleStringCacheTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-SimpleMutexTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TeamCityOutputTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestFailureNaNTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestFailureTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestFilterTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestHarness_cTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestInstallerTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestOutputTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestRegistryTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestResultTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestUTestMacro.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-TestUTestStringMacro.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-UtestTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) tests/CppUTest/CppUTestTests-UtestPlatformTest.$(OBJEXT): \ tests/CppUTest/$(am__dirstamp) \ tests/CppUTest/$(DEPDIR)/$(am__dirstamp) CppUTestTests$(EXEEXT): $(CppUTestTests_OBJECTS) $(CppUTestTests_DEPENDENCIES) $(EXTRA_CppUTestTests_DEPENDENCIES) @rm -f CppUTestTests$(EXEEXT) $(AM_V_CXXLD)$(CppUTestTests_LINK) $(CppUTestTests_OBJECTS) $(CppUTestTests_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) -rm -f src/CppUTest/*.$(OBJEXT) -rm -f src/CppUTestExt/*.$(OBJEXT) -rm -f src/Platforms/@CPP_PLATFORM@/*.$(OBJEXT) -rm -f tests/CppUTest/*.$(OBJEXT) -rm -f tests/CppUTestExt/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @echo '# dummy' >$@-t && $(am__mv) $@-t $@ am--depfiles: $(am__depfiles_remade) .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.o: tests/CppUTestExt/IEEE754PluginTest_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.o `test -f 'tests/CppUTestExt/IEEE754PluginTest_c.c' || echo '$(srcdir)/'`tests/CppUTestExt/IEEE754PluginTest_c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/IEEE754PluginTest_c.c' object='tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.o `test -f 'tests/CppUTestExt/IEEE754PluginTest_c.c' || echo '$(srcdir)/'`tests/CppUTestExt/IEEE754PluginTest_c.c tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.obj: tests/CppUTestExt/IEEE754PluginTest_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.obj `if test -f 'tests/CppUTestExt/IEEE754PluginTest_c.c'; then $(CYGPATH_W) 'tests/CppUTestExt/IEEE754PluginTest_c.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/IEEE754PluginTest_c.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/IEEE754PluginTest_c.c' object='tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest_c.obj `if test -f 'tests/CppUTestExt/IEEE754PluginTest_c.c'; then $(CYGPATH_W) 'tests/CppUTestExt/IEEE754PluginTest_c.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/IEEE754PluginTest_c.c'; fi` tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.o: tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.o `test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/MockSupport_cTestCFile.c' object='tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.o `test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTestCFile.c tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.obj: tests/CppUTestExt/MockSupport_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.obj `if test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTestCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/MockSupport_cTestCFile.c' object='tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTestCFile.obj `if test -f 'tests/CppUTestExt/MockSupport_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTestCFile.c'; fi` tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.o: tests/CppUTestExt/OrderedTestTest_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.o `test -f 'tests/CppUTestExt/OrderedTestTest_c.c' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest_c.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/OrderedTestTest_c.c' object='tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.o `test -f 'tests/CppUTestExt/OrderedTestTest_c.c' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest_c.c tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.obj: tests/CppUTestExt/OrderedTestTest_c.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.obj `if test -f 'tests/CppUTestExt/OrderedTestTest_c.c'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest_c.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest_c.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTestExt/OrderedTestTest_c.c' object='tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest_c.obj `if test -f 'tests/CppUTestExt/OrderedTestTest_c.c'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest_c.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest_c.c'; fi` tests/CppUTest/CppUTestTests-AllocationInCFile.o: tests/CppUTest/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-AllocationInCFile.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo -c -o tests/CppUTest/CppUTestTests-AllocationInCFile.o `test -f 'tests/CppUTest/AllocationInCFile.c' || echo '$(srcdir)/'`tests/CppUTest/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/AllocationInCFile.c' object='tests/CppUTest/CppUTestTests-AllocationInCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocationInCFile.o `test -f 'tests/CppUTest/AllocationInCFile.c' || echo '$(srcdir)/'`tests/CppUTest/AllocationInCFile.c tests/CppUTest/CppUTestTests-AllocationInCFile.obj: tests/CppUTest/AllocationInCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-AllocationInCFile.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo -c -o tests/CppUTest/CppUTestTests-AllocationInCFile.obj `if test -f 'tests/CppUTest/AllocationInCFile.c'; then $(CYGPATH_W) 'tests/CppUTest/AllocationInCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocationInCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/AllocationInCFile.c' object='tests/CppUTest/CppUTestTests-AllocationInCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocationInCFile.obj `if test -f 'tests/CppUTest/AllocationInCFile.c'; then $(CYGPATH_W) 'tests/CppUTest/AllocationInCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocationInCFile.c'; fi` tests/CppUTest/CppUTestTests-AllocLetTestFree.o: tests/CppUTest/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-AllocLetTestFree.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo -c -o tests/CppUTest/CppUTestTests-AllocLetTestFree.o `test -f 'tests/CppUTest/AllocLetTestFree.c' || echo '$(srcdir)/'`tests/CppUTest/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/AllocLetTestFree.c' object='tests/CppUTest/CppUTestTests-AllocLetTestFree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocLetTestFree.o `test -f 'tests/CppUTest/AllocLetTestFree.c' || echo '$(srcdir)/'`tests/CppUTest/AllocLetTestFree.c tests/CppUTest/CppUTestTests-AllocLetTestFree.obj: tests/CppUTest/AllocLetTestFree.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-AllocLetTestFree.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo -c -o tests/CppUTest/CppUTestTests-AllocLetTestFree.obj `if test -f 'tests/CppUTest/AllocLetTestFree.c'; then $(CYGPATH_W) 'tests/CppUTest/AllocLetTestFree.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocLetTestFree.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/AllocLetTestFree.c' object='tests/CppUTest/CppUTestTests-AllocLetTestFree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocLetTestFree.obj `if test -f 'tests/CppUTest/AllocLetTestFree.c'; then $(CYGPATH_W) 'tests/CppUTest/AllocLetTestFree.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocLetTestFree.c'; fi` tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.o: tests/CppUTest/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo -c -o tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.o `test -f 'tests/CppUTest/TestHarness_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTest/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/TestHarness_cTestCFile.c' object='tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.o `test -f 'tests/CppUTest/TestHarness_cTestCFile.c' || echo '$(srcdir)/'`tests/CppUTest/TestHarness_cTestCFile.c tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.obj: tests/CppUTest/TestHarness_cTestCFile.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -MT tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo -c -o tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.obj `if test -f 'tests/CppUTest/TestHarness_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTest/TestHarness_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestHarness_cTestCFile.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='tests/CppUTest/TestHarness_cTestCFile.c' object='tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CFLAGS) $(CFLAGS) -c -o tests/CppUTest/CppUTestTests-TestHarness_cTestCFile.obj `if test -f 'tests/CppUTest/TestHarness_cTestCFile.c'; then $(CYGPATH_W) 'tests/CppUTest/TestHarness_cTestCFile.c'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestHarness_cTestCFile.c'; fi` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\ @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $< src/CppUTest/lib_libCppUTest_a-CommandLineArguments.o: src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-CommandLineArguments.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo -c -o src/CppUTest/lib_libCppUTest_a-CommandLineArguments.o `test -f 'src/CppUTest/CommandLineArguments.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineArguments.cpp' object='src/CppUTest/lib_libCppUTest_a-CommandLineArguments.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-CommandLineArguments.o `test -f 'src/CppUTest/CommandLineArguments.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineArguments.cpp src/CppUTest/lib_libCppUTest_a-CommandLineArguments.obj: src/CppUTest/CommandLineArguments.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-CommandLineArguments.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo -c -o src/CppUTest/lib_libCppUTest_a-CommandLineArguments.obj `if test -f 'src/CppUTest/CommandLineArguments.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineArguments.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineArguments.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineArguments.cpp' object='src/CppUTest/lib_libCppUTest_a-CommandLineArguments.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-CommandLineArguments.obj `if test -f 'src/CppUTest/CommandLineArguments.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineArguments.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineArguments.cpp'; fi` src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.o: src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo -c -o src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.o `test -f 'src/CppUTest/CommandLineTestRunner.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineTestRunner.cpp' object='src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.o `test -f 'src/CppUTest/CommandLineTestRunner.cpp' || echo '$(srcdir)/'`src/CppUTest/CommandLineTestRunner.cpp src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.obj: src/CppUTest/CommandLineTestRunner.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo -c -o src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.obj `if test -f 'src/CppUTest/CommandLineTestRunner.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineTestRunner.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineTestRunner.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/CommandLineTestRunner.cpp' object='src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-CommandLineTestRunner.obj `if test -f 'src/CppUTest/CommandLineTestRunner.cpp'; then $(CYGPATH_W) 'src/CppUTest/CommandLineTestRunner.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/CommandLineTestRunner.cpp'; fi` src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.o: src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.o `test -f 'src/CppUTest/JUnitTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/JUnitTestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.o `test -f 'src/CppUTest/JUnitTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/JUnitTestOutput.cpp src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.obj: src/CppUTest/JUnitTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.obj `if test -f 'src/CppUTest/JUnitTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/JUnitTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/JUnitTestOutput.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/JUnitTestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-JUnitTestOutput.obj `if test -f 'src/CppUTest/JUnitTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/JUnitTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/JUnitTestOutput.cpp'; fi` src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.o: src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.o `test -f 'src/CppUTest/MemoryLeakDetector.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakDetector.cpp' object='src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.o `test -f 'src/CppUTest/MemoryLeakDetector.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakDetector.cpp src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.obj: src/CppUTest/MemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.obj `if test -f 'src/CppUTest/MemoryLeakDetector.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakDetector.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakDetector.cpp' object='src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakDetector.obj `if test -f 'src/CppUTest/MemoryLeakDetector.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakDetector.cpp'; fi` src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.o: src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.o `test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakWarningPlugin.cpp' object='src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.o `test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/MemoryLeakWarningPlugin.cpp src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.obj: src/CppUTest/MemoryLeakWarningPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.obj `if test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakWarningPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/MemoryLeakWarningPlugin.cpp' object='src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-MemoryLeakWarningPlugin.obj `if test -f 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/MemoryLeakWarningPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/MemoryLeakWarningPlugin.cpp'; fi` src/CppUTest/lib_libCppUTest_a-SimpleString.o: src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleString.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleString.o `test -f 'src/CppUTest/SimpleString.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleString.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleString.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleString.o `test -f 'src/CppUTest/SimpleString.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleString.cpp src/CppUTest/lib_libCppUTest_a-SimpleString.obj: src/CppUTest/SimpleString.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleString.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleString.obj `if test -f 'src/CppUTest/SimpleString.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleString.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleString.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleString.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleString.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleString.obj `if test -f 'src/CppUTest/SimpleString.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleString.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleString.cpp'; fi` src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.o: src/CppUTest/SimpleStringInternalCache.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.o `test -f 'src/CppUTest/SimpleStringInternalCache.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleStringInternalCache.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleStringInternalCache.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.o `test -f 'src/CppUTest/SimpleStringInternalCache.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleStringInternalCache.cpp src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.obj: src/CppUTest/SimpleStringInternalCache.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.obj `if test -f 'src/CppUTest/SimpleStringInternalCache.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleStringInternalCache.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleStringInternalCache.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleStringInternalCache.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleStringInternalCache.obj `if test -f 'src/CppUTest/SimpleStringInternalCache.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleStringInternalCache.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleStringInternalCache.cpp'; fi` src/CppUTest/lib_libCppUTest_a-SimpleMutex.o: src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleMutex.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleMutex.o `test -f 'src/CppUTest/SimpleMutex.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleMutex.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleMutex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleMutex.o `test -f 'src/CppUTest/SimpleMutex.cpp' || echo '$(srcdir)/'`src/CppUTest/SimpleMutex.cpp src/CppUTest/lib_libCppUTest_a-SimpleMutex.obj: src/CppUTest/SimpleMutex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-SimpleMutex.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo -c -o src/CppUTest/lib_libCppUTest_a-SimpleMutex.obj `if test -f 'src/CppUTest/SimpleMutex.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleMutex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleMutex.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/SimpleMutex.cpp' object='src/CppUTest/lib_libCppUTest_a-SimpleMutex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-SimpleMutex.obj `if test -f 'src/CppUTest/SimpleMutex.cpp'; then $(CYGPATH_W) 'src/CppUTest/SimpleMutex.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/SimpleMutex.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.o: src/CppUTest/TeamCityTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.o `test -f 'src/CppUTest/TeamCityTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TeamCityTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TeamCityTestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.o `test -f 'src/CppUTest/TeamCityTestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TeamCityTestOutput.cpp src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.obj: src/CppUTest/TeamCityTestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.obj `if test -f 'src/CppUTest/TeamCityTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TeamCityTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TeamCityTestOutput.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TeamCityTestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TeamCityTestOutput.obj `if test -f 'src/CppUTest/TeamCityTestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TeamCityTestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TeamCityTestOutput.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestFailure.o: src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestFailure.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestFailure.o `test -f 'src/CppUTest/TestFailure.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFailure.cpp' object='src/CppUTest/lib_libCppUTest_a-TestFailure.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestFailure.o `test -f 'src/CppUTest/TestFailure.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFailure.cpp src/CppUTest/lib_libCppUTest_a-TestFailure.obj: src/CppUTest/TestFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestFailure.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestFailure.obj `if test -f 'src/CppUTest/TestFailure.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFailure.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFailure.cpp' object='src/CppUTest/lib_libCppUTest_a-TestFailure.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestFailure.obj `if test -f 'src/CppUTest/TestFailure.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFailure.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestFilter.o: src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestFilter.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestFilter.o `test -f 'src/CppUTest/TestFilter.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFilter.cpp' object='src/CppUTest/lib_libCppUTest_a-TestFilter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestFilter.o `test -f 'src/CppUTest/TestFilter.cpp' || echo '$(srcdir)/'`src/CppUTest/TestFilter.cpp src/CppUTest/lib_libCppUTest_a-TestFilter.obj: src/CppUTest/TestFilter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestFilter.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestFilter.obj `if test -f 'src/CppUTest/TestFilter.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFilter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestFilter.cpp' object='src/CppUTest/lib_libCppUTest_a-TestFilter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestFilter.obj `if test -f 'src/CppUTest/TestFilter.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestFilter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestFilter.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestHarness_c.o: src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestHarness_c.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestHarness_c.o `test -f 'src/CppUTest/TestHarness_c.cpp' || echo '$(srcdir)/'`src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestHarness_c.cpp' object='src/CppUTest/lib_libCppUTest_a-TestHarness_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestHarness_c.o `test -f 'src/CppUTest/TestHarness_c.cpp' || echo '$(srcdir)/'`src/CppUTest/TestHarness_c.cpp src/CppUTest/lib_libCppUTest_a-TestHarness_c.obj: src/CppUTest/TestHarness_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestHarness_c.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestHarness_c.obj `if test -f 'src/CppUTest/TestHarness_c.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestHarness_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestHarness_c.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestHarness_c.cpp' object='src/CppUTest/lib_libCppUTest_a-TestHarness_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestHarness_c.obj `if test -f 'src/CppUTest/TestHarness_c.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestHarness_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestHarness_c.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.o: src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.o `test -f 'src/CppUTest/TestMemoryAllocator.cpp' || echo '$(srcdir)/'`src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestMemoryAllocator.cpp' object='src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.o `test -f 'src/CppUTest/TestMemoryAllocator.cpp' || echo '$(srcdir)/'`src/CppUTest/TestMemoryAllocator.cpp src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.obj: src/CppUTest/TestMemoryAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.obj `if test -f 'src/CppUTest/TestMemoryAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestMemoryAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestMemoryAllocator.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestMemoryAllocator.cpp' object='src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestMemoryAllocator.obj `if test -f 'src/CppUTest/TestMemoryAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestMemoryAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestMemoryAllocator.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestOutput.o: src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestOutput.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestOutput.o `test -f 'src/CppUTest/TestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-TestOutput.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestOutput.o `test -f 'src/CppUTest/TestOutput.cpp' || echo '$(srcdir)/'`src/CppUTest/TestOutput.cpp src/CppUTest/lib_libCppUTest_a-TestOutput.obj: src/CppUTest/TestOutput.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestOutput.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestOutput.obj `if test -f 'src/CppUTest/TestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestOutput.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestOutput.cpp' object='src/CppUTest/lib_libCppUTest_a-TestOutput.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestOutput.obj `if test -f 'src/CppUTest/TestOutput.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestOutput.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestOutput.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestPlugin.o: src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestPlugin.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestPlugin.o `test -f 'src/CppUTest/TestPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestPlugin.cpp' object='src/CppUTest/lib_libCppUTest_a-TestPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestPlugin.o `test -f 'src/CppUTest/TestPlugin.cpp' || echo '$(srcdir)/'`src/CppUTest/TestPlugin.cpp src/CppUTest/lib_libCppUTest_a-TestPlugin.obj: src/CppUTest/TestPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestPlugin.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestPlugin.obj `if test -f 'src/CppUTest/TestPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestPlugin.cpp' object='src/CppUTest/lib_libCppUTest_a-TestPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestPlugin.obj `if test -f 'src/CppUTest/TestPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestPlugin.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestRegistry.o: src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestRegistry.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestRegistry.o `test -f 'src/CppUTest/TestRegistry.cpp' || echo '$(srcdir)/'`src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestRegistry.cpp' object='src/CppUTest/lib_libCppUTest_a-TestRegistry.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestRegistry.o `test -f 'src/CppUTest/TestRegistry.cpp' || echo '$(srcdir)/'`src/CppUTest/TestRegistry.cpp src/CppUTest/lib_libCppUTest_a-TestRegistry.obj: src/CppUTest/TestRegistry.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestRegistry.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestRegistry.obj `if test -f 'src/CppUTest/TestRegistry.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestRegistry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestRegistry.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestRegistry.cpp' object='src/CppUTest/lib_libCppUTest_a-TestRegistry.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestRegistry.obj `if test -f 'src/CppUTest/TestRegistry.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestRegistry.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestRegistry.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestResult.o: src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestResult.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestResult.o `test -f 'src/CppUTest/TestResult.cpp' || echo '$(srcdir)/'`src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestResult.cpp' object='src/CppUTest/lib_libCppUTest_a-TestResult.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestResult.o `test -f 'src/CppUTest/TestResult.cpp' || echo '$(srcdir)/'`src/CppUTest/TestResult.cpp src/CppUTest/lib_libCppUTest_a-TestResult.obj: src/CppUTest/TestResult.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestResult.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestResult.obj `if test -f 'src/CppUTest/TestResult.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestResult.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestResult.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestResult.cpp' object='src/CppUTest/lib_libCppUTest_a-TestResult.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestResult.obj `if test -f 'src/CppUTest/TestResult.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestResult.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestResult.cpp'; fi` src/CppUTest/lib_libCppUTest_a-TestTestingFixture.o: src/CppUTest/TestTestingFixture.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestTestingFixture.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestTestingFixture.o `test -f 'src/CppUTest/TestTestingFixture.cpp' || echo '$(srcdir)/'`src/CppUTest/TestTestingFixture.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestTestingFixture.cpp' object='src/CppUTest/lib_libCppUTest_a-TestTestingFixture.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestTestingFixture.o `test -f 'src/CppUTest/TestTestingFixture.cpp' || echo '$(srcdir)/'`src/CppUTest/TestTestingFixture.cpp src/CppUTest/lib_libCppUTest_a-TestTestingFixture.obj: src/CppUTest/TestTestingFixture.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-TestTestingFixture.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Tpo -c -o src/CppUTest/lib_libCppUTest_a-TestTestingFixture.obj `if test -f 'src/CppUTest/TestTestingFixture.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestTestingFixture.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestTestingFixture.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/TestTestingFixture.cpp' object='src/CppUTest/lib_libCppUTest_a-TestTestingFixture.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-TestTestingFixture.obj `if test -f 'src/CppUTest/TestTestingFixture.cpp'; then $(CYGPATH_W) 'src/CppUTest/TestTestingFixture.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/TestTestingFixture.cpp'; fi` src/CppUTest/lib_libCppUTest_a-Utest.o: src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-Utest.o -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Tpo -c -o src/CppUTest/lib_libCppUTest_a-Utest.o `test -f 'src/CppUTest/Utest.cpp' || echo '$(srcdir)/'`src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/Utest.cpp' object='src/CppUTest/lib_libCppUTest_a-Utest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-Utest.o `test -f 'src/CppUTest/Utest.cpp' || echo '$(srcdir)/'`src/CppUTest/Utest.cpp src/CppUTest/lib_libCppUTest_a-Utest.obj: src/CppUTest/Utest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTest/lib_libCppUTest_a-Utest.obj -MD -MP -MF src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Tpo -c -o src/CppUTest/lib_libCppUTest_a-Utest.obj `if test -f 'src/CppUTest/Utest.cpp'; then $(CYGPATH_W) 'src/CppUTest/Utest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/Utest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Tpo src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTest/Utest.cpp' object='src/CppUTest/lib_libCppUTest_a-Utest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTest/lib_libCppUTest_a-Utest.obj `if test -f 'src/CppUTest/Utest.cpp'; then $(CYGPATH_W) 'src/CppUTest/Utest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTest/Utest.cpp'; fi` src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.o: src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.o -MD -MP -MF src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo -c -o src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.o `test -f 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp' || echo '$(srcdir)/'`src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp' object='src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.o `test -f 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp' || echo '$(srcdir)/'`src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.obj: src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -MT src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.obj -MD -MP -MF src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo -c -o src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.obj `if test -f 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; then $(CYGPATH_W) 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; else $(CYGPATH_W) '$(srcdir)/src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Tpo src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp' object='src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTest_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTest_a_CXXFLAGS) $(CXXFLAGS) -c -o src/Platforms/@CPP_PLATFORM@/lib_libCppUTest_a-UtestPlatform.obj `if test -f 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; then $(CYGPATH_W) 'src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; else $(CYGPATH_W) '$(srcdir)/src/Platforms/@CPP_PLATFORM@/UtestPlatform.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.o: src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.o `test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/CodeMemoryReportFormatter.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.o `test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/CodeMemoryReportFormatter.cpp src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj: src/CppUTestExt/CodeMemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj `if test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/CodeMemoryReportFormatter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/CodeMemoryReportFormatter.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-CodeMemoryReportFormatter.obj `if test -f 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/CodeMemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/CodeMemoryReportFormatter.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-GTest.o: src/CppUTestExt/GTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-GTest.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-GTest.o `test -f 'src/CppUTestExt/GTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/GTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/GTest.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-GTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-GTest.o `test -f 'src/CppUTestExt/GTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/GTest.cpp src/CppUTestExt/lib_libCppUTestExt_a-GTest.obj: src/CppUTestExt/GTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-GTest.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-GTest.obj `if test -f 'src/CppUTestExt/GTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/GTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/GTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/GTest.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-GTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-GTest.obj `if test -f 'src/CppUTestExt/GTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/GTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/GTest.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.o: src/CppUTestExt/IEEE754ExceptionsPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.o `test -f 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/IEEE754ExceptionsPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/IEEE754ExceptionsPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.o `test -f 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/IEEE754ExceptionsPlugin.cpp src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.obj: src/CppUTestExt/IEEE754ExceptionsPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.obj `if test -f 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/IEEE754ExceptionsPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.obj `if test -f 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/IEEE754ExceptionsPlugin.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.o: src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.o `test -f 'src/CppUTestExt/MemoryReportAllocator.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportAllocator.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.o `test -f 'src/CppUTestExt/MemoryReportAllocator.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportAllocator.cpp src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.obj: src/CppUTestExt/MemoryReportAllocator.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.obj `if test -f 'src/CppUTestExt/MemoryReportAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportAllocator.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportAllocator.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportAllocator.obj `if test -f 'src/CppUTestExt/MemoryReportAllocator.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportAllocator.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportAllocator.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.o: src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.o `test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReporterPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.o `test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReporterPlugin.cpp src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.obj: src/CppUTestExt/MemoryReporterPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.obj `if test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReporterPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReporterPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReporterPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReporterPlugin.obj `if test -f 'src/CppUTestExt/MemoryReporterPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReporterPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReporterPlugin.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.o: src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.o `test -f 'src/CppUTestExt/MemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportFormatter.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.o `test -f 'src/CppUTestExt/MemoryReportFormatter.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MemoryReportFormatter.cpp src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.obj: src/CppUTestExt/MemoryReportFormatter.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.obj `if test -f 'src/CppUTestExt/MemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportFormatter.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MemoryReportFormatter.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MemoryReportFormatter.obj `if test -f 'src/CppUTestExt/MemoryReportFormatter.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MemoryReportFormatter.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MemoryReportFormatter.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.o: src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.o `test -f 'src/CppUTestExt/MockActualCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockActualCall.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.o `test -f 'src/CppUTestExt/MockActualCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockActualCall.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.obj: src/CppUTestExt/MockActualCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.obj `if test -f 'src/CppUTestExt/MockActualCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockActualCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockActualCall.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockActualCall.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockActualCall.obj `if test -f 'src/CppUTestExt/MockActualCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockActualCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockActualCall.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.o: src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.o `test -f 'src/CppUTestExt/MockExpectedCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCall.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.o `test -f 'src/CppUTestExt/MockExpectedCall.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCall.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.obj: src/CppUTestExt/MockExpectedCall.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.obj `if test -f 'src/CppUTestExt/MockExpectedCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCall.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCall.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCall.obj `if test -f 'src/CppUTestExt/MockExpectedCall.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCall.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCall.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.o: src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.o `test -f 'src/CppUTestExt/MockExpectedCallsList.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCallsList.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.o `test -f 'src/CppUTestExt/MockExpectedCallsList.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockExpectedCallsList.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.obj: src/CppUTestExt/MockExpectedCallsList.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.obj `if test -f 'src/CppUTestExt/MockExpectedCallsList.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCallsList.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCallsList.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockExpectedCallsList.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockExpectedCallsList.obj `if test -f 'src/CppUTestExt/MockExpectedCallsList.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockExpectedCallsList.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockExpectedCallsList.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.o: src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.o `test -f 'src/CppUTestExt/MockFailure.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockFailure.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.o `test -f 'src/CppUTestExt/MockFailure.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockFailure.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.obj: src/CppUTestExt/MockFailure.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.obj `if test -f 'src/CppUTestExt/MockFailure.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockFailure.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockFailure.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockFailure.obj `if test -f 'src/CppUTestExt/MockFailure.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockFailure.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockFailure.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.o: src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.o `test -f 'src/CppUTestExt/MockNamedValue.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockNamedValue.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.o `test -f 'src/CppUTestExt/MockNamedValue.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockNamedValue.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.obj: src/CppUTestExt/MockNamedValue.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.obj `if test -f 'src/CppUTestExt/MockNamedValue.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockNamedValue.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockNamedValue.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockNamedValue.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockNamedValue.obj `if test -f 'src/CppUTestExt/MockNamedValue.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockNamedValue.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockNamedValue.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.o: src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.o `test -f 'src/CppUTestExt/MockSupport.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.o `test -f 'src/CppUTestExt/MockSupport.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.obj: src/CppUTestExt/MockSupport.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.obj `if test -f 'src/CppUTestExt/MockSupport.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport.obj `if test -f 'src/CppUTestExt/MockSupport.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.o: src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.o `test -f 'src/CppUTestExt/MockSupportPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupportPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.o `test -f 'src/CppUTestExt/MockSupportPlugin.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupportPlugin.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.obj: src/CppUTestExt/MockSupportPlugin.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.obj `if test -f 'src/CppUTestExt/MockSupportPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupportPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupportPlugin.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupportPlugin.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupportPlugin.obj `if test -f 'src/CppUTestExt/MockSupportPlugin.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupportPlugin.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupportPlugin.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.o: src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.o `test -f 'src/CppUTestExt/MockSupport_c.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport_c.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.o `test -f 'src/CppUTestExt/MockSupport_c.cpp' || echo '$(srcdir)/'`src/CppUTestExt/MockSupport_c.cpp src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.obj: src/CppUTestExt/MockSupport_c.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.obj `if test -f 'src/CppUTestExt/MockSupport_c.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport_c.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/MockSupport_c.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-MockSupport_c.obj `if test -f 'src/CppUTestExt/MockSupport_c.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/MockSupport_c.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/MockSupport_c.cpp'; fi` src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.o: src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.o -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.o `test -f 'src/CppUTestExt/OrderedTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/OrderedTest.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.o `test -f 'src/CppUTestExt/OrderedTest.cpp' || echo '$(srcdir)/'`src/CppUTestExt/OrderedTest.cpp src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.obj: src/CppUTestExt/OrderedTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -MT src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.obj -MD -MP -MF src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo -c -o src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.obj `if test -f 'src/CppUTestExt/OrderedTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/OrderedTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/OrderedTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Tpo src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/CppUTestExt/OrderedTest.cpp' object='src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lib_libCppUTestExt_a_CPPFLAGS) $(CPPFLAGS) $(lib_libCppUTestExt_a_CXXFLAGS) $(CXXFLAGS) -c -o src/CppUTestExt/lib_libCppUTestExt_a-OrderedTest.obj `if test -f 'src/CppUTestExt/OrderedTest.cpp'; then $(CYGPATH_W) 'src/CppUTestExt/OrderedTest.cpp'; else $(CYGPATH_W) '$(srcdir)/src/CppUTestExt/OrderedTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-AllTests.o: tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-AllTests.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-AllTests.o `test -f 'tests/CppUTestExt/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/AllTests.cpp' object='tests/CppUTestExt/CppUTestExtTests-AllTests.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-AllTests.o `test -f 'tests/CppUTestExt/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/AllTests.cpp tests/CppUTestExt/CppUTestExtTests-AllTests.obj: tests/CppUTestExt/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-AllTests.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-AllTests.obj `if test -f 'tests/CppUTestExt/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/AllTests.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/AllTests.cpp' object='tests/CppUTestExt/CppUTestExtTests-AllTests.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-AllTests.obj `if test -f 'tests/CppUTestExt/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/AllTests.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.o: tests/CppUTestExt/CodeMemoryReporterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.o `test -f 'tests/CppUTestExt/CodeMemoryReporterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/CodeMemoryReporterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/CodeMemoryReporterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.o `test -f 'tests/CppUTestExt/CodeMemoryReporterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/CodeMemoryReporterTest.cpp tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.obj: tests/CppUTestExt/CodeMemoryReporterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.obj `if test -f 'tests/CppUTestExt/CodeMemoryReporterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/CodeMemoryReporterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/CodeMemoryReporterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/CodeMemoryReporterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-CodeMemoryReporterTest.obj `if test -f 'tests/CppUTestExt/CodeMemoryReporterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/CodeMemoryReporterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/CodeMemoryReporterTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-GMockTest.o: tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GMockTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GMockTest.o `test -f 'tests/CppUTestExt/GMockTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GMockTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-GMockTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GMockTest.o `test -f 'tests/CppUTestExt/GMockTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GMockTest.cpp tests/CppUTestExt/CppUTestExtTests-GMockTest.obj: tests/CppUTestExt/GMockTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GMockTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GMockTest.obj `if test -f 'tests/CppUTestExt/GMockTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GMockTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GMockTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GMockTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-GMockTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GMockTest.obj `if test -f 'tests/CppUTestExt/GMockTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GMockTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GMockTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-GTest1Test.o: tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GTest1Test.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GTest1Test.o `test -f 'tests/CppUTestExt/GTest1Test.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest1Test.cpp' object='tests/CppUTestExt/CppUTestExtTests-GTest1Test.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GTest1Test.o `test -f 'tests/CppUTestExt/GTest1Test.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest1Test.cpp tests/CppUTestExt/CppUTestExtTests-GTest1Test.obj: tests/CppUTestExt/GTest1Test.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GTest1Test.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GTest1Test.obj `if test -f 'tests/CppUTestExt/GTest1Test.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest1Test.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest1Test.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest1Test.cpp' object='tests/CppUTestExt/CppUTestExtTests-GTest1Test.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GTest1Test.obj `if test -f 'tests/CppUTestExt/GTest1Test.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest1Test.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest1Test.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.o: tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.o `test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest2ConvertorTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.o `test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/GTest2ConvertorTest.cpp tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.obj: tests/CppUTestExt/GTest2ConvertorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.obj `if test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest2ConvertorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/GTest2ConvertorTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-GTest2ConvertorTest.obj `if test -f 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/GTest2ConvertorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/GTest2ConvertorTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.o: tests/CppUTestExt/IEEE754PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.o `test -f 'tests/CppUTestExt/IEEE754PluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/IEEE754PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/IEEE754PluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.o `test -f 'tests/CppUTestExt/IEEE754PluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/IEEE754PluginTest.cpp tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.obj: tests/CppUTestExt/IEEE754PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.obj `if test -f 'tests/CppUTestExt/IEEE754PluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/IEEE754PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/IEEE754PluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/IEEE754PluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-IEEE754PluginTest.obj `if test -f 'tests/CppUTestExt/IEEE754PluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/IEEE754PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/IEEE754PluginTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.o: tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.o `test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportAllocatorTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.o `test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportAllocatorTest.cpp tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.obj: tests/CppUTestExt/MemoryReportAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.obj `if test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportAllocatorTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportAllocatorTest.obj `if test -f 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportAllocatorTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.o: tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.o `test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReporterPluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.o `test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReporterPluginTest.cpp tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.obj: tests/CppUTestExt/MemoryReporterPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.obj `if test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReporterPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReporterPluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReporterPluginTest.obj `if test -f 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReporterPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReporterPluginTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.o: tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportFormatterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.o `test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MemoryReportFormatterTest.cpp tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.obj: tests/CppUTestExt/MemoryReportFormatterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportFormatterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MemoryReportFormatterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MemoryReportFormatterTest.obj `if test -f 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MemoryReportFormatterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MemoryReportFormatterTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.o: tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.o `test -f 'tests/CppUTestExt/MockActualCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockActualCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.o `test -f 'tests/CppUTestExt/MockActualCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockActualCallTest.cpp tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.obj: tests/CppUTestExt/MockActualCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.obj `if test -f 'tests/CppUTestExt/MockActualCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockActualCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockActualCallTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockActualCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockActualCallTest.obj `if test -f 'tests/CppUTestExt/MockActualCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockActualCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockActualCallTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.o: tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.o `test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCheatSheetTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.o `test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCheatSheetTest.cpp tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.obj: tests/CppUTestExt/MockCheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.obj `if test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCheatSheetTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCheatSheetTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockCheatSheetTest.obj `if test -f 'tests/CppUTestExt/MockCheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCheatSheetTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockCallTest.o: tests/CppUTestExt/MockCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockCallTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockCallTest.o `test -f 'tests/CppUTestExt/MockCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockCallTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockCallTest.o `test -f 'tests/CppUTestExt/MockCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockCallTest.cpp tests/CppUTestExt/CppUTestExtTests-MockCallTest.obj: tests/CppUTestExt/MockCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockCallTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockCallTest.obj `if test -f 'tests/CppUTestExt/MockCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCallTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockCallTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockCallTest.obj `if test -f 'tests/CppUTestExt/MockCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockCallTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.o: tests/CppUTestExt/MockComparatorCopierTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.o `test -f 'tests/CppUTestExt/MockComparatorCopierTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockComparatorCopierTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockComparatorCopierTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.o `test -f 'tests/CppUTestExt/MockComparatorCopierTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockComparatorCopierTest.cpp tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.obj: tests/CppUTestExt/MockComparatorCopierTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.obj `if test -f 'tests/CppUTestExt/MockComparatorCopierTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockComparatorCopierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockComparatorCopierTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockComparatorCopierTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockComparatorCopierTest.obj `if test -f 'tests/CppUTestExt/MockComparatorCopierTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockComparatorCopierTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockComparatorCopierTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.o: tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.o `test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.o `test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockExpectedCallTest.cpp tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.obj: tests/CppUTestExt/MockExpectedCallTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.obj `if test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedCallTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockExpectedCallTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockExpectedCallTest.obj `if test -f 'tests/CppUTestExt/MockExpectedCallTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockExpectedCallTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockExpectedCallTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.o: tests/CppUTestExt/ExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.o `test -f 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/ExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/ExpectedFunctionsListTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.o `test -f 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/ExpectedFunctionsListTest.cpp tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.obj: tests/CppUTestExt/ExpectedFunctionsListTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.obj `if test -f 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/ExpectedFunctionsListTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-ExpectedFunctionsListTest.obj `if test -f 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/ExpectedFunctionsListTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.o: tests/CppUTestExt/MockFailureReporterForTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.o `test -f 'tests/CppUTestExt/MockFailureReporterForTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureReporterForTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureReporterForTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.o `test -f 'tests/CppUTestExt/MockFailureReporterForTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureReporterForTest.cpp tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.obj: tests/CppUTestExt/MockFailureReporterForTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.obj `if test -f 'tests/CppUTestExt/MockFailureReporterForTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureReporterForTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureReporterForTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureReporterForTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureReporterForTest.obj `if test -f 'tests/CppUTestExt/MockFailureReporterForTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureReporterForTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureReporterForTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockFailureTest.o: tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFailureTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureTest.o `test -f 'tests/CppUTestExt/MockFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFailureTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureTest.o `test -f 'tests/CppUTestExt/MockFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFailureTest.cpp tests/CppUTestExt/CppUTestExtTests-MockFailureTest.obj: tests/CppUTestExt/MockFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFailureTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureTest.obj `if test -f 'tests/CppUTestExt/MockFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFailureTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFailureTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFailureTest.obj `if test -f 'tests/CppUTestExt/MockFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFailureTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.o: tests/CppUTestExt/MockHierarchyTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.o `test -f 'tests/CppUTestExt/MockHierarchyTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockHierarchyTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockHierarchyTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.o `test -f 'tests/CppUTestExt/MockHierarchyTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockHierarchyTest.cpp tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.obj: tests/CppUTestExt/MockHierarchyTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.obj `if test -f 'tests/CppUTestExt/MockHierarchyTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockHierarchyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockHierarchyTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockHierarchyTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockHierarchyTest.obj `if test -f 'tests/CppUTestExt/MockHierarchyTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockHierarchyTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockHierarchyTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.o: tests/CppUTestExt/MockNamedValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.o `test -f 'tests/CppUTestExt/MockNamedValueTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockNamedValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockNamedValueTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.o `test -f 'tests/CppUTestExt/MockNamedValueTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockNamedValueTest.cpp tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.obj: tests/CppUTestExt/MockNamedValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.obj `if test -f 'tests/CppUTestExt/MockNamedValueTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockNamedValueTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockNamedValueTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockNamedValueTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockNamedValueTest.obj `if test -f 'tests/CppUTestExt/MockNamedValueTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockNamedValueTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockNamedValueTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockParameterTest.o: tests/CppUTestExt/MockParameterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockParameterTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockParameterTest.o `test -f 'tests/CppUTestExt/MockParameterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockParameterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockParameterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockParameterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockParameterTest.o `test -f 'tests/CppUTestExt/MockParameterTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockParameterTest.cpp tests/CppUTestExt/CppUTestExtTests-MockParameterTest.obj: tests/CppUTestExt/MockParameterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockParameterTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockParameterTest.obj `if test -f 'tests/CppUTestExt/MockParameterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockParameterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockParameterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockParameterTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockParameterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockParameterTest.obj `if test -f 'tests/CppUTestExt/MockParameterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockParameterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockParameterTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockPluginTest.o: tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockPluginTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockPluginTest.o `test -f 'tests/CppUTestExt/MockPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockPluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockPluginTest.o `test -f 'tests/CppUTestExt/MockPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockPluginTest.cpp tests/CppUTestExt/CppUTestExtTests-MockPluginTest.obj: tests/CppUTestExt/MockPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockPluginTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockPluginTest.obj `if test -f 'tests/CppUTestExt/MockPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockPluginTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockPluginTest.obj `if test -f 'tests/CppUTestExt/MockPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockPluginTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockSupportTest.o: tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupportTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupportTest.o `test -f 'tests/CppUTestExt/MockSupportTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupportTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockSupportTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupportTest.o `test -f 'tests/CppUTestExt/MockSupportTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupportTest.cpp tests/CppUTestExt/CppUTestExtTests-MockSupportTest.obj: tests/CppUTestExt/MockSupportTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupportTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupportTest.obj `if test -f 'tests/CppUTestExt/MockSupportTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupportTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupportTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupportTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockSupportTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupportTest.obj `if test -f 'tests/CppUTestExt/MockSupportTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupportTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupportTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.o: tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.o `test -f 'tests/CppUTestExt/MockSupport_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupport_cTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.o `test -f 'tests/CppUTestExt/MockSupport_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockSupport_cTest.cpp tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.obj: tests/CppUTestExt/MockSupport_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.obj `if test -f 'tests/CppUTestExt/MockSupport_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockSupport_cTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockSupport_cTest.obj `if test -f 'tests/CppUTestExt/MockSupport_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockSupport_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockSupport_cTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.o: tests/CppUTestExt/MockStrictOrderTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.o `test -f 'tests/CppUTestExt/MockStrictOrderTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockStrictOrderTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockStrictOrderTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.o `test -f 'tests/CppUTestExt/MockStrictOrderTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockStrictOrderTest.cpp tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.obj: tests/CppUTestExt/MockStrictOrderTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.obj `if test -f 'tests/CppUTestExt/MockStrictOrderTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockStrictOrderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockStrictOrderTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockStrictOrderTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockStrictOrderTest.obj `if test -f 'tests/CppUTestExt/MockStrictOrderTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockStrictOrderTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockStrictOrderTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.o: tests/CppUTestExt/MockReturnValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.o `test -f 'tests/CppUTestExt/MockReturnValueTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockReturnValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockReturnValueTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.o `test -f 'tests/CppUTestExt/MockReturnValueTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockReturnValueTest.cpp tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.obj: tests/CppUTestExt/MockReturnValueTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.obj `if test -f 'tests/CppUTestExt/MockReturnValueTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockReturnValueTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockReturnValueTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockReturnValueTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockReturnValueTest.obj `if test -f 'tests/CppUTestExt/MockReturnValueTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockReturnValueTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockReturnValueTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.o: tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.o `test -f 'tests/CppUTestExt/OrderedTestTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/OrderedTestTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.o `test -f 'tests/CppUTestExt/OrderedTestTest.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/OrderedTestTest.cpp tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.obj: tests/CppUTestExt/OrderedTestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.obj `if test -f 'tests/CppUTestExt/OrderedTestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/OrderedTestTest.cpp' object='tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-OrderedTestTest.obj `if test -f 'tests/CppUTestExt/OrderedTestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/OrderedTestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/OrderedTestTest.cpp'; fi` tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.o: tests/CppUTestExt/MockFakeLongLong.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.o -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.o `test -f 'tests/CppUTestExt/MockFakeLongLong.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFakeLongLong.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFakeLongLong.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.o `test -f 'tests/CppUTestExt/MockFakeLongLong.cpp' || echo '$(srcdir)/'`tests/CppUTestExt/MockFakeLongLong.cpp tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.obj: tests/CppUTestExt/MockFakeLongLong.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.obj -MD -MP -MF tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Tpo -c -o tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.obj `if test -f 'tests/CppUTestExt/MockFakeLongLong.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFakeLongLong.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFakeLongLong.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Tpo tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTestExt/MockFakeLongLong.cpp' object='tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestExtTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestExtTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTestExt/CppUTestExtTests-MockFakeLongLong.obj `if test -f 'tests/CppUTestExt/MockFakeLongLong.cpp'; then $(CYGPATH_W) 'tests/CppUTestExt/MockFakeLongLong.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTestExt/MockFakeLongLong.cpp'; fi` tests/CppUTest/CppUTestTests-AllocationInCppFile.o: tests/CppUTest/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllocationInCppFile.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo -c -o tests/CppUTest/CppUTestTests-AllocationInCppFile.o `test -f 'tests/CppUTest/AllocationInCppFile.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllocationInCppFile.cpp' object='tests/CppUTest/CppUTestTests-AllocationInCppFile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocationInCppFile.o `test -f 'tests/CppUTest/AllocationInCppFile.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllocationInCppFile.cpp tests/CppUTest/CppUTestTests-AllocationInCppFile.obj: tests/CppUTest/AllocationInCppFile.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllocationInCppFile.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo -c -o tests/CppUTest/CppUTestTests-AllocationInCppFile.obj `if test -f 'tests/CppUTest/AllocationInCppFile.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllocationInCppFile.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocationInCppFile.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllocationInCppFile.cpp' object='tests/CppUTest/CppUTestTests-AllocationInCppFile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocationInCppFile.obj `if test -f 'tests/CppUTest/AllocationInCppFile.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllocationInCppFile.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocationInCppFile.cpp'; fi` tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.o: tests/CppUTest/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo -c -o tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.o `test -f 'tests/CppUTest/AllocLetTestFreeTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllocLetTestFreeTest.cpp' object='tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.o `test -f 'tests/CppUTest/AllocLetTestFreeTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllocLetTestFreeTest.cpp tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.obj: tests/CppUTest/AllocLetTestFreeTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo -c -o tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.obj `if test -f 'tests/CppUTest/AllocLetTestFreeTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllocLetTestFreeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocLetTestFreeTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllocLetTestFreeTest.cpp' object='tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllocLetTestFreeTest.obj `if test -f 'tests/CppUTest/AllocLetTestFreeTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllocLetTestFreeTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllocLetTestFreeTest.cpp'; fi` tests/CppUTest/CppUTestTests-AllTests.o: tests/CppUTest/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllTests.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Tpo -c -o tests/CppUTest/CppUTestTests-AllTests.o `test -f 'tests/CppUTest/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllTests.cpp' object='tests/CppUTest/CppUTestTests-AllTests.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllTests.o `test -f 'tests/CppUTest/AllTests.cpp' || echo '$(srcdir)/'`tests/CppUTest/AllTests.cpp tests/CppUTest/CppUTestTests-AllTests.obj: tests/CppUTest/AllTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-AllTests.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Tpo -c -o tests/CppUTest/CppUTestTests-AllTests.obj `if test -f 'tests/CppUTest/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllTests.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/AllTests.cpp' object='tests/CppUTest/CppUTestTests-AllTests.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-AllTests.obj `if test -f 'tests/CppUTest/AllTests.cpp'; then $(CYGPATH_W) 'tests/CppUTest/AllTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/AllTests.cpp'; fi` tests/CppUTest/CppUTestTests-CheatSheetTest.o: tests/CppUTest/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CheatSheetTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo -c -o tests/CppUTest/CppUTestTests-CheatSheetTest.o `test -f 'tests/CppUTest/CheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CheatSheetTest.cpp' object='tests/CppUTest/CppUTestTests-CheatSheetTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CheatSheetTest.o `test -f 'tests/CppUTest/CheatSheetTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CheatSheetTest.cpp tests/CppUTest/CppUTestTests-CheatSheetTest.obj: tests/CppUTest/CheatSheetTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CheatSheetTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo -c -o tests/CppUTest/CppUTestTests-CheatSheetTest.obj `if test -f 'tests/CppUTest/CheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CheatSheetTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CheatSheetTest.cpp' object='tests/CppUTest/CppUTestTests-CheatSheetTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CheatSheetTest.obj `if test -f 'tests/CppUTest/CheatSheetTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CheatSheetTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CheatSheetTest.cpp'; fi` tests/CppUTest/CppUTestTests-CompatabilityTests.o: tests/CppUTest/CompatabilityTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CompatabilityTests.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Tpo -c -o tests/CppUTest/CppUTestTests-CompatabilityTests.o `test -f 'tests/CppUTest/CompatabilityTests.cpp' || echo '$(srcdir)/'`tests/CppUTest/CompatabilityTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CompatabilityTests.cpp' object='tests/CppUTest/CppUTestTests-CompatabilityTests.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CompatabilityTests.o `test -f 'tests/CppUTest/CompatabilityTests.cpp' || echo '$(srcdir)/'`tests/CppUTest/CompatabilityTests.cpp tests/CppUTest/CppUTestTests-CompatabilityTests.obj: tests/CppUTest/CompatabilityTests.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CompatabilityTests.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Tpo -c -o tests/CppUTest/CppUTestTests-CompatabilityTests.obj `if test -f 'tests/CppUTest/CompatabilityTests.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CompatabilityTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CompatabilityTests.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CompatabilityTests.cpp' object='tests/CppUTest/CppUTestTests-CompatabilityTests.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CompatabilityTests.obj `if test -f 'tests/CppUTest/CompatabilityTests.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CompatabilityTests.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CompatabilityTests.cpp'; fi` tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.o: tests/CppUTest/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo -c -o tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.o `test -f 'tests/CppUTest/CommandLineArgumentsTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CommandLineArgumentsTest.cpp' object='tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.o `test -f 'tests/CppUTest/CommandLineArgumentsTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CommandLineArgumentsTest.cpp tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.obj: tests/CppUTest/CommandLineArgumentsTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo -c -o tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.obj `if test -f 'tests/CppUTest/CommandLineArgumentsTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CommandLineArgumentsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CommandLineArgumentsTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CommandLineArgumentsTest.cpp' object='tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CommandLineArgumentsTest.obj `if test -f 'tests/CppUTest/CommandLineArgumentsTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CommandLineArgumentsTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CommandLineArgumentsTest.cpp'; fi` tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.o: tests/CppUTest/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo -c -o tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.o `test -f 'tests/CppUTest/CommandLineTestRunnerTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CommandLineTestRunnerTest.cpp' object='tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.o `test -f 'tests/CppUTest/CommandLineTestRunnerTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/CommandLineTestRunnerTest.cpp tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.obj: tests/CppUTest/CommandLineTestRunnerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo -c -o tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.obj `if test -f 'tests/CppUTest/CommandLineTestRunnerTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CommandLineTestRunnerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CommandLineTestRunnerTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/CommandLineTestRunnerTest.cpp' object='tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-CommandLineTestRunnerTest.obj `if test -f 'tests/CppUTest/CommandLineTestRunnerTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/CommandLineTestRunnerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/CommandLineTestRunnerTest.cpp'; fi` tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.o: tests/CppUTest/DummyMemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Tpo -c -o tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.o `test -f 'tests/CppUTest/DummyMemoryLeakDetector.cpp' || echo '$(srcdir)/'`tests/CppUTest/DummyMemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/DummyMemoryLeakDetector.cpp' object='tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.o `test -f 'tests/CppUTest/DummyMemoryLeakDetector.cpp' || echo '$(srcdir)/'`tests/CppUTest/DummyMemoryLeakDetector.cpp tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.obj: tests/CppUTest/DummyMemoryLeakDetector.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Tpo -c -o tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.obj `if test -f 'tests/CppUTest/DummyMemoryLeakDetector.cpp'; then $(CYGPATH_W) 'tests/CppUTest/DummyMemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/DummyMemoryLeakDetector.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/DummyMemoryLeakDetector.cpp' object='tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-DummyMemoryLeakDetector.obj `if test -f 'tests/CppUTest/DummyMemoryLeakDetector.cpp'; then $(CYGPATH_W) 'tests/CppUTest/DummyMemoryLeakDetector.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/DummyMemoryLeakDetector.cpp'; fi` tests/CppUTest/CppUTestTests-JUnitOutputTest.o: tests/CppUTest/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-JUnitOutputTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-JUnitOutputTest.o `test -f 'tests/CppUTest/JUnitOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/JUnitOutputTest.cpp' object='tests/CppUTest/CppUTestTests-JUnitOutputTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-JUnitOutputTest.o `test -f 'tests/CppUTest/JUnitOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/JUnitOutputTest.cpp tests/CppUTest/CppUTestTests-JUnitOutputTest.obj: tests/CppUTest/JUnitOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-JUnitOutputTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-JUnitOutputTest.obj `if test -f 'tests/CppUTest/JUnitOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/JUnitOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/JUnitOutputTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/JUnitOutputTest.cpp' object='tests/CppUTest/CppUTestTests-JUnitOutputTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-JUnitOutputTest.obj `if test -f 'tests/CppUTest/JUnitOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/JUnitOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/JUnitOutputTest.cpp'; fi` tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.o: tests/CppUTest/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.o `test -f 'tests/CppUTest/MemoryLeakDetectorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryLeakDetectorTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.o `test -f 'tests/CppUTest/MemoryLeakDetectorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryLeakDetectorTest.cpp tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.obj: tests/CppUTest/MemoryLeakDetectorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.obj `if test -f 'tests/CppUTest/MemoryLeakDetectorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryLeakDetectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryLeakDetectorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryLeakDetectorTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryLeakDetectorTest.obj `if test -f 'tests/CppUTest/MemoryLeakDetectorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryLeakDetectorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryLeakDetectorTest.cpp'; fi` tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.o: tests/CppUTest/MemoryOperatorOverloadTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.o `test -f 'tests/CppUTest/MemoryOperatorOverloadTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryOperatorOverloadTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryOperatorOverloadTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.o `test -f 'tests/CppUTest/MemoryOperatorOverloadTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryOperatorOverloadTest.cpp tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.obj: tests/CppUTest/MemoryOperatorOverloadTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.obj `if test -f 'tests/CppUTest/MemoryOperatorOverloadTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryOperatorOverloadTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryOperatorOverloadTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryOperatorOverloadTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryOperatorOverloadTest.obj `if test -f 'tests/CppUTest/MemoryOperatorOverloadTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryOperatorOverloadTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryOperatorOverloadTest.cpp'; fi` tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.o: tests/CppUTest/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.o `test -f 'tests/CppUTest/MemoryLeakWarningTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryLeakWarningTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.o `test -f 'tests/CppUTest/MemoryLeakWarningTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/MemoryLeakWarningTest.cpp tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.obj: tests/CppUTest/MemoryLeakWarningTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo -c -o tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.obj `if test -f 'tests/CppUTest/MemoryLeakWarningTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryLeakWarningTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryLeakWarningTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/MemoryLeakWarningTest.cpp' object='tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-MemoryLeakWarningTest.obj `if test -f 'tests/CppUTest/MemoryLeakWarningTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/MemoryLeakWarningTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/MemoryLeakWarningTest.cpp'; fi` tests/CppUTest/CppUTestTests-PluginTest.o: tests/CppUTest/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-PluginTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Tpo -c -o tests/CppUTest/CppUTestTests-PluginTest.o `test -f 'tests/CppUTest/PluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/PluginTest.cpp' object='tests/CppUTest/CppUTestTests-PluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-PluginTest.o `test -f 'tests/CppUTest/PluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/PluginTest.cpp tests/CppUTest/CppUTestTests-PluginTest.obj: tests/CppUTest/PluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-PluginTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Tpo -c -o tests/CppUTest/CppUTestTests-PluginTest.obj `if test -f 'tests/CppUTest/PluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/PluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/PluginTest.cpp' object='tests/CppUTest/CppUTestTests-PluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-PluginTest.obj `if test -f 'tests/CppUTest/PluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/PluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/PluginTest.cpp'; fi` tests/CppUTest/CppUTestTests-PreprocessorTest.o: tests/CppUTest/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-PreprocessorTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo -c -o tests/CppUTest/CppUTestTests-PreprocessorTest.o `test -f 'tests/CppUTest/PreprocessorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/PreprocessorTest.cpp' object='tests/CppUTest/CppUTestTests-PreprocessorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-PreprocessorTest.o `test -f 'tests/CppUTest/PreprocessorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/PreprocessorTest.cpp tests/CppUTest/CppUTestTests-PreprocessorTest.obj: tests/CppUTest/PreprocessorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-PreprocessorTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo -c -o tests/CppUTest/CppUTestTests-PreprocessorTest.obj `if test -f 'tests/CppUTest/PreprocessorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/PreprocessorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/PreprocessorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/PreprocessorTest.cpp' object='tests/CppUTest/CppUTestTests-PreprocessorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-PreprocessorTest.obj `if test -f 'tests/CppUTest/PreprocessorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/PreprocessorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/PreprocessorTest.cpp'; fi` tests/CppUTest/CppUTestTests-SetPluginTest.o: tests/CppUTest/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SetPluginTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Tpo -c -o tests/CppUTest/CppUTestTests-SetPluginTest.o `test -f 'tests/CppUTest/SetPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SetPluginTest.cpp' object='tests/CppUTest/CppUTestTests-SetPluginTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SetPluginTest.o `test -f 'tests/CppUTest/SetPluginTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SetPluginTest.cpp tests/CppUTest/CppUTestTests-SetPluginTest.obj: tests/CppUTest/SetPluginTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SetPluginTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Tpo -c -o tests/CppUTest/CppUTestTests-SetPluginTest.obj `if test -f 'tests/CppUTest/SetPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SetPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SetPluginTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SetPluginTest.cpp' object='tests/CppUTest/CppUTestTests-SetPluginTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SetPluginTest.obj `if test -f 'tests/CppUTest/SetPluginTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SetPluginTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SetPluginTest.cpp'; fi` tests/CppUTest/CppUTestTests-SimpleStringTest.o: tests/CppUTest/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleStringTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleStringTest.o `test -f 'tests/CppUTest/SimpleStringTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleStringTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleStringTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleStringTest.o `test -f 'tests/CppUTest/SimpleStringTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleStringTest.cpp tests/CppUTest/CppUTestTests-SimpleStringTest.obj: tests/CppUTest/SimpleStringTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleStringTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleStringTest.obj `if test -f 'tests/CppUTest/SimpleStringTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleStringTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleStringTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleStringTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleStringTest.obj `if test -f 'tests/CppUTest/SimpleStringTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleStringTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleStringTest.cpp'; fi` tests/CppUTest/CppUTestTests-SimpleStringCacheTest.o: tests/CppUTest/SimpleStringCacheTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleStringCacheTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleStringCacheTest.o `test -f 'tests/CppUTest/SimpleStringCacheTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleStringCacheTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleStringCacheTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleStringCacheTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleStringCacheTest.o `test -f 'tests/CppUTest/SimpleStringCacheTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleStringCacheTest.cpp tests/CppUTest/CppUTestTests-SimpleStringCacheTest.obj: tests/CppUTest/SimpleStringCacheTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleStringCacheTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleStringCacheTest.obj `if test -f 'tests/CppUTest/SimpleStringCacheTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleStringCacheTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleStringCacheTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleStringCacheTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleStringCacheTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleStringCacheTest.obj `if test -f 'tests/CppUTest/SimpleStringCacheTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleStringCacheTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleStringCacheTest.cpp'; fi` tests/CppUTest/CppUTestTests-SimpleMutexTest.o: tests/CppUTest/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleMutexTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleMutexTest.o `test -f 'tests/CppUTest/SimpleMutexTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleMutexTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleMutexTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleMutexTest.o `test -f 'tests/CppUTest/SimpleMutexTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/SimpleMutexTest.cpp tests/CppUTest/CppUTestTests-SimpleMutexTest.obj: tests/CppUTest/SimpleMutexTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-SimpleMutexTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo -c -o tests/CppUTest/CppUTestTests-SimpleMutexTest.obj `if test -f 'tests/CppUTest/SimpleMutexTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleMutexTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleMutexTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/SimpleMutexTest.cpp' object='tests/CppUTest/CppUTestTests-SimpleMutexTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-SimpleMutexTest.obj `if test -f 'tests/CppUTest/SimpleMutexTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/SimpleMutexTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/SimpleMutexTest.cpp'; fi` tests/CppUTest/CppUTestTests-TeamCityOutputTest.o: tests/CppUTest/TeamCityOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TeamCityOutputTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-TeamCityOutputTest.o `test -f 'tests/CppUTest/TeamCityOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TeamCityOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TeamCityOutputTest.cpp' object='tests/CppUTest/CppUTestTests-TeamCityOutputTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TeamCityOutputTest.o `test -f 'tests/CppUTest/TeamCityOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TeamCityOutputTest.cpp tests/CppUTest/CppUTestTests-TeamCityOutputTest.obj: tests/CppUTest/TeamCityOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TeamCityOutputTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-TeamCityOutputTest.obj `if test -f 'tests/CppUTest/TeamCityOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TeamCityOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TeamCityOutputTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TeamCityOutputTest.cpp' object='tests/CppUTest/CppUTestTests-TeamCityOutputTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TeamCityOutputTest.obj `if test -f 'tests/CppUTest/TeamCityOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TeamCityOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TeamCityOutputTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestFailureNaNTest.o: tests/CppUTest/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFailureNaNTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFailureNaNTest.o `test -f 'tests/CppUTest/TestFailureNaNTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFailureNaNTest.cpp' object='tests/CppUTest/CppUTestTests-TestFailureNaNTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFailureNaNTest.o `test -f 'tests/CppUTest/TestFailureNaNTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFailureNaNTest.cpp tests/CppUTest/CppUTestTests-TestFailureNaNTest.obj: tests/CppUTest/TestFailureNaNTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFailureNaNTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFailureNaNTest.obj `if test -f 'tests/CppUTest/TestFailureNaNTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFailureNaNTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFailureNaNTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFailureNaNTest.cpp' object='tests/CppUTest/CppUTestTests-TestFailureNaNTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFailureNaNTest.obj `if test -f 'tests/CppUTest/TestFailureNaNTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFailureNaNTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFailureNaNTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestFailureTest.o: tests/CppUTest/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFailureTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFailureTest.o `test -f 'tests/CppUTest/TestFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFailureTest.cpp' object='tests/CppUTest/CppUTestTests-TestFailureTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFailureTest.o `test -f 'tests/CppUTest/TestFailureTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFailureTest.cpp tests/CppUTest/CppUTestTests-TestFailureTest.obj: tests/CppUTest/TestFailureTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFailureTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFailureTest.obj `if test -f 'tests/CppUTest/TestFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFailureTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFailureTest.cpp' object='tests/CppUTest/CppUTestTests-TestFailureTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFailureTest.obj `if test -f 'tests/CppUTest/TestFailureTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFailureTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFailureTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestFilterTest.o: tests/CppUTest/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFilterTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFilterTest.o `test -f 'tests/CppUTest/TestFilterTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFilterTest.cpp' object='tests/CppUTest/CppUTestTests-TestFilterTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFilterTest.o `test -f 'tests/CppUTest/TestFilterTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestFilterTest.cpp tests/CppUTest/CppUTestTests-TestFilterTest.obj: tests/CppUTest/TestFilterTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestFilterTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestFilterTest.obj `if test -f 'tests/CppUTest/TestFilterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFilterTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestFilterTest.cpp' object='tests/CppUTest/CppUTestTests-TestFilterTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestFilterTest.obj `if test -f 'tests/CppUTest/TestFilterTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestFilterTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestFilterTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestHarness_cTest.o: tests/CppUTest/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestHarness_cTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestHarness_cTest.o `test -f 'tests/CppUTest/TestHarness_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestHarness_cTest.cpp' object='tests/CppUTest/CppUTestTests-TestHarness_cTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestHarness_cTest.o `test -f 'tests/CppUTest/TestHarness_cTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestHarness_cTest.cpp tests/CppUTest/CppUTestTests-TestHarness_cTest.obj: tests/CppUTest/TestHarness_cTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestHarness_cTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestHarness_cTest.obj `if test -f 'tests/CppUTest/TestHarness_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestHarness_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestHarness_cTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestHarness_cTest.cpp' object='tests/CppUTest/CppUTestTests-TestHarness_cTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestHarness_cTest.obj `if test -f 'tests/CppUTest/TestHarness_cTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestHarness_cTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestHarness_cTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestInstallerTest.o: tests/CppUTest/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestInstallerTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestInstallerTest.o `test -f 'tests/CppUTest/TestInstallerTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestInstallerTest.cpp' object='tests/CppUTest/CppUTestTests-TestInstallerTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestInstallerTest.o `test -f 'tests/CppUTest/TestInstallerTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestInstallerTest.cpp tests/CppUTest/CppUTestTests-TestInstallerTest.obj: tests/CppUTest/TestInstallerTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestInstallerTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestInstallerTest.obj `if test -f 'tests/CppUTest/TestInstallerTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestInstallerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestInstallerTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestInstallerTest.cpp' object='tests/CppUTest/CppUTestTests-TestInstallerTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestInstallerTest.obj `if test -f 'tests/CppUTest/TestInstallerTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestInstallerTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestInstallerTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.o: tests/CppUTest/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.o `test -f 'tests/CppUTest/TestMemoryAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestMemoryAllocatorTest.cpp' object='tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.o `test -f 'tests/CppUTest/TestMemoryAllocatorTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestMemoryAllocatorTest.cpp tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.obj: tests/CppUTest/TestMemoryAllocatorTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.obj `if test -f 'tests/CppUTest/TestMemoryAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestMemoryAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestMemoryAllocatorTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestMemoryAllocatorTest.cpp' object='tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestMemoryAllocatorTest.obj `if test -f 'tests/CppUTest/TestMemoryAllocatorTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestMemoryAllocatorTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestMemoryAllocatorTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestOutputTest.o: tests/CppUTest/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestOutputTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestOutputTest.o `test -f 'tests/CppUTest/TestOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestOutputTest.cpp' object='tests/CppUTest/CppUTestTests-TestOutputTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestOutputTest.o `test -f 'tests/CppUTest/TestOutputTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestOutputTest.cpp tests/CppUTest/CppUTestTests-TestOutputTest.obj: tests/CppUTest/TestOutputTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestOutputTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestOutputTest.obj `if test -f 'tests/CppUTest/TestOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestOutputTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestOutputTest.cpp' object='tests/CppUTest/CppUTestTests-TestOutputTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestOutputTest.obj `if test -f 'tests/CppUTest/TestOutputTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestOutputTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestOutputTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestRegistryTest.o: tests/CppUTest/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestRegistryTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestRegistryTest.o `test -f 'tests/CppUTest/TestRegistryTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestRegistryTest.cpp' object='tests/CppUTest/CppUTestTests-TestRegistryTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestRegistryTest.o `test -f 'tests/CppUTest/TestRegistryTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestRegistryTest.cpp tests/CppUTest/CppUTestTests-TestRegistryTest.obj: tests/CppUTest/TestRegistryTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestRegistryTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestRegistryTest.obj `if test -f 'tests/CppUTest/TestRegistryTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestRegistryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestRegistryTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestRegistryTest.cpp' object='tests/CppUTest/CppUTestTests-TestRegistryTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestRegistryTest.obj `if test -f 'tests/CppUTest/TestRegistryTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestRegistryTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestRegistryTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestResultTest.o: tests/CppUTest/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestResultTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestResultTest.o `test -f 'tests/CppUTest/TestResultTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestResultTest.cpp' object='tests/CppUTest/CppUTestTests-TestResultTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestResultTest.o `test -f 'tests/CppUTest/TestResultTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestResultTest.cpp tests/CppUTest/CppUTestTests-TestResultTest.obj: tests/CppUTest/TestResultTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestResultTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Tpo -c -o tests/CppUTest/CppUTestTests-TestResultTest.obj `if test -f 'tests/CppUTest/TestResultTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestResultTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestResultTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestResultTest.cpp' object='tests/CppUTest/CppUTestTests-TestResultTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestResultTest.obj `if test -f 'tests/CppUTest/TestResultTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestResultTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestResultTest.cpp'; fi` tests/CppUTest/CppUTestTests-TestUTestMacro.o: tests/CppUTest/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestUTestMacro.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo -c -o tests/CppUTest/CppUTestTests-TestUTestMacro.o `test -f 'tests/CppUTest/TestUTestMacro.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestUTestMacro.cpp' object='tests/CppUTest/CppUTestTests-TestUTestMacro.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestUTestMacro.o `test -f 'tests/CppUTest/TestUTestMacro.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestUTestMacro.cpp tests/CppUTest/CppUTestTests-TestUTestMacro.obj: tests/CppUTest/TestUTestMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestUTestMacro.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo -c -o tests/CppUTest/CppUTestTests-TestUTestMacro.obj `if test -f 'tests/CppUTest/TestUTestMacro.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestUTestMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestUTestMacro.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestUTestMacro.cpp' object='tests/CppUTest/CppUTestTests-TestUTestMacro.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestUTestMacro.obj `if test -f 'tests/CppUTest/TestUTestMacro.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestUTestMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestUTestMacro.cpp'; fi` tests/CppUTest/CppUTestTests-TestUTestStringMacro.o: tests/CppUTest/TestUTestStringMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestUTestStringMacro.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Tpo -c -o tests/CppUTest/CppUTestTests-TestUTestStringMacro.o `test -f 'tests/CppUTest/TestUTestStringMacro.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestUTestStringMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestUTestStringMacro.cpp' object='tests/CppUTest/CppUTestTests-TestUTestStringMacro.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestUTestStringMacro.o `test -f 'tests/CppUTest/TestUTestStringMacro.cpp' || echo '$(srcdir)/'`tests/CppUTest/TestUTestStringMacro.cpp tests/CppUTest/CppUTestTests-TestUTestStringMacro.obj: tests/CppUTest/TestUTestStringMacro.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-TestUTestStringMacro.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Tpo -c -o tests/CppUTest/CppUTestTests-TestUTestStringMacro.obj `if test -f 'tests/CppUTest/TestUTestStringMacro.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestUTestStringMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestUTestStringMacro.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/TestUTestStringMacro.cpp' object='tests/CppUTest/CppUTestTests-TestUTestStringMacro.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-TestUTestStringMacro.obj `if test -f 'tests/CppUTest/TestUTestStringMacro.cpp'; then $(CYGPATH_W) 'tests/CppUTest/TestUTestStringMacro.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/TestUTestStringMacro.cpp'; fi` tests/CppUTest/CppUTestTests-UtestTest.o: tests/CppUTest/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-UtestTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Tpo -c -o tests/CppUTest/CppUTestTests-UtestTest.o `test -f 'tests/CppUTest/UtestTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/UtestTest.cpp' object='tests/CppUTest/CppUTestTests-UtestTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-UtestTest.o `test -f 'tests/CppUTest/UtestTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/UtestTest.cpp tests/CppUTest/CppUTestTests-UtestTest.obj: tests/CppUTest/UtestTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-UtestTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Tpo -c -o tests/CppUTest/CppUTestTests-UtestTest.obj `if test -f 'tests/CppUTest/UtestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/UtestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/UtestTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/UtestTest.cpp' object='tests/CppUTest/CppUTestTests-UtestTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-UtestTest.obj `if test -f 'tests/CppUTest/UtestTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/UtestTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/UtestTest.cpp'; fi` tests/CppUTest/CppUTestTests-UtestPlatformTest.o: tests/CppUTest/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-UtestPlatformTest.o -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo -c -o tests/CppUTest/CppUTestTests-UtestPlatformTest.o `test -f 'tests/CppUTest/UtestPlatformTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/UtestPlatformTest.cpp' object='tests/CppUTest/CppUTestTests-UtestPlatformTest.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-UtestPlatformTest.o `test -f 'tests/CppUTest/UtestPlatformTest.cpp' || echo '$(srcdir)/'`tests/CppUTest/UtestPlatformTest.cpp tests/CppUTest/CppUTestTests-UtestPlatformTest.obj: tests/CppUTest/UtestPlatformTest.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -MT tests/CppUTest/CppUTestTests-UtestPlatformTest.obj -MD -MP -MF tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo -c -o tests/CppUTest/CppUTestTests-UtestPlatformTest.obj `if test -f 'tests/CppUTest/UtestPlatformTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/UtestPlatformTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/UtestPlatformTest.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Tpo tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='tests/CppUTest/UtestPlatformTest.cpp' object='tests/CppUTest/CppUTestTests-UtestPlatformTest.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(CppUTestTests_CPPFLAGS) $(CPPFLAGS) $(CppUTestTests_CXXFLAGS) $(CXXFLAGS) -c -o tests/CppUTest/CppUTestTests-UtestPlatformTest.obj `if test -f 'tests/CppUTest/UtestPlatformTest.cpp'; then $(CYGPATH_W) 'tests/CppUTest/UtestPlatformTest.cpp'; else $(CYGPATH_W) '$(srcdir)/tests/CppUTest/UtestPlatformTest.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-cmakeDATA: $(cmake_DATA) @$(NORMAL_INSTALL) @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(cmakedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(cmakedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakedir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakedir)" || exit $$?; \ done uninstall-cmakeDATA: @$(NORMAL_UNINSTALL) @list='$(cmake_DATA)'; test -n "$(cmakedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(cmakedir)'; $(am__uninstall_files_from_dir) install-cmakemodulesDATA: $(cmakemodules_DATA) @$(NORMAL_INSTALL) @list='$(cmakemodules_DATA)'; test -n "$(cmakemodulesdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(cmakemodulesdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(cmakemodulesdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakemodulesdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakemodulesdir)" || exit $$?; \ done uninstall-cmakemodulesDATA: @$(NORMAL_UNINSTALL) @list='$(cmakemodules_DATA)'; test -n "$(cmakemodulesdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(cmakemodulesdir)'; $(am__uninstall_files_from_dir) install-cmakescriptsDATA: $(cmakescripts_DATA) @$(NORMAL_INSTALL) @list='$(cmakescripts_DATA)'; test -n "$(cmakescriptsdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(cmakescriptsdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(cmakescriptsdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(cmakescriptsdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(cmakescriptsdir)" || exit $$?; \ done uninstall-cmakescriptsDATA: @$(NORMAL_UNINSTALL) @list='$(cmakescripts_DATA)'; test -n "$(cmakescriptsdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(cmakescriptsdir)'; $(am__uninstall_files_from_dir) install-pkgconfigDATA: $(pkgconfig_DATA) @$(NORMAL_INSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ done uninstall-pkgconfigDATA: @$(NORMAL_UNINSTALL) @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) install-include_cpputestHEADERS: $(include_cpputest_HEADERS) @$(NORMAL_INSTALL) @list='$(include_cpputest_HEADERS)'; test -n "$(include_cpputestdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(include_cpputestdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(include_cpputestdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_cpputestdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_cpputestdir)" || exit $$?; \ done uninstall-include_cpputestHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_cpputest_HEADERS)'; test -n "$(include_cpputestdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(include_cpputestdir)'; $(am__uninstall_files_from_dir) install-include_cpputestextHEADERS: $(include_cpputestext_HEADERS) @$(NORMAL_INSTALL) @list='$(include_cpputestext_HEADERS)'; test -n "$(include_cpputestextdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(include_cpputestextdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(include_cpputestextdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(include_cpputestextdir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(include_cpputestextdir)" || exit $$?; \ done uninstall-include_cpputestextHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_cpputestext_HEADERS)'; test -n "$(include_cpputestextdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(include_cpputestextdir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files # Recover from deleted '.trs' file; this should ensure that # "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create # both 'foo.log' and 'foo.trs'. Break the recipe in two subshells # to avoid problems with "make -n". .log.trs: rm -f $< $@ $(MAKE) $(AM_MAKEFLAGS) $< # Leading 'am--fnord' is there to ensure the list of targets does not # expand to empty, as could happen e.g. with make check TESTS=''. am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) am--force-recheck: @: $(TEST_SUITE_LOG): $(TEST_LOGS) @$(am__set_TESTS_bases); \ am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ redo_bases=`for i in $$bases; do \ am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ done`; \ if test -n "$$redo_bases"; then \ redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ if $(am__make_dryrun); then :; else \ rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ fi; \ fi; \ if test -n "$$am__remaking_logs"; then \ echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ "recursion detected" >&2; \ elif test -n "$$redo_logs"; then \ am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ fi; \ if $(am__make_dryrun); then :; else \ st=0; \ errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ for i in $$redo_bases; do \ test -f $$i.trs && test -r $$i.trs \ || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ test -f $$i.log && test -r $$i.log \ || { echo "$$errmsg $$i.log" >&2; st=1; }; \ done; \ test $$st -eq 0 || exit 1; \ fi @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ ws='[ ]'; \ results=`for b in $$bases; do echo $$b.trs; done`; \ test -n "$$results" || results=/dev/null; \ all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ if test `expr $$fail + $$xpass + $$error` -eq 0; then \ success=true; \ else \ success=false; \ fi; \ br='==================='; br=$$br$$br$$br$$br; \ result_count () \ { \ if test x"$$1" = x"--maybe-color"; then \ maybe_colorize=yes; \ elif test x"$$1" = x"--no-color"; then \ maybe_colorize=no; \ else \ echo "$@: invalid 'result_count' usage" >&2; exit 4; \ fi; \ shift; \ desc=$$1 count=$$2; \ if test $$maybe_colorize = yes && test $$count -gt 0; then \ color_start=$$3 color_end=$$std; \ else \ color_start= color_end=; \ fi; \ echo "$${color_start}# $$desc $$count$${color_end}"; \ }; \ create_testsuite_report () \ { \ result_count $$1 "TOTAL:" $$all "$$brg"; \ result_count $$1 "PASS: " $$pass "$$grn"; \ result_count $$1 "SKIP: " $$skip "$$blu"; \ result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ result_count $$1 "FAIL: " $$fail "$$red"; \ result_count $$1 "XPASS:" $$xpass "$$red"; \ result_count $$1 "ERROR:" $$error "$$mgn"; \ }; \ { \ echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ $(am__rst_title); \ create_testsuite_report --no-color; \ echo; \ echo ".. contents:: :depth: 2"; \ echo; \ for b in $$bases; do echo $$b; done \ | $(am__create_global_log); \ } >$(TEST_SUITE_LOG).tmp || exit 1; \ mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ if $$success; then \ col="$$grn"; \ else \ col="$$red"; \ test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ fi; \ echo "$${col}$$br$${std}"; \ echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ echo "$${col}$$br$${std}"; \ create_testsuite_report --maybe-color; \ echo "$$col$$br$$std"; \ if $$success; then :; else \ echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ if test -n "$(PACKAGE_BUGREPORT)"; then \ echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ fi; \ echo "$$col$$br$$std"; \ fi; \ $$success || exit 1 check-TESTS: $(check_PROGRAMS) @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ log_list=`for i in $$bases; do echo $$i.log; done`; \ trs_list=`for i in $$bases; do echo $$i.trs; done`; \ log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ exit $$?; recheck: all $(check_PROGRAMS) @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) @set +e; $(am__set_TESTS_bases); \ bases=`for i in $$bases; do echo $$i; done \ | $(am__list_recheck_tests)` || exit 1; \ log_list=`for i in $$bases; do echo $$i.log; done`; \ log_list=`echo $$log_list`; \ $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ am__force_recheck=am--force-recheck \ TEST_LOGS="$$log_list"; \ exit $$? CppUTestTests.log: CppUTestTests$(EXEEXT) @p='CppUTestTests$(EXEEXT)'; \ b='CppUTestTests'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) CppUTestExtTests.log: CppUTestExtTests$(EXEEXT) @p='CppUTestExtTests$(EXEEXT)'; \ b='CppUTestExtTests'; \ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) .test.log: @p='$<'; \ $(am__set_b); \ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) @am__EXEEXT_TRUE@.test$(EXEEXT).log: @am__EXEEXT_TRUE@ @p='$<'; \ @am__EXEEXT_TRUE@ $(am__set_b); \ @am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ @am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ @am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ @am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) distdir: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) distdir-am distdir-am: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$(top_distdir)" distdir="$(distdir)" \ dist-hook -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-zstd: distdir tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ *.tar.zst*) \ zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(MAKE) $(AM_MAKEFLAGS) check-TESTS check: check-am all-am: Makefile $(LIBRARIES) $(DATA) $(HEADERS) config.h installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(cmakedir)" "$(DESTDIR)$(cmakemodulesdir)" "$(DESTDIR)$(cmakescriptsdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(include_cpputestdir)" "$(DESTDIR)$(include_cpputestextdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -rm -f lib/$(am__dirstamp) -rm -f src/CppUTest/$(DEPDIR)/$(am__dirstamp) -rm -f src/CppUTest/$(am__dirstamp) -rm -f src/CppUTestExt/$(DEPDIR)/$(am__dirstamp) -rm -f src/CppUTestExt/$(am__dirstamp) -rm -f src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/$(am__dirstamp) -rm -f src/Platforms/@CPP_PLATFORM@/$(am__dirstamp) -rm -f tests/CppUTest/$(DEPDIR)/$(am__dirstamp) -rm -f tests/CppUTest/$(am__dirstamp) -rm -f tests/CppUTestExt/$(DEPDIR)/$(am__dirstamp) -rm -f tests/CppUTestExt/$(am__dirstamp) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-checkPROGRAMS clean-generic clean-libLIBRARIES \ clean-libtool mostlyclean-am distclean: distclean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po -rm -f src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-hdr distclean-libtool distclean-local distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-cmakeDATA install-cmakemodulesDATA \ install-cmakescriptsDATA install-include_cpputestHEADERS \ install-include_cpputestextHEADERS install-pkgconfigDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineArguments.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-CommandLineTestRunner.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-JUnitTestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakDetector.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-MemoryLeakWarningPlugin.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleMutex.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleString.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-SimpleStringInternalCache.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TeamCityTestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFailure.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestFilter.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestHarness_c.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestMemoryAllocator.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestOutput.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestPlugin.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestRegistry.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestResult.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-TestTestingFixture.Po -rm -f src/CppUTest/$(DEPDIR)/lib_libCppUTest_a-Utest.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-CodeMemoryReportFormatter.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-GTest.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-IEEE754ExceptionsPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportAllocator.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReportFormatter.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MemoryReporterPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockActualCall.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCall.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockExpectedCallsList.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockFailure.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockNamedValue.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupportPlugin.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-MockSupport_c.Po -rm -f src/CppUTestExt/$(DEPDIR)/lib_libCppUTestExt_a-OrderedTest.Po -rm -f src/Platforms/@CPP_PLATFORM@/$(DEPDIR)/lib_libCppUTest_a-UtestPlatform.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllTests.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFree.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocLetTestFreeTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-AllocationInCppFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CheatSheetTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineArgumentsTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CommandLineTestRunnerTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-CompatabilityTests.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-DummyMemoryLeakDetector.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-JUnitOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakDetectorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryLeakWarningTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-MemoryOperatorOverloadTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-PluginTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-PreprocessorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SetPluginTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleMutexTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringCacheTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-SimpleStringTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TeamCityOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureNaNTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFailureTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestFilterTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestHarness_cTestCFile.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestInstallerTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestMemoryAllocatorTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestOutputTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestRegistryTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestResultTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestMacro.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-TestUTestStringMacro.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestPlatformTest.Po -rm -f tests/CppUTest/$(DEPDIR)/CppUTestTests-UtestTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-AllTests.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-CodeMemoryReporterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-ExpectedFunctionsListTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GMockTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest1Test.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-GTest2ConvertorTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-IEEE754PluginTest_c.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportAllocatorTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReportFormatterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MemoryReporterPluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockActualCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockCheatSheetTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockComparatorCopierTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockExpectedCallTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureReporterForTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFailureTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockFakeLongLong.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockHierarchyTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockNamedValueTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockParameterTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockPluginTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockReturnValueTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockStrictOrderTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupportTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-MockSupport_cTestCFile.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest.Po -rm -f tests/CppUTestExt/$(DEPDIR)/CppUTestExtTests-OrderedTestTest_c.Po -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-cmakeDATA uninstall-cmakemodulesDATA \ uninstall-cmakescriptsDATA uninstall-include_cpputestHEADERS \ uninstall-include_cpputestextHEADERS uninstall-libLIBRARIES \ uninstall-pkgconfigDATA .MAKE: all check-am install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles am--refresh check \ check-TESTS check-am clean clean-checkPROGRAMS clean-cscope \ clean-generic clean-libLIBRARIES clean-libtool cscope \ cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ dist-zip dist-zstd distcheck distclean distclean-compile \ distclean-generic distclean-hdr distclean-libtool \ distclean-local distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-cmakeDATA install-cmakemodulesDATA \ install-cmakescriptsDATA install-data install-data-am \ install-dvi install-dvi-am install-exec install-exec-am \ install-html install-html-am install-include_cpputestHEADERS \ install-include_cpputestextHEADERS install-info \ install-info-am install-libLIBRARIES install-man install-pdf \ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ pdf pdf-am ps ps-am recheck tags tags-am uninstall \ uninstall-am uninstall-cmakeDATA uninstall-cmakemodulesDATA \ uninstall-cmakescriptsDATA uninstall-include_cpputestHEADERS \ uninstall-include_cpputestextHEADERS uninstall-libLIBRARIES \ uninstall-pkgconfigDATA .PRECIOUS: Makefile valgrind: check @if test "x$(CPPUTEST_HAS_VALGRIND)" = xno; then echo "Running the valgrind target without having valgrind. Perhaps install it first?"; exit 1; fi valgrind --dsymutil=yes --suppressions=$(srcdir)/valgrind.suppressions --gen-suppressions=all --error-exitcode=1 ./$(CPPUTEST_TESTS) tdd: $(CPPUTEST_TESTS)$(EXEEXT) $(CPPUTESTEXT_TESTS)$(EXEEXT) ./$(CPPUTEST_TESTS) @INCLUDE_CPPUTEST_EXT_TRUE@ ./$(CPPUTESTEXT_TESTS) cpputest_build_gtest18: mkdir -p cpputest_build_gtest18 cd cpputest_build_gtest18; \ wget https://github.com/google/googletest/archive/release-1.8.0.zip -O gtest-1.8.0.zip && unzip gtest-1.8.0.zip; \ cd googletest-release-1.8.0; cmake .; make cpputest_build_gtest17: mkdir -p cpputest_build_gtest17 cd cpputest_build_gtest17; \ wget https://github.com/google/googletest/archive/release-1.7.0.zip -O gtest-1.7.0.zip && unzip gtest-1.7.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.7.0.zip -O gmock-1.7.0.zip && unzip gmock-1.7.0.zip; \ mv googletest-release-1.7.0 googlemock-release-1.7.0/gtest; \ cd googlemock-release-1.7.0; autoreconf -i; ./configure && make cpputest_build_gtest16: mkdir -p cpputest_build_gtest16 cd cpputest_build_gtest16; \ wget https://github.com/google/googletest/archive/release-1.6.0.zip -O gtest-1.6.0.zip && unzip gtest-1.6.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.6.0.zip -O gmock-1.6.0.zip && unzip gmock-1.6.0.zip; \ mv googletest-release-1.6.0 googlemock-release-1.6.0/gtest; \ cd googlemock-release-1.6.0; autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make cpputest_build_gtest15: mkdir -p cpputest_build_gtest15 cd cpputest_build_gtest15; \ wget https://github.com/google/googletest/archive/release-1.5.0.zip -O gtest-1.5.0.zip && unzip gtest-1.5.0.zip; \ wget https://github.com/google/googlemock/archive/release-1.5.0.zip -O gmock-1.5.0.zip && unzip gmock-1.5.0.zip; \ mv googletest-release-1.5.0 googlemock-release-1.5.0/gtest; \ cd googlemock-release-1.5.0; autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make check_gtest15: cpputest_build_gtest15 @echo "Build using gmock 1.5"; export GMOCK_HOME=`pwd`/cpputest_build_gtest15/googlemock-release-1.5.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest16: cpputest_build_gtest16 @echo "Build using gmock 1.6"; export GMOCK_HOME=`pwd`/cpputest_build_gtest16/googlemock-release-1.6.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest17: cpputest_build_gtest17 @echo "Build using gmock 1.7" export GMOCK_HOME=`pwd`/cpputest_build_gtest17/googlemock-release-1.7.0; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check check_gtest18: cpputest_build_gtest18 @echo "Build using gmock 1.8" export GMOCK_HOME=`pwd`/cpputest_build_gtest18/googletest-release-1.8.0/googlemock; \ export GTEST_HOME=`pwd`/cpputest_build_gtest18/googletest-release-1.8.0/googletest; \ make distclean; $(srcdir)/configure --enable-std-cpp98; make check remove_gtest_directories: rm -rf cpputest_build_gtest15 rm -rf cpputest_build_gtest16 rm -rf cpputest_build_gtest17 rm -rf cpputest_build_gtest18 check_gtest: remove_gtest_directories check_gtest15 check_gtest16 check_gtest17 check_gtest18 check_basic: @echo "If dash is available, run the configure with dash to find bash-isms and increase portability" make distclean; if test "x$(CPPUTEST_HAS_DASH)" = xyes; then CONFIG_SHELL=dash $(srcdir)/configure; fi @echo "Building and valgrinding (skipping this on MacOS due to buggy Valgrind" if test "x$(CPPUTEST_ON_MACOSX)" = xno; then \ make distclean; $(srcdir)/configure; make valgrind; \ fi @echo "Building without extensions" make distclean; $(srcdir)/configure --disable-extensions; make check @echo "Building with the Std C++ 98 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp98; make @echo "Building with the Std C++ 11 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp11; make @echo "Building with the Std C++ 14 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp14; make @echo "Building with the Std C++ 17 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp17; make @echo "Building with the Std C++ 20 turned on. Compiler acts differently then." make distclean; $(srcdir)/configure --enable-std-cpp20; make @echo "Building without the Standard C library" make distclean; $(srcdir)/configure --disable-std-c; make @echo "Building without the Standard C++ library and without long long" make distclean; $(srcdir)/configure --disable-std-cpp --disable-long-long; make check @echo "Building without memory leak detection" make distclean; $(srcdir)/configure --disable-memory-leak-detection; make check @echo "Building with address sanitizer" make distclean; $(srcdir)/configure --enable-sanitize-address; make check @echo "Building without memory leak detection and without Standard C++" make distclean; $(srcdir)/configure --disable-memory-leak-detection --disable-std-cpp; make check @echo "Generate a map file while building" make distclean; $(srcdir)/configure -enable-generate-map-file; make check if [ -s CppUTest.o.map.txt ]; then echo "Generating map file failed. Build failed!"; exit 1; fi check_special_situations: @echo "Does the system have gcc? $(CPPUTEST_HAS_GCC)" if test "x$(CPPUTEST_HAS_GCC)" = xyes; then echo "Compiling with gcc"; make distclean; $(srcdir)/configure CC="gcc" CXX="g++"; make check; fi @echo "Does the system have clang and is a Mac? $(CPPUTEST_HAS_CLANG)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++"; make check; \ fi @echo Testing JUnit output make distclean; $(srcdir)/configure; make check ./$(CPPUTEST_TESTS) -ojunit > junit_run_output if [ -s junit_run_output ]; then echo "JUnit run has output. Build failed!"; exit 1; fi rm junit_run_output; rm cpputest_*.xml @echo "Building with all flags turned off" make distclean; $(srcdir)/configure --disable-cpputest-flags CFLAGS="" CXXFLAGS="" CPPFLAGS="-I $(srcdir)/include -I$(srcdir)/include/CppUTestExt/CppUTestGTest -I$(srcdir)/include/CppUTestExt/CppUTestGMock" --disable-dependency-tracking; make check check_coverage: @echo "Compile with coverage (switch to clang for Mac OSX)" if test "x$(CPPUTEST_HAS_CLANG)" = xyes && test "x$(CPPUTEST_ON_MACOSX)" = xyes; then \ echo "Compiling with clang"; make distclean; $(srcdir)/configure CC="clang" CXX="clang++" --enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ else \ make distclean; $(srcdir)/configure -enable-coverage CFLAGS="-O0" CXXFLAGS="-O0"; \ fi make check ./$(CPPUTEST_TESTS) >> test_output.txt; ./$(CPPUTESTEXT_TESTS) >> test_output.txt $(SILENCE)for f in `ls *.gcno` ; do \ gcov $(CppUTestExtTests_SOURCES) $(CppUTestTests_SOURCES) $(lib_libCppUTest_a_SOURCES) $(lib_libCppUTestExt_a_SOURCES) -o $$f 1>>gcov_output.txt 2>>gcov_error.txt; \ done $(srcdir)/scripts/filterGcov.sh gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt cat gcov_report.txt if test "x$(CPPUTEST_HAS_LCOV)" = xyes; then lcov -c -d . -o temp.info; lcov -r temp.info /usr\* -o coverage.info; genhtml -o test_coverage coverage.info; fi remove_coverage_output: rm -f gcov_output.txt gcov_error.txt gcov_report.txt test_output.txt gcov_report.txt.html temp.info coverage.info rm -rf test_coverage check_examples: @echo "Using the old Makefile and examples" make distclean $(MAKE) -C $(srcdir) -f Makefile_using_MakefileWorker extensions $(MAKE) -C $(srcdir)/examples all clean @echo "Compiling and running the examples. This will use the old Makefile" make distclean; $(srcdir)/configure; make; $(MAKE) -C $(srcdir)/examples all clean CPPUTEST_LIB_LINK_DIR="`pwd`/lib" check_all: check_basic check_special_situations check_coverage remove_coverage_output check_examples check_gtest @echo "Last... one normal build and test" make distclean; $(srcdir)/configure; make check; @echo "Check running tests repeatedly" $(RUN_CPPUTEST_TESTS) - r; $(RUN_CPPUTESTEXT_TESTS) -r @echo "Check running tests in separate process (CppUTestExtTests TEST_GROUP(TestOrderedTestMacro) would have to fail)" $(RUN_CPPUTEST_TESTS) -p; # Mac OSX adds an annoying directory when packaging. This can be prevented by setting COPYFILE_DISABLE=1 # However, I've not figured out how to set it automatically and neither google nor stackoverflow knew the answer. # The automake mailing list is still thinking about it, and thus, I've added this check so that I don't forget to do it :) # More info: http://superuser.com/questions/61185/why-do-i-get-files-like-foo-in-my-tarball-on-os-x dist-hook: if test "x$(CPPUTEST_ON_MACOSX)" = "xyes"; then \ if test ! "x$(COPYFILE_DISABLE)" = "x1"; then \ echo ""; \ echo 'ERROR: When packaging on MacOSX, please run "COPYFILE_DISABLE=1 make dist"'; \ echo ""; \ exit 1; \ fi \ fi distclean-local: test -z "generated" || rmdir generated # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cpputest-4.0/.travis.yml000644 000765 000024 00000012342 13663176127 016305 0ustar00basvoddestaff000000 000000 # Global environment language: cpp os: linux dist: bionic # Avoid double build because of the tagging in the build. branches: except: - latest-passing-build # Build stages and the conditionals for the stages stages: - name: extensive daily tests if: type = cron - name: basic build & test if: type != cron - name: extended build & test if: type != cron - name: deploy latest if: "(NOT type IN (pull_request)) AND (branch = master) AND (type != cron)" jobs: include: # Basic builds # Mac OSX - stage: basic build & test compiler: gcc os: osx env: BUILD=autotools - compiler: clang env: BUILD=autotools os: osx # Windows - compiler: msbuild os: windows env: BUILD=vc_windows CPP_STD=17 - MSBUILD_PATH="c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin" - VCTargetsPath="C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets" # Linux - compiler: gcc env: BUILD=cmake CPP_STD=17 - compiler: gcc env: BUILD=autotools - compiler: clang env: BUILD=autotools # Extended builds, different C++ version and build tools - stage: extended build & test # Mac OSX compiler: clang os: osx env: BUILD=cmake CPP_STD=17 - compiler: gcc os: osx env: BUILD=cmake CPP_STD=14 # Linux # CMake different C++ versions with clang - compiler: clang env: BUILD=cmake CPP_STD=98 - compiler: clang env: BUILD=cmake CPP_STD=11 - compiler: clang env: BUILD=cmake CPP_STD=14 - compiler: clang env: BUILD=cmake CPP_STD=17 # CMake different C++ versions with gcc - compiler: gcc env: BUILD=cmake CPP_STD=98 - compiler: gcc env: BUILD=cmake CPP_STD=11 - compiler: gcc env: BUILD=cmake CPP_STD=14 - compiler: gcc env: BUILD=cmake CPP_STD=17 # New compilers can be added here. Need to be cleared when compiler becomes standard - compiler: gcc env: BUILD=cmake CPP_STD=17 - CC=gcc-10 - CXX=g++-10 addons: apt: packages: ['g++-10'] sources: - sourceline: 'ppa:ubuntu-toolchain-r/test' - compiler: clang env: BUILD=cmake CPP_STD=17 - CC=clang-10 - CXX=clang++-10 addons: apt: sources: - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main' key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key' packages: ['clang-10', 'libc++-10-dev', 'libc++abi-10-dev'] # Specific other tests - compiler: gcc env: BUILD=test_report addons: apt: packages: - ant-optional - compiler: gcc env: BUILD=cmake_coverage - compiler: gcc env: BUILD=cmake_gtest - compiler: clang env: BUILD=autotools_gtest - compiler: gcc env: BUILD=autotools_cmake_install_test # MS DOS Build - env: BUILD=make_dos addons: apt: packages: - dosbox # Docker images. Need to be cleared at times - env: BUILD=docker_ubuntu_autotools - env: BUILD=docker_ubuntu_dos - env: BUILD=autotools_dist - stage: extensive daily tests compiler: gcc env: BUILD=extensive_check - compiler: clang env: BUILD=extensive_check - arch: ppc64le compiler: gcc env: BUILD=autotools - arch: s390x compiler: gcc env: BUILD=autotools - arch: arm64 compiler: gcc env: BUILD=autotools - compiler: gcc env: BUILD=makefileworker - compiler: clang env: BUILD=autotools_install_and_test_examples # Deploy to github releases - stage: deploy latest env: BUILD=autotools_dist script: - export DATE=`date` - git tag -f latest-passing-build -a -m "Generated tag from TravisCI for build $TRAVIS_BUILD_NUMBER at $DATE" - git push -f https://cpputest-travis:$GH_TOKEN@github.com/cpputest/cpputest.git --tags - ../scripts/travis_ci_build.sh - pwd - ls deploy: provider: releases #: edge: true token: $GH_TOKEN tag_name: latest-passing-build name: Latest passing build release_notes: "This is the automatic release from Travis CI.\n\nWhenever a build passes, it gets released as Latest Passing Build.\n\nBuild number: $TRAVIS_BUILD_NUMBER\nDate: $DATE\nLog: $TRAVIS_BUILD_WEB_URL" file: - cpputest-latest.tar.gz - cpputest-latest.zip overwrite: true on: tags: false before_script: - export CPPUTEST_BUILD_DIR=$TRAVIS_BUILD_DIR/cpputest_build - mkdir -p $CPPUTEST_BUILD_DIR && cd $CPPUTEST_BUILD_DIR script: - "../scripts/travis_ci_build.sh" after_failure: - "../scripts/travis_ci_after.sh" after_success: - "../scripts/travis_ci_after.sh" notifications: slack: secure: oOx4AGIiJB+j1pkIxlLeQh5qp7TF89Sj+3RzJRQuo6z0HocTz9yJgXPlDh1H9rLj5SxK/UKsk+WFafVuPdWakQ40LeYO49C/+e+mCDcS0ujLka6dvIE8v0SEb1PuaAGjJWdhiviAhSqu9YOKPYZs37lD3oqepuEpxeiXwsur9QU= env: global: secure: H6djbn5YP1P62n//ergaRZ4lIkneCzWp1Ok4F71kvvNiwlRzYDGll4kJT6MhVq6bBHeR81W/lwUd+RdjyqsJpVhj7DHXC/0k0h0xpAAm7LUhOl+6mIII1uhcMFqbeHvilwvDCzTQ6qv8Mzd1g0QfUECrmti9/U+/TTFJG0r0Zuc= cpputest-4.0/aclocal.m4000644 000765 000024 00000124541 13663444461 016040 0ustar00basvoddestaff000000 000000 # generated automatically by aclocal 1.16.2 -*- Autoconf -*- # Copyright (C) 1996-2020 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.16' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.16.2], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.16.2])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_COND_IF -*- Autoconf -*- # Copyright (C) 2008-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF # -------------- # These macros are only used for tracing. m4_define([_AM_COND_IF]) m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- # If the shell condition COND is true, execute IF-TRUE, otherwise execute # IF-FALSE. Allow automake to learn about conditional instantiating macros # (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl if test -z "$$1_TRUE"; then : m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else $3 ])dnl _AM_COND_ENDIF([$1])dnl fi[]dnl ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. # TODO: see whether this extra hack can be removed once we start # requiring Autoconf 2.70 or later. AS_CASE([$CONFIG_FILES], [*\'*], [eval set x "$CONFIG_FILES"], [*], [set x $CONFIG_FILES]) shift # Used to flag and report bootstrapping failures. am_rc=0 for am_mf do # Strip MF so we end up with the name of the file. am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile which includes # dependency-tracking related rules and includes. # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ || continue am_dirpart=`AS_DIRNAME(["$am_mf"])` am_filepart=`AS_BASENAME(["$am_mf"])` AM_RUN_LOG([cd "$am_dirpart" \ && sed -e '/# am--include-marker/d' "$am_filepart" \ | $MAKE -f - am--depfiles]) || am_rc=$? done if test $am_rc -ne 0; then AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments for automatic dependency tracking. If GNU make was not used, consider re-running the configure script with MAKE="gmake" (or whatever is necessary). You can also try re-running configure with the '--disable-dependency-tracking' option to at least be able to build the package (albeit without support for automatic dependency tracking).]) fi AS_UNSET([am_dirpart]) AS_UNSET([am_filepart]) AS_UNSET([am_mf]) AS_UNSET([am_rc]) rm -f conftest-deps.mk } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking is enabled. # This creates each '.Po' and '.Plo' makefile fragment that we'll need in # order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check whether make has an 'include' directive that can support all # the idioms we need for our automatic dependency tracking code. AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) cat > confinc.mk << 'END' am__doit: @echo this is the am__doit target >confinc.out .PHONY: am__doit END am__include="#" am__quote= # BSD make does it like this. echo '.include "confinc.mk" # ignored' > confmf.BSD # Other make implementations (GNU, Solaris 10, AIX) do it like this. echo 'include confinc.mk # ignored' > confmf.GNU _am_result=no for s in GNU BSD; do AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) AS_CASE([$?:`cat confinc.out 2>/dev/null`], ['0:this is the am__doit target'], [AS_CASE([$s], [BSD], [am__include='.include' am__quote='"'], [am__include='include' am__quote=''])]) if test "$am__include" != "#"; then _am_result="yes ($s style)" break fi done rm -f confinc.* confmf.* AC_MSG_RESULT([${_am_result}]) AC_SUBST([am__include])]) AC_SUBST([am__quote])]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2020 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/acx_pthread.m4]) m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/m4_ax_compiler_vendor.m4]) m4_include([m4/m4_ax_compiler_version.m4]) m4_include([m4/m4_ax_prefix_config_h.m4]) cpputest-4.0/README_InstallCppUTest.txt000644 000765 000024 00000004076 13663176127 021015 0ustar00basvoddestaff000000 000000 1. Unzip into , resulting in /CppUTest/ MAKE SURE DOES NOT HAVE SPACES IN IT MAKE SURE DOES NOT HAVE SPACES IN IT MAKE SURE DOES NOT HAVE SPACES IN IT 2. Build CppUTest and examples 2a. For unix/gcc (including cygwin) > cd /CppUTest/cpputest_build > ../configure > make > make tdd # This is to run the CppUTest unit tests 2b. For Microsoft Visual C++ V6 We couldn't install the compiler anymore. We removed the project files. You will need to make your own 2c. For ARMCC from Keil MDK-ARM (building CppUTest library only) > make all -C platforms/armcc Please see README and Makefile in platforms/armcc to adjust options, default CPU architecture is ARM7TDMI and default CPU execution mode is THUMB. 3c. For Microsoft Visual Studio 2008 Double click /CppUTest/CppUTest.sln If Visual studio reports that the solution file was created with a newer version of Visual Studio, then try 3d Then press control-F5 to "Start without debugging" See CppUTest build and run its tests. 3d. For Older Microsoft Visual Studio .NET Double click /CppUTest/CppUTest.dsw Allow VS.NET to convert the files by clicking "yes to all" Run without debugging, see the test results in the command window Exit MS VS.NET Allow VS.NET to convert the files by clicking "yes to all" Run without debugging, see the test results in the command window NOTE: To create your own project, you need to have CppUTest and your project compiled with the same compile and link settings 4. to setup the support scripts. These scripts work in various unix systems and cygwin. (these are quite handy) If you are using windows install some tool like cygwin, msys or MKSToolkit to run these scripts. > cd /CppUTest > ./scripts/InstallScripts.sh This command adds some symbolic links to /usr/local/bin, so you have to run it as root. sudo ./InstallScripts.sh MSYS - http://www.mingw.org/msys.shtml CYGWIN - http://www.cygwin.com/ MKSToolkit - http://mkstoolkit.com/ cpputest-4.0/CppUTest.sln000644 000765 000024 00000002733 13663176127 016424 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 9.00 # Visual C++ Express 2005 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "tests\AllTests.vcproj", "{E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}" ProjectSection(ProjectDependencies) = postProject {EC28C821-4AB8-458F-A821-C6E65607B781} = {EC28C821-4AB8-458F-A821-C6E65607B781} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CppUTest", "CppUTest.vcproj", "{EC28C821-4AB8-458F-A821-C6E65607B781}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Debug|Win32.ActiveCfg = Debug|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Debug|Win32.Build.0 = Debug|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Release|Win32.ActiveCfg = Release|Win32 {E66A12BB-1E17-4CFE-A358-9E0FA85E0F15}.Release|Win32.Build.0 = Release|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Debug|Win32.ActiveCfg = Debug|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Debug|Win32.Build.0 = Debug|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Release|Win32.ActiveCfg = Release|Win32 {EC28C821-4AB8-458F-A821-C6E65607B781}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-4.0/autogen.sh000755 000765 000024 00000000152 13663176127 016171 0ustar00basvoddestaff000000 000000 #!/bin/sh # # cpputest autogen.sh # # Run this to generate all the initial makefiles, etc. autoreconf -i cpputest-4.0/makeVS2008.bat000644 000765 000024 00000000530 13663176127 016360 0ustar00basvoddestaff000000 000000 rem **** rem * Command line build - For CppUTest - Run from CppUTest directory rem * rem * this path works on my machine rem ****PATH=C:\Windows\Microsoft.NET\Framework\v3.5;c:\windows;c:\windows\system32 msbuild /t:rebuild /verbosity:quiet CppUTest_VS2008.sln set test_exe=tests\Debug\AllTests.exe if exist %test_exe% %test_exe% -v cpputest-4.0/src/000755 000765 000024 00000000000 13663444566 014766 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/000755 000765 000024 00000000000 13663444566 016735 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/CppUTest/000755 000765 000024 00000000000 13663444567 016476 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/CppUTestExt/000755 000765 000024 00000000000 13663444567 017157 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/CppUTestExt/MemoryReporterPlugin.cpp000644 000765 000024 00000011703 13663176127 024031 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MemoryReportFormatter.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" MemoryReporterPlugin::MemoryReporterPlugin() : TestPlugin("MemoryReporterPlugin"), formatter_(NULLPTR) { } MemoryReporterPlugin::~MemoryReporterPlugin() { removeGlobalMemoryReportAllocators(); destroyMemoryFormatter(formatter_); } bool MemoryReporterPlugin::parseArguments(int /* ac */, const char *const *av, int index) { SimpleString argument (av[index]); if (argument.contains("-pmemoryreport=")) { argument.replace("-pmemoryreport=", ""); destroyMemoryFormatter(formatter_); formatter_ = createMemoryFormatter(argument); return true; } return false; } MemoryReportFormatter* MemoryReporterPlugin::createMemoryFormatter(const SimpleString& type) { if (type == "normal") { return new NormalMemoryReportFormatter; } else if (type == "code") { return new CodeMemoryReportFormatter(defaultMallocAllocator()); } return NULLPTR; } void MemoryReporterPlugin::destroyMemoryFormatter(MemoryReportFormatter* formatter) { delete formatter; } void MemoryReporterPlugin::setGlobalMemoryReportAllocators() { mallocAllocator.setRealAllocator(getCurrentMallocAllocator()); setCurrentMallocAllocator(&mallocAllocator); newAllocator.setRealAllocator(getCurrentNewAllocator()); setCurrentNewAllocator(&newAllocator); newArrayAllocator.setRealAllocator(getCurrentNewArrayAllocator()); setCurrentNewArrayAllocator(&newArrayAllocator); } void MemoryReporterPlugin::removeGlobalMemoryReportAllocators() { if (getCurrentNewAllocator() == &newAllocator) setCurrentNewAllocator(newAllocator.getRealAllocator()); if (getCurrentNewArrayAllocator() == &newArrayAllocator) setCurrentNewArrayAllocator(newArrayAllocator.getRealAllocator()); if (getCurrentMallocAllocator() == &mallocAllocator) setCurrentMallocAllocator(mallocAllocator.getRealAllocator()); } MemoryReportAllocator* MemoryReporterPlugin::getMallocAllocator() { return &mallocAllocator; } MemoryReportAllocator* MemoryReporterPlugin::getNewAllocator() { return &newAllocator; } MemoryReportAllocator* MemoryReporterPlugin::getNewArrayAllocator() { return &newArrayAllocator; } void MemoryReporterPlugin::initializeAllocator(MemoryReportAllocator* allocator, TestResult & result) { allocator->setFormatter(formatter_); allocator->setTestResult((&result)); } void MemoryReporterPlugin::preTestAction(UtestShell& test, TestResult& result) { if (formatter_ == NULLPTR) return; initializeAllocator(&mallocAllocator, result); initializeAllocator(&newAllocator, result); initializeAllocator(&newArrayAllocator, result); setGlobalMemoryReportAllocators(); if (test.getGroup() != currentTestGroup_) { formatter_->report_testgroup_start(&result, test); currentTestGroup_ = test.getGroup(); } formatter_->report_test_start(&result, test); } void MemoryReporterPlugin::postTestAction(UtestShell& test, TestResult& result) { if (formatter_ == NULLPTR) return; removeGlobalMemoryReportAllocators(); formatter_->report_test_end(&result, test); if (test.getNext() == NULLPTR || test.getNext()->getGroup() != currentTestGroup_) formatter_->report_testgroup_end(&result, test); } cpputest-4.0/src/CppUTestExt/MockFailure.cpp000644 000765 000024 00000024024 13663176127 022060 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockNamedValue.h" class MockFailureReporterTestTerminator : public NormalTestTerminator { public: MockFailureReporterTestTerminator(bool crashOnFailure) : crashOnFailure_(crashOnFailure) { } virtual void exitCurrentTest() const _override { if (crashOnFailure_) UT_CRASH(); NormalTestTerminator::exitCurrentTest(); } // LCOV_EXCL_LINE virtual ~MockFailureReporterTestTerminator() _destructor_override { } private: bool crashOnFailure_; }; void MockFailureReporter::failTest(const MockFailure& failure) { if (!getTestToFail()->hasFailed()) getTestToFail()->failWith(failure, MockFailureReporterTestTerminator(crashOnFailure_)); } // LCOV_EXCL_LINE UtestShell* MockFailureReporter::getTestToFail() { return UtestShell::getCurrent(); } MockFailure::MockFailure(UtestShell* test) : TestFailure(test, "Test failed with MockFailure without an error! Something went seriously wrong.") { } void MockFailure::addExpectationsAndCallHistory(const MockExpectedCallsList& expectations) { message_ += "\tEXPECTED calls that WERE NOT fulfilled:\n"; message_ += expectations.unfulfilledCallsToString("\t\t"); message_ += "\n\tEXPECTED calls that WERE fulfilled:\n"; message_ += expectations.fulfilledCallsToString("\t\t"); } void MockFailure::addExpectationsAndCallHistoryRelatedTo(const SimpleString& name, const MockExpectedCallsList& expectations) { MockExpectedCallsList expectationsForFunction; expectationsForFunction.addExpectationsRelatedTo(name, expectations); message_ += "\tEXPECTED calls that WERE NOT fulfilled related to function: "; message_ += name; message_ += "\n"; message_ += expectationsForFunction.unfulfilledCallsToString("\t\t"); message_ += "\n\tEXPECTED calls that WERE fulfilled related to function: "; message_ += name; message_ += "\n"; message_ += expectationsForFunction.fulfilledCallsToString("\t\t"); } MockExpectedCallsDidntHappenFailure::MockExpectedCallsDidntHappenFailure(UtestShell* test, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = "Mock Failure: Expected call WAS NOT fulfilled.\n"; addExpectationsAndCallHistory(expectations); } MockUnexpectedCallHappenedFailure::MockUnexpectedCallHappenedFailure(UtestShell* test, const SimpleString& name, const MockExpectedCallsList& expectations) : MockFailure(test) { unsigned int amountOfActualCalls = expectations.amountOfActualCallsFulfilledFor(name); if (amountOfActualCalls > 0) { SimpleString ordinalNumber = StringFromOrdinalNumber(amountOfActualCalls + 1); message_ = StringFromFormat("Mock Failure: Unexpected additional (%s) call to function: ", ordinalNumber.asCharString()); } else { message_ = "Mock Failure: Unexpected call to function: "; } message_ += name; message_ += "\n"; addExpectationsAndCallHistory(expectations); } MockCallOrderFailure::MockCallOrderFailure(UtestShell* test, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForOutOfOrder; expectationsForOutOfOrder.addExpectations(expectations); expectationsForOutOfOrder.onlyKeepOutOfOrderExpectations(); message_ = "Mock Failure: Out of order calls"; message_ += "\n"; addExpectationsAndCallHistory(expectationsForOutOfOrder); } MockUnexpectedInputParameterFailure::MockUnexpectedInputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunctionWithParameterName; expectationsForFunctionWithParameterName.addExpectationsRelatedTo(functionName, expectations); expectationsForFunctionWithParameterName.onlyKeepExpectationsWithInputParameterName(parameter.getName()); if (expectationsForFunctionWithParameterName.isEmpty()) { message_ = "Mock Failure: Unexpected parameter name to function \""; message_ += functionName; message_ += "\": "; message_ += parameter.getName(); } else { message_ = "Mock Failure: Unexpected parameter value to parameter \""; message_ += parameter.getName(); message_ += "\" to function \""; message_ += functionName; message_ += "\": <"; message_ += StringFrom(parameter); message_ += ">"; } message_ += "\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tACTUAL unexpected parameter passed to function: "; message_ += functionName; message_ += "\n"; message_ += "\t\t"; message_ += parameter.getType(); message_ += " "; message_ += parameter.getName(); message_ += ": <"; message_ += StringFrom(parameter); message_ += ">"; } MockUnexpectedOutputParameterFailure::MockUnexpectedOutputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunctionWithParameterName; expectationsForFunctionWithParameterName.addExpectationsRelatedTo(functionName, expectations); expectationsForFunctionWithParameterName.onlyKeepExpectationsWithOutputParameterName(parameter.getName()); if (expectationsForFunctionWithParameterName.isEmpty()) { message_ = "Mock Failure: Unexpected output parameter name to function \""; message_ += functionName; message_ += "\": "; message_ += parameter.getName(); } else { message_ = "Mock Failure: Unexpected parameter type \""; message_ += parameter.getType(); message_ += "\" to output parameter \""; message_ += parameter.getName(); message_ += "\" to function \""; message_ += functionName; message_ += "\""; } message_ += "\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tACTUAL unexpected output parameter passed to function: "; message_ += functionName; message_ += "\n"; message_ += "\t\t"; message_ += parameter.getType(); message_ += " "; message_ += parameter.getName(); } MockExpectedParameterDidntHappenFailure::MockExpectedParameterDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations) : MockFailure(test) { MockExpectedCallsList expectationsForFunction; expectationsForFunction.addExpectationsRelatedTo(functionName, expectations); message_ = "Mock Failure: Expected parameter for function \""; message_ += functionName; message_ += "\" did not happen.\n"; addExpectationsAndCallHistoryRelatedTo(functionName, expectations); message_ += "\n\tMISSING parameters that didn't happen:\n"; message_ += "\t\t"; message_ += expectationsForFunction.missingParametersToString(); } MockNoWayToCompareCustomTypeFailure::MockNoWayToCompareCustomTypeFailure(UtestShell* test, const SimpleString& typeName) : MockFailure(test) { message_ = StringFromFormat("MockFailure: No way to compare type <%s>. Please install a MockNamedValueComparator.", typeName.asCharString()); } MockNoWayToCopyCustomTypeFailure::MockNoWayToCopyCustomTypeFailure(UtestShell* test, const SimpleString& typeName) : MockFailure(test) { message_ = StringFromFormat("MockFailure: No way to copy type <%s>. Please install a MockNamedValueCopier.", typeName.asCharString()); } MockUnexpectedObjectFailure::MockUnexpectedObjectFailure(UtestShell* test, const SimpleString& functionName, const void* actual, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = StringFromFormat ("MockFailure: Function called on an unexpected object: %s\n" "\tActual object for call has address: <%p>\n", functionName.asCharString(),actual); addExpectationsAndCallHistoryRelatedTo(functionName, expectations); } MockExpectedObjectDidntHappenFailure::MockExpectedObjectDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations) : MockFailure(test) { message_ = StringFromFormat("Mock Failure: Expected call on object for function \"%s\" but it did not happen.\n", functionName.asCharString()); addExpectationsAndCallHistoryRelatedTo(functionName, expectations); } cpputest-4.0/src/CppUTestExt/GTest.cpp000644 000765 000024 00000000225 13663176127 020702 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTestExt/GTestSupport.h" void CppuTestGTestIgnoreLeaksInTest() { IGNORE_ALL_LEAKS_IN_TEST(); } cpputest-4.0/src/CppUTestExt/CMakeLists.txt000644 000765 000024 00000005346 13663176127 021721 0ustar00basvoddestaff000000 000000 set(CppUTestExt_src CodeMemoryReportFormatter.cpp GTest.cpp IEEE754ExceptionsPlugin.cpp MemoryReporterPlugin.cpp MockFailure.cpp MockSupportPlugin.cpp MockActualCall.cpp MockSupport_c.cpp MemoryReportAllocator.cpp MockExpectedCall.cpp MockNamedValue.cpp OrderedTest.cpp MemoryReportFormatter.cpp MockExpectedCallsList.cpp MockSupport.cpp ) set(CppUTestExt_headers ${CppUTestRootDirectory}/include/CppUTestExt/CodeMemoryReportFormatter.h ${CppUTestRootDirectory}/include/CppUTestExt/IEEE754ExceptionsPlugin.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReportAllocator.h ${CppUTestRootDirectory}/include/CppUTestExt/MockExpectedCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockCheckedExpectedCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockExpectedCallsList.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupportPlugin.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReportFormatter.h ${CppUTestRootDirectory}/include/CppUTestExt/MockFailure.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport_c.h ${CppUTestRootDirectory}/include/CppUTestExt/GMock.h ${CppUTestRootDirectory}/include/CppUTestExt/GTest.h ${CppUTestRootDirectory}/include/CppUTestExt/GTestSupport.h ${CppUTestRootDirectory}/include/CppUTestExt/MemoryReporterPlugin.h ${CppUTestRootDirectory}/include/CppUTestExt/OrderedTest.h ${CppUTestRootDirectory}/include/CppUTestExt/GTestConvertor.h ${CppUTestRootDirectory}/include/CppUTestExt/MockActualCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockCheckedActualCall.h ${CppUTestRootDirectory}/include/CppUTestExt/MockNamedValue.h ${CppUTestRootDirectory}/include/CppUTestExt/MockSupport.h ) add_library(CppUTestExt STATIC ${CppUTestExt_src} ${CppUTestExt_headers}) target_link_libraries(CppUTestExt ${CPPUNIT_EXTERNAL_LIBRARIES}) #[[Arrange for the include directory to be added to the include paths of any CMake target depending on CppUTestExt.]] target_include_directories(CppUTestExt PUBLIC $ $ ) set_target_properties(CppUTestExt PROPERTIES PUBLIC_HEADER "${CppUTestExt_headers}") install(TARGETS CppUTestExt EXPORT CppUTestTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CppUTestExt" PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CppUTestExt") cpputest-4.0/src/CppUTestExt/CodeMemoryReportFormatter.cpp000644 000765 000024 00000016266 13663176127 025013 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #define MAX_VARIABLE_NAME_LINE_PART 10 #define MAX_VARIABLE_NAME_FILE_PART 53 #define MAX_VARIABLE_NAME_SEPERATOR_PART 1 #define MAX_VARIABLE_NAME_LENGTH MAX_VARIABLE_NAME_FILE_PART + MAX_VARIABLE_NAME_SEPERATOR_PART + MAX_VARIABLE_NAME_LINE_PART struct CodeReportingAllocationNode { char variableName_[MAX_VARIABLE_NAME_LENGTH + 1]; void* memory_; CodeReportingAllocationNode* next_; }; CodeMemoryReportFormatter::CodeMemoryReportFormatter(TestMemoryAllocator* internalAllocator) : codeReportingList_(NULLPTR), internalAllocator_(internalAllocator) { } CodeMemoryReportFormatter::~CodeMemoryReportFormatter() { clearReporting(); } void CodeMemoryReportFormatter::clearReporting() { while (codeReportingList_) { CodeReportingAllocationNode* oldNode = codeReportingList_; codeReportingList_ = codeReportingList_->next_; internalAllocator_->free_memory((char*) oldNode, 0, __FILE__, __LINE__); } } void CodeMemoryReportFormatter::addNodeToList(const char* variableName, void* memory, CodeReportingAllocationNode* next) { CodeReportingAllocationNode* newNode = (CodeReportingAllocationNode*) (void*) internalAllocator_->alloc_memory(sizeof(CodeReportingAllocationNode), __FILE__, __LINE__); newNode->memory_ = memory; newNode->next_ = next; SimpleString::StrNCpy(newNode->variableName_, variableName, MAX_VARIABLE_NAME_LENGTH); codeReportingList_ = newNode; } CodeReportingAllocationNode* CodeMemoryReportFormatter::findNode(void* memory) { CodeReportingAllocationNode* current = codeReportingList_; while (current && current->memory_ != memory) { current = current->next_; } return current; } static SimpleString extractFileNameFromPath(const char* file) { const char* fileNameOnly = file + SimpleString::StrLen(file); while (fileNameOnly != file && *fileNameOnly != '/') fileNameOnly--; if (*fileNameOnly == '/') fileNameOnly++; return fileNameOnly; } SimpleString CodeMemoryReportFormatter::createVariableNameFromFileLineInfo(const char *file, size_t line) { SimpleString fileNameOnly = extractFileNameFromPath(file); fileNameOnly.replace(".", "_"); for (int i = 1; i < 100; i++) { SimpleString variableName = StringFromFormat("%s_%d_%d", fileNameOnly.asCharString(), (int) line, i); if (!variableExists(variableName)) return variableName; } return ""; } bool CodeMemoryReportFormatter::isNewAllocator(TestMemoryAllocator* allocator) { return SimpleString::StrCmp(allocator->alloc_name(), defaultNewAllocator()->alloc_name()) == 0 || SimpleString::StrCmp(allocator->alloc_name(), defaultNewArrayAllocator()->alloc_name()) == 0; } bool CodeMemoryReportFormatter::variableExists(const SimpleString& variableName) { CodeReportingAllocationNode* current = codeReportingList_; while (current) { if (variableName == current->variableName_) return true; current = current->next_; } return false; } SimpleString CodeMemoryReportFormatter::getAllocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, size_t size) { if (isNewAllocator(allocator)) return StringFromFormat("char* %s = new char[%lu]; /* using %s */", variableName.asCharString(), (unsigned long) size, allocator->alloc_name()); else return StringFromFormat("void* %s = malloc(%lu);", variableName.asCharString(), (unsigned long) size); } SimpleString CodeMemoryReportFormatter::getDeallocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, const char* file, size_t line) { if (isNewAllocator(allocator)) return StringFromFormat("delete [] %s; /* using %s at %s:%d */", variableName.asCharString(), allocator->free_name(), file, (int) line); else return StringFromFormat("free(%s); /* at %s:%d */", variableName.asCharString(), file, (int) line); } void CodeMemoryReportFormatter::report_test_start(TestResult* result, UtestShell& test) { clearReporting(); result->print(StringFromFormat("*/\nTEST(%s_memoryReport, %s)\n{ /* at %s:%d */\n", test.getGroup().asCharString(), test.getName().asCharString(), test.getFile().asCharString(), (int) test.getLineNumber()).asCharString()); } void CodeMemoryReportFormatter::report_test_end(TestResult* result, UtestShell&) { result->print("}/*"); } void CodeMemoryReportFormatter::report_testgroup_start(TestResult* result, UtestShell& test) { result->print(StringFromFormat("*/TEST_GROUP(%s_memoryReport)\n{\n};\n/*", test.getGroup().asCharString()).asCharString()); } void CodeMemoryReportFormatter::report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, size_t line) { SimpleString variableName = createVariableNameFromFileLineInfo(file, line); result->print(StringFromFormat("\t%s\n", getAllocationString(allocator, variableName, size).asCharString()).asCharString()); addNodeToList(variableName.asCharString(), memory, codeReportingList_); } void CodeMemoryReportFormatter::report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, size_t line) { SimpleString variableName; CodeReportingAllocationNode* node = findNode(memory); if (memory == NULLPTR) variableName = "NULL"; else variableName = node->variableName_; result->print(StringFromFormat("\t%s\n", getDeallocationString(allocator, variableName, file, line).asCharString()).asCharString()); } cpputest-4.0/src/CppUTestExt/MockExpectedCallsList.cpp000644 000765 000024 00000027362 13663176127 024055 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockCheckedExpectedCall.h" MockExpectedCallsList::MockExpectedCallsList() : head_(NULLPTR) { } MockExpectedCallsList::~MockExpectedCallsList() { while (head_) { MockExpectedCallsListNode* next = head_->next_; delete head_; head_ = next; } } bool MockExpectedCallsList::hasCallsOutOfOrder() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isOutOfOrder()) return true; return false; } unsigned int MockExpectedCallsList::size() const { unsigned int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) count++; return count; } bool MockExpectedCallsList::isEmpty() const { return head_ == NULLPTR; } unsigned int MockExpectedCallsList::amountOfActualCallsFulfilledFor(const SimpleString& name) const { unsigned int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->relatesTo(name)) { count += p->expectedCall_->getActualCallsFulfilled(); } } return count; } unsigned int MockExpectedCallsList::amountOfUnfulfilledExpectations() const { unsigned int count = 0; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->isFulfilled()) count++; return count; } bool MockExpectedCallsList::hasFinalizedMatchingExpectations() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isMatchingActualCallAndFinalized()) { return true; } } return false; } bool MockExpectedCallsList::hasUnfulfilledExpectations() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (!p->expectedCall_->isFulfilled()) { return true; } } return false; } bool MockExpectedCallsList::hasExpectationWithName(const SimpleString& name) const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->relatesTo(name)) return true; return false; } void MockExpectedCallsList::addExpectedCall(MockCheckedExpectedCall* call) { MockExpectedCallsListNode* newCall = new MockExpectedCallsListNode(call); if (head_ == NULLPTR) head_ = newCall; else { MockExpectedCallsListNode* lastCall = head_; while (lastCall->next_) lastCall = lastCall->next_; lastCall->next_ = newCall; } } void MockExpectedCallsList::addPotentiallyMatchingExpectations(const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) if (p->expectedCall_->canMatchActualCalls()) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::addExpectationsRelatedTo(const SimpleString& name, const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) if (p->expectedCall_->relatesTo(name)) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::addExpectations(const MockExpectedCallsList& list) { for (MockExpectedCallsListNode* p = list.head_; p; p = p->next_) addExpectedCall(p->expectedCall_); } void MockExpectedCallsList::onlyKeepExpectationsRelatedTo(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->relatesTo(name)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepOutOfOrderExpectations() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (!p->expectedCall_->isOutOfOrder()) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepUnmatchingExpectations() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isMatchingActualCallAndFinalized()) { p->expectedCall_->resetActualCallMatchingState(); p->expectedCall_ = NULLPTR; } pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithInputParameterName(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasInputParameterWithName(name)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithOutputParameterName(const SimpleString& name) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasOutputParameterWithName(name)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithInputParameter(const MockNamedValue& parameter) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasInputParameter(parameter)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsWithOutputParameter(const MockNamedValue& parameter) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->hasOutputParameter(parameter)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } void MockExpectedCallsList::onlyKeepExpectationsOnObject(const void* objectPtr) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->relatesToObject(objectPtr)) p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); } MockCheckedExpectedCall* MockExpectedCallsList::removeFirstFinalizedMatchingExpectation() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isMatchingActualCallAndFinalized()) { MockCheckedExpectedCall* matchingCall = p->expectedCall_; p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); return matchingCall; } } return NULLPTR; } MockCheckedExpectedCall* MockExpectedCallsList::getFirstMatchingExpectation() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isMatchingActualCall()) { return p->expectedCall_; } } return NULLPTR; } MockCheckedExpectedCall* MockExpectedCallsList::removeFirstMatchingExpectation() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) { if (p->expectedCall_->isMatchingActualCall()) { MockCheckedExpectedCall* matchingCall = p->expectedCall_; p->expectedCall_ = NULLPTR; pruneEmptyNodeFromList(); return matchingCall; } } return NULLPTR; } void MockExpectedCallsList::pruneEmptyNodeFromList() { MockExpectedCallsListNode* current = head_; MockExpectedCallsListNode* previous = NULLPTR; MockExpectedCallsListNode* toBeDeleted = NULLPTR; while (current) { if (current->expectedCall_ == NULLPTR) { toBeDeleted = current; if (previous == NULLPTR) head_ = current = current->next_; else current = previous->next_ = current->next_; delete toBeDeleted; } else { previous = current; current = current->next_; } } } void MockExpectedCallsList::deleteAllExpectationsAndClearList() { while (head_) { MockExpectedCallsListNode* next = head_->next_; delete head_->expectedCall_; delete head_; head_ = next; } } void MockExpectedCallsList::resetActualCallMatchingState() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->resetActualCallMatchingState(); } void MockExpectedCallsList::wasPassedToObject() { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->wasPassedToObject(); } void MockExpectedCallsList::parameterWasPassed(const SimpleString& parameterName) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->inputParameterWasPassed(parameterName); } void MockExpectedCallsList::outputParameterWasPassed(const SimpleString& parameterName) { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) p->expectedCall_->outputParameterWasPassed(parameterName); } static SimpleString stringOrNoneTextWhenEmpty(const SimpleString& inputString, const SimpleString& linePrefix) { SimpleString str = inputString; if (str == "") { str += linePrefix; str += ""; } return str; } static SimpleString appendStringOnANewLine(const SimpleString& inputString, const SimpleString& linePrefix, const SimpleString& stringToAppend) { SimpleString str = inputString; if (str != "") str += "\n"; str += linePrefix; str += stringToAppend; return str; } SimpleString MockExpectedCallsList::unfulfilledCallsToString(const SimpleString& linePrefix) const { SimpleString str; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (!p->expectedCall_->isFulfilled()) str = appendStringOnANewLine(str, linePrefix, p->expectedCall_->callToString()); return stringOrNoneTextWhenEmpty(str, linePrefix); } SimpleString MockExpectedCallsList::fulfilledCallsToString(const SimpleString& linePrefix) const { SimpleString str; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (p->expectedCall_->isFulfilled()) str = appendStringOnANewLine(str, linePrefix, p->expectedCall_->callToString()); return stringOrNoneTextWhenEmpty(str, linePrefix); } SimpleString MockExpectedCallsList::missingParametersToString() const { SimpleString str; for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->isMatchingActualCall()) str = appendStringOnANewLine(str, "", p->expectedCall_->missingParametersToString()); return stringOrNoneTextWhenEmpty(str, ""); } bool MockExpectedCallsList::hasUnmatchingExpectationsBecauseOfMissingParameters() const { for (MockExpectedCallsListNode* p = head_; p; p = p->next_) if (! p->expectedCall_->areParametersMatchingActualCall()) return true; return false; } cpputest-4.0/src/CppUTestExt/MockNamedValue.cpp000644 000765 000024 00000055306 13663176127 022521 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockNamedValue.h" #include "CppUTest/PlatformSpecificFunctions.h" MockNamedValueComparatorsAndCopiersRepository* MockNamedValue::defaultRepository_ = NULLPTR; const double MockNamedValue::defaultDoubleTolerance = 0.005; void MockNamedValue::setDefaultComparatorsAndCopiersRepository(MockNamedValueComparatorsAndCopiersRepository* repository) { defaultRepository_ = repository; } MockNamedValueComparatorsAndCopiersRepository* MockNamedValue::getDefaultComparatorsAndCopiersRepository() { return defaultRepository_; } MockNamedValue::MockNamedValue(const SimpleString& name) : name_(name), type_("int"), size_(0), comparator_(NULLPTR), copier_(NULLPTR) { value_.intValue_ = 0; } MockNamedValue::~MockNamedValue() { } void MockNamedValue::setValue(bool value) { type_ = "bool"; value_.boolValue_ = value; } void MockNamedValue::setValue(unsigned int value) { type_ = "unsigned int"; value_.unsignedIntValue_ = value; } void MockNamedValue::setValue(int value) { type_ = "int"; value_.intValue_ = value; } void MockNamedValue::setValue(long int value) { type_ = "long int"; value_.longIntValue_ = value; } void MockNamedValue::setValue(unsigned long int value) { type_ = "unsigned long int"; value_.unsignedLongIntValue_ = value; } #ifdef CPPUTEST_USE_LONG_LONG void MockNamedValue::setValue(cpputest_longlong value) { type_ = "long long int"; value_.longLongIntValue_ = value; } void MockNamedValue::setValue(cpputest_ulonglong value) { type_ = "unsigned long long int"; value_.unsignedLongLongIntValue_ = value; } #else void MockNamedValue::setValue(cpputest_longlong) { FAIL("Long Long type is not supported"); } void MockNamedValue::setValue(cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); } #endif void MockNamedValue::setValue(double value) { setValue(value, defaultDoubleTolerance); } void MockNamedValue::setValue(double value, double tolerance) { type_ = "double"; value_.doubleValue_.value = value; value_.doubleValue_.tolerance = tolerance; } void MockNamedValue::setValue(void* value) { type_ = "void*"; value_.pointerValue_ = value; } void MockNamedValue::setValue(const void* value) { type_ = "const void*"; value_.constPointerValue_ = value; } void MockNamedValue::setValue(void (*value)()) { type_ = "void (*)()"; value_.functionPointerValue_ = value; } void MockNamedValue::setValue(const char* value) { type_ = "const char*"; value_.stringValue_ = value; } void MockNamedValue::setMemoryBuffer(const unsigned char* value, size_t size) { type_ = "const unsigned char*"; value_.memoryBufferValue_ = value; size_ = size; } void MockNamedValue::setConstObjectPointer(const SimpleString& type, const void* objectPtr) { type_ = type; value_.constObjectPointerValue_ = objectPtr; if (defaultRepository_) { comparator_ = defaultRepository_->getComparatorForType(type); copier_ = defaultRepository_->getCopierForType(type); } } void MockNamedValue::setObjectPointer(const SimpleString& type, void* objectPtr) { type_ = type; value_.objectPointerValue_ = objectPtr; if (defaultRepository_) { comparator_ = defaultRepository_->getComparatorForType(type); copier_ = defaultRepository_->getCopierForType(type); } } void MockNamedValue::setSize(size_t size) { size_ = size; } void MockNamedValue::setName(const char* name) { name_ = name; } SimpleString MockNamedValue::getName() const { return name_; } SimpleString MockNamedValue::getType() const { return type_; } bool MockNamedValue::getBoolValue() const { STRCMP_EQUAL("bool", type_.asCharString()); return value_.boolValue_; } unsigned int MockNamedValue::getUnsignedIntValue() const { if(type_ == "int" && value_.intValue_ >= 0) return (unsigned int)value_.intValue_; else { STRCMP_EQUAL("unsigned int", type_.asCharString()); return value_.unsignedIntValue_; } } int MockNamedValue::getIntValue() const { STRCMP_EQUAL("int", type_.asCharString()); return value_.intValue_; } long int MockNamedValue::getLongIntValue() const { if(type_ == "int") return value_.intValue_; else if(type_ == "unsigned int") return (long int)value_.unsignedIntValue_; else { STRCMP_EQUAL("long int", type_.asCharString()); return value_.longIntValue_; } } unsigned long int MockNamedValue::getUnsignedLongIntValue() const { if(type_ == "unsigned int") return value_.unsignedIntValue_; else if(type_ == "int" && value_.intValue_ >= 0) return (unsigned long int)value_.intValue_; else if(type_ == "long int" && value_.longIntValue_ >= 0) return (unsigned long int)value_.longIntValue_; else { STRCMP_EQUAL("unsigned long int", type_.asCharString()); return value_.unsignedLongIntValue_; } } #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong MockNamedValue::getLongLongIntValue() const { if(type_ == "int") return value_.intValue_; else if(type_ == "unsigned int") return (long long int)value_.unsignedIntValue_; else if(type_ == "long int") return value_.longIntValue_; else if(type_ == "unsigned long int") return (long long int)value_.unsignedLongIntValue_; else { STRCMP_EQUAL("long long int", type_.asCharString()); return value_.longLongIntValue_; } } cpputest_ulonglong MockNamedValue::getUnsignedLongLongIntValue() const { if(type_ == "unsigned int") return value_.unsignedIntValue_; else if(type_ == "int" && value_.intValue_ >= 0) return (unsigned long long int)value_.intValue_; else if(type_ == "long int" && value_.longIntValue_ >= 0) return (unsigned long long int)value_.longIntValue_; else if(type_ == "unsigned long int") return value_.unsignedLongIntValue_; else if(type_ == "long long int" && value_.longLongIntValue_ >= 0) return (unsigned long long int)value_.longLongIntValue_; else { STRCMP_EQUAL("unsigned long long int", type_.asCharString()); return value_.unsignedLongLongIntValue_; } } #else cpputest_longlong MockNamedValue::getLongLongIntValue() const { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_ulonglong MockNamedValue::getUnsignedLongLongIntValue() const { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } #endif double MockNamedValue::getDoubleValue() const { STRCMP_EQUAL("double", type_.asCharString()); return value_.doubleValue_.value; } double MockNamedValue::getDoubleTolerance() const { STRCMP_EQUAL("double", type_.asCharString()); return value_.doubleValue_.tolerance; } const char* MockNamedValue::getStringValue() const { STRCMP_EQUAL("const char*", type_.asCharString()); return value_.stringValue_; } void* MockNamedValue::getPointerValue() const { STRCMP_EQUAL("void*", type_.asCharString()); return value_.pointerValue_; } const void* MockNamedValue::getConstPointerValue() const { STRCMP_EQUAL("const void*", type_.asCharString()); return value_.pointerValue_; } void (*MockNamedValue::getFunctionPointerValue() const)() { STRCMP_EQUAL("void (*)()", type_.asCharString()); return value_.functionPointerValue_; } const unsigned char* MockNamedValue::getMemoryBuffer() const { STRCMP_EQUAL("const unsigned char*", type_.asCharString()); return value_.memoryBufferValue_; } const void* MockNamedValue::getConstObjectPointer() const { return value_.constObjectPointerValue_; } void* MockNamedValue::getObjectPointer() const { return value_.objectPointerValue_; } size_t MockNamedValue::getSize() const { return size_; } MockNamedValueComparator* MockNamedValue::getComparator() const { return comparator_; } MockNamedValueCopier* MockNamedValue::getCopier() const { return copier_; } bool MockNamedValue::equals(const MockNamedValue& p) const { if((type_ == "long int") && (p.type_ == "int")) return value_.longIntValue_ == p.value_.intValue_; else if((type_ == "int") && (p.type_ == "long int")) return value_.intValue_ == p.value_.longIntValue_; else if((type_ == "unsigned int") && (p.type_ == "int")) return (p.value_.intValue_ >= 0) && (value_.unsignedIntValue_ == (unsigned int)p.value_.intValue_); else if((type_ == "int") && (p.type_ == "unsigned int")) return (value_.intValue_ >= 0) && ((unsigned int)value_.intValue_ == p.value_.unsignedIntValue_); else if((type_ == "unsigned long int") && (p.type_ == "int")) return (p.value_.intValue_ >= 0) && (value_.unsignedLongIntValue_ == (unsigned long)p.value_.intValue_); else if((type_ == "int") && (p.type_ == "unsigned long int")) return (value_.intValue_ >= 0) && ((unsigned long)value_.intValue_ == p.value_.unsignedLongIntValue_); else if((type_ == "unsigned int") && (p.type_ == "long int")) return (p.value_.longIntValue_ >= 0) && (value_.unsignedIntValue_ == (unsigned long)p.value_.longIntValue_); else if((type_ == "long int") && (p.type_ == "unsigned int")) return (value_.longIntValue_ >= 0) && ((unsigned long)value_.longIntValue_ == p.value_.unsignedIntValue_); else if((type_ == "unsigned int") && (p.type_ == "unsigned long int")) return value_.unsignedIntValue_ == p.value_.unsignedLongIntValue_; else if((type_ == "unsigned long int") && (p.type_ == "unsigned int")) return value_.unsignedLongIntValue_ == p.value_.unsignedIntValue_; else if((type_ == "long int") && (p.type_ == "unsigned long int")) return (value_.longIntValue_ >= 0) && ((unsigned long)value_.longIntValue_ == p.value_.unsignedLongIntValue_); else if((type_ == "unsigned long int") && (p.type_ == "long int")) return (p.value_.longIntValue_ >= 0) && (value_.unsignedLongIntValue_ == (unsigned long) p.value_.longIntValue_); #ifdef CPPUTEST_USE_LONG_LONG else if ((type_ == "long long int") && (p.type_ == "int")) return value_.longLongIntValue_ == p.value_.intValue_; else if ((type_ == "int") && (p.type_ == "long long int")) return value_.intValue_ == p.value_.longLongIntValue_; else if ((type_ == "long long int") && (p.type_ == "long int")) return value_.longLongIntValue_ == p.value_.longIntValue_; else if ((type_ == "long int") && (p.type_ == "long long int")) return value_.longIntValue_ == p.value_.longLongIntValue_; else if ((type_ == "long long int") && (p.type_ == "unsigned int")) return (value_.longLongIntValue_ >= 0) && ((unsigned long long)value_.longLongIntValue_ == p.value_.unsignedIntValue_); else if ((type_ == "unsigned int") && (p.type_ == "long long int")) return (p.value_.longLongIntValue_ >= 0) && (value_.unsignedIntValue_ == (unsigned long long)p.value_.longLongIntValue_); else if ((type_ == "long long int") && (p.type_ == "unsigned long int")) return (value_.longLongIntValue_ >= 0) && ((unsigned long long)value_.longLongIntValue_ == p.value_.unsignedLongIntValue_); else if ((type_ == "unsigned long int") && (p.type_ == "long long int")) return (p.value_.longLongIntValue_ >= 0) && (value_.unsignedLongIntValue_ == (unsigned long long)p.value_.longLongIntValue_); else if ((type_ == "long long int") && (p.type_ == "unsigned long long int")) return (value_.longLongIntValue_ >= 0) && ((unsigned long long)value_.longLongIntValue_ == p.value_.unsignedLongLongIntValue_); else if ((type_ == "unsigned long long int") && (p.type_ == "long long int")) return (p.value_.longLongIntValue_ >= 0) && (value_.unsignedLongLongIntValue_ == (unsigned long long)p.value_.longLongIntValue_); else if ((type_ == "unsigned long long int") && (p.type_ == "int")) return (p.value_.intValue_ >= 0) && (value_.unsignedLongLongIntValue_ == (unsigned long long)p.value_.intValue_); else if ((type_ == "int") && (p.type_ == "unsigned long long int")) return (value_.intValue_ >= 0) && ((unsigned long long)value_.intValue_ == p.value_.unsignedLongLongIntValue_); else if ((type_ == "unsigned long long int") && (p.type_ == "unsigned int")) return value_.unsignedLongLongIntValue_ == p.value_.unsignedIntValue_; else if ((type_ == "unsigned int") && (p.type_ == "unsigned long long int")) return value_.unsignedIntValue_ == p.value_.unsignedLongLongIntValue_; else if ((type_ == "unsigned long long int") && (p.type_ == "long int")) return (p.value_.longIntValue_ >= 0) && (value_.unsignedLongLongIntValue_ == (unsigned long long)p.value_.longIntValue_); else if ((type_ == "long int") && (p.type_ == "unsigned long long int")) return (value_.longIntValue_ >= 0) && ((unsigned long long)value_.longIntValue_ == p.value_.unsignedLongLongIntValue_); else if ((type_ == "unsigned long long int") && (p.type_ == "unsigned long int")) return value_.unsignedLongLongIntValue_ == p.value_.unsignedLongIntValue_; else if ((type_ == "unsigned long int") && (p.type_ == "unsigned long long int")) return value_.unsignedLongIntValue_ == p.value_.unsignedLongLongIntValue_; #endif if (type_ != p.type_) return false; if (type_ == "bool") return value_.boolValue_ == p.value_.boolValue_; else if (type_ == "int") return value_.intValue_ == p.value_.intValue_; else if (type_ == "unsigned int") return value_.unsignedIntValue_ == p.value_.unsignedIntValue_; else if (type_ == "long int") return value_.longIntValue_ == p.value_.longIntValue_; else if (type_ == "unsigned long int") return value_.unsignedLongIntValue_ == p.value_.unsignedLongIntValue_; #ifdef CPPUTEST_USE_LONG_LONG else if (type_ == "long long int") return value_.longLongIntValue_ == p.value_.longLongIntValue_; else if (type_ == "unsigned long long int") return value_.unsignedLongLongIntValue_ == p.value_.unsignedLongLongIntValue_; #endif else if (type_ == "const char*") return SimpleString(value_.stringValue_) == SimpleString(p.value_.stringValue_); else if (type_ == "void*") return value_.pointerValue_ == p.value_.pointerValue_; else if (type_ == "const void*") return value_.constPointerValue_ == p.value_.constPointerValue_; else if (type_ == "void (*)()") return value_.functionPointerValue_ == p.value_.functionPointerValue_; else if (type_ == "double") return (doubles_equal(value_.doubleValue_.value, p.value_.doubleValue_.value, value_.doubleValue_.tolerance)); else if (type_ == "const unsigned char*") { if (size_ != p.size_) { return false; } return SimpleString::MemCmp(value_.memoryBufferValue_, p.value_.memoryBufferValue_, size_) == 0; } if (comparator_) return comparator_->isEqual(value_.constObjectPointerValue_, p.value_.constObjectPointerValue_); return false; } bool MockNamedValue::compatibleForCopying(const MockNamedValue& p) const { if (type_ == p.type_) return true; if ((type_ == "const void*") && (p.type_ == "void*")) return true; return false; } SimpleString MockNamedValue::toString() const { if (type_ == "bool") return StringFrom(value_.boolValue_); else if (type_ == "int") return StringFrom(value_.intValue_) + " " + BracketsFormattedHexStringFrom(value_.intValue_); else if (type_ == "unsigned int") return StringFrom(value_.unsignedIntValue_) + " " + BracketsFormattedHexStringFrom(value_.unsignedIntValue_); else if (type_ == "long int") return StringFrom(value_.longIntValue_) + " " + BracketsFormattedHexStringFrom(value_.longIntValue_); else if (type_ == "unsigned long int") return StringFrom(value_.unsignedLongIntValue_) + " " + BracketsFormattedHexStringFrom(value_.unsignedLongIntValue_); #ifdef CPPUTEST_USE_LONG_LONG else if (type_ == "long long int") return StringFrom(value_.longLongIntValue_) + " " + BracketsFormattedHexStringFrom(value_.longLongIntValue_); else if (type_ == "unsigned long long int") return StringFrom(value_.unsignedLongLongIntValue_) + " " + BracketsFormattedHexStringFrom(value_.unsignedLongLongIntValue_); #endif else if (type_ == "const char*") return value_.stringValue_; else if (type_ == "void*") return StringFrom(value_.pointerValue_); else if (type_ == "void (*)()") return StringFrom(value_.functionPointerValue_); else if (type_ == "const void*") return StringFrom(value_.constPointerValue_); else if (type_ == "double") return StringFrom(value_.doubleValue_.value); else if (type_ == "const unsigned char*") return StringFromBinaryWithSizeOrNull(value_.memoryBufferValue_, size_); if (comparator_) return comparator_->valueToString(value_.constObjectPointerValue_); return StringFromFormat("No comparator found for type: \"%s\"", type_.asCharString()); } void MockNamedValueListNode::setNext(MockNamedValueListNode* node) { next_ = node; } MockNamedValueListNode* MockNamedValueListNode::next() { return next_; } MockNamedValue* MockNamedValueListNode::item() { return data_; } void MockNamedValueListNode::destroy() { delete data_; } MockNamedValueListNode::MockNamedValueListNode(MockNamedValue* newValue) : data_(newValue), next_(NULLPTR) { } SimpleString MockNamedValueListNode::getName() const { return data_->getName(); } SimpleString MockNamedValueListNode::getType() const { return data_->getType(); } MockNamedValueList::MockNamedValueList() : head_(NULLPTR) { } void MockNamedValueList::clear() { while (head_) { MockNamedValueListNode* n = head_->next(); head_->destroy(); delete head_; head_ = n; } } void MockNamedValueList::add(MockNamedValue* newValue) { MockNamedValueListNode* newNode = new MockNamedValueListNode(newValue); if (head_ == NULLPTR) head_ = newNode; else { MockNamedValueListNode* lastNode = head_; while (lastNode->next()) lastNode = lastNode->next(); lastNode->setNext(newNode); } } MockNamedValue* MockNamedValueList::getValueByName(const SimpleString& name) { for (MockNamedValueListNode * p = head_; p; p = p->next()) if (p->getName() == name) return p->item(); return NULLPTR; } MockNamedValueListNode* MockNamedValueList::begin() { return head_; } struct MockNamedValueComparatorsAndCopiersRepositoryNode { MockNamedValueComparatorsAndCopiersRepositoryNode(const SimpleString& name, MockNamedValueComparator* comparator, MockNamedValueComparatorsAndCopiersRepositoryNode* next) : name_(name), comparator_(comparator), copier_(NULLPTR), next_(next) {} MockNamedValueComparatorsAndCopiersRepositoryNode(const SimpleString& name, MockNamedValueCopier* copier, MockNamedValueComparatorsAndCopiersRepositoryNode* next) : name_(name), comparator_(NULLPTR), copier_(copier), next_(next) {} MockNamedValueComparatorsAndCopiersRepositoryNode(const SimpleString& name, MockNamedValueComparator* comparator, MockNamedValueCopier* copier, MockNamedValueComparatorsAndCopiersRepositoryNode* next) : name_(name), comparator_(comparator), copier_(copier), next_(next) {} SimpleString name_; MockNamedValueComparator* comparator_; MockNamedValueCopier* copier_; MockNamedValueComparatorsAndCopiersRepositoryNode* next_; }; MockNamedValueComparatorsAndCopiersRepository::MockNamedValueComparatorsAndCopiersRepository() : head_(NULLPTR) { } MockNamedValueComparatorsAndCopiersRepository::~MockNamedValueComparatorsAndCopiersRepository() { clear(); } void MockNamedValueComparatorsAndCopiersRepository::clear() { while (head_) { MockNamedValueComparatorsAndCopiersRepositoryNode* next = head_->next_; delete head_; head_ = next; } } void MockNamedValueComparatorsAndCopiersRepository::installComparator(const SimpleString& name, MockNamedValueComparator& comparator) { head_ = new MockNamedValueComparatorsAndCopiersRepositoryNode(name, &comparator, head_); } void MockNamedValueComparatorsAndCopiersRepository::installCopier(const SimpleString& name, MockNamedValueCopier& copier) { head_ = new MockNamedValueComparatorsAndCopiersRepositoryNode(name, &copier, head_); } MockNamedValueComparator* MockNamedValueComparatorsAndCopiersRepository::getComparatorForType(const SimpleString& name) { for (MockNamedValueComparatorsAndCopiersRepositoryNode* p = head_; p; p = p->next_) if (p->name_ == name && p->comparator_) return p->comparator_; return NULLPTR; } MockNamedValueCopier* MockNamedValueComparatorsAndCopiersRepository::getCopierForType(const SimpleString& name) { for (MockNamedValueComparatorsAndCopiersRepositoryNode* p = head_; p; p = p->next_) if (p->name_ == name && p->copier_) return p->copier_; return NULLPTR; } void MockNamedValueComparatorsAndCopiersRepository::installComparatorsAndCopiers(const MockNamedValueComparatorsAndCopiersRepository& repository) { for (MockNamedValueComparatorsAndCopiersRepositoryNode* p = repository.head_; p; p = p->next_) head_ = new MockNamedValueComparatorsAndCopiersRepositoryNode(p->name_, p->comparator_, p->copier_, head_); } cpputest-4.0/src/CppUTestExt/MockSupport_c.cpp000644 000765 000024 00000105453 13663176127 022455 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CppUTestConfig.h" #include "CppUTest/Utest.h" #include "CppUTest/UtestMacros.h" #include "CppUTest/PlatformSpecificFunctions_c.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupport_c.h" typedef void (*cpputest_cpp_function_pointer)(); /* Cl2000 requires cast to C++ function */ class MockFailureReporterTestTerminatorForInCOnlyCode : public TestTerminatorWithoutExceptions { public: MockFailureReporterTestTerminatorForInCOnlyCode(bool crashOnFailure) : crashOnFailure_(crashOnFailure) { } virtual void exitCurrentTest() const _override { if (crashOnFailure_) UT_CRASH(); TestTerminatorWithoutExceptions::exitCurrentTest(); } // LCOV_EXCL_LINE // LCOV_EXCL_START virtual ~MockFailureReporterTestTerminatorForInCOnlyCode() _destructor_override { } // LCOV_EXCL_STOP private: bool crashOnFailure_; }; class MockFailureReporterForInCOnlyCode : public MockFailureReporter { public: void failTest(const MockFailure& failure) _override { if (!getTestToFail()->hasFailed()) getTestToFail()->failWith(failure, MockFailureReporterTestTerminatorForInCOnlyCode(crashOnFailure_)); } // LCOV_EXCL_LINE }; static MockSupport* currentMockSupport = NULLPTR; static MockExpectedCall* expectedCall = NULLPTR; static MockActualCall* actualCall = NULLPTR; static MockFailureReporterForInCOnlyCode failureReporterForC; class MockCFunctionComparatorNode : public MockNamedValueComparator { public: MockCFunctionComparatorNode(MockCFunctionComparatorNode* next, MockTypeEqualFunction_c equal, MockTypeValueToStringFunction_c toString) : next_(next), equal_(equal), toString_(toString) {} virtual ~MockCFunctionComparatorNode() _destructor_override {} virtual bool isEqual(const void* object1, const void* object2) _override { return equal_(object1, object2) != 0; } virtual SimpleString valueToString(const void* object) _override { return SimpleString(toString_(object)); } MockCFunctionComparatorNode* next_; MockTypeEqualFunction_c equal_; MockTypeValueToStringFunction_c toString_; }; static MockCFunctionComparatorNode* comparatorList_ = NULLPTR; class MockCFunctionCopierNode : public MockNamedValueCopier { public: MockCFunctionCopierNode(MockCFunctionCopierNode* next, MockTypeCopyFunction_c copier) : next_(next), copier_(copier) {} virtual ~MockCFunctionCopierNode() _destructor_override {} virtual void copy(void* dst, const void* src) _override { copier_(dst, src); } MockCFunctionCopierNode* next_; MockTypeCopyFunction_c copier_; }; static MockCFunctionCopierNode* copierList_ = NULLPTR; extern "C" { void strictOrder_c(); MockExpectedCall_c* expectOneCall_c(const char* name); void expectNoCall_c(const char* name); MockExpectedCall_c* expectNCalls_c(const unsigned int number, const char* name); MockActualCall_c* actualCall_c(const char* name); void disable_c(); void enable_c(); void ignoreOtherCalls_c(); void setBoolData_c(const char* name, int value); void setIntData_c(const char* name, int value); void setUnsignedIntData_c(const char* name, unsigned int value); void setDoubleData_c(const char* name, double value); void setStringData_c(const char* name, const char* value); void setPointerData_c(const char* name, void* value); void setConstPointerData_c(const char* name, const void* value); void setFunctionPointerData_c(const char* name, void (*value)()); void setDataObject_c(const char* name, const char* type, void* value); void setDataConstObject_c(const char* name, const char* type, const void* value); MockValue_c getData_c(const char* name); int hasReturnValue_c(); void checkExpectations_c(); int expectedCallsLeft_c(); void clear_c(); void crashOnFailure_c(unsigned shouldCrash); MockExpectedCall_c* withBoolParameters_c(const char* name, int value); MockExpectedCall_c* withIntParameters_c(const char* name, int value); MockExpectedCall_c* withUnsignedIntParameters_c(const char* name, unsigned int value); MockExpectedCall_c* withLongIntParameters_c(const char* name, long int value); MockExpectedCall_c* withUnsignedLongIntParameters_c(const char* name, unsigned long int value); MockExpectedCall_c* withLongLongIntParameters_c(const char* name, cpputest_longlong value); MockExpectedCall_c* withUnsignedLongLongIntParameters_c(const char* name, cpputest_ulonglong value); MockExpectedCall_c* withDoubleParameters_c(const char* name, double value); MockExpectedCall_c* withDoubleParametersAndTolerance_c(const char* name, double value, double tolerance); MockExpectedCall_c* withStringParameters_c(const char* name, const char* value); MockExpectedCall_c* withPointerParameters_c(const char* name, void* value); MockExpectedCall_c* withConstPointerParameters_c(const char* name, const void* value); MockExpectedCall_c* withFunctionPointerParameters_c(const char* name, void (*value)()); MockExpectedCall_c* withMemoryBufferParameters_c(const char* name, const unsigned char* value, size_t size); MockExpectedCall_c* withParameterOfType_c(const char* type, const char* name, const void* value); MockExpectedCall_c* withOutputParameterReturning_c(const char* name, const void* value, size_t size); MockExpectedCall_c* withOutputParameterOfTypeReturning_c(const char* type, const char* name, const void* value); MockExpectedCall_c* withUnmodifiedOutputParameter_c(const char* name); MockExpectedCall_c* ignoreOtherParameters_c(); MockExpectedCall_c* andReturnBoolValue_c(int value); MockExpectedCall_c* andReturnIntValue_c(int value); MockExpectedCall_c* andReturnUnsignedIntValue_c(unsigned int value); MockExpectedCall_c* andReturnLongIntValue_c(long int value); MockExpectedCall_c* andReturnUnsignedLongIntValue_c(unsigned long int value); MockExpectedCall_c* andReturnLongLongIntValue_c(cpputest_longlong value); MockExpectedCall_c* andReturnUnsignedLongLongIntValue_c(cpputest_ulonglong value); MockExpectedCall_c* andReturnDoubleValue_c(double value); MockExpectedCall_c* andReturnStringValue_c(const char* value); MockExpectedCall_c* andReturnPointerValue_c(void* value); MockExpectedCall_c* andReturnConstPointerValue_c(const void* value); MockExpectedCall_c* andReturnFunctionPointerValue_c(void (*value)()); MockActualCall_c* withActualBoolParameters_c(const char* name, int value); MockActualCall_c* withActualIntParameters_c(const char* name, int value); MockActualCall_c* withActualUnsignedIntParameters_c(const char* name, unsigned int value); MockActualCall_c* withActualLongIntParameters_c(const char* name, long int value); MockActualCall_c* withActualUnsignedLongIntParameters_c(const char* name, unsigned long int value); MockActualCall_c* withActualLongLongIntParameters_c(const char* name, cpputest_longlong value); MockActualCall_c* withActualUnsignedLongLongIntParameters_c(const char* name, cpputest_ulonglong value); MockActualCall_c* withActualDoubleParameters_c(const char* name, double value); MockActualCall_c* withActualStringParameters_c(const char* name, const char* value); MockActualCall_c* withActualPointerParameters_c(const char* name, void* value); MockActualCall_c* withActualConstPointerParameters_c(const char* name, const void* value); MockActualCall_c* withActualFunctionPointerParameters_c(const char* name, void (*value)()); MockActualCall_c* withActualMemoryBufferParameters_c(const char* name, const unsigned char* value, size_t size); MockActualCall_c* withActualParameterOfType_c(const char* type, const char* name, const void* value); MockActualCall_c* withActualOutputParameter_c(const char* name, void* value); MockActualCall_c* withActualOutputParameterOfType_c(const char* type, const char* name, void* value); MockValue_c returnValue_c(); int boolReturnValue_c(); int returnBoolValueOrDefault_c(int defaultValue); int intReturnValue_c(); int returnIntValueOrDefault_c(int defaultValue); unsigned int unsignedIntReturnValue_c(); unsigned int returnUnsignedIntValueOrDefault_c(unsigned int defaultValue); long int longIntReturnValue_c(); long int returnLongIntValueOrDefault_c(long int defaultValue); unsigned long int unsignedLongIntReturnValue_c(); unsigned long int returnUnsignedLongIntValueOrDefault_c(unsigned long int defaultValue); cpputest_longlong longLongIntReturnValue_c(); cpputest_longlong returnLongLongIntValueOrDefault_c(cpputest_longlong defaultValue); cpputest_ulonglong unsignedLongLongIntReturnValue_c(); cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault_c(cpputest_ulonglong defaultValue); const char* stringReturnValue_c(); const char* returnStringValueOrDefault_c(const char * defaultValue); double doubleReturnValue_c(); double returnDoubleValueOrDefault_c(double defaultValue); void* pointerReturnValue_c(); void* returnPointerValueOrDefault_c(void * defaultValue); const void* constPointerReturnValue_c(); const void* returnConstPointerValueOrDefault_c(const void * defaultValue); void (*functionPointerReturnValue_c())(); void (*returnFunctionPointerValueOrDefault_c(void(*defaultValue)()))(); static void installComparator_c (const char* typeName, MockTypeEqualFunction_c isEqual, MockTypeValueToStringFunction_c valueToString) { comparatorList_ = new MockCFunctionComparatorNode(comparatorList_, isEqual, valueToString); currentMockSupport->installComparator(typeName, *comparatorList_); } static void installCopier_c (const char* typeName, MockTypeCopyFunction_c copier) { copierList_ = new MockCFunctionCopierNode(copierList_, copier); currentMockSupport->installCopier(typeName, *copierList_); } static void removeAllComparatorsAndCopiers_c() { while (comparatorList_) { MockCFunctionComparatorNode *next = comparatorList_->next_; delete comparatorList_; comparatorList_ = next; } while (copierList_) { MockCFunctionCopierNode *next = copierList_->next_; delete copierList_; copierList_ = next; } currentMockSupport->removeAllComparatorsAndCopiers(); } static MockExpectedCall_c gExpectedCall = { withBoolParameters_c, withIntParameters_c, withUnsignedIntParameters_c, withLongIntParameters_c, withUnsignedLongIntParameters_c, withLongLongIntParameters_c, withUnsignedLongLongIntParameters_c, withDoubleParameters_c, withDoubleParametersAndTolerance_c, withStringParameters_c, withPointerParameters_c, withConstPointerParameters_c, withFunctionPointerParameters_c, withMemoryBufferParameters_c, withParameterOfType_c, withOutputParameterReturning_c, withOutputParameterOfTypeReturning_c, withUnmodifiedOutputParameter_c, ignoreOtherParameters_c, andReturnBoolValue_c, andReturnUnsignedIntValue_c, andReturnIntValue_c, andReturnLongIntValue_c, andReturnUnsignedLongIntValue_c, andReturnLongLongIntValue_c, andReturnUnsignedLongLongIntValue_c, andReturnDoubleValue_c, andReturnStringValue_c, andReturnPointerValue_c, andReturnConstPointerValue_c, andReturnFunctionPointerValue_c, }; static MockActualCall_c gActualCall = { withActualBoolParameters_c, withActualIntParameters_c, withActualUnsignedIntParameters_c, withActualLongIntParameters_c, withActualUnsignedLongIntParameters_c, withActualLongLongIntParameters_c, withActualUnsignedLongLongIntParameters_c, withActualDoubleParameters_c, withActualStringParameters_c, withActualPointerParameters_c, withActualConstPointerParameters_c, withActualFunctionPointerParameters_c, withActualMemoryBufferParameters_c, withActualParameterOfType_c, withActualOutputParameter_c, withActualOutputParameterOfType_c, hasReturnValue_c, returnValue_c, boolReturnValue_c, returnBoolValueOrDefault_c, intReturnValue_c, returnIntValueOrDefault_c, unsignedIntReturnValue_c, returnUnsignedIntValueOrDefault_c, longIntReturnValue_c, returnLongIntValueOrDefault_c, unsignedLongIntReturnValue_c, returnUnsignedLongIntValueOrDefault_c, longLongIntReturnValue_c, returnLongLongIntValueOrDefault_c, unsignedLongLongIntReturnValue_c, returnUnsignedLongLongIntValueOrDefault_c, stringReturnValue_c, returnStringValueOrDefault_c, doubleReturnValue_c, returnDoubleValueOrDefault_c, pointerReturnValue_c, returnPointerValueOrDefault_c, constPointerReturnValue_c, returnConstPointerValueOrDefault_c, functionPointerReturnValue_c, returnFunctionPointerValueOrDefault_c }; static MockSupport_c gMockSupport = { strictOrder_c, expectOneCall_c, expectNoCall_c, expectNCalls_c, actualCall_c, hasReturnValue_c, returnValue_c, boolReturnValue_c, returnBoolValueOrDefault_c, intReturnValue_c, returnIntValueOrDefault_c, unsignedIntReturnValue_c, returnUnsignedIntValueOrDefault_c, longIntReturnValue_c, returnLongIntValueOrDefault_c, unsignedLongIntReturnValue_c, returnUnsignedLongIntValueOrDefault_c, longLongIntReturnValue_c, returnLongLongIntValueOrDefault_c, unsignedLongLongIntReturnValue_c, returnUnsignedLongLongIntValueOrDefault_c, stringReturnValue_c, returnStringValueOrDefault_c, doubleReturnValue_c, returnDoubleValueOrDefault_c, pointerReturnValue_c, returnPointerValueOrDefault_c, constPointerReturnValue_c, returnConstPointerValueOrDefault_c, functionPointerReturnValue_c, returnFunctionPointerValueOrDefault_c, setBoolData_c, setIntData_c, setUnsignedIntData_c, setStringData_c, setDoubleData_c, setPointerData_c, setConstPointerData_c, setFunctionPointerData_c, setDataObject_c, setDataConstObject_c, getData_c, disable_c, enable_c, ignoreOtherCalls_c, checkExpectations_c, expectedCallsLeft_c, clear_c, crashOnFailure_c, installComparator_c, installCopier_c, removeAllComparatorsAndCopiers_c }; MockExpectedCall_c* withBoolParameters_c(const char* name, int value) { expectedCall = &expectedCall->withParameter(name, (value != 0)); return &gExpectedCall; } MockExpectedCall_c* withIntParameters_c(const char* name, int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withUnsignedIntParameters_c(const char* name, unsigned int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withLongIntParameters_c(const char* name, long int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withUnsignedLongIntParameters_c(const char* name, unsigned long int value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } #ifdef CPPUTEST_USE_LONG_LONG MockExpectedCall_c* withLongLongIntParameters_c(const char* name, cpputest_longlong value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withUnsignedLongLongIntParameters_c(const char* name, cpputest_ulonglong value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } #else MockExpectedCall_c* withLongLongIntParameters_c(const char*, cpputest_longlong) { FAIL("Long Long type is not supported"); return &gExpectedCall; } MockExpectedCall_c* withUnsignedLongLongIntParameters_c(const char*, cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return &gExpectedCall; } #endif MockExpectedCall_c* withDoubleParameters_c(const char* name, double value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withDoubleParametersAndTolerance_c(const char* name, double value, double tolerance) { expectedCall = &expectedCall->withParameter(name, value, tolerance); return &gExpectedCall; } MockExpectedCall_c* withStringParameters_c(const char* name, const char* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withPointerParameters_c(const char* name, void* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withConstPointerParameters_c(const char* name, const void* value) { expectedCall = &expectedCall->withParameter(name, value); return &gExpectedCall; } MockExpectedCall_c* withFunctionPointerParameters_c(const char* name, void (*value)()) { expectedCall = &expectedCall->withParameter(name, (cpputest_cpp_function_pointer)value); return &gExpectedCall; } MockExpectedCall_c* withMemoryBufferParameters_c(const char* name, const unsigned char* value, size_t size) { expectedCall = &expectedCall->withParameter(name, value, size); return &gExpectedCall; } MockExpectedCall_c* withParameterOfType_c(const char* type, const char* name, const void* value) { expectedCall = &expectedCall->withParameterOfType(type, name, value); return &gExpectedCall; } MockExpectedCall_c* withOutputParameterReturning_c(const char* name, const void* value, size_t size) { expectedCall = &expectedCall->withOutputParameterReturning(name, value, size); return &gExpectedCall; } MockExpectedCall_c* withOutputParameterOfTypeReturning_c(const char* type, const char* name, const void* value) { expectedCall = &expectedCall->withOutputParameterOfTypeReturning(type, name, value); return &gExpectedCall; } MockExpectedCall_c* withUnmodifiedOutputParameter_c(const char* name) { expectedCall = &expectedCall->withUnmodifiedOutputParameter(name); return &gExpectedCall; } MockExpectedCall_c* ignoreOtherParameters_c() { expectedCall = &expectedCall->ignoreOtherParameters(); return &gExpectedCall; } MockExpectedCall_c* andReturnBoolValue_c(int value) { expectedCall = &expectedCall->andReturnValue(value != 0); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedIntValue_c(unsigned int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnIntValue_c(int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnLongIntValue_c(long int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedLongIntValue_c(unsigned long int value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } #ifdef CPPUTEST_USE_LONG_LONG MockExpectedCall_c* andReturnLongLongIntValue_c(cpputest_longlong value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedLongLongIntValue_c(cpputest_ulonglong value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } #else MockExpectedCall_c* andReturnLongLongIntValue_c(cpputest_longlong) { FAIL("Long Long type is not supported"); return &gExpectedCall; } MockExpectedCall_c* andReturnUnsignedLongLongIntValue_c(cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return &gExpectedCall; } #endif MockExpectedCall_c* andReturnDoubleValue_c(double value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnStringValue_c(const char* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnPointerValue_c(void* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnConstPointerValue_c(const void* value) { expectedCall = &expectedCall->andReturnValue(value); return &gExpectedCall; } MockExpectedCall_c* andReturnFunctionPointerValue_c(void (*value)()) { expectedCall = &expectedCall->andReturnValue((cpputest_cpp_function_pointer)value); return &gExpectedCall; } static MockValue_c getMockValueCFromNamedValue(const MockNamedValue& namedValue) { MockValue_c returnValue; if (SimpleString::StrCmp(namedValue.getType().asCharString(), "bool") == 0) { returnValue.type = MOCKVALUETYPE_BOOL; returnValue.value.boolValue = namedValue.getBoolValue() ? 1 : 0; } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "int") == 0) { returnValue.type = MOCKVALUETYPE_INTEGER; returnValue.value.intValue = namedValue.getIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "unsigned int") == 0) { returnValue.type = MOCKVALUETYPE_UNSIGNED_INTEGER; returnValue.value.unsignedIntValue = namedValue.getUnsignedIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "long int") == 0) { returnValue.type = MOCKVALUETYPE_LONG_INTEGER; returnValue.value.longIntValue = namedValue.getLongIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "unsigned long int") == 0) { returnValue.type = MOCKVALUETYPE_UNSIGNED_LONG_INTEGER; returnValue.value.unsignedLongIntValue = namedValue.getUnsignedLongIntValue(); } #ifdef CPPUTEST_USE_LONG_LONG else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "long long int") == 0) { returnValue.type = MOCKVALUETYPE_LONG_LONG_INTEGER; returnValue.value.longLongIntValue = namedValue.getLongLongIntValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "unsigned long long int") == 0) { returnValue.type = MOCKVALUETYPE_UNSIGNED_LONG_LONG_INTEGER; returnValue.value.unsignedLongLongIntValue = namedValue.getUnsignedLongLongIntValue(); } #endif else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "double") == 0) { returnValue.type = MOCKVALUETYPE_DOUBLE; returnValue.value.doubleValue = namedValue.getDoubleValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "const char*") == 0) { returnValue.type = MOCKVALUETYPE_STRING; returnValue.value.stringValue = namedValue.getStringValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "void*") == 0) { returnValue.type = MOCKVALUETYPE_POINTER; returnValue.value.pointerValue = namedValue.getPointerValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "const void*") == 0) { returnValue.type = MOCKVALUETYPE_CONST_POINTER; returnValue.value.constPointerValue = namedValue.getConstPointerValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "void (*)()") == 0) { returnValue.type = MOCKVALUETYPE_FUNCTIONPOINTER; returnValue.value.functionPointerValue = (void (*)()) namedValue.getFunctionPointerValue(); } else if (SimpleString::StrCmp(namedValue.getType().asCharString(), "const unsigned char*") == 0) { returnValue.type = MOCKVALUETYPE_MEMORYBUFFER; returnValue.value.memoryBufferValue = namedValue.getMemoryBuffer(); } else { returnValue.type = MOCKVALUETYPE_OBJECT; returnValue.value.objectValue = namedValue.getObjectPointer(); } return returnValue; } void strictOrder_c() { currentMockSupport->strictOrder(); } MockExpectedCall_c* expectOneCall_c(const char* name) { expectedCall = ¤tMockSupport->expectOneCall(name); return &gExpectedCall; } void expectNoCall_c(const char* name) { currentMockSupport->expectNoCall(name); } MockExpectedCall_c* expectNCalls_c(const unsigned int number, const char* name) { expectedCall = ¤tMockSupport->expectNCalls(number, name); return &gExpectedCall; } MockActualCall_c* actualCall_c(const char* name) { actualCall = ¤tMockSupport->actualCall(name); return &gActualCall; } MockActualCall_c* withActualBoolParameters_c(const char* name, int value) { actualCall = &actualCall->withParameter(name, (value != 0)); return &gActualCall; } MockActualCall_c* withActualIntParameters_c(const char* name, int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualUnsignedIntParameters_c(const char* name, unsigned int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualLongIntParameters_c(const char* name, long int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualUnsignedLongIntParameters_c(const char* name, unsigned long int value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } #ifdef CPPUTEST_USE_LONG_LONG MockActualCall_c* withActualLongLongIntParameters_c(const char* name, cpputest_longlong value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualUnsignedLongLongIntParameters_c(const char* name, cpputest_ulonglong value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } #else MockActualCall_c* withActualLongLongIntParameters_c(const char*, cpputest_longlong) { FAIL("Long Long type is not supported"); return &gActualCall; } MockActualCall_c* withActualUnsignedLongLongIntParameters_c(const char*, cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return &gActualCall; } #endif MockActualCall_c* withActualDoubleParameters_c(const char* name, double value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualStringParameters_c(const char* name, const char* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualPointerParameters_c(const char* name, void* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualConstPointerParameters_c(const char* name, const void* value) { actualCall = &actualCall->withParameter(name, value); return &gActualCall; } MockActualCall_c* withActualFunctionPointerParameters_c(const char* name, void (*value)()) { actualCall = &actualCall->withParameter(name, (cpputest_cpp_function_pointer) value); return &gActualCall; } MockActualCall_c* withActualMemoryBufferParameters_c(const char* name, const unsigned char* value, size_t size) { actualCall = &actualCall->withParameter(name, value, size); return &gActualCall; } MockActualCall_c* withActualParameterOfType_c(const char* type, const char* name, const void* value) { actualCall = &actualCall->withParameterOfType(type, name, value); return &gActualCall; } MockActualCall_c* withActualOutputParameter_c(const char* name, void* value) { actualCall = &actualCall->withOutputParameter(name, value); return &gActualCall; } MockActualCall_c* withActualOutputParameterOfType_c(const char* type, const char* name, void* value) { actualCall = &actualCall->withOutputParameterOfType(type, name, value); return &gActualCall; } MockValue_c returnValue_c() { return getMockValueCFromNamedValue(actualCall->returnValue()); } int boolReturnValue_c() { return actualCall->returnBoolValue() ? 1 : 0; } int returnBoolValueOrDefault_c(int defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return boolReturnValue_c(); } int intReturnValue_c() { return actualCall->returnIntValue(); } int returnIntValueOrDefault_c(int defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return intReturnValue_c(); } unsigned int unsignedIntReturnValue_c() { return actualCall->returnUnsignedIntValue(); } unsigned int returnUnsignedIntValueOrDefault_c(unsigned int defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return unsignedIntReturnValue_c(); } long int longIntReturnValue_c() { return actualCall->returnLongIntValue(); } long int returnLongIntValueOrDefault_c(long int defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return longIntReturnValue_c(); } unsigned long int unsignedLongIntReturnValue_c() { return actualCall->returnUnsignedLongIntValue(); } unsigned long int returnUnsignedLongIntValueOrDefault_c(unsigned long int defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return unsignedLongIntReturnValue_c(); } #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong longLongIntReturnValue_c() { return actualCall->returnLongLongIntValue(); } cpputest_longlong returnLongLongIntValueOrDefault_c(cpputest_longlong defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return longLongIntReturnValue_c(); } cpputest_ulonglong unsignedLongLongIntReturnValue_c() { return actualCall->returnUnsignedLongLongIntValue(); } cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault_c(cpputest_ulonglong defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return unsignedLongLongIntReturnValue_c(); } #else cpputest_longlong longLongIntReturnValue_c() { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_longlong returnLongLongIntValueOrDefault_c(cpputest_longlong) { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_ulonglong unsignedLongLongIntReturnValue_c() { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault_c(cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } #endif const char* stringReturnValue_c() { return actualCall->returnStringValue(); } const char* returnStringValueOrDefault_c(const char * defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return stringReturnValue_c(); } double doubleReturnValue_c() { return actualCall->returnDoubleValue(); } double returnDoubleValueOrDefault_c(double defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return doubleReturnValue_c(); } void* pointerReturnValue_c() { return actualCall->returnPointerValue(); } void* returnPointerValueOrDefault_c(void * defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return pointerReturnValue_c(); } const void* constPointerReturnValue_c() { return actualCall->returnConstPointerValue(); } const void* returnConstPointerValueOrDefault_c(const void * defaultValue) { if (!hasReturnValue_c()) { return defaultValue; } return constPointerReturnValue_c(); } void (*functionPointerReturnValue_c())() { return (void (*)()) actualCall->returnFunctionPointerValue(); } void (*returnFunctionPointerValueOrDefault_c(void (*defaultValue)()))() { if (!hasReturnValue_c()) { return defaultValue; } return functionPointerReturnValue_c(); } void disable_c() { currentMockSupport->disable(); } void enable_c() { currentMockSupport->enable(); } void ignoreOtherCalls_c() { currentMockSupport->ignoreOtherCalls(); } void setBoolData_c(const char* name, int value) { currentMockSupport->setData(name, (value != 0)); } void setIntData_c(const char* name, int value) { currentMockSupport->setData(name, value); } void setUnsignedIntData_c(const char* name, unsigned int value) { currentMockSupport->setData(name, value); } void setDoubleData_c(const char* name, double value) { currentMockSupport->setData(name, value); } void setStringData_c(const char* name, const char* value) { currentMockSupport->setData(name, value); } void setPointerData_c(const char* name, void* value) { currentMockSupport->setData(name, value); } void setConstPointerData_c(const char* name, const void* value) { currentMockSupport->setData(name, value); } void setFunctionPointerData_c(const char* name, void (*value)()) { currentMockSupport->setData(name, (cpputest_cpp_function_pointer) value); } void setDataObject_c(const char* name, const char* type, void* value) { currentMockSupport->setDataObject(name, type, value); } void setDataConstObject_c(const char* name, const char* type, const void* value) { currentMockSupport->setDataConstObject(name, type, value); } MockValue_c getData_c(const char* name) { return getMockValueCFromNamedValue(currentMockSupport->getData(name)); } int hasReturnValue_c() { return currentMockSupport->hasReturnValue(); } void checkExpectations_c() { currentMockSupport->checkExpectations(); } int expectedCallsLeft_c() { return currentMockSupport->expectedCallsLeft(); } void clear_c() { currentMockSupport->clear(); } void crashOnFailure_c(unsigned shouldCrash) { currentMockSupport->crashOnFailure(0 != shouldCrash); } MockSupport_c* mock_c() { currentMockSupport = &mock("", &failureReporterForC); return &gMockSupport; } MockSupport_c* mock_scope_c(const char* scope) { currentMockSupport = &mock(scope, &failureReporterForC); return &gMockSupport; } } cpputest-4.0/src/CppUTestExt/MockExpectedCall.cpp000644 000765 000024 00000046275 13663176127 023042 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedExpectedCall.h" MockExpectedCall::MockExpectedCall() { } MockExpectedCall::~MockExpectedCall() { } SimpleString StringFrom(const MockNamedValue& parameter) { return parameter.toString(); } void MockCheckedExpectedCall::setName(const SimpleString& name) { functionName_ = name; } SimpleString MockCheckedExpectedCall::getName() const { return functionName_; } MockCheckedExpectedCall::MockCheckedExpectedCall() : ignoreOtherParameters_(false), isActualCallMatchFinalized_(false), initialExpectedCallOrder_(NO_EXPECTED_CALL_ORDER), finalExpectedCallOrder_(NO_EXPECTED_CALL_ORDER), outOfOrder_(false), returnValue_(""), objectPtr_(NULLPTR), isSpecificObjectExpected_(false), wasPassedToObject_(true), actualCalls_(0), expectedCalls_(1) { inputParameters_ = new MockNamedValueList(); outputParameters_ = new MockNamedValueList(); } MockCheckedExpectedCall::MockCheckedExpectedCall(unsigned int numCalls) : ignoreOtherParameters_(false), isActualCallMatchFinalized_(false), initialExpectedCallOrder_(NO_EXPECTED_CALL_ORDER), finalExpectedCallOrder_(NO_EXPECTED_CALL_ORDER), outOfOrder_(false), returnValue_(""), objectPtr_(NULLPTR), isSpecificObjectExpected_(false), wasPassedToObject_(true), actualCalls_(0), expectedCalls_(numCalls) { inputParameters_ = new MockNamedValueList(); outputParameters_ = new MockNamedValueList(); } MockCheckedExpectedCall::~MockCheckedExpectedCall() { inputParameters_->clear(); delete inputParameters_; outputParameters_->clear(); delete outputParameters_; } MockExpectedCall& MockCheckedExpectedCall::withName(const SimpleString& name) { setName(name); return *this; } MockExpectedCall& MockCheckedExpectedCall::withBoolParameter(const SimpleString& name, bool value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withIntParameter(const SimpleString& name, int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withLongIntParameter(const SimpleString& name, long int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } #ifdef CPPUTEST_USE_LONG_LONG MockExpectedCall& MockCheckedExpectedCall::withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } #else MockExpectedCall& MockCheckedExpectedCall::withLongLongIntParameter(const SimpleString&, cpputest_longlong) { FAIL("Long Long type is not supported"); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnsignedLongLongIntParameter(const SimpleString&, cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return *this; } #endif MockExpectedCall& MockCheckedExpectedCall::withDoubleParameter(const SimpleString& name, double value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withDoubleParameter(const SimpleString& name, double value, double tolerance) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value, tolerance); return *this; } MockExpectedCall& MockCheckedExpectedCall::withStringParameter(const SimpleString& name, const char* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withPointerParameter(const SimpleString& name, void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withConstPointerParameter(const SimpleString& name, const void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withFunctionPointerParameter(const SimpleString& name, void (*value)()) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setMemoryBuffer(value, size); return *this; } MockExpectedCall& MockCheckedExpectedCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); inputParameters_->add(newParameter); newParameter->setConstObjectPointer(type, value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); outputParameters_->add(newParameter); newParameter->setValue(value); newParameter->setSize(size); return *this; } MockExpectedCall& MockCheckedExpectedCall::withOutputParameterOfTypeReturning(const SimpleString& type, const SimpleString& name, const void* value) { MockNamedValue* newParameter = new MockExpectedFunctionParameter(name); outputParameters_->add(newParameter); newParameter->setConstObjectPointer(type, value); return *this; } MockExpectedCall& MockCheckedExpectedCall::withUnmodifiedOutputParameter(const SimpleString& name) { return withOutputParameterReturning(name, NULLPTR, 0); } SimpleString MockCheckedExpectedCall::getInputParameterType(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? p->getType() : ""; } bool MockCheckedExpectedCall::hasInputParameterWithName(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return p != NULLPTR; } bool MockCheckedExpectedCall::hasOutputParameterWithName(const SimpleString& name) { MockNamedValue * p = outputParameters_->getValueByName(name); return p != NULLPTR; } MockNamedValue MockCheckedExpectedCall::getInputParameter(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? *p : MockNamedValue(""); } MockNamedValue MockCheckedExpectedCall::getOutputParameter(const SimpleString& name) { MockNamedValue * p = outputParameters_->getValueByName(name); return (p) ? *p : MockNamedValue(""); } bool MockCheckedExpectedCall::areParametersMatchingActualCall() { MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) if (! item(p)->isMatchingActualCall()) return false; for (p = outputParameters_->begin(); p; p = p->next()) if (! item(p)->isMatchingActualCall()) return false; return true; } MockExpectedCall& MockCheckedExpectedCall::ignoreOtherParameters() { ignoreOtherParameters_ = true; return *this; } bool MockCheckedExpectedCall::isFulfilled() { return (actualCalls_ == expectedCalls_); } bool MockCheckedExpectedCall::canMatchActualCalls() { return (actualCalls_ < expectedCalls_); } bool MockCheckedExpectedCall::isMatchingActualCallAndFinalized() { return isMatchingActualCall() && (!ignoreOtherParameters_ || isActualCallMatchFinalized_); } bool MockCheckedExpectedCall::isMatchingActualCall() { return areParametersMatchingActualCall() && wasPassedToObject_; } void MockCheckedExpectedCall::callWasMade(unsigned int callOrder) { actualCalls_++; if ( (initialExpectedCallOrder_ != NO_EXPECTED_CALL_ORDER) && ((callOrder < initialExpectedCallOrder_) || (callOrder > finalExpectedCallOrder_)) ) { outOfOrder_ = true; } resetActualCallMatchingState(); } void MockCheckedExpectedCall::finalizeActualCallMatch() { isActualCallMatchFinalized_ = true; } void MockCheckedExpectedCall::wasPassedToObject() { wasPassedToObject_ = true; } void MockCheckedExpectedCall::resetActualCallMatchingState() { wasPassedToObject_ = !isSpecificObjectExpected_; isActualCallMatchFinalized_ = false; MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) item(p)->setMatchesActualCall(false); for (p = outputParameters_->begin(); p; p = p->next()) item(p)->setMatchesActualCall(false); } void MockCheckedExpectedCall::inputParameterWasPassed(const SimpleString& name) { for (MockNamedValueListNode* p = inputParameters_->begin(); p; p = p->next()) { if (p->getName() == name) item(p)->setMatchesActualCall(true); } } void MockCheckedExpectedCall::outputParameterWasPassed(const SimpleString& name) { for (MockNamedValueListNode* p = outputParameters_->begin(); p; p = p->next()) { if (p->getName() == name) item(p)->setMatchesActualCall(true); } } SimpleString MockCheckedExpectedCall::getInputParameterValueString(const SimpleString& name) { MockNamedValue * p = inputParameters_->getValueByName(name); return (p) ? StringFrom(*p) : "failed"; } bool MockCheckedExpectedCall::hasInputParameter(const MockNamedValue& parameter) { MockNamedValue * p = inputParameters_->getValueByName(parameter.getName()); return (p) ? p->equals(parameter) : ignoreOtherParameters_; } bool MockCheckedExpectedCall::hasOutputParameter(const MockNamedValue& parameter) { MockNamedValue * p = outputParameters_->getValueByName(parameter.getName()); return (p) ? p->compatibleForCopying(parameter) : ignoreOtherParameters_; } SimpleString MockCheckedExpectedCall::callToString() { SimpleString str; if (isSpecificObjectExpected_) str = StringFromFormat("(object address: %p)::", objectPtr_); str += getName(); str += " -> "; if (initialExpectedCallOrder_ != NO_EXPECTED_CALL_ORDER) { if (initialExpectedCallOrder_ == finalExpectedCallOrder_) { str += StringFromFormat("expected call order: <%u> -> ", initialExpectedCallOrder_); } else { str += StringFromFormat("expected calls order: <%u..%u> -> ", initialExpectedCallOrder_, finalExpectedCallOrder_); } } if (inputParameters_->begin() == NULLPTR && outputParameters_->begin() == NULLPTR) { str += (ignoreOtherParameters_) ? "all parameters ignored" : "no parameters"; } else { MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) { str += StringFromFormat("%s %s: <%s>", p->getType().asCharString(), p->getName().asCharString(), getInputParameterValueString(p->getName()).asCharString()); if (p->next()) str += ", "; } if (inputParameters_->begin() && outputParameters_->begin()) { str += ", "; } for (p = outputParameters_->begin(); p; p = p->next()) { str += StringFromFormat("%s %s: ", p->getType().asCharString(), p->getName().asCharString()); if (p->next()) str += ", "; } if (ignoreOtherParameters_) str += ", other parameters are ignored"; } str += StringFromFormat(" (expected %d call%s, called %d time%s)", expectedCalls_, (expectedCalls_ == 1) ? "" : "s", actualCalls_, (actualCalls_ == 1) ? "" : "s" ); return str; } SimpleString MockCheckedExpectedCall::missingParametersToString() { SimpleString str; MockNamedValueListNode* p; for (p = inputParameters_->begin(); p; p = p->next()) { if (! item(p)->isMatchingActualCall()) { if (str != "") str += ", "; str += StringFromFormat("%s %s", p->getType().asCharString(), p->getName().asCharString()); } } for (p = outputParameters_->begin(); p; p = p->next()) { if (! item(p)->isMatchingActualCall()) { if (str != "") str += ", "; str += StringFromFormat("%s %s", p->getType().asCharString(), p->getName().asCharString()); } } return str; } bool MockCheckedExpectedCall::relatesTo(const SimpleString& functionName) { return functionName == getName(); } bool MockCheckedExpectedCall::relatesToObject(const void* objectPtr) const { return (!isSpecificObjectExpected_) || (objectPtr_ == objectPtr); } MockCheckedExpectedCall::MockExpectedFunctionParameter* MockCheckedExpectedCall::item(MockNamedValueListNode* node) { return (MockExpectedFunctionParameter*) node->item(); } MockCheckedExpectedCall::MockExpectedFunctionParameter::MockExpectedFunctionParameter(const SimpleString& name) : MockNamedValue(name), matchesActualCall_(false) { } void MockCheckedExpectedCall::MockExpectedFunctionParameter::setMatchesActualCall(bool b) { matchesActualCall_ = b; } bool MockCheckedExpectedCall::MockExpectedFunctionParameter::isMatchingActualCall() const { return matchesActualCall_; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(bool value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(unsigned int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(long int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(unsigned long int value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } #ifdef CPPUTEST_USE_LONG_LONG MockExpectedCall& MockCheckedExpectedCall::andReturnValue(cpputest_longlong value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(cpputest_ulonglong value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } #else MockExpectedCall& MockCheckedExpectedCall::andReturnValue(cpputest_longlong) { FAIL("Long Long type is not supported"); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return *this; } #endif MockExpectedCall& MockCheckedExpectedCall::andReturnValue(const char* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(double value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(void* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(const void* value) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::andReturnValue(void (*value)()) { returnValue_.setName("returnValue"); returnValue_.setValue(value); return *this; } MockExpectedCall& MockCheckedExpectedCall::onObject(void* objectPtr) { isSpecificObjectExpected_ = true; wasPassedToObject_ = false; objectPtr_ = objectPtr; return *this; } MockNamedValue MockCheckedExpectedCall::returnValue() { return returnValue_; } MockExpectedCall& MockCheckedExpectedCall::withCallOrder(unsigned int initialCallOrder, unsigned int finalCallOrder) { initialExpectedCallOrder_ = initialCallOrder; finalExpectedCallOrder_ = finalCallOrder; return *this; } bool MockCheckedExpectedCall::isOutOfOrder() const { return outOfOrder_; } unsigned int MockCheckedExpectedCall::getActualCallsFulfilled() const { return actualCalls_; } MockExpectedCall& MockIgnoredExpectedCall::instance() { static MockIgnoredExpectedCall call; return call; } cpputest-4.0/src/CppUTestExt/MockActualCall.cpp000644 000765 000024 00000066646 13663176127 022516 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "CppUTest/PlatformSpecificFunctions.h" MockActualCall::MockActualCall() { } MockActualCall::~MockActualCall() { } void MockCheckedActualCall::setName(const SimpleString& name) { functionName_ = name; } SimpleString MockCheckedActualCall::getName() const { return functionName_; } MockCheckedActualCall::MockCheckedActualCall(unsigned int callOrder, MockFailureReporter* reporter, const MockExpectedCallsList& allExpectations) : callOrder_(callOrder), reporter_(reporter), state_(CALL_SUCCEED), expectationsChecked_(false), matchingExpectation_(NULLPTR), allExpectations_(allExpectations), outputParameterExpectations_(NULLPTR) { potentiallyMatchingExpectations_.addPotentiallyMatchingExpectations(allExpectations); } MockCheckedActualCall::~MockCheckedActualCall() { cleanUpOutputParameterList(); } void MockCheckedActualCall::setMockFailureReporter(MockFailureReporter* reporter) { reporter_ = reporter; } UtestShell* MockCheckedActualCall::getTest() const { return reporter_->getTestToFail(); } void MockCheckedActualCall::failTest(const MockFailure& failure) { if (!hasFailed()) { setState(CALL_FAILED); reporter_->failTest(failure); } } void MockCheckedActualCall::copyOutputParameters(MockCheckedExpectedCall* expectedCall) { for (MockOutputParametersListNode* p = outputParameterExpectations_; p; p = p->next_) { MockNamedValue outputParameter = expectedCall->getOutputParameter(p->name_); MockNamedValueCopier* copier = outputParameter.getCopier(); if (copier) { copier->copy(p->ptr_, outputParameter.getConstObjectPointer()); } else if ((outputParameter.getType() == "const void*") && (p->type_ == "void*")) { const void* data = outputParameter.getConstPointerValue(); size_t size = outputParameter.getSize(); PlatformSpecificMemCpy(p->ptr_, data, size); } else if (outputParameter.getName() != "") { SimpleString type = expectedCall->getOutputParameter(p->name_).getType(); MockNoWayToCopyCustomTypeFailure failure(getTest(), type); failTest(failure); } } } void MockCheckedActualCall::completeCallWhenMatchIsFound() { // Expectations that don't ignore parameters have higher fulfillment preference than those that ignore parameters matchingExpectation_ = potentiallyMatchingExpectations_.removeFirstFinalizedMatchingExpectation(); if (matchingExpectation_) { copyOutputParameters(matchingExpectation_); callHasSucceeded(); } else { MockCheckedExpectedCall* matchingExpectationWithIgnoredParameters = potentiallyMatchingExpectations_.getFirstMatchingExpectation(); if (matchingExpectationWithIgnoredParameters) { copyOutputParameters(matchingExpectationWithIgnoredParameters); } } } void MockCheckedActualCall::callHasSucceeded() { setState(CALL_SUCCEED); } void MockCheckedActualCall::discardCurrentlyMatchingExpectations() { if (matchingExpectation_) { matchingExpectation_->resetActualCallMatchingState(); matchingExpectation_ = NULLPTR; } potentiallyMatchingExpectations_.onlyKeepUnmatchingExpectations(); } MockActualCall& MockCheckedActualCall::withName(const SimpleString& name) { setName(name); setState(CALL_IN_PROGRESS); potentiallyMatchingExpectations_.onlyKeepExpectationsRelatedTo(name); if (potentiallyMatchingExpectations_.isEmpty()) { MockUnexpectedCallHappenedFailure failure(getTest(), name, allExpectations_); failTest(failure); return *this; } completeCallWhenMatchIsFound(); return *this; } MockActualCall& MockCheckedActualCall::withCallOrder(unsigned int) { return *this; } void MockCheckedActualCall::checkInputParameter(const MockNamedValue& actualParameter) { if(hasFailed()) { return; } setState(CALL_IN_PROGRESS); discardCurrentlyMatchingExpectations(); potentiallyMatchingExpectations_.onlyKeepExpectationsWithInputParameter(actualParameter); if (potentiallyMatchingExpectations_.isEmpty()) { MockUnexpectedInputParameterFailure failure(getTest(), getName(), actualParameter, allExpectations_); failTest(failure); return; } potentiallyMatchingExpectations_.parameterWasPassed(actualParameter.getName()); completeCallWhenMatchIsFound(); } void MockCheckedActualCall::checkOutputParameter(const MockNamedValue& outputParameter) { if(hasFailed()) { return; } setState(CALL_IN_PROGRESS); discardCurrentlyMatchingExpectations(); potentiallyMatchingExpectations_.onlyKeepExpectationsWithOutputParameter(outputParameter); if (potentiallyMatchingExpectations_.isEmpty()) { MockUnexpectedOutputParameterFailure failure(getTest(), getName(), outputParameter, allExpectations_); failTest(failure); return; } potentiallyMatchingExpectations_.outputParameterWasPassed(outputParameter.getName()); completeCallWhenMatchIsFound(); } MockActualCall& MockCheckedActualCall::withBoolParameter(const SimpleString& name, bool value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withIntParameter(const SimpleString& name, int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withLongIntParameter(const SimpleString& name, long int value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } #ifdef CPPUTEST_USE_LONG_LONG MockActualCall& MockCheckedActualCall::withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } #else MockActualCall& MockCheckedActualCall::withUnsignedLongLongIntParameter(const SimpleString&, cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return *this; } MockActualCall& MockCheckedActualCall::withLongLongIntParameter(const SimpleString&, cpputest_longlong) { FAIL("Long Long type is not supported"); return *this; } #endif MockActualCall& MockCheckedActualCall::withDoubleParameter(const SimpleString& name, double value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withStringParameter(const SimpleString& name, const char* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withPointerParameter(const SimpleString& name, void* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withConstPointerParameter(const SimpleString& name, const void* value) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withFunctionPointerParameter(const SimpleString& name, void (*value)()) { MockNamedValue actualParameter(name); actualParameter.setValue(value); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) { MockNamedValue actualParameter(name); actualParameter.setMemoryBuffer(value, size); checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) { MockNamedValue actualParameter(name); actualParameter.setConstObjectPointer(type, value); if (actualParameter.getComparator() == NULLPTR) { MockNoWayToCompareCustomTypeFailure failure(getTest(), type); failTest(failure); return *this; } checkInputParameter(actualParameter); return *this; } MockActualCall& MockCheckedActualCall::withOutputParameter(const SimpleString& name, void* output) { addOutputParameter(name, "void*", output); MockNamedValue outputParameter(name); outputParameter.setValue(output); checkOutputParameter(outputParameter); return *this; } MockActualCall& MockCheckedActualCall::withOutputParameterOfType(const SimpleString& type, const SimpleString& name, void* output) { addOutputParameter(name, type, output); MockNamedValue outputParameter(name); outputParameter.setConstObjectPointer(type, output); checkOutputParameter(outputParameter); return *this; } bool MockCheckedActualCall::isFulfilled() const { return state_ == CALL_SUCCEED; } bool MockCheckedActualCall::hasFailed() const { return state_ == CALL_FAILED; } void MockCheckedActualCall::checkExpectations() { if(expectationsChecked_) { return; } expectationsChecked_ = true; if (state_ != CALL_IN_PROGRESS) { if(state_ == CALL_SUCCEED) { matchingExpectation_->callWasMade(callOrder_); } potentiallyMatchingExpectations_.resetActualCallMatchingState(); return; } if (potentiallyMatchingExpectations_.hasFinalizedMatchingExpectations()) FAIL("Actual call is in progress, but there are finalized matching expectations when checking expectations. This cannot happen."); // LCOV_EXCL_LINE matchingExpectation_ = potentiallyMatchingExpectations_.removeFirstMatchingExpectation(); if (matchingExpectation_) { matchingExpectation_->finalizeActualCallMatch(); callHasSucceeded(); matchingExpectation_->callWasMade(callOrder_); potentiallyMatchingExpectations_.resetActualCallMatchingState(); return; } if (potentiallyMatchingExpectations_.hasUnmatchingExpectationsBecauseOfMissingParameters()) { MockExpectedParameterDidntHappenFailure failure(getTest(), getName(), allExpectations_); failTest(failure); } else { MockExpectedObjectDidntHappenFailure failure(getTest(), getName(), allExpectations_); failTest(failure); } } void MockCheckedActualCall::setState(ActualCallState state) { state_ = state; } MockNamedValue MockCheckedActualCall::returnValue() { checkExpectations(); if (matchingExpectation_) return matchingExpectation_->returnValue(); return MockNamedValue("no return value"); } bool MockCheckedActualCall::returnBoolValueOrDefault(bool default_value) { if (!hasReturnValue()) { return default_value; } return returnBoolValue(); } bool MockCheckedActualCall::returnBoolValue() { return returnValue().getBoolValue(); } int MockCheckedActualCall::returnIntValueOrDefault(int default_value) { if (!hasReturnValue()) { return default_value; } return returnIntValue(); } int MockCheckedActualCall::returnIntValue() { return returnValue().getIntValue(); } unsigned long int MockCheckedActualCall::returnUnsignedLongIntValue() { return returnValue().getUnsignedLongIntValue(); } unsigned long int MockCheckedActualCall::returnUnsignedLongIntValueOrDefault(unsigned long int default_value) { if (!hasReturnValue()) { return default_value; } return returnUnsignedLongIntValue(); } long int MockCheckedActualCall::returnLongIntValue() { return returnValue().getLongIntValue(); } long int MockCheckedActualCall::returnLongIntValueOrDefault(long int default_value) { if (!hasReturnValue()) { return default_value; } return returnLongIntValue(); } #ifdef CPPUTEST_USE_LONG_LONG cpputest_ulonglong MockCheckedActualCall::returnUnsignedLongLongIntValue() { return returnValue().getUnsignedLongLongIntValue(); } cpputest_ulonglong MockCheckedActualCall::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong default_value) { if (!hasReturnValue()) { return default_value; } return returnUnsignedLongLongIntValue(); } cpputest_longlong MockCheckedActualCall::returnLongLongIntValue() { return returnValue().getLongLongIntValue(); } cpputest_longlong MockCheckedActualCall::returnLongLongIntValueOrDefault(cpputest_longlong default_value) { if (!hasReturnValue()) { return default_value; } return returnLongLongIntValue(); } #else cpputest_ulonglong MockCheckedActualCall::returnUnsignedLongLongIntValue() { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } cpputest_ulonglong MockCheckedActualCall::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong default_value) { FAIL("Unsigned Long Long type is not supported"); return default_value; } cpputest_longlong MockCheckedActualCall::returnLongLongIntValue() { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_longlong MockCheckedActualCall::returnLongLongIntValueOrDefault(cpputest_longlong default_value) { FAIL("Long Long type is not supported"); return default_value; } #endif double MockCheckedActualCall::returnDoubleValue() { return returnValue().getDoubleValue(); } double MockCheckedActualCall::returnDoubleValueOrDefault(double default_value) { if (!hasReturnValue()) { return default_value; } return returnDoubleValue(); } unsigned int MockCheckedActualCall::returnUnsignedIntValue() { return returnValue().getUnsignedIntValue(); } unsigned int MockCheckedActualCall::returnUnsignedIntValueOrDefault(unsigned int default_value) { if (!hasReturnValue()) { return default_value; } return returnUnsignedIntValue(); } void * MockCheckedActualCall::returnPointerValueOrDefault(void * default_value) { if (!hasReturnValue()) { return default_value; } return returnPointerValue(); } void * MockCheckedActualCall::returnPointerValue() { return returnValue().getPointerValue(); } const void * MockCheckedActualCall::returnConstPointerValue() { return returnValue().getConstPointerValue(); } const void * MockCheckedActualCall::returnConstPointerValueOrDefault(const void * default_value) { if (!hasReturnValue()) { return default_value; } return returnConstPointerValue(); } void (*MockCheckedActualCall::returnFunctionPointerValue())() { return returnValue().getFunctionPointerValue(); } void (*MockCheckedActualCall::returnFunctionPointerValueOrDefault(void (*default_value)()))() { if (!hasReturnValue()) { return default_value; } return returnFunctionPointerValue(); } const char * MockCheckedActualCall::returnStringValueOrDefault(const char * default_value) { if (!hasReturnValue()) { return default_value; } return returnStringValue(); } const char * MockCheckedActualCall::returnStringValue() { return returnValue().getStringValue(); } bool MockCheckedActualCall::hasReturnValue() { return ! returnValue().getName().isEmpty(); } MockActualCall& MockCheckedActualCall::onObject(const void* objectPtr) { if(hasFailed()) { return *this; } // Currently matching expectations are not discarded because the passed object // is ignored if not specifically set in the expectation potentiallyMatchingExpectations_.onlyKeepExpectationsOnObject(objectPtr); if ((!matchingExpectation_) && potentiallyMatchingExpectations_.isEmpty()) { MockUnexpectedObjectFailure failure(getTest(), getName(), objectPtr, allExpectations_); failTest(failure); return *this; } potentiallyMatchingExpectations_.wasPassedToObject(); if (!matchingExpectation_) { completeCallWhenMatchIsFound(); } return *this; } void MockCheckedActualCall::addOutputParameter(const SimpleString& name, const SimpleString& type, void* ptr) { MockOutputParametersListNode* newNode = new MockOutputParametersListNode(name, type, ptr); if (outputParameterExpectations_ == NULLPTR) outputParameterExpectations_ = newNode; else { MockOutputParametersListNode* lastNode = outputParameterExpectations_; while (lastNode->next_) lastNode = lastNode->next_; lastNode->next_ = newNode; } } void MockCheckedActualCall::cleanUpOutputParameterList() { MockOutputParametersListNode* current = outputParameterExpectations_; MockOutputParametersListNode* toBeDeleted = NULLPTR; while (current) { toBeDeleted = current; outputParameterExpectations_ = current = current->next_; delete toBeDeleted; } } MockActualCallTrace::MockActualCallTrace() { } MockActualCallTrace::~MockActualCallTrace() { } MockActualCall& MockActualCallTrace::withName(const SimpleString& name) { traceBuffer_ += "\nFunction name:"; traceBuffer_ += name; return *this; } MockActualCall& MockActualCallTrace::withCallOrder(unsigned int callOrder) { traceBuffer_ += " withCallOrder:"; traceBuffer_ += StringFrom(callOrder); return *this; } void MockActualCallTrace::addParameterName(const SimpleString& name) { traceBuffer_ += " "; traceBuffer_ += name; traceBuffer_ += ":"; } MockActualCall& MockActualCallTrace::withBoolParameter(const SimpleString& name, bool value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withUnsignedIntParameter(const SimpleString& name, unsigned int value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withIntParameter(const SimpleString& name, int value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withLongIntParameter(const SimpleString& name, long int value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } #ifdef CPPUTEST_USE_LONG_LONG MockActualCall& MockActualCallTrace::withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) { addParameterName(name); traceBuffer_ += StringFrom(value) + " " + BracketsFormattedHexStringFrom(value); return *this; } #else MockActualCall& MockActualCallTrace::withUnsignedLongLongIntParameter(const SimpleString&, cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return *this; } MockActualCall& MockActualCallTrace::withLongLongIntParameter(const SimpleString&, cpputest_longlong) { FAIL("Long Long type is not supported"); return *this; } #endif MockActualCall& MockActualCallTrace::withDoubleParameter(const SimpleString& name, double value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withStringParameter(const SimpleString& name, const char* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withPointerParameter(const SimpleString& name, void* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withConstPointerParameter(const SimpleString& name, const void* value) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withFunctionPointerParameter(const SimpleString& name, void (*value)()) { addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) { addParameterName(name); traceBuffer_ += StringFromBinaryWithSizeOrNull(value, size); return *this; } MockActualCall& MockActualCallTrace::withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) { traceBuffer_ += " "; traceBuffer_ += typeName; addParameterName(name); traceBuffer_ += StringFrom(value); return *this; } MockActualCall& MockActualCallTrace::withOutputParameter(const SimpleString& name, void* output) { addParameterName(name); traceBuffer_ += StringFrom(output); return *this; } MockActualCall& MockActualCallTrace::withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output) { traceBuffer_ += " "; traceBuffer_ += typeName; addParameterName(name); traceBuffer_ += StringFrom(output); return *this; } bool MockActualCallTrace::hasReturnValue() { return false; } MockNamedValue MockActualCallTrace::returnValue() { return MockNamedValue(""); } long int MockActualCallTrace::returnLongIntValue() { return 0; } unsigned long int MockActualCallTrace::returnUnsignedLongIntValue() { return 0; } unsigned long int MockActualCallTrace::returnUnsignedLongIntValueOrDefault(unsigned long) { return 0; } long int MockActualCallTrace::returnLongIntValueOrDefault(long int) { return 0; } #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong MockActualCallTrace::returnLongLongIntValue() { return 0; } cpputest_ulonglong MockActualCallTrace::returnUnsignedLongLongIntValue() { return 0; } cpputest_ulonglong MockActualCallTrace::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong) { return 0; } cpputest_longlong MockActualCallTrace::returnLongLongIntValueOrDefault(cpputest_longlong) { return 0; } #else cpputest_longlong MockActualCallTrace::returnLongLongIntValue() { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_ulonglong MockActualCallTrace::returnUnsignedLongLongIntValue() { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } cpputest_ulonglong MockActualCallTrace::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong) { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } cpputest_longlong MockActualCallTrace::returnLongLongIntValueOrDefault(cpputest_longlong) { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } #endif bool MockActualCallTrace::returnBoolValue() { return false; } bool MockActualCallTrace::returnBoolValueOrDefault(bool) { return false; } int MockActualCallTrace::returnIntValue() { return 0; } double MockActualCallTrace::returnDoubleValue() { return 0.0; } double MockActualCallTrace::returnDoubleValueOrDefault(double) { return returnDoubleValue(); } unsigned int MockActualCallTrace::returnUnsignedIntValue() { return 0; } void * MockActualCallTrace::returnPointerValue() { return NULLPTR; } const void * MockActualCallTrace::returnConstPointerValue() { return NULLPTR; } void (*MockActualCallTrace::returnFunctionPointerValue())() { return NULLPTR; } const void * MockActualCallTrace::returnConstPointerValueOrDefault(const void *) { return returnConstPointerValue(); } void * MockActualCallTrace::returnPointerValueOrDefault(void *) { return returnPointerValue(); } void (*MockActualCallTrace::returnFunctionPointerValueOrDefault(void (*)()))() { return returnFunctionPointerValue(); } const char * MockActualCallTrace::returnStringValue() { return ""; } const char * MockActualCallTrace::returnStringValueOrDefault(const char *) { return returnStringValue(); } int MockActualCallTrace::returnIntValueOrDefault(int) { return 0; } unsigned int MockActualCallTrace::returnUnsignedIntValueOrDefault(unsigned int) { return returnUnsignedIntValue(); } MockActualCall& MockActualCallTrace::onObject(const void* objectPtr) { traceBuffer_ += " onObject:"; traceBuffer_ += StringFrom(objectPtr); return *this; } void MockActualCallTrace::clear() { traceBuffer_ = ""; } const char* MockActualCallTrace::getTraceOutput() { return traceBuffer_.asCharString(); } MockActualCallTrace* MockActualCallTrace::instance_ = NULLPTR; MockActualCallTrace& MockActualCallTrace::instance() { if (instance_ == NULLPTR) instance_ = new MockActualCallTrace; return *instance_; } void MockActualCallTrace::clearInstance() { delete instance_; instance_ = NULLPTR; } MockIgnoredActualCall& MockIgnoredActualCall::instance() { static MockIgnoredActualCall call; return call; } cpputest-4.0/src/CppUTestExt/MemoryReportFormatter.cpp000644 000765 000024 00000006613 13663176127 024213 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" NormalMemoryReportFormatter::NormalMemoryReportFormatter() { } NormalMemoryReportFormatter::~NormalMemoryReportFormatter() { } void NormalMemoryReportFormatter::report_test_start(TestResult* result, UtestShell& test) { result->print(StringFromFormat("TEST(%s, %s)\n", test.getGroup().asCharString(), test.getName().asCharString()).asCharString()); } void NormalMemoryReportFormatter::report_test_end(TestResult* result, UtestShell& test) { result->print(StringFromFormat("ENDTEST(%s, %s)\n", test.getGroup().asCharString(), test.getName().asCharString()).asCharString()); } void NormalMemoryReportFormatter::report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, size_t line) { result->print(StringFromFormat("\tAllocation using %s of size: %lu pointer: %p at %s:%d\n", allocator->alloc_name(), (unsigned long) size, (void*) memory, file, (int) line).asCharString()); } void NormalMemoryReportFormatter::report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, size_t line) { result->print(StringFromFormat("\tDeallocation using %s of pointer: %p at %s:%d\n", allocator->free_name(), (void*) memory, file, (int) line).asCharString()); } void NormalMemoryReportFormatter::report_testgroup_start(TestResult* result, UtestShell& test) { const size_t line_size = 80; SimpleString groupName = StringFromFormat("TEST GROUP(%s)", test.getGroup().asCharString()); size_t beginPos = (line_size/2) - (groupName.size()/2); SimpleString line("-", beginPos); line += groupName; line += SimpleString("-", line_size - line.size()); line += "\n"; result->print(line.asCharString()); } cpputest-4.0/src/CppUTestExt/MockSupportPlugin.cpp000644 000765 000024 00000006144 13663176127 023327 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupportPlugin.h" class MockSupportPluginReporter : public MockFailureReporter { UtestShell& test_; TestResult& result_; public: MockSupportPluginReporter(UtestShell& test, TestResult& result) : test_(test), result_(result) { } virtual void failTest(const MockFailure& failure) _override { result_.addFailure(failure); } virtual UtestShell* getTestToFail() _override { return &test_; } }; MockSupportPlugin::MockSupportPlugin(const SimpleString& name) : TestPlugin(name) { } MockSupportPlugin::~MockSupportPlugin() { clear(); } void MockSupportPlugin::clear() { repository_.clear(); } void MockSupportPlugin::preTestAction(UtestShell&, TestResult&) { mock().installComparatorsAndCopiers(repository_); } void MockSupportPlugin::postTestAction(UtestShell& test, TestResult& result) { MockSupportPluginReporter reporter(test, result); mock().setMockFailureStandardReporter(&reporter); if (!test.hasFailed()) mock().checkExpectations(); mock().clear(); mock().setMockFailureStandardReporter(NULLPTR); mock().removeAllComparatorsAndCopiers(); } void MockSupportPlugin::installComparator(const SimpleString& name, MockNamedValueComparator& comparator) { repository_.installComparator(name, comparator); } void MockSupportPlugin::installCopier(const SimpleString& name, MockNamedValueCopier& copier) { repository_.installCopier(name, copier); } cpputest-4.0/src/CppUTestExt/MemoryReportAllocator.cpp000644 000765 000024 00000006304 13663176127 024165 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" MemoryReportAllocator::MemoryReportAllocator() : result_(NULLPTR), realAllocator_(NULLPTR), formatter_(NULLPTR) { } MemoryReportAllocator::~MemoryReportAllocator() { } const char* MemoryReportAllocator::name() const { return "MemoryReporterAllocator"; } const char* MemoryReportAllocator::alloc_name() const { return realAllocator_->alloc_name(); } const char* MemoryReportAllocator::free_name() const { return realAllocator_->free_name(); } void MemoryReportAllocator::setRealAllocator(TestMemoryAllocator* allocator) { realAllocator_ = allocator; } TestMemoryAllocator* MemoryReportAllocator::getRealAllocator() { return realAllocator_; } TestMemoryAllocator* MemoryReportAllocator::actualAllocator() { return realAllocator_->actualAllocator(); } void MemoryReportAllocator::setTestResult(TestResult* result) { result_ = result; } void MemoryReportAllocator::setFormatter(MemoryReportFormatter* formatter) { formatter_ = formatter; } char* MemoryReportAllocator::alloc_memory(size_t size, const char* file, size_t line) { char* memory = realAllocator_->alloc_memory(size, file, line); if (result_ && formatter_) formatter_->report_alloc_memory(result_, this, size, memory, file, line); return memory; } void MemoryReportAllocator::free_memory(char* memory, size_t size, const char* file, size_t line) { realAllocator_->free_memory(memory, size, file, line); if (result_ && formatter_) formatter_->report_free_memory(result_, this, memory, file, line); } cpputest-4.0/src/CppUTestExt/IEEE754ExceptionsPlugin.cpp000644 000765 000024 00000010607 13663176127 024051 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2015, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/IEEE754ExceptionsPlugin.h" #ifdef CPPUTEST_HAVE_FENV extern "C" { #include } #define IEEE754_CHECK_CLEAR(test, result, flag) ieee754Check(test, result, flag, #flag) bool IEEE754ExceptionsPlugin::inexactDisabled_ = true; IEEE754ExceptionsPlugin::IEEE754ExceptionsPlugin(const SimpleString& name) : TestPlugin(name) { } void IEEE754ExceptionsPlugin::preTestAction(UtestShell&, TestResult&) { CHECK(!feclearexcept(FE_ALL_EXCEPT)); } void IEEE754ExceptionsPlugin::postTestAction(UtestShell& test, TestResult& result) { if(!test.hasFailed()) { IEEE754_CHECK_CLEAR(test, result, FE_DIVBYZERO); IEEE754_CHECK_CLEAR(test, result, FE_OVERFLOW); IEEE754_CHECK_CLEAR(test, result, FE_UNDERFLOW); IEEE754_CHECK_CLEAR(test, result, FE_INVALID); // LCOV_EXCL_LINE (not all platforms support this) IEEE754_CHECK_CLEAR(test, result, FE_INEXACT); } } void IEEE754ExceptionsPlugin::disableInexact() { inexactDisabled_ = true; } void IEEE754ExceptionsPlugin::enableInexact() { inexactDisabled_ = false; } bool IEEE754ExceptionsPlugin::checkIeee754OverflowExceptionFlag() { return fetestexcept(FE_OVERFLOW) != 0; } bool IEEE754ExceptionsPlugin::checkIeee754UnderflowExceptionFlag() { return fetestexcept(FE_UNDERFLOW) != 0; } bool IEEE754ExceptionsPlugin::checkIeee754InexactExceptionFlag() { return fetestexcept(FE_INEXACT) != 0; } bool IEEE754ExceptionsPlugin::checkIeee754DivByZeroExceptionFlag() { return fetestexcept(FE_DIVBYZERO) != 0; } void IEEE754ExceptionsPlugin::ieee754Check(UtestShell& test, TestResult& result, int flag, const char* text) { result.countCheck(); if(inexactDisabled_) CHECK(!feclearexcept(FE_INEXACT)); if(fetestexcept(flag)) { CHECK(!feclearexcept(FE_ALL_EXCEPT)); CheckFailure failure(&test, __FILE__, __LINE__, "IEEE754_CHECK_CLEAR", text); result.addFailure(failure); } } #else bool IEEE754ExceptionsPlugin::inexactDisabled_ = true; IEEE754ExceptionsPlugin::IEEE754ExceptionsPlugin(const SimpleString& name) : TestPlugin(name) { } void IEEE754ExceptionsPlugin::preTestAction(UtestShell&, TestResult&) { } void IEEE754ExceptionsPlugin::postTestAction(UtestShell&, TestResult&) { } void IEEE754ExceptionsPlugin::disableInexact() { } void IEEE754ExceptionsPlugin::enableInexact() { } bool IEEE754ExceptionsPlugin::checkIeee754OverflowExceptionFlag() { return false; } bool IEEE754ExceptionsPlugin::checkIeee754UnderflowExceptionFlag() { return false; } bool IEEE754ExceptionsPlugin::checkIeee754InexactExceptionFlag() { return false; } bool IEEE754ExceptionsPlugin::checkIeee754DivByZeroExceptionFlag() { return false; } void IEEE754ExceptionsPlugin::ieee754Check(UtestShell&, TestResult&, int, const char*) { } #endif cpputest-4.0/src/CppUTestExt/MockSupport.cpp000644 000765 000024 00000044752 13663176127 022157 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockActualCall.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockFailure.h" #define MOCK_SUPPORT_SCOPE_PREFIX "!!!$$$MockingSupportScope$$$!!!" static MockSupport global_mock; MockSupport& mock(const SimpleString& mockName, MockFailureReporter* failureReporterForThisCall) { MockSupport& mock_support = (mockName != "") ? *global_mock.getMockSupportScope(mockName) : global_mock; mock_support.setActiveReporter(failureReporterForThisCall); mock_support.setDefaultComparatorsAndCopiersRepository(); return mock_support; } MockSupport::MockSupport(const SimpleString& mockName) : actualCallOrder_(0), expectedCallOrder_(0), strictOrdering_(false), standardReporter_(&defaultReporter_), ignoreOtherCalls_(false), enabled_(true), lastActualFunctionCall_(NULLPTR), mockName_(mockName), tracing_(false) { setActiveReporter(NULLPTR); } MockSupport::~MockSupport() { } void MockSupport::crashOnFailure(bool shouldCrash) { activeReporter_->crashOnFailure(shouldCrash); } void MockSupport::setMockFailureStandardReporter(MockFailureReporter* reporter) { standardReporter_ = (reporter != NULLPTR) ? reporter : &defaultReporter_; if (lastActualFunctionCall_) lastActualFunctionCall_->setMockFailureReporter(standardReporter_); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->setMockFailureStandardReporter(standardReporter_); } void MockSupport::setActiveReporter(MockFailureReporter* reporter) { activeReporter_ = (reporter) ? reporter : standardReporter_; } void MockSupport::setDefaultComparatorsAndCopiersRepository() { MockNamedValue::setDefaultComparatorsAndCopiersRepository(&comparatorsAndCopiersRepository_); } void MockSupport::installComparator(const SimpleString& typeName, MockNamedValueComparator& comparator) { comparatorsAndCopiersRepository_.installComparator(typeName, comparator); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->installComparator(typeName, comparator); } void MockSupport::installCopier(const SimpleString& typeName, MockNamedValueCopier& copier) { comparatorsAndCopiersRepository_.installCopier(typeName, copier); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->installCopier(typeName, copier); } void MockSupport::installComparatorsAndCopiers(const MockNamedValueComparatorsAndCopiersRepository& repository) { comparatorsAndCopiersRepository_.installComparatorsAndCopiers(repository); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->installComparatorsAndCopiers(repository); } void MockSupport::removeAllComparatorsAndCopiers() { comparatorsAndCopiersRepository_.clear(); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->removeAllComparatorsAndCopiers(); } void MockSupport::clear() { delete lastActualFunctionCall_; lastActualFunctionCall_ = NULLPTR; tracing_ = false; MockActualCallTrace::clearInstance(); expectations_.deleteAllExpectationsAndClearList(); ignoreOtherCalls_ = false; enabled_ = true; actualCallOrder_ = 0; expectedCallOrder_ = 0; strictOrdering_ = false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) { MockSupport* support = getMockSupport(p); if (support) { support->clear(); delete support; } } data_.clear(); } void MockSupport::strictOrder() { strictOrdering_ = true; } SimpleString MockSupport::appendScopeToName(const SimpleString& functionName) { if (mockName_.isEmpty()) return functionName; return mockName_ + "::" + functionName; } MockExpectedCall& MockSupport::expectOneCall(const SimpleString& functionName) { return expectNCalls(1, functionName); } void MockSupport::expectNoCall(const SimpleString& functionName) { expectNCalls(0, functionName); } MockExpectedCall& MockSupport::expectNCalls(unsigned int amount, const SimpleString& functionName) { if (!enabled_) return MockIgnoredExpectedCall::instance(); countCheck(); MockCheckedExpectedCall* call = new MockCheckedExpectedCall(amount); call->withName(appendScopeToName(functionName)); if (strictOrdering_) { call->withCallOrder(expectedCallOrder_ + 1, expectedCallOrder_ + amount); expectedCallOrder_ += amount; } expectations_.addExpectedCall(call); return *call; } MockCheckedActualCall* MockSupport::createActualCall() { lastActualFunctionCall_ = new MockCheckedActualCall(++actualCallOrder_, activeReporter_, expectations_); return lastActualFunctionCall_; } bool MockSupport::callIsIgnored(const SimpleString& functionName) { return ignoreOtherCalls_ && !expectations_.hasExpectationWithName(functionName); } MockActualCall& MockSupport::actualCall(const SimpleString& functionName) { const SimpleString scopeFunctionName = appendScopeToName(functionName); if (lastActualFunctionCall_) { lastActualFunctionCall_->checkExpectations(); delete lastActualFunctionCall_; lastActualFunctionCall_ = NULLPTR; } if (!enabled_) return MockIgnoredActualCall::instance(); if (tracing_) return MockActualCallTrace::instance().withName(scopeFunctionName); if (callIsIgnored(scopeFunctionName)) { return MockIgnoredActualCall::instance(); } MockCheckedActualCall* call = createActualCall(); call->withName(scopeFunctionName); return *call; } void MockSupport::ignoreOtherCalls() { ignoreOtherCalls_ = true; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->ignoreOtherCalls(); } void MockSupport::disable() { enabled_ = false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->disable(); } void MockSupport::enable() { enabled_ = true; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->enable(); } void MockSupport::tracing(bool enabled) { tracing_ = enabled; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) getMockSupport(p)->tracing(enabled); } const char* MockSupport::getTraceOutput() { return MockActualCallTrace::instance().getTraceOutput(); } bool MockSupport::expectedCallsLeft() { int callsLeft = expectations_.hasUnfulfilledExpectations(); for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p)) callsLeft += getMockSupport(p)->expectedCallsLeft(); return callsLeft != 0; } bool MockSupport::wasLastActualCallFulfilled() { if (lastActualFunctionCall_ && !lastActualFunctionCall_->isFulfilled()) return false; for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p) && !getMockSupport(p)->wasLastActualCallFulfilled()) return false; return true; } void MockSupport::failTestWithExpectedCallsNotFulfilled() { MockExpectedCallsList expectationsList; expectationsList.addExpectations(expectations_); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p)) expectationsList.addExpectations(getMockSupport(p)->expectations_); MockExpectedCallsDidntHappenFailure failure(activeReporter_->getTestToFail(), expectationsList); failTest(failure); } void MockSupport::failTestWithOutOfOrderCalls() { MockExpectedCallsList expectationsList; expectationsList.addExpectations(expectations_); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p)) expectationsList.addExpectations(getMockSupport(p)->expectations_); MockCallOrderFailure failure(activeReporter_->getTestToFail(), expectationsList); failTest(failure); } void MockSupport::failTest(MockFailure& failure) { clear(); activeReporter_->failTest(failure); } void MockSupport::countCheck() { UtestShell::getCurrent()->countCheck(); } void MockSupport::checkExpectationsOfLastActualCall() { if(lastActualFunctionCall_) lastActualFunctionCall_->checkExpectations(); for(MockNamedValueListNode *p = data_.begin();p;p = p->next()) if(getMockSupport(p) && getMockSupport(p)->lastActualFunctionCall_) getMockSupport(p)->lastActualFunctionCall_->checkExpectations(); } bool MockSupport::hasCallsOutOfOrder() { if (expectations_.hasCallsOutOfOrder()) { return true; } for (MockNamedValueListNode* p = data_.begin(); p; p = p->next()) if (getMockSupport(p) && getMockSupport(p)->hasCallsOutOfOrder()) { return true; } return false; } void MockSupport::checkExpectations() { checkExpectationsOfLastActualCall(); if (wasLastActualCallFulfilled() && expectedCallsLeft()) failTestWithExpectedCallsNotFulfilled(); if (hasCallsOutOfOrder()) failTestWithOutOfOrderCalls(); } bool MockSupport::hasData(const SimpleString& name) { return data_.getValueByName(name) != NULLPTR; } MockNamedValue* MockSupport::retrieveDataFromStore(const SimpleString& name) { MockNamedValue* newData = data_.getValueByName(name); if (newData == NULLPTR) { newData = new MockNamedValue(name); data_.add(newData); } return newData; } void MockSupport::setData(const SimpleString& name, bool value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, unsigned int value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, int value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, const char* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, double value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, const void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setData(const SimpleString& name, void (*value)()) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setValue(value); } void MockSupport::setDataObject(const SimpleString& name, const SimpleString& type, void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setObjectPointer(type, value); } void MockSupport::setDataConstObject(const SimpleString& name, const SimpleString& type, const void* value) { MockNamedValue* newData = retrieveDataFromStore(name); newData->setConstObjectPointer(type, value); } MockNamedValue MockSupport::getData(const SimpleString& name) { MockNamedValue* value = data_.getValueByName(name); if (value == NULLPTR) return MockNamedValue(""); return *value; } MockSupport* MockSupport::clone(const SimpleString& mockName) { MockSupport* newMock = new MockSupport(mockName); newMock->setMockFailureStandardReporter(standardReporter_); if (ignoreOtherCalls_) newMock->ignoreOtherCalls(); if (!enabled_) newMock->disable(); if (strictOrdering_) newMock->strictOrder(); newMock->tracing(tracing_); newMock->installComparatorsAndCopiers(comparatorsAndCopiersRepository_); return newMock; } MockSupport* MockSupport::getMockSupportScope(const SimpleString& name) { SimpleString mockingSupportName = MOCK_SUPPORT_SCOPE_PREFIX; mockingSupportName += name; if (hasData(mockingSupportName)) { STRCMP_EQUAL("MockSupport", getData(mockingSupportName).getType().asCharString()); return (MockSupport*) getData(mockingSupportName).getObjectPointer(); } MockSupport *newMock = clone(name); setDataObject(mockingSupportName, "MockSupport", newMock); return newMock; } MockSupport* MockSupport::getMockSupport(MockNamedValueListNode* node) { if (node->getType() == "MockSupport" && node->getName().contains(MOCK_SUPPORT_SCOPE_PREFIX)) return (MockSupport*) node->item()->getObjectPointer(); return NULLPTR; } MockNamedValue MockSupport::returnValue() { if (lastActualFunctionCall_) return lastActualFunctionCall_->returnValue(); return MockNamedValue(""); } bool MockSupport::boolReturnValue() { return returnValue().getBoolValue(); } unsigned int MockSupport::unsignedIntReturnValue() { return returnValue().getUnsignedIntValue(); } int MockSupport::intReturnValue() { return returnValue().getIntValue(); } const char * MockSupport::returnStringValueOrDefault(const char * defaultValue) { if (hasReturnValue()) { return stringReturnValue(); } return defaultValue; } double MockSupport::returnDoubleValueOrDefault(double defaultValue) { if (hasReturnValue()) { return doubleReturnValue(); } return defaultValue; } long int MockSupport::returnLongIntValueOrDefault(long int defaultValue) { if (hasReturnValue()) { return longIntReturnValue(); } return defaultValue; } bool MockSupport::returnBoolValueOrDefault(bool defaultValue) { if (hasReturnValue()) { return boolReturnValue(); } return defaultValue; } int MockSupport::returnIntValueOrDefault(int defaultValue) { if (hasReturnValue()) { return intReturnValue(); } return defaultValue; } unsigned int MockSupport::returnUnsignedIntValueOrDefault(unsigned int defaultValue) { if (hasReturnValue()) { return unsignedIntReturnValue(); } return defaultValue; } unsigned long int MockSupport::returnUnsignedLongIntValueOrDefault(unsigned long int defaultValue) { if (hasReturnValue()) { return unsignedLongIntReturnValue(); } return defaultValue; } long int MockSupport::longIntReturnValue() { return returnValue().getLongIntValue(); } unsigned long int MockSupport::unsignedLongIntReturnValue() { return returnValue().getUnsignedLongIntValue(); } #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong MockSupport::longLongIntReturnValue() { return returnValue().getLongLongIntValue(); } cpputest_ulonglong MockSupport::unsignedLongLongIntReturnValue() { return returnValue().getUnsignedLongLongIntValue(); } cpputest_longlong MockSupport::returnLongLongIntValueOrDefault(cpputest_longlong defaultValue) { if (hasReturnValue()) { return longLongIntReturnValue(); } return defaultValue; } cpputest_ulonglong MockSupport::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong defaultValue) { if (hasReturnValue()) { return unsignedLongLongIntReturnValue(); } return defaultValue; } #else cpputest_longlong MockSupport::longLongIntReturnValue() { FAIL("Long Long type is not supported"); return cpputest_longlong(0); } cpputest_ulonglong MockSupport::unsignedLongLongIntReturnValue() { FAIL("Unsigned Long Long type is not supported"); return cpputest_ulonglong(0); } cpputest_longlong MockSupport::returnLongLongIntValueOrDefault(cpputest_longlong defaultValue) { FAIL("Long Long type is not supported"); return defaultValue; } cpputest_ulonglong MockSupport::returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong defaultValue) { FAIL("Unsigned Long Long type is not supported"); return defaultValue; } #endif const char* MockSupport::stringReturnValue() { return returnValue().getStringValue(); } double MockSupport::doubleReturnValue() { return returnValue().getDoubleValue(); } void * MockSupport::returnPointerValueOrDefault(void * defaultValue) { if (hasReturnValue()) { return pointerReturnValue(); } return defaultValue; } const void* MockSupport::returnConstPointerValueOrDefault(const void * defaultValue) { if (hasReturnValue()) { return constPointerReturnValue(); } return defaultValue; } void (*MockSupport::returnFunctionPointerValueOrDefault(void (*defaultValue)()))() { if (hasReturnValue()) { return functionPointerReturnValue(); } return defaultValue; } void* MockSupport::pointerReturnValue() { return returnValue().getPointerValue(); } const void* MockSupport::constPointerReturnValue() { return returnValue().getConstPointerValue(); } void (*MockSupport::functionPointerReturnValue())() { return returnValue().getFunctionPointerValue(); } bool MockSupport::hasReturnValue() { if (lastActualFunctionCall_) return lastActualFunctionCall_->hasReturnValue(); return false; } cpputest-4.0/src/CppUTestExt/OrderedTest.cpp000644 000765 000024 00000010465 13663176127 022107 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/OrderedTest.h" OrderedTestShell* OrderedTestShell::_orderedTestsHead = NULLPTR; OrderedTestShell::OrderedTestShell() : _nextOrderedTest(NULLPTR), _level(0) { } OrderedTestShell::~OrderedTestShell() { } int OrderedTestShell::getLevel() { return _level; } void OrderedTestShell::setLevel(int level) { _level = level; } void OrderedTestShell::setOrderedTestHead(OrderedTestShell* test) { _orderedTestsHead = test; } OrderedTestShell* OrderedTestShell::getOrderedTestHead() { return _orderedTestsHead; } bool OrderedTestShell::firstOrderedTest() { return (getOrderedTestHead() == NULLPTR); } OrderedTestShell* OrderedTestShell::addOrderedTest(OrderedTestShell* test) { UtestShell::addTest(test); _nextOrderedTest = test; return this; } void OrderedTestShell::addOrderedTestToHead(OrderedTestShell* test) { TestRegistry *reg = TestRegistry::getCurrentRegistry(); UtestShell* head = getOrderedTestHead(); if (NULLPTR == reg->getFirstTest() || head == reg->getFirstTest()) { reg->addTest(test); } else { reg->getTestWithNext(head)->addTest(test); test->addTest(head); } test->_nextOrderedTest = getOrderedTestHead(); setOrderedTestHead(test); } OrderedTestShell* OrderedTestShell::getNextOrderedTest() { return _nextOrderedTest; } OrderedTestInstaller::OrderedTestInstaller(OrderedTestShell& test, const char* groupName, const char* testName, const char* fileName, size_t lineNumber, int level) { test.setTestName(testName); test.setGroupName(groupName); test.setFileName(fileName); test.setLineNumber(lineNumber); test.setLevel(level); if (OrderedTestShell::firstOrderedTest()) OrderedTestShell::addOrderedTestToHead(&test); else addOrderedTestInOrder(&test); } void OrderedTestInstaller::addOrderedTestInOrder(OrderedTestShell* test) { if (test->getLevel() < OrderedTestShell::getOrderedTestHead()->getLevel()) OrderedTestShell::addOrderedTestToHead(test); else addOrderedTestInOrderNotAtHeadPosition(test); } void OrderedTestInstaller::addOrderedTestInOrderNotAtHeadPosition( OrderedTestShell* test) { OrderedTestShell* current = OrderedTestShell::getOrderedTestHead(); while (current->getNextOrderedTest()) { if (current->getNextOrderedTest()->getLevel() > test->getLevel()) { test->addOrderedTest(current->getNextOrderedTest()); current->addOrderedTest(test); return; } current = current->getNextOrderedTest(); } test->addOrderedTest(current->getNextOrderedTest()); current->addOrderedTest(test); } OrderedTestInstaller::~OrderedTestInstaller() { } cpputest-4.0/src/CppUTest/TestOutput.cpp000644 000765 000024 00000024704 13663176127 021343 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" TestOutput::WorkingEnvironment TestOutput::workingEnvironment_ = TestOutput::detectEnvironment; void TestOutput::setWorkingEnvironment(TestOutput::WorkingEnvironment workEnvironment) { workingEnvironment_ = workEnvironment; } TestOutput::WorkingEnvironment TestOutput::getWorkingEnvironment() { if (workingEnvironment_ == TestOutput::detectEnvironment) return PlatformSpecificGetWorkingEnvironment(); return workingEnvironment_; } TestOutput::TestOutput() : dotCount_(0), verbose_(level_quiet), color_(false), progressIndication_(".") { } TestOutput::~TestOutput() { } void TestOutput::verbose(VerbosityLevel level) { verbose_ = level; } void TestOutput::color() { color_ = true; } void TestOutput::print(const char* str) { printBuffer(str); } void TestOutput::print(long n) { print(StringFrom(n).asCharString()); } void TestOutput::print(size_t n) { print(StringFrom(n).asCharString()); } void TestOutput::printDouble(double d) { print(StringFrom(d).asCharString()); } TestOutput& operator<<(TestOutput& p, const char* s) { p.print(s); return p; } TestOutput& operator<<(TestOutput& p, long int i) { p.print(i); return p; } void TestOutput::printCurrentTestStarted(const UtestShell& test) { if (verbose_ > level_quiet) print(test.getFormattedName().asCharString()); if (test.willRun()) { setProgressIndicator("."); } else { setProgressIndicator("!"); } } void TestOutput::printCurrentTestEnded(const TestResult& res) { if (verbose_ > level_quiet) { print(" - "); print(res.getCurrentTestTotalExecutionTime()); print(" ms\n"); } else { printProgressIndicator(); } } void TestOutput::printProgressIndicator() { print(progressIndication_); if (++dotCount_ % 50 == 0) print("\n"); } void TestOutput::setProgressIndicator(const char* indicator) { progressIndication_ = indicator; } void TestOutput::printTestsStarted() { } void TestOutput::printCurrentGroupStarted(const UtestShell& /*test*/) { } void TestOutput::printCurrentGroupEnded(const TestResult& /*res*/) { } void TestOutput::printTestsEnded(const TestResult& result) { print("\n"); const bool isFailure = result.isFailure(); const size_t failureCount = result.getFailureCount(); if (isFailure) { if (color_) { print("\033[31;1m"); } print("Errors ("); if (failureCount > 0) { print(failureCount); print(" failures, "); } else { print("ran nothing, "); } } else { if (color_) { print("\033[32;1m"); } print("OK ("); } print(result.getTestCount()); print(" tests, "); print(result.getRunCount()); print(" ran, "); print(result.getCheckCount()); print(" checks, "); print(result.getIgnoredCount()); print(" ignored, "); print(result.getFilteredOutCount()); print(" filtered out, "); print(result.getTotalExecutionTime()); print(" ms)"); if (color_) { print("\033[m"); } if (isFailure && failureCount == 0) { print("\nNote: test run failed because no tests were run or ignored. Assuming something went wrong. " "This often happens because of linking errors or typos in test filter."); } print("\n\n"); dotCount_ = 0; } void TestOutput::printTestRun(size_t number, size_t total) { if (total > 1) { print("Test run "); print(number); print(" of "); print(total); print("\n"); } } void TestOutput::printFailure(const TestFailure& failure) { if (failure.isOutsideTestFile() || failure.isInHelperFunction()) printFileAndLineForTestAndFailure(failure); else printFileAndLineForFailure(failure); printFailureMessage(failure.getMessage()); } void TestOutput::printFileAndLineForTestAndFailure(const TestFailure& failure) { printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getTestFileName(), failure.getTestLineNumber()); printFailureInTest(failure.getTestName()); printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getFileName(), failure.getFailureLineNumber()); } void TestOutput::printFileAndLineForFailure(const TestFailure& failure) { printErrorInFileOnLineFormattedForWorkingEnvironment(failure.getFileName(), failure.getFailureLineNumber()); printFailureInTest(failure.getTestName()); } void TestOutput::printFailureInTest(SimpleString testName) { print(" Failure in "); print(testName.asCharString()); } void TestOutput::printFailureMessage(SimpleString reason) { print("\n"); print("\t"); print(reason.asCharString()); print("\n\n"); } void TestOutput::printErrorInFileOnLineFormattedForWorkingEnvironment(SimpleString file, size_t lineNumber) { if (TestOutput::getWorkingEnvironment() == TestOutput::visualStudio) printVisualStudioErrorInFileOnLine(file, lineNumber); else printEclipseErrorInFileOnLine(file, lineNumber); } void TestOutput::printEclipseErrorInFileOnLine(SimpleString file, size_t lineNumber) { print("\n"); print(file.asCharString()); print(":"); print(lineNumber); print(":"); print(" error:"); } void TestOutput::printVisualStudioErrorInFileOnLine(SimpleString file, size_t lineNumber) { print("\n"); print(file.asCharString()); print("("); print(lineNumber); print("):"); print(" error:"); } void TestOutput::printVeryVerbose(const char* str) { if(verbose_ == level_veryVerbose) printBuffer(str); } void ConsoleTestOutput::printBuffer(const char* s) { while (*s) { PlatformSpecificPutchar(*s); s++; } flush(); } void ConsoleTestOutput::flush() { PlatformSpecificFlush(); } StringBufferTestOutput::~StringBufferTestOutput() { } CompositeTestOutput::CompositeTestOutput() : outputOne_(NULLPTR), outputTwo_(NULLPTR) { } CompositeTestOutput::~CompositeTestOutput() { delete outputOne_; delete outputTwo_; } void CompositeTestOutput::setOutputOne(TestOutput* output) { delete outputOne_; outputOne_ = output; } void CompositeTestOutput::setOutputTwo(TestOutput* output) { delete outputTwo_; outputTwo_ = output; } void CompositeTestOutput::printTestsStarted() { if (outputOne_) outputOne_->printTestsStarted(); if (outputTwo_) outputTwo_->printTestsStarted(); } void CompositeTestOutput::printTestsEnded(const TestResult& result) { if (outputOne_) outputOne_->printTestsEnded(result); if (outputTwo_) outputTwo_->printTestsEnded(result); } void CompositeTestOutput::printCurrentTestStarted(const UtestShell& test) { if (outputOne_) outputOne_->printCurrentTestStarted(test); if (outputTwo_) outputTwo_->printCurrentTestStarted(test); } void CompositeTestOutput::printCurrentTestEnded(const TestResult& res) { if (outputOne_) outputOne_->printCurrentTestEnded(res); if (outputTwo_) outputTwo_->printCurrentTestEnded(res); } void CompositeTestOutput::printCurrentGroupStarted(const UtestShell& test) { if (outputOne_) outputOne_->printCurrentGroupStarted(test); if (outputTwo_) outputTwo_->printCurrentGroupStarted(test); } void CompositeTestOutput::printCurrentGroupEnded(const TestResult& res) { if (outputOne_) outputOne_->printCurrentGroupEnded(res); if (outputTwo_) outputTwo_->printCurrentGroupEnded(res); } void CompositeTestOutput::verbose(VerbosityLevel level) { if (outputOne_) outputOne_->verbose(level); if (outputTwo_) outputTwo_->verbose(level); } void CompositeTestOutput::color() { if (outputOne_) outputOne_->color(); if (outputTwo_) outputTwo_->color(); } void CompositeTestOutput::printBuffer(const char* buffer) { if (outputOne_) outputOne_->printBuffer(buffer); if (outputTwo_) outputTwo_->printBuffer(buffer); } void CompositeTestOutput::print(const char* buffer) { if (outputOne_) outputOne_->print(buffer); if (outputTwo_) outputTwo_->print(buffer); } void CompositeTestOutput::print(long number) { if (outputOne_) outputOne_->print(number); if (outputTwo_) outputTwo_->print(number); } void CompositeTestOutput::print(size_t number) { if (outputOne_) outputOne_->print(number); if (outputTwo_) outputTwo_->print(number); } void CompositeTestOutput::printDouble(double number) { if (outputOne_) outputOne_->printDouble(number); if (outputTwo_) outputTwo_->printDouble(number); } void CompositeTestOutput::printFailure(const TestFailure& failure) { if (outputOne_) outputOne_->printFailure(failure); if (outputTwo_) outputTwo_->printFailure(failure); } void CompositeTestOutput::setProgressIndicator(const char* indicator) { if (outputOne_) outputOne_->setProgressIndicator(indicator); if (outputTwo_) outputTwo_->setProgressIndicator(indicator); } void CompositeTestOutput::flush() { if (outputOne_) outputOne_->flush(); if (outputTwo_) outputTwo_->flush(); } cpputest-4.0/src/CppUTest/TestFilter.cpp000644 000765 000024 00000006511 13663176127 021264 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CppUTestConfig.h" #include "CppUTest/TestFilter.h" TestFilter::TestFilter() : strictMatching_(false), invertMatching_(false), next_(NULLPTR) { } TestFilter::TestFilter(const SimpleString& filter) : strictMatching_(false), invertMatching_(false), next_(NULLPTR) { filter_ = filter; } TestFilter::TestFilter(const char* filter) : strictMatching_(false), invertMatching_(false), next_(NULLPTR) { filter_ = filter; } TestFilter* TestFilter::add(TestFilter* filter) { next_ = filter; return this; } TestFilter* TestFilter::getNext() const { return next_; } void TestFilter::strictMatching() { strictMatching_ = true; } void TestFilter::invertMatching() { invertMatching_ = true; } bool TestFilter::match(const SimpleString& name) const { bool matches = false; if(strictMatching_) matches = name == filter_; else matches = name.contains(filter_); return invertMatching_ ? !matches : matches; } bool TestFilter::operator==(const TestFilter& filter) const { return (filter_ == filter.filter_ && strictMatching_ == filter.strictMatching_ && invertMatching_ == filter.invertMatching_); } bool TestFilter::operator!=(const TestFilter& filter) const { return !(filter == *this); } SimpleString TestFilter::asString() const { SimpleString textFilter = StringFromFormat("TestFilter: \"%s\"", filter_.asCharString()); if (strictMatching_ && invertMatching_) textFilter += " with strict, invert matching"; else if (strictMatching_) textFilter += " with strict matching"; else if (invertMatching_) textFilter += " with invert matching"; return textFilter; } SimpleString StringFrom(const TestFilter& filter) { return filter.asString(); } cpputest-4.0/src/CppUTest/TestMemoryAllocator.cpp000644 000765 000024 00000056120 13663176127 023151 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/MemoryLeakDetector.h" static char* checkedMalloc(size_t size) { char* mem = (char*) PlatformSpecificMalloc(size); if (mem == NULLPTR) FAIL("malloc returned null pointer"); return mem; } static TestMemoryAllocator* currentNewAllocator = NULLPTR; static TestMemoryAllocator* currentNewArrayAllocator = NULLPTR; static TestMemoryAllocator* currentMallocAllocator = NULLPTR; void setCurrentNewAllocator(TestMemoryAllocator* allocator) { currentNewAllocator = allocator; } TestMemoryAllocator* getCurrentNewAllocator() { if (currentNewAllocator == NULLPTR) setCurrentNewAllocatorToDefault(); return currentNewAllocator; } void setCurrentNewAllocatorToDefault() { currentNewAllocator = defaultNewAllocator(); } TestMemoryAllocator* defaultNewAllocator() { static TestMemoryAllocator allocator("Standard New Allocator", "new", "delete"); return &allocator; } void setCurrentNewArrayAllocator(TestMemoryAllocator* allocator) { currentNewArrayAllocator = allocator; } TestMemoryAllocator* getCurrentNewArrayAllocator() { if (currentNewArrayAllocator == NULLPTR) setCurrentNewArrayAllocatorToDefault(); return currentNewArrayAllocator; } void setCurrentNewArrayAllocatorToDefault() { currentNewArrayAllocator = defaultNewArrayAllocator(); } TestMemoryAllocator* defaultNewArrayAllocator() { static TestMemoryAllocator allocator("Standard New [] Allocator", "new []", "delete []"); return &allocator; } void setCurrentMallocAllocator(TestMemoryAllocator* allocator) { currentMallocAllocator = allocator; } TestMemoryAllocator* getCurrentMallocAllocator() { if (currentMallocAllocator == NULLPTR) setCurrentMallocAllocatorToDefault(); return currentMallocAllocator; } void setCurrentMallocAllocatorToDefault() { currentMallocAllocator = defaultMallocAllocator(); } TestMemoryAllocator* defaultMallocAllocator() { static TestMemoryAllocator allocator("Standard Malloc Allocator", "malloc", "free"); return &allocator; } ///////////////////////////////////////////// GlobalMemoryAllocatorStash::GlobalMemoryAllocatorStash() : originalMallocAllocator(NULLPTR), originalNewAllocator(NULLPTR), originalNewArrayAllocator(NULLPTR) { } void GlobalMemoryAllocatorStash::save() { originalMallocAllocator = getCurrentMallocAllocator(); originalNewAllocator = getCurrentNewAllocator(); originalNewArrayAllocator = getCurrentNewArrayAllocator(); } void GlobalMemoryAllocatorStash::restore() { if (originalMallocAllocator) setCurrentMallocAllocator(originalMallocAllocator); if (originalNewAllocator) setCurrentNewAllocator(originalNewAllocator); if (originalNewArrayAllocator) setCurrentNewArrayAllocator(originalNewArrayAllocator); } TestMemoryAllocator::TestMemoryAllocator(const char* name_str, const char* alloc_name_str, const char* free_name_str) : name_(name_str), alloc_name_(alloc_name_str), free_name_(free_name_str), hasBeenDestroyed_(false) { } TestMemoryAllocator::~TestMemoryAllocator() { hasBeenDestroyed_ = true; } bool TestMemoryAllocator::hasBeenDestroyed() { return hasBeenDestroyed_; } bool TestMemoryAllocator::isOfEqualType(TestMemoryAllocator* allocator) { return SimpleString::StrCmp(this->name(), allocator->name()) == 0; } char* TestMemoryAllocator::allocMemoryLeakNode(size_t size) { return alloc_memory(size, "MemoryLeakNode", 1); } void TestMemoryAllocator::freeMemoryLeakNode(char* memory) { free_memory(memory, 0, "MemoryLeakNode", 1); } char* TestMemoryAllocator::alloc_memory(size_t size, const char*, size_t) { return checkedMalloc(size); } void TestMemoryAllocator::free_memory(char* memory, size_t, const char*, size_t) { PlatformSpecificFree(memory); } const char* TestMemoryAllocator::name() const { return name_; } const char* TestMemoryAllocator::alloc_name() const { return alloc_name_; } const char* TestMemoryAllocator::free_name() const { return free_name_; } TestMemoryAllocator* TestMemoryAllocator::actualAllocator() { return this; } MemoryLeakAllocator::MemoryLeakAllocator(TestMemoryAllocator* originalAllocator) : originalAllocator_(originalAllocator) { } MemoryLeakAllocator::~MemoryLeakAllocator() { } char* MemoryLeakAllocator::alloc_memory(size_t size, const char* file, size_t line) { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(originalAllocator_, size, file, line); } void MemoryLeakAllocator::free_memory(char* memory, size_t, const char* file, size_t line) { MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(originalAllocator_, memory, file, line); } const char* MemoryLeakAllocator::name() const { return "MemoryLeakAllocator"; } const char* MemoryLeakAllocator::alloc_name() const { return originalAllocator_->alloc_name(); } const char* MemoryLeakAllocator::free_name() const { return originalAllocator_->free_name(); } TestMemoryAllocator* MemoryLeakAllocator::actualAllocator() { return originalAllocator_->actualAllocator(); } CrashOnAllocationAllocator::CrashOnAllocationAllocator() : allocationToCrashOn_(0) { } CrashOnAllocationAllocator::~CrashOnAllocationAllocator() { } void CrashOnAllocationAllocator::setNumberToCrashOn(unsigned allocationToCrashOn) { allocationToCrashOn_ = allocationToCrashOn; } char* CrashOnAllocationAllocator::alloc_memory(size_t size, const char* file, size_t line) { if (MemoryLeakWarningPlugin::getGlobalDetector()->getCurrentAllocationNumber() == allocationToCrashOn_) UT_CRASH(); return TestMemoryAllocator::alloc_memory(size, file, line); } NullUnknownAllocator::~NullUnknownAllocator() { } char* NullUnknownAllocator::alloc_memory(size_t /*size*/, const char*, size_t) { return NULLPTR; } void NullUnknownAllocator::free_memory(char* /*memory*/, size_t, const char*, size_t) { } NullUnknownAllocator::NullUnknownAllocator() : TestMemoryAllocator("Null Allocator", "unknown", "unknown") { } TestMemoryAllocator* NullUnknownAllocator::defaultAllocator() { static NullUnknownAllocator allocator; return &allocator; } class LocationToFailAllocNode { public: int allocNumberToFail_; int actualAllocNumber_; const char* file_; size_t line_; LocationToFailAllocNode* next_; void failAtAllocNumber(int number, LocationToFailAllocNode* next) { init(next); allocNumberToFail_ = number; } void failNthAllocAt(int allocationNumber, const char* file, size_t line, LocationToFailAllocNode* next) { init(next); allocNumberToFail_ = allocationNumber; file_ = file; line_ = line; } bool shouldFail(int allocationNumber, const char* file, size_t line) { if (file_ && SimpleString::StrCmp(file, file_) == 0 && line == line_) { actualAllocNumber_++; return actualAllocNumber_ == allocNumberToFail_; } if (allocationNumber == allocNumberToFail_) return true; return false; } private: void init(LocationToFailAllocNode* next = NULLPTR) { allocNumberToFail_ = 0; actualAllocNumber_ = 0; file_ = NULLPTR; line_ = 0; next_ = next; } }; FailableMemoryAllocator::~FailableMemoryAllocator() { } FailableMemoryAllocator::FailableMemoryAllocator(const char* name_str, const char* alloc_name_str, const char* free_name_str) : TestMemoryAllocator(name_str, alloc_name_str, free_name_str), head_(NULLPTR), currentAllocNumber_(0) { } void FailableMemoryAllocator::failAllocNumber(int number) { LocationToFailAllocNode* newNode = (LocationToFailAllocNode*) (void*) allocMemoryLeakNode(sizeof(LocationToFailAllocNode)); newNode->failAtAllocNumber(number, head_); head_ = newNode; } void FailableMemoryAllocator::failNthAllocAt(int allocationNumber, const char* file, size_t line) { LocationToFailAllocNode* newNode = (LocationToFailAllocNode*) (void*) allocMemoryLeakNode(sizeof(LocationToFailAllocNode)); newNode->failNthAllocAt(allocationNumber, file, line, head_); head_ = newNode; } char* FailableMemoryAllocator::alloc_memory(size_t size, const char* file, size_t line) { currentAllocNumber_++; LocationToFailAllocNode* current = head_; LocationToFailAllocNode* previous = NULLPTR; while (current) { if (current->shouldFail(currentAllocNumber_, file, line)) { if (previous) previous->next_ = current->next_; else head_ = current->next_; free_memory((char*) current, size, __FILE__, __LINE__); return NULLPTR; } previous = current; current = current->next_; } return TestMemoryAllocator::alloc_memory(size, file, line); } char* FailableMemoryAllocator::allocMemoryLeakNode(size_t size) { return (char*)PlatformSpecificMalloc(size); } void FailableMemoryAllocator::checkAllFailedAllocsWereDone() { if (head_) { UtestShell* currentTest = UtestShell::getCurrent(); SimpleString failText; if (head_->file_) failText = StringFromFormat("Expected failing alloc at %s:%d was never done", head_->file_, (int) head_->line_); else failText = StringFromFormat("Expected allocation number %d was never done", (int) head_->allocNumberToFail_); currentTest->failWith(FailFailure(currentTest, currentTest->getName().asCharString(), currentTest->getLineNumber(), failText)); } } void FailableMemoryAllocator::clearFailedAllocs() { LocationToFailAllocNode* current = head_; while (current) { head_ = current->next_; free_memory((char*) current, 0, __FILE__, __LINE__); current = head_; } currentAllocNumber_ = 0; } struct MemoryAccountantAllocationNode { size_t size_; size_t allocations_; size_t deallocations_; size_t maxAllocations_; size_t currentAllocations_; MemoryAccountantAllocationNode* next_; }; MemoryAccountantAllocationNode* MemoryAccountant::createNewAccountantAllocationNode(size_t size, MemoryAccountantAllocationNode* next) const { MemoryAccountantAllocationNode* node = (MemoryAccountantAllocationNode*) (void*) allocator_->alloc_memory(sizeof(MemoryAccountantAllocationNode), __FILE__, __LINE__); node->size_ = size; node->allocations_ = 0; node->deallocations_ = 0; node->maxAllocations_ = 0; node->currentAllocations_ = 0; node->next_ = next; return node; } void MemoryAccountant::destroyAccountantAllocationNode(MemoryAccountantAllocationNode* node) const { allocator_->free_memory((char*) node, sizeof(node), __FILE__, __LINE__); } MemoryAccountant::MemoryAccountant() : head_(NULLPTR), allocator_(defaultMallocAllocator()), useCacheSizes_(false) { } MemoryAccountant::~MemoryAccountant() { clear(); } void MemoryAccountant::createCacheSizeNodes(size_t sizes[], size_t length) { for (size_t i = 0; i < length; i++) findOrCreateNodeOfSize(sizes[i]); if (head_ == NULLPTR) head_ = createNewAccountantAllocationNode(0, NULLPTR); else { for (MemoryAccountantAllocationNode* lastNode = head_; lastNode; lastNode = lastNode->next_) { if (lastNode->next_ == NULLPTR) { lastNode->next_ = createNewAccountantAllocationNode(0, NULLPTR); break; } } } } void MemoryAccountant::useCacheSizes(size_t sizes[], size_t length) { if (head_) FAIL("MemoryAccountant: Cannot set cache sizes as allocations already occured!"); createCacheSizeNodes(sizes, length); useCacheSizes_ = true; } void MemoryAccountant::setAllocator(TestMemoryAllocator* allocator) { allocator_ = allocator; } void MemoryAccountant::clear() { MemoryAccountantAllocationNode* node = head_; MemoryAccountantAllocationNode* to_be_deleted = NULLPTR; while (node) { to_be_deleted = node; node = node->next_; destroyAccountantAllocationNode(to_be_deleted); } head_ = NULLPTR; } MemoryAccountantAllocationNode* MemoryAccountant::findNodeOfSize(size_t size) const { if (useCacheSizes_) { for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) { if (size > node->size_ && node->next_ == NULLPTR) return node; else if (size <= node->size_ && !(node->next_->size_ != 0 && node->next_->size_ <= size)) return node; } } else for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) if (node->size_ == size) return node; return NULLPTR; } MemoryAccountantAllocationNode* MemoryAccountant::findOrCreateNodeOfSize(size_t size) { if (useCacheSizes_) return findNodeOfSize(size); if (head_ && head_->size_ > size) head_ = createNewAccountantAllocationNode(size, head_); for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) { if (node->size_ == size) return node; if (node->next_ == NULLPTR || node->next_->size_ > size) node->next_ = createNewAccountantAllocationNode(size, node->next_); } head_ = createNewAccountantAllocationNode(size, head_); return head_; } void MemoryAccountant::alloc(size_t size) { MemoryAccountantAllocationNode* node = findOrCreateNodeOfSize(size); node->allocations_++; node->currentAllocations_++; node->maxAllocations_ = (node->currentAllocations_ > node->maxAllocations_) ? node->currentAllocations_ : node->maxAllocations_; } void MemoryAccountant::dealloc(size_t size) { MemoryAccountantAllocationNode* node = findOrCreateNodeOfSize(size); node->deallocations_++; if (node->currentAllocations_) node->currentAllocations_--; } size_t MemoryAccountant::totalAllocationsOfSize(size_t size) const { MemoryAccountantAllocationNode* node = findNodeOfSize(size); if (node) return node->allocations_; return 0; } size_t MemoryAccountant::totalDeallocationsOfSize(size_t size) const { MemoryAccountantAllocationNode* node = findNodeOfSize(size); if (node) return node->deallocations_; return 0; } size_t MemoryAccountant::maximumAllocationAtATimeOfSize(size_t size) const { MemoryAccountantAllocationNode* node = findNodeOfSize(size); if (node) return node->maxAllocations_; return 0; } size_t MemoryAccountant::totalAllocations() const { size_t theTotalAllocations = 0; for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) theTotalAllocations += node->allocations_; return theTotalAllocations; } size_t MemoryAccountant::totalDeallocations() const { size_t theTotalDeallocations = 0; for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) theTotalDeallocations += node->deallocations_; return theTotalDeallocations; } SimpleString MemoryAccountant::reportNoAllocations() const { return SimpleString("CppUTest Memory Accountant has not noticed any allocations or deallocations. Sorry\n"); } SimpleString MemoryAccountant::reportTitle() const { if (useCacheSizes_) return "CppUTest Memory Accountant report (with cache sizes):\n"; return "CppUTest Memory Accountant report:\n"; } SimpleString MemoryAccountant::reportHeader() const { if (useCacheSizes_) return "Cache size # allocations # deallocations max # allocations at one time\n"; return "Allocation size # allocations # deallocations max # allocations at one time\n"; } #define MEMORY_ACCOUNTANT_ROW_FORMAT "%s %5d %5d %5d\n" SimpleString MemoryAccountant::reportFooter() const { return SimpleString(" Thank you for your business\n"); } SimpleString MemoryAccountant::stringSize(size_t size) const { return (size == 0) ? "other" : StringFromFormat("%5d", (int) size); } SimpleString MemoryAccountant::report() const { if (head_ == NULLPTR) return reportNoAllocations(); SimpleString accountantReport = reportTitle() + reportHeader(); for (MemoryAccountantAllocationNode* node = head_; node; node = node->next_) accountantReport += StringFromFormat(MEMORY_ACCOUNTANT_ROW_FORMAT, stringSize(node->size_).asCharString(), (int) node->allocations_, (int) node->deallocations_, (int) node->maxAllocations_); return accountantReport + reportFooter(); } AccountingTestMemoryAllocator::AccountingTestMemoryAllocator(MemoryAccountant& accountant, TestMemoryAllocator* origAllocator) : accountant_(accountant), originalAllocator_(origAllocator), head_(NULLPTR) { } AccountingTestMemoryAllocator::~AccountingTestMemoryAllocator() { } struct AccountingTestMemoryAllocatorMemoryNode { char* memory_; size_t size_; AccountingTestMemoryAllocatorMemoryNode* next_; }; void AccountingTestMemoryAllocator::addMemoryToMemoryTrackingToKeepTrackOfSize(char* memory, size_t size) { AccountingTestMemoryAllocatorMemoryNode* node = (AccountingTestMemoryAllocatorMemoryNode*) (void*) originalAllocator_->alloc_memory(sizeof(AccountingTestMemoryAllocatorMemoryNode), __FILE__, __LINE__); node->memory_ = memory; node->size_ = size; node->next_ = head_; head_ = node; } size_t AccountingTestMemoryAllocator::removeNextNodeAndReturnSize(AccountingTestMemoryAllocatorMemoryNode* node) { AccountingTestMemoryAllocatorMemoryNode* foundNode = node->next_; node->next_ = node->next_->next_; size_t size = foundNode->size_; originalAllocator_->free_memory((char*) foundNode, size, __FILE__, __LINE__); return size; } size_t AccountingTestMemoryAllocator::removeHeadAndReturnSize() { AccountingTestMemoryAllocatorMemoryNode* foundNode = head_; head_ = head_->next_; size_t size = foundNode->size_; originalAllocator_->free_memory((char*) foundNode, size, __FILE__, __LINE__); return size; } size_t AccountingTestMemoryAllocator::removeMemoryFromTrackingAndReturnAllocatedSize(char* memory) { if (head_ && head_->memory_ == memory) return removeHeadAndReturnSize(); for (AccountingTestMemoryAllocatorMemoryNode* node = head_; node; node = node->next_) { if (node->next_ && node->next_->memory_ == memory) return removeNextNodeAndReturnSize(node); } return 0; } char* AccountingTestMemoryAllocator::alloc_memory(size_t size, const char* file, size_t line) { accountant_.alloc(size); char* memory = originalAllocator_->alloc_memory(size, file, line); addMemoryToMemoryTrackingToKeepTrackOfSize(memory, size); return memory; } void AccountingTestMemoryAllocator::free_memory(char* memory, size_t, const char* file, size_t line) { size_t size = removeMemoryFromTrackingAndReturnAllocatedSize(memory); accountant_.dealloc(size); originalAllocator_->free_memory(memory, size, file, line); } TestMemoryAllocator* AccountingTestMemoryAllocator::actualAllocator() { return originalAllocator_->actualAllocator(); } TestMemoryAllocator* AccountingTestMemoryAllocator::originalAllocator() { return originalAllocator_; } const char* AccountingTestMemoryAllocator::alloc_name() const { return originalAllocator_->alloc_name(); } const char* AccountingTestMemoryAllocator::free_name() const { return originalAllocator_->free_name(); } GlobalMemoryAccountant::GlobalMemoryAccountant() : mallocAllocator_(NULLPTR), newAllocator_(NULLPTR), newArrayAllocator_(NULLPTR) { } GlobalMemoryAccountant::~GlobalMemoryAccountant() { restoreMemoryAllocators(); delete mallocAllocator_; delete newAllocator_; delete newArrayAllocator_; } void GlobalMemoryAccountant::useCacheSizes(size_t sizes[], size_t length) { accountant_.useCacheSizes(sizes, length); } void GlobalMemoryAccountant::start() { if (mallocAllocator_ != NULLPTR) FAIL("Global allocator start called twice!"); mallocAllocator_ = new AccountingTestMemoryAllocator(accountant_, getCurrentMallocAllocator()); newAllocator_ = new AccountingTestMemoryAllocator(accountant_, getCurrentNewAllocator()); newArrayAllocator_ = new AccountingTestMemoryAllocator(accountant_, getCurrentNewArrayAllocator()); accountant_.setAllocator(getCurrentMallocAllocator()); setCurrentMallocAllocator(mallocAllocator_); setCurrentNewAllocator(newAllocator_); setCurrentNewArrayAllocator(newArrayAllocator_); } void GlobalMemoryAccountant::restoreMemoryAllocators() { if (getCurrentMallocAllocator() == mallocAllocator_) setCurrentMallocAllocator(mallocAllocator_->originalAllocator()); if (getCurrentNewAllocator() == newAllocator_) setCurrentNewAllocator(newAllocator_->originalAllocator()); if (getCurrentNewArrayAllocator() == newArrayAllocator_) setCurrentNewArrayAllocator(newArrayAllocator_->originalAllocator()); } void GlobalMemoryAccountant::stop() { if (mallocAllocator_ == NULLPTR) FAIL("GlobalMemoryAccount: Stop called without starting"); if (getCurrentMallocAllocator() != mallocAllocator_) FAIL("GlobalMemoryAccountant: Malloc memory allocator has been changed while accounting for memory"); if (getCurrentNewAllocator() != newAllocator_) FAIL("GlobalMemoryAccountant: New memory allocator has been changed while accounting for memory"); if (getCurrentNewArrayAllocator() != newArrayAllocator_) FAIL("GlobalMemoryAccountant: New Array memory allocator has been changed while accounting for memory"); restoreMemoryAllocators(); } SimpleString GlobalMemoryAccountant::report() { return accountant_.report(); } TestMemoryAllocator* GlobalMemoryAccountant::getMallocAllocator() { return mallocAllocator_; } TestMemoryAllocator* GlobalMemoryAccountant::getNewAllocator() { return newAllocator_; } TestMemoryAllocator* GlobalMemoryAccountant::getNewArrayAllocator() { return newArrayAllocator_; } cpputest-4.0/src/CppUTest/TestFailure.cpp000644 000765 000024 00000037040 13663176127 021427 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestOutput.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" static SimpleString removeAllPrintableCharactersFrom(const SimpleString& str) { size_t bufferSize = str.size()+1; char* buffer = (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); for (size_t i = 0; i < bufferSize-1; i++) if (buffer[i] != '\t' && buffer[i] != '\n') buffer[i] = ' '; SimpleString result(buffer); PlatformSpecificFree(buffer); return result; } static SimpleString addMarkerToString(const SimpleString& str, int markerPos) { size_t bufferSize = str.size()+1; char* buffer = (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); buffer[markerPos] = '^'; SimpleString result(buffer); PlatformSpecificFree(buffer); return result; } TestFailure::TestFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& theMessage) : testName_(test->getFormattedName()), testNameOnly_(test->getName()), fileName_(fileName), lineNumber_(lineNumber), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_(theMessage) { } TestFailure::TestFailure(UtestShell* test, const SimpleString& theMessage) : testName_(test->getFormattedName()), testNameOnly_(test->getName()), fileName_(test->getFile()), lineNumber_(test->getLineNumber()), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_(theMessage) { } TestFailure::TestFailure(UtestShell* test, const char* fileName, size_t lineNum) : testName_(test->getFormattedName()), testNameOnly_(test->getName()), fileName_(fileName), lineNumber_(lineNum), testFileName_(test->getFile()), testLineNumber_(test->getLineNumber()), message_("no message") { } TestFailure::TestFailure(const TestFailure& f) : testName_(f.testName_), testNameOnly_(f.testNameOnly_), fileName_(f.fileName_), lineNumber_(f.lineNumber_), testFileName_(f.testFileName_), testLineNumber_(f.testLineNumber_), message_(f.message_) { } TestFailure::~TestFailure() { } SimpleString TestFailure::getFileName() const { return fileName_; } SimpleString TestFailure::getTestFileName() const { return testFileName_; } SimpleString TestFailure::getTestName() const { return testName_; } SimpleString TestFailure::getTestNameOnly() const { return testNameOnly_; } size_t TestFailure::getFailureLineNumber() const { return lineNumber_; } size_t TestFailure::getTestLineNumber() const { return testLineNumber_; } SimpleString TestFailure::getMessage() const { return message_; } bool TestFailure::isOutsideTestFile() const { return testFileName_ != fileName_; } bool TestFailure::isInHelperFunction() const { return lineNumber_ < testLineNumber_; } SimpleString TestFailure::createButWasString(const SimpleString& expected, const SimpleString& actual) { return StringFromFormat("expected <%s>\n\tbut was <%s>", expected.asCharString(), actual.asCharString()); } SimpleString TestFailure::createDifferenceAtPosString(const SimpleString& actual, size_t position, DifferenceFormat format) { SimpleString result; const size_t extraCharactersWindow = 20; const size_t halfOfExtraCharactersWindow = extraCharactersWindow / 2; const size_t actualOffset = (format == DIFFERENCE_STRING) ? position : (position * 3 + 1); SimpleString paddingForPreventingOutOfBounds (" ", halfOfExtraCharactersWindow); SimpleString actualString = paddingForPreventingOutOfBounds + actual + paddingForPreventingOutOfBounds; SimpleString differentString = StringFromFormat("difference starts at position %lu at: <", (unsigned long) position); result += "\n"; result += StringFromFormat("\t%s%s>\n", differentString.asCharString(), actualString.subString(actualOffset, extraCharactersWindow).asCharString()); SimpleString markString = actualString.subString(actualOffset, halfOfExtraCharactersWindow+1); markString = removeAllPrintableCharactersFrom(markString); markString = addMarkerToString(markString, halfOfExtraCharactersWindow); result += StringFromFormat("\t%s%s", SimpleString(" ", differentString.size()).asCharString(), markString.asCharString()); return result; } SimpleString TestFailure::createUserText(const SimpleString& text) { SimpleString userMessage = ""; if (!text.isEmpty()) { //This is a kludge to turn off "Message: " for this case. //I don't think "Message: " adds anything, as you get to see the //message. I propose we remove "Message: " lead in if (!text.startsWith("LONGS_EQUAL")) userMessage += "Message: "; userMessage += text; userMessage += "\n\t"; } return userMessage; } EqualsFailure::EqualsFailure(UtestShell* test, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); } EqualsFailure::EqualsFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(expected, actual); } DoublesEqualFailure::DoublesEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, double expected, double actual, double threshold, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFrom(expected, 7), StringFrom(actual, 7)); message_ += " threshold used was <"; message_ += StringFrom(threshold, 7); message_ += ">"; if (PlatformSpecificIsNan(expected) || PlatformSpecificIsNan(actual) || PlatformSpecificIsNan(threshold)) message_ += "\n\tCannot make comparisons with Nan"; } CheckEqualFailure::CheckEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); size_t failStart; for (failStart = 0; actual.asCharString()[failStart] == expected.asCharString()[failStart]; failStart++) ; message_ += createButWasString(expected, actual); message_ += createDifferenceAtPosString(actual, failStart); } ComparisonFailure::ComparisonFailure(UtestShell *test, const char *fileName, size_t lineNumber, const SimpleString& checkString, const SimpleString &comparisonString, const SimpleString &text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += checkString; message_ += "("; message_ += comparisonString; message_ += ") failed"; } ContainsFailure::ContainsFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += StringFromFormat("actual <%s>\n\tdid not contain <%s>", actual.asCharString(), expected.asCharString()); } CheckFailure::CheckFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& checkString, const SimpleString& conditionString, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += checkString; message_ += "("; message_ += conditionString; message_ += ") failed"; } FailFailure::FailFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& message) : TestFailure(test, fileName, lineNumber) { message_ = message; } LongsEqualFailure::LongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, long expected, long actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); SimpleString aDecimal = StringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString actualReported = aDecimal + " " + BracketsFormattedHexStringFrom(actual); SimpleString expectedReported = eDecimal + " " + BracketsFormattedHexStringFrom(expected); message_ += createButWasString(expectedReported, actualReported); } UnsignedLongsEqualFailure::UnsignedLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, unsigned long expected, unsigned long actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); SimpleString aDecimal = StringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString actualReported = aDecimal + " " + BracketsFormattedHexStringFrom(actual); SimpleString expectedReported = eDecimal + " " + BracketsFormattedHexStringFrom(expected); message_ += createButWasString(expectedReported, actualReported); } LongLongsEqualFailure::LongLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, cpputest_longlong expected, cpputest_longlong actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); SimpleString aDecimal = StringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString actualReported = aDecimal + " " + BracketsFormattedHexStringFrom(actual); SimpleString expectedReported = eDecimal + " " + BracketsFormattedHexStringFrom(expected); message_ += createButWasString(expectedReported, actualReported); } UnsignedLongLongsEqualFailure::UnsignedLongLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, cpputest_ulonglong expected, cpputest_ulonglong actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); SimpleString aDecimal = StringFrom(actual); SimpleString eDecimal = StringFrom(expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString actualReported = aDecimal + " " + BracketsFormattedHexStringFrom(actual); SimpleString expectedReported = eDecimal + " " + BracketsFormattedHexStringFrom(expected); message_ += createButWasString(expectedReported, actualReported); } SignedBytesEqualFailure::SignedBytesEqualFailure (UtestShell* test, const char* fileName, size_t lineNumber, signed char expected, signed char actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); SimpleString aDecimal = StringFrom((int)actual); SimpleString eDecimal = StringFrom((int)expected); SimpleString::padStringsToSameLength(aDecimal, eDecimal, ' '); SimpleString actualReported = aDecimal + " " + BracketsFormattedHexStringFrom(actual); SimpleString expectedReported = eDecimal + " " + BracketsFormattedHexStringFrom(expected); message_ += createButWasString(expectedReported, actualReported); } StringEqualFailure::StringEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); if((expected) && (actual)) { size_t failStart; for (failStart = 0; actual[failStart] == expected[failStart]; failStart++) ; message_ += createDifferenceAtPosString(actual, failStart); } } StringEqualNoCaseFailure::StringEqualNoCaseFailure(UtestShell* test, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFromOrNull(expected), StringFromOrNull(actual)); if((expected) && (actual)) { size_t failStart; for (failStart = 0; SimpleString::ToLower(actual[failStart]) == SimpleString::ToLower(expected[failStart]); failStart++) ; message_ += createDifferenceAtPosString(actual, failStart); } } BinaryEqualFailure::BinaryEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const unsigned char* expected, const unsigned char* actual, size_t size, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFromBinaryOrNull(expected, size), StringFromBinaryOrNull(actual, size)); if ((expected) && (actual)) { size_t failStart; for (failStart = 0; actual[failStart] == expected[failStart]; failStart++) ; message_ += createDifferenceAtPosString(StringFromBinary(actual, size), failStart, DIFFERENCE_BINARY); } } BitsEqualFailure::BitsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, unsigned long expected, unsigned long actual, unsigned long mask, size_t byteCount, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += createButWasString(StringFromMaskedBits(expected, mask, byteCount), StringFromMaskedBits(actual, mask, byteCount)); } FeatureUnsupportedFailure::FeatureUnsupportedFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& featureName, const SimpleString& text) : TestFailure(test, fileName, lineNumber) { message_ = createUserText(text); message_ += StringFromFormat("The feature \"%s\" is not supported in this environment or with the feature set selected when building the library.", featureName.asCharString()); } cpputest-4.0/src/CppUTest/CMakeLists.txt000644 000765 000024 00000006550 13663176127 021236 0ustar00basvoddestaff000000 000000 add_library(CppUTest CommandLineArguments.cpp MemoryLeakWarningPlugin.cpp TestHarness_c.cpp TestRegistry.cpp CommandLineTestRunner.cpp SimpleString.cpp SimpleStringInternalCache.cpp TestMemoryAllocator.cpp TestResult.cpp JUnitTestOutput.cpp TeamCityTestOutput.cpp TestFailure.cpp TestOutput.cpp MemoryLeakDetector.cpp TestFilter.cpp TestPlugin.cpp TestTestingFixture.cpp SimpleMutex.cpp Utest.cpp ) #[[Set CPP_PLATFORM in a parent CMakeLists.txt if reusing one of the provided platforms, else supply the missing definitions]] if (CPP_PLATFORM) target_sources(CppUTest PRIVATE ../Platforms/${CPP_PLATFORM}/UtestPlatform.cpp ) endif(CPP_PLATFORM) #[[Arrange for the include directory to be added to the include paths of any CMake target depending on CppUTest.]] target_include_directories(CppUTest PUBLIC $ $ ) set(CppUTest_headers ${CppUTestRootDirectory}/include/CppUTest/CommandLineArguments.h ${CppUTestRootDirectory}/include/CppUTest/PlatformSpecificFunctions.h ${CppUTestRootDirectory}/include/CppUTest/TestMemoryAllocator.h ${CppUTestRootDirectory}/include/CppUTest/CommandLineTestRunner.h ${CppUTestRootDirectory}/include/CppUTest/PlatformSpecificFunctions_c.h ${CppUTestRootDirectory}/include/CppUTest/TestOutput.h ${CppUTestRootDirectory}/include/CppUTest/CppUTestConfig.h ${CppUTestRootDirectory}/include/CppUTest/SimpleString.h ${CppUTestRootDirectory}/include/CppUTest/SimpleStringInternalCache.h ${CppUTestRootDirectory}/include/CppUTest/TestPlugin.h ${CppUTestRootDirectory}/include/CppUTest/JUnitTestOutput.h ${CppUTestRootDirectory}/include/CppUTest/TeamCityTestOutput.h ${CppUTestRootDirectory}/include/CppUTest/StandardCLibrary.h ${CppUTestRootDirectory}/include/CppUTest/TestRegistry.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetector.h ${CppUTestRootDirectory}/include/CppUTest/TestFailure.h ${CppUTestRootDirectory}/include/CppUTest/TestResult.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h ${CppUTestRootDirectory}/include/CppUTest/TestFilter.h ${CppUTestRootDirectory}/include/CppUTest/TestTestingFixture.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorNewMacros.h ${CppUTestRootDirectory}/include/CppUTest/TestHarness.h ${CppUTestRootDirectory}/include/CppUTest/Utest.h ${CppUTestRootDirectory}/include/CppUTest/MemoryLeakWarningPlugin.h ${CppUTestRootDirectory}/include/CppUTest/TestHarness_c.h ${CppUTestRootDirectory}/include/CppUTest/UtestMacros.h ${CppUTestRootDirectory}/include/CppUTest/SimpleMutex.h ) set_target_properties(CppUTest PROPERTIES PUBLIC_HEADER "${CppUTest_headers}") if (WIN32) target_link_libraries(CppUTest winmm.lib) endif (WIN32) install(TARGETS CppUTest EXPORT CppUTestTargets LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CppUTest" PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/CppUTest") cpputest-4.0/src/CppUTest/SimpleString.cpp000644 000765 000024 00000060055 13663176127 021622 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestMemoryAllocator.h" GlobalSimpleStringAllocatorStash::GlobalSimpleStringAllocatorStash() : originalAllocator_(NULLPTR) { } void GlobalSimpleStringAllocatorStash::save() { originalAllocator_ = SimpleString::getStringAllocator(); } void GlobalSimpleStringAllocatorStash::restore() { SimpleString::setStringAllocator(originalAllocator_); } GlobalSimpleStringMemoryAccountant::GlobalSimpleStringMemoryAccountant() : allocator_(NULLPTR) { accountant_ = new MemoryAccountant(); } GlobalSimpleStringMemoryAccountant::~GlobalSimpleStringMemoryAccountant() { restoreAllocator(); delete accountant_; delete allocator_; } void GlobalSimpleStringMemoryAccountant::restoreAllocator() { if (SimpleString::getStringAllocator() == allocator_) SimpleString::setStringAllocator(allocator_->originalAllocator()); } void GlobalSimpleStringMemoryAccountant::useCacheSizes(size_t cacheSizes[], size_t length) { accountant_->useCacheSizes(cacheSizes, length); } void GlobalSimpleStringMemoryAccountant::start() { if (allocator_ != NULLPTR) return; allocator_ = new AccountingTestMemoryAllocator(*accountant_, SimpleString::getStringAllocator()); SimpleString::setStringAllocator(allocator_); } void GlobalSimpleStringMemoryAccountant::stop() { if (allocator_ == NULLPTR) FAIL("Global SimpleString allocator stopped without starting"); if (SimpleString::getStringAllocator() != allocator_) FAIL("GlobalStrimpleStringMemoryAccountant: allocator has changed between start and stop!"); restoreAllocator(); } SimpleString GlobalSimpleStringMemoryAccountant::report() { return accountant_->report(); } AccountingTestMemoryAllocator* GlobalSimpleStringMemoryAccountant::getAllocator() { return allocator_; } TestMemoryAllocator* SimpleString::stringAllocator_ = NULLPTR; TestMemoryAllocator* SimpleString::getStringAllocator() { if (stringAllocator_ == NULLPTR) return defaultNewArrayAllocator(); return stringAllocator_; } void SimpleString::setStringAllocator(TestMemoryAllocator* allocator) { stringAllocator_ = allocator; } /* Avoid using the memory leak detector INSIDE SimpleString as its used inside the detector */ char* SimpleString::allocStringBuffer(size_t _size, const char* file, size_t line) { return getStringAllocator()->alloc_memory(_size, file, line); } void SimpleString::deallocStringBuffer(char* str, size_t size, const char* file, size_t line) { getStringAllocator()->free_memory(str, size, file, line); } char* SimpleString::getEmptyString() const { char* empty = allocStringBuffer(1, __FILE__, __LINE__); empty[0] = '\0'; return empty; } // does not support + or - prefixes unsigned SimpleString::AtoU(const char* str) { while (isSpace(*str)) str++; unsigned result = 0; for(; isDigit(*str) && *str >= '0'; str++) { result *= 10; result += static_cast(*str - '0'); } return result; } int SimpleString::AtoI(const char* str) { while (isSpace(*str)) str++; char first_char = *str; if (first_char == '-' || first_char == '+') str++; int result = 0; for(; isDigit(*str); str++) { result *= 10; result += *str - '0'; } return (first_char == '-') ? -result : result; } int SimpleString::StrCmp(const char* s1, const char* s2) { while(*s1 && *s1 == *s2) { ++s1; ++s2; } return *(const unsigned char *) s1 - *(const unsigned char *) s2; } size_t SimpleString::StrLen(const char* str) { size_t n = (size_t)-1; do n++; while (*str++); return n; } int SimpleString::StrNCmp(const char* s1, const char* s2, size_t n) { while (n && *s1 && *s1 == *s2) { --n; ++s1; ++s2; } return n ? *(const unsigned char *) s1 - *(const unsigned char *) s2 : 0; } char* SimpleString::StrNCpy(char* s1, const char* s2, size_t n) { char* result = s1; if((NULLPTR == s1) || (0 == n)) return result; while ((*s1++ = *s2++) && --n != 0) ; return result; } const char* SimpleString::StrStr(const char* s1, const char* s2) { if(!*s2) return s1; for (; *s1; s1++) if (StrNCmp(s1, s2, StrLen(s2)) == 0) return s1; return NULLPTR; } char SimpleString::ToLower(char ch) { return isUpper(ch) ? (char)((int)ch + ('a' - 'A')) : ch; } int SimpleString::MemCmp(const void* s1, const void *s2, size_t n) { const unsigned char* p1 = (const unsigned char*) s1; const unsigned char* p2 = (const unsigned char*) s2; while (n--) if (*p1 != *p2) { return *p1 - *p2; } else { ++p1; ++p2; } return 0; } void SimpleString::deallocateInternalBuffer() { if (buffer_) { deallocStringBuffer(buffer_, bufferSize_, __FILE__, __LINE__); buffer_ = NULLPTR; bufferSize_ = 0; } } void SimpleString::setInternalBufferAsEmptyString() { deallocateInternalBuffer(); bufferSize_ = 1; buffer_ = getEmptyString(); } void SimpleString::copyBufferToNewInternalBuffer(const char* otherBuffer, size_t bufferSize) { deallocateInternalBuffer(); bufferSize_ = bufferSize; buffer_ = copyToNewBuffer(otherBuffer, bufferSize_); } void SimpleString::setInternalBufferToNewBuffer(size_t bufferSize) { deallocateInternalBuffer(); bufferSize_ = bufferSize; buffer_ = allocStringBuffer(bufferSize_, __FILE__, __LINE__); buffer_[0] = '\0'; } void SimpleString::setInternalBufferTo(char* buffer, size_t bufferSize) { deallocateInternalBuffer(); bufferSize_ = bufferSize; buffer_ = buffer; } void SimpleString::copyBufferToNewInternalBuffer(const SimpleString& otherBuffer) { copyBufferToNewInternalBuffer(otherBuffer.buffer_, otherBuffer.size() + 1); } void SimpleString::copyBufferToNewInternalBuffer(const char* otherBuffer) { copyBufferToNewInternalBuffer(otherBuffer, StrLen(otherBuffer) + 1); } const char* SimpleString::getBuffer() const { return buffer_; } SimpleString::SimpleString(const char *otherBuffer) : buffer_(NULLPTR), bufferSize_(0) { if (otherBuffer == NULLPTR) setInternalBufferAsEmptyString(); else copyBufferToNewInternalBuffer(otherBuffer); } SimpleString::SimpleString(const char *other, size_t repeatCount) : buffer_(NULLPTR), bufferSize_(0) { size_t otherStringLength = StrLen(other); setInternalBufferToNewBuffer(otherStringLength * repeatCount + 1); char* next = buffer_; for (size_t i = 0; i < repeatCount; i++) { StrNCpy(next, other, otherStringLength + 1); next += otherStringLength; } *next = 0; } SimpleString::SimpleString(const SimpleString& other) : buffer_(NULLPTR), bufferSize_(0) { copyBufferToNewInternalBuffer(other.getBuffer()); } SimpleString& SimpleString::operator=(const SimpleString& other) { if (this != &other) copyBufferToNewInternalBuffer(other); return *this; } bool SimpleString::contains(const SimpleString& other) const { return StrStr(getBuffer(), other.getBuffer()) != NULLPTR; } bool SimpleString::containsNoCase(const SimpleString& other) const { return lowerCase().contains(other.lowerCase()); } bool SimpleString::startsWith(const SimpleString& other) const { if (other.size() == 0) return true; else if (size() == 0) return false; else return StrStr(getBuffer(), other.getBuffer()) == getBuffer(); } bool SimpleString::endsWith(const SimpleString& other) const { size_t length = size(); size_t other_length = other.size(); if (other_length == 0) return true; if (length == 0) return false; if (length < other_length) return false; return StrCmp(getBuffer() + length - other_length, other.getBuffer()) == 0; } size_t SimpleString::count(const SimpleString& substr) const { size_t num = 0; const char* str = getBuffer(); while (*str && (str = StrStr(str, substr.getBuffer()))) { str++; num++; } return num; } void SimpleString::split(const SimpleString& delimiter, SimpleStringCollection& col) const { size_t num = count(delimiter); size_t extraEndToken = (endsWith(delimiter)) ? 0 : 1U; col.allocate(num + extraEndToken); const char* str = getBuffer(); const char* prev; for (size_t i = 0; i < num; ++i) { prev = str; str = StrStr(str, delimiter.getBuffer()) + 1; col[i] = SimpleString(prev).subString(0, size_t (str - prev)); } if (extraEndToken) { col[num] = str; } } void SimpleString::replace(char to, char with) { size_t s = size(); for (size_t i = 0; i < s; i++) { if (getBuffer()[i] == to) buffer_[i] = with; } } void SimpleString::replace(const char* to, const char* with) { size_t c = count(to); if (c == 0) { return; } size_t len = size(); size_t tolen = StrLen(to); size_t withlen = StrLen(with); size_t newsize = len + (withlen * c) - (tolen * c) + 1; if (newsize > 1) { char* newbuf = allocStringBuffer(newsize, __FILE__, __LINE__); for (size_t i = 0, j = 0; i < len;) { if (StrNCmp(&getBuffer()[i], to, tolen) == 0) { StrNCpy(&newbuf[j], with, withlen + 1); j += withlen; i += tolen; } else { newbuf[j] = getBuffer()[i]; j++; i++; } } newbuf[newsize - 1] = '\0'; setInternalBufferTo(newbuf, newsize); } else setInternalBufferAsEmptyString(); } SimpleString SimpleString::lowerCase() const { SimpleString str(*this); size_t str_size = str.size(); for (size_t i = 0; i < str_size; i++) str.buffer_[i] = ToLower(str.getBuffer()[i]); return str; } const char *SimpleString::asCharString() const { return getBuffer(); } size_t SimpleString::size() const { return StrLen(getBuffer()); } bool SimpleString::isEmpty() const { return size() == 0; } SimpleString::~SimpleString() { deallocateInternalBuffer(); } bool operator==(const SimpleString& left, const SimpleString& right) { return 0 == SimpleString::StrCmp(left.asCharString(), right.asCharString()); } bool SimpleString::equalsNoCase(const SimpleString& str) const { return lowerCase() == str.lowerCase(); } bool operator!=(const SimpleString& left, const SimpleString& right) { return !(left == right); } SimpleString SimpleString::operator+(const SimpleString& rhs) const { SimpleString t(getBuffer()); t += rhs.getBuffer(); return t; } SimpleString& SimpleString::operator+=(const SimpleString& rhs) { return operator+=(rhs.getBuffer()); } SimpleString& SimpleString::operator+=(const char* rhs) { size_t originalSize = this->size(); size_t additionalStringSize = StrLen(rhs) + 1; size_t sizeOfNewString = originalSize + additionalStringSize; char* tbuffer = copyToNewBuffer(this->getBuffer(), sizeOfNewString); StrNCpy(tbuffer + originalSize, rhs, additionalStringSize); setInternalBufferTo(tbuffer, sizeOfNewString); return *this; } void SimpleString::padStringsToSameLength(SimpleString& str1, SimpleString& str2, char padCharacter) { if (str1.size() > str2.size()) { padStringsToSameLength(str2, str1, padCharacter); return; } char pad[2]; pad[0] = padCharacter; pad[1] = 0; str1 = SimpleString(pad, str2.size() - str1.size()) + str1; } SimpleString SimpleString::subString(size_t beginPos, size_t amount) const { if (beginPos > size()-1) return ""; SimpleString newString = getBuffer() + beginPos; if (newString.size() > amount) newString.buffer_[amount] = '\0'; return newString; } SimpleString SimpleString::subString(size_t beginPos) const { return subString(beginPos, npos); } char SimpleString::at(size_t pos) const { return getBuffer()[pos]; } size_t SimpleString::find(char ch) const { return findFrom(0, ch); } size_t SimpleString::findFrom(size_t starting_position, char ch) const { size_t length = size(); for (size_t i = starting_position; i < length; i++) if (at(i) == ch) return i; return npos; } SimpleString SimpleString::subStringFromTill(char startChar, char lastExcludedChar) const { size_t beginPos = find(startChar); if (beginPos == npos) return ""; size_t endPos = findFrom(beginPos, lastExcludedChar); if (endPos == npos) return subString(beginPos); return subString(beginPos, endPos - beginPos); } char* SimpleString::copyToNewBuffer(const char* bufferToCopy, size_t bufferSize) { char* newBuffer = allocStringBuffer(bufferSize, __FILE__, __LINE__); StrNCpy(newBuffer, bufferToCopy, bufferSize); newBuffer[bufferSize-1] = '\0'; return newBuffer; } void SimpleString::copyToBuffer(char* bufferToCopy, size_t bufferSize) const { if (bufferToCopy == NULLPTR || bufferSize == 0) return; size_t sizeToCopy = (bufferSize-1 < size()) ? (bufferSize-1) : size(); StrNCpy(bufferToCopy, getBuffer(), sizeToCopy); bufferToCopy[sizeToCopy] = '\0'; } bool SimpleString::isDigit(char ch) { return '0' <= ch && '9' >= ch; } bool SimpleString::isSpace(char ch) { return (ch == ' ') || (0x08 < ch && 0x0E > ch); } bool SimpleString::isUpper(char ch) { return 'A' <= ch && 'Z' >= ch; } SimpleString StringFrom(bool value) { return SimpleString(StringFromFormat("%s", value ? "true" : "false")); } SimpleString StringFrom(const char *value) { return SimpleString(value); } SimpleString StringFromOrNull(const char * expected) { return (expected) ? StringFrom(expected) : "(null)"; } SimpleString StringFrom(int value) { return StringFromFormat("%d", value); } SimpleString StringFrom(long value) { return StringFromFormat("%ld", value); } SimpleString StringFrom(const void* value) { return SimpleString("0x") + HexStringFrom(value); } SimpleString StringFrom(void (*value)()) { return SimpleString("0x") + HexStringFrom(value); } SimpleString HexStringFrom(long value) { return StringFromFormat("%lx", value); } SimpleString HexStringFrom(int value) { return StringFromFormat("%x", value); } SimpleString HexStringFrom(signed char value) { SimpleString result = StringFromFormat("%x", value); if(value < 0) { size_t size = result.size(); result = result.subString(size-(CPPUTEST_CHAR_BIT/4)); } return result; } SimpleString HexStringFrom(unsigned long value) { return StringFromFormat("%lx", value); } SimpleString HexStringFrom(unsigned int value) { return StringFromFormat("%x", value); } SimpleString BracketsFormattedHexStringFrom(int value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexStringFrom(unsigned int value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexStringFrom(long value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexStringFrom(unsigned long value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexStringFrom(signed char value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexString(SimpleString hexString) { return SimpleString("(0x") + hexString + ")" ; } /* * ARM compiler has only partial support for C++11. * Specifically nullptr_t is not officially supported */ #if __cplusplus > 199711L && !defined __arm__ && CPPUTEST_USE_STD_CPP_LIB SimpleString StringFrom(const std::nullptr_t value) { (void) value; return "(null)"; } #endif #ifdef CPPUTEST_USE_LONG_LONG SimpleString StringFrom(cpputest_longlong value) { return StringFromFormat("%lld", value); } SimpleString StringFrom(cpputest_ulonglong value) { return StringFromFormat("%llu", value); } SimpleString HexStringFrom(cpputest_longlong value) { return StringFromFormat("%llx", value); } SimpleString HexStringFrom(cpputest_ulonglong value) { return StringFromFormat("%llx", value); } SimpleString HexStringFrom(const void* value) { return HexStringFrom((cpputest_ulonglong) value); } SimpleString HexStringFrom(void (*value)()) { return HexStringFrom((cpputest_ulonglong) value); } SimpleString BracketsFormattedHexStringFrom(cpputest_longlong value) { return BracketsFormattedHexString(HexStringFrom(value)); } SimpleString BracketsFormattedHexStringFrom(cpputest_ulonglong value) { return BracketsFormattedHexString(HexStringFrom(value)); } #else /* CPPUTEST_USE_LONG_LONG */ static long convertPointerToLongValue(const void* value) { /* * This way of converting also can convert a 64bit pointer in a 32bit integer by truncating. * This isn't the right way to convert pointers values and need to change by implementing a * proper portable way to convert pointers to strings. */ long* long_value = (long*) &value; return *long_value; } static long convertFunctionPointerToLongValue(void (*value)()) { /* * This way of converting also can convert a 64bit pointer in a 32bit integer by truncating. * This isn't the right way to convert pointers values and need to change by implementing a * proper portable way to convert pointers to strings. */ long* long_value = (long*) &value; return *long_value; } SimpleString StringFrom(cpputest_longlong) { return ""; } SimpleString StringFrom(cpputest_ulonglong) { return ""; } SimpleString HexStringFrom(cpputest_longlong) { return ""; } SimpleString HexStringFrom(cpputest_ulonglong) { return ""; } SimpleString HexStringFrom(const void* value) { return StringFromFormat("%lx", convertPointerToLongValue(value)); } SimpleString HexStringFrom(void (*value)()) { return StringFromFormat("%lx", convertFunctionPointerToLongValue(value)); } SimpleString BracketsFormattedHexStringFrom(cpputest_longlong) { return ""; } SimpleString BracketsFormattedHexStringFrom(cpputest_ulonglong) { return ""; } #endif /* CPPUTEST_USE_LONG_LONG */ SimpleString StringFrom(double value, int precision) { if (PlatformSpecificIsNan(value)) return "Nan - Not a number"; else if (PlatformSpecificIsInf(value)) return "Inf - Infinity"; else return StringFromFormat("%.*g", precision, value); } SimpleString StringFrom(char value) { return StringFromFormat("%c", value); } SimpleString StringFrom(const SimpleString& value) { return SimpleString(value); } SimpleString StringFromFormat(const char* format, ...) { SimpleString resultString; va_list arguments; va_start(arguments, format); resultString = VStringFromFormat(format, arguments); va_end(arguments); return resultString; } SimpleString StringFrom(unsigned int i) { return StringFromFormat("%u", i); } #if CPPUTEST_USE_STD_CPP_LIB #include SimpleString StringFrom(const std::string& value) { return SimpleString(value.c_str()); } #endif SimpleString StringFrom(unsigned long i) { return StringFromFormat("%lu", i); } SimpleString VStringFromFormat(const char* format, va_list args) { va_list argsCopy; va_copy(argsCopy, args); enum { sizeOfdefaultBuffer = 100 }; char defaultBuffer[sizeOfdefaultBuffer]; SimpleString resultString; size_t size = (size_t)PlatformSpecificVSNprintf(defaultBuffer, sizeOfdefaultBuffer, format, args); if (size < sizeOfdefaultBuffer) { resultString = SimpleString(defaultBuffer); } else { size_t newBufferSize = size + 1; char* newBuffer = SimpleString::allocStringBuffer(newBufferSize, __FILE__, __LINE__); PlatformSpecificVSNprintf(newBuffer, newBufferSize, format, argsCopy); resultString = SimpleString(newBuffer); SimpleString::deallocStringBuffer(newBuffer, newBufferSize, __FILE__, __LINE__); } va_end(argsCopy); return resultString; } SimpleString StringFromBinary(const unsigned char* value, size_t size) { SimpleString result; for (size_t i = 0; i < size; i++) { result += StringFromFormat("%02X ", value[i]); } result = result.subString(0, result.size() - 1); return result; } SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size) { return (value) ? StringFromBinary(value, size) : "(null)"; } SimpleString StringFromBinaryWithSize(const unsigned char* value, size_t size) { SimpleString result = StringFromFormat("Size = %u | HexContents = ", (unsigned) size); size_t displayedSize = ((size > 128) ? 128 : size); result += StringFromBinaryOrNull(value, displayedSize); if (size > displayedSize) { result += " ..."; } return result; } SimpleString StringFromBinaryWithSizeOrNull(const unsigned char* value, size_t size) { return (value) ? StringFromBinaryWithSize(value, size) : "(null)"; } SimpleString StringFromMaskedBits(unsigned long value, unsigned long mask, size_t byteCount) { SimpleString result; size_t bitCount = (byteCount > sizeof(unsigned long)) ? (sizeof(unsigned long) * CPPUTEST_CHAR_BIT) : (byteCount * CPPUTEST_CHAR_BIT); const unsigned long msbMask = (((unsigned long) 1) << (bitCount - 1)); for (size_t i = 0; i < bitCount; i++) { if (mask & msbMask) { result += (value & msbMask) ? "1" : "0"; } else { result += "x"; } if (((i % 8) == 7) && (i != (bitCount - 1))) { result += " "; } value <<= 1; mask <<= 1; } return result; } SimpleString StringFromOrdinalNumber(unsigned int number) { unsigned int onesDigit = number % 10; const char* suffix; if (number >= 11 && number <= 13) { suffix = "th"; } else if (3 == onesDigit) { suffix = "rd"; } else if (2 == onesDigit) { suffix = "nd"; } else if (1 == onesDigit) { suffix = "st"; } else { suffix = "th"; } return StringFromFormat("%u%s", number, suffix); } SimpleStringCollection::SimpleStringCollection() { collection_ = NULLPTR; size_ = 0; } void SimpleStringCollection::allocate(size_t _size) { delete[] collection_; size_ = _size; collection_ = new SimpleString[size_]; } SimpleStringCollection::~SimpleStringCollection() { delete[] (collection_); } size_t SimpleStringCollection::size() const { return size_; } SimpleString& SimpleStringCollection::operator[](size_t index) { if (index >= size_) { empty_ = ""; return empty_; } return collection_[index]; } cpputest-4.0/src/CppUTest/MemoryLeakWarningPlugin.cpp000644 000765 000024 00000055614 13663176127 023761 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakWarningPlugin.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleMutex.h" /********** Enabling and disabling for C also *********/ #if CPPUTEST_USE_MEM_LEAK_DETECTION class MemLeakScopedMutex { public: MemLeakScopedMutex() : lock(MemoryLeakWarningPlugin::getGlobalDetector()->getMutex()) { } private: ScopedMutexLock lock; }; static void* threadsafe_mem_leak_malloc(size_t size, const char* file, size_t line) { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentMallocAllocator(), size, file, line, true); } static void threadsafe_mem_leak_free(void* buffer, const char* file, size_t line) { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) buffer); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentMallocAllocator(), (char*) buffer, file, line, true); } static void* threadsafe_mem_leak_realloc(void* memory, size_t size, const char* file, size_t line) { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->reallocMemory(getCurrentMallocAllocator(), (char*) memory, size, file, line, true); } static void* mem_leak_malloc(size_t size, const char* file, size_t line) { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentMallocAllocator(), size, file, line, true); } static void mem_leak_free(void* buffer, const char* file, size_t line) { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) buffer); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentMallocAllocator(), (char*) buffer, file, line, true); } static void* mem_leak_realloc(void* memory, size_t size, const char* file, size_t line) { return MemoryLeakWarningPlugin::getGlobalDetector()->reallocMemory(getCurrentMallocAllocator(), (char*) memory, size, file, line, true); } #endif static void* normal_malloc(size_t size, const char*, size_t) { return PlatformSpecificMalloc(size); } static void* normal_realloc(void* memory, size_t size, const char*, size_t) { return PlatformSpecificRealloc(memory, size); } static void normal_free(void* buffer, const char*, size_t) { PlatformSpecificFree(buffer); } #if CPPUTEST_USE_MEM_LEAK_DETECTION static void *(*malloc_fptr)(size_t size, const char* file, size_t line) = mem_leak_malloc; static void (*free_fptr)(void* mem, const char* file, size_t line) = mem_leak_free; static void*(*realloc_fptr)(void* memory, size_t size, const char* file, size_t line) = mem_leak_realloc; static void *(*saved_malloc_fptr)(size_t size, const char* file, size_t line) = mem_leak_malloc; static void (*saved_free_fptr)(void* mem, const char* file, size_t line) = mem_leak_free; static void*(*saved_realloc_fptr)(void* memory, size_t size, const char* file, size_t line) = mem_leak_realloc; #else static void *(*malloc_fptr)(size_t size, const char* file, size_t line) = normal_malloc; static void (*free_fptr)(void* mem, const char* file, size_t line) = normal_free; static void*(*realloc_fptr)(void* memory, size_t size, const char* file, size_t line) = normal_realloc; #endif void* cpputest_malloc_location_with_leak_detection(size_t size, const char* file, size_t line) { return malloc_fptr(size, file, line); } void* cpputest_realloc_location_with_leak_detection(void* memory, size_t size, const char* file, size_t line) { return realloc_fptr(memory, size, file, line); } void cpputest_free_location_with_leak_detection(void* buffer, const char* file, size_t line) { free_fptr(buffer, file, line); } /********** C++ *************/ #if CPPUTEST_USE_MEM_LEAK_DETECTION #undef new #if CPPUTEST_USE_STD_CPP_LIB #define UT_THROW_BAD_ALLOC_WHEN_NULL(memory) if (memory == NULLPTR) throw std::bad_alloc() #else #define UT_THROW_BAD_ALLOC_WHEN_NULL(memory) #endif static void* threadsafe_mem_leak_operator_new (size_t size) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_nothrow (size_t size) UT_NOTHROW { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); } static void* threadsafe_mem_leak_operator_new_debug (size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void *memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size, file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* threadsafe_mem_leak_operator_new_array_nothrow (size_t size) UT_NOTHROW { MemLeakScopedMutex lock; return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); } static void* threadsafe_mem_leak_operator_new_array_debug (size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { MemLeakScopedMutex lock; void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size, file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void threadsafe_mem_leak_operator_delete (void* mem) UT_NOTHROW { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewAllocator(), (char*) mem); } static void threadsafe_mem_leak_operator_delete_array (void* mem) UT_NOTHROW { MemLeakScopedMutex lock; MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewArrayAllocator(), (char*) mem); } static void* mem_leak_operator_new (size_t size) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_nothrow (size_t size) UT_NOTHROW { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size); } static void* mem_leak_operator_new_debug (size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { void *memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewAllocator(), size, file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* mem_leak_operator_new_array_nothrow (size_t size) UT_NOTHROW { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size); } static void* mem_leak_operator_new_array_debug (size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { void* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size, file, line); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void mem_leak_operator_delete (void* mem) UT_NOTHROW { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewAllocator(), (char*) mem); } static void mem_leak_operator_delete_array (void* mem) UT_NOTHROW { MemoryLeakWarningPlugin::getGlobalDetector()->invalidateMemory((char*) mem); MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewArrayAllocator(), (char*) mem); } static void* normal_operator_new (size_t size) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_nothrow (size_t size) UT_NOTHROW { return PlatformSpecificMalloc(size); } static void* normal_operator_new_debug (size_t size, const char* /*file*/, size_t /*line*/) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_array (size_t size) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void* normal_operator_new_array_nothrow (size_t size) UT_NOTHROW { return PlatformSpecificMalloc(size); } static void* normal_operator_new_array_debug (size_t size, const char* /*file*/, size_t /*line*/) UT_THROW(std::bad_alloc) { void* memory = PlatformSpecificMalloc(size); UT_THROW_BAD_ALLOC_WHEN_NULL(memory); return memory; } static void normal_operator_delete (void* mem) UT_NOTHROW { PlatformSpecificFree(mem); } static void normal_operator_delete_array (void* mem) UT_NOTHROW { PlatformSpecificFree(mem); } static void *(*operator_new_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new; static void *(*operator_new_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_nothrow; static void *(*operator_new_debug_fptr)(size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_debug; static void *(*operator_new_array_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array; static void *(*operator_new_array_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_array_nothrow; static void *(*operator_new_array_debug_fptr)(size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array_debug; static void (*operator_delete_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete; static void (*operator_delete_array_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete_array; static void *(*saved_operator_new_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new; static void *(*saved_operator_new_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_nothrow; static void *(*saved_operator_new_debug_fptr)(size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_debug; static void *(*saved_operator_new_array_fptr)(size_t size) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array; static void *(*saved_operator_new_array_nothrow_fptr)(size_t size) UT_NOTHROW = mem_leak_operator_new_array_nothrow; static void *(*saved_operator_new_array_debug_fptr)(size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) = mem_leak_operator_new_array_debug; static void (*saved_operator_delete_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete; static void (*saved_operator_delete_array_fptr)(void* mem) UT_NOTHROW = mem_leak_operator_delete_array; static int save_counter = 0; void* operator new(size_t size) UT_THROW(std::bad_alloc) { return operator_new_fptr(size); } void* operator new(size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { return operator_new_debug_fptr(size, file, line); } void operator delete(void* mem) UT_NOTHROW { operator_delete_fptr(mem); } void operator delete(void* mem, const char*, size_t) UT_NOTHROW { operator_delete_fptr(mem); } #if __cplusplus >= 201402L void operator delete (void* mem, size_t) UT_NOTHROW { operator_delete_fptr(mem); } #endif void* operator new[](size_t size) UT_THROW(std::bad_alloc) { return operator_new_array_fptr(size); } void* operator new [](size_t size, const char* file, size_t line) UT_THROW(std::bad_alloc) { return operator_new_array_debug_fptr(size, file, line); } void operator delete[](void* mem) UT_NOTHROW { operator_delete_array_fptr(mem); } void operator delete[](void* mem, const char*, size_t) UT_NOTHROW { operator_delete_array_fptr(mem); } #if __cplusplus >= 201402L void operator delete[] (void* mem, size_t) UT_NOTHROW { operator_delete_array_fptr(mem); } #endif #if CPPUTEST_USE_STD_CPP_LIB void* operator new(size_t size, const std::nothrow_t&) UT_NOTHROW { return operator_new_nothrow_fptr(size); } void operator delete(void* mem, const std::nothrow_t&) UT_NOTHROW { operator_delete_fptr(mem); } void* operator new[](size_t size, const std::nothrow_t&) UT_NOTHROW { return operator_new_array_nothrow_fptr(size); } void operator delete[](void* mem, const std::nothrow_t&) UT_NOTHROW { operator_delete_array_fptr(mem); } #else /* Have a similar method. This avoid unused operator_new_nothrow_fptr warning */ extern void* operator_new_nothrow(size_t size) UT_NOTHROW; extern void* operator_new_array_nothrow(size_t size) UT_NOTHROW; void* operator_new_nothrow(size_t size) UT_NOTHROW { return operator_new_nothrow_fptr(size); } void* operator_new_array_nothrow(size_t size) UT_NOTHROW { return operator_new_array_nothrow_fptr(size); } #endif #endif void MemoryLeakWarningPlugin::turnOffNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = normal_operator_new; operator_new_nothrow_fptr = normal_operator_new_nothrow; operator_new_debug_fptr = normal_operator_new_debug; operator_new_array_fptr = normal_operator_new_array; operator_new_array_nothrow_fptr = normal_operator_new_array_nothrow; operator_new_array_debug_fptr = normal_operator_new_array_debug; operator_delete_fptr = normal_operator_delete; operator_delete_array_fptr = normal_operator_delete_array; malloc_fptr = normal_malloc; realloc_fptr = normal_realloc; free_fptr = normal_free; #endif } void MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = mem_leak_operator_new; operator_new_nothrow_fptr = mem_leak_operator_new_nothrow; operator_new_debug_fptr = mem_leak_operator_new_debug; operator_new_array_fptr = mem_leak_operator_new_array; operator_new_array_nothrow_fptr = mem_leak_operator_new_array_nothrow; operator_new_array_debug_fptr = mem_leak_operator_new_array_debug; operator_delete_fptr = mem_leak_operator_delete; operator_delete_array_fptr = mem_leak_operator_delete_array; malloc_fptr = mem_leak_malloc; realloc_fptr = mem_leak_realloc; free_fptr = mem_leak_free; #endif } void MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION operator_new_fptr = threadsafe_mem_leak_operator_new; operator_new_nothrow_fptr = threadsafe_mem_leak_operator_new_nothrow; operator_new_debug_fptr = threadsafe_mem_leak_operator_new_debug; operator_new_array_fptr = threadsafe_mem_leak_operator_new_array; operator_new_array_nothrow_fptr = threadsafe_mem_leak_operator_new_array_nothrow; operator_new_array_debug_fptr = threadsafe_mem_leak_operator_new_array_debug; operator_delete_fptr = threadsafe_mem_leak_operator_delete; operator_delete_array_fptr = threadsafe_mem_leak_operator_delete_array; malloc_fptr = threadsafe_mem_leak_malloc; realloc_fptr = threadsafe_mem_leak_realloc; free_fptr = threadsafe_mem_leak_free; #endif } bool MemoryLeakWarningPlugin::areNewDeleteOverloaded() { #if CPPUTEST_USE_MEM_LEAK_DETECTION return operator_new_fptr == mem_leak_operator_new || operator_new_fptr == threadsafe_mem_leak_operator_new; #else return false; #endif } void MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION if (++save_counter > 1) return; saved_operator_new_fptr = operator_new_fptr; saved_operator_new_nothrow_fptr = operator_new_nothrow_fptr; saved_operator_new_debug_fptr = operator_new_debug_fptr; saved_operator_new_array_fptr = operator_new_array_fptr; saved_operator_new_array_nothrow_fptr = operator_new_array_nothrow_fptr; saved_operator_new_array_debug_fptr = operator_new_array_debug_fptr; saved_operator_delete_fptr = operator_delete_fptr; saved_operator_delete_array_fptr = operator_delete_array_fptr; saved_malloc_fptr = malloc_fptr; saved_realloc_fptr = realloc_fptr; saved_free_fptr = free_fptr; turnOffNewDeleteOverloads(); #endif } void MemoryLeakWarningPlugin::restoreNewDeleteOverloads() { #if CPPUTEST_USE_MEM_LEAK_DETECTION if (--save_counter > 0) return; operator_new_fptr = saved_operator_new_fptr; operator_new_nothrow_fptr = saved_operator_new_nothrow_fptr; operator_new_debug_fptr = saved_operator_new_debug_fptr; operator_new_array_fptr = saved_operator_new_array_fptr; operator_new_array_nothrow_fptr = saved_operator_new_array_nothrow_fptr; operator_new_array_debug_fptr = saved_operator_new_array_debug_fptr; operator_delete_fptr = saved_operator_delete_fptr; operator_delete_array_fptr = saved_operator_delete_array_fptr; malloc_fptr = saved_malloc_fptr; realloc_fptr = saved_realloc_fptr; free_fptr = saved_free_fptr; #endif } void crash_on_allocation_number(unsigned alloc_number) { static CrashOnAllocationAllocator crashAllocator; crashAllocator.setNumberToCrashOn(alloc_number); setCurrentMallocAllocator(&crashAllocator); setCurrentNewAllocator(&crashAllocator); setCurrentNewArrayAllocator(&crashAllocator); } class MemoryLeakWarningReporter: public MemoryLeakFailure { public: virtual ~MemoryLeakWarningReporter() _destructor_override { } virtual void fail(char* fail_string) _override { UtestShell* currentTest = UtestShell::getCurrent(); currentTest->failWith(FailFailure(currentTest, currentTest->getName().asCharString(), currentTest->getLineNumber(), fail_string), TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE }; static MemoryLeakFailure* globalReporter = NULLPTR; static MemoryLeakDetector* globalDetector = NULLPTR; MemoryLeakDetector* MemoryLeakWarningPlugin::getGlobalDetector() { if (globalDetector == NULLPTR) { saveAndDisableNewDeleteOverloads(); globalReporter = new MemoryLeakWarningReporter; globalDetector = new MemoryLeakDetector(globalReporter); restoreNewDeleteOverloads(); } return globalDetector; } MemoryLeakFailure* MemoryLeakWarningPlugin::getGlobalFailureReporter() { return globalReporter; } void MemoryLeakWarningPlugin::destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(bool des) { destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_ = des; } void MemoryLeakWarningPlugin::setGlobalDetector(MemoryLeakDetector* detector, MemoryLeakFailure* reporter) { globalDetector = detector; globalReporter = reporter; } void MemoryLeakWarningPlugin::destroyGlobalDetector() { turnOffNewDeleteOverloads(); delete globalDetector; delete globalReporter; globalDetector = NULLPTR; } MemoryLeakWarningPlugin* MemoryLeakWarningPlugin::firstPlugin_ = NULLPTR; MemoryLeakWarningPlugin* MemoryLeakWarningPlugin::getFirstPlugin() { return firstPlugin_; } MemoryLeakDetector* MemoryLeakWarningPlugin::getMemoryLeakDetector() { return memLeakDetector_; } void MemoryLeakWarningPlugin::ignoreAllLeaksInTest() { ignoreAllWarnings_ = true; } void MemoryLeakWarningPlugin::expectLeaksInTest(size_t n) { expectedLeaks_ = n; } MemoryLeakWarningPlugin::MemoryLeakWarningPlugin(const SimpleString& name, MemoryLeakDetector* localDetector) : TestPlugin(name), ignoreAllWarnings_(false), destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_(false), expectedLeaks_(0) { if (firstPlugin_ == NULLPTR) firstPlugin_ = this; if (localDetector) memLeakDetector_ = localDetector; else memLeakDetector_ = getGlobalDetector(); memLeakDetector_->enable(); } MemoryLeakWarningPlugin::~MemoryLeakWarningPlugin() { if (destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_) { MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); MemoryLeakWarningPlugin::destroyGlobalDetector(); } } void MemoryLeakWarningPlugin::preTestAction(UtestShell& /*test*/, TestResult& result) { memLeakDetector_->startChecking(); failureCount_ = result.getFailureCount(); } void MemoryLeakWarningPlugin::postTestAction(UtestShell& test, TestResult& result) { memLeakDetector_->stopChecking(); size_t leaks = memLeakDetector_->totalMemoryLeaks(mem_leak_period_checking); if (!ignoreAllWarnings_ && expectedLeaks_ != leaks && failureCount_ == result.getFailureCount()) { if(MemoryLeakWarningPlugin::areNewDeleteOverloaded()) { TestFailure f(&test, memLeakDetector_->report(mem_leak_period_checking)); result.addFailure(f); } else if(expectedLeaks_ > 0) { result.print(StringFromFormat("Warning: Expected %d leak(s), but leak detection was disabled", (int) expectedLeaks_).asCharString()); } } memLeakDetector_->markCheckingPeriodLeaksAsNonCheckingPeriod(); ignoreAllWarnings_ = false; expectedLeaks_ = 0; } const char* MemoryLeakWarningPlugin::FinalReport(size_t toBeDeletedLeaks) { size_t leaks = memLeakDetector_->totalMemoryLeaks(mem_leak_period_enabled); if (leaks != toBeDeletedLeaks) return memLeakDetector_->report(mem_leak_period_enabled); return ""; } cpputest-4.0/src/CppUTest/TeamCityTestOutput.cpp000644 000765 000024 00000005045 13663176127 023000 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TeamCityTestOutput.h" TeamCityTestOutput::TeamCityTestOutput() : currtest_(NULLPTR), currGroup_() { } TeamCityTestOutput::~TeamCityTestOutput() { } void TeamCityTestOutput::printCurrentTestStarted(const UtestShell& test) { print("##teamcity[testStarted name='"); printEscaped(test.getName().asCharString()); print("']\n"); if (!test.willRun()) { print("##teamcity[testIgnored name='"); printEscaped(test.getName().asCharString()); print("']\n"); } currtest_ = &test; } void TeamCityTestOutput::printCurrentTestEnded(const TestResult& res) { if (!currtest_) return; print("##teamcity[testFinished name='"); printEscaped(currtest_->getName().asCharString()); print("' duration='"); print(res.getCurrentTestTotalExecutionTime()); print("']\n"); } void TeamCityTestOutput::printCurrentGroupStarted(const UtestShell& test) { currGroup_ = test.getGroup(); print("##teamcity[testSuiteStarted name='"); printEscaped(currGroup_.asCharString()); print("']\n"); } void TeamCityTestOutput::printCurrentGroupEnded(const TestResult& /*res*/) { if (currGroup_ == "") return; print("##teamcity[testSuiteFinished name='"); printEscaped(currGroup_.asCharString()); print("']\n"); } void TeamCityTestOutput::printEscaped(const char* s) { while (*s) { char str[3]; if ((*s == '\'') || (*s == '|') || (*s == '[') || (*s == ']')) { str[0] = '|'; str[1] = *s; str[2] = 0; } else if (*s == '\r') { str[0] = '|'; str[1] = 'r'; str[2] = 0; } else if (*s == '\n') { str[0] = '|'; str[1] = 'n'; str[2] = 0; } else { str[0] = *s; str[1] = 0; } printBuffer(str); s++; } } void TeamCityTestOutput::printFailure(const TestFailure& failure) { print("##teamcity[testFailed name='"); printEscaped(failure.getTestNameOnly().asCharString()); print("' message='"); if (failure.isOutsideTestFile() || failure.isInHelperFunction()) { print("TEST failed ("); print(failure.getTestFileName().asCharString()); print(":"); print(failure.getTestLineNumber()); print("): "); } printEscaped(failure.getFileName().asCharString()); print(":"); print(failure.getFailureLineNumber()); print("' details='"); printEscaped(failure.getMessage().asCharString()); print("']\n"); } cpputest-4.0/src/CppUTest/Utest.cpp000644 000765 000024 00000062276 13663176127 020315 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestOutput.h" bool doubles_equal(double d1, double d2, double threshold) { if (PlatformSpecificIsNan(d1) || PlatformSpecificIsNan(d2) || PlatformSpecificIsNan(threshold)) return false; if (PlatformSpecificIsInf(d1) && PlatformSpecificIsInf(d2)) { return true; } return PlatformSpecificFabs(d1 - d2) <= threshold; } /* Sometimes stubs use the CppUTest assertions. * Its not correct to do so, but this small helper class will prevent a segmentation fault and instead * will give an error message and also the file/line of the check that was executed outside the tests. */ class OutsideTestRunnerUTest: public UtestShell { public: static OutsideTestRunnerUTest& instance(); virtual TestResult& getTestResult() { return defaultTestResult; } virtual ~OutsideTestRunnerUTest() _destructor_override { } private: OutsideTestRunnerUTest() : UtestShell("\n\t NOTE: Assertion happened without being in a test run (perhaps in main?)", "\n\t Something is very wrong. Check this assertion and fix", "unknown file", 0), defaultTestResult(defaultOutput) { } ConsoleTestOutput defaultOutput; TestResult defaultTestResult; }; OutsideTestRunnerUTest& OutsideTestRunnerUTest::instance() { static OutsideTestRunnerUTest instance_; return instance_; } /* * Below helpers are used for the PlatformSpecificSetJmp and LongJmp. They pass a method for what needs to happen after * the jump, so that the stack stays right. * */ extern "C" { static void helperDoTestSetup(void* data) { ((Utest*)data)->setup(); } static void helperDoTestBody(void* data) { ((Utest*)data)->testBody(); } static void helperDoTestTeardown(void* data) { ((Utest*)data)->teardown(); } struct HelperTestRunInfo { HelperTestRunInfo(UtestShell* shell, TestPlugin* plugin, TestResult* result) : shell_(shell), plugin_(plugin), result_(result){} UtestShell* shell_; TestPlugin* plugin_; TestResult* result_; }; static void helperDoRunOneTestInCurrentProcess(void* data) { HelperTestRunInfo* runInfo = (HelperTestRunInfo*) data; UtestShell* shell = runInfo->shell_; TestPlugin* plugin = runInfo->plugin_; TestResult* result = runInfo->result_; shell->runOneTestInCurrentProcess(plugin, *result); } static void helperDoRunOneTestSeperateProcess(void* data) { HelperTestRunInfo* runInfo = (HelperTestRunInfo*) data; UtestShell* shell = runInfo->shell_; TestPlugin* plugin = runInfo->plugin_; TestResult* result = runInfo->result_; PlatformSpecificRunTestInASeperateProcess(shell, plugin, result); } } /******************************** */ UtestShell::UtestShell() : group_("UndefinedTestGroup"), name_("UndefinedTest"), file_("UndefinedFile"), lineNumber_(0), next_(NULLPTR), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::UtestShell(const char* groupName, const char* testName, const char* fileName, size_t lineNumber) : group_(groupName), name_(testName), file_(fileName), lineNumber_(lineNumber), next_(NULLPTR), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::UtestShell(const char* groupName, const char* testName, const char* fileName, size_t lineNumber, UtestShell* nextTest) : group_(groupName), name_(testName), file_(fileName), lineNumber_(lineNumber), next_(nextTest), isRunAsSeperateProcess_(false), hasFailed_(false) { } UtestShell::~UtestShell() { } // LCOV_EXCL_START - actually covered but not in .gcno due to race condition static void defaultCrashMethod() { UtestShell* ptr = (UtestShell*) NULLPTR; ptr->countTests(); } // LCOV_EXCL_STOP static void (*pleaseCrashMeRightNow) () = defaultCrashMethod; void UtestShell::setCrashMethod(void (*crashme)()) { pleaseCrashMeRightNow = crashme; } void UtestShell::resetCrashMethod() { pleaseCrashMeRightNow = defaultCrashMethod; } void UtestShell::crash() { pleaseCrashMeRightNow(); } void UtestShell::runOneTest(TestPlugin* plugin, TestResult& result) { hasFailed_ = false; result.countRun(); HelperTestRunInfo runInfo(this, plugin, &result); if (isRunInSeperateProcess()) PlatformSpecificSetJmp(helperDoRunOneTestSeperateProcess, &runInfo); else PlatformSpecificSetJmp(helperDoRunOneTestInCurrentProcess, &runInfo); } Utest* UtestShell::createTest() { return new Utest(); } void UtestShell::destroyTest(Utest* test) { delete test; } void UtestShell::runOneTestInCurrentProcess(TestPlugin* plugin, TestResult& result) { result.printVeryVerbose("\n-- before runAllPreTestAction: "); plugin->runAllPreTestAction(*this, result); result.printVeryVerbose("\n-- after runAllPreTestAction: "); //save test context, so that test class can be tested UtestShell* savedTest = UtestShell::getCurrent(); TestResult* savedResult = UtestShell::getTestResult(); UtestShell::setTestResult(&result); UtestShell::setCurrentTest(this); result.printVeryVerbose("\n---- before createTest: "); Utest* testToRun = createTest(); result.printVeryVerbose("\n---- after createTest: "); result.printVeryVerbose("\n------ before runTest: "); testToRun->run(); result.printVeryVerbose("\n------ after runTest: "); UtestShell::setCurrentTest(savedTest); UtestShell::setTestResult(savedResult); result.printVeryVerbose("\n---- before destroyTest: "); destroyTest(testToRun); result.printVeryVerbose("\n---- after destroyTest: "); result.printVeryVerbose("\n-- before runAllPostTestAction: "); plugin->runAllPostTestAction(*this, result); result.printVeryVerbose("\n-- after runAllPostTestAction: "); } UtestShell *UtestShell::getNext() const { return next_; } UtestShell* UtestShell::addTest(UtestShell *test) { next_ = test; return this; } size_t UtestShell::countTests() { return next_ ? next_->countTests() + 1 : 1; } SimpleString UtestShell::getMacroName() const { return "TEST"; } const SimpleString UtestShell::getName() const { return SimpleString(name_); } const SimpleString UtestShell::getGroup() const { return SimpleString(group_); } SimpleString UtestShell::getFormattedName() const { SimpleString formattedName(getMacroName()); formattedName += "("; formattedName += group_; formattedName += ", "; formattedName += name_; formattedName += ")"; return formattedName; } bool UtestShell::hasFailed() const { return hasFailed_; } void UtestShell::countCheck() { getTestResult()->countCheck(); } bool UtestShell::willRun() const { return true; } bool UtestShell::isRunInSeperateProcess() const { return isRunAsSeperateProcess_; } void UtestShell::setRunInSeperateProcess() { isRunAsSeperateProcess_ = true; } void UtestShell::setRunIgnored() { } void UtestShell::setFileName(const char* fileName) { file_ = fileName; } void UtestShell::setLineNumber(size_t lineNumber) { lineNumber_ = lineNumber; } void UtestShell::setGroupName(const char* groupName) { group_ = groupName; } void UtestShell::setTestName(const char* testName) { name_ = testName; } const SimpleString UtestShell::getFile() const { return SimpleString(file_); } size_t UtestShell::getLineNumber() const { return lineNumber_; } bool UtestShell::match(const char* target, const TestFilter* filters) const { if(filters == NULLPTR) return true; for(; filters != NULLPTR; filters = filters->getNext()) if(filters->match(target)) return true; return false; } bool UtestShell::shouldRun(const TestFilter* groupFilters, const TestFilter* nameFilters) const { return match(group_, groupFilters) && match(name_, nameFilters); } void UtestShell::failWith(const TestFailure& failure) { failWith(failure, NormalTestTerminator()); } // LCOV_EXCL_LINE void UtestShell::failWith(const TestFailure& failure, const TestTerminator& terminator) { hasFailed_ = true; getTestResult()->addFailure(failure); terminator.exitCurrentTest(); } // LCOV_EXCL_LINE void UtestShell::exitTest(const TestTerminator& terminator) { terminator.exitCurrentTest(); } // LCOV_EXCL_LINE void UtestShell::assertTrue(bool condition, const char *checkString, const char *conditionString, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (!condition) failWith(CheckFailure(this, fileName, lineNumber, checkString, conditionString, text), testTerminator); } void UtestShell::fail(const char *text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); failWith(FailFailure(this, fileName, lineNumber, text), testTerminator); } // LCOV_EXCL_LINE void UtestShell::assertCstrEqual(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); if (SimpleString::StrCmp(expected, actual) != 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); } void UtestShell::assertCstrNEqual(const char* expected, const char* actual, size_t length, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); if (SimpleString::StrNCmp(expected, actual, length) != 0) failWith(StringEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); } void UtestShell::assertCstrNoCaseEqual(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber) { getTestResult()->countCheck(); if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(StringEqualNoCaseFailure(this, fileName, lineNumber, expected, actual, text)); if (!SimpleString(expected).equalsNoCase(actual)) failWith(StringEqualNoCaseFailure(this, fileName, lineNumber, expected, actual, text)); } void UtestShell::assertCstrContains(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber) { getTestResult()->countCheck(); if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual, text)); if (!SimpleString(actual).contains(expected)) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual, text)); } void UtestShell::assertCstrNoCaseContains(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber) { getTestResult()->countCheck(); if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual, text)); if (!SimpleString(actual).containsNoCase(expected)) failWith(ContainsFailure(this, fileName, lineNumber, expected, actual, text)); } void UtestShell::assertLongsEqual(long expected, long actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(LongsEqualFailure (this, fileName, lineNumber, expected, actual, text), testTerminator); } void UtestShell::assertUnsignedLongsEqual(unsigned long expected, unsigned long actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(UnsignedLongsEqualFailure (this, fileName, lineNumber, expected, actual, text), testTerminator); } void UtestShell::assertLongLongsEqual(cpputest_longlong expected, cpputest_longlong actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); #ifdef CPPUTEST_USE_LONG_LONG if (expected != actual) failWith(LongLongsEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); #else (void)expected; (void)actual; failWith(FeatureUnsupportedFailure(this, fileName, lineNumber, "CPPUTEST_USE_LONG_LONG", text), testTerminator); #endif } void UtestShell::assertUnsignedLongLongsEqual(cpputest_ulonglong expected, cpputest_ulonglong actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); #ifdef CPPUTEST_USE_LONG_LONG if (expected != actual) failWith(UnsignedLongLongsEqualFailure(this, fileName, lineNumber, expected, actual, text), testTerminator); #else (void)expected; (void)actual; failWith(FeatureUnsupportedFailure(this, fileName, lineNumber, "CPPUTEST_USE_LONG_LONG", text), testTerminator); #endif } void UtestShell::assertSignedBytesEqual(signed char expected, signed char actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(SignedBytesEqualFailure (this, fileName, lineNumber, expected, actual, text), testTerminator); } void UtestShell::assertPointersEqual(const void* expected, const void* actual, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(EqualsFailure(this, fileName, lineNumber, StringFrom(expected), StringFrom(actual), text), testTerminator); } void UtestShell::assertFunctionPointersEqual(void (*expected)(), void (*actual)(), const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (expected != actual) failWith(EqualsFailure(this, fileName, lineNumber, StringFrom(expected), StringFrom(actual), text), testTerminator); } void UtestShell::assertDoublesEqual(double expected, double actual, double threshold, const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (!doubles_equal(expected, actual, threshold)) failWith(DoublesEqualFailure(this, fileName, lineNumber, expected, actual, threshold, text), testTerminator); } void UtestShell::assertBinaryEqual(const void *expected, const void *actual, size_t length, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (length == 0) return; if (actual == NULLPTR && expected == NULLPTR) return; if (actual == NULLPTR || expected == NULLPTR) failWith(BinaryEqualFailure(this, fileName, lineNumber, (const unsigned char *) expected, (const unsigned char *) actual, length, text), testTerminator); if (SimpleString::MemCmp(expected, actual, length) != 0) failWith(BinaryEqualFailure(this, fileName, lineNumber, (const unsigned char *) expected, (const unsigned char *) actual, length, text), testTerminator); } void UtestShell::assertBitsEqual(unsigned long expected, unsigned long actual, unsigned long mask, size_t byteCount, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if ((expected & mask) != (actual & mask)) failWith(BitsEqualFailure(this, fileName, lineNumber, expected, actual, mask, byteCount, text), testTerminator); } void UtestShell::assertEquals(bool failed, const char* expected, const char* actual, const char* text, const char* file, size_t line, const TestTerminator& testTerminator) { getTestResult()->countCheck(); if (failed) failWith(CheckEqualFailure(this, file, line, expected, actual, text), testTerminator); } void UtestShell::assertCompare(bool comparison, const char *checkString, const char *comparisonString, const char *text, const char *fileName, size_t lineNumber, const TestTerminator &testTerminator) { getTestResult()->countCheck(); if (!comparison) failWith(ComparisonFailure(this, fileName, lineNumber, checkString, comparisonString, text), testTerminator); } void UtestShell::print(const char *text, const char* fileName, size_t lineNumber) { SimpleString stringToPrint = "\n"; stringToPrint += fileName; stringToPrint += ":"; stringToPrint += StringFrom(lineNumber); stringToPrint += " "; stringToPrint += text; getTestResult()->print(stringToPrint.asCharString()); } void UtestShell::print(const SimpleString& text, const char* fileName, size_t lineNumber) { print(text.asCharString(), fileName, lineNumber); } void UtestShell::printVeryVerbose(const char* text) { getTestResult()->printVeryVerbose(text); } TestResult* UtestShell::testResult_ = NULLPTR; UtestShell* UtestShell::currentTest_ = NULLPTR; void UtestShell::setTestResult(TestResult* result) { testResult_ = result; } void UtestShell::setCurrentTest(UtestShell* test) { currentTest_ = test; } TestResult* UtestShell::getTestResult() { if (testResult_ == NULLPTR) return &OutsideTestRunnerUTest::instance().getTestResult(); return testResult_; } UtestShell* UtestShell::getCurrent() { if (currentTest_ == NULLPTR) return &OutsideTestRunnerUTest::instance(); return currentTest_; } ExecFunctionTestShell::~ExecFunctionTestShell() { } ////////////// Utest //////////// Utest::Utest() { } Utest::~Utest() { } #if CPPUTEST_USE_STD_CPP_LIB void Utest::run() { UtestShell* current = UtestShell::getCurrent(); int jumpResult = 0; try { current->printVeryVerbose("\n-------- before setup: "); jumpResult = PlatformSpecificSetJmp(helperDoTestSetup, this); current->printVeryVerbose("\n-------- after setup: "); if (jumpResult) { current->printVeryVerbose("\n---------- before body: "); PlatformSpecificSetJmp(helperDoTestBody, this); current->printVeryVerbose("\n---------- after body: "); } } catch (CppUTestFailedException&) { PlatformSpecificRestoreJumpBuffer(); } try { current->printVeryVerbose("\n-------- before teardown: "); PlatformSpecificSetJmp(helperDoTestTeardown, this); current->printVeryVerbose("\n-------- after teardown: "); } catch (CppUTestFailedException&) { PlatformSpecificRestoreJumpBuffer(); } } #else void Utest::run() { if (PlatformSpecificSetJmp(helperDoTestSetup, this)) { PlatformSpecificSetJmp(helperDoTestBody, this); } PlatformSpecificSetJmp(helperDoTestTeardown, this); } #endif void Utest::setup() { } void Utest::testBody() { } void Utest::teardown() { } /////////////////// Terminators TestTerminator::~TestTerminator() { } void NormalTestTerminator::exitCurrentTest() const { #if CPPUTEST_USE_STD_CPP_LIB throw CppUTestFailedException(); #else TestTerminatorWithoutExceptions().exitCurrentTest(); #endif } NormalTestTerminator::~NormalTestTerminator() { } void TestTerminatorWithoutExceptions::exitCurrentTest() const { PlatformSpecificLongJmp(); } // LCOV_EXCL_LINE TestTerminatorWithoutExceptions::~TestTerminatorWithoutExceptions() { } //////////////////// ExecFunction // ExecFunction::ExecFunction() { } ExecFunction::~ExecFunction() { } ExecFunctionWithoutParameters::ExecFunctionWithoutParameters(void(*testFunction)()) : testFunction_(testFunction) { } ExecFunctionWithoutParameters::~ExecFunctionWithoutParameters() { } void ExecFunctionWithoutParameters::exec() { if (testFunction_) testFunction_(); } //////////////////// ExecFunctionTest ExecFunctionTest::ExecFunctionTest(ExecFunctionTestShell* shell) : shell_(shell) { } void ExecFunctionTest::testBody() { if (shell_->testFunction_) shell_->testFunction_->exec(); } void ExecFunctionTest::setup() { if (shell_->setup_) shell_->setup_(); } void ExecFunctionTest::teardown() { if (shell_->teardown_) shell_->teardown_(); } /////////////// IgnoredUtestShell ///////////// IgnoredUtestShell::IgnoredUtestShell(): runIgnored_(false) { } IgnoredUtestShell::IgnoredUtestShell(const char* groupName, const char* testName, const char* fileName, size_t lineNumber) : UtestShell(groupName, testName, fileName, lineNumber), runIgnored_(false) { } IgnoredUtestShell::~IgnoredUtestShell() { } bool IgnoredUtestShell::willRun() const { if (runIgnored_) return UtestShell::willRun(); return false; } SimpleString IgnoredUtestShell::getMacroName() const { if (runIgnored_) return "TEST"; return "IGNORE_TEST"; } void IgnoredUtestShell::runOneTest(TestPlugin* plugin, TestResult& result) { if (runIgnored_) { UtestShell::runOneTest(plugin, result); return; } result.countIgnored(); } void IgnoredUtestShell::setRunIgnored() { runIgnored_ = true; } //////////////////// UtestShellPointerArray UtestShellPointerArray::UtestShellPointerArray(UtestShell* firstTest) : arrayOfTests_(NULLPTR), count_(0) { count_ = (firstTest) ? firstTest->countTests() : 0; if (count_ == 0) return; arrayOfTests_ = new UtestShell*[count_]; UtestShell*currentTest = firstTest; for (size_t i = 0; i < count_; i++) { arrayOfTests_[i] = currentTest; currentTest = currentTest->getNext(); } } UtestShellPointerArray::~UtestShellPointerArray() { delete [] arrayOfTests_; } void UtestShellPointerArray::swap(size_t index1, size_t index2) { UtestShell* e2 = arrayOfTests_[index2]; UtestShell* e1 = arrayOfTests_[index1]; arrayOfTests_[index1] = e2; arrayOfTests_[index2] = e1; } void UtestShellPointerArray::shuffle(size_t seed) { if (count_ == 0) return; PlatformSpecificSrand((unsigned int) seed); for (size_t i = count_ - 1; i >= 1; --i) { if (count_ == 0) return; const size_t j = ((size_t)PlatformSpecificRand()) % (i + 1); // distribution biased by modulo, but good enough for shuffling swap(i, j); } relinkTestsInOrder(); } void UtestShellPointerArray::reverse() { if (count_ == 0) return; size_t halfCount = count_ / 2; for (size_t i = 0; i < halfCount; i++) { size_t j = count_ - i - 1; swap(i, j); } relinkTestsInOrder(); } void UtestShellPointerArray::relinkTestsInOrder() { UtestShell *tests = NULLPTR; for (size_t i = 0; i < count_; i++) tests = arrayOfTests_[count_ - i - 1]->addTest(tests); } UtestShell* UtestShellPointerArray::getFirstTest() const { return get(0); } UtestShell* UtestShellPointerArray::get(size_t index) const { if (index >= count_) return NULLPTR; return arrayOfTests_[index]; } ////////////// TestInstaller //////////// TestInstaller::TestInstaller(UtestShell& shell, const char* groupName, const char* testName, const char* fileName, size_t lineNumber) { shell.setGroupName(groupName); shell.setTestName(testName); shell.setFileName(fileName); shell.setLineNumber(lineNumber); TestRegistry::getCurrentRegistry()->addTest(&shell); } TestInstaller::~TestInstaller() { } void TestInstaller::unDo() { TestRegistry::getCurrentRegistry()->unDoLastAddTest(); } cpputest-4.0/src/CppUTest/CMakeIntegration-README.md000644 000765 000024 00000001550 13663176127 023132 0ustar00basvoddestaff000000 000000 It is possible to integrate CppUTest as a sub-module of an enclosing CMake project. This may be useful if CppUTest is being built for a target platform other than that of the development host. The following is an example how an external project can refer to this CMakeLists.txt to build CppUTest as a library and include it as a target dependency. ```cmake cmake_minimum_required(VERSION 3.7) project(trying_CppUtest) SET(CppUTestRootDirectory /path/to/cpputest) # Either set CPP_PLATFORM to one of the provided platforms under # ${CppUTestRootDirectory}/src/Platforms/, or provide a project-specific # platform.cpp (as shown below) add_subdirectory(${CppUTestRootDirectory}/src/CppUTest CppUTest) target_sources(CppUTest PRIVATE ${PROJECT_SOURCE_DIR}/UtestPlatform.cpp ) add_executable(trying_CppUtest main.cpp) target_link_libraries(trying_CppUtest CppUTest) ``` cpputest-4.0/src/CppUTest/TestHarness_c.cpp000644 000765 000024 00000023642 13663176127 021750 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestHarness_c.h" extern "C" { void CHECK_EQUAL_C_BOOL_LOCATION(int expected, int actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertEquals(!!expected != !!actual, expected ? "true" : "false", actual ? "true" : "false", text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_INT_LOCATION(int expected, int actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_UINT_LOCATION(unsigned int expected, unsigned int actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertUnsignedLongsEqual((unsigned long)expected, (unsigned long)actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_LONG_LOCATION(long expected, long actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertLongsEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_ULONG_LOCATION(unsigned long expected, unsigned long actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertUnsignedLongsEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_LONGLONG_LOCATION(cpputest_longlong expected, cpputest_longlong actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertLongLongsEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_ULONGLONG_LOCATION(cpputest_ulonglong expected, cpputest_ulonglong actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertUnsignedLongLongsEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_REAL_LOCATION(double expected, double actual, double threshold, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_CHAR_LOCATION(char expected, char actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertEquals(((expected) != (actual)), StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } extern void CHECK_EQUAL_C_UBYTE_LOCATION(unsigned char expected, unsigned char actual, const char* text, const char* fileName, size_t lineNumber)\ { UtestShell::getCurrent()->assertEquals(((expected) != (actual)),StringFrom((int)expected).asCharString(), StringFrom((int) actual).asCharString(), text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_SBYTE_LOCATION(char signed expected, signed char actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertEquals(((expected) != (actual)),StringFrom((int)expected).asCharString(), StringFrom((int) actual).asCharString(), text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_STRING_LOCATION(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertCstrEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void CHECK_EQUAL_C_POINTER_LOCATION(const void* expected, const void* actual, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertPointersEqual(expected, actual, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } extern void CHECK_EQUAL_C_BITS_LOCATION(unsigned int expected, unsigned int actual, unsigned int mask, size_t size, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertBitsEqual(expected, actual, mask, size, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } void FAIL_TEXT_C_LOCATION(const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->fail(text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE void FAIL_C_LOCATION(const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->fail("", fileName, lineNumber, TestTerminatorWithoutExceptions()); } // LCOV_EXCL_LINE void CHECK_C_LOCATION(int condition, const char* conditionString, const char* text, const char* fileName, size_t lineNumber) { UtestShell::getCurrent()->assertTrue(condition != 0, "CHECK_C", conditionString, text, fileName, lineNumber, TestTerminatorWithoutExceptions()); } enum { NO_COUNTDOWN = -1, OUT_OF_MEMORRY = 0 }; static int malloc_out_of_memory_counter = NO_COUNTDOWN; static int malloc_count = 0; void cpputest_malloc_count_reset(void) { malloc_count = 0; } int cpputest_malloc_get_count() { return malloc_count; } static TestMemoryAllocator* originalAllocator = NULLPTR; void cpputest_malloc_set_out_of_memory() { if (originalAllocator == NULLPTR) originalAllocator = getCurrentMallocAllocator(); setCurrentMallocAllocator(NullUnknownAllocator::defaultAllocator()); } void cpputest_malloc_set_not_out_of_memory() { malloc_out_of_memory_counter = NO_COUNTDOWN; setCurrentMallocAllocator(originalAllocator); originalAllocator = NULLPTR; } void cpputest_malloc_set_out_of_memory_countdown(int count) { malloc_out_of_memory_counter = count; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) cpputest_malloc_set_out_of_memory(); } void* cpputest_malloc(size_t size) { return cpputest_malloc_location(size, "", 0); } char* cpputest_strdup(const char* str) { return cpputest_strdup_location(str, "", 0); } char* cpputest_strndup(const char* str, size_t n) { return cpputest_strndup_location(str, n, "", 0); } void* cpputest_calloc(size_t num, size_t size) { return cpputest_calloc_location(num, size, "", 0); } void* cpputest_realloc(void* ptr, size_t size) { return cpputest_realloc_location(ptr, size, "", 0); } void cpputest_free(void* buffer) { cpputest_free_location(buffer, "", 0); } static void countdown() { if (malloc_out_of_memory_counter <= NO_COUNTDOWN) return; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) return; malloc_out_of_memory_counter--; if (malloc_out_of_memory_counter == OUT_OF_MEMORRY) cpputest_malloc_set_out_of_memory(); } void* cpputest_malloc_location(size_t size, const char* file, size_t line) { countdown(); malloc_count++; return cpputest_malloc_location_with_leak_detection(size, file, line); } static size_t test_harness_c_strlen(const char * str) { size_t n = 0; while (*str++) n++; return n; } static char* strdup_alloc(const char * str, size_t size, const char* file, size_t line) { char* result = (char*) cpputest_malloc_location(size, file, line); PlatformSpecificMemCpy(result, str, size); result[size-1] = '\0'; return result; } char* cpputest_strdup_location(const char * str, const char* file, size_t line) { size_t length = 1 + test_harness_c_strlen(str); return strdup_alloc(str, length, file, line); } char* cpputest_strndup_location(const char * str, size_t n, const char* file, size_t line) { size_t length = test_harness_c_strlen(str); length = length < n ? length : n; length = length + 1; return strdup_alloc(str, length, file, line); } void* cpputest_calloc_location(size_t num, size_t size, const char* file, size_t line) { void* mem = cpputest_malloc_location(num * size, file, line); if (mem) PlatformSpecificMemset(mem, 0, num*size); return mem; } void* cpputest_realloc_location(void* memory, size_t size, const char* file, size_t line) { return cpputest_realloc_location_with_leak_detection(memory, size, file, line); } void cpputest_free_location(void* buffer, const char* file, size_t line) { cpputest_free_location_with_leak_detection(buffer, file, line); } } cpputest-4.0/src/CppUTest/SimpleStringInternalCache.cpp000644 000765 000024 00000025706 13663176127 024247 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleStringInternalCache.h" struct SimpleStringMemoryBlock { SimpleStringMemoryBlock* next_; char* memory_; }; struct SimpleStringInternalCacheNode { size_t size_; SimpleStringMemoryBlock* freeMemoryHead_; SimpleStringMemoryBlock* usedMemoryHead_; }; SimpleStringInternalCache::SimpleStringInternalCache() : allocator_(defaultMallocAllocator()), cache_(NULLPTR), nonCachedAllocations_(NULLPTR), hasWarnedAboutDeallocations(false) { cache_ = createInternalCacheNodes(); } SimpleStringInternalCache::~SimpleStringInternalCache() { allocator_ = defaultMallocAllocator(); destroyInternalCacheNode(cache_); } void SimpleStringInternalCache::setAllocator(TestMemoryAllocator* allocator) { allocator_ = allocator; } SimpleStringInternalCacheNode* SimpleStringInternalCache::createInternalCacheNodes() { SimpleStringInternalCacheNode* node = (SimpleStringInternalCacheNode*) (void*) allocator_->alloc_memory(sizeof(SimpleStringInternalCacheNode) * amountOfInternalCacheNodes, __FILE__, __LINE__); for (int i = 0; i < amountOfInternalCacheNodes; i++) { node[i].freeMemoryHead_ = NULLPTR; node[i].usedMemoryHead_ = NULLPTR; } node[0].size_ = 32; node[1].size_ = 64; node[2].size_ = 96; node[3].size_ = 128; node[4].size_ = 256; return node; } bool SimpleStringInternalCache::isCached(size_t size) { return size <= 256; } size_t SimpleStringInternalCache::getIndexForCache(size_t size) { for (size_t i = 0; i < amountOfInternalCacheNodes; i++) if (size <= cache_[i].size_) return i; return 0; // LCOV_EXCL_LINE } SimpleStringInternalCacheNode* SimpleStringInternalCache::getCacheNodeFromSize(size_t size) { size_t index = getIndexForCache(size); return &cache_[index]; } void SimpleStringInternalCache::destroyInternalCacheNode(SimpleStringInternalCacheNode * node) { allocator_->free_memory((char*) node, sizeof(SimpleStringInternalCacheNode) * amountOfInternalCacheNodes, __FILE__, __LINE__); } SimpleStringMemoryBlock* SimpleStringInternalCache::createSimpleStringMemoryBlock(size_t size, SimpleStringMemoryBlock* next) { SimpleStringMemoryBlock* block = (SimpleStringMemoryBlock*) (void*) allocator_->alloc_memory(sizeof(SimpleStringMemoryBlock) , __FILE__, __LINE__); block->memory_ = allocator_->alloc_memory(size , __FILE__, __LINE__); block->next_ = next; return block; } void SimpleStringInternalCache::destroySimpleStringMemoryBlock(SimpleStringMemoryBlock * block, size_t size) { allocator_->free_memory(block->memory_, size, __FILE__, __LINE__); allocator_->free_memory((char*) block, sizeof(SimpleStringMemoryBlock), __FILE__, __LINE__); } void SimpleStringInternalCache::destroySimpleStringMemoryBlockList(SimpleStringMemoryBlock * block, size_t size) { SimpleStringMemoryBlock* current = block; while (current) { SimpleStringMemoryBlock* next = current->next_; destroySimpleStringMemoryBlock(current, size); current = next; } } SimpleStringMemoryBlock* SimpleStringInternalCache::addToSimpleStringMemoryBlockList(SimpleStringMemoryBlock* newBlock, SimpleStringMemoryBlock* previousHead) { newBlock->next_ = previousHead; return newBlock; } bool SimpleStringInternalCache::hasFreeBlocksOfSize(size_t size) { return getCacheNodeFromSize(size)->freeMemoryHead_ != NULLPTR; } SimpleStringMemoryBlock* SimpleStringInternalCache::reserveCachedBlockFrom(SimpleStringInternalCacheNode* node) { SimpleStringMemoryBlock* block = node->freeMemoryHead_; node->freeMemoryHead_ = block->next_; node->usedMemoryHead_ = addToSimpleStringMemoryBlockList(block, node->usedMemoryHead_); return block; } SimpleStringMemoryBlock* SimpleStringInternalCache::allocateNewCacheBlockFrom(SimpleStringInternalCacheNode* node) { SimpleStringMemoryBlock* block = createSimpleStringMemoryBlock(node->size_, node->usedMemoryHead_); node->usedMemoryHead_ = addToSimpleStringMemoryBlockList(block, node->usedMemoryHead_); return block; } void SimpleStringInternalCache::printDeallocatingUnknownMemory(char* memory) { if (!hasWarnedAboutDeallocations) { hasWarnedAboutDeallocations = true; UtestShell::getCurrent()->print(StringFromFormat("\nWARNING: Attempting to deallocate a String buffer that was allocated while not caching. Ignoring it!\n" "This is likely due statics and will cause problems.\n" "Only warning once to avoid recursive warnings.\n" "String we are deallocating: \"%s\"\n", memory).asCharString(), __FILE__, __LINE__); } } void SimpleStringInternalCache::releaseCachedBlockFrom(char* memory, SimpleStringInternalCacheNode* node) { if (node->usedMemoryHead_ && node->usedMemoryHead_->memory_ == memory) { SimpleStringMemoryBlock* block = node->usedMemoryHead_; node->usedMemoryHead_ = node->usedMemoryHead_->next_; node->freeMemoryHead_ = addToSimpleStringMemoryBlockList(block, node->freeMemoryHead_); return; } for (SimpleStringMemoryBlock* block = node->usedMemoryHead_; block; block = block->next_) { if (block->next_ && block->next_->memory_ == memory) { SimpleStringMemoryBlock* blockToFree = block->next_; block->next_ = block->next_->next_; node->freeMemoryHead_ = addToSimpleStringMemoryBlockList(blockToFree, node->freeMemoryHead_); return; } } printDeallocatingUnknownMemory(memory); } void SimpleStringInternalCache::releaseNonCachedMemory(char* memory, size_t size) { if (nonCachedAllocations_ && nonCachedAllocations_->memory_ == memory) { SimpleStringMemoryBlock* block = nonCachedAllocations_; nonCachedAllocations_ = block->next_; destroySimpleStringMemoryBlock(block, size); return; } for (SimpleStringMemoryBlock* block = nonCachedAllocations_; block; block = block->next_) { if (block->next_ && block->next_->memory_ == memory) { SimpleStringMemoryBlock* blockToFree = block->next_; block->next_ = block->next_->next_; destroySimpleStringMemoryBlock(blockToFree, size); return; } } printDeallocatingUnknownMemory(memory); } char* SimpleStringInternalCache::alloc(size_t size) { if (isCached(size)) { if (hasFreeBlocksOfSize(size)) return reserveCachedBlockFrom(getCacheNodeFromSize(size))->memory_; else return allocateNewCacheBlockFrom(getCacheNodeFromSize(size))->memory_; } nonCachedAllocations_ = createSimpleStringMemoryBlock(size, nonCachedAllocations_); return nonCachedAllocations_->memory_; } void SimpleStringInternalCache::dealloc(char* memory, size_t size) { if (isCached(size)) { size_t index = getIndexForCache(size); SimpleStringInternalCacheNode* cacheNode = &cache_[index]; releaseCachedBlockFrom(memory, cacheNode); return; } releaseNonCachedMemory(memory, size); } void SimpleStringInternalCache::clearCache() { for (size_t i = 0; i < amountOfInternalCacheNodes; i++) { destroySimpleStringMemoryBlockList(cache_[i].freeMemoryHead_, cache_[i].size_); cache_[i].freeMemoryHead_ = NULLPTR; } } void SimpleStringInternalCache::clearAllIncludingCurrentlyUsedMemory() { for (size_t i = 0; i < amountOfInternalCacheNodes; i++) { destroySimpleStringMemoryBlockList(cache_[i].freeMemoryHead_, cache_[i].size_); destroySimpleStringMemoryBlockList(cache_[i].usedMemoryHead_, cache_[i].size_); cache_[i].freeMemoryHead_ = NULLPTR; cache_[i].usedMemoryHead_ = NULLPTR; } destroySimpleStringMemoryBlockList(nonCachedAllocations_, 0); nonCachedAllocations_ = NULLPTR; } GlobalSimpleStringCache::GlobalSimpleStringCache() { allocator_ = new SimpleStringCacheAllocator(cache_, SimpleString::getStringAllocator()); SimpleString::setStringAllocator(allocator_); } GlobalSimpleStringCache::~GlobalSimpleStringCache() { SimpleString::setStringAllocator(allocator_->originalAllocator()); cache_.clearAllIncludingCurrentlyUsedMemory(); delete allocator_; } TestMemoryAllocator* GlobalSimpleStringCache::getAllocator() { return allocator_; } SimpleStringCacheAllocator::SimpleStringCacheAllocator(SimpleStringInternalCache& cache, TestMemoryAllocator* origAllocator) : cache_(cache), originalAllocator_(origAllocator) { cache_.setAllocator(origAllocator); } SimpleStringCacheAllocator::~SimpleStringCacheAllocator() { cache_.setAllocator(NULLPTR); } char* SimpleStringCacheAllocator::alloc_memory(size_t size, const char*, size_t) { return cache_.alloc(size); } void SimpleStringCacheAllocator::free_memory(char* memory, size_t size, const char*, size_t) { cache_.dealloc(memory, size); } const char* SimpleStringCacheAllocator::name() const { return "SimpleStringCacheAllocator"; } const char* SimpleStringCacheAllocator::alloc_name() const { return originalAllocator_->alloc_name(); } const char* SimpleStringCacheAllocator::free_name() const { return originalAllocator_->free_name(); } TestMemoryAllocator* SimpleStringCacheAllocator::actualAllocator() { return originalAllocator_->actualAllocator(); } TestMemoryAllocator* SimpleStringCacheAllocator::originalAllocator() { return originalAllocator_; } cpputest-4.0/src/CppUTest/TestResult.cpp000644 000765 000024 00000010201 13663176127 021304 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestResult.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" TestResult::TestResult(TestOutput& p) : output_(p), testCount_(0), runCount_(0), checkCount_(0), failureCount_(0), filteredOutCount_(0), ignoredCount_(0), totalExecutionTime_(0), timeStarted_(0), currentTestTimeStarted_(0), currentTestTotalExecutionTime_(0), currentGroupTimeStarted_(0), currentGroupTotalExecutionTime_(0) { } TestResult::~TestResult() { } void TestResult::currentGroupStarted(UtestShell* test) { output_.printCurrentGroupStarted(*test); currentGroupTimeStarted_ = (size_t) GetPlatformSpecificTimeInMillis(); } void TestResult::currentGroupEnded(UtestShell* /*test*/) { currentGroupTotalExecutionTime_ = (size_t) GetPlatformSpecificTimeInMillis() - currentGroupTimeStarted_; output_.printCurrentGroupEnded(*this); } void TestResult::currentTestStarted(UtestShell* test) { output_.printCurrentTestStarted(*test); currentTestTimeStarted_ = (size_t) GetPlatformSpecificTimeInMillis(); } void TestResult::print(const char* text) { output_.print(text); } void TestResult::printVeryVerbose(const char* text) { output_.printVeryVerbose(text); } void TestResult::currentTestEnded(UtestShell* /*test*/) { currentTestTotalExecutionTime_ = (size_t) GetPlatformSpecificTimeInMillis() - currentTestTimeStarted_; output_.printCurrentTestEnded(*this); } void TestResult::addFailure(const TestFailure& failure) { output_.printFailure(failure); failureCount_++; } void TestResult::countTest() { testCount_++; } void TestResult::countRun() { runCount_++; } void TestResult::countCheck() { checkCount_++; } void TestResult::countFilteredOut() { filteredOutCount_++; } void TestResult::countIgnored() { ignoredCount_++; } void TestResult::testsStarted() { timeStarted_ = (size_t) GetPlatformSpecificTimeInMillis(); output_.printTestsStarted(); } void TestResult::testsEnded() { size_t timeEnded = (size_t) GetPlatformSpecificTimeInMillis(); totalExecutionTime_ = timeEnded - timeStarted_; output_.printTestsEnded(*this); } size_t TestResult::getTotalExecutionTime() const { return totalExecutionTime_; } void TestResult::setTotalExecutionTime(size_t exTime) { totalExecutionTime_ = exTime; } size_t TestResult::getCurrentTestTotalExecutionTime() const { return currentTestTotalExecutionTime_; } size_t TestResult::getCurrentGroupTotalExecutionTime() const { return currentGroupTotalExecutionTime_; } cpputest-4.0/src/CppUTest/CommandLineArguments.cpp000644 000765 000024 00000034464 13663176127 023263 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineArguments.h" #include "CppUTest/PlatformSpecificFunctions.h" CommandLineArguments::CommandLineArguments(int ac, const char *const *av) : ac_(ac), av_(av), needHelp_(false), verbose_(false), veryVerbose_(false), color_(false), runTestsAsSeperateProcess_(false), listTestGroupNames_(false), listTestGroupAndCaseNames_(false), runIgnored_(false), reversing_(false), shuffling_(false), shufflingPreSeeded_(false), repeat_(1), shuffleSeed_(0), groupFilters_(NULLPTR), nameFilters_(NULLPTR), outputType_(OUTPUT_ECLIPSE) { } CommandLineArguments::~CommandLineArguments() { while(groupFilters_) { TestFilter* current = groupFilters_; groupFilters_ = groupFilters_->getNext(); delete current; } while(nameFilters_) { TestFilter* current = nameFilters_; nameFilters_ = nameFilters_->getNext(); delete current; } } bool CommandLineArguments::parse(TestPlugin* plugin) { bool correctParameters = true; for (int i = 1; i < ac_; i++) { SimpleString argument = av_[i]; if (argument == "-h") { needHelp_ = true; correctParameters = false; } else if (argument == "-v") verbose_ = true; else if (argument == "-vv") veryVerbose_ = true; else if (argument == "-c") color_ = true; else if (argument == "-p") runTestsAsSeperateProcess_ = true; else if (argument == "-b") reversing_ = true; else if (argument == "-lg") listTestGroupNames_ = true; else if (argument == "-ln") listTestGroupAndCaseNames_ = true; else if (argument == "-ri") runIgnored_ = true; else if (argument.startsWith("-r")) setRepeatCount(ac_, av_, i); else if (argument.startsWith("-g")) addGroupFilter(ac_, av_, i); else if (argument.startsWith("-t")) correctParameters = addGroupDotNameFilter(ac_, av_, i); else if (argument.startsWith("-sg")) addStrictGroupFilter(ac_, av_, i); else if (argument.startsWith("-xg")) addExcludeGroupFilter(ac_, av_, i); else if (argument.startsWith("-xsg")) addExcludeStrictGroupFilter(ac_, av_, i); else if (argument.startsWith("-n")) addNameFilter(ac_, av_, i); else if (argument.startsWith("-sn")) addStrictNameFilter(ac_, av_, i); else if (argument.startsWith("-xn")) addExcludeNameFilter(ac_, av_, i); else if (argument.startsWith("-xsn")) addExcludeStrictNameFilter(ac_, av_, i); else if (argument.startsWith("-s")) correctParameters = setShuffle(ac_, av_, i); else if (argument.startsWith("TEST(")) addTestToRunBasedOnVerboseOutput(ac_, av_, i, "TEST("); else if (argument.startsWith("IGNORE_TEST(")) addTestToRunBasedOnVerboseOutput(ac_, av_, i, "IGNORE_TEST("); else if (argument.startsWith("-o")) correctParameters = setOutputType(ac_, av_, i); else if (argument.startsWith("-p")) correctParameters = plugin->parseAllArguments(ac_, av_, i); else if (argument.startsWith("-k")) setPackageName(ac_, av_, i); else correctParameters = false; if (correctParameters == false) { return false; } } return true; } const char* CommandLineArguments::usage() const { return "use -h for more extensive help\nusage [-h] [-v] [-vv] [-c] [-p] [-lg] [-ln] [-ri] [-r#]\n" " [-g|sg|xg|xsg groupName]... [-n|sn|xn|xsn testName]... [-t groupName.testName]...\n" " [-b] [-s [randomizerSeed>0]] [\"TEST(groupName, testName)\"]... [-o{normal, junit, teamcity}] [-k packageName]\n"; } const char* CommandLineArguments::help() const { return "Thanks for using CppUTest.\n" "\n" "Options that do not run tests but query:\n" " -h - this wonderful help screen. Joy!\n" " -lg - print a list of group names, separated by spaces\n" " -ln - print a list of test names in the form of group.name, separated by spaces\n" "\n" "Options that change the output format:\n" " -c - colorize output, print green if OK, or red if failed\n" " -v - verbose, print each test name as it runs\n" " -vv - very verbose, print internal information during test run\n" "\n" "Options that change the output location:\n" " -oteamcity - output to xml files (as the name suggests, for TeamCity)\n" " -ojunit - output to JUnit ant plugin style xml files (for CI systems)\n" " -k package name - Add a package name in JUnit output (for classification in CI systems)\n" "\n" "\n" "Options that control which tests are run:\n" " -g group - only run test whose group contains the substring group\n" " -n name - only run test whose name contains the substring name\n" " -t group.name - only run test whose name contains the substring group and name\n" " -sg group - only run test whose group exactly matches the string group\n" " -sn name - only run test whose name exactly matches the string name\n" " -xg group - exclude tests whose group contains the substring group (v3.8)\n" " -xn name - exclude tests whose name contains the substring name (v3.8)\n" " TEST(group,name) - only run test whose group and name matches the strings group and name.\n" " This can be used to copy-paste output from the -v option on the command line.\n" "\n" "Options that control how the tests are run:\n" " -p - run tests in a separate process.\n" " -b - run the tests backwards, reversing the normal way\n" " -s [seed] - shuffle tests randomly. Seed is optional\n" " -r# - repeat the tests some number (#) of times, or twice if # is not specified.\n"; } bool CommandLineArguments::needHelp() const { return needHelp_; } bool CommandLineArguments::isVerbose() const { return verbose_; } bool CommandLineArguments::isVeryVerbose() const { return veryVerbose_; } bool CommandLineArguments::isColor() const { return color_; } bool CommandLineArguments::isListingTestGroupNames() const { return listTestGroupNames_; } bool CommandLineArguments::isListingTestGroupAndCaseNames() const { return listTestGroupAndCaseNames_; } bool CommandLineArguments::isRunIgnored() const { return runIgnored_; } bool CommandLineArguments::runTestsInSeperateProcess() const { return runTestsAsSeperateProcess_; } size_t CommandLineArguments::getRepeatCount() const { return repeat_; } bool CommandLineArguments::isReversing() const { return reversing_; } bool CommandLineArguments::isShuffling() const { return shuffling_; } size_t CommandLineArguments::getShuffleSeed() const { return shuffleSeed_; } const TestFilter* CommandLineArguments::getGroupFilters() const { return groupFilters_; } const TestFilter* CommandLineArguments::getNameFilters() const { return nameFilters_; } void CommandLineArguments::setRepeatCount(int ac, const char *const *av, int& i) { repeat_ = 0; SimpleString repeatParameter(av[i]); if (repeatParameter.size() > 2) repeat_ = (size_t) (SimpleString::AtoI(av[i] + 2)); else if (i + 1 < ac) { repeat_ = (size_t) (SimpleString::AtoI(av[i + 1])); if (repeat_ != 0) i++; } if (0 == repeat_) repeat_ = 2; } bool CommandLineArguments::setShuffle(int ac, const char * const *av, int& i) { shuffling_ = true; shuffleSeed_ = (unsigned int)GetPlatformSpecificTimeInMillis(); if (shuffleSeed_ == 0) shuffleSeed_++; SimpleString shuffleParameter = av[i]; if (shuffleParameter.size() > 2) { shufflingPreSeeded_ = true; shuffleSeed_ = SimpleString::AtoU(av[i] + 2); } else if (i + 1 < ac) { unsigned int parsedParameter = SimpleString::AtoU(av[i + 1]); if (parsedParameter != 0) { shufflingPreSeeded_ = true; shuffleSeed_ = parsedParameter; i++; } } return (shuffleSeed_ != 0); } SimpleString CommandLineArguments::getParameterField(int ac, const char * const *av, int& i, const SimpleString& parameterName) { size_t parameterLength = parameterName.size(); SimpleString parameter(av[i]); if (parameter.size() > parameterLength) return av[i] + parameterLength; else if (i + 1 < ac) return av[++i]; return ""; } void CommandLineArguments::addGroupFilter(int ac, const char *const *av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-g")); groupFilters_ = groupFilter->add(groupFilters_); } bool CommandLineArguments::addGroupDotNameFilter(int ac, const char *const *av, int& i) { SimpleString groupDotName = getParameterField(ac, av, i, "-t"); SimpleStringCollection collection; groupDotName.split(".", collection); if (collection.size() != 2) return false; groupFilters_ = (new TestFilter(collection[0].subString(0, collection[0].size()-1)))->add(groupFilters_); nameFilters_ = (new TestFilter(collection[1]))->add(nameFilters_); return true; } void CommandLineArguments::addStrictGroupFilter(int ac, const char *const *av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-sg")); groupFilter->strictMatching(); groupFilters_ = groupFilter->add(groupFilters_); } void CommandLineArguments::addExcludeGroupFilter(int ac, const char *const *av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-xg")); groupFilter->invertMatching(); groupFilters_ = groupFilter->add(groupFilters_); } void CommandLineArguments::addExcludeStrictGroupFilter(int ac, const char *const *av, int& i) { TestFilter* groupFilter = new TestFilter(getParameterField(ac, av, i, "-xsg")); groupFilter->strictMatching(); groupFilter->invertMatching(); groupFilters_ = groupFilter->add(groupFilters_); } void CommandLineArguments::addNameFilter(int ac, const char *const *av, int& i) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, i, "-n")); nameFilters_ = nameFilter->add(nameFilters_); } void CommandLineArguments::addStrictNameFilter(int ac, const char *const *av, int& index) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, index, "-sn")); nameFilter->strictMatching(); nameFilters_= nameFilter->add(nameFilters_); } void CommandLineArguments::addExcludeNameFilter(int ac, const char *const *av, int& index) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, index, "-xn")); nameFilter->invertMatching(); nameFilters_= nameFilter->add(nameFilters_); } void CommandLineArguments::addExcludeStrictNameFilter(int ac, const char *const *av, int& index) { TestFilter* nameFilter = new TestFilter(getParameterField(ac, av, index, "-xsn")); nameFilter->invertMatching(); nameFilter->strictMatching(); nameFilters_= nameFilter->add(nameFilters_); } void CommandLineArguments::addTestToRunBasedOnVerboseOutput(int ac, const char *const *av, int& index, const char* parameterName) { SimpleString wholename = getParameterField(ac, av, index, parameterName); SimpleString testname = wholename.subStringFromTill(',', ')'); testname = testname.subString(2); TestFilter* namefilter = new TestFilter(testname); TestFilter* groupfilter = new TestFilter(wholename.subStringFromTill(wholename.at(0), ',')); namefilter->strictMatching(); groupfilter->strictMatching(); groupFilters_ = groupfilter->add(groupFilters_); nameFilters_ = namefilter->add(nameFilters_); } void CommandLineArguments::setPackageName(int ac, const char *const *av, int& i) { SimpleString packageName = getParameterField(ac, av, i, "-k"); if (packageName.size() == 0) return; packageName_ = packageName; } bool CommandLineArguments::setOutputType(int ac, const char *const *av, int& i) { SimpleString outputType = getParameterField(ac, av, i, "-o"); if (outputType.size() == 0) return false; if (outputType == "normal" || outputType == "eclipse") { outputType_ = OUTPUT_ECLIPSE; return true; } if (outputType == "junit") { outputType_ = OUTPUT_JUNIT; return true; } if (outputType == "teamcity") { outputType_ = OUTPUT_TEAMCITY; return true; } return false; } bool CommandLineArguments::isEclipseOutput() const { return outputType_ == OUTPUT_ECLIPSE; } bool CommandLineArguments::isJUnitOutput() const { return outputType_ == OUTPUT_JUNIT; } bool CommandLineArguments::isTeamCityOutput() const { return outputType_ == OUTPUT_TEAMCITY; } const SimpleString& CommandLineArguments::getPackageName() const { return packageName_; } cpputest-4.0/src/CppUTest/MemoryLeakDetector.cpp000644 000765 000024 00000063760 13663176127 022747 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleMutex.h" static const char* UNKNOWN = ""; static const char GuardBytes[] = {'B','A','S'}; SimpleStringBuffer::SimpleStringBuffer() : positions_filled_(0), write_limit_(SIMPLE_STRING_BUFFER_LEN-1) { buffer_[0] = '\0'; } void SimpleStringBuffer::clear() { positions_filled_ = 0; buffer_[0] = '\0'; } void SimpleStringBuffer::add(const char* format, ...) { const size_t positions_left = write_limit_ - positions_filled_; if (positions_left == 0) return; va_list arguments; va_start(arguments, format); const int count = PlatformSpecificVSNprintf(buffer_ + positions_filled_, positions_left+1, format, arguments); if (count > 0) positions_filled_ += (size_t) count; if (positions_filled_ > write_limit_) positions_filled_ = write_limit_; va_end(arguments); } void SimpleStringBuffer::addMemoryDump(const void* memory, size_t memorySize) { const unsigned char* byteMemory = (const unsigned char*)memory; const size_t maxLineBytes = 16; size_t currentPos = 0; size_t p; while (currentPos < memorySize) { add(" %04lx: ", (unsigned long) currentPos); size_t bytesInLine = memorySize - currentPos; if (bytesInLine > maxLineBytes) { bytesInLine = maxLineBytes; } const size_t leftoverBytes = maxLineBytes - bytesInLine; for (p = 0; p < bytesInLine; p++) { add("%02hx ", (unsigned short) byteMemory[currentPos + p]); if (p == ((maxLineBytes / 2) - 1)) { add(" "); } } for (p = 0; p < leftoverBytes; p++) { add(" "); } if (leftoverBytes > (maxLineBytes/2)) { add(" "); } add("|"); for (p = 0; p < bytesInLine; p++) { char toAdd = (char)byteMemory[currentPos + p]; if (toAdd < ' ' || toAdd > '~') { toAdd = '.'; } add("%c", (int)toAdd); } add("|\n"); currentPos += bytesInLine; } } char* SimpleStringBuffer::toString() { return buffer_; } void SimpleStringBuffer::setWriteLimit(size_t write_limit) { write_limit_ = write_limit; if (write_limit_ > SIMPLE_STRING_BUFFER_LEN-1) write_limit_ = SIMPLE_STRING_BUFFER_LEN-1; } void SimpleStringBuffer::resetWriteLimit() { write_limit_ = SIMPLE_STRING_BUFFER_LEN-1; } bool SimpleStringBuffer::reachedItsCapacity() { return positions_filled_ >= write_limit_; } //////////////////////// #define MEM_LEAK_TOO_MUCH "\netc etc etc etc. !!!! Too many memory leaks to report. Bailing out\n" #define MEM_LEAK_FOOTER "Total number of leaks: " #define MEM_LEAK_ADDITION_MALLOC_WARNING "NOTE:\n" \ "\tMemory leak reports about malloc and free can be caused by allocating using the cpputest version of malloc,\n" \ "\tbut deallocate using the standard free.\n" \ "\tIf this is the case, check whether your malloc/free replacements are working (#define malloc cpputest_malloc etc).\n" MemoryLeakOutputStringBuffer::MemoryLeakOutputStringBuffer() : total_leaks_(0), giveWarningOnUsingMalloc_(false) { } void MemoryLeakOutputStringBuffer::addAllocationLocation(const char* allocationFile, size_t allocationLineNumber, size_t allocationSize, TestMemoryAllocator* allocator) { outputBuffer_.add(" allocated at file: %s line: %d size: %lu type: %s\n", allocationFile, (int) allocationLineNumber, (unsigned long) allocationSize, allocator->alloc_name()); } void MemoryLeakOutputStringBuffer::addDeallocationLocation(const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* allocator) { outputBuffer_.add(" deallocated at file: %s line: %d type: %s\n", freeFile, (int) freeLineNumber, allocator->free_name()); } void MemoryLeakOutputStringBuffer::addNoMemoryLeaksMessage() { outputBuffer_.add("No memory leaks were detected."); } void MemoryLeakOutputStringBuffer::startMemoryLeakReporting() { giveWarningOnUsingMalloc_ = false; total_leaks_ = 0; size_t memory_leak_normal_footer_size = sizeof(MEM_LEAK_FOOTER) + 10 + sizeof(MEM_LEAK_TOO_MUCH); /* the number of leaks */ size_t memory_leak_foot_size_with_malloc_warning = memory_leak_normal_footer_size + sizeof(MEM_LEAK_ADDITION_MALLOC_WARNING); outputBuffer_.setWriteLimit(SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN - memory_leak_foot_size_with_malloc_warning); } void MemoryLeakOutputStringBuffer::reportMemoryLeak(MemoryLeakDetectorNode* leak) { if (total_leaks_ == 0) { addMemoryLeakHeader(); } total_leaks_++; outputBuffer_.add("Alloc num (%u) Leak size: %lu Allocated at: %s and line: %d. Type: \"%s\"\n\tMemory: <%p> Content:\n", leak->number_, (unsigned long) leak->size_, leak->file_, (int) leak->line_, leak->allocator_->alloc_name(), (void*) leak->memory_); outputBuffer_.addMemoryDump(leak->memory_, leak->size_); if (SimpleString::StrCmp(leak->allocator_->alloc_name(), (const char*) "malloc") == 0) giveWarningOnUsingMalloc_ = true; } void MemoryLeakOutputStringBuffer::stopMemoryLeakReporting() { if (total_leaks_ == 0) { addNoMemoryLeaksMessage(); return; } bool buffer_reached_its_capacity = outputBuffer_.reachedItsCapacity(); outputBuffer_.resetWriteLimit(); if (buffer_reached_its_capacity) addErrorMessageForTooMuchLeaks(); addMemoryLeakFooter(total_leaks_); if (giveWarningOnUsingMalloc_) addWarningForUsingMalloc(); } void MemoryLeakOutputStringBuffer::addMemoryLeakHeader() { outputBuffer_.add("Memory leak(s) found.\n"); } void MemoryLeakOutputStringBuffer::addErrorMessageForTooMuchLeaks() { outputBuffer_.add(MEM_LEAK_TOO_MUCH); } void MemoryLeakOutputStringBuffer::addMemoryLeakFooter(size_t amountOfLeaks) { outputBuffer_.add("%s %d\n", MEM_LEAK_FOOTER, (int) amountOfLeaks); } void MemoryLeakOutputStringBuffer::addWarningForUsingMalloc() { outputBuffer_.add(MEM_LEAK_ADDITION_MALLOC_WARNING); } void MemoryLeakOutputStringBuffer::reportDeallocateNonAllocatedMemoryFailure(const char* freeFile, size_t freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Deallocating non-allocated memory\n", "", 0, 0, NullUnknownAllocator::defaultAllocator(), freeFile, freeLine, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportAllocationDeallocationMismatchFailure(MemoryLeakDetectorNode* node, const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Allocation/deallocation type mismatch\n", node->file_, node->line_, node->size_, node->allocator_, freeFile, freeLineNumber, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportMemoryCorruptionFailure(MemoryLeakDetectorNode* node, const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { reportFailure("Memory corruption (written out of bounds?)\n", node->file_, node->line_, node->size_, node->allocator_, freeFile, freeLineNumber, freeAllocator, reporter); } void MemoryLeakOutputStringBuffer::reportFailure(const char* message, const char* allocFile, size_t allocLine, size_t allocSize, TestMemoryAllocator* allocAllocator, const char* freeFile, size_t freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter) { outputBuffer_.add("%s", message); addAllocationLocation(allocFile, allocLine, allocSize, allocAllocator); addDeallocationLocation(freeFile, freeLine, freeAllocator); reporter->fail(toString()); } char* MemoryLeakOutputStringBuffer::toString() { return outputBuffer_.toString(); } void MemoryLeakOutputStringBuffer::clear() { outputBuffer_.clear(); } //////////////////////// void MemoryLeakDetectorNode::init(char* memory, unsigned number, size_t size, TestMemoryAllocator* allocator, MemLeakPeriod period, unsigned char allocation_stage, const char* file, size_t line) { number_ = number; memory_ = memory; size_ = size; allocator_ = allocator; period_ = period; allocation_stage_ = allocation_stage; file_ = file; line_ = line; } /////////////////////// bool MemoryLeakDetectorList::isInPeriod(MemoryLeakDetectorNode* node, MemLeakPeriod period) { return period == mem_leak_period_all || node->period_ == period || (node->period_ != mem_leak_period_disabled && period == mem_leak_period_enabled); } bool MemoryLeakDetectorList::isInAllocationStage(MemoryLeakDetectorNode* node, unsigned char allocation_stage) { return node->allocation_stage_ == allocation_stage; } void MemoryLeakDetectorList::clearAllAccounting(MemLeakPeriod period) { MemoryLeakDetectorNode* cur = head_; MemoryLeakDetectorNode* prev = NULLPTR; while (cur) { if (isInPeriod(cur, period)) { if (prev) { prev->next_ = cur->next_; cur = prev; } else { head_ = cur->next_; cur = head_; continue; } } prev = cur; cur = cur->next_; } } void MemoryLeakDetectorList::addNewNode(MemoryLeakDetectorNode* node) { node->next_ = head_; head_ = node; } MemoryLeakDetectorNode* MemoryLeakDetectorList::removeNode(char* memory) { MemoryLeakDetectorNode* cur = head_; MemoryLeakDetectorNode* prev = NULLPTR; while (cur) { if (cur->memory_ == memory) { if (prev) { prev->next_ = cur->next_; return cur; } else { head_ = cur->next_; return cur; } } prev = cur; cur = cur->next_; } return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorList::retrieveNode(char* memory) { MemoryLeakDetectorNode* cur = head_; while (cur) { if (cur->memory_ == memory) return cur; cur = cur->next_; } return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorList::getLeakFrom(MemoryLeakDetectorNode* node, MemLeakPeriod period) { for (MemoryLeakDetectorNode* cur = node; cur; cur = cur->next_) if (isInPeriod(cur, period)) return cur; return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorList::getLeakForAllocationStageFrom(MemoryLeakDetectorNode* node, unsigned char allocation_stage) { for (MemoryLeakDetectorNode* cur = node; cur; cur = cur->next_) if (isInAllocationStage(cur, allocation_stage)) return cur; return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorList::getFirstLeak(MemLeakPeriod period) { return getLeakFrom(head_, period); } MemoryLeakDetectorNode* MemoryLeakDetectorList::getFirstLeakForAllocationStage(unsigned char allocation_stage) { return getLeakForAllocationStageFrom(head_, allocation_stage); } MemoryLeakDetectorNode* MemoryLeakDetectorList::getNextLeak(MemoryLeakDetectorNode* node, MemLeakPeriod period) { return getLeakFrom(node->next_, period); } MemoryLeakDetectorNode* MemoryLeakDetectorList::getNextLeakForAllocationStage(MemoryLeakDetectorNode* node, unsigned char allocation_stage) { return getLeakForAllocationStageFrom(node->next_, allocation_stage); } size_t MemoryLeakDetectorList::getTotalLeaks(MemLeakPeriod period) { size_t total_leaks = 0; for (MemoryLeakDetectorNode* node = head_; node; node = node->next_) { if (isInPeriod(node, period)) total_leaks++; } return total_leaks; } ///////////////////////////////////////////////////////////// unsigned long MemoryLeakDetectorTable::hash(char* memory) { return (unsigned long)((size_t)memory % hash_prime); } void MemoryLeakDetectorTable::clearAllAccounting(MemLeakPeriod period) { for (int i = 0; i < hash_prime; i++) table_[i].clearAllAccounting(period); } void MemoryLeakDetectorTable::addNewNode(MemoryLeakDetectorNode* node) { table_[hash(node->memory_)].addNewNode(node); } MemoryLeakDetectorNode* MemoryLeakDetectorTable::removeNode(char* memory) { return table_[hash(memory)].removeNode(memory); } MemoryLeakDetectorNode* MemoryLeakDetectorTable::retrieveNode(char* memory) { return table_[hash(memory)].retrieveNode(memory); } size_t MemoryLeakDetectorTable::getTotalLeaks(MemLeakPeriod period) { size_t total_leaks = 0; for (int i = 0; i < hash_prime; i++) total_leaks += table_[i].getTotalLeaks(period); return total_leaks; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getFirstLeak(MemLeakPeriod period) { for (int i = 0; i < hash_prime; i++) { MemoryLeakDetectorNode* node = table_[i].getFirstLeak(period); if (node) return node; } return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getFirstLeakForAllocationStage(unsigned char allocation_stage) { for (int i = 0; i < hash_prime; i++) { MemoryLeakDetectorNode* node = table_[i].getFirstLeakForAllocationStage(allocation_stage); if (node) return node; } return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getNextLeak(MemoryLeakDetectorNode* leak, MemLeakPeriod period) { unsigned long i = hash(leak->memory_); MemoryLeakDetectorNode* node = table_[i].getNextLeak(leak, period); if (node) return node; for (++i; i < hash_prime; i++) { node = table_[i].getFirstLeak(period); if (node) return node; } return NULLPTR; } MemoryLeakDetectorNode* MemoryLeakDetectorTable::getNextLeakForAllocationStage(MemoryLeakDetectorNode* leak, unsigned char allocation_stage) { unsigned long i = hash(leak->memory_); MemoryLeakDetectorNode* node = table_[i].getNextLeakForAllocationStage(leak, allocation_stage); if (node) return node; for (++i; i < hash_prime; i++) { node = table_[i].getFirstLeakForAllocationStage(allocation_stage); if (node) return node; } return NULLPTR; } ///////////////////////////////////////////////////////////// MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure* reporter) { doAllocationTypeChecking_ = true; allocationSequenceNumber_ = 1; current_period_ = mem_leak_period_disabled; current_allocation_stage_ = 0; reporter_ = reporter; mutex_ = new SimpleMutex; } MemoryLeakDetector::~MemoryLeakDetector() { if (mutex_) { delete mutex_; } } void MemoryLeakDetector::clearAllAccounting(MemLeakPeriod period) { memoryTable_.clearAllAccounting(period); } void MemoryLeakDetector::startChecking() { outputBuffer_.clear(); current_period_ = mem_leak_period_checking; } void MemoryLeakDetector::stopChecking() { current_period_ = mem_leak_period_enabled; } unsigned char MemoryLeakDetector::getCurrentAllocationStage() const { return current_allocation_stage_; } void MemoryLeakDetector::enable() { current_period_ = mem_leak_period_enabled; } void MemoryLeakDetector::disable() { current_period_ = mem_leak_period_disabled; } void MemoryLeakDetector::disableAllocationTypeChecking() { doAllocationTypeChecking_ = false; } void MemoryLeakDetector::enableAllocationTypeChecking() { doAllocationTypeChecking_ = true; } unsigned MemoryLeakDetector::getCurrentAllocationNumber() { return allocationSequenceNumber_; } void MemoryLeakDetector::increaseAllocationStage() { current_allocation_stage_++; } void MemoryLeakDetector::decreaseAllocationStage() { current_allocation_stage_--; } SimpleMutex *MemoryLeakDetector::getMutex() { return mutex_; } static size_t calculateVoidPointerAlignedSize(size_t size) { #ifndef CPPUTEST_DISABLE_MEM_CORRUPTION_CHECK return (sizeof(void*) - (size % sizeof(void*))) + size; #else return size; #endif } size_t MemoryLeakDetector::sizeOfMemoryWithCorruptionInfo(size_t size) { return calculateVoidPointerAlignedSize(size + memory_corruption_buffer_size); } MemoryLeakDetectorNode* MemoryLeakDetector::getNodeFromMemoryPointer(char* memory, size_t memory_size) { return (MemoryLeakDetectorNode*) (void*) (memory + sizeOfMemoryWithCorruptionInfo(memory_size)); } void MemoryLeakDetector::storeLeakInformation(MemoryLeakDetectorNode * node, char *new_memory, size_t size, TestMemoryAllocator *allocator, const char *file, size_t line) { node->init(new_memory, allocationSequenceNumber_++, size, allocator, current_period_, current_allocation_stage_, file, line); addMemoryCorruptionInformation(node->memory_ + node->size_); memoryTable_.addNewNode(node); } char* MemoryLeakDetector::reallocateMemoryAndLeakInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, size_t line, bool allocatNodesSeperately) { char* new_memory = reallocateMemoryWithAccountingInformation(allocator, memory, size, file, line, allocatNodesSeperately); if (new_memory == NULLPTR) return NULLPTR; MemoryLeakDetectorNode *node = createMemoryLeakAccountingInformation(allocator, size, new_memory, allocatNodesSeperately); storeLeakInformation(node, new_memory, size, allocator, file, line); return node->memory_; } void MemoryLeakDetector::invalidateMemory(char* memory) { #ifndef CPPUTEST_DISABLE_HEAP_POISON MemoryLeakDetectorNode* node = memoryTable_.retrieveNode(memory); if (node) PlatformSpecificMemset(memory, 0xCD, node->size_); #endif } void MemoryLeakDetector::addMemoryCorruptionInformation(char* memory) { for (size_t i=0; iisOfEqualType(alloc_allocator); } void MemoryLeakDetector::checkForCorruption(MemoryLeakDetectorNode* node, const char* file, size_t line, TestMemoryAllocator* allocator, bool allocateNodesSeperately) { if (!matchingAllocation(node->allocator_->actualAllocator(), allocator->actualAllocator())) outputBuffer_.reportAllocationDeallocationMismatchFailure(node, file, line, allocator->actualAllocator(), reporter_); else if (!validMemoryCorruptionInformation(node->memory_ + node->size_)) outputBuffer_.reportMemoryCorruptionFailure(node, file, line, allocator->actualAllocator(), reporter_); else if (allocateNodesSeperately) allocator->freeMemoryLeakNode((char*) node); } char* MemoryLeakDetector::allocMemory(TestMemoryAllocator* allocator, size_t size, bool allocatNodesSeperately) { return allocMemory(allocator, size, UNKNOWN, 0, allocatNodesSeperately); } char* MemoryLeakDetector::allocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, size_t size, const char* file, size_t line, bool allocatNodesSeperately) { if (allocatNodesSeperately) return allocator->alloc_memory(sizeOfMemoryWithCorruptionInfo(size), file, line); else return allocator->alloc_memory(sizeOfMemoryWithCorruptionInfo(size) + sizeof(MemoryLeakDetectorNode), file, line); } char* MemoryLeakDetector::reallocateMemoryWithAccountingInformation(TestMemoryAllocator* /*allocator*/, char* memory, size_t size, const char* /*file*/, size_t /*line*/, bool allocatNodesSeperately) { if (allocatNodesSeperately) return (char*) PlatformSpecificRealloc(memory, sizeOfMemoryWithCorruptionInfo(size)); else return (char*) PlatformSpecificRealloc(memory, sizeOfMemoryWithCorruptionInfo(size) + sizeof(MemoryLeakDetectorNode)); } MemoryLeakDetectorNode* MemoryLeakDetector::createMemoryLeakAccountingInformation(TestMemoryAllocator* allocator, size_t size, char* memory, bool allocatNodesSeperately) { if (allocatNodesSeperately) return (MemoryLeakDetectorNode*) (void*) allocator->allocMemoryLeakNode(sizeof(MemoryLeakDetectorNode)); else return getNodeFromMemoryPointer(memory, size); } char* MemoryLeakDetector::allocMemory(TestMemoryAllocator* allocator, size_t size, const char* file, size_t line, bool allocatNodesSeperately) { #ifdef CPPUTEST_DISABLE_MEM_CORRUPTION_CHECK allocatNodesSeperately = true; #endif /* With malloc, it is harder to guarantee that the allocator free is called. * This is because operator new is overloaded via linker symbols, but malloc just via #defines. * If the same allocation is used and the wrong free is called, it will deallocate the memory leak information * without the memory leak detector ever noticing it! * So, for malloc, we'll allocate the memory separately so we can detect this and give a proper error. */ char* memory = allocateMemoryWithAccountingInformation(allocator, size, file, line, allocatNodesSeperately); if (memory == NULLPTR) return NULLPTR; MemoryLeakDetectorNode* node = createMemoryLeakAccountingInformation(allocator, size, memory, allocatNodesSeperately); storeLeakInformation(node, memory, size, allocator, file, line); return node->memory_; } void MemoryLeakDetector::removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately) { MemoryLeakDetectorNode* node = memoryTable_.removeNode((char*) memory); if (allocatNodesSeperately) allocator->freeMemoryLeakNode( (char*) node); } void MemoryLeakDetector::deallocMemory(TestMemoryAllocator* allocator, void* memory, const char* file, size_t line, bool allocatNodesSeperately) { if (memory == NULLPTR) return; MemoryLeakDetectorNode* node = memoryTable_.removeNode((char*) memory); if (node == NULLPTR) { outputBuffer_.reportDeallocateNonAllocatedMemoryFailure(file, line, allocator, reporter_); return; } #ifdef CPPUTEST_DISABLE_MEM_CORRUPTION_CHECK allocatNodesSeperately = true; #endif if (!allocator->hasBeenDestroyed()) { size_t size = node->size_; checkForCorruption(node, file, line, allocator, allocatNodesSeperately); allocator->free_memory((char*) memory, size, file, line); } } void MemoryLeakDetector::deallocMemory(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately) { deallocMemory(allocator, (char*) memory, UNKNOWN, 0, allocatNodesSeperately); } void MemoryLeakDetector::deallocAllMemoryInCurrentAllocationStage() { char* memory = NULLPTR; MemoryLeakDetectorNode* node = memoryTable_.getFirstLeakForAllocationStage(current_allocation_stage_); while (node) { memory = node->memory_; TestMemoryAllocator* allocator = node->allocator_; node = memoryTable_.getNextLeakForAllocationStage(node, current_allocation_stage_); deallocMemory(allocator, memory, __FILE__, __LINE__); } } char* MemoryLeakDetector::reallocMemory(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, size_t line, bool allocatNodesSeperately) { #ifdef CPPUTEST_DISABLE_MEM_CORRUPTION_CHECK allocatNodesSeperately = true; #endif if (memory) { MemoryLeakDetectorNode* node = memoryTable_.removeNode(memory); if (node == NULLPTR) { outputBuffer_.reportDeallocateNonAllocatedMemoryFailure(file, line, allocator, reporter_); return NULLPTR; } checkForCorruption(node, file, line, allocator, allocatNodesSeperately); } return reallocateMemoryAndLeakInformation(allocator, memory, size, file, line, allocatNodesSeperately); } void MemoryLeakDetector::ConstructMemoryLeakReport(MemLeakPeriod period) { MemoryLeakDetectorNode* leak = memoryTable_.getFirstLeak(period); outputBuffer_.startMemoryLeakReporting(); while (leak) { outputBuffer_.reportMemoryLeak(leak); leak = memoryTable_.getNextLeak(leak, period); } outputBuffer_.stopMemoryLeakReporting(); } const char* MemoryLeakDetector::report(MemLeakPeriod period) { ConstructMemoryLeakReport(period); return outputBuffer_.toString(); } void MemoryLeakDetector::markCheckingPeriodLeaksAsNonCheckingPeriod() { MemoryLeakDetectorNode* leak = memoryTable_.getFirstLeak(mem_leak_period_checking); while (leak) { if (leak->period_ == mem_leak_period_checking) leak->period_ = mem_leak_period_enabled; leak = memoryTable_.getNextLeak(leak, mem_leak_period_checking); } } size_t MemoryLeakDetector::totalMemoryLeaks(MemLeakPeriod period) { return memoryTable_.getTotalLeaks(period); } cpputest-4.0/src/CppUTest/SimpleMutex.cpp000644 000765 000024 00000004144 13663176127 021453 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleMutex.h" SimpleMutex::SimpleMutex(void) { psMtx = PlatformSpecificMutexCreate(); } SimpleMutex::~SimpleMutex(void) { PlatformSpecificMutexDestroy(psMtx); } void SimpleMutex::Lock(void) { PlatformSpecificMutexLock(psMtx); } void SimpleMutex::Unlock(void) { PlatformSpecificMutexUnlock(psMtx); } ScopedMutexLock::ScopedMutexLock(SimpleMutex *mtx) : mutex(mtx) { mutex->Lock(); } ScopedMutexLock::~ScopedMutexLock() { mutex->Unlock(); } cpputest-4.0/src/CppUTest/TestTestingFixture.cpp000644 000765 000024 00000012433 13663176127 023023 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" bool TestTestingFixture::lineOfCodeExecutedAfterCheck = false; TestTestingFixture::TestTestingFixture() { output_ = new StringBufferTestOutput(); result_ = new TestResult(*output_); genTest_ = new ExecFunctionTestShell(); registry_ = new TestRegistry(); ownsExecFunction_ = false; registry_->setCurrentRegistry(registry_); registry_->addTest(genTest_); lineOfCodeExecutedAfterCheck = false; } void TestTestingFixture::flushOutputAndResetResult() { output_->flush(); delete result_; result_ = new TestResult(*output_); } TestTestingFixture::~TestTestingFixture() { registry_->setCurrentRegistry(NULLPTR); clearExecFunction(); delete registry_; delete result_; delete output_; delete genTest_; } void TestTestingFixture::clearExecFunction() { if (genTest_->testFunction_ && ownsExecFunction_) delete genTest_->testFunction_; } void TestTestingFixture::addTest(UtestShell * test) { registry_->addTest(test); } void TestTestingFixture::setTestFunction(void(*testFunction)()) { clearExecFunction(); genTest_->testFunction_ = new ExecFunctionWithoutParameters(testFunction); ownsExecFunction_ = true; } void TestTestingFixture::setTestFunction(ExecFunction* testFunction) { clearExecFunction(); genTest_->testFunction_ = testFunction; ownsExecFunction_ = false; } void TestTestingFixture::setSetup(void(*setupFunction)()) { genTest_->setup_ = setupFunction; } void TestTestingFixture::setTeardown(void(*teardownFunction)()) { genTest_->teardown_ = teardownFunction; } void TestTestingFixture::installPlugin(TestPlugin* plugin) { registry_->installPlugin(plugin); } void TestTestingFixture::setRunTestsInSeperateProcess() { registry_->setRunTestsInSeperateProcess(); } void TestTestingFixture::setOutputVerbose() { output_->verbose(TestOutput::level_verbose); } void TestTestingFixture::runTestWithMethod(void(*method)()) { setTestFunction(method); runAllTests(); } void TestTestingFixture::runAllTests() { registry_->runAllTests(*result_); } size_t TestTestingFixture::getFailureCount() { return result_->getFailureCount(); } size_t TestTestingFixture::getCheckCount() { return result_->getCheckCount(); } size_t TestTestingFixture::getTestCount() { return result_->getTestCount(); } size_t TestTestingFixture::getIgnoreCount() { return result_->getIgnoredCount(); } TestRegistry* TestTestingFixture::getRegistry() { return registry_; } bool TestTestingFixture::hasTestFailed() { return genTest_->hasFailed(); } void TestTestingFixture::assertPrintContains(const SimpleString& contains) { STRCMP_CONTAINS(contains.asCharString(), getOutput().asCharString()); } void TestTestingFixture::assertPrintContainsNot(const SimpleString& contains) { CHECK(! getOutput().contains(contains)); } const SimpleString& TestTestingFixture::getOutput() { return output_->getOutput(); } size_t TestTestingFixture::getRunCount() { return result_->getRunCount(); } void TestTestingFixture::lineExecutedAfterCheck() { lineOfCodeExecutedAfterCheck = true; } void TestTestingFixture::checkTestFailsWithProperTestLocation(const char* text, const char* file, size_t line) { if (getFailureCount() != 1) FAIL_LOCATION(StringFromFormat("Expected one test failure, but got %d amount of test failures", (int) getFailureCount()).asCharString(), file, line); STRCMP_CONTAINS_LOCATION(text, output_->getOutput().asCharString(), "", file, line); if (lineOfCodeExecutedAfterCheck) FAIL_LOCATION("The test should jump/throw on failure and not execute the next line. However, the next line was executed.", file, line); } cpputest-4.0/src/CppUTest/JUnitTestOutput.cpp000644 000765 000024 00000022754 13663176127 022320 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/TestFailure.h" #include "CppUTest/PlatformSpecificFunctions.h" struct JUnitTestCaseResultNode { JUnitTestCaseResultNode() : execTime_(0), failure_(NULLPTR), ignored_(false), lineNumber_ (0), checkCount_ (0), next_(NULLPTR) { } SimpleString name_; size_t execTime_; TestFailure* failure_; bool ignored_; SimpleString file_; size_t lineNumber_; size_t checkCount_; JUnitTestCaseResultNode* next_; }; struct JUnitTestGroupResult { JUnitTestGroupResult() : testCount_(0), failureCount_(0), totalCheckCount_(0), startTime_(0), groupExecTime_(0), head_(NULLPTR), tail_(NULLPTR) { } size_t testCount_; size_t failureCount_; size_t totalCheckCount_; size_t startTime_; size_t groupExecTime_; SimpleString group_; JUnitTestCaseResultNode* head_; JUnitTestCaseResultNode* tail_; }; struct JUnitTestOutputImpl { JUnitTestGroupResult results_; PlatformSpecificFile file_; SimpleString package_; SimpleString stdOutput_; }; JUnitTestOutput::JUnitTestOutput() : impl_(new JUnitTestOutputImpl) { } JUnitTestOutput::~JUnitTestOutput() { resetTestGroupResult(); delete impl_; } void JUnitTestOutput::resetTestGroupResult() { impl_->results_.testCount_ = 0; impl_->results_.failureCount_ = 0; impl_->results_.group_ = ""; JUnitTestCaseResultNode* cur = impl_->results_.head_; while (cur) { JUnitTestCaseResultNode* tmp = cur->next_; delete cur->failure_; delete cur; cur = tmp; } impl_->results_.head_ = NULLPTR; impl_->results_.tail_ = NULLPTR; } void JUnitTestOutput::printTestsStarted() { } void JUnitTestOutput::printCurrentGroupStarted(const UtestShell& /*test*/) { } void JUnitTestOutput::printCurrentTestEnded(const TestResult& result) { impl_->results_.tail_->execTime_ = result.getCurrentTestTotalExecutionTime(); impl_->results_.tail_->checkCount_ = result.getCheckCount(); } void JUnitTestOutput::printTestsEnded(const TestResult& /*result*/) { } void JUnitTestOutput::printCurrentGroupEnded(const TestResult& result) { impl_->results_.groupExecTime_ = result.getCurrentGroupTotalExecutionTime(); writeTestGroupToFile(); resetTestGroupResult(); } void JUnitTestOutput::printCurrentTestStarted(const UtestShell& test) { impl_->results_.testCount_++; impl_->results_.group_ = test.getGroup(); impl_->results_.startTime_ = (size_t) GetPlatformSpecificTimeInMillis(); if (impl_->results_.tail_ == NULLPTR) { impl_->results_.head_ = impl_->results_.tail_ = new JUnitTestCaseResultNode; } else { impl_->results_.tail_->next_ = new JUnitTestCaseResultNode; impl_->results_.tail_ = impl_->results_.tail_->next_; } impl_->results_.tail_->name_ = test.getName(); impl_->results_.tail_->file_ = test.getFile(); impl_->results_.tail_->lineNumber_ = test.getLineNumber(); if (!test.willRun()) { impl_->results_.tail_->ignored_ = true; } } SimpleString JUnitTestOutput::createFileName(const SimpleString& group) { SimpleString fileName = "cpputest_"; if (!impl_->package_.isEmpty()) { fileName += impl_->package_; fileName += "_"; } fileName += group; return encodeFileName(fileName) + ".xml"; } SimpleString JUnitTestOutput::encodeFileName(const SimpleString& fileName) { // special character list based on: https://en.wikipedia.org/wiki/Filename static const char* const forbiddenCharacters = "/\\?%*:|\"<>"; SimpleString result = fileName; for (const char* sym = forbiddenCharacters; *sym; ++sym) { result.replace(*sym, '_'); } return result; } void JUnitTestOutput::setPackageName(const SimpleString& package) { if (impl_ != NULLPTR) { impl_->package_ = package; } } void JUnitTestOutput::writeXmlHeader() { writeToFile("\n"); } void JUnitTestOutput::writeTestSuiteSummary() { SimpleString buf = StringFromFormat( "\n", (int)impl_->results_.failureCount_, impl_->results_.group_.asCharString(), (int) impl_->results_.testCount_, (int) (impl_->results_.groupExecTime_ / 1000), (int) (impl_->results_.groupExecTime_ % 1000), GetPlatformSpecificTimeString()); writeToFile(buf.asCharString()); } void JUnitTestOutput::writeProperties() { writeToFile("\n"); writeToFile("\n"); } SimpleString JUnitTestOutput::encodeXmlText(const SimpleString& textbody) { SimpleString buf = textbody.asCharString(); buf.replace("&", "&"); buf.replace("\"", """); buf.replace("<", "<"); buf.replace(">", ">"); buf.replace("\n", "{newline}"); return buf; } void JUnitTestOutput::writeTestCases() { JUnitTestCaseResultNode* cur = impl_->results_.head_; while (cur) { SimpleString buf = StringFromFormat( "\n", impl_->package_.asCharString(), impl_->package_.isEmpty() ? "" : ".", impl_->results_.group_.asCharString(), cur->name_.asCharString(), (int) (cur->checkCount_ - impl_->results_.totalCheckCount_), (int) (cur->execTime_ / 1000), (int)(cur->execTime_ % 1000), cur->file_.asCharString(), (int) cur->lineNumber_); writeToFile(buf.asCharString()); impl_->results_.totalCheckCount_ = cur->checkCount_; if (cur->failure_) { writeFailure(cur); } else if (cur->ignored_) { writeToFile("\n"); } writeToFile("\n"); cur = cur->next_; } } void JUnitTestOutput::writeFailure(JUnitTestCaseResultNode* node) { SimpleString buf = StringFromFormat( "\n", node->failure_->getFileName().asCharString(), (int) node->failure_->getFailureLineNumber(), encodeXmlText(node->failure_->getMessage()).asCharString()); writeToFile(buf.asCharString()); writeToFile("\n"); } void JUnitTestOutput::writeFileEnding() { writeToFile(""); writeToFile(encodeXmlText(impl_->stdOutput_)); writeToFile("\n"); writeToFile("\n"); writeToFile("\n"); } void JUnitTestOutput::writeTestGroupToFile() { openFileForWrite(createFileName(impl_->results_.group_)); writeXmlHeader(); writeTestSuiteSummary(); writeProperties(); writeTestCases(); writeFileEnding(); closeFile(); } // LCOV_EXCL_START void JUnitTestOutput::printBuffer(const char*) { } void JUnitTestOutput::print(const char *output) { impl_->stdOutput_ += output; } void JUnitTestOutput::print(long) { } void JUnitTestOutput::print(size_t) { } void JUnitTestOutput::flush() { } // LCOV_EXCL_STOP void JUnitTestOutput::printFailure(const TestFailure& failure) { if (impl_->results_.tail_->failure_ == NULLPTR) { impl_->results_.failureCount_++; impl_->results_.tail_->failure_ = new TestFailure(failure); } } void JUnitTestOutput::openFileForWrite(const SimpleString& fileName) { impl_->file_ = PlatformSpecificFOpen(fileName.asCharString(), "w"); } void JUnitTestOutput::writeToFile(const SimpleString& buffer) { PlatformSpecificFPuts(buffer.asCharString(), impl_->file_); } void JUnitTestOutput::closeFile() { PlatformSpecificFClose(impl_->file_); } cpputest-4.0/src/CppUTest/TestPlugin.cpp000644 000765 000024 00000010744 13663176127 021300 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestPlugin.h" TestPlugin::TestPlugin(const SimpleString& name) : next_(NullTestPlugin::instance()), name_(name), enabled_(true) { } TestPlugin::TestPlugin(TestPlugin* next) : next_(next), name_("null"), enabled_(true) { } TestPlugin::~TestPlugin() { } TestPlugin* TestPlugin::addPlugin(TestPlugin* plugin) { next_ = plugin; return this; } void TestPlugin::runAllPreTestAction(UtestShell& test, TestResult& result) { if (enabled_) preTestAction(test, result); next_->runAllPreTestAction(test, result); } void TestPlugin::runAllPostTestAction(UtestShell& test, TestResult& result) { next_ ->runAllPostTestAction(test, result); if (enabled_) postTestAction(test, result); } bool TestPlugin::parseAllArguments(int ac, char** av, int index) { return parseAllArguments(ac, const_cast (av), index); } bool TestPlugin::parseAllArguments(int ac, const char *const *av, int index) { if (parseArguments(ac, av, index)) return true; if (next_) return next_->parseAllArguments(ac, av, index); return false; } const SimpleString& TestPlugin::getName() { return name_; } TestPlugin* TestPlugin::getPluginByName(const SimpleString& name) { if (name == name_) return this; if (next_) return next_->getPluginByName(name); return (next_); } TestPlugin* TestPlugin::getNext() { return next_; } TestPlugin* TestPlugin::removePluginByName(const SimpleString& name) { TestPlugin* removed = NULLPTR; if (next_ && next_->getName() == name) { removed = next_; next_ = next_->next_; } return removed; } void TestPlugin::disable() { enabled_ = false; } void TestPlugin::enable() { enabled_ = true; } bool TestPlugin::isEnabled() { return enabled_; } struct cpputest_pair { void **orig; void *orig_value; }; //////// SetPlugin static int pointerTableIndex; static cpputest_pair setlist[SetPointerPlugin::MAX_SET]; SetPointerPlugin::SetPointerPlugin(const SimpleString& name) : TestPlugin(name) { pointerTableIndex = 0; } void CppUTestStore(void**function) { if (pointerTableIndex >= SetPointerPlugin::MAX_SET) { FAIL("Maximum number of function pointers installed!"); } setlist[pointerTableIndex].orig_value = *function; setlist[pointerTableIndex].orig = function; pointerTableIndex++; } void SetPointerPlugin::postTestAction(UtestShell& /*test*/, TestResult& /*result*/) { for (int i = pointerTableIndex - 1; i >= 0; i--) *((void**) setlist[i].orig) = setlist[i].orig_value; pointerTableIndex = 0; } //////// NullPlugin NullTestPlugin::NullTestPlugin() : TestPlugin(NULLPTR) { } NullTestPlugin* NullTestPlugin::instance() { static NullTestPlugin _instance; return &_instance; } void NullTestPlugin::runAllPreTestAction(UtestShell&, TestResult&) { } void NullTestPlugin::runAllPostTestAction(UtestShell&, TestResult&) { } cpputest-4.0/src/CppUTest/CommandLineTestRunner.cpp000644 000765 000024 00000014530 13663176127 023417 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestOutput.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TeamCityTestOutput.h" #include "CppUTest/TestRegistry.h" int CommandLineTestRunner::RunAllTests(int ac, char** av) { return RunAllTests(ac, (const char *const *) av); } int CommandLineTestRunner::RunAllTests(int ac, const char *const *av) { int result = 0; ConsoleTestOutput backupOutput; MemoryLeakWarningPlugin memLeakWarn(DEF_PLUGIN_MEM_LEAK); memLeakWarn.destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(true); TestRegistry::getCurrentRegistry()->installPlugin(&memLeakWarn); { CommandLineTestRunner runner(ac, av, TestRegistry::getCurrentRegistry()); result = runner.runAllTestsMain(); } if (result == 0) { backupOutput << memLeakWarn.FinalReport(0); } TestRegistry::getCurrentRegistry()->removePluginByName(DEF_PLUGIN_MEM_LEAK); return result; } CommandLineTestRunner::CommandLineTestRunner(int ac, const char *const *av, TestRegistry* registry) : output_(NULLPTR), arguments_(NULLPTR), registry_(registry) { arguments_ = new CommandLineArguments(ac, av); } CommandLineTestRunner::~CommandLineTestRunner() { delete arguments_; delete output_; } int CommandLineTestRunner::runAllTestsMain() { int testResult = 1; SetPointerPlugin pPlugin(DEF_PLUGIN_SET_POINTER); registry_->installPlugin(&pPlugin); if (parseArguments(registry_->getFirstPlugin())) testResult = runAllTests(); registry_->removePluginByName(DEF_PLUGIN_SET_POINTER); return testResult; } void CommandLineTestRunner::initializeTestRun() { registry_->setGroupFilters(arguments_->getGroupFilters()); registry_->setNameFilters(arguments_->getNameFilters()); if (arguments_->isVerbose()) output_->verbose(TestOutput::level_verbose); if (arguments_->isVeryVerbose()) output_->verbose(TestOutput::level_veryVerbose); if (arguments_->isColor()) output_->color(); if (arguments_->runTestsInSeperateProcess()) registry_->setRunTestsInSeperateProcess(); if (arguments_->isRunIgnored()) registry_->setRunIgnored(); } int CommandLineTestRunner::runAllTests() { initializeTestRun(); size_t loopCount = 0; size_t failedTestCount = 0; size_t failedExecutionCount = 0; size_t repeatCount = arguments_->getRepeatCount(); if (arguments_->isListingTestGroupNames()) { TestResult tr(*output_); registry_->listTestGroupNames(tr); return 0; } if (arguments_->isListingTestGroupAndCaseNames()) { TestResult tr(*output_); registry_->listTestGroupAndCaseNames(tr); return 0; } if (arguments_->isReversing()) registry_->reverseTests(); if (arguments_->isShuffling()) { output_->print("Test order shuffling enabled with seed: "); output_->print(arguments_->getShuffleSeed()); output_->print("\n"); } while (loopCount++ < repeatCount) { if (arguments_->isShuffling()) registry_->shuffleTests(arguments_->getShuffleSeed()); output_->printTestRun(loopCount, repeatCount); TestResult tr(*output_); registry_->runAllTests(tr); failedTestCount += tr.getFailureCount(); if (tr.isFailure()) { failedExecutionCount++; } } return (int) (failedTestCount != 0 ? failedTestCount : failedExecutionCount); } TestOutput* CommandLineTestRunner::createTeamCityOutput() { return new TeamCityTestOutput; } TestOutput* CommandLineTestRunner::createJUnitOutput(const SimpleString& packageName) { JUnitTestOutput* junitOutput = new JUnitTestOutput; if (junitOutput != NULLPTR) { junitOutput->setPackageName(packageName); } return junitOutput; } TestOutput* CommandLineTestRunner::createConsoleOutput() { return new ConsoleTestOutput; } TestOutput* CommandLineTestRunner::createCompositeOutput(TestOutput* outputOne, TestOutput* outputTwo) { CompositeTestOutput* composite = new CompositeTestOutput; composite->setOutputOne(outputOne); composite->setOutputTwo(outputTwo); return composite; } bool CommandLineTestRunner::parseArguments(TestPlugin* plugin) { if (!arguments_->parse(plugin)) { output_ = createConsoleOutput(); output_->print((arguments_->needHelp()) ? arguments_->help() : arguments_->usage()); return false; } if (arguments_->isJUnitOutput()) { output_= createJUnitOutput(arguments_->getPackageName()); if (arguments_->isVerbose()) output_ = createCompositeOutput(output_, createConsoleOutput()); } else if (arguments_->isTeamCityOutput()) { output_ = createTeamCityOutput(); } else output_ = createConsoleOutput(); return true; } cpputest-4.0/src/CppUTest/TestRegistry.cpp000644 000765 000024 00000016644 13663176127 021657 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/PlatformSpecificFunctions.h" TestRegistry::TestRegistry() : tests_(NULLPTR), nameFilters_(NULLPTR), groupFilters_(NULLPTR), firstPlugin_(NullTestPlugin::instance()), runInSeperateProcess_(false), currentRepetition_(0), runIgnored_(false) { } TestRegistry::~TestRegistry() { } void TestRegistry::addTest(UtestShell *test) { tests_ = test->addTest(tests_); } void TestRegistry::runAllTests(TestResult& result) { bool groupStart = true; result.testsStarted(); for (UtestShell *test = tests_; test != NULLPTR; test = test->getNext()) { if (runInSeperateProcess_) test->setRunInSeperateProcess(); if (runIgnored_) test->setRunIgnored(); if (groupStart) { result.currentGroupStarted(test); groupStart = false; } result.countTest(); if (testShouldRun(test, result)) { result.currentTestStarted(test); test->runOneTest(firstPlugin_, result); result.currentTestEnded(test); } if (endOfGroup(test)) { groupStart = true; result.currentGroupEnded(test); } } result.testsEnded(); currentRepetition_++; } void TestRegistry::listTestGroupNames(TestResult& result) { SimpleString groupList; for (UtestShell *test = tests_; test != NULLPTR; test = test->getNext()) { SimpleString gname; gname += "#"; gname += test->getGroup(); gname += "#"; if (!groupList.contains(gname)) { groupList += gname; groupList += " "; } } groupList.replace("#", ""); if (groupList.endsWith(" ")) groupList = groupList.subString(0, groupList.size() - 1); result.print(groupList.asCharString()); } void TestRegistry::listTestGroupAndCaseNames(TestResult& result) { SimpleString groupAndNameList; for (UtestShell *test = tests_; test != NULLPTR; test = test->getNext()) { if (testShouldRun(test, result)) { SimpleString groupAndName; groupAndName += "#"; groupAndName += test->getGroup(); groupAndName += "."; groupAndName += test->getName(); groupAndName += "#"; if (!groupAndNameList.contains(groupAndName)) { groupAndNameList += groupAndName; groupAndNameList += " "; } } } groupAndNameList.replace("#", ""); if (groupAndNameList.endsWith(" ")) groupAndNameList = groupAndNameList.subString(0, groupAndNameList.size() - 1); result.print(groupAndNameList.asCharString()); } bool TestRegistry::endOfGroup(UtestShell* test) { return (!test || !test->getNext() || test->getGroup() != test->getNext()->getGroup()); } size_t TestRegistry::countTests() { return tests_ ? tests_->countTests() : 0; } TestRegistry* TestRegistry::currentRegistry_ = NULLPTR; TestRegistry* TestRegistry::getCurrentRegistry() { static TestRegistry registry; return (currentRegistry_ == NULLPTR) ? ®istry : currentRegistry_; } void TestRegistry::setCurrentRegistry(TestRegistry* registry) { currentRegistry_ = registry; } void TestRegistry::unDoLastAddTest() { tests_ = tests_ ? tests_->getNext() : NULLPTR; } void TestRegistry::setNameFilters(const TestFilter* filters) { nameFilters_ = filters; } void TestRegistry::setGroupFilters(const TestFilter* filters) { groupFilters_ = filters; } void TestRegistry::setRunIgnored() { runIgnored_ = true; } void TestRegistry::setRunTestsInSeperateProcess() { runInSeperateProcess_ = true; } int TestRegistry::getCurrentRepetition() { return currentRepetition_; } bool TestRegistry::testShouldRun(UtestShell* test, TestResult& result) { if (test->shouldRun(groupFilters_, nameFilters_)) return true; else { result.countFilteredOut(); return false; } } void TestRegistry::resetPlugins() { firstPlugin_ = NullTestPlugin::instance(); } void TestRegistry::installPlugin(TestPlugin* plugin) { firstPlugin_ = plugin->addPlugin(firstPlugin_); } TestPlugin* TestRegistry::getFirstPlugin() { return firstPlugin_; } TestPlugin* TestRegistry::getPluginByName(const SimpleString& name) { return firstPlugin_->getPluginByName(name); } void TestRegistry::removePluginByName(const SimpleString& name) { if (firstPlugin_->removePluginByName(name) == firstPlugin_) firstPlugin_ = firstPlugin_->getNext(); if (firstPlugin_->getName() == name) firstPlugin_ = firstPlugin_->getNext(); firstPlugin_->removePluginByName(name); } int TestRegistry::countPlugins() { int count = 0; for (TestPlugin* plugin = firstPlugin_; plugin != NullTestPlugin::instance(); plugin = plugin->getNext()) count++; return count; } UtestShell* TestRegistry::getFirstTest() { return tests_; } void TestRegistry::shuffleTests(size_t seed) { UtestShellPointerArray array(getFirstTest()); array.shuffle(seed); tests_ = array.getFirstTest(); } void TestRegistry::reverseTests() { UtestShellPointerArray array(getFirstTest()); array.reverse(); tests_ = array.getFirstTest(); } UtestShell* TestRegistry::getTestWithNext(UtestShell* test) { UtestShell* current = tests_; while (current && current->getNext() != test) current = current->getNext(); return current; } UtestShell* TestRegistry::findTestWithName(const SimpleString& name) { UtestShell* current = tests_; while (current) { if (current->getName() == name) return current; current = current->getNext(); } return NULLPTR; } UtestShell* TestRegistry::findTestWithGroup(const SimpleString& group) { UtestShell* current = tests_; while (current) { if (current->getGroup() == group) return current; current = current->getNext(); } return NULLPTR; } cpputest-4.0/src/Platforms/Iar/000755 000765 000024 00000000000 13663444567 017451 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/Dos/000755 000765 000024 00000000000 13663444567 017463 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/Symbian/000755 000765 000024 00000000000 13663444567 020340 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/Gcc/000755 000765 000024 00000000000 13663444566 017431 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/VisualCpp/000755 000765 000024 00000000000 13663444567 020644 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/Keil/000755 000765 000024 00000000000 13663444567 017622 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/armcc/000755 000765 000024 00000000000 13663444567 020023 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/C2000/000755 000765 000024 00000000000 13663444567 017422 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/GccNoStdC/000755 000765 000024 00000000000 13663444567 020505 5ustar00basvoddestaff000000 000000 cpputest-4.0/src/Platforms/GccNoStdC/UtestPlatform.cpp000644 000765 000024 00000007261 13663176127 024022 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #include "CppUTest/PlatformSpecificFunctions.h" void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = NULLPTR; int (*PlatformSpecificFork)() = NULLPTR; int (*PlatformSpecificWaitPid)(int, int*, int) = NULLPTR; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } void (*PlatformSpecificLongJmp)() = NULLPTR; int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = NULLPTR; void (*PlatformSpecificRestoreJumpBuffer)() = NULLPTR; long (*GetPlatformSpecificTimeInMillis)() = NULLPTR; const char* (*GetPlatformSpecificTimeString)() = NULLPTR; /* IO operations */ PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = NULLPTR; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = NULLPTR; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = NULLPTR; int (*PlatformSpecificPutchar)(int c) = NULLPTR; void (*PlatformSpecificFlush)(void) = NULLPTR; int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list) = NULLPTR; /* Dynamic Memory operations */ void* (*PlatformSpecificMalloc)(size_t) = NULLPTR; void* (*PlatformSpecificRealloc)(void*, size_t) = NULLPTR; void (*PlatformSpecificFree)(void*) = NULLPTR; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = NULLPTR; void* (*PlatformSpecificMemset)(void*, int, size_t) = NULLPTR; double (*PlatformSpecificFabs)(double) = NULLPTR; int (*PlatformSpecificIsNan)(double) = NULLPTR; int (*PlatformSpecificIsInf)(double) = NULLPTR; int (*PlatformSpecificAtExit)(void(*func)(void)) = NULLPTR; PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = NULLPTR; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex mtx) = NULLPTR; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex mtx) = NULLPTR; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex mtx) = NULLPTR; void (*PlatformSpecificSrand)(unsigned int) = NULLPTR; int (*PlatformSpecificRand)(void) = NULLPTR; cpputest-4.0/src/Platforms/C2000/UtestPlatform.cpp000644 000765 000024 00000016523 13663176127 022740 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Un-comment to use buffer instead of std out */ // #define USE_BUFFER_OUTPUT 1 #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #define far // eliminate "meaningless type qualifier" warning #include #include #include #include #include #include #include #undef far #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; #if USE_BUFFER_OUTPUT // Buffer for crude output routine #define BUFFER_SIZE 4096 static char buffer [BUFFER_SIZE]; /* "never used" warning is OK */ static int idx = 0; #endif TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void C2000RunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = C2000RunTestInASeperateProcess; extern "C" { static int C2000SetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void C2000LongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void C2000RestoreJumpBuffer() { jmp_buf_index--; } int (*PlatformSpecificSetJmp)(void (*function) (void*), void*) = C2000SetJmp; void (*PlatformSpecificLongJmp)(void) = C2000LongJmp; void (*PlatformSpecificRestoreJumpBuffer)(void) = C2000RestoreJumpBuffer; static long C2000TimeInMillis() { /* The TI c2000 platform does not have Posix support and thus lacks struct timespec. * Also, clock() always returns 0 in the simulator. Hence we work with struct tm.tm_hour * This has two consequences: * (1) We need to sum up the part in order to get an "elapsed since" time value, * rather than just using tm_sec. * (2) There is a possibility of overflow, since we stop at the hour * (3) Resolution is 1 s, even though we return ms. */ time_t t = time((time_t*)0); struct tm * ptm = gmtime(&t); long result = (long) ((ptm->tm_sec + ptm->tm_min * (time_t)60 + ptm->tm_hour * (time_t)3600) * (time_t)1000); return result; } static const char* TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } long (*GetPlatformSpecificTimeInMillis)() = C2000TimeInMillis; const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; extern int vsnprintf(char*, size_t, const char*, va_list); // not std::vsnprintf() extern int (*PlatformSpecificVSNprintf)(char *, size_t, const char*, va_list) = vsnprintf; PlatformSpecificFile C2000FOpen(const char* filename, const char* flag) { return fopen(filename, flag); } static void C2000FPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void C2000FClose(PlatformSpecificFile file) { fclose((FILE*)file); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = C2000FOpen; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = C2000FPuts; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = C2000FClose; static int CL2000Putchar(int c) { #if USE_BUFFER_OUTPUT if(idx < BUFFER_SIZE) { buffer[idx] = (char) c; idx++; /* "buffer[idx]" instead of "c" eliminates "never used" warning */ return (buffer[idx]); } else { return EOF; } #else return putchar(c); #endif } static void CL2000Flush() { fflush(stdout); } extern int (*PlatformSpecificPutchar)(int c) = CL2000Putchar; extern void (*PlatformSpecificFlush)(void) = CL2000Flush; static void* C2000Malloc(size_t size) { return (void*)far_malloc((unsigned long)size); } static void* C2000Realloc (void* memory, size_t size) { return (void*)far_realloc((long)memory, (unsigned long)size); } static void C2000Free(void* memory) { far_free((long)memory); } static void* C2000MemCpy(void* s1, const void* s2, size_t size) { return (void*)far_memlcpy((long)s1, (long)s2, size); } static void* C2000Memset(void* mem, int c, size_t size) { register unsigned long i = size; register long p = (long) mem; while (i--) *__farptr_to_word(p++) = c; return mem; } void* (*PlatformSpecificMalloc)(size_t size) = C2000Malloc; void* (*PlatformSpecificRealloc)(void* memory, size_t size) = C2000Realloc; void (*PlatformSpecificFree)(void* memory) = C2000Free; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = C2000MemCpy; void* (*PlatformSpecificMemset)(void* mem, int c, size_t size) = C2000Memset; /* double PlatformSpecificFabs(double d) { return fabs(d); } */ double (*PlatformSpecificFabs)(double) = fabs; static int IsNanImplementation(double d) { return 0; } static int IsInfImplementation(double d) { return 0; } int (*PlatformSpecificIsNan)(double d) = IsNanImplementation; int (*PlatformSpecificIsInf)(double d) = IsInfImplementation; static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; }cpputest-4.0/src/Platforms/armcc/UtestPlatform.cpp000644 000765 000024 00000014413 13663176127 023335 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include "CppUTest/TestHarness.h" #undef malloc #undef calloc #undef realloc #undef free #undef strdup #undef strndup #define far // eliminate "meaningless type qualifier" warning #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void DummyPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } static int DummyPlatformSpecificFork(void) { return 0; } static int DummyPlatformSpecificWaitPid(int, int*, int) { return 0; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = DummyPlatformSpecificRunTestInASeperateProcess; int (*PlatformSpecificFork)(void) = DummyPlatformSpecificFork; int (*PlatformSpecificWaitPid)(int, int*, int) = DummyPlatformSpecificWaitPid; extern "C" { static int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = PlatformSpecificSetJmpImplementation; void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; ///////////// Time in millis /* * In Keil MDK-ARM, clock() default implementation used semihosting. * Resolutions is user adjustable (1 ms for now) */ static long TimeInMillisImplementation() { clock_t t = clock(); return t; } ///////////// Time in String static const char* DummyTimeStringImplementation() { time_t tm = 0; return ctime(&tm); } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; const char* (*GetPlatformSpecificTimeString)() = DummyTimeStringImplementation; int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list args) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { return fopen(filename, flag); } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { fclose((FILE*)file); } static void PlatformSpecificFlushImplementation() { fflush(stdout); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; int (*PlatformSpecificPutchar)(int) = putchar; void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; void* (*PlatformSpecificMalloc)(size_t size) = malloc; void* (*PlatformSpecificRealloc)(void*, size_t) = realloc; void (*PlatformSpecificFree)(void* memory) = free; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = memcpy; void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; static int IsNanImplementation(double d) { return isnan(d); } static int IsInfImplementation(double d) { return isinf(d); } static int AtExitImplementation(void(*func)(void)) { return atexit(func); } double (*PlatformSpecificFabs)(double) = fabs; int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificIsInf)(double) = IsInfImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = AtExitImplementation; static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex) { } static void DummyMutexUnlock(PlatformSpecificMutex) { } static void DummyMutexDestroy(PlatformSpecificMutex) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; } cpputest-4.0/src/Platforms/Keil/UtestPlatform.cpp000644 000765 000024 00000015615 13663176127 023141 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #define far // eliminate "meaningless type qualifier" warning #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void DummyRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } static int DummyPlatformSpecificFork(void) { return 0; } static int DummyPlatformSpecificWaitPid(int, int*, int) { return 0; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = DummyRunTestInASeperateProcess; int (*PlatformSpecificFork)() = DummyPlatformSpecificFork; int (*PlatformSpecificWaitPid)(int, int*, int) = DummyPlatformSpecificWaitPid; extern "C" { static int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; int (*PlatformSpecificSetJmp)(void (*function)(void*), void*) = PlatformSpecificSetJmpImplementation; void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; ///////////// Time in millis /* * In Keil MDK-ARM, clock() default implementation used semihosting. * Resolutions is user adjustable (1 ms for now) */ static long TimeInMillisImplementation() { clock_t t = clock(); t = t * 10; return t; } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; static const char* TimeStringImplementation() { time_t tm = 0;//time(NULL); // todo return ctime(&tm); } const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; int PlatformSpecificAtoI(const char* str) { return atoi(str); } /* The ARMCC compiler will compile this function with C++ linkage, unless * we specifically tell it to use C linkage again, in the function definiton. */ extern int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list args) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { return 0; } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { printf("%s", str); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { } static void PlatformSpecificFlushImplementation() { } PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; int (*PlatformSpecificPutchar)(int) = putchar; void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; void* (*PlatformSpecificMalloc)(size_t) = malloc; void* (*PlatformSpecificRealloc) (void*, size_t) = realloc; void (*PlatformSpecificFree)(void*) = free; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = memcpy; void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; static int IsNanImplementation(double d) { # ifdef __MICROLIB return 0; # else return isnan(d); # endif } static int IsInfImplementation(double d) { # ifdef __MICROLIB return 0; # else return isinf(d); # endif } int DummyAtExit(void(*)(void)) { return 0; } double (*PlatformSpecificFabs)(double) = abs; int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificIsInf)(double) = IsInfImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = DummyAtExit; static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; } cpputest-4.0/src/Platforms/VisualCpp/UtestPlatform.cpp000644 000765 000024 00000014573 13663176127 024165 0ustar00basvoddestaff000000 000000 #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" #include #include #include #ifdef STDC_WANT_SECURE_LIB #define FOPEN(fp, filename, flag) fopen_s((fp), (filename), (flag)) #define _VSNPRINTF(str, size, trunc, format, args) _vsnprintf_s((str), (size), (trunc), (format), (args)) #define LOCALTIME(_tm, timer) localtime_s((_tm), (timer)) #else #define FOPEN(fp, filename, flag) *(fp) = fopen((filename), (flag)) #define _VSNPRINTF(str, size, trunc, format, args) _vsnprintf((str), (size), (format), (args)) #define LOCALTIME(_tm, timer) memcpy(_tm, localtime(timer), sizeof(tm)); #endif static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; static int VisualCppSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void VisualCppLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void VisualCppRestoreJumpBuffer() { jmp_buf_index--; } int (*PlatformSpecificSetJmp)(void (*function) (void*), void* data) = VisualCppSetJmp; void (*PlatformSpecificLongJmp)(void) = VisualCppLongJmp; void (*PlatformSpecificRestoreJumpBuffer)(void) = VisualCppRestoreJumpBuffer; static void VisualCppRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = VisualCppRunTestInASeperateProcess; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::visualStudio; } ///////////// Time in millis static long VisualCppTimeInMillis() { static LARGE_INTEGER s_frequency; static const BOOL s_use_qpc = QueryPerformanceFrequency(&s_frequency); if (s_use_qpc) { LARGE_INTEGER now; QueryPerformanceCounter(&now); return (long)((now.QuadPart * 1000) / s_frequency.QuadPart); } else { #ifdef TIMERR_NOERROR return timeGetTime(); #else #if !defined(_WIN32_WINNT) || !defined(_WIN32_WINNT_VISTA) || (_WIN32_WINNT < _WIN32_WINNT_VISTA) return GetTickCount(); #else return (long)GetTickCount64(); #endif #endif } } long (*GetPlatformSpecificTimeInMillis)() = VisualCppTimeInMillis; ///////////// Time in String static const char* VisualCppTimeString() { time_t the_time = time(NULL); struct tm the_local_time; static char dateTime[80]; LOCALTIME(&the_local_time, &the_time); strftime(dateTime, 80, "%Y-%m-%dT%H:%M:%S", &the_local_time); return dateTime; } const char* (*GetPlatformSpecificTimeString)() = VisualCppTimeString; ////// taken from gcc static int VisualCppVSNprintf(char *str, size_t size, const char* format, va_list args) { char* buf = 0; size_t sizeGuess = size; int result = _VSNPRINTF( str, size, _TRUNCATE, format, args); str[size-1] = 0; while (result == -1) { if (buf != 0) free(buf); sizeGuess += 10; buf = (char*)malloc(sizeGuess); result = _VSNPRINTF( buf, sizeGuess, _TRUNCATE, format, args); } if (buf != 0) free(buf); return result; } int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list) = VisualCppVSNprintf; static PlatformSpecificFile VisualCppFOpen(const char* filename, const char* flag) { FILE* file; FOPEN(&file, filename, flag); return file; } static void VisualCppFPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void VisualCppFClose(PlatformSpecificFile file) { fclose((FILE*)file); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = VisualCppFOpen; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = VisualCppFPuts; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = VisualCppFClose; static void VisualCppFlush() { fflush(stdout); } int (*PlatformSpecificPutchar)(int c) = putchar; void (*PlatformSpecificFlush)(void) = VisualCppFlush; static void* VisualCppMalloc(size_t size) { return malloc(size); } static void* VisualCppReAlloc(void* memory, size_t size) { return realloc(memory, size); } static void VisualCppFree(void* memory) { free(memory); } void (*PlatformSpecificSrand)(unsigned int) = srand; int (*PlatformSpecificRand)(void) = rand; void* (*PlatformSpecificMalloc)(size_t size) = VisualCppMalloc; void* (*PlatformSpecificRealloc)(void* memory, size_t size) = VisualCppReAlloc; void (*PlatformSpecificFree)(void* memory) = VisualCppFree; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = memcpy; void* (*PlatformSpecificMemset)(void* mem, int c, size_t size) = memset; static int IsInfImplementation(double d) { return !_finite(d); } double (*PlatformSpecificFabs)(double d) = fabs; extern "C" int (*PlatformSpecificIsNan)(double) = _isnan; extern "C" int (*PlatformSpecificIsInf)(double) = IsInfImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; static PlatformSpecificMutex VisualCppMutexCreate(void) { CRITICAL_SECTION *critical_section = new CRITICAL_SECTION; InitializeCriticalSection(critical_section); return (PlatformSpecificMutex)critical_section; } static void VisualCppMutexLock(PlatformSpecificMutex mutex) { EnterCriticalSection((CRITICAL_SECTION*)mutex); } static void VisualCppMutexUnlock(PlatformSpecificMutex mutex) { LeaveCriticalSection((CRITICAL_SECTION*)mutex); } static void VisualCppMutexDestroy(PlatformSpecificMutex mutex) { CRITICAL_SECTION *critical_section = (CRITICAL_SECTION*)mutex; DeleteCriticalSection(critical_section); delete critical_section; } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = VisualCppMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = VisualCppMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = VisualCppMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = VisualCppMutexDestroy; cpputest-4.0/src/Platforms/Gcc/UtestPlatform.cpp000644 000765 000024 00000025714 13663176127 022752 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #ifdef CPPUTEST_HAVE_GETTIMEOFDAY #include #endif #ifdef CPPUTEST_HAVE_FORK #include #include #include #endif #include #include #include #include #include #include #include #include #ifdef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK #include #endif #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; #ifndef CPPUTEST_HAVE_FORK static void GccPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } static int PlatformSpecificForkImplementation(void) { return 0; } static int PlatformSpecificWaitPidImplementation(int, int*, int) { return 0; } #else static void SetTestFailureByStatusCode(UtestShell* shell, TestResult* result, int status) { if (WIFEXITED(status) && WEXITSTATUS(status) != 0) { result->addFailure(TestFailure(shell, "Failed in separate process")); } else if (WIFSIGNALED(status)) { SimpleString message("Failed in separate process - killed by signal "); message += StringFrom(WTERMSIG(status)); result->addFailure(TestFailure(shell, message)); } else if (WIFSTOPPED(status)) { result->addFailure(TestFailure(shell, "Stopped in separate process - continuing")); } } static void GccPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { const pid_t syscallError = -1; pid_t cpid; pid_t w; int status = 0; cpid = PlatformSpecificFork(); if (cpid == syscallError) { result->addFailure(TestFailure(shell, "Call to fork() failed")); return; } if (cpid == 0) { /* Code executed by child */ const size_t initialFailureCount = result->getFailureCount(); // LCOV_EXCL_LINE shell->runOneTestInCurrentProcess(plugin, *result); // LCOV_EXCL_LINE _exit(initialFailureCount < result->getFailureCount()); // LCOV_EXCL_LINE } else { /* Code executed by parent */ size_t amountOfRetries = 0; do { w = PlatformSpecificWaitPid(cpid, &status, WUNTRACED); if (w == syscallError) { // OS X debugger causes EINTR if (EINTR == errno) { if (amountOfRetries > 30) { result->addFailure(TestFailure(shell, "Call to waitpid() failed with EINTR. Tried 30 times and giving up! Sometimes happens in debugger")); return; } amountOfRetries++; } else { result->addFailure(TestFailure(shell, "Call to waitpid() failed")); return; } } else { SetTestFailureByStatusCode(shell, result, status); if (WIFSTOPPED(status)) kill(w, SIGCONT); } } while ((w == syscallError) || (!WIFEXITED(status) && !WIFSIGNALED(status))); } } static pid_t PlatformSpecificForkImplementation(void) { return fork(); } static pid_t PlatformSpecificWaitPidImplementation(int pid, int* status, int options) { return waitpid(pid, status, options); } #endif TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = GccPlatformSpecificRunTestInASeperateProcess; int (*PlatformSpecificFork)(void) = PlatformSpecificForkImplementation; int (*PlatformSpecificWaitPid)(int, int*, int) = PlatformSpecificWaitPidImplementation; extern "C" { static int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } /* * MacOSX clang 3.0 doesn't seem to recognize longjmp and thus complains about _no_return_. * The later clang compilers complain when it isn't there. So only way is to check the clang compiler here :( */ #if !((__clang_major__ == 3) && (__clang_minor__ == 0)) _no_return_ #endif static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = PlatformSpecificSetJmpImplementation; void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; ///////////// Time in millis static long TimeInMillisImplementation() { #ifdef CPPUTEST_HAVE_GETTIMEOFDAY struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); return (tv.tv_sec * 1000) + (long)((double)tv.tv_usec * 0.001); #else return 0; #endif } static const char* TimeStringImplementation() { time_t theTime = time(NULLPTR); static char dateTime[80]; #ifdef _WIN32 static struct tm lastlocaltime; localtime_s(&lastlocaltime, &theTime); struct tm *tmp = &lastlocaltime; #else struct tm *tmp = localtime(&theTime); #endif strftime(dateTime, 80, "%Y-%m-%dT%H:%M:%S", tmp); return dateTime; } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; /* Wish we could add an attribute to the format for discovering mis-use... but the __attribute__(format) seems to not work on va_list */ #ifdef __clang__ #pragma clang diagnostic ignored "-Wformat-nonliteral" #endif #ifdef __clang__ #pragma clang diagnostic ignored "-Wused-but-marked-unused" #endif int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { #ifdef _WIN32 FILE* file; fopen_s(&file, filename, flag); return file; #else return fopen(filename, flag); #endif } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { fclose((FILE*)file); } static void PlatformSpecificFlushImplementation() { fflush(stdout); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; int (*PlatformSpecificPutchar)(int) = putchar; void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; void* (*PlatformSpecificMalloc)(size_t size) = malloc; void* (*PlatformSpecificRealloc)(void*, size_t) = realloc; void (*PlatformSpecificFree)(void* memory) = free; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = memcpy; void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; /* GCC 4.9.x introduces -Wfloat-conversion, which causes a warning / error * in GCC's own (macro) implementation of isnan() and isinf(). */ #if defined(__GNUC__) && (__GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ > 8)) #pragma GCC diagnostic ignored "-Wfloat-conversion" #endif static int IsNanImplementation(double d) { return isnan(d); } static int IsInfImplementation(double d) { return isinf(d); } double (*PlatformSpecificFabs)(double) = fabs; void (*PlatformSpecificSrand)(unsigned int) = srand; int (*PlatformSpecificRand)(void) = rand; int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificIsInf)(double) = IsInfImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; /// this was undefined before static PlatformSpecificMutex PThreadMutexCreate(void) { #ifdef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK pthread_mutex_t *mutex = new pthread_mutex_t; pthread_mutex_init(mutex, NULLPTR); return (PlatformSpecificMutex)mutex; #else return NULLPTR; #endif } #ifdef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK static void PThreadMutexLock(PlatformSpecificMutex mtx) { pthread_mutex_lock((pthread_mutex_t *)mtx); } #else static void PThreadMutexLock(PlatformSpecificMutex) { } #endif #ifdef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK static void PThreadMutexUnlock(PlatformSpecificMutex mtx) { pthread_mutex_unlock((pthread_mutex_t *)mtx); } #else static void PThreadMutexUnlock(PlatformSpecificMutex) { } #endif #ifdef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK static void PThreadMutexDestroy(PlatformSpecificMutex mtx) { pthread_mutex_t *mutex = (pthread_mutex_t *)mtx; pthread_mutex_destroy(mutex); delete mutex; } #else static void PThreadMutexDestroy(PlatformSpecificMutex) { } #endif PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = PThreadMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = PThreadMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = PThreadMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = PThreadMutexDestroy; } cpputest-4.0/src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp000644 000765 000024 00000007306 13663176127 025762 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "MemoryLeakWarning.h" #include MemoryLeakWarning* MemoryLeakWarning::_latest = NULL; // naming convention due to CppUTest generic class name class MemoryLeakWarningData : public CBase { public: TInt iInitialAllocCells; TInt iExpectedLeaks; TInt iInitialThreadHandleCount; TInt iInitialProcessHandleCount; }; MemoryLeakWarning::MemoryLeakWarning() { _latest = this; CreateData(); } MemoryLeakWarning::~MemoryLeakWarning() { DestroyData(); } void MemoryLeakWarning::Enable() { } const char* MemoryLeakWarning::FinalReport(int toBeDeletedLeaks) { TInt cellDifference(User::CountAllocCells() - _impl->iInitialAllocCells); if( cellDifference != toBeDeletedLeaks ) { return "Heap imbalance after test\n"; } TInt processHandles; TInt threadHandles; RThread().HandleCount(processHandles, threadHandles); if(_impl->iInitialProcessHandleCount != processHandles || _impl->iInitialThreadHandleCount != threadHandles) { return "Handle count imbalance after test\n"; } return ""; } void MemoryLeakWarning::CheckPointUsage() { _impl->iInitialAllocCells = User::CountAllocCells(); RThread().HandleCount(_impl->iInitialProcessHandleCount, _impl->iInitialThreadHandleCount); } bool MemoryLeakWarning::UsageIsNotBalanced() { TInt allocatedCells(User::CountAllocCells()); if(_impl->iExpectedLeaks != 0) { TInt difference(Abs(_impl->iInitialAllocCells - allocatedCells)); return difference != _impl->iExpectedLeaks; } return allocatedCells != _impl->iInitialAllocCells; } const char* MemoryLeakWarning::Message() { return ""; } void MemoryLeakWarning::ExpectLeaks(int n) { _impl->iExpectedLeaks = n; } // this method leaves (no naming convention followed due to CppUTest framework void MemoryLeakWarning::CreateData() { _impl = new(ELeave) MemoryLeakWarningData(); } void MemoryLeakWarning::DestroyData() { delete _impl; _impl = NULL; } MemoryLeakWarning* MemoryLeakWarning::GetLatest() { return _latest; } void MemoryLeakWarning::SetLatest(MemoryLeakWarning* latest) { _latest = latest; } cpputest-4.0/src/Platforms/Symbian/UtestPlatform.cpp000644 000765 000024 00000012247 13663176127 023655 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include #include #include #include #include #include #include #include #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; int PlatformSpecificSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } void PlatformSpecificLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } void PlatformSpecificRestoreJumpBuffer() { jmp_buf_index--; } void PlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { printf("-p doesn't work on this platform as it is not implemented. Running inside the process\b"); shell->runOneTest(plugin, *result); } static long TimeInMillisImplementation() { struct timeval tv; struct timezone tz; ::gettimeofday(&tv, &tz); return (tv.tv_sec * 1000) + (long)(tv.tv_usec * 0.001); } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static SimpleString TimeStringImplementation() { time_t tm = time(NULL); return ctime(&tm); } SimpleString GetPlatformSpecificTimeString() = TimeStringImplementation; int PlatformSpecificVSNprintf(char* str, size_t size, const char* format, va_list args) { return vsnprintf(str, size, format, args); } void PlatformSpecificFlush() { fflush(stdout); } int PlatformSpecificPutchar(int c) { return putchar(c); } double PlatformSpecificFabs(double d) { return fabs(d); } void* PlatformSpecificMalloc(size_t size) { return malloc(size); } void* PlatformSpecificRealloc (void* memory, size_t size) { return realloc(memory, size); } void PlatformSpecificFree(void* memory) { free(memory); } void* PlatformSpecificMemCpy(void* s1, const void* s2, size_t size) { return memcpy(s1, s2, size); } void* PlatformSpecificMemset(void* mem, int c, size_t size) { return memset(mem, c, size); } PlatformSpecificFile PlatformSpecificFOpen(const char* filename, const char* flag) { return fopen(filename, flag); } void PlatformSpecificFPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } void PlatformSpecificFClose(PlatformSpecificFile file) { fclose((FILE*)file); } extern "C" { static int IsNanImplementation(double d) { return isnan(d); } static int IsInfImplementation(double d) { return isinf(d); } int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificIsInf)(double) = IsInfImplementation; } static PlatformSpecificMutex DummyMutexCreate(void) { FAIL("PlatformSpecificMutexCreate is not implemented"); return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexLock is not implemented"); } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexUnlock is not implemented"); } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { FAIL("PlatformSpecificMutexDestroy is not implemented"); } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; cpputest-4.0/src/Platforms/Symbian/README_Symbian.txt000644 000765 000024 00000002513 13663176127 023513 0ustar00basvoddestaff000000 000000 CppUTest on Symbian Compliling To compile CppUTest you need to have Symbian Posix libraries installed. On S60 it's recommended to use S60 Open C. On other platforms one can use Symbian PIPS. Compiling is in standard way, by issuing from command line commands bldmake bldfiles && abld build in build-directory. You can also import the project's bld.inf file into Carbide in normal way. Writing tests CppUTest exports the needed header files into \epoc32\include\CppUTest -directory. Add the directory to the include-path of the test project. One needs to include TestHarness.h file into test source file. The test project must link against cpputest.lib using STATICLIBRARY statement in MMP-file. CppUTest depends also on standard C-library so the tests must be linked against libc as well. The entry point file of the tests is normally the following: #include #include // This is a GCCE toolchain workaround needed when compiling with GCCE // and using main() entry point #ifdef __GCCE__ #include #endif int main(int argc, char** argv) { CommandLineTestRunner::RunAllTests(argc, argv); } The test must be statically linked against libcrt0.lib if standard main (not E32Main) is used as above. For the further example, please consult alltests.mmp in build directory. cpputest-4.0/src/Platforms/Dos/UtestPlatform.cpp000644 000765 000024 00000014731 13663176127 023000 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* Un-comment to use buffer instead of std out */ // #define USE_BUFFER_OUTPUT 1 #include #include "CppUTest/TestHarness.h" #undef malloc #undef free #undef calloc #undef realloc #undef strdup #undef strndup #define far // eliminate "meaningless type qualifier" warning #include #include #include #include #include #include #include #undef far #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void DummyRunTestInASeperateProcess(UtestShell* shell, TestPlugin* plugin, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } static int DummyPlatformSpecificFork(void) { return 0; } static int DummyPlatformSpecificWaitPid(int, int*, int) { return 0; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell*, TestPlugin*, TestResult*) = DummyRunTestInASeperateProcess; int (*PlatformSpecificFork)() = DummyPlatformSpecificFork; int (*PlatformSpecificWaitPid)(int, int*, int) = DummyPlatformSpecificWaitPid; extern "C" { static int DosSetJmp(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void DosLongJmp() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void DosRestoreJumpBuffer() { jmp_buf_index--; } int (*PlatformSpecificSetJmp)(void (*function) (void*), void*) = DosSetJmp; void (*PlatformSpecificLongJmp)(void) = DosLongJmp; void (*PlatformSpecificRestoreJumpBuffer)(void) = DosRestoreJumpBuffer; static long DosTimeInMillis() { return clock() * 1000 / CLOCKS_PER_SEC; } static const char* DosTimeString() { time_t tm = time(NULL); return ctime(&tm); } static int DosVSNprintf(char* str, size_t size, const char* format, va_list args) { return vsnprintf(str, size, format, args); } long (*GetPlatformSpecificTimeInMillis)() = DosTimeInMillis; const char* (*GetPlatformSpecificTimeString)() = DosTimeString; int (*PlatformSpecificVSNprintf)(char *, size_t, const char*, va_list) = DosVSNprintf; PlatformSpecificFile DosFOpen(const char* filename, const char* flag) { return fopen(filename, flag); } static void DosFPuts(const char* str, PlatformSpecificFile file) { fputs(str, (FILE*)file); } static void DosFClose(PlatformSpecificFile file) { fclose((FILE*)file); } PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag) = DosFOpen; void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file) = DosFPuts; void (*PlatformSpecificFClose)(PlatformSpecificFile file) = DosFClose; static int DosPutchar(int c) { return putchar(c); } static void DosFlush() { fflush(stdout); } extern int (*PlatformSpecificPutchar)(int c) = DosPutchar; extern void (*PlatformSpecificFlush)(void) = DosFlush; static void* DosMalloc(size_t size) { return malloc(size); } static void* DosRealloc (void* memory, size_t size) { return realloc(memory, size); } static void DosFree(void* memory) { free(memory); } static void* DosMemCpy(void* s1, const void* s2, size_t size) { return memcpy(s1, s2, size); } static void* DosMemset(void* mem, int c, size_t size) { return memset(mem, c, size); } void* (*PlatformSpecificMalloc)(size_t size) = DosMalloc; void* (*PlatformSpecificRealloc)(void* memory, size_t size) = DosRealloc; void (*PlatformSpecificFree)(void* memory) = DosFree; void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size) = DosMemCpy; void* (*PlatformSpecificMemset)(void* mem, int c, size_t size) = DosMemset; static void DosSrand(unsigned int seed) { srand(seed); } static int DosRand() { return rand(); } static double DosFabs(double d) { return fabs(d); } static int DosIsNan(double d) { return isnan(d); } static int DosIsInf(double d) { return isinf(d); } void (*PlatformSpecificSrand)(unsigned int) = DosSrand; int (*PlatformSpecificRand)(void) = DosRand; double (*PlatformSpecificFabs)(double) = DosFabs; int (*PlatformSpecificIsNan)(double d) = DosIsNan; int (*PlatformSpecificIsInf)(double d) = DosIsInf; static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex mtx) { } static void DummyMutexUnlock(PlatformSpecificMutex mtx) { } static void DummyMutexDestroy(PlatformSpecificMutex mtx) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; } cpputest-4.0/src/Platforms/Iar/UtestPlatform.cpp000644 000765 000024 00000014540 13663176127 022764 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include #include #include #include #include #include #include #include "CppUTest/TestHarness.h" #undef malloc #undef calloc #undef realloc #undef free #undef strdup #undef strndup #include "CppUTest/PlatformSpecificFunctions.h" static jmp_buf test_exit_jmp_buf[10]; static int jmp_buf_index = 0; TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment() { return TestOutput::eclipse; } static void DummyPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "-p doesn't work on this platform, as it is lacking fork.\b")); } static int DummyPlatformSpecificFork(void) { return 0; } static int DummyPlatformSpecificWaitPid(int, int*, int) { return 0; } void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result) = DummyPlatformSpecificRunTestInASeperateProcess; int (*PlatformSpecificFork)(void) = DummyPlatformSpecificFork; int (*PlatformSpecificWaitPid)(int, int*, int) = DummyPlatformSpecificWaitPid; extern "C" { static int PlatformSpecificSetJmpImplementation(void (*function) (void* data), void* data) { if (0 == setjmp(test_exit_jmp_buf[jmp_buf_index])) { jmp_buf_index++; function(data); jmp_buf_index--; return 1; } return 0; } static void PlatformSpecificLongJmpImplementation() { jmp_buf_index--; longjmp(test_exit_jmp_buf[jmp_buf_index], 1); } static void PlatformSpecificRestoreJumpBufferImplementation() { jmp_buf_index--; } void (*PlatformSpecificLongJmp)() = PlatformSpecificLongJmpImplementation; int (*PlatformSpecificSetJmp)(void (*)(void*), void*) = PlatformSpecificSetJmpImplementation; void (*PlatformSpecificRestoreJumpBuffer)() = PlatformSpecificRestoreJumpBufferImplementation; ///////////// Time in millis static long TimeInMillisImplementation() { clock_t t = clock(); t = t * 10; return t; } ///////////// Time in String static const char* TimeStringImplementation() { time_t tm = time(NULL); char* pTimeStr = ctime(&tm); char* newlineChar = strchr(pTimeStr, '\n'); // Find the terminating newline character. if(newlineChar != NULL) *newlineChar = '\0'; //If newline is found replace it with the string terminator. return (pTimeStr); } long (*GetPlatformSpecificTimeInMillis)() = TimeInMillisImplementation; const char* (*GetPlatformSpecificTimeString)() = TimeStringImplementation; int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list args) = vsnprintf; static PlatformSpecificFile PlatformSpecificFOpenImplementation(const char* filename, const char* flag) { static int fileNo = 0; (void)filename; (void)flag; fileNo++; return (void*)fileNo; } static void PlatformSpecificFPutsImplementation(const char* str, PlatformSpecificFile file) { (void)str; (void)file; printf("FILE%d:%s",(int)file, str); } static void PlatformSpecificFCloseImplementation(PlatformSpecificFile file) { (void)file; } static void PlatformSpecificFlushImplementation() { } PlatformSpecificFile (*PlatformSpecificFOpen)(const char*, const char*) = PlatformSpecificFOpenImplementation; void (*PlatformSpecificFPuts)(const char*, PlatformSpecificFile) = PlatformSpecificFPutsImplementation; void (*PlatformSpecificFClose)(PlatformSpecificFile) = PlatformSpecificFCloseImplementation; int (*PlatformSpecificPutchar)(int) = putchar; void (*PlatformSpecificFlush)() = PlatformSpecificFlushImplementation; void* (*PlatformSpecificMalloc)(size_t size) = malloc; void* (*PlatformSpecificRealloc)(void*, size_t) = realloc; void (*PlatformSpecificFree)(void* memory) = free; void* (*PlatformSpecificMemCpy)(void*, const void*, size_t) = memcpy; void* (*PlatformSpecificMemset)(void*, int, size_t) = memset; static int IsNanImplementation(double d) { return isnan(d); } static int IsInfImplementation(double d) { return isinf(d); } double (*PlatformSpecificFabs)(double) = fabs; int (*PlatformSpecificIsNan)(double) = IsNanImplementation; int (*PlatformSpecificIsInf)(double) = IsInfImplementation; int (*PlatformSpecificAtExit)(void(*func)(void)) = atexit; /// this was undefined before static PlatformSpecificMutex DummyMutexCreate(void) { return 0; } static void DummyMutexLock(PlatformSpecificMutex) { } static void DummyMutexUnlock(PlatformSpecificMutex) { } static void DummyMutexDestroy(PlatformSpecificMutex) { } PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void) = DummyMutexCreate; void (*PlatformSpecificMutexLock)(PlatformSpecificMutex) = DummyMutexLock; void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex) = DummyMutexUnlock; void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex) = DummyMutexDestroy; } cpputest-4.0/cpputest_build/.gitignore000644 000765 000024 00000000016 13663176127 021205 0ustar00basvoddestaff000000 000000 * !.gitignore cpputest-4.0/build/MakefileWorker.mk000644 000765 000024 00000045651 13663176127 020544 0ustar00basvoddestaff000000 000000 #--------- # # MakefileWorker.mk # # Include this helper file in your makefile # It makes # A static library # A test executable # # See this example for parameter settings # examples/Makefile # #---------- # Inputs - these variables describe what to build # # INCLUDE_DIRS - Directories used to search for include files. # This generates a -I for each directory # SRC_DIRS - Directories containing source files to build into the library # SRC_FILES - Specific source files to build into library. Helpful when not all code # in a directory can be built for test (hopefully a temporary situation) # TEST_SRC_DIRS - Directories containing unit test code build into the unit test runner # These do not go in a library. They are explicitly included in the test runner # TEST_SRC_FILES - Specific source files to build into the unit test runner # These do not go in a library. They are explicitly included in the test runner # MOCKS_SRC_DIRS - Directories containing mock source files to build into the test runner # These do not go in a library. They are explicitly included in the test runner #---------- # You can adjust these variables to influence how to build the test target # and where to put and name outputs # See below to determine defaults # COMPONENT_NAME - the name of the thing being built # TEST_TARGET - name of the test executable. By default it is # $(COMPONENT_NAME)_tests # Helpful if you want 1 > make files in the same directory with different # executables as output. # CPPUTEST_HOME - where CppUTest home dir found # TARGET_PLATFORM - Influences how the outputs are generated by modifying the # CPPUTEST_OBJS_DIR and CPPUTEST_LIB_DIR to use a sub-directory under the # normal objs and lib directories. Also modifies where to search for the # CPPUTEST_LIB to link against. # CPPUTEST_OBJS_DIR - a directory where o and d files go # CPPUTEST_LIB_DIR - a directory where libs go # CPPUTEST_ENABLE_DEBUG - build for debug # CPPUTEST_USE_MEM_LEAK_DETECTION - Links with overridden new and delete # CPPUTEST_USE_STD_CPP_LIB - Set to N to keep the standard C++ library out # of the test harness # CPPUTEST_USE_GCOV - Turn on coverage analysis # Clean then build with this flag set to Y, then 'make gcov' # CPPUTEST_MAPFILE - generate a map file # CPPUTEST_WARNINGFLAGS - overly picky by default # OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make # other targets. Like CSlim, which is part of fitnesse # CPPUTEST_USE_VPATH - Use Make's VPATH functionality to support user # specification of source files and directories that aren't below # the user's Makefile in the directory tree, like: # SRC_DIRS += ../../lib/foo # It defaults to N, and shouldn't be necessary except in the above case. #---------- # # Other flags users can initialize to sneak in their settings # CPPUTEST_CXXFLAGS - flags for the C++ compiler # CPPUTEST_CPPFLAGS - flags for the C++ AND C preprocessor # CPPUTEST_CFLAGS - flags for the C complier # CPPUTEST_LDFLAGS - Linker flags #---------- # Some behavior is weird on some platforms. Need to discover the platform. # Platforms UNAME_OUTPUT = "$(shell uname -a)" MACOSX_STR = Darwin MINGW_STR = MINGW CYGWIN_STR = CYGWIN LINUX_STR = Linux SUNOS_STR = SunOS UNKNWOWN_OS_STR = Unknown # Compilers CC_VERSION_OUTPUT ="$(shell $(CXX) -v 2>&1)" CLANG_STR = clang SUNSTUDIO_CXX_STR = SunStudio UNAME_OS = $(UNKNWOWN_OS_STR) ifeq ($(findstring $(MINGW_STR),$(UNAME_OUTPUT)),$(MINGW_STR)) UNAME_OS = $(MINGW_STR) endif ifeq ($(findstring $(CYGWIN_STR),$(UNAME_OUTPUT)),$(CYGWIN_STR)) UNAME_OS = $(CYGWIN_STR) endif ifeq ($(findstring $(LINUX_STR),$(UNAME_OUTPUT)),$(LINUX_STR)) UNAME_OS = $(LINUX_STR) endif ifeq ($(findstring $(MACOSX_STR),$(UNAME_OUTPUT)),$(MACOSX_STR)) UNAME_OS = $(MACOSX_STR) #lion has a problem with the 'v' part of -a UNAME_OUTPUT = "$(shell uname -pmnrs)" endif ifeq ($(findstring $(SUNOS_STR),$(UNAME_OUTPUT)),$(SUNOS_STR)) UNAME_OS = $(SUNOS_STR) SUNSTUDIO_CXX_ERR_STR = CC -flags ifeq ($(findstring $(SUNSTUDIO_CXX_ERR_STR),$(CC_VERSION_OUTPUT)),$(SUNSTUDIO_CXX_ERR_STR)) CC_VERSION_OUTPUT ="$(shell $(CXX) -V 2>&1)" COMPILER_NAME = $(SUNSTUDIO_CXX_STR) endif endif ifeq ($(findstring $(CLANG_STR),$(CC_VERSION_OUTPUT)),$(CLANG_STR)) COMPILER_NAME = $(CLANG_STR) endif #Kludge for mingw, it does not have cc.exe, but gcc.exe will do ifeq ($(UNAME_OS),$(MINGW_STR)) CC := gcc endif #And another kludge. Exception handling in gcc 4.6.2 is broken when linking the # Standard C++ library as a shared library. Unbelievable. ifeq ($(UNAME_OS),$(MINGW_STR)) CPPUTEST_LDFLAGS += -static endif ifeq ($(UNAME_OS),$(CYGWIN_STR)) CPPUTEST_LDFLAGS += -static endif #Kludge for MacOsX gcc compiler on Darwin9 who can't handle pendantic ifeq ($(UNAME_OS),$(MACOSX_STR)) ifeq ($(findstring Version 9,$(UNAME_OUTPUT)),Version 9) CPPUTEST_PEDANTIC_ERRORS = N endif endif ifndef COMPONENT_NAME COMPONENT_NAME = name_this_in_the_makefile endif # Debug on by default ifndef CPPUTEST_ENABLE_DEBUG CPPUTEST_ENABLE_DEBUG = Y endif # new and delete for memory leak detection on by default ifndef CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_USE_MEM_LEAK_DETECTION = Y endif # Use the standard C library ifndef CPPUTEST_USE_STD_C_LIB CPPUTEST_USE_STD_C_LIB = Y endif # Use the standard C++ library ifndef CPPUTEST_USE_STD_CPP_LIB CPPUTEST_USE_STD_CPP_LIB = Y endif # Use long long, off by default ifndef CPPUTEST_USE_LONG_LONG CPPUTEST_USE_LONG_LONG = N endif # Use gcov, off by default ifndef CPPUTEST_USE_GCOV CPPUTEST_USE_GCOV = N endif ifndef CPPUTEST_PEDANTIC_ERRORS CPPUTEST_PEDANTIC_ERRORS = Y endif # Default warnings ifndef CPPUTEST_WARNINGFLAGS CPPUTEST_WARNINGFLAGS = -Wall -Wextra -Werror -Wshadow -Wswitch-default -Wswitch-enum -Wconversion -Wno-long-long ifeq ($(CPPUTEST_PEDANTIC_ERRORS), Y) CPPUTEST_WARNINGFLAGS += -pedantic-errors endif ifeq ($(UNAME_OS),$(LINUX_STR)) CPPUTEST_WARNINGFLAGS += -Wsign-conversion endif CPPUTEST_CXX_WARNINGFLAGS = -Woverloaded-virtual CPPUTEST_C_WARNINGFLAGS = -Wstrict-prototypes endif #Wonderful extra compiler warnings with clang ifeq ($(COMPILER_NAME),$(CLANG_STR)) # -Wno-disabled-macro-expansion -> Have to disable the macro expansion warning as the operator new overload warns on that. # -Wno-padded -> I sort-of like this warning but if there is a bool at the end of the class, it seems impossible to remove it! (except by making padding explicit) # -Wno-global-constructors Wno-exit-time-destructors -> Great warnings, but in CppUTest it is impossible to avoid as the automatic test registration depends on the global ctor and dtor # -Wno-weak-vtables -> The TEST_GROUP macro declares a class and will automatically inline its methods. Thats ok as they are only in one translation unit. Unfortunately, the warning can't detect that, so it must be disabled. # -Wno-old-style-casts -> We only use old style casts by decision # -Wno-c++11-long-long -> When it detects long long, then we can use it and no need for a warning about that # -Wno-c++98-compat-pedantic -> Incompatibilities with C++98, these are happening through #define. # -Wno-reserved-id-macro -> Macro uses __ in MINGW... can't change that. # -Wno-keyword-macro -> new overload CPPUTEST_CXX_WARNINGFLAGS += -Weverything -Wno-disabled-macro-expansion -Wno-padded -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables -Wno-old-style-cast -Wno-c++11-long-long -Wno-c++98-compat-pedantic -Wno-reserved-id-macro -Wno-keyword-macro CPPUTEST_C_WARNINGFLAGS += -Weverything -Wno-padded # Clang "7" or newer (Xcode 7 or newer command-line tools) introduced new warnings by default that don't exist on previous versions of clang and cause errors when present. CLANG_VERSION := $(shell echo $(CC_VERSION_OUTPUT) | grep -o 'clang-[0-9][0-9][0-9]*.') CLANG_VERSION_NUM := $(subst .,,$(subst clang-,,$(CLANG_VERSION))) CLANG_VERSION_NUM_GT_700 := $(shell [[ $(CLANG_VERSION_NUM) -ge 700 ]] && echo Y) ifeq ($(CLANG_VERSION_NUM_GT_700), Y) # -Wno-reserved-id-macro -> Many CppUTest macros start with __, which is a reserved namespace # -Wno-keyword-macro -> CppUTest redefines the 'new' keyword for memory leak tracking CPPUTEST_CXX_WARNINGFLAGS += -Wno-reserved-id-macro -Wno-keyword-macro CPPUTEST_C_WARNINGFLAGS += -Wno-reserved-id-macro -Wno-keyword-macro endif endif # Uhm. Maybe put some warning flags for SunStudio here? ifeq ($(COMPILER_NAME),$(SUNSTUDIO_CXX_STR)) CPPUTEST_CXX_WARNINGFLAGS = CPPUTEST_C_WARNINGFLAGS = endif # Default dir for temporary files (d, o) ifndef CPPUTEST_OBJS_DIR ifndef TARGET_PLATFORM CPPUTEST_OBJS_DIR = objs else CPPUTEST_OBJS_DIR = objs/$(TARGET_PLATFORM) endif endif # Default dir for the outout library ifndef CPPUTEST_LIB_DIR ifndef TARGET_PLATFORM CPPUTEST_LIB_DIR = lib else CPPUTEST_LIB_DIR = lib/$(TARGET_PLATFORM) endif endif # No map by default ifndef CPPUTEST_MAP_FILE CPPUTEST_MAP_FILE = N endif # No extentions is default ifndef CPPUTEST_USE_EXTENSIONS CPPUTEST_USE_EXTENSIONS = N endif # No VPATH is default ifndef CPPUTEST_USE_VPATH CPPUTEST_USE_VPATH := N endif # Make empty, instead of 'N', for usage in $(if ) conditionals ifneq ($(CPPUTEST_USE_VPATH), Y) CPPUTEST_USE_VPATH := endif ifndef TARGET_PLATFORM CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib else CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) endif # -------------------------------------- # derived flags in the following area # -------------------------------------- # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED CPPUTEST_CPPFLAGS += -nostdinc endif ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED else ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h endif ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h endif endif ifeq ($(CPPUTEST_USE_LONG_LONG), Y) CPPUTEST_CPPFLAGS += -DCPPUTEST_USE_LONG_LONG endif ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) CPPUTEST_CXXFLAGS += -g CPPUTEST_CFLAGS += -g CPPUTEST_LDFLAGS += -g endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED ifeq ($(CPPUTEST_USE_STD_C_LIB), Y) CPPUTEST_CXXFLAGS += -nostdinc++ endif endif ifdef $(GMOCK_HOME) GTEST_HOME = $(GMOCK_HOME)/gtest CPPUTEST_CPPFLAGS += -I$(GMOCK_HOME)/include GMOCK_LIBRARY = $(GMOCK_HOME)/lib/.libs/libgmock.a LD_LIBRARIES += $(GMOCK_LIBRARY) CPPUTEST_CPPFLAGS += -DCPPUTEST_INCLUDE_GTEST_TESTS CPPUTEST_WARNINGFLAGS = CPPUTEST_CPPFLAGS += -I$(GTEST_HOME)/include -I$(GTEST_HOME) GTEST_LIBRARY = $(GTEST_HOME)/lib/.libs/libgtest.a LD_LIBRARIES += $(GTEST_LIBRARY) endif ifeq ($(CPPUTEST_USE_GCOV), Y) CPPUTEST_CXXFLAGS += -fprofile-arcs -ftest-coverage CPPUTEST_CFLAGS += -fprofile-arcs -ftest-coverage endif CPPUTEST_CXXFLAGS += $(CPPUTEST_WARNINGFLAGS) $(CPPUTEST_CXX_WARNINGFLAGS) CPPUTEST_CPPFLAGS += $(CPPUTEST_WARNINGFLAGS) CPPUTEST_CXXFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE) CPPUTEST_CPPFLAGS += $(CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE) CPPUTEST_CFLAGS += $(CPPUTEST_C_WARNINGFLAGS) TARGET_MAP = $(COMPONENT_NAME).map.txt ifeq ($(CPPUTEST_MAP_FILE), Y) CPPUTEST_LDFLAGS += -Wl,-map,$(TARGET_MAP) endif # Link with CppUTest lib CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a endif ifdef CPPUTEST_STATIC_REALTIME LD_LIBRARIES += -lrt endif TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a ifndef TEST_TARGET ifndef TARGET_PLATFORM TEST_TARGET = $(COMPONENT_NAME)_tests else TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests endif endif #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1) src_to_d = $(call src_to,.d,$1) src_to_gcda = $(call src_to,.gcda,$1) src_to_gcno = $(call src_to,.gcno,$1) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo; #Derived STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) $(TARGET_MAP) SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) OBJ = $(call src_to_o,$(SRC)) STUFF_TO_CLEAN += $(OBJ) TEST_SRC += $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_SRC_FILES) TEST_OBJS = $(call src_to_o,$(TEST_SRC)) STUFF_TO_CLEAN += $(TEST_OBJS) MOCKS_SRC += $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) STUFF_TO_CLEAN += $(MOCKS_OBJS) ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) # If we're using VPATH ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif #Test coverage with gcov GCOV_OUTPUT = gcov_output.txt GCOV_REPORT = gcov_report.txt GCOV_ERROR = gcov_error.txt GCOV_GCDA_FILES = $(call src_to_gcda, $(ALL_SRC)) GCOV_GCNO_FILES = $(call src_to_gcno, $(ALL_SRC)) TEST_OUTPUT = $(TEST_TARGET).txt STUFF_TO_CLEAN += \ $(GCOV_OUTPUT)\ $(GCOV_REPORT)\ $(GCOV_REPORT).html\ $(GCOV_ERROR)\ $(GCOV_GCDA_FILES)\ $(GCOV_GCNO_FILES)\ $(TEST_OUTPUT) #The gcda files for gcov need to be deleted before each run #To avoid annoying messages. GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) ifeq ($(CPPUTEST_USE_GCOV), Y) ifeq ($(COMPILER_NAME),$(CLANG_STR)) LD_LIBRARIES += --coverage else LD_LIBRARIES += -lgcov endif endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) CPPUTEST_CPPFLAGS += $(INCLUDES) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) $(PRODUCTION_CODE_START) $(PRODUCTION_CODE_END) STUFF_TO_CLEAN += $(STDLIB_CODE_START) $(MAP_FILE) cpputest_*.xml junit_run_output # We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) # Don't consider creating the archive a warning condition that does STDERR output ARFLAGS := $(ARFLAGS)c DEP_FLAGS=-MMD -MP # Some macros for programs to be overridden. For some reason, these are not in Make defaults RANLIB = ranlib # Targets .PHONY: all all: start $(TEST_TARGET) $(RUN_TEST_TARGET) .PHONY: start start: $(TEST_TARGET) $(SILENCE)START_TIME=$(call time) .PHONY: all_no_tests all_no_tests: $(TEST_TARGET) .PHONY: flags flags: @echo @echo "OS ${UNAME_OS}" @echo "Compile C and C++ source with CPPFLAGS:" @$(call debug_print_list,$(CPPFLAGS)) @echo "Compile C++ source with CXXFLAGS:" @$(call debug_print_list,$(CXXFLAGS)) @echo "Compile C source with CFLAGS:" @$(call debug_print_list,$(CFLAGS)) @echo "Link with LDFLAGS:" @$(call debug_print_list,$(LDFLAGS)) @echo "Link with LD_LIBRARIES:" @$(call debug_print_list,$(LD_LIBRARIES)) @echo "Create libraries with ARFLAGS:" @$(call debug_print_list,$(ARFLAGS)) TEST_DEPS = $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) test-deps: $(TEST_DEPS) $(TEST_TARGET): $(TEST_DEPS) @echo Linking $@ $(SILENCE)$(CXX) -o $@ $^ $(LD_LIBRARIES) $(LDFLAGS) $(TARGET_LIB): $(OBJ) @echo Building archive $@ $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(AR) $(ARFLAGS) $@ $^ $(SILENCE)$(RANLIB) $@ test: $(TEST_TARGET) $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) vtest: $(TEST_TARGET) $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) $(CPPUTEST_OBJS_DIR)/%.o: %.cc @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< $(CPPUTEST_OBJS_DIR)/%.o: %.cpp @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) $(DEP_FLAGS) $(OUTPUT_OPTION) $< $(CPPUTEST_OBJS_DIR)/%.o: %.c @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.c) $(DEP_FLAGS) $(OUTPUT_OPTION) $< ifneq "$(MAKECMDGOALS)" "clean" -include $(DEP_FILES) endif .PHONY: clean clean: @echo Making clean $(SILENCE)$(RM) $(STUFF_TO_CLEAN) $(SILENCE)rm -rf gcov $(CPPUTEST_OBJS_DIR) $(CPPUTEST_LIB_DIR) $(SILENCE)find . -name "*.gcno" | xargs rm -f $(SILENCE)find . -name "*.gcda" | xargs rm -f #realclean gets rid of all gcov, o and d files in the directory tree #not just the ones made by this makefile .PHONY: realclean realclean: clean $(SILENCE)rm -rf gcov $(SILENCE)find . -name "*.gdcno" | xargs rm -f $(SILENCE)find . -name "*.[do]" | xargs rm -f gcov: test ifeq ($(CPPUTEST_USE_VPATH), Y) $(SILENCE)gcov $(GCOV_ARGS) --object-directory $(CPPUTEST_OBJS_DIR) $(SRC) >> $(GCOV_OUTPUT) 2>> $(GCOV_ERROR) else $(SILENCE)for d in $(SRC_DIRS) ; do \ FILES=`ls $$d/*.c $$d/*.cc $$d/*.cpp 2> /dev/null` ; \ gcov $(GCOV_ARGS) --object-directory $(CPPUTEST_OBJS_DIR)/$$d $$FILES >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done $(SILENCE)for f in $(SRC_FILES) ; do \ gcov $(GCOV_ARGS) --object-directory $(CPPUTEST_OBJS_DIR)/$$f $$f >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done endif $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) $(SILENCE)cat $(GCOV_REPORT) $(SILENCE)mkdir -p gcov $(SILENCE)mv *.gcov gcov $(SILENCE)mv gcov_* gcov @echo "See gcov directory for details" .PHONY: format format: $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) .PHONY: debug debug: @echo @echo "Target Source files:" @$(call debug_print_list,$(SRC)) @echo "Target Object files:" @$(call debug_print_list,$(OBJ)) @echo "Test Source files:" @$(call debug_print_list,$(TEST_SRC)) @echo "Test Object files:" @$(call debug_print_list,$(TEST_OBJS)) @echo "Mock Source files:" @$(call debug_print_list,$(MOCKS_SRC)) @echo "Mock Object files:" @$(call debug_print_list,$(MOCKS_OBJS)) @echo "All Input Dependency files:" @$(call debug_print_list,$(DEP_FILES)) @echo Stuff to clean: @$(call debug_print_list,$(STUFF_TO_CLEAN)) @echo Includes: @$(call debug_print_list,$(INCLUDES)) -include $(OTHER_MAKEFILE_TO_INCLUDE) cpputest-4.0/build/cpputest.mmp000644 000765 000024 00000004352 13663176127 017657 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ TARGET cpputest.lib TARGETTYPE LIB UID 0x00000000 0x03A6305A USERINCLUDE ..\include ..\include\CppUTest ..\include\Platforms\Symbian SYSTEMINCLUDE \epoc32\include \epoc32\include\stdapis SOURCEPATH ..\src\CppUTest SOURCE CommandLineTestRunner.cpp Failure.cpp MemoryLeakWarningPlugin.cpp SimpleString.cpp TestOutput.cpp TestPlugin.cpp TestRegistry.cpp TestResult.cpp Utest.cpp JUnitTestOutput.cpp TestHarness_c.cpp SOURCEPATH ..\src\Platforms\Symbian SOURCE SymbianMemoryLeakWarning.cpp UtestPlatform.cpp MACRO UT_NEW_MACROS_DISABLED MACRO UT_NEW_OVERRIDES_DISABLED SOURCEPATH ..\src\CppUTest SOURCE MemoryLeakDetector.cpp CommandLineArguments.cpp cpputest-4.0/build/ComponentMakefile000644 000765 000024 00000015165 13663176127 020624 0ustar00basvoddestaff000000 000000 #--------- # # ComponentMakefile # # Include this file in your makefile # It makes # A static library # A test executable # # The necessary parameters are shown in # ComponentMakefileExampleParameters # # Inputs # SRC_FILES - Specific source files to build into library # SRC_DIRS - Directories of source files to build into the library # TEST_SRC - unit test code build into the unit test runner # MOCKS_SRC - mock objects built into the test runner # INCLUDES - List of -I files # CPPUTEST_CXXFLAGS - flags for the C++ compiler # CPPUTEST_CPPFLAGS - flags for the C++ AND C compiler # CPPUTEST_CFLAGS - C complier # CPPUTEST_LDFLAGS - Linker flags # LIB_DIR - the directory for the created library # COMPONENT_NAME - the name of the thing being created # OTHER_MAKEFILE_TO_INCLUDE - a hook to use this makefile to make # other targets. Like CSlim, which is part of fitnesse #---------- ifeq ("$(COMPONENT_NAME)", "") COMPONENT_NAME = name_this_in_the_makefile endif ifeq ("$(OBJS_DIR)", "") OBJS_DIR = objs endif ifeq ("$(LIB_DIR)", "") LIB_DIR = lib endif ifeq ("$CPPUTEST_USE_MALLOC_LEAK_DETECTION","") CPPUTEST_USE_MALLOC_LEAK_DETECTION = Y echo "leak on by default" endif #CPPUTEST_USE_OPERATOR_NEW_LEAK_DETECTION = Y #CXXFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h #CFLAGS += -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h TARGET_LIB = \ $(LIB_DIR)/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) src_to_o = $(subst .c,.o, $(subst .cpp,.o,$1)) src_to_d = $(subst .c,.d, $(subst .cpp,.d,$1)) change_o_file_location = $(patsubst %.o,$(OBJS_DIR)/%.o, $1) change_d_file_location = $(patsubst %.d,$(OBJS_DIR)/%.d, $1) src_to = $(subst .c,$1, $(subst .cpp,$1,$2)) #Derived STUFF_TO_CLEAN += $(TEST_TARGET) $(TEST_TARGET).exe $(TARGET_LIB) SRC += $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) #OBJ = $(call src_to_o,$(SRC)) OBJ = $(call change_o_file_location, $(call src_to_o,$(SRC))) STUFF_TO_CLEAN += $(OBJ) TEST_SRC = $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) #TEST_OBJS = $(call src_to_o,$(TEST_SRC)) TEST_OBJS = $(call change_o_file_location, $(call src_to_o,$(TEST_SRC))) STUFF_TO_CLEAN += $(TEST_OBJS) MOCKS_SRC = $(call get_src_from_dir_list, $(MOCKS_SRC_DIRS)) #MOCKS_OBJS = $(call src_to_o,$(MOCKS_SRC)) MOCKS_OBJS = $(call change_o_file_location, $(call src_to_o,$(MOCKS_SRC))) STUFF_TO_CLEAN += $(MOCKS_OBJS) ALL_SRC = $(SRC) $(TEST_SRC) $(MOCKS_SRC) #Test coverage with gcov GCOV_OUTPUT = gcov_output.txt GCOV_REPORT = gcov_report.txt GCOV_ERROR = gcov_error.txt GCOV_GCDA_FILES = $(call src_to,.gcda, $(ALL_SRC)) GCOV_GCNO_FILES = $(call src_to,.gcno, $(ALL_SRC)) TEST_OUTPUT = $(TEST_TARGET).txt STUFF_TO_CLEAN += \ $(GCOV_OUTPUT)\ $(GCOV_REPORT)\ $(GCOV_ERROR)\ $(GCOV_GCDA_FILES)\ $(GCOV_GCNO_FILES)\ $(TEST_OUTPUT) #Other stuff needed CPPUTEST_LIB = $(CPPUTEST_HOME)/lib/libCppUTest.a ifdef CPPUTEST_USE_EXTENSIONS CPPUTEST_LIB += $(CPPUTEST_HOME)/lib/libCppUTestExt.a endif CPPUTEST_CPPFLAGS += $(INCLUDES) $(GCOVFLAGS) #The gcda files for gcov need to be deleted before each run #To avoid annoying messages. GCOV_CLEAN = $(SILENCE)rm -f $(GCOV_GCDA_FILES) $(GCOV_OUTPUT) $(GCOV_REPORT) $(GCOV_ERROR) RUN_TEST_TARGET = $(SILENCE) $(GCOV_CLEAN) ; echo "Running $(TEST_TARGET)"; ./$(TEST_TARGET) $(CPPUTEST_EXE_FLAGS) ifneq "$(OTHER_MAKEFILE_TO_INCLUDE)" "" -include $(OTHER_MAKEFILE_TO_INCLUDE) endif ifneq "$(MAP_FILE)" "" CPPUTEST_LDFLAGS += -Wl,-map,$(MAP_FILE) endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) MOCK_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(MOCKS_SRC_DIRS)) INCLUDES += $(foreach dir, $(MOCK_DIRS_EXPANDED), -I$(dir)) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) + $(PRODUCTION_CODE_START) + $(PRODUCTION_CODE_END) STUFF_TO_CLEAN += $(STDLIB_CODE_START) + $(MAP_FILE) + cpputest_*.xml junit_run_output # We'll use the CPPUTEST_CFLAGS etc so that you can override AND add to the CppUTest flags CFLAGS = $(CPPUTEST_CFLAGS) $(CPPUTEST_ADDITIONAL_CFLAGS) CPPFLAGS = $(CPPUTEST_CPPFLAGS) $(CPPUTEST_ADDITIONAL_CPPFLAGS) CXXFLAGS = $(CPPUTEST_CXXFLAGS) $(CPPUTEST_ADDITIONAL_CXXFLAGS) LDFLAGS = $(CPPUTEST_LDFLAGS) $(CPPUTEST_ADDITIONAL_LDFLAGS) # Targets .PHONY: all all: $(TEST_TARGET) $(RUN_TEST_TARGET) @echo "Component makefile is no longer supported, convert to MakefileInclude.mk" .PHONY: all_no_tests all_no_tests: $(TEST_TARGET) .PHONY: flags flags: $(SILENCE)echo Compile with these flags: $(SILENCE)for f in $(CPPFLAGS) ; do \ echo " C++ $$f" ; \ done $(SILENCE)for f in $(CFLAGS) ; do \ echo " C $$f" ; \ done $(SILENCE)for f in $(LDFLAGS) ; do \ echo " LD $$f" ; \ done $(SILENCE)for f in $(ARFLAGS) ; do \ echo " AR $$f" ; \ done $(TEST_TARGET): $(TEST_OBJS) $(MOCKS_OBJS) $(PRODUCTION_CODE_START) $(TARGET_LIB) $(USER_LIBS) $(PRODUCTION_CODE_END) $(CPPUTEST_LIB) $(STDLIB_CODE_START) $(SILENCE)echo Linking $@ $(SILENCE)$(LINK.o) -o $@ $^ $(LD_LIBRARIES) $(TARGET_LIB): $(OBJ) $(SILENCE)echo Building archive $@ $(SILENCE)mkdir -p lib $(SILENCE)$(AR) $(ARFLAGS) $@ $^ $(SILENCE)$(RANLIB) $@ test: $(TEST_TARGET) $(RUN_TEST_TARGET) | tee $(TEST_OUTPUT) vtest: $(TEST_TARGET) $(RUN_TEST_TARGET) -v | tee $(TEST_OUTPUT) $(OBJS_DIR)/%.o: %.cpp @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.cpp) -M -MF $(subst .o,.d,$@) -MT "$@ $(subst .o,.d,$@)" $< $(SILENCE)$(COMPILE.cpp) $(OUTPUT_OPTION) $< $(OBJS_DIR)/%.o: %.c @echo compiling $(notdir $<) $(SILENCE)mkdir -p $(dir $@) $(SILENCE)$(COMPILE.c) -M -MF $(subst .o,.d,$@) -MT "$@ $(subst .o,.d,$@)" $< $(SILENCE)$(COMPILE.c) $(OUTPUT_OPTION) $< ifneq "$(MAKECMDGOALS)" "clean" -include $(DEP_FILES) endif .PHONY: clean clean: $(SILENCE)echo Making clean $(SILENCE)$(RM) $(STUFF_TO_CLEAN) $(SILENCE)find . -name "*.gcov" | xargs rm -f $(SILENCE)find . -name "*.[do]" | xargs rm -f gcov: test $(SILENCE)for d in $(SRC_DIRS) ; do \ gcov -o $$d $$d/*.c $$d/*.cpp >> $(GCOV_OUTPUT) 2>>$(GCOV_ERROR) ; \ done $(CPPUTEST_HOME)/scripts/filterGcov.sh $(GCOV_OUTPUT) $(GCOV_ERROR) $(GCOV_REPORT) $(TEST_OUTPUT) cat $(GCOV_REPORT) .PHONY: format format: $(CPPUTEST_HOME)/scripts/reformat.sh $(PROJECT_HOME_DIR) debug: echo Stuff to clean $(SILENCE)for f in $(STUFF_TO_CLEAN) ; do \ echo "$$f" ; \ done echo Includes $(SILENCE)for i in $(INCLUDES) ; do \ echo "$$i" ; \ done cpputest-4.0/build/bld.inf000644 000765 000024 00000005246 13663176127 016537 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ PRJ_PLATFORMS DEFAULT PRJ_EXPORTS ..\include\CppUTest\TestHarness.h \epoc32\include\CppUTest\TestHarness.h ..\include\CppUTest\Utest.h \epoc32\include\CppUTest\Utest.h ..\include\CppUTest\UtestMacros.h \epoc32\include\CppUTest\UtestMacros.h ..\include\CppUTest\TestResult.h \epoc32\include\CppUTest\TestResult.h ..\include\CppUTest\Failure.h \epoc32\include\CppUTest\Failure.h ..\include\CppUTest\TestRegistry.h \epoc32\include\CppUTest\TestRegistry.h ..\include\CppUTest\SimpleString.h \epoc32\include\CppUTest\SimpleString.h ..\include\CppUTest\SimpleStringInternalCache.h \epoc32\include\CppUTest\SimpleStringInternalCache.h ..\include\CppUTest\MemoryLeakWarning.h \epoc32\include\CppUTest\MemoryLeakWarning.h ..\include\CppUTest\CommandLineTestRunner.h \epoc32\include\CppuTest\CommandLineTestRunner.h ..\include\CppUTest\TestOutput.h \epoc32\include\CppuTest\TestOutput.h ..\include\CppUTest\TestPlugin.h \epoc32\include\CppUTest\TestPlugin.h ..\include\CppUTest\PlatformSpecificFunctions.h \epoc32\include\CppUTest\PlatformSpecificFunctions.h PRJ_MMPFILES cpputest.mmp PRJ_TESTMMPFILES alltests.mmp cpputest-4.0/build/ComponentMakefileExampleParameters000644 000765 000024 00000002260 13663176127 024154 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = ProjectName TARGET_LIB = \ lib/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #--- Inputs ----# PROJECT_HOME_DIR = . CPPUTEST_HOME = ../CppUTest CPP_PLATFORM = Gcc #CFLAGS are set to override malloc and free to get memory leak detection in C programs CFLAGS = -Dmalloc=cpputest_malloc -Dfree=cpputest_free CPPFLAGS = GCOVFLAGS = -fprofile-arcs -ftest-coverage #SRC_DIRS is a list of source directories that make up the target library #If test files are in these directories, their IMPORT_TEST_GROUPs need #to be included in main to force them to be linked in. By convention #put them into an AllTests.h file in each directory SRC_DIRS = \ src #TEST_SRC_DIRS is a list of directories including # - A test main (AllTests.cpp by conventin) # - OBJ files in these directories are included in the TEST_TARGET # - Consequently - AllTests.h containing the IMPORT_TEST_GROUPS is not needed # - TEST_SRC_DIRS = \ tests #includes for all compiles INCLUDES =\ -I.\ -I$(CPPUTEST_HOME)/include\ #Flags to pass to ld LDFLAGS += USER_LIBS = include $(CPPUTEST_HOME)/build/ComponentMakefile cpputest-4.0/build/alltests.mmp000644 000765 000024 00000004532 13663176127 017643 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde and Timo Puronen * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ TARGET cpputest.exe TARGETTYPE exe UID 0x00000000 0x03A6305A USERINCLUDE ..\include ..\include\CppUTest ..\include\Platforms\Symbian ..\tests SYSTEMINCLUDE \epoc32\include \epoc32\include\stdapis STATICLIBRARY libcrt0.lib STATICLIBRARY cpputest.lib LIBRARY euser.lib libc.lib libm.lib libpthread.lib SOURCEPATH ..\tests SOURCE FailureTest.cpp MemoryLeakWarningTest.cpp NullTestTest.cpp SOURCE SimpleStringTest.cpp TestInstallerTest.cpp SOURCE TestOutputTest.cpp TestRegistryTest.cpp UtestTest.cpp CommandLineTestRunnerTest.cpp JUnitOutputTest.cpp TeamCityOutputTest.cpp SOURCE TestHarness_cTest.cpp SOURCEPATH ..\tests SOURCE AllTests.cpp TestResultTest.cpp PluginTest.cpp SetPluginTest.cpp MACRO UT_NEW_MACROS_DISABLED MACRO UT_NEW_OVERRIDES_DISABLED cpputest-4.0/build/StaticLibMakefile000644 000765 000024 00000000226 13663176127 020530 0ustar00basvoddestaff000000 000000 $(CPPUTEST_TARGET) : $(OBJS) ar -rc $@ $(OBJS) $(RANLIB) $@ if [ "$(LIBDIR)" != "." ]; then\ mv $@ $(LIBDIR) ; \ fi all: $(CPPUTEST_TARGET) cpputest-4.0/build/cmake_package_files/000755 000765 000024 00000000000 13663444566 021213 5ustar00basvoddestaff000000 000000 cpputest-4.0/build/cmake_package_files/CppUTestTargets.cmake000644 000765 000024 00000006655 13663176127 025265 0ustar00basvoddestaff000000 000000 # Generated by CMake if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5) message(FATAL_ERROR "CMake >= 2.6.0 required") endif() cmake_policy(PUSH) cmake_policy(VERSION 2.6) #---------------------------------------------------------------- # Generated CMake target import file. #---------------------------------------------------------------- # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) # Protect against multiple inclusion, which would fail when already imported targets are added once more. set(_targetsDefined) set(_targetsNotDefined) set(_expectedTargets) foreach(_expectedTarget CppUTest CppUTestExt) list(APPEND _expectedTargets ${_expectedTarget}) if(NOT TARGET ${_expectedTarget}) list(APPEND _targetsNotDefined ${_expectedTarget}) endif() if(TARGET ${_expectedTarget}) list(APPEND _targetsDefined ${_expectedTarget}) endif() endforeach() if("${_targetsDefined}" STREQUAL "${_expectedTargets}") unset(_targetsDefined) unset(_targetsNotDefined) unset(_expectedTargets) set(CMAKE_IMPORT_FILE_VERSION) cmake_policy(POP) return() endif() if(NOT "${_targetsDefined}" STREQUAL "") message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n") endif() unset(_targetsDefined) unset(_targetsNotDefined) unset(_expectedTargets) # Compute the installation prefix relative to this file. get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) if(_IMPORT_PREFIX STREQUAL "/") set(_IMPORT_PREFIX "") endif() # Create imported target CppUTest add_library(CppUTest STATIC IMPORTED) set_target_properties(CppUTest PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include/CppUTest" ) # Create imported target CppUTestExt add_library(CppUTestExt STATIC IMPORTED) set_target_properties(CppUTestExt PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${_IMPORT_PREFIX}/include/CppUTestExt" ) # Load information for each installed configuration. get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) file(GLOB CONFIG_FILES "${_DIR}/CppUTestTargets-*.cmake") foreach(f ${CONFIG_FILES}) include(${f}) endforeach() # Cleanup temporary variables. set(_IMPORT_PREFIX) # Loop over all imported files and verify that they actually exist foreach(target ${_IMPORT_CHECK_TARGETS} ) foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} ) if(NOT EXISTS "${file}" ) message(FATAL_ERROR "The imported target \"${target}\" references the file \"${file}\" but this file does not exist. Possible reasons include: * The file was deleted, renamed, or moved to another location. * An install or uninstall procedure did not complete successfully. * The installation package was faulty and contained \"${CMAKE_CURRENT_LIST_FILE}\" but not all the files it references. ") endif() endforeach() unset(_IMPORT_CHECK_FILES_FOR_${target}) endforeach() unset(_IMPORT_CHECK_TARGETS) # This file does not depend on other imported targets which have # been exported from the same project but in a separate export set. # Commands beyond this point should not need to know the version. set(CMAKE_IMPORT_FILE_VERSION) cmake_policy(POP) cpputest-4.0/build/cmake_package_files/CppUTestTargets-relwithdebinfo.cmake000644 000765 000024 00000002444 13663176127 030260 0ustar00basvoddestaff000000 000000 #---------------------------------------------------------------- # Generated CMake target import file for configuration "RelWithDebInfo". #---------------------------------------------------------------- # Commands may need to know the format version. set(CMAKE_IMPORT_FILE_VERSION 1) # Import target "CppUTest" for configuration "RelWithDebInfo" set_property(TARGET CppUTest APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO) set_target_properties(CppUTest PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "CXX" IMPORTED_LOCATION_RELWITHDEBINFO "${_IMPORT_PREFIX}/lib/libCppUTest.a" ) list(APPEND _IMPORT_CHECK_TARGETS CppUTest ) list(APPEND _IMPORT_CHECK_FILES_FOR_CppUTest "${_IMPORT_PREFIX}/lib/libCppUTest.a" ) # Import target "CppUTestExt" for configuration "RelWithDebInfo" set_property(TARGET CppUTestExt APPEND PROPERTY IMPORTED_CONFIGURATIONS RELWITHDEBINFO) set_target_properties(CppUTestExt PROPERTIES IMPORTED_LINK_INTERFACE_LANGUAGES_RELWITHDEBINFO "CXX" IMPORTED_LOCATION_RELWITHDEBINFO "${_IMPORT_PREFIX}/lib/libCppUTestExt.a" ) list(APPEND _IMPORT_CHECK_TARGETS CppUTestExt ) list(APPEND _IMPORT_CHECK_FILES_FOR_CppUTestExt "${_IMPORT_PREFIX}/lib/libCppUTestExt.a" ) # Commands beyond this point should not need to know the version. set(CMAKE_IMPORT_FILE_VERSION) cpputest-4.0/build/cmake_package_files/CppUTestConfig.cmake000644 000765 000024 00000002236 13663176127 025050 0ustar00basvoddestaff000000 000000 ####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() ####### ####### Any changes to this file will be overwritten by the next CMake run #### ####### The input file was CppUTestConfig.cmake.install.in ######## get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE) macro(set_and_check _var _file) set(${_var} "${_file}") if(NOT EXISTS "${_file}") message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") endif() endmacro() macro(check_required_components _NAME) foreach(comp ${${_NAME}_FIND_COMPONENTS}) if(NOT ${_NAME}_${comp}_FOUND) if(${_NAME}_FIND_REQUIRED_${comp}) set(${_NAME}_FOUND FALSE) endif() endif() endforeach() endmacro() #################################################################################### set_and_check(CppUTest_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include") include("${CMAKE_CURRENT_LIST_DIR}/CppUTestTargets.cmake") set(CppUTest_LIBRARIES CppUTest CppUTestExt) include("${CMAKE_CURRENT_LIST_DIR}/Modules/CppUTestBuildTimeDiscoverTests.cmake") check_required_components(CppUTest) cpputest-4.0/build/cmake_package_files/CppUTestConfigVersion.cmake000644 000765 000024 00000003070 13663444073 026411 0ustar00basvoddestaff000000 000000 # This is a basic version file for the Config-mode of find_package(). # It is used by write_basic_package_version_file() as input file for configure_file() # to create a version-file which can be installed along a config.cmake file. # # The created file sets PACKAGE_VERSION_EXACT if the current version string and # the requested version string are exactly the same and it sets # PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version, # but only if the requested major version is the same as the current one. # The variable CVF_VERSION must be set before calling configure_file(). set(PACKAGE_VERSION "4.0") if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) set(PACKAGE_VERSION_COMPATIBLE FALSE) else() if("4.0" MATCHES "^([0-9]+)\\.") set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}") else() set(CVF_VERSION_MAJOR "4.0") endif() if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR) set(PACKAGE_VERSION_COMPATIBLE TRUE) else() set(PACKAGE_VERSION_COMPATIBLE FALSE) endif() if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) set(PACKAGE_VERSION_EXACT TRUE) endif() endif() # if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "") return() endif() # check that the installed version has the same 32/64bit-ness as the one which is currently searching: if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8") math(EXPR installedBits "8 * 8") set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") set(PACKAGE_VERSION_UNSUITABLE TRUE) endif() cpputest-4.0/m4/ltversion.m4000644 000765 000024 00000001273 13663176414 017003 0ustar00basvoddestaff000000 000000 # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4179 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6]) m4_define([LT_PACKAGE_REVISION], [2.4.6]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6' macro_revision='2.4.6' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) cpputest-4.0/m4/libtool.m4000644 000765 000024 00001125073 13663176414 016430 0ustar00basvoddestaff000000 000000 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} : ${AR_FLAGS=cru} _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP"; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS cpputest-4.0/m4/ltoptions.m4000644 000765 000024 00000034262 13663176414 017015 0ustar00basvoddestaff000000 000000 # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) cpputest-4.0/m4/ltsugar.m4000644 000765 000024 00000010440 13663176414 016433 0ustar00basvoddestaff000000 000000 # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) cpputest-4.0/m4/m4_ax_prefix_config_h.m4000644 000765 000024 00000020001 13663176127 021166 0ustar00basvoddestaff000000 000000 # =========================================================================== # http://www.gnu.org/software/autoconf-archive/ax_prefix_config_h.html # =========================================================================== # # SYNOPSIS # # AX_PREFIX_CONFIG_H [(OUTPUT-HEADER [,PREFIX [,ORIG-HEADER]])] # # DESCRIPTION # # Generate an installable config.h. # # A package should not normally install its config.h as a system header, # but if it must, this macro can be used to avoid namespace pollution by # making a copy of config.h with a prefix added to all the macro names. # # Each "#define SOMEDEF" line of the configuration header has the given # prefix added, in the same case as the first character of the macro name. # # Defaults: # # OUTPUT-HEADER = $PACKAGE-config.h # PREFIX = $PACKAGE # ORIG-HEADER, from AM_CONFIG_HEADER(config.h) # # Your configure.ac script should contain both macros in this order. # # Example: # # AC_INIT(config.h.in) # config.h.in as created by "autoheader" # AM_INIT_AUTOMAKE(testpkg, 0.1.1) # makes #undef VERSION and PACKAGE # AM_CONFIG_HEADER(config.h) # prep config.h from config.h.in # AX_PREFIX_CONFIG_H(mylib/_config.h) # prep mylib/_config.h from it.. # AC_MEMORY_H # makes "#undef NEED_MEMORY_H" # AC_C_CONST_H # makes "#undef const" # AC_OUTPUT(Makefile) # creates the "config.h" now # # and also mylib/_config.h # # If the argument to AX_PREFIX_CONFIG_H would have been omitted then the # default output file would have been called simply "testpkg-config.h", # but even under the name "mylib/_config.h" it contains prefix-defines # like # # #ifndef TESTPKG_VERSION # #define TESTPKG_VERSION "0.1.1" # #endif # #ifndef TESTPKG_NEED_MEMORY_H # #define TESTPKG_NEED_MEMORY_H 1 # #endif # #ifndef _testpkg_const # #define _testpkg_const _const # #endif # # and this "mylib/_config.h" can be installed along with other header # files, which is most convenient when creating a shared library (that has # some headers) whose functionality depends on features detected at # compile-time. No need to invent some "mylib-confdefs.h.in" manually. # # Note that some AC_DEFINEs that end up in the config.h file are actually # self-referential - e.g. AC_C_INLINE, AC_C_CONST, and the AC_TYPE_OFF_T # say that they "will define inline|const|off_t if the system does not do # it by itself". You might want to clean up about these - consider an # extra mylib/conf.h that reads something like: # # #include # #ifndef _testpkg_const # #define _testpkg_const const # #endif # # and then start using _testpkg_const in the header files. That is also a # good thing to differentiate whether some library-user has starting to # take up with a different compiler, so perhaps it could read something # like this: # # #ifdef _MSC_VER # #include # #else # #include # #endif # #ifndef _testpkg_const # #define _testpkg_const const # #endif # # LICENSE # # Copyright (c) 2014 Reuben Thomas # Copyright (c) 2008 Guido U. Draheim # Copyright (c) 2008 Marten Svantesson # Copyright (c) 2008 Gerald Point # # This program is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation; either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 15 AC_DEFUN([AX_PREFIX_CONFIG_H],[dnl AC_PREREQ([2.62]) AC_BEFORE([AC_CONFIG_HEADERS],[$0])dnl AC_CONFIG_COMMANDS(m4_default([$1], [$PACKAGE-config.h]),[dnl AS_VAR_PUSHDEF([_OUT],[ac_prefix_conf_OUT])dnl AS_VAR_PUSHDEF([_DEF],[ac_prefix_conf_DEF])dnl AS_VAR_PUSHDEF([_PKG],[ac_prefix_conf_PKG])dnl AS_VAR_PUSHDEF([_LOW],[ac_prefix_conf_LOW])dnl AS_VAR_PUSHDEF([_UPP],[ac_prefix_conf_UPP])dnl AS_VAR_PUSHDEF([_INP],[ac_prefix_conf_INP])dnl m4_pushdef([_script],[conftest.prefix])dnl m4_pushdef([_symbol],[m4_cr_Letters[]m4_cr_digits[]_])dnl _OUT=`echo m4_default([$1], [$PACKAGE-config.h])` _DEF=`echo _$_OUT | sed -e "y:m4_cr_letters:m4_cr_LETTERS[]:" -e "s/@<:@^m4_cr_Letters@:>@/_/g"` _PKG=`echo m4_default([$2], [$PACKAGE])` _LOW=`echo _$_PKG | sed -e "y:m4_cr_LETTERS-:m4_cr_letters[]_:"` _UPP=`echo $_PKG | sed -e "y:m4_cr_letters-:m4_cr_LETTERS[]_:" -e "/^@<:@m4_cr_digits@:>@/s/^/_/"` _INP=`echo "$3" | sed -e 's/ *//'` if test ".$_INP" = "."; then for ac_file in : $CONFIG_HEADERS; do test "_$ac_file" = _: && continue case "$ac_file" in *.h) _INP=$ac_file ;; *) esac test ".$_INP" != "." && break done fi if test ".$_INP" = "."; then case "$_OUT" in */*) _INP=`basename "$_OUT"` ;; *-*) _INP=`echo "$_OUT" | sed -e "s/@<:@_symbol@:>@*-//"` ;; *) _INP=config.h ;; esac fi if test -z "$_PKG" ; then AC_MSG_ERROR([no prefix for _PREFIX_PKG_CONFIG_H]) else if test ! -f "$_INP" ; then if test -f "$srcdir/$_INP" ; then _INP="$srcdir/$_INP" fi fi AC_MSG_NOTICE(creating $_OUT - prefix $_UPP for $_INP defines) if test -f $_INP ; then AS_ECHO(["s/^@%:@undef *\\(@<:@m4_cr_LETTERS[]_@:>@\\)/@%:@undef $_UPP""_\\1/"]) > _script AS_ECHO(["s/^@%:@undef *\\(@<:@m4_cr_letters@:>@\\)/@%:@undef $_LOW""_\\1/"]) >> _script AS_ECHO(["s/^@%:@def[]ine *\\(@<:@m4_cr_LETTERS[]_@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_UPP""_\\1\\"]) >> _script AS_ECHO(["@%:@def[]ine $_UPP""_\\1\\2\\"]) >> _script AS_ECHO(["@%:@endif/"]) >> _script AS_ECHO(["s/^@%:@def[]ine *\\(@<:@m4_cr_letters@:>@@<:@_symbol@:>@*\\)\\(.*\\)/@%:@ifndef $_LOW""_\\1\\"]) >> _script AS_ECHO(["@%:@define $_LOW""_\\1\\2\\"]) >> _script AS_ECHO(["@%:@endif/"]) >> _script # now executing _script on _DEF input to create _OUT output file echo "@%:@ifndef $_DEF" >$tmp/pconfig.h echo "@%:@def[]ine $_DEF 1" >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo /'*' $_OUT. Generated automatically at end of configure. '*'/ >>$tmp/pconfig.h sed -f _script $_INP >>$tmp/pconfig.h echo ' ' >>$tmp/pconfig.h echo '/* once:' $_DEF '*/' >>$tmp/pconfig.h echo "@%:@endif" >>$tmp/pconfig.h if cmp -s $_OUT $tmp/pconfig.h 2>/dev/null; then AC_MSG_NOTICE([$_OUT is unchanged]) else ac_dir=`AS_DIRNAME(["$_OUT"])` AS_MKDIR_P(["$ac_dir"]) rm -f "$_OUT" mv $tmp/pconfig.h "$_OUT" fi else AC_MSG_ERROR([input file $_INP does not exist - skip generating $_OUT]) fi rm -f conftest.* fi m4_popdef([_symbol])dnl m4_popdef([_script])dnl AS_VAR_POPDEF([_INP])dnl AS_VAR_POPDEF([_UPP])dnl AS_VAR_POPDEF([_LOW])dnl AS_VAR_POPDEF([_PKG])dnl AS_VAR_POPDEF([_DEF])dnl AS_VAR_POPDEF([_OUT])dnl ],[PACKAGE="$PACKAGE"])]) cpputest-4.0/m4/m4_ax_compiler_version.m4000644 000765 000024 00000054537 13663176127 021441 0ustar00basvoddestaff000000 000000 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_compiler_version.html # =========================================================================== # # SYNOPSIS # # AX_COMPILER_VERSION # # DESCRIPTION # # This macro retrieves the compiler version and returns it in the cache # variable $ax_cv_c_compiler_version for C and $ax_cv_cxx_compiler_version # for C++. # # Version is returned as epoch:major.minor.patchversion # # Epoch is used in order to have an increasing version number in case of # marketing change. # # Epoch use: * borland compiler use chronologically 0turboc for turboc # era, # # 1borlanc BORLANDC++ before 5, 2cppbuilder for cppbuilder era, # 3borlancpp for return of BORLANDC++ (after version 5.5), # 4cppbuilder for cppbuilder with year version, # and 5xe for XE era. # # An empty string is returned otherwise. # # LICENSE # # Copyright (c) 2014 Bastien ROUCARIES # # Copying and distribution of this file, with or without modification, are # permitted in any medium without royalty provided the copyright notice # and this notice are preserved. This file is offered as-is, without any # warranty. #serial 12 # for intel AC_DEFUN([_AX_COMPILER_VERSION_INTEL], [ dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [__INTEL_COMPILER/100],, AC_MSG_FAILURE([[[$0]] unknown intel compiler version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [(__INTEL_COMPILER%100)/10],, AC_MSG_FAILURE([[[$0]] unknown intel compiler version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [(__INTEL_COMPILER%10)],, AC_MSG_FAILURE([[[$0]] unknown intel compiler version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # for IBM AC_DEFUN([_AX_COMPILER_VERSION_IBM], [ dnl dnl check between z/OS C/C++ and XL C/C++ AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([], [ #if defined(__COMPILER_VER__) choke me; #endif ])], [ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [__xlC__/100],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler major version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [__xlC__%100],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__xlC_ver__/0x100],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_build, [__xlC_ver__%0x100],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler build version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_build" ], [ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__xlC__%1000],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [(__xlC__/10000)%10],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [(__xlC__/100000)%10],, AC_MSG_FAILURE([[[$0]] unknown IBM compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) ]) # for pathscale AC_DEFUN([_AX_COMPILER_VERSION_PATHSCALE],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, __PATHCC__,, AC_MSG_FAILURE([[[$0]] unknown pathscale major])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, __PATHCC_MINOR__,, AC_MSG_FAILURE([[[$0]] unknown pathscale minor])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__PATHCC_PATCHLEVEL__],, AC_MSG_FAILURE([[[$0]] unknown pathscale patch level])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # for clang AC_DEFUN([_AX_COMPILER_VERSION_CLANG],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, __clang_major__,, AC_MSG_FAILURE([[[$0]] unknown clang major])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, __clang_minor__,, AC_MSG_FAILURE([[[$0]] unknown clang minor])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__clang_patchlevel__],,0) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # for crayc AC_DEFUN([_AX_COMPILER_VERSION_CRAY],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, _RELEASE,, AC_MSG_FAILURE([[[$0]] unknown crayc release])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, _RELEASE_MINOR,, AC_MSG_FAILURE([[[$0]] unknown crayc minor])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor" ]) # for fujitsu AC_DEFUN([_AX_COMPILER_VERSION_FUJITSU],[ AC_COMPUTE_INT(ax_cv_[]_AC_LANG_ABBREV[]_compiler_version, __FCC_VERSION,, AC_MSG_FAILURE([[[$0]]unknown fujitsu release])) ]) # for GNU AC_DEFUN([_AX_COMPILER_VERSION_GNU],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, __GNUC__,, AC_MSG_FAILURE([[[$0]] unknown gcc major])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, __GNUC_MINOR__,, AC_MSG_FAILURE([[[$0]] unknown gcc minor])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__GNUC_PATCHLEVEL__],, AC_MSG_FAILURE([[[$0]] unknown gcc patch level])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # For sun AC_DEFUN([_AX_COMPILER_VERSION_SUN],[ m4_define([_AX_COMPILER_VERSION_SUN_NUMBER], [ #if defined(__SUNPRO_CC) __SUNPRO_CC #else __SUNPRO_C #endif ]) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_until59, !!(_AX_COMPILER_VERSION_SUN_NUMBER < 0x1000),, AC_MSG_FAILURE([[[$0]] unknown sun release version])) AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_until59" = X1], [dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, _AX_COMPILER_VERSION_SUN_NUMBER % 0x10,, AC_MSG_FAILURE([[[$0]] unknown sun patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, (_AX_COMPILER_VERSION_SUN_NUMBER / 0x10) % 0x10,, AC_MSG_FAILURE([[[$0]] unknown sun minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (_AX_COMPILER_VERSION_SUN_NUMBER / 0x100),, AC_MSG_FAILURE([[[$0]] unknown sun major version])) ], [dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, _AX_COMPILER_VERSION_SUN_NUMBER % 0x10,, AC_MSG_FAILURE([[[$0]] unknown sun patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, (_AX_COMPILER_VERSION_SUN_NUMBER / 0x100) % 0x100,, AC_MSG_FAILURE([[[$0]] unknown sun minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (_AX_COMPILER_VERSION_SUN_NUMBER / 0x1000),, AC_MSG_FAILURE([[[$0]] unknown sun major version])) ]) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) AC_DEFUN([_AX_COMPILER_VERSION_HP],[ m4_define([_AX_COMPILER_VERSION_HP_NUMBER], [ #if defined(__HP_cc) __HP_cc #else __HP_aCC #endif ]) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_untilA0121, !!(_AX_COMPILER_VERSION_HP_NUMBER <= 1),, AC_MSG_FAILURE([[[$0]] unknown hp release version])) AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_untilA0121" = X1], [dnl By default output last version with this behavior. dnl it is so old ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="01.21.00" ], [dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, (_AX_COMPILER_VERSION_HP_NUMBER % 100),, AC_MSG_FAILURE([[[$0]] unknown hp release version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, ((_AX_COMPILER_VERSION_HP_NUMBER / 100)%100),, AC_MSG_FAILURE([[[$0]] unknown hp minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, ((_AX_COMPILER_VERSION_HP_NUMBER / 10000)%100),, AC_MSG_FAILURE([[[$0]] unknown hp major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) ]) AC_DEFUN([_AX_COMPILER_VERSION_DEC],[dnl m4_define([_AX_COMPILER_VERSION_DEC_NUMBER], [ #if defined(__DECC_VER) __DECC_VER #else __DECCXX_VER #endif ]) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, (_AX_COMPILER_VERSION_DEC_NUMBER % 10000),, AC_MSG_FAILURE([[[$0]] unknown dec release version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, ((_AX_COMPILER_VERSION_DEC_NUMBER / 100000UL)%100),, AC_MSG_FAILURE([[[$0]] unknown dec minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, ((_AX_COMPILER_VERSION_DEC_NUMBER / 10000000UL)%100),, AC_MSG_FAILURE([[[$0]] unknown dec major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # borland AC_DEFUN([_AX_COMPILER_VERSION_BORLAND],[dnl m4_define([_AX_COMPILER_VERSION_TURBOC_NUMBER], [ #if defined(__TURBOC__) __TURBOC__ #else choke me #endif ]) m4_define([_AX_COMPILER_VERSION_BORLANDC_NUMBER], [ #if defined(__BORLANDC__) __BORLANDC__ #else __CODEGEARC__ #endif ]) AC_COMPILE_IFELSE( [AC_LANG_PROGRAM(, _AX_COMPILER_VERSION_TURBOC_NUMBER)], [dnl TURBOC AC_COMPUTE_INT( _ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw, _AX_COMPILER_VERSION_TURBOC_NUMBER,, AC_MSG_FAILURE([[[$0]] unknown turboc version])) AS_IF( [test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw -lt 661 || test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw -gt 1023], [dnl compute normal version AC_COMPUTE_INT( _ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, _AX_COMPILER_VERSION_TURBOC_NUMBER % 0x100,, AC_MSG_FAILURE([[[$0]] unknown turboc minor version])) AC_COMPUTE_INT( _ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (_AX_COMPILER_VERSION_TURBOC_NUMBER/0x100)%0x100,, AC_MSG_FAILURE([[[$0]] unknown turboc major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor"], [dnl special version AS_CASE([$_ax_[]_AC_LANG_ABBREV[]_compiler_version_turboc_raw], [661],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:1.00"], [662],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:1.01"], [663],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="0turboc:2.00"], [ AC_MSG_WARN([[[$0]] unknown turboc version between 0x295 and 0x400 please report bug]) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="" ]) ]) ], # borlandc [ AC_COMPUTE_INT( _ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw, _AX_COMPILER_VERSION_BORLANDC_NUMBER,, AC_MSG_FAILURE([[[$0]] unknown borlandc version])) AS_CASE([$_ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw], dnl BORLANDC++ before 5.5 [512] ,[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:2.00"], [1024],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.00"], [1024],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.00"], [1040],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:3.1"], [1106],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:4.0"], [1280],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:5.0"], [1312],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="1borlanc:5.02"], dnl C++ Builder era [1328],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="2cppbuilder:3.0"], [1344],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="2cppbuilder:4.0"], dnl BORLANDC++ after 5.5 [1360],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.5"], [1361],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.51"], [1378],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="3borlancpp:5.6.4"], dnl C++ Builder with year number [1392],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2006"], [1424],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2007"], [1555],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2009"], [1569],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="4cppbuilder:2010"], dnl XE version [1584],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe"], [1600],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:2"], [1616],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:3"], [1632],[ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="5xe:4"], [ AC_MSG_WARN([[[$0]] Unknown borlandc compiler version $_ax_[]_AC_LANG_ABBREV[]_compiler_version_borlandc_raw please report bug]) ]) ]) ]) # COMO AC_DEFUN([_AX_COMPILER_VERSION_COMEAU], [ dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [__COMO_VERSION__%100],, AC_MSG_FAILURE([[[$0]] unknown comeau compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [(__COMO_VERSION__/100)%10],, AC_MSG_FAILURE([[[$0]] unknown comeau compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor" ]) # KAI AC_DEFUN([_AX_COMPILER_VERSION_KAI],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__KCC_VERSION%100],, AC_MSG_FAILURE([[[$0]] unknown kay compiler patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [(__KCC_VERSION/100)%10],, AC_MSG_FAILURE([[[$0]] unknown kay compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [(__KCC_VERSION/1000)%10],, AC_MSG_FAILURE([[[$0]] unknown kay compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) dnl LCC dnl LCC does not output version... # SGI AC_DEFUN([_AX_COMPILER_VERSION_SGI],[ m4_define([_AX_COMPILER_VERSION_SGI_NUMBER], [ #if defined(_COMPILER_VERSION) _COMPILER_VERSION #else _SGI_COMPILER_VERSION #endif ]) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [_AX_COMPILER_VERSION_SGI_NUMBER%10],, AC_MSG_FAILURE([[[$0]] unknown SGI compiler patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, [(_AX_COMPILER_VERSION_SGI_NUMBER/10)%10],, AC_MSG_FAILURE([[[$0]] unknown SGI compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, [(_AX_COMPILER_VERSION_SGI_NUMBER/100)%10],, AC_MSG_FAILURE([[[$0]] unknown SGI compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # microsoft AC_DEFUN([_AX_COMPILER_VERSION_MICROSOFT],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, _MSC_VER%100,, AC_MSG_FAILURE([[[$0]] unknown microsoft compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (_MSC_VER/100)%100,, AC_MSG_FAILURE([[[$0]] unknown microsoft compiler major version])) dnl could be overridden _ax_[]_AC_LANG_ABBREV[]_compiler_version_patch=0 _ax_[]_AC_LANG_ABBREV[]_compiler_version_build=0 # special case for version 6 AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major" = "X12"], [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, _MSC_FULL_VER%1000,, _ax_[]_AC_LANG_ABBREV[]_compiler_version_patch=0)]) # for version 7 AS_IF([test "X$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major" = "X13"], [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, _MSC_FULL_VER%1000,, AC_MSG_FAILURE([[[$0]] unknown microsoft compiler patch version])) ]) # for version > 8 AS_IF([test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_major -ge 14], [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, _MSC_FULL_VER%10000,, AC_MSG_FAILURE([[[$0]] unknown microsoft compiler patch version])) ]) AS_IF([test $_ax_[]_AC_LANG_ABBREV[]_compiler_version_major -ge 15], [AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_build, _MSC_BUILD,, AC_MSG_FAILURE([[[$0]] unknown microsoft compiler build version])) ]) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_build" ]) # for metrowerks AC_DEFUN([_AX_COMPILER_VERSION_METROWERKS],[dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, __MWERKS__%0x100,, AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler patch version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, (__MWERKS__/0x100)%0x10,, AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (__MWERKS__/0x1000)%0x10,, AC_MSG_FAILURE([[[$0]] unknown metrowerks compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # for watcom AC_DEFUN([_AX_COMPILER_VERSION_WATCOM],[dnl AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, __WATCOMC__%100,, AC_MSG_FAILURE([[[$0]] unknown watcom compiler minor version])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, (__WATCOMC__/100)%100,, AC_MSG_FAILURE([[[$0]] unknown watcom compiler major version])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor" ]) # for PGI AC_DEFUN([_AX_COMPILER_VERSION_PORTLAND],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, __PGIC__,, AC_MSG_FAILURE([[[$0]] unknown pgi major])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, __PGIC_MINOR__,, AC_MSG_FAILURE([[[$0]] unknown pgi minor])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [__PGIC_PATCHLEVEL__],, AC_MSG_FAILURE([[[$0]] unknown pgi patch level])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # tcc AC_DEFUN([_AX_COMPILER_VERSION_TCC],[ ax_cv_[]_AC_LANG_ABBREV[]_compiler_version=[`tcc -v | $SED 's/^[ ]*tcc[ ]\+version[ ]\+\([0-9.]\+\).*/\1/g'`] ]) # for GNU AC_DEFUN([_AX_COMPILER_VERSION_SDCC],[ AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_major, /* avoid parse error with comments */ #if(defined(__SDCC_VERSION_MAJOR)) __SDCC_VERSION_MAJOR #else SDCC/100 #endif ,, AC_MSG_FAILURE([[[$0]] unknown sdcc major])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor, /* avoid parse error with comments */ #if(defined(__SDCC_VERSION_MINOR)) __SDCC_VERSION_MINOR #else (SDCC%100)/10 #endif ,, AC_MSG_FAILURE([[[$0]] unknown sdcc minor])) AC_COMPUTE_INT(_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch, [ /* avoid parse error with comments */ #if(defined(__SDCC_VERSION_PATCH)) __SDCC_VERSION_PATCH #elsif(defined(_SDCC_VERSION_PATCHLEVEL)) __SDCC_VERSION_PATCHLEVEL #else SDCC%10 #endif ],, AC_MSG_FAILURE([[[$0]] unknown sdcc patch level])) ax_cv_[]_AC_LANG_ABBREV[]_compiler_version="$_ax_[]_AC_LANG_ABBREV[]_compiler_version_major.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_minor.$_ax_[]_AC_LANG_ABBREV[]_compiler_version_patch" ]) # main entry point AC_DEFUN([AX_COMPILER_VERSION],[dnl AC_REQUIRE([AX_COMPILER_VENDOR]) AC_REQUIRE([AC_PROG_SED]) AC_CACHE_CHECK([for _AC_LANG compiler version], ax_cv_[]_AC_LANG_ABBREV[]_compiler_version, [ dnl AS_CASE([$ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor], [intel],[_AX_COMPILER_VERSION_INTEL], [ibm],[_AX_COMPILER_VERSION_IBM], [pathscale],[_AX_COMPILER_VERSION_PATHSCALE], [clang],[_AX_COMPILER_VERSION_CLANG], [cray],[_AX_COMPILER_VERSION_CRAY], [fujitsu],[_AX_COMPILER_VERSION_FUJITSU], [gnu],[_AX_COMPILER_VERSION_GNU], [sun],[_AX_COMPILER_VERSION_SUN], [hp],[_AX_COMPILER_VERSION_HP], [dec],[_AX_COMPILER_VERSION_DEC], [borland],[_AX_COMPILER_VERSION_BORLAND], [comeau],[_AX_COMPILER_VERSION_COMEAU], [kai],[_AX_COMPILER_VERSION_KAI], [sgi],[_AX_COMPILER_VERSION_SGI], [microsoft],[_AX_COMPILER_VERSION_MICROSOFT], [metrowerks],[_AX_COMPILER_VERSION_METROWERKS], [watcom],[_AX_COMPILER_VERSION_WATCOM], [portland],[_AX_COMPILER_VERSION_PORTLAND], [tcc],[_AX_COMPILER_VERSION_TCC], [sdcc],[_AX_COMPILER_VERSION_SDCC], [ax_cv_[]_AC_LANG_ABBREV[]_compiler_version=""]) ]) ]) cpputest-4.0/m4/acx_pthread.m4000644 000765 000024 00000022374 13663176127 017246 0ustar00basvoddestaff000000 000000 dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) dnl dnl @summary figure out how to build C programs using POSIX threads dnl dnl This macro figures out how to build C programs using POSIX threads. dnl It sets the PTHREAD_LIBS output variable to the threads library and dnl linker flags, and the PTHREAD_CFLAGS output variable to any special dnl C compiler flags that are needed. (The user can also force certain dnl compiler flags/libs to be tested by setting these environment dnl variables.) dnl dnl Also sets PTHREAD_CC to any special C compiler that is needed for dnl multi-threaded programs (defaults to the value of CC otherwise). dnl (This is necessary on AIX to use the special cc_r compiler alias.) dnl dnl NOTE: You are assumed to not only compile your program with these dnl flags, but also link it with them as well. e.g. you should link dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS dnl $LIBS dnl dnl If you are only building threads programs, you may wish to use dnl these variables in your default LIBS, CFLAGS, and CC: dnl dnl LIBS="$PTHREAD_LIBS $LIBS" dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" dnl CC="$PTHREAD_CC" dnl dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). dnl dnl ACTION-IF-FOUND is a list of shell commands to run if a threads dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the dnl default action will define HAVE_PTHREAD. dnl dnl Please let the authors know if this macro fails on any platform, or dnl if you have any other suggestions or comments. This macro was based dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. dnl We are also grateful for the helpful feedback of numerous users. dnl dnl @category InstalledPackages dnl @author Steven G. Johnson dnl @version 2006-05-29 dnl @license GPLWithACException AC_DEFUN([ACX_PTHREAD], [ AC_REQUIRE([AC_CANONICAL_HOST]) AC_LANG_SAVE AC_LANG_C acx_pthread_ok=no # We used to check for pthread.h first, but this fails if pthread.h # requires special compiler flags (e.g. on True64 or Sequent). # It gets checked for in the link test anyway. # First of all, check if the user has set any of the PTHREAD_LIBS, # etcetera environment variables, and if threads linking works using # them: if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) AC_MSG_RESULT($acx_pthread_ok) if test x"$acx_pthread_ok" = xno; then PTHREAD_LIBS="" PTHREAD_CFLAGS="" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" fi # We must check for the threads library under a number of different # names; the ordering is very important because some systems # (e.g. DEC) have both -lpthread and -lpthreads, where one of the # libraries is broken (non-POSIX). # Create a list of thread flags to try. Items starting with a "-" are # C compiler flags, and other items are library names, except for "none" # which indicates that we try without any flags at all, and "pthread-config" # which is a program returning the flags for the Pth emulation library. acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" # The ordering *is* (sometimes) important. Some notes on the # individual items follow: # pthreads: AIX (must check this before -lpthread) # none: in case threads are in libc; should be tried before -Kthread and # other compiler flags to prevent continual compiler warnings # -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) # -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) # -pthreads: Solaris/gcc # -mthreads: Mingw32/gcc, Lynx/gcc # -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it # doesn't hurt to check since this sometimes defines pthreads too; # also defines -D_REENTRANT) # ... -mt is also the pthreads flag for HP/aCC # pthread: Linux, etcetera # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) case "${host_cpu}-${host_os}" in *solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based # tests will erroneously succeed. (We need to link with -pthreads/-mt/ # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather # a function called by this macro, so we could check for that, but # who knows whether they'll stub that too in a future libc.) So, # we'll just look for -pthreads and -lpthread first: acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" ;; esac if test x"$acx_pthread_ok" = xno; then for flag in $acx_pthread_flags; do case $flag in none) AC_MSG_CHECKING([whether pthreads work without any flags]) ;; -*) AC_MSG_CHECKING([whether pthreads work with $flag]) PTHREAD_CFLAGS="$flag" ;; pthread-config) AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) if test x"$acx_pthread_config" = xno; then continue; fi PTHREAD_CFLAGS="`pthread-config --cflags`" PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" ;; *) AC_MSG_CHECKING([for the pthreads library -l$flag]) PTHREAD_LIBS="-l$flag" ;; esac save_LIBS="$LIBS" save_CFLAGS="$CFLAGS" LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Check for various functions. We must include pthread.h, # since some functions may be macros. (On the Sequent, we # need a special flag -Kthread to make this header compile.) # We check for pthread_join because it is in -lpthread on IRIX # while pthread_create is in libc. We check for pthread_attr_init # due to DEC craziness with -lpthreads. We check for # pthread_cleanup_push because it is one of the few pthread # functions on Solaris that doesn't have a non-functional libc stub. # We try pthread_create on general principles. AC_TRY_LINK([#include ], [pthread_t th; pthread_join(th, 0); pthread_attr_init(0); pthread_cleanup_push(0, 0); pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], [acx_pthread_ok=yes]) LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" AC_MSG_RESULT($acx_pthread_ok) if test "x$acx_pthread_ok" = xyes; then break; fi PTHREAD_LIBS="" PTHREAD_CFLAGS="" done fi # Various other checks: if test "x$acx_pthread_ok" = xyes; then save_LIBS="$LIBS" LIBS="$PTHREAD_LIBS $LIBS" save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS" # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. AC_MSG_CHECKING([for joinable pthread attribute]) attr_name=unknown for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do AC_TRY_LINK([#include ], [int attr=$attr; return attr;], [attr_name=$attr; break]) done AC_MSG_RESULT($attr_name) if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, [Define to necessary symbol if this constant uses a non-standard name on your system.]) fi AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no case "${host_cpu}-${host_os}" in *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" fi LIBS="$save_LIBS" CFLAGS="$save_CFLAGS" # More AIX lossage: must compile with xlc_r or cc_r if test x"$GCC" != xyes; then AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC}) else PTHREAD_CC=$CC fi else PTHREAD_CC="$CC" fi AC_SUBST(PTHREAD_LIBS) AC_SUBST(PTHREAD_CFLAGS) AC_SUBST(PTHREAD_CC) # Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: if test x"$acx_pthread_ok" = xyes; then ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) : else acx_pthread_ok=no $2 fi AC_LANG_RESTORE ])dnl ACX_PTHREAD cpputest-4.0/m4/m4_ax_compiler_vendor.m4000644 000765 000024 00000010270 13663176127 021233 0ustar00basvoddestaff000000 000000 # =========================================================================== # https://www.gnu.org/software/autoconf-archive/ax_compiler_vendor.html # =========================================================================== # # SYNOPSIS # # AX_COMPILER_VENDOR # # DESCRIPTION # # Determine the vendor of the C, C++ or Fortran compiler. The vendor is # returned in the cache variable $ax_cv_c_compiler_vendor for C, # $ax_cv_cxx_compiler_vendor for C++ or $ax_cv_fc_compiler_vendor for # (modern) Fortran. The value is one of "intel", "ibm", "pathscale", # "clang" (LLVM), "cray", "fujitsu", "sdcc", "sx", "portland" (PGI), "gnu" # (GCC), "sun" (Oracle Developer Studio), "hp", "dec", "borland", # "comeau", "kai", "lcc", "sgi", "microsoft", "metrowerks", "watcom", # "tcc" (Tiny CC) or "unknown" (if the compiler cannot be determined). # # To check for a Fortran compiler, you must first call AC_FC_PP_SRCEXT # with an appropriate preprocessor-enabled extension. For example: # # AC_LANG_PUSH([Fortran]) # AC_PROG_FC # AC_FC_PP_SRCEXT([F]) # AX_COMPILER_VENDOR # AC_LANG_POP([Fortran]) # # LICENSE # # Copyright (c) 2008 Steven G. Johnson # Copyright (c) 2008 Matteo Frigo # Copyright (c) 2018-19 John Zaitseff # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by the # Free Software Foundation, either version 3 of the License, or (at your # option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General # Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . # # As a special exception, the respective Autoconf Macro's copyright owner # gives unlimited permission to copy, distribute and modify the configure # scripts that are the output of Autoconf when processing the Macro. You # need not follow the terms of the GNU General Public License when using # or distributing such scripts, even though portions of the text of the # Macro appear in them. The GNU General Public License (GPL) does govern # all other use of the material that constitutes the Autoconf Macro. # # This special exception to the GPL applies to versions of the Autoconf # Macro released by the Autoconf Archive. When you make and distribute a # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. #serial 30 AC_DEFUN([AX_COMPILER_VENDOR], [dnl AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, [dnl dnl If you modify this list of vendors, please add similar support dnl to ax_compiler_version.m4 if at all possible. dnl dnl Note: Do NOT check for GCC first since some other compilers dnl define __GNUC__ to remain compatible with it. Compilers that dnl are very slow to start (such as Intel) are listed first. vendors=" intel: __ICC,__ECC,__INTEL_COMPILER ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__,__ibmxl__ pathscale: __PATHCC__,__PATHSCALE__ clang: __clang__ cray: _CRAYC fujitsu: __FUJITSU sdcc: SDCC,__SDCC sx: _SX portland: __PGI gnu: __GNUC__ sun: __SUNPRO_C,__SUNPRO_CC,__SUNPRO_F90,__SUNPRO_F95 hp: __HP_cc,__HP_aCC dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland: __BORLANDC__,__CODEGEARC__,__TURBOC__ comeau: __COMO__ kai: __KCC lcc: __LCC__ sgi: __sgi,sgi microsoft: _MSC_VER metrowerks: __MWERKS__ watcom: __WATCOMC__ tcc: __TINYC__ unknown: UNKNOWN " for ventest in $vendors; do case $ventest in *:) vendor=$ventest continue ;; *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; esac AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ #if !($vencpp) thisisanerror; #endif ]])], [break]) done ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` ]) ])dnl cpputest-4.0/m4/lt~obsolete.m4000644 000765 000024 00000013774 13663176414 017341 0ustar00basvoddestaff000000 000000 # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) cpputest-4.0/scripts/NewCInterface.sh000755 000765 000024 00000000211 13663176127 020667 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c Fake $1 $2 cpputest-4.0/scripts/InstallScripts.sh000755 000765 000024 00000001051 13663176127 021173 0ustar00basvoddestaff000000 000000 #!/bin/bash -x FirstLetter=${0:0:1} if [[ $FirstLetter == "/" ]] ; then CPPUTEST_HOME=${0%/scripts/*} else file=$(pwd)/${0} CPPUTEST_HOME="${file%/scripts/*}" fi EXE_DIR=${EXE_DIR:-/usr/local/bin} test -f ${EXE_DIR} || mkdir -p ${EXE_DIR} NEW_SCRIPTS="NewCIoDriver NewClass NewInterface NewCModule NewCmiModule NewProject NewLibrary NewPackageDirs NewCInterface NewCFunction NewHelp" for file in $NEW_SCRIPTS ; do rm -f ${EXE_DIR}/${file} ln -s ${CPPUTEST_HOME}/scripts/${file}.sh ${EXE_DIR}/${file} chmod a+x ${EXE_DIR}/${file} done cpputest-4.0/scripts/svnignore.txt000644 000765 000024 00000000320 13663176127 020427 0ustar00basvoddestaff000000 000000 doxygen *.d */Debug/* *.exe *.obj *.o *.a *.ncb *.opt *.plg *.idb *.pdb *.lib .settings *doxygen* *.gcov *.gcno *.gcda *_tests *_cslim *a.out *.zip tmp pdfs *.map gcov objs lib *_tests.txt gcov*.html Releasescpputest-4.0/scripts/appveyor_ci_build.ps1000644 000765 000024 00000006625 13663176127 022016 0ustar00basvoddestaff000000 000000  # Load functions from the helper file . (Join-Path (Split-Path $MyInvocation.MyCommand.Path) 'appveyor_helpers.ps1') function Invoke-BuildCommand($command, $directory = '.') { $command_wrapped = "$command;`$err = `$?" Write-Host $command Push-Location $directory Invoke-Expression $command_wrapped if ($LASTEXITCODE -ne 0) { Pop-Location Write-Host "Command Returned error: $LASTEXITCODE" Exit $LASTEXITCODE } Pop-Location } function Invoke-CygwinCommand($command, $directory = '.') { # Assume cygwin is located at C:\cygwin on x86 and C:\cygwin64 on x64 for now $cygwin_bin = Get-CygwinBin $cygwin_directory = (. "${cygwin_bin}\cygpath.exe" (Resolve-Path $directory)) $command_wrapped = "${cygwin_bin}\bash.exe --login -c 'cd $cygwin_directory ; $command'" Write-Host "Executing <$command> in <$cygwin_directory>" Invoke-Expression $command_wrapped if ($LASTEXITCODE -ne 0) { Write-Host "Command Returned error: $LASTEXITCODE" Exit $LASTEXITCODE } } # The project files that will get built $VS2008ProjectFiles = @( 'CppUTest.vcproj' , 'tests\AllTests.vcproj' ) $VS2010ProjectFiles = @( 'CppUTest.vcxproj', 'tests\AllTests.vcxproj' ) if ($env:APPVEYOR) { $logger_arg = '/logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"' } else { $logger_arg = '' } # Clean up some paths for any configuration Remove-PathFolder "C:\MinGW\bin" Remove-PathFolder "C:\Program Files\Git\bin" Remove-PathFolder "C:\Program Files\Git\cmd" Remove-PathFolder "C:\Program Files\Git\usr\bin" Remove-PathFolder "C:\Program Files (x86)\Git\bin" Remove-PathFolder "C:\Program Files (x86)\Git\cmd" Remove-PathFolder "C:\Program Files (x86)\Git\usr\bin" switch -Wildcard ($env:Platform) { 'Cygwin*' { Invoke-CygwinCommand "autoreconf -i .." "cpputest_build" Invoke-CygwinCommand "../configure" "cpputest_build" Invoke-CygwinCommand "make CppUTestTests.exe CppUTestExtTests.exe" "cpputest_build" } 'MinGW*' { $mingw_path = Get-MinGWBin if ($env:Platform -like 'MinGWClang*') { $toolchain_filename = Get-ClangToolchainFilename $toolchain_path = (Join-Path (Split-Path $MyInvocation.MyCommand.Path) "..\cmake\$toolchain_filename") $toolchain = "-DCMAKE_TOOLCHAIN_FILE=$toolchain_path" } # Add mingw to the path Add-PathFolder $mingw_path Invoke-BuildCommand "cmake --version" Invoke-BuildCommand "cmake -G 'MinGW Makefiles' -DCMAKE_CXX_STANDARD=17 $toolchain .." 'cpputest_build' Invoke-BuildCommand "mingw32-make all" 'cpputest_build' Remove-PathFolder $mingw_path } default # Assume that anything else uses Visual C++ { if ($env:PlatformToolset -eq 'v90') { # Load environment variables from vsvars32.bat $vsvarspath = Join-Path $env:VS90COMNTOOLS vsvars32.bat Get-BatchFile($vsvarspath) $VS2008ProjectFiles | foreach { Invoke-BuildCommand "vcbuild /upgrade $_" } $VS2008ProjectFiles | foreach { Invoke-BuildCommand "vcbuild $_ $env:CONFIGURATION" } } else { $VS2010ProjectFiles | foreach { Invoke-BuildCommand "msbuild /ToolsVersion:14.0 $logger_arg $_" } } } } cpputest-4.0/scripts/appveyor_ci_test.ps1000644 000765 000024 00000006223 13663176127 021670 0ustar00basvoddestaff000000 000000  # Load functions from the helper file . (Join-Path (Split-Path $MyInvocation.MyCommand.Path) 'appveyor_helpers.ps1') function Publish-TestResults($files) { $anyFailures = $FALSE # Upload results to AppVeyor one by one $files | foreach { $testsuite = ([xml](get-content $_.Name)).testsuite foreach ($testcase in $testsuite.testcase) { if ($testcase.failure) { Add-AppveyorTest $testcase.name -Outcome Failed -FileName $testsuite.name -ErrorMessage $testcase.failure.message Add-AppveyorMessage "$($testcase.name) failed" -Category Error $anyFailures = $TRUE } elseif ($testcase.skipped) { Add-AppveyorTest $testcase.name -Outcome Ignored -Filename $testsuite.name } else { Add-AppveyorTest $testcase.name -Outcome Passed -FileName $testsuite.name } } Remove-Item $_.Name } if ($anyFailures -eq $TRUE){ write-host "Failing build as there are broken tests" $host.SetShouldExit(1) } } function Invoke-Tests($executable) { # Run tests and output the results using junit $TestCommand = "$executable -ojunit" Write-Host $TestCommand -NoNewline Invoke-Expression $TestCommand Write-Host " - return code: $LASTEXITCODE" if ($LASTEXITCODE -lt 0) { Write-Error "Runtime Exception during test execution" } } function Invoke-CygwinTests($executable) { # Assume cygwin is located at C:\cygwin for now $cygwin_bin = Get-CygwinBin # Get the full path to the executable $cygwin_folder = . "${cygwin_bin}\cygpath.exe" (Resolve-Path ".") $cygwin_exe = . "${cygwin_bin}\cygpath.exe" $executable # Run tests from the cygwin prompt $test_command = "${cygwin_exe} -ojunit" $cygwin_command = "${cygwin_bin}\bash.exe --login -c 'cd ${cygwin_folder} ; ${test_command}'" Write-Host $test_command Invoke-Expression $cygwin_command } $TestCount = 0 if (-not $env:APPVEYOR) { function Add-AppVeyorTest() { # Wacky way to access a script variable, but it works $count = Get-Variable -Name TestCount -Scope script Set-Variable -Name TestCount -Scope script -Value ($count.Value + 1) } function Add-AppVeyorMessage($Message, $Category) { if ($Category -eq 'Error') { Write-Error $Message } else { Write-Host $Message } } } switch -Wildcard ($env:Platform) { 'Cygwin*' { Invoke-CygwinTests 'cpputest_build\CppUTestTests.exe' Invoke-CygwinTests 'cpputest_build\CppUTestExtTests.exe' } 'MinGW*' { $mingw_path = Get-MinGWBin Set-Path "$mingw_path;C:\Windows;C:\Windows\System32" Invoke-Tests '.\cpputest_build\tests\CppUTest\CppUTestTests.exe' Invoke-Tests '.\cpputest_build\tests\CppUTestExt\CppUTestExtTests.exe' Restore-Path } default { Invoke-Tests '.\cpputest_build\AllTests.exe' } } Publish-TestResults (Get-ChildItem 'cpputest_*.xml') if (-not $env:APPVEYOR) { Write-Host "Tests Ran: $TestCount" } cpputest-4.0/scripts/travis_ci_after.sh000755 000765 000024 00000000224 13663176127 021362 0ustar00basvoddestaff000000 000000 #!/bin/bash # Script run in the travis CI set -ex FILE="./test-suite.log" if [ -f $FILE ]; then cat $FILE else echo "$FILE not found." fi cpputest-4.0/scripts/RefactorRenameIncludeFile.sh000755 000765 000024 00000003441 13663176127 023223 0ustar00basvoddestaff000000 000000 #!/bin/bash +x dirs_to_look_in="src tests include mocks" from_name=$1 to_name=$2 SVN=svn findFilesWithInclude() { files_with_include=$(find $dirs_to_look_in -name "*.[hc]" -o -name "*.cpp" | xargs grep -l "#include \"$1\"") if [ "$files_with_include" != "" ] then files_with_include+=" " fi files_with_include+=$(find $dirs_to_look_in -name "*.[hc]" -o -name "*.cpp" | xargs grep -l "#include <$1>") echo $files_with_include } checkForPriorNameUseIncludes() { files=$(findFilesWithInclude $1) if [ "$files" != "" ] then echo "name already included: $1 included in ${files}" exit fi } checkForFileNameExists() { files=$(find $dirs_to_look_in -name $1) if [ "$files" != "" ] then echo "name already in use: $1 found in ${files}" exit fi } searchAndReplaceIncludes() { files=$(findFilesWithInclude $1) if [ "$files" = "" ] then echo "No files found including $1" exit fi echo "Changing include $1 to $2 in: $files" set -x sed -i "" -e "s/#include \"$1\"/#include \"$2\"/g" $files sed -i "" -e "s/#include <$1>/#include <$2>/g" $files set +x } renameIncludeFile() { file=$(find $dirs_to_look_in -name $1) if [ $(echo $file | wc -l) != 1 ] then echo "More than one potential file to rename $file" exit fi set -x from_module_name=$(basename $1 .h) to_module_name=$(basename $2 .h) sed -i "" -e "s/$from_module_name/$to_module_name/g" $file path=$(dirname $file) $SVN mv $file $path/$2 set +x } checkForFileNameExists $to_name checkForPriorNameUseIncludes $to_name searchAndReplaceIncludes $from_name $to_name renameIncludeFile $1 $2 cpputest-4.0/scripts/NewPackageDirs.sh000755 000765 000024 00000000311 13663176127 021042 0ustar00basvoddestaff000000 000000 #!/bin/bash package=$1 for dir in src include tests ; do packageDir=${dir}/${package} if [ ! -d "$packageDir" ] ; then echo "creating $packageDir" mkdir $packageDir fi done cpputest-4.0/scripts/squeeze.sh000755 000765 000024 00000000036 13663176127 017700 0ustar00basvoddestaff000000 000000 #!/bin/sed -f s/[ ][ ]*/ /g cpputest-4.0/scripts/travis_ci_build.sh000755 000765 000024 00000012032 13663176127 021360 0ustar00basvoddestaff000000 000000 #!/bin/bash # Script run in the travis CI set -ex if [ "x$CPPUTEST_HOME" = "x" ] ; then export CPPUTEST_HOME=$TRAVIS_BUILD_DIR fi if [ "x$BUILD" = "xautotools" ]; then autoreconf -i .. ../configure make tdd fi if [ "x$BUILD" = "xmakefileworker" ]; then make -C $CPPUTEST_HOME -f Makefile_using_MakefileWorker test_all fi if [ "x$BUILD" = "xcmake" ]; then BUILD_ARGS=("-DWERROR=ON") if [ -n "$CPP_STD" ]; then BUILD_ARGS+=("-DCMAKE_CXX_STANDARD=$CPP_STD") fi cmake --version cmake "${BUILD_ARGS[@]}" .. make ctest -V fi if [ "x$BUILD" = "xautotools_gtest" ]; then autoreconf -i .. ../configure make check_gtest fi if [ "x$BUILD" = "xcmake_gtest" ]; then pwd wget https://github.com/google/googletest/archive/release-1.6.0.zip -O gtest-1.6.0.zip && unzip gtest-1.6.0.zip; wget https://github.com/google/googlemock/archive/release-1.6.0.zip -O gmock-1.6.0.zip && unzip gmock-1.6.0.zip; unzip gtest-1.6.0.zip -d $TRAVIS_BUILD_DIR unzip gmock-1.6.0.zip -d $TRAVIS_BUILD_DIR cd $TRAVIS_BUILD_DIR mv googletest-release-1.6.0 googlemock-release-1.6.0/gtest cd googlemock-release-1.6.0 autoreconf -i; ./configure CXXFLAGS=-DGTEST_USE_OWN_TR1_TUPLE=1 && make cd - export GMOCK_HOME=$TRAVIS_BUILD_DIR/googlemock-release-1.6.0 export GTEST_HOME=$TRAVIS_BUILD_DIR/googlemock-release-1.6.0/gtest cmake . -DGMOCK=ON make ctest -V fi if [ "x$BUILD" = "xtest_report" ]; then autoreconf -i .. ../configure make check ./CppUTestTests -ojunit ./CppUTestExtTests -ojunit cp ../scripts/generate_junit_report_ant.xml . ant -f generate_junit_report_ant.xml fi if [ "x$BUILD" = "xcmake_coverage" ]; then pip install --user cpp-coveralls gcovr cmake .. -DCMAKE_BUILD_TYPE=Debug -DC++11=ON -DCOVERAGE=ON -DLONGLONG=ON make ctest coveralls -b . -r .. -i "src" -i "include" --gcov-options="-lbc" || true fi if [ "x$BUILD" = "xautotools_cmake_install_test" ]; then autoreconf -i .. ../configure rm -rf install_autotools mkdir -p install_autotools make DESTDIR=install_autotools install cmake .. rm -rf install_cmake mkdir -p install_cmake make DESTDIR=install_cmake install # Hack: autotools cannot make CMake package. We cached and copied them. Here we check they are still the same for cmakefile in CppUTestConfig.cmake CppUTestConfigVersion.cmake CppUTestTargets-relwithdebinfo.cmake CppUTestTargets.cmake; do cat install_autotools/usr/local/lib/CppUTest/cmake/$cmakefile cat install_cmake/usr/local/lib/CppUTest/cmake/$cmakefile diff -Bw install_autotools/usr/local/lib/CppUTest/cmake/$cmakefile install_cmake/usr/local/lib/CppUTest/cmake/$cmakefile || exit 1 done export INSTALL_DIFF=`diff -rwBq install_autotools install_cmake -X CppUTestGeneratedConfig.h -X libCppUTest.a -X libCppUTestExt.a` if [ "x$INSTALL_DIFF" != "x" ]; then echo "FAILED: CMake install and Autotools install is not the same!\n" echo "Difference\n" echo "-------------------------------\n" echo "$INSTALL_DIFF" echo "-------------------------------\n" exit 1; fi fi if [ "x$BUILD" = "xdocker_ubuntu_autotools" ]; then $CPPUTEST_HOME/scripts/create_docker_images_and_containers ubuntu docker start -i cpputest_ubuntu fi if [ "x$BUILD" = "xdocker_ubuntu_dos" ]; then $CPPUTEST_HOME/scripts/create_docker_images_and_containers dos docker start -i cpputest_dos fi if [ "x$BUILD" = "xmake_dos" ]; then if [ ! -d watcom ]; then git clone https://github.com/cpputest/watcom-compiler.git watcom fi export PATH=$PATH:$PWD/watcom/binl export WATCOM=$PWD/watcom export CC=wcl export CXX=wcl $CC --version make -f $CPPUTEST_HOME/platforms/Dos/Makefile clean make -f $CPPUTEST_HOME/platforms/Dos/Makefile $CPPUTEST_HOME/platforms/Dos/alltests.sh fi if [ "x$BUILD" = "xextensive_check" ]; then autoreconf -i .. ../configure make check_all fi if [ "x$BUILD" = "xautotools_dist" ]; then autoreconf -i .. ../configure if [ "x$TRAVIS_OS_NAME" = "xosx" ]; then COPYFILE_DISABLE=1 make dist VERSION=latest COPYFILE_DISABLE=1 make dist-zip VERSION=latest else make dist VERSION=latest make dist-zip VERSION=latest fi fi if [ "x$BUILD" = "xautotools_install_and_test_examples" ]; then autoreconf -i .. ../configure make tdd sudo make install make -C $CPPUTEST_HOME/examples -f $CPPUTEST_HOME/examples/Makefile_ExamplesWithCppUTestInstalled.mk fi if [ "x$BUILD" = "xvc_windows" ]; then export PATH=$MSBUILD_PATH:$PATH cmake .. MSBuild.exe ALL_BUILD.vcxproj ./tests/CppUTest/CppUTestTests.exe ./tests/CppUTestExt/CppUTestExtTests.exe fi if [ "x$BUILD" = "xcmake_windows" ]; then choco install make BUILD_ARGS=("-DWERROR=ON") if [ -n "$CPP_STD" ]; then BUILD_ARGS+=("-DCMAKE_CXX_STANDARD=$CPP_STD") fi cmake --version cmake -G 'Unix Makefiles' "${BUILD_ARGS[@]}" .. make ctest -V fi cpputest-4.0/scripts/NewInterface.sh000755 000765 000024 00000000211 13663176127 020564 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassName cpp Mock $1 $2 cpputest-4.0/scripts/zipExclude.txt000644 000765 000024 00000000354 13663176127 020540 0ustar00basvoddestaff000000 000000 *.metadata* *.sh~ *.obj *.zip *.a *.d *.o *.lib *.ncb *.opt *.plg */Debug/* *.svn* */Alltests *.gcov *.gcda *.gcno *.html *doxygen* *_tests */*.class *Doxyfile *Releases* *UnityTemplates* *platforms* *.DS_Store *.git* *.gitignore *.swp cpputest-4.0/scripts/ReleaseCppUTest.sh000755 000765 000024 00000004713 13663176127 021235 0ustar00basvoddestaff000000 000000 #!/bin/bash #source in release generator script echo "Do not use this anymore, please use \"configure; make dist\"" exit if [ ! -d "scripts" ]; then echo "You have to run this script from the CPPUTEST_HOME directory!"; exit fi GENERATED_FILES="" release_dir=Releases scripts_dir=scripts version=v3.3 zip_root=CppUTest-${version} tar_root=CppUTest-${version}_tar clean_unzip_root=${zip_root}_clean_unzip clean_untar_root=${zip_root}_clean_untar zip_file=${zip_root}.zip tar_file=${zip_root}.tar.gz exitIfFileExists() { if [ -e $1 ] then echo "${1} already exists, exiting." exit fi } generateMakeScript() { filename=$1 dateTime=$2 version=$3 target=$4 exitIfFileExists $filename.sh echo "#Generated file - ${filename}.sh" >$filename.sh echo "echo \"Running ${filename} for CppUTest ${version} created on ${dateTime}\"" >>$filename.sh echo "export CPPUTEST_HOME=\$(pwd)" >>$filename.sh echo "echo \"export CPPUTEST_HOME=\$(pwd)/\"" >>$filename.sh echo "make $target" >>$filename.sh chmod +x $filename.sh GENERATED_FILES+=" $filename.sh" } generateVersionFile() { version=$1 dateTime=$2 versionFile=version.txt echo "CppUTest ${version} created on ${dateTime}" > $versionFile GENERATED_FILES+=$versionFile } zipIt() { mkdir -p ${release_dir} zip -r ${release_dir}/${zip_file} \ $GENERATED_FILES \ .\ -x@${scripts_dir}/zipExclude.txt tar -cvpzf ${release_dir}/${tar_file} \ -X ./${scripts_dir}/zipExclude.txt \ $GENERATED_FILES \ . } cleanUp() { rm -f $GENERATED_FILES } generateCppUTestRelease() { dateTime=$(date +%F-%H-%M) generateVersionFile $version $dateTime generateMakeScript makeAll $dateTime $version everythingInstall generateMakeScript cleanAll $dateTime $version cleanEverythingInstall zipIt $version cleanUp } openAndMakeRelease() { cd ${release_dir} # unzip and untar the code and make sure it is the same rm -rf ${clean_unzip_root} unzip ${zip_file} -d ${clean_unzip_root} rm -rf ${clean_untar_root} mkdir ${clean_untar_root} tar -xvzpf ${tar_file} -C ${clean_untar_root} rm -rf ${zip_root} unzip ${zip_file} -d ${zip_root} cd ${zip_root} ./makeAll.sh cd .. rm -rf ${tar_root} mkdir ${tar_root} tar -xvzpf ${tar_file} -C ${tar_root} cd ${tar_root} ./makeAll.sh cd ../.. } #Main generateCppUTestRelease openAndMakeRelease cpputest-4.0/scripts/NewCmiModule.sh000755 000765 000024 00000000233 13663176127 020546 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameCMultipleInstance c NoMock $1 $2 cpputest-4.0/scripts/NewLibrary.sh000755 000765 000024 00000001647 13663176127 020306 0ustar00basvoddestaff000000 000000 #!/bin/bash -x TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates LIBRARY=$1 if [ -e ${LIBRARY} ] ; then echo "The directory ${LIBRARY} already exists" exit 1; fi echo "Copy template project to ${LIBRARY}" cp -R ${TEMPLATE_DIR}/ProjectTemplate/Project ${LIBRARY} find ${LIBRARY} -name \.svn | xargs rm -rf echo "Update to the new LIBRARY name" substituteProjectName="-e s/Project/${LIBRARY}/g -i .bak" cd ${LIBRARY} sed ${substituteProjectName} *.* sed ${substituteProjectName} Makefile for name in BuildTime.h BuildTime.cpp BuildTimeTest.cpp ; do mv Project${name} ${LIBRARY}${name} done cd .. sed -e "s/DIRS = /DIRS = ${LIBRARY} /g" -i .bak Makefile find ${LIBRARY} -name \*.bak | xargs rm -f echo "#include \"../${LIBRARY}/AllTests.h\"" >> AllTests/AllTests.cpp echo "You have to manually add the library reference to the AllTests Makefile" echo "and maybe change the order of the library builds in the main Makefile" cpputest-4.0/scripts/UnityTemplates/000755 000765 000024 00000000000 13663444566 020655 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/appveyor_helpers.ps1000644 000765 000024 00000004511 13663176127 021676 0ustar00basvoddestaff000000 000000  # Helper function to extract vars out of the vsvars batch file function Get-Batchfile ($file) { $cmd = "`"$file`" & set" cmd /c $cmd | Foreach-Object { $p, $v = $_.split('=') Set-Item -path env:$p -value $v } } # Helper function to provide the bin-folder path to mingw function Get-MinGWBin() { if ($env:Platform -like '*64') { Write-Output 'C:\Tools\mingw64\bin' } else { Write-Output 'C:\Tools\mingw32\bin' } } # Helper function to provide the toolchain file for clang function Get-ClangToolchainFilename() { if ($env:Platform -like '*64') { Write-Output 'clang+mingw-win64.toolchain.cmake' } else { Write-Output 'clang+mingw-win32.toolchain.cmake' } } # Helper function to provide the bin-folder path to cygwin function Get-CygwinBin() { if ($env:Platform -like '*64') { Write-Output 'C:\cygwin64\bin' } else { Write-Output 'C:\cygwin\bin' } } function Add-PathFolder($folder) { if (-not (Test-Path $folder)) { Write-Host "Not adding $folder to the PATH, it does not exist" } [bool]$alreadyInPath = $false [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { $alreadyInPath = $true break } } if (-not $alreadyInPath) { Write-Host "Adding $folder to the PATH" $pathFolders.Insert(0, $folder) $env:Path = $pathFolders -join ";" } } function Remove-PathFolder($folder) { [System.Collections.ArrayList]$pathFolders = New-Object System.Collections.ArrayList $env:Path -split ";" | foreach { $pathFolders.Add($_) | Out-Null } for ([int]$i = 0; $i -lt $pathFolders.Count; $i++) { if ([string]::Compare($pathFolders[$i], $folder, $true) -eq 0) { Write-Host "Removing $folder from the PATH" $pathFolders.RemoveAt($i) $i-- } } $env:Path = $pathFolders -join ";" } function Set-Path($newPath) { $env:RestorePath = $env:Path $env:Path = $newPath } function Restore-Path() { $env:Path = $env:RestorePath } cpputest-4.0/scripts/reformat.sh000755 000765 000024 00000000540 13663176127 020036 0ustar00basvoddestaff000000 000000 #!/bin/bash set -e ASTYLE_OPTIONS="--convert-tabs --indent=spaces=4 --indent-classes --indent-switches --indent-preprocessor --style=ansi" find $1 -name "*.h" -o -name "*.c" -o -name "*.cpp" | while read filename; do tmpfile=${filename}.astyle.cpp astyle ${ASTYLE_OPTIONS} <"${filename}" > "${tmpfile}" mv "${tmpfile}" "${filename}" done cpputest-4.0/scripts/checkForCppUTestEnvVariable.sh000755 000765 000024 00000000345 13663176127 023515 0ustar00basvoddestaff000000 000000 #!/bin/bash checkForCppUTestEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory" exit 2 fi } cpputest-4.0/scripts/CppUnitTemplates/000755 000765 000024 00000000000 13663444566 021127 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/NewClass.sh000755 000765 000024 00000000214 13663176127 017734 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassName cpp NoMock $1 $2 cpputest-4.0/scripts/NewCModule.sh000755 000765 000024 00000000213 13663176127 020216 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c NoMock $1 $2 cpputest-4.0/scripts/NewCBaseModule.sh000755 000765 000024 00000000213 13663176127 021011 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameC c NoMock $1 $2 cpputest-4.0/scripts/generate_junit_report_ant.xml000644 000765 000024 00000000237 13663176127 023645 0ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/NewCIoDriver.sh000755 000765 000024 00000000223 13663176127 020515 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh ClassNameCIoDriver c NoMock $1 $2 cpputest-4.0/scripts/NewProject.sh000644 000765 000024 00000002101 13663176127 020267 0ustar00basvoddestaff000000 000000 #!/bin/bash PROJECT_NAME=$1 CODE_LEGAL_PROJECT_NAME=$(echo $PROJECT_NAME | sed 's/-/_/g') TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates ORIGINAL_DIR=$(pwd) if [ -e ${PROJECT_NAME} ] ; then echo "The directory ${PROJECT_NAME} already exists" exit 1; fi echo "Copy template project" cp -R ${TEMPLATE_DIR}/ProjectTemplate ${PROJECT_NAME} find ${PROJECT_NAME} -name \.svn | xargs rm -rf cd ${PROJECT_NAME} ls changeProjectName() { echo Change Name $1/Project$2 to $3$2 sed "-e s/Project/$3/g" $1/Project$2 | tr -d "\r" >$1/$3$2 rm $1/Project$2 } changeProjectName . Makefile ${CODE_LEGAL_PROJECT_NAME} changeProjectName . .project ${PROJECT_NAME} changeProjectName src/util BuildTime.cpp ${CODE_LEGAL_PROJECT_NAME} changeProjectName include/util BuildTime.h ${CODE_LEGAL_PROJECT_NAME} changeProjectName tests/util BuildTimeTest.cpp ${CODE_LEGAL_PROJECT_NAME} mv ${CODE_LEGAL_PROJECT_NAME}Makefile Makefile mv ${PROJECT_NAME}.project .project mv Project.cproject .cproject cd ${ORIGINAL_DIR} echo "You might want to modify the path for CPPUTEST_HOME in the Makefile." cpputest-4.0/scripts/templates/000755 000765 000024 00000000000 13663444567 017665 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/README.txt000644 000765 000024 00000001670 13663176127 017363 0ustar00basvoddestaff000000 000000 The New*.sh scripts are helpful for creating the initial files for a new class... NewClass.sh - for TDDing a new C++ class NewInterface.sh - for TDDing a new interface along with its Mock NewCModule.sh - for TDDing a C module NewCmiModule.sh - for TDDing a C module where there will be multiple instances of the module's data structure Run InstallScripts.sh to 1) Copy the scripts to /usr/local/bin 2) Define symbolic links for each of the scripts Like this: ./scripts/InstallScripts.sh You might have to add the execute privilege to the shell scripts. Like this: chmod *.sh Using NewClass for example: cd to the directory where you want the files located NewClass SomeClass The script gets you ready for TDD and saves a lot of tedious typing Creates SomeClass.h SomeClass.cpp SomeClassTest.cpp with the class and test essentials in place (If the file already exists, no file is generated) These scripts are written in bash. cpputest-4.0/scripts/convertToUnity/000755 000765 000024 00000000000 13663444566 020702 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/NewCFunction.sh000755 000765 000024 00000000216 13663176127 020561 0ustar00basvoddestaff000000 000000 #!/bin/bash TEMPLATE_DIR=${CPPUTEST_HOME}/scripts/templates source ${CPPUTEST_HOME}/scripts/GenerateSrcFiles.sh FunctionNameC c NoMock $1 $2 cpputest-4.0/scripts/create_docker_images_and_containers000755 000765 000024 00000002306 13663176127 024776 0ustar00basvoddestaff000000 000000 #!/bin/bash #$1 is the container name checkForCppUTestToolsEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 2 fi } checkForImageNameParameter() { if [ -z "$container" ] ; then echo "Container name parameter not set. Check the docker directory. It should be the extension of the Dockerfile. e.g. ubuntu" exit 1 fi if [ ! -f "$CPPUTEST_HOME/docker/Dockerfile.$container" ] ; then echo "The Dockerfile docker/Dockerfile.$container doesn't exist. Typo?" exit 2 fi } container=$1 checkForCppUTestToolsEnvVariable checkForImageNameParameter docker build -f $CPPUTEST_HOME/docker/Dockerfile.$container --tag cpputest/$container:latest . docker container rm cpputest_$container docker create -it -v$CPPUTEST_HOME:/cpputest -e "CPPUTEST_HOME=/cpputest" --name cpputest_$container cpputest/$container:latest echo "You can run your container through: docker start -i cpputest_. E.g. docker start -i cpputest_$container" cpputest-4.0/scripts/VS2010Templates/000755 000765 000024 00000000000 13663444566 020400 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/NewHelp.sh000755 000765 000024 00000000510 13663176127 017556 0ustar00basvoddestaff000000 000000 #!/bin/bash NEW_SCRIPTS=" \ NewClass \ NewInterface \ NewCModule \ NewCmiModule \ NewCInterface \ NewCFunction" for file in $NEW_SCRIPTS ; do echo ${file} name package rm -f ${EXE_DIR}/${file} ln -s ${CPPUTEST_HOME}/scripts/${file}.sh ${EXE_DIR}/${file} chmod a+x ${EXE_DIR}/${file} done cpputest-4.0/scripts/filterGcov.sh000755 000765 000024 00000003037 13663176127 020327 0ustar00basvoddestaff000000 000000 #!/bin/bash INPUT_FILE=$1 TEMP_FILE1=${INPUT_FILE}1.tmp TEMP_FILE2=${INPUT_FILE}2.tmp TEMP_FILE3=${INPUT_FILE}3.tmp ERROR_FILE=$2 OUTPUT_FILE=$3 HTML_OUTPUT_FILE=$3.html TEST_RESULTS=$4 flattenGcovOutput() { while read line1 do read line2 echo $line2 " " $line1 read junk read junk done < ${INPUT_FILE} } getRidOfCruft() { sed '-e s/^Lines.*://g' \ '-e s/^[0-9]\./ &/g' \ '-e s/^[0-9][0-9]\./ &/g' \ '-e s/of.*File/ /g' \ "-e s/'//g" \ '-e s/^.*\/usr\/.*$//g' \ '-e s/^.*\.$//g' } flattenPaths() { sed \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/[^/][^/]*\/\.\.\/\.\.\//\//g' \ -e 's/\/[^/][^/]*\/\.\.\//\//g' } getFileNameRootFromErrorFile() { sed '-e s/gc..:cannot open .* file//g' ${ERROR_FILE} } writeEachNoTestCoverageFile() { while read line do echo " 0.00% " ${line} done } createHtmlOutput() { echo "" echo "" sed "-e s/.*% /
CoverageFile
&<\/td>/" \ "-e s/[a-zA-Z0-9_]*\.[ch][a-z]*/&<\/a><\/td><\/tr>/" echo "
" sed "-e s/.*/&
/g" < ${TEST_RESULTS} } flattenGcovOutput | getRidOfCruft | flattenPaths > ${TEMP_FILE1} getFileNameRootFromErrorFile | writeEachNoTestCoverageFile | flattenPaths > ${TEMP_FILE2} cat ${TEMP_FILE1} ${TEMP_FILE2} | sort | uniq > ${OUTPUT_FILE} createHtmlOutput < ${OUTPUT_FILE} > ${HTML_OUTPUT_FILE} rm -f ${TEMP_FILE1} ${TEMP_FILE2} cpputest-4.0/scripts/GenerateSrcFiles.sh000755 000765 000024 00000005326 13663176127 021413 0ustar00basvoddestaff000000 000000 #!/bin/bash -x #$1 is the template root file name #$2 is the kind of file to create (c or cpp) #$3 is Mock if a mock version should be created, Fake for a fake C version #$4 is the class/module name #$5 is the package name #Test for env var set. checkForCppUTestToolsEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 2 fi } checkForCppUTestToolsEnvVariable templateRootName=$1 srcSuffix=$2 mock=$3 className=$4 packageName=$5 testSuffix=Test #CPP_SOURCE_TEMPLATES can point to templates you write #identify the template files if [ "$CPP_SOURCE_TEMPLATES" == "" ] then TEMPLATE_DIR=$CPPUTEST_HOME/scripts/templates else TEMPLATE_DIR=$CPP_SOURCE_TEMPLATES fi templateHFile=$TEMPLATE_DIR/$templateRootName.h templateSrcFile=$TEMPLATE_DIR/$templateRootName.$srcSuffix if [ "$mock" == "Mock" ] ; then templateTestFile=$TEMPLATE_DIR/Interface$testSuffix.cpp elif [ "$mock" == "Fake" ] ; then templateTestFile=$TEMPLATE_DIR/InterfaceC$testSuffix.cpp else templateTestFile=$TEMPLATE_DIR/$templateRootName$testSuffix.cpp fi templateMockFile=$TEMPLATE_DIR/Mock$templateRootName.h #indentify the class and instance names instanceName=$(echo $className | cut -c1 | tr A-Z a-z)$(echo $className | cut -c 2-) className=$(echo $className | cut -c1 | tr a-z A-Z)$(echo $className | cut -c 2-) #if a package is specified, set the directories if [ ! "$packageName" == "" ] then srcDir=src/$packageName/ includeDir=include/$packageName/ testsDir=tests/$packageName/ fi #identify the files being created hFile=${includeDir}${className}.h srcFile=${srcDir}${className}.${srcSuffix} testFile=${testsDir}${className}${testSuffix}.cpp if [ "$mock" != "NoMock" ] ; then mockFile=${testsDir}${mock}${className}.h testFile=${testsDir}${mock}${className}${testSuffix}.cpp if [ "$srcSuffix" == "c" ] ; then srcFile=${testsDir}${mock}${className}.${srcSuffix} fi else mockFile= fi sedCommands="-e s/aClassName/$instanceName/g -e s/ClassName/$className/g" generateFileIfNotAlreadyThere() { if [ -e $2 ] then echo "${2} already exists, skipping" else echo "creating ${2}" sed $sedCommands $1 | tr -d "\r" >$2 fi } generateFileIfNotAlreadyThere $templateHFile $hFile generateFileIfNotAlreadyThere $templateSrcFile $srcFile generateFileIfNotAlreadyThere $templateTestFile $testFile if [ "$mock" != "NoMock" ] ; then generateFileIfNotAlreadyThere $templateMockFile $mockFile # sed $sedCommands $templateMockFile | tr -d "\r" >$mockFile fi cpputest-4.0/scripts/VS2010Templates/README.txt000644 000765 000024 00000000643 13663176127 022074 0ustar00basvoddestaff000000 000000 **Intro** The CppUTest_VS2010.props property sheet sets the needed compiler and linker options for your unit test project. **Instructions** 1) Create a system environment variable, CPPUTEST_HOME and set it to the path of your CppUTest distribution. 2) Add the CppUTest_VS2010.props property sheet to your unit test project and you are good to go. 3) See the WalkThrough_VS2010 guide in the docs section for details. cpputest-4.0/scripts/VS2010Templates/CppUTest_VS2010.props000644 000765 000024 00000004374 13663176127 024112 0ustar00basvoddestaff000000 000000  $(CPPUTEST_HOME)\include;$(CPPUTEST_HOME)\include\CppUTestExt\CppUTestGTest;$(CPPUTEST_HOME)\include\CppUTestExt\CppUTestGMock;$(CPPUTEST_HOME)\include\Platforms\VisualCpp $(CPPUTEST_HOME)\lib $(CPPUTEST_HOME)\include\Platforms\VisualCpp\Platform.h;$(CPPUTEST_HOME)\include\CppUTest\MemoryLeakDetectorMallocMacros.h; CppUTest.lib $(CPPUTEST_INCLUDE_PATHS);%(AdditionalIncludeDirectories) $(CPPUTEST_FORCED_INCLUDES);%(ForcedIncludeFiles) $(CPPUTEST_LIB_DEPENDENCIES);%(AdditionalDependencies) $(CPPUTEST_LIB_PATHS);%(AdditionalLibraryDirectories) $(TargetPath) $(CPPUTEST_HOME) true $(CPPUTEST_INCLUDE_PATHS) true $(CPPUTEST_LIB_PATHS) true $(CPPUTEST_FORCED_INCLUDES) true $(CPPUTEST_LIB_DEPENDENCIES) true cpputest-4.0/scripts/convertToUnity/cpp_u_test_to_unity.rb000755 000765 000024 00000001634 13663176127 025330 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] unity_filename = convert_test_filename_to_unity_filename(in_file) unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(in_file) puts "Converting :" + in_file + "\n" puts " To :" + unity_filename + "\n" test_lines = File.open(in_file).readlines out_unity_file = File.open(unity_filename, 'w') out_unity_runner_file = File.open(unity_runner_filename, 'w') test_groups = get_test_groups(test_lines) adjust_tabs(test_lines) remove_extern_c(test_lines) demote_group(/TEST_GROUP/, test_lines) convert_macros(test_lines, test_groups) group_runners = generate_group_runners(test_groups, test_lines) write_lines_to_file(out_unity_file, test_lines) write_lines_to_file(out_unity_runner_file, group_runners) out_unity_file.close() out_unity_runner_file.close() cpputest-4.0/scripts/convertToUnity/create_group_runner.rb000755 000765 000024 00000001233 13663176127 025274 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] create_group_runner_file(in_file) unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(in_file) puts "Creating test runner for :" + in_file + "\n" puts " Generating :" + unity_filename + "\n" test_lines = File.open(in_file).readlines out_unity_runner_file = File.open(unity_runner_filename, 'w') test_group = get_test_group(test_lines) group_runner = generate_group_runner(test_group, test_lines) write_lines_to_file(out_unity_runner_file, group_runner) out_unity_runner_file.close() cpputest-4.0/scripts/convertToUnity/cpp_u_test_to_unity_utils.rb000644 000765 000024 00000013715 13663176127 026550 0ustar00basvoddestaff000000 000000 module CppUTestToUnityUtils def convert_test_filename_to_unity_filename(testpath) testpath.sub(/tests\/(.*)\.cpp/, "unity/\\1.c") end def convert_test_filename_to_unity_testrunner_filename(testpath) testpath.sub(/tests\/(.*)\.cpp/, "unity/\\1_runner.c") end def convert_one_liners(line, group) line.sub!(/#include "CppUTest\/TestHarness.h\"/, "#include \"unity_fixture.h\"" ) line.sub!(/FAIL\(/, 'TEST_FAIL(') line.sub!(/CHECK\(/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_TRUE\(/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_FALSE\(/, "TEST_ASSERT_FALSE(") line.sub!(/LONGS_EQUAL\(/, "TEST_ASSERT_EQUAL(") line.sub!(/BYTES_EQUAL\(/, "TEST_ASSERT_EQUAL_HEX8(") line.sub!(/STRCMP_EQUAL\(/, "TEST_ASSERT_EQUAL_STRING(") line.sub!(/DOUBLES_EQUAL\(/, "TEST_ASSERT_FLOAT_WITHIN(") line.sub!(/ POINTERS_EQUAL\(/, " TEST_ASSERT_POINTERS_EQUAL(") line.sub!(/CHECK_EQUAL\(true,/, "TEST_ASSERT_TRUE(") line.sub!(/CHECK_EQUAL\(false,/, "TEST_ASSERT_FALSE(") line.sub!(/CHECK_EQUAL\(/, "TEST_ASSERT_EQUAL(") #line.sub!(/static void setup\(/, "TEST_SETUP(" + group) #line.sub!(/static void teardown\(/, "TEST_TEAR_DOWN(" + group) end def convert_setup(lines, group) lines.each do | line | if line.sub!(/static void setup\(/, "TEST_SETUP(" + group) return end end end def convert_teardown(lines, group) lines.each do | line | if line.sub!(/static void teardown\(/, "TEST_TEAR_DOWN(" + group) return end end end def convert_macros(lines, groups) groups.each do | group | lines.each do | line | convert_one_liners(line, group) end convert_setup(lines, group) convert_teardown(lines, group) end end def get_test_group(lines) @test_group = "None" lines.each do | line | if /TEST_GROUP/ =~ line @test_group = line.split(/[()]/)[1] end end @test_group end def get_test_groups(lines) @test_groups = [] i = 0 lines.each do | line | if /TEST_GROUP/ =~ line @test_groups[i] = line.split(/[()]/)[1] i = i + 1 end end @test_groups end def adjust_tabs(lines) lines.each do | line | line.gsub!(/^ {2,3}(\w+)/, " \\1") line.gsub!(/\t/, " ") end end def include_line?(line) /\#include/ =~ line end def convert_member_to_static(line) line.gsub!(/^\s*(\w)/, "static \\1") end def add_semicolon_to_end_of_test_group_line(line) line.gsub!(/\)/, ");") end def consume_closing_curley_brace(line) line.gsub!(/\}\;*[ \t]*(.*)/, "\\1") end def outdent(line) line.gsub!(/^ /, "") end def consume_opening_curley_brace(line) line.gsub!(/\{/, "") end def demote_group(group, lines) test_group = "None" scope_level = 0 in_test_group = false lines.each do | line | next if include_line?(line) if !in_test_group if line.match(group) add_semicolon_to_end_of_test_group_line(line) in_test_group = true end next end if line.include?("}") scope_level -= 1 elsif line.include?("{") scope_level += 1 end outdent(line) if scope_level == 1 convert_member_to_static(line) consume_opening_curley_brace(line) end if scope_level == 0 consume_closing_curley_brace(line) in_test_group = false end end end def search_and_destroy(pattern, lines) lines.each do | line | line.gsub!(pattern, "") end end def extern_c_line?(line) line.match(/extern \"C\"/) end def remove_extern_c(lines) in_extern_c = false; scope_level = 0 lines.each do | line | if !in_extern_c if extern_c_line?(line) in_extern_c = true line.gsub!(/extern \"C\"/, "") end next end # next if ! in_extern_c and ! extern_c_line?(line) # # in_extern_c = true if line.include?("{") scope_level += 1 elsif line.include?("}") scope_level -= 1 end if scope_level == 1 consume_opening_curley_brace(line) end if scope_level == 0 and line.include?("}") in_extern_c = false consume_closing_curley_brace(line) end end end def test_declaration?(line, group) /TEST\(#{group}/ =~ line end def generate_group_runner(group, lines) group_runner = [] group_runner << "/* Make sure you invoke RUN_TEST_GROUP(" + group + ") from unity main */\n\n" group_runner << "TEST_GROUP_RUNNER(" + group + ")\n" group_runner << "{\n" lines.each do | line | if test_declaration?(line, group) temp = line.clone temp.sub!(/\n/, "") temp.sub!(/^IGNORE_/, "") temp.sub!(/^TEST/, " RUN_TEST_CASE") group_runner << temp + ";\n" end end group_runner << "}\n\n" end def generate_group_runners(groups, lines) group_runners = [] group_runners << "/* Generated code, edit at your own risk */\n\n" group_runners << "#include \"unity_fixture.h\"\n\n" groups.each do | group | group_runners.concat generate_group_runner(group, lines) end group_runners end def generate_group_runner_plainUnity(group, lines) prototypes = [] callers = [] group_runner = [] lines.each do | line | if /void test.*\(.*\)/ =~ line temp = line.clone temp.sub!(/\n/, "") prototypes << temp + ";" temp.sub!(/void /, " ") temp.sub!(/\(void\)/, "()") callers << temp end end group_runner << "\n" group_runner << "//Generated code, edit at your own risk\n\n" group_runner << "\#include \"unity_fixture.h\"\n\n" group_runner << prototypes group_runner << "\n\nTEST_GROUP_RUNNER(" + group + ")\n" group_runner << "{\n" group_runner << callers group_runner << "}\n" end def write_lines_to_file(file, lines) lines.each do | line | file.write(line) end end endcpputest-4.0/scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb000755 000765 000024 00000025314 13663176127 027773 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils test_lines = Array.new expected_lines = Array.new def check(theTest, expected, actual) unless (expected == actual) puts theTest + " failed" puts "Actual:\n" show(actual) puts "unmatched lines" show(expected - actual) puts("Expected: " + expected.inspect) puts(" Actual: " + actual.inspect) end end #--------------------------------------------------- test_lines = [ "\n", "TEST_GROUP(mygroup)\n", "{\n", "}\n", "\n", "\n", "TEST_GROUP(yourgroup)\n", "{\n", "}\n", "\n" ] groups = get_test_groups(test_lines) unless /mygroup/ =~ groups[0] puts "Expected mygroup, but got #{groups[0]}" end unless /yourgroup/ =~ groups[1] puts "Expected yourgroup, but got #{groups[1]}" end #--------------------------------------------------- test_lines = ["\n", "TEST_GROUP(mygroup)\n", "{\n", " int xxxx;\n", " void yyyy()\n", " {\n", " int i = 0;\n", " }\n", "};\n", "\n", " void f()\n" ] expected_lines = ["\n", "TEST_GROUP(mygroup);\n", "\n", "static int xxxx;\n", "static void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "\n", "\n", " void f()\n" ] def show(lines) lines.each do | line | puts line end end demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------- test_lines = [ "\n", "TEST_GROUP(mygroup)\n", "{\n", "}\n", ";\n", "\n", "TEST_GROUP(yourgroup)\n", "{\n", "}\n", ";\n" ] expected_lines = [ "\n", "TEST_GROUP(mygroup);\n", "\n", "\n", ";\n", "\n", "TEST_GROUP(yourgroup);\n", "\n", "\n", ";\n" ] demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------- test_lines = ["\n", "TEST_GROUP(mygroup)\n", "{\n", " int xxxx;\n", " void yyyy()\n", " {\n", " int i = 0;\n", " }\n", "}; //End TEST_GROUP\n", "\n" ] expected_lines = ["\n", "TEST_GROUP(mygroup);\n", "\n", "static int xxxx;\n", "static void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "//End TEST_GROUP\n", "\n" ] demote_group(/TEST_GROUP/, test_lines) check("demote_group", expected_lines, test_lines) #--------------------------------------------------- test_lines = ["\n", "extern \"C\"\n", "{\n", "\#include \"heythere.h\"\n", "int xxxx;\n", "void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "}\n", "int foo()\n", "{\n", " int aaaa;\n", "}\n" ] expected_lines = ["\n", "\n", "\n", "\#include \"heythere.h\"\n", "int xxxx;\n", "void yyyy()\n", "{\n", " int i = 0;\n", "}\n", "\n", "int foo()\n", "{\n", " int aaaa;\n", "}\n" ] remove_extern_c(test_lines) check("remove_extern_c", expected_lines, test_lines) #--------------------------------------------------- test_lines = ["\n", "extern \"C\"\n", "{\n", "#include \"LightScheduler.h\"\n", "#include \"FakeLightController.h\"\n", "#include \"FakeTimeService.h\"\n", "#include \"FakeRandomMinute.h\"\n", "}\n", "#include \"CppUTest/TestHarness.h\"\n" ] expected_lines = ["\n", "\n", "\n", "#include \"LightScheduler.h\"\n", "#include \"FakeLightController.h\"\n", "#include \"FakeTimeService.h\"\n", "#include \"FakeRandomMinute.h\"\n", "\n", "#include \"CppUTest/TestHarness.h\"\n" ] remove_extern_c(test_lines) check("remove_extern_c", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "\n", "#include \"unity_fixture.h\" expected\n", "#include \"CppUTest\/TestHarness.h\"\n", "\n", "TEST_SETUP(theGroup) expected\n", "static void setup()\n", "{\n", " x = 1;\n", "}\n", "TEST_TEAR_DOWN(theGroup) expected\n", "static void teardown()\n", "{\n", " y = 0;\n", "}\n", "TEST(LedDriver, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " CHECK(0 == 0);\n", "\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " CHECK_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_FALSE(0 != 0); expected\n", " CHECK_FALSE(0 != 0);\n", "\n", " TEST_ASSERT_EQUAL(1,1); expected\n", " LONGS_EQUAL(1,1);\n", "\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab); expected\n", " BYTES_EQUAL(0xab,0xab);\n", "\n", " TEST_ASSERT_EQUAL(100,100); expected\n", " CHECK_EQUAL(100,100);\n", "\n", " TEST_ASSERT_TRUE(true); expected\n", " CHECK_EQUAL(true,true);\n", "\n", " TEST_ASSERT_FALSE(false); expected\n", " CHECK_EQUAL(false,false);\n", "\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\"); expected\n", " STRCMP_EQUAL(\"THIS\", \"THIS\");\n", "\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01); expected\n", " DOUBLES_EQUAL(1.0, 1.0, .01);\n", "\n", " TEST_ASSERT_POINTERS_EQUAL(this, this); expected\n", " POINTERS_EQUAL(this, this);\n", "}\n" ] expected_lines = [ "\n", "#include \"unity_fixture.h\" expected\n", "#include \"unity_fixture.h\"\n", "\n", "TEST_SETUP(theGroup) expected\n", "TEST_SETUP(theGroup)\n", "{\n", " x = 1;\n", "}\n", "TEST_TEAR_DOWN(theGroup) expected\n", "TEST_TEAR_DOWN(theGroup)\n", "{\n", " y = 0;\n", "}\n", "TEST(LedDriver, Create)\n", "{\n", " TEST_FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " TEST_ASSERT_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", " TEST_ASSERT_TRUE(0 == 0);\n", "\n", " TEST_ASSERT_FALSE(0 != 0); expected\n", " TEST_ASSERT_FALSE(0 != 0);\n", "\n", " TEST_ASSERT_EQUAL(1,1); expected\n", " TEST_ASSERT_EQUAL(1,1);\n", "\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab); expected\n", " TEST_ASSERT_EQUAL_HEX8(0xab,0xab);\n", "\n", " TEST_ASSERT_EQUAL(100,100); expected\n", " TEST_ASSERT_EQUAL(100,100);\n", "\n", " TEST_ASSERT_TRUE(true); expected\n", " TEST_ASSERT_TRUE(true);\n", "\n", " TEST_ASSERT_FALSE(false); expected\n", " TEST_ASSERT_FALSE(false);\n", "\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\"); expected\n", " TEST_ASSERT_EQUAL_STRING(\"THIS\", \"THIS\");\n", "\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01); expected\n", " TEST_ASSERT_FLOAT_WITHIN(1.0, 1.0, .01);\n", "\n", " TEST_ASSERT_POINTERS_EQUAL(this, this); expected\n", " TEST_ASSERT_POINTERS_EQUAL(this, this);\n", "}\n" ] convert_macros(test_lines, ["theGroup"]) check("convert_macros", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "TEST_SETUP(group1) expected\n", "static void setup()\n", "TEST_TEAR_DOWN(group1) expected\n", "static void teardown()\n", "TEST(group1, Create)\n", "IGNORE_TEST(group1, ignore)\n", "TEST_SETUP(group2) expected\n", "static void setup()\n", "TEST_TEAR_DOWN(group2) expected\n", "static void teardown()\n", "TEST(group2, Create)\n", "IGNORE_TEST(group2, ignore)\n" ] expected_lines = [ "TEST_SETUP(group1) expected\n", "TEST_SETUP(group1)\n", "TEST_TEAR_DOWN(group1) expected\n", "TEST_TEAR_DOWN(group1)\n", "TEST(group1, Create)\n", "IGNORE_TEST(group1, ignore)\n", "TEST_SETUP(group2) expected\n", "TEST_SETUP(group2)\n", "TEST_TEAR_DOWN(group2) expected\n", "TEST_TEAR_DOWN(group2)\n", "TEST(group2, Create)\n", "IGNORE_TEST(group2, ignore)\n", ] convert_macros(test_lines, ["group1", "group2"]) check("convert_macros", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ " aaaa expected\n", "\taaa\n", " bbbb expected\n", "\t\t\t\tbbbb\n", " int a3; expected\n", " int a3;\n", " int a4; expected\n", " int a4;\n" ] expected_lines = [ " aaaa expected\n", " aaa\n", " bbbb expected\n", " bbbb\n", " int a3; expected\n", " int a3;\n", " int a4; expected\n", " int a4;\n" ] adjust_tabs(test_lines) check("adjust_tabs", expected_lines, test_lines) #--------------------------------------------------- test_lines = [ "TEST(LedDriver, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "TEST(LedDriver, XXXXX)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "IGNORE_TEST(LedDriver, ignore)\n", "{\n", " TEST_ASSERT_TRUE(0 == 0); expected\n", "}\n" ] expected_group_runner = [ "/* Make sure you invoke RUN_TEST_GROUP(LedDriver) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriver)\n", "{\n", " RUN_TEST_CASE(LedDriver, Create);\n", " RUN_TEST_CASE(LedDriver, XXXXX);\n", " RUN_TEST_CASE(LedDriver, ignore);\n", "}\n\n" ] group_runner = generate_group_runner("LedDriver", test_lines) check("generate_group_runner", expected_group_runner, group_runner) #--------------------------------------------------- test_lines = [ "TEST(LedDriverGroup1, Create)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n", "TEST(LedDriverGroup2, XXXXX)\n", "{\n", " FAIL(\"Start here\");\n", "}\n", "\n" ] expected_group_runners = [ "/* Generated code, edit at your own risk */\n\n", "#include \"unity_fixture.h\"\n\n", "/* Make sure you invoke RUN_TEST_GROUP(LedDriverGroup1) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriverGroup1)\n", "{\n", " RUN_TEST_CASE(LedDriverGroup1, Create);\n", "}\n\n", "/* Make sure you invoke RUN_TEST_GROUP(LedDriverGroup2) from unity main */\n\n", "TEST_GROUP_RUNNER(LedDriverGroup2)\n", "{\n", " RUN_TEST_CASE(LedDriverGroup2, XXXXX);\n", "}\n\n" ] runners = generate_group_runners(["LedDriverGroup1", "LedDriverGroup2"], test_lines) check("generate_group_runners", expected_group_runners, runners) #--------------------------------------------------- test_filename = "prefix/tests/pooltable/EightballTest.cpp" expected_unity_filename = "prefix/unity/pooltable/EightballTest.c" unity_filename = convert_test_filename_to_unity_filename(test_filename) if expected_unity_filename != unity_filename puts("Failure in: convert_test_path_to_unity_path") puts("Expected: " + expected_unity_filename.inspect) puts(" Actual: " + unity_filename.inspect) end #--------------------------------------------------- test_filename = "tests/pool/table/EightballTest.cpp" expected_unity_runner_filename = "unity/pool/table/EightballTest_runner.c" unity_runner_filename = convert_test_filename_to_unity_testrunner_filename(test_filename) if expected_unity_runner_filename != unity_runner_filename puts("Failure in: convert_test_path_to_unity_path") puts("Expected: " + expected_unity_runner_filename.inspect) puts(" Actual: " + unity_runner_filename.inspect) end cpputest-4.0/scripts/convertToUnity/README.txt000644 000765 000024 00000001434 13663176127 022375 0ustar00basvoddestaff000000 000000 Convert CppUTest files to Unity test files ------------------------------------------ To convert a CppUTest test file to Unity, enter a command like this CONVERT=$CPPUTEST_HOME/scripts/convertToUnity/cpp_u_test_to_unity.rb ruby $CONVERT tests/some/dir/or/dirs/MyThink.cpp This will create two files like this unity/some/dir/or/dirs/MyThing.c unity/some/dir/or/dirs/MyThing_runner.c Things that need to be done manually once to your unity test environment: Create directory 'unity/some/dir/or/dirs' Adjust unity makefile to refer to the needed files Unity main needs to call RUN_TEST_GROUP(MyThing) Things not supported in converted test cases: CppUMock Hand built mocks that use CppUTest macros. Formatting conventions can cause the script to fail cpputest-4.0/scripts/convertToUnity/create_unity_test_runner.rb000755 000765 000024 00000000604 13663176127 026350 0ustar00basvoddestaff000000 000000 #!/usr/bin/env ruby require File.join(File.dirname(__FILE__), 'cpp_u_test_to_unity_utils.rb') include CppUTestToUnityUtils in_file = ARGV[0] test_lines = File.open(in_file).collect out_file = File.open(File.basename(in_file, ".c") + "_runner.c", 'w') group_runner = generate_group_runner_plainUnity("unity", test_lines) write_lines_to_file(out_file, group_runner) out_file.close() cpputest-4.0/scripts/templates/ClassNameC.c000644 000765 000024 00000000134 13663176127 021772 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-4.0/scripts/templates/ClassNameCTest.cpp000644 000765 000024 00000000415 13663176127 023174 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/ProjectTemplate/000755 000765 000024 00000000000 13663444567 022767 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/MockClassNameC.c000644 000765 000024 00000000134 13663176127 022604 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-4.0/scripts/templates/InterfaceCTest.cpp000644 000765 000024 00000000515 13663176127 023227 0ustar00basvoddestaff000000 000000 extern "C" { #include "FakeClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/FunctionNameC.h000644 000765 000024 00000000404 13663176127 022517 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ void ClassName(); #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameCMultipleInstance.h000644 000765 000024 00000000574 13663176127 025210 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************************** * * ClassName is responsible for ... * **********************************************************************/ typedef struct ClassNameStruct * ClassName; ClassName ClassName_Create(void); void ClassName_Destroy(ClassName); #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameCIoDriverTest.cpp000644 000765 000024 00000000550 13663176127 024640 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" #include "MockIO.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { Reset_Mock_IO(); ClassName_Create(); } void teardown() { ClassName_Destroy(); Assert_No_Unused_Expectations(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/ClassNameCIoDriver.h000644 000765 000024 00000000501 13663176127 023441 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ #include void ClassName_Create(void); void ClassName_Destroy(void); #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameCPolymorphic.c000644 000765 000024 00000000535 13663176127 024225 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include typedef struct ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-4.0/scripts/templates/FunctionNameCTest.cpp000644 000765 000024 00000000327 13663176127 023716 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { } void teardown() { } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/MockClassNameC.h000644 000765 000024 00000000470 13663176127 022614 0ustar00basvoddestaff000000 000000 #ifndef D_FakeClassName_H #define D_FakeClassName_H /********************************************************** * * FakeClassName is responsible for providing a * test stub for ClassName * **********************************************************/ #include "ClassName.h" #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameC.h000644 000765 000024 00000000455 13663176127 022005 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ void ClassName_Create(void); void ClassName_Destroy(void); #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameCMultipleInstance.c000644 000765 000024 00000000520 13663176127 025172 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include typedef struct ClassNameStruct { int placeHolderForHiddenStructElements; } ClassNameStruct; ClassName ClassName_Create(void) { ClassName self = calloc(1, sizeof(ClassNameStruct)); return self; } void ClassName_Destroy(ClassName self) { free(self); } cpputest-4.0/scripts/templates/FunctionNameC.c000644 000765 000024 00000000055 13663176127 022514 0ustar00basvoddestaff000000 000000 #include "ClassName.h" void ClassName() { } cpputest-4.0/scripts/templates/ClassNameTest.cpp000644 000765 000024 00000000513 13663176127 023070 0ustar00basvoddestaff000000 000000 #include "ClassName.h" //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName* aClassName; void setup() { aClassName = new ClassName(); } void teardown() { delete aClassName; } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/ClassName.cpp000644 000765 000024 00000000121 13663176127 022223 0ustar00basvoddestaff000000 000000 #include "ClassName.h" ClassName::ClassName() { } ClassName::~ClassName() { } cpputest-4.0/scripts/templates/InterfaceTest.cpp000644 000765 000024 00000000557 13663176127 023132 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include "MockClassName.h" #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName* aClassName; MockClassName* mockClassName; void setup() { mockClassName = new MockClassName(); aClassName = mockClassName; } void teardown() { delete aClassName; } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000000504 13663176127 026374 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName aClassName; void setup() { aClassName = ClassName_Create(); } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/templates/ClassNameCPolymorphic.h000644 000765 000024 00000000623 13663176127 024230 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /********************************************************** * * ClassName is responsible for ... * **********************************************************/ typedef struct ClassName ClassNamePiml; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif /* D_FakeClassName_H */ cpputest-4.0/scripts/templates/ClassNameCIoDriver.c000644 000765 000024 00000000154 13663176127 023440 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include "IO.h" void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-4.0/scripts/templates/ClassName.h000644 000765 000024 00000000705 13663176127 021700 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class ClassName { public: explicit ClassName(); virtual ~ClassName(); private: ClassName(const ClassName&); ClassName& operator=(const ClassName&); }; #endif // D_ClassName_H cpputest-4.0/scripts/templates/MockClassName.h000644 000765 000024 00000001137 13663176127 022512 0ustar00basvoddestaff000000 000000 #ifndef D_MockClassName_H #define D_MockClassName_H /////////////////////////////////////////////////////////////////////////////// // // MockClassName.h // // MockClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" class MockClassName : public ClassName { public: explicit MockClassName() {} virtual ~MockClassName() {} private: MockClassName(const MockClassName&); MockClassName& operator=(const MockClassName&); }; #endif // D_MockClassName_H cpputest-4.0/scripts/templates/ProjectTemplate/ProjectMakefile000644 000765 000024 00000001362 13663176127 025752 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = Project #Set this to @ to keep the makefile quiet SILENCE = @ #--- Inputs ----# PROJECT_HOME_DIR = . ifeq "$(CPPUTEST_HOME)" "" CPPUTEST_HOME = ../CppUTest endif CPP_PLATFORM = Gcc SRC_DIRS = \ src\ src/* # to pick specific files (rather than directories) use this: SRC_FILES = TEST_SRC_DIRS = \ tests \ tests/* MOCKS_SRC_DIRS = \ mocks \ INCLUDE_DIRS =\ .\ include \ include/* \ $(CPPUTEST_HOME)/include/ \ $(CPPUTEST_HOME)/include/Platforms/Gcc\ mocks CPPUTEST_WARNINGFLAGS = -Wall -Werror -Wswitch-default CPPUTEST_WARNINGFLAGS += -Wconversion -Wswitch-enum include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-4.0/scripts/templates/ProjectTemplate/include/000755 000765 000024 00000000000 13663444566 024411 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/tests/000755 000765 000024 00000000000 13663444567 024131 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/Project.cproject000644 000765 000024 00000043413 13663176127 026127 0ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/Project.project000644 000765 000024 00000004303 13663176127 025757 0ustar00basvoddestaff000000 000000 Project org.eclipse.cdt.managedbuilder.core.genmakebuilder ?name? org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.autoBuildTarget all org.eclipse.cdt.make.core.buildArguments org.eclipse.cdt.make.core.buildCommand make org.eclipse.cdt.make.core.cleanBuildTarget clean org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.fullBuildTarget all org.eclipse.cdt.make.core.stopOnError true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-4.0/scripts/templates/ProjectTemplate/src/000755 000765 000024 00000000000 13663444566 023555 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/src/util/000755 000765 000024 00000000000 13663444567 024533 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp000644 000765 000024 00000000334 13663176127 030436 0ustar00basvoddestaff000000 000000 #include "ProjectBuildTime.h" ProjectBuildTime::ProjectBuildTime() : dateTime(__DATE__ " " __TIME__) { } ProjectBuildTime::~ProjectBuildTime() { } const char* ProjectBuildTime::GetDateTime() { return dateTime; } cpputest-4.0/scripts/templates/ProjectTemplate/tests/util/000755 000765 000024 00000000000 13663444567 025106 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/tests/AllTests.cpp000644 000765 000024 00000000206 13663176127 026360 0ustar00basvoddestaff000000 000000 #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-4.0/scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp000644 000765 000024 00000000533 13663176127 031652 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "ProjectBuildTime.h" TEST_GROUP(ProjectBuildTime) { ProjectBuildTime* projectBuildTime; void setup() { projectBuildTime = new ProjectBuildTime(); } void teardown() { delete projectBuildTime; } }; TEST(ProjectBuildTime, Create) { CHECK(0 != projectBuildTime->GetDateTime()); } cpputest-4.0/scripts/templates/ProjectTemplate/include/util/000755 000765 000024 00000000000 13663444567 025367 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h000644 000765 000024 00000001223 13663176127 030735 0ustar00basvoddestaff000000 000000 #ifndef D_ProjectBuildTime_H #define D_ProjectBuildTime_H /////////////////////////////////////////////////////////////////////////////// // // ProjectBuildTime is responsible for recording and reporting when // this project library was built // /////////////////////////////////////////////////////////////////////////////// class ProjectBuildTime { public: explicit ProjectBuildTime(); virtual ~ProjectBuildTime(); const char* GetDateTime(); private: const char* dateTime; ProjectBuildTime(const ProjectBuildTime&); ProjectBuildTime& operator=(const ProjectBuildTime&); }; #endif // D_ProjectBuildTime_H cpputest-4.0/scripts/CppUnitTemplates/ClassNameC.c000644 000765 000024 00000000237 13663176127 023241 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-4.0/scripts/CppUnitTemplates/ClassNameCTest.cpp000644 000765 000024 00000000421 13663176127 024434 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" extern "C" { #include "ClassName.h" } TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/000755 000765 000024 00000000000 13663444566 024231 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/MockClassNameC.c000644 000765 000024 00000000237 13663176127 024053 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables void ClassName_Create(void) { } void ClassName_Destroy(void) { } cpputest-4.0/scripts/CppUnitTemplates/InterfaceCTest.cpp000644 000765 000024 00000000430 13663176127 024466 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" extern "C" { #include "FakeClassName.h" } TEST_GROUP(FakeClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(FakeClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/CppUnitTemplates/ClassNameCMultipleInstance.h000644 000765 000024 00000000661 13663176127 026450 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// typedef struct _ClassName Classname; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif // D_ClassName_H cpputest-4.0/scripts/CppUnitTemplates/ClassNameCPolymorphic.c000644 000765 000024 00000000567 13663176127 025475 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables typedef struct _ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-4.0/scripts/CppUnitTemplates/MockClassNameC.h000644 000765 000024 00000000560 13663176127 024057 0ustar00basvoddestaff000000 000000 #ifndef D_FakeClassName_H #define D_FakeClassName_H /////////////////////////////////////////////////////////////////////////////// // // FakeClassName.h // // FakeClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" #endif // D_FakeClassName_H cpputest-4.0/scripts/CppUnitTemplates/ClassNameC.h000644 000765 000024 00000000515 13663176127 023245 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// void ClassName_Create(void); void ClassName_Destroy(void); #endif // D_ClassName_H cpputest-4.0/scripts/CppUnitTemplates/ClassNameCMultipleInstance.c000644 000765 000024 00000000567 13663176127 026450 0ustar00basvoddestaff000000 000000 #include "ClassName.h" #include #include //static local variables typedef struct _ClassName { int placeHolderForHiddenStructElements; }; ClassName* ClassName_Create(void) { ClassName* self = malloc(sizeof(ClassName)); memset(self, 0, sizeof(ClassName)); return self; } void ClassName_Destroy(ClassName* self) { free(self); } cpputest-4.0/scripts/CppUnitTemplates/ClassNameTest.cpp000644 000765 000024 00000001011 13663176127 024325 0ustar00basvoddestaff000000 000000 #include #include #include "ClassName.h" class ClassNameTest: public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(ClassNameTest); CPPUNIT_TEST(testCreate); CPPUNIT_TEST_SUITE_END(); ClassName* aClassName; public: void setUp() { aClassName = new ClassName(); } void tearDown() { delete aClassName; } void testCreate() { CPPUNIT_FAIL("Start here"); } }; CPPUNIT_TEST_SUITE_REGISTRATION(ClassNameTest); cpputest-4.0/scripts/CppUnitTemplates/ClassName.cpp000644 000765 000024 00000000121 13663176127 023466 0ustar00basvoddestaff000000 000000 #include "ClassName.h" ClassName::ClassName() { } ClassName::~ClassName() { } cpputest-4.0/scripts/CppUnitTemplates/InterfaceTest.cpp000644 000765 000024 00000001233 13663176127 024365 0ustar00basvoddestaff000000 000000 #include #include #include "ClassName.h" #include "MockClassName.h" class MockClassNameTest: public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(MockClassNameTest); CPPUNIT_TEST(testCreate); CPPUNIT_TEST_SUITE_END(); ClassName* aClassName; MockClassName* mockClassName; public: void setUp() { mockClassName = new MockClassName(); aClassName = mockClassName; } void tearDown() { delete aClassName; } void testCreate() { CPPUNIT_FAIL("Start here"); } }; CPPUNIT_TEST_SUITE_REGISTRATION(MockClassNameTest); cpputest-4.0/scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000001206 13663176127 027637 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" static int fakeRan = 0; extern "C" { #include "ClassName.h" void virtualFunction_renameThis_fake(ClassName*) { fakeRan = 1; } } TEST_GROUP(ClassName) { ClassName* aClassName; void setup() { aClassName = ClassName_Create(); fakeRan = 0; aClassName->virtualFunction_renameThis = virtualFunction_renameThis_fake; } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Fake) { aClassName->virtualFunction_renameThis(aClassName); LONGS_EQUAL(1, fakeRan); } TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/CppUnitTemplates/ClassNameCPolymorphic.h000644 000765 000024 00000000667 13663176127 025503 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// typedef struct _ClassName ClassnamePiml; ClassName* ClassName_Create(void); void ClassName_Destroy(ClassName*); void ClassName_VirtualFunction_impl(ClassName*); #endif // D_ClassName_H cpputest-4.0/scripts/CppUnitTemplates/ClassName.h000644 000765 000024 00000000705 13663176127 023143 0ustar00basvoddestaff000000 000000 #ifndef D_ClassName_H #define D_ClassName_H /////////////////////////////////////////////////////////////////////////////// // // ClassName is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class ClassName { public: explicit ClassName(); virtual ~ClassName(); private: ClassName(const ClassName&); ClassName& operator=(const ClassName&); }; #endif // D_ClassName_H cpputest-4.0/scripts/CppUnitTemplates/MockClassName.h000644 000765 000024 00000001137 13663176127 023755 0ustar00basvoddestaff000000 000000 #ifndef D_MockClassName_H #define D_MockClassName_H /////////////////////////////////////////////////////////////////////////////// // // MockClassName.h // // MockClassName is responsible for providing a test stub for ClassName // /////////////////////////////////////////////////////////////////////////////// #include "ClassName.h" class MockClassName : public ClassName { public: explicit MockClassName() {} virtual ~MockClassName() {} private: MockClassName(const MockClassName&); MockClassName& operator=(const MockClassName&); }; #endif // D_MockClassName_H cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile000644 000765 000024 00000002407 13663176127 027216 0ustar00basvoddestaff000000 000000 #Set this to @ to keep the makefile quiet SILENCE = @ #---- Outputs ----# COMPONENT_NAME = Project TARGET_LIB = \ lib/lib$(COMPONENT_NAME).a TEST_TARGET = \ $(COMPONENT_NAME)_tests #--- Inputs ----# PROJECT_HOME_DIR = . CPPUTEST_HOME = ../CppUTest CPPUNIT_HOME = ../cppunit CPP_PLATFORM = Gcc #CFLAGS are set to override malloc and free to get memory leak detection in C programs CFLAGS = -Dmalloc=cpputest_malloc -Dfree=cpputest_free CPPFLAGS = #GCOVFLAGS = -fprofile-arcs -ftest-coverage #SRC_DIRS is a list of source directories that make up the target library #If test files are in these directories, their IMPORT_TEST_GROUPs need #to be included in main to force them to be linked in. By convention #put them into an AllTests.h file in each directory SRC_DIRS = \ src/util #TEST_SRC_DIRS is a list of directories including # - A test main (AllTests.cpp by convention) # - OBJ files in these directories are included in the TEST_TARGET # - Consequently - AllTests.h containing the IMPORT_TEST_GROUPS is not needed # - TEST_SRC_DIRS = \ tests \ tests/util #includes for all compiles INCLUDES =\ -I.\ -Iinclude/util\ -I$(CPPUTEST_HOME)/include/ #Flags to pass to ld LDFLAGS += $(CPPUNIT_HOME)/lib/libcppunit.a include $(CPPUTEST_HOME)/build/ComponentMakefile cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/include/000755 000765 000024 00000000000 13663444566 025654 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/tests/000755 000765 000024 00000000000 13663444566 025373 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/src/000755 000765 000024 00000000000 13663444566 025020 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/src/util/000755 000765 000024 00000000000 13663444566 025775 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp000644 000765 000024 00000000334 13663176127 031701 0ustar00basvoddestaff000000 000000 #include "ProjectBuildTime.h" ProjectBuildTime::ProjectBuildTime() : dateTime(__DATE__ " " __TIME__) { } ProjectBuildTime::~ProjectBuildTime() { } const char* ProjectBuildTime::GetDateTime() { return dateTime; } cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/tests/util/000755 000765 000024 00000000000 13663444566 026350 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp000644 000765 000024 00000000206 13663176127 027623 0ustar00basvoddestaff000000 000000 #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp000644 000765 000024 00000000533 13663176127 033115 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "ProjectBuildTime.h" TEST_GROUP(ProjectBuildTime) { ProjectBuildTime* projectBuildTime; void setup() { projectBuildTime = new ProjectBuildTime(); } void teardown() { delete projectBuildTime; } }; TEST(ProjectBuildTime, Create) { CHECK(0 != projectBuildTime->GetDateTime()); } cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/include/util/000755 000765 000024 00000000000 13663444566 026631 5ustar00basvoddestaff000000 000000 cpputest-4.0/scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h000644 000765 000024 00000001223 13663176127 032200 0ustar00basvoddestaff000000 000000 #ifndef D_ProjectBuildTime_H #define D_ProjectBuildTime_H /////////////////////////////////////////////////////////////////////////////// // // ProjectBuildTime is responsible for recording and reporting when // this project library was built // /////////////////////////////////////////////////////////////////////////////// class ProjectBuildTime { public: explicit ProjectBuildTime(); virtual ~ProjectBuildTime(); const char* GetDateTime(); private: const char* dateTime; ProjectBuildTime(const ProjectBuildTime&); ProjectBuildTime& operator=(const ProjectBuildTime&); }; #endif // D_ProjectBuildTime_H cpputest-4.0/scripts/UnityTemplates/ClassNameCTest.cpp000644 000765 000024 00000000512 13663176127 024163 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/UnityTemplates/InterfaceCTest.cpp000644 000765 000024 00000000515 13663176127 024220 0ustar00basvoddestaff000000 000000 extern "C" { #include "FakeClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { ClassName_Create(); } void teardown() { ClassName_Destroy(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/UnityTemplates/ClassNameCIoDriverTest.cpp000644 000765 000024 00000000645 13663176127 025636 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" #include "MockIO.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { Reset_Mock_IO(); ClassName_Create(); } void teardown() { ClassName_Destroy(); Assert_No_Unused_Expectations(); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/UnityTemplates/FunctionNameCTest.cpp000644 000765 000024 00000000424 13663176127 024705 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { void setup() { } void teardown() { } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp000644 000765 000024 00000000574 13663176127 027374 0ustar00basvoddestaff000000 000000 extern "C" { #include "ClassName.h" } //CppUTest includes should be after your and system includes #include "CppUTest/TestHarness.h" TEST_GROUP(ClassName) { ClassName aClassName; void setup() { aClassName = ClassName_Create(); } void teardown() { ClassName_Destroy(aClassName); } }; TEST(ClassName, Create) { FAIL("Start here"); } cpputest-4.0/examples/CMakeLists.txt000644 000765 000024 00000000074 13663176127 020551 0ustar00basvoddestaff000000 000000 add_subdirectory(AllTests) add_subdirectory(ApplicationLib) cpputest-4.0/examples/.cdtproject000644 000765 000024 00000004203 13663176127 020151 0ustar00basvoddestaff000000 000000 cpputest-4.0/examples/Makefile000644 000765 000024 00000001314 13663176127 017447 0ustar00basvoddestaff000000 000000 #--------- # # CppUTest Examples Makefile # #---------- #Set this to @ to keep the makefile quiet ifndef SILENCE SILENCE = @ endif #--- Inputs ----# COMPONENT_NAME = CppUTestExamples CPPUTEST_HOME = .. CPPUTEST_USE_EXTENSIONS = Y CPP_PLATFORM = Gcc # This line is overriding the default new macros. This is helpful # when using std library includes like and other containers # so that memory leak detection does not conflict with stl. CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include ApplicationLib/ExamplesNewOverrides.h SRC_DIRS = \ ApplicationLib TEST_SRC_DIRS = \ AllTests INCLUDE_DIRS =\ .\ ApplicationLib\ $(CPPUTEST_HOME)/include\ include $(CPPUTEST_HOME)/build/MakefileWorker.mk cpputest-4.0/examples/AllTests/000755 000765 000024 00000000000 13663444566 017550 5ustar00basvoddestaff000000 000000 cpputest-4.0/examples/ApplicationLib/000755 000765 000024 00000000000 13663444566 020707 5ustar00basvoddestaff000000 000000 cpputest-4.0/examples/CppUTestExample_VS201x.sln000644 000765 000024 00000002534 13663176127 022600 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "AllTests\AllTests.vcxproj", "{95A5F8D0-12C0-4AC1-B46B-292DD3886108}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApplicationLib", "ApplicationLib\ApplicationLib.vcxproj", "{348076B9-303C-4FE0-9380-17CDF11134A9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.ActiveCfg = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.Build.0 = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.ActiveCfg = Release|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.Build.0 = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.ActiveCfg = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.Build.0 = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.ActiveCfg = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-4.0/examples/CppUTestExample_VS2008.sln000644 000765 000024 00000002772 13663176127 022503 0ustar00basvoddestaff000000 000000  Microsoft Visual Studio Solution File, Format Version 10.00 # Visual C++ Express 2008 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AllTests", "AllTests\AllTests.vcproj", "{95A5F8D0-12C0-4AC1-B46B-292DD3886108}" ProjectSection(ProjectDependencies) = postProject {348076B9-303C-4FE0-9380-17CDF11134A9} = {348076B9-303C-4FE0-9380-17CDF11134A9} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ApplicationLib", "ApplicationLib\ApplicationLib.vcproj", "{348076B9-303C-4FE0-9380-17CDF11134A9}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Win32 = Debug|Win32 Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.ActiveCfg = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Debug|Win32.Build.0 = Debug|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.ActiveCfg = Release|Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108}.Release|Win32.Build.0 = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.ActiveCfg = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Debug|Win32.Build.0 = Debug|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.ActiveCfg = Release|Win32 {348076B9-303C-4FE0-9380-17CDF11134A9}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal cpputest-4.0/examples/.settings/000755 000765 000024 00000000000 13663444566 017733 5ustar00basvoddestaff000000 000000 cpputest-4.0/examples/.project000644 000765 000024 00000005077 13663176127 017470 0ustar00basvoddestaff000000 000000 CppUTestExample org.eclipse.cdt.make.core.makeBuilder org.eclipse.cdt.make.core.build.arguments org.eclipse.cdt.core.errorOutputParser org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;org.eclipse.cdt.core.GASErrorParser;org.eclipse.cdt.core.GLDErrorParser;org.eclipse.cdt.core.VCErrorParser; org.eclipse.cdt.make.core.environment org.eclipse.cdt.make.core.enableAutoBuild true org.eclipse.cdt.make.core.build.target.inc all org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.enabledIncrementalBuild true org.eclipse.cdt.make.core.build.location org.eclipse.cdt.make.core.build.command make org.eclipse.cdt.make.core.build.target.clean clean depend org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.useDefaultBuildCmd true org.eclipse.cdt.make.core.build.target.auto all org.eclipse.cdt.make.core.stopOnError false org.eclipse.cdt.make.core.ScannerConfigBuilder org.eclipse.cdt.core.cnature org.eclipse.cdt.make.core.makeNature org.eclipse.cdt.make.core.ScannerConfigNature org.eclipse.cdt.core.ccnature cpputest-4.0/examples/README.txt000644 000765 000024 00000000160 13663176127 017503 0ustar00basvoddestaff000000 000000 To build the examples for gcc: make clean all test gcov for MS Studio: The workspace files may be out of date.cpputest-4.0/examples/Makefile_ExamplesWithCppUTestInstalled.mk000644 000765 000024 00000001206 13663176127 026037 0ustar00basvoddestaff000000 000000 CPPFLAGS += -I /usr/local/include LD_LIBRARIES = -L/usr/local/lib -lCppUTest -lCppUTestExt VPATH = ApplicationLib AllTests APPLIB_OBJECTS = CircularBuffer.o EventDispatcher.o hello.o Printer.o TEST_OBJECTS = AllTests.o CircularBufferTest.o EventDispatcherTest.o FEDemoTest.o HelloTest.o MockDocumentationTest.o PrinterTest.o CPPFLAGS += -I ApplicationLib TEST_TARGET = CppUTestExamples APPLIB = applicationLib.a $(TEST_TARGET): $(TEST_OBJECTS) applicationLib.a $(CXX) -o $@ $^ $(LD_LIBRARIES) $(LDFLAGS) ./$(TEST_TARGET) $(APPLIB): $(APPLIB_OBJECTS) $(AR) $(ARFLAGS) $@ $^ clean: rm -f -rf *.o rm -f $(TEST_TARGET) rm -f $(APPLIB) cpputest-4.0/examples/.settings/org.eclipse.cdt.core.prefs000644 000765 000024 00000000147 13663176127 024703 0ustar00basvoddestaff000000 000000 #Thu Apr 19 15:52:43 CDT 2007 eclipse.preferences.version=1 indexerId=org.eclipse.cdt.core.fastIndexer cpputest-4.0/examples/ApplicationLib/Printer.h000644 000765 000024 00000004211 13663176127 022474 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_Printer_H #define D_Printer_H /////////////////////////////////////////////////////////////////////////////// // // Printer is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class Printer { public: explicit Printer(); virtual ~Printer(); virtual void Print(const char*); virtual void Print(long int); private: Printer(const Printer&); Printer& operator=(const Printer&); }; Printer& operator<<(Printer&, const char*); Printer& operator<<(Printer&, long int); #endif // D_Printer_H cpputest-4.0/examples/ApplicationLib/hello.c000644 000765 000024 00000003335 13663176127 022155 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "hello.h" void printHelloWorld() { PrintFormated("Hello World!\n"); } int (*PrintFormated)(const char*, ...) = printf; cpputest-4.0/examples/ApplicationLib/CMakeLists.txt000644 000765 000024 00000000150 13663176127 023436 0ustar00basvoddestaff000000 000000 add_library(ApplicationLib CircularBuffer.cpp EventDispatcher.cpp hello.c Printer.cpp ) cpputest-4.0/examples/ApplicationLib/Printer.cpp000644 000765 000024 00000003730 13663176127 023034 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "Printer.h" #include Printer::Printer() { } Printer::~Printer() { } void Printer::Print(const char* s) { for (const char* p = s; *p; p++) putchar(*p); } void Printer::Print(long int n) { printf("%ld", n); } Printer& operator<<(Printer& p, const char* s) { p.Print(s); return p; } Printer& operator<<(Printer& p, long int i) { p.Print(i); return p; } cpputest-4.0/examples/ApplicationLib/CircularBuffer.h000644 000765 000024 00000004620 13663176127 023753 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CircularBuffer_H #define D_CircularBuffer_H /////////////////////////////////////////////////////////////////////////////// // // CircularBuffer.h // // CircularBuffer is responsible for ... // /////////////////////////////////////////////////////////////////////////////// class Printer; class CircularBuffer { public: explicit CircularBuffer(int capacity = CAPACITY); virtual ~CircularBuffer(); void Put(int); int Get(); bool IsEmpty(); bool IsFull(); int Capacity(); int Next(int i); void Print(Printer*); private: int index; int outdex; int* buffer; int capacity; enum { CAPACITY = 5 }; bool empty; bool full; CircularBuffer(const CircularBuffer&); CircularBuffer& operator=(const CircularBuffer&); }; #endif // D_CircularBuffer_H cpputest-4.0/examples/ApplicationLib/ExamplesNewOverrides.h000644 000765 000024 00000003206 13663176127 025167 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include #include "CppUTest/MemoryLeakDetectorNewMacros.h" cpputest-4.0/examples/ApplicationLib/ApplicationLib.vcproj000644 000765 000024 00000013727 13663176127 025033 0ustar00basvoddestaff000000 000000 cpputest-4.0/examples/ApplicationLib/CircularBuffer.cpp000644 000765 000024 00000005630 13663176127 024310 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CircularBuffer.h" #include "Printer.h" #include CircularBuffer::CircularBuffer(int _capacity) : index(0), outdex(0), capacity(_capacity), empty(true), full(false) { buffer = new int[(size_t) this->capacity]; } CircularBuffer::~CircularBuffer() { delete[] buffer; } bool CircularBuffer::IsEmpty() { return empty; } bool CircularBuffer::IsFull() { return full; } void CircularBuffer::Put(int i) { empty = false; buffer[index] = i; index = Next(index); if (full) outdex = Next(outdex); else if (index == outdex) full = true; } int CircularBuffer::Get() { int result = -1; full = false; if (!empty) { result = buffer[outdex]; outdex = Next(outdex); if (outdex == index) empty = true; } return result; } int CircularBuffer::Capacity() { return capacity; } int CircularBuffer::Next(int i) { if (++i >= capacity) i = 0; return i; } void CircularBuffer::Print(Printer* p) { p->Print("Circular buffer content:\n<"); int printIndex = outdex; int count = index - outdex; if (!empty && (index <= outdex)) count = capacity - (outdex - index); for (int i = 0; i < count; i++) { p->Print(buffer[printIndex]); printIndex = Next(printIndex); if (i + 1 != count) p->Print(", "); } p->Print(">\n"); } cpputest-4.0/examples/ApplicationLib/EventDispatcher.cpp000644 000765 000024 00000004374 13663176127 024506 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "EventDispatcher.h" using namespace std; EventDispatcher::EventDispatcher() { } void EventDispatcher::registerObserver(EventType type, EventObserver* observer) { for (list >::iterator i = observerList_.begin(); i != observerList_.end(); i++) i->second->notifyRegistration(observer); observerList_.push_back(make_pair(type, observer)); } void EventDispatcher::dispatchEvent(const Event& event, int timeoutSeconds) { for (list >::iterator i = observerList_.begin(); i != observerList_.end(); i++) { if (i->first == event.type) i->second->notify(event, timeoutSeconds); } } cpputest-4.0/examples/ApplicationLib/hello.h000644 000765 000024 00000003424 13663176127 022161 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef HELLO_H_ #define HELLO_H_ #ifdef __cplusplus extern "C" { #endif extern void printHelloWorld(void); extern int (*PrintFormated)(const char*, ...); #ifdef __cplusplus } #endif #endif /*HELLO_H_*/ cpputest-4.0/examples/ApplicationLib/EventDispatcher.h000644 000765 000024 00000004322 13663176127 024144 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef EVENTDISPATCHER__H #define EVENTDISPATCHER__H #include enum EventType { IMPORTANT_EVENT, LESS_IMPORTANT_EVENT }; class Event { public: EventType type; }; class EventObserver { public: virtual void notify(const Event& event, int timeOutInSeconds)=0; virtual void notifyRegistration(EventObserver* newObserver)=0; virtual ~EventObserver() {} }; class EventDispatcher { std::list > observerList_; public: EventDispatcher(); void registerObserver(EventType type, EventObserver* observer); void dispatchEvent(const Event& event, int timeoutSeconds); }; #endif cpputest-4.0/examples/ApplicationLib/ApplicationLib.vcxproj000644 000765 000024 00000017463 13663176127 025224 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {348076B9-303C-4FE0-9380-17CDF11134A9} StaticLibrary false MultiByte StaticLibrary false MultiByte <_ProjectFileVersion>10.0.30319.1 .\Debug\ .\Debug\ $(Configuration)\ $(Configuration)\ Disabled ../../include;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL .\Debug/ApplicationLib.pch .\Debug/ .\Debug/ .\Debug/ Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 .\Debug\ApplicationLib.lib true true ./$(Configuration)/ApplicationLib.bsc MaxSpeed ../../include;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) Default MultiThreadedDLL ./$(Configuration)/ApplicationLib.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ Level3 true NDEBUG;%(PreprocessorDefinitions) 0x0409 ./$(Configuration)/ApplicationLib.lib true true ./$(Configuration)/ApplicationLib.bsc %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) %(AdditionalIncludeDirectories) %(PreprocessorDefinitions) cpputest-4.0/examples/AllTests/MockPrinter.h000644 000765 000024 00000005076 13663176127 022161 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockPrinter_H #define D_MockPrinter_H /////////////////////////////////////////////////////////////////////////////// // // MockPrinter.h // // MockPrinter is responsible for providing a test stub for Printer // /////////////////////////////////////////////////////////////////////////////// #include "Printer.h" #include "CppUTest/SimpleString.h" #include #include class MockPrinter: public Printer { public: explicit MockPrinter() { } virtual ~MockPrinter() { } virtual void Print(const char* s) { savedOutput.append(s); } virtual void Print(long int value) { SimpleString buffer; buffer = StringFromFormat("%ld", value); savedOutput.append(buffer.asCharString()); } std::string getOutput() const { return savedOutput; } private: std::string savedOutput; MockPrinter(const MockPrinter&); MockPrinter& operator=(const MockPrinter&); }; #endif // D_MockPrinter_H cpputest-4.0/examples/AllTests/CMakeLists.txt000644 000765 000024 00000000624 13663176127 022305 0ustar00basvoddestaff000000 000000 include_directories(../ApplicationLib) add_executable(ExampleTests AllTests.cpp CircularBufferTest.cpp EventDispatcherTest.cpp FEDemoTest.cpp HelloTest.cpp MockDocumentationTest.cpp PrinterTest.cpp ) cpputest_normalize_test_output_location(ExampleTests) target_link_libraries(ExampleTests ApplicationLib CppUTest CppUTestExt) cpputest_buildtime_discover_tests(ExampleTests) cpputest-4.0/examples/AllTests/AllTests.vcxproj000644 000765 000024 00000021154 13663176127 022716 0ustar00basvoddestaff000000 000000  Debug Win32 Release Win32 {95A5F8D0-12C0-4AC1-B46B-292DD3886108} Application false MultiByte Application false MultiByte <_ProjectFileVersion>10.0.30319.1 ./$(Configuration)/\ ./$(Configuration)/\ true .\Debug\ .\Debug\ true $(IntDir)BuildLog.htm .\Debug/AllTests.tlb MaxSpeed ../../include;../ApplicationLib;%(AdditionalIncludeDirectories) WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) Default MultiThreadedDLL ./$(Configuration)/AllTests.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ Level3 true _DEBUG;%(PreprocessorDefinitions) 0x0409 /NODEFAULTLIB:LIBCMT /NODEFAULTLIB:MSVCRTD %(AdditionalOptions) ../../lib/CppUTest.lib;../ApplicationLib/$(Configuration)/ApplicationLib.lib;odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies) ./$(Configuration)/AllTests.exe true ./$(Configuration)/$(TargetFileName).intermediate.manifest false false Console false MachineX86 true .\$(Configuration)/AllTests.bsc "$(TargetPath)" .\Debug/AllTests.tlb Disabled ../../include;../ApplicationLib;%(AdditionalIncludeDirectories) WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL ./$(Configuration)/AllTests.pch ./$(Configuration)/ ./$(Configuration)/ ./$(Configuration)/ $(Configuration)/ Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 ../../lib/CppUTestd.lib;../ApplicationLib/$(Configuration)/ApplicationLib.lib;odbc32.lib;odbccp32.lib;winmm.lib;%(AdditionalDependencies) ./$(Configuration)/AllTests.exe true ./$(Configuration)/$(TargetFileName).intermediate.manifest true ./$(Configuration)/AllTests.pdb Console false MachineX86 true .\Debug/AllTests.bsc "$(TargetPath)" {348076b9-303c-4fe0-9380-17cdf11134a9} false cpputest-4.0/examples/AllTests/RunAllTests.sh000755 000765 000024 00000000134 13663176127 022320 0ustar00basvoddestaff000000 000000 #!/bin/bash #put any pre-test execution commands here. echo Running all tests ./AllTests $1 cpputest-4.0/examples/AllTests/HelloTest.cpp000644 000765 000024 00000004235 13663176127 022156 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "hello.h" #include #include #include "CppUTest/TestHarness.h" static SimpleString* buffer; TEST_GROUP(HelloWorld) { static int output_method(const char* output, ...) { va_list arguments; va_start(arguments, output); *buffer = VStringFromFormat(output, arguments); va_end(arguments); return 1; } void setup() { buffer = new SimpleString(); UT_PTR_SET(PrintFormated, &output_method); } void teardown() { delete buffer; } }; TEST(HelloWorld, PrintOk) { printHelloWorld(); STRCMP_EQUAL("Hello World!\n", buffer->asCharString()); } cpputest-4.0/examples/AllTests/EventDispatcherTest.cpp000644 000765 000024 00000010360 13663176127 024177 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "EventDispatcher.h" class ObserverMock : public EventObserver { public: virtual void notify(const Event& event, int timeOutInSeconds) { mock().actualCall("notify").onObject(this).withParameterOfType("Event", "event", (void*) &event).withParameter("timeOutInSeconds", timeOutInSeconds); } virtual void notifyRegistration(EventObserver* newObserver) { mock().actualCall("notifyRegistration").onObject(this).withParameter("newObserver", newObserver); } }; class EventComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return ((const Event*)object1)->type == ((const Event*)object2)->type; } virtual SimpleString valueToString(const void* object) { return StringFrom(((const Event*)object)->type); } }; TEST_GROUP(EventDispatcher) { Event event; EventDispatcher* dispatcher; ObserverMock observer; ObserverMock observer2; EventComparator eventComparator; void setup() { dispatcher = new EventDispatcher; mock().installComparator("Event", eventComparator); } void teardown() { delete dispatcher; mock().removeAllComparatorsAndCopiers(); } }; TEST(EventDispatcher, EventWithoutRegistrationsResultsIntoNoCalls) { dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, EventWithRegistrationForEventResultsIntoCallback) { mock().expectOneCall("notify").onObject(&observer).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); event.type = IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, DifferentEventWithRegistrationDoesNotResultIntoCallback) { event.type = LESS_IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->dispatchEvent(event, 10); } TEST(EventDispatcher, RegisterTwoObserversResultIntoTwoCallsAndARegistrationNotification) { mock().expectOneCall("notify").onObject(&observer).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); mock().expectOneCall("notify").onObject(&observer2).withParameterOfType("Event", "event", &event).withParameter("timeOutInSeconds", 10); mock().expectOneCall("notifyRegistration").onObject(&observer).withParameter("newObserver", &observer2); event.type = IMPORTANT_EVENT; dispatcher->registerObserver(IMPORTANT_EVENT, &observer); dispatcher->registerObserver(IMPORTANT_EVENT, &observer2); dispatcher->dispatchEvent(event, 10); } cpputest-4.0/examples/AllTests/CircularBufferTest.cpp000644 000765 000024 00000014236 13663176127 024013 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockPrinter.h" #include "CircularBuffer.h" TEST_GROUP(CircularBuffer) { CircularBuffer* buffer; void setup() { buffer = new CircularBuffer(); } void teardown() { delete buffer; } void fillTheQueue(int seed, int howMany) { for (int i = 0; i < howMany; i++) buffer->Put(seed + i); } void removeFromQueue(int howMany) { for (int i = 0; i < howMany; i++) buffer->Get(); } }; TEST(CircularBuffer, EmptyAfterCreation) { CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, NotEmpty) { buffer->Put(10046); CHECK(!buffer->IsEmpty()); } TEST(CircularBuffer, NotEmptyThenEmpty) { buffer->Put(4567); CHECK(!buffer->IsEmpty()); buffer->Get(); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, GetPutOneValue) { buffer->Put(4567); LONGS_EQUAL(4567, buffer->Get()); } TEST(CircularBuffer, GetPutAFew) { buffer->Put(1); buffer->Put(2); buffer->Put(3); LONGS_EQUAL(1, buffer->Get()); LONGS_EQUAL(2, buffer->Get()); LONGS_EQUAL(3, buffer->Get()); } TEST(CircularBuffer, Capacity) { CircularBuffer b(2); LONGS_EQUAL(2, b.Capacity()); } TEST(CircularBuffer, IsFull) { fillTheQueue(0, buffer->Capacity()); CHECK(buffer->IsFull()); } TEST(CircularBuffer, EmptyToFullToEmpty) { fillTheQueue(100, buffer->Capacity()); CHECK(buffer->IsFull()); removeFromQueue(buffer->Capacity()); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, WrapAround) { fillTheQueue(100, buffer->Capacity()); CHECK(buffer->IsFull()); LONGS_EQUAL(100, buffer->Get()); CHECK(!buffer->IsFull()); buffer->Put(1000); CHECK(buffer->IsFull()); removeFromQueue(buffer->Capacity() - 1); LONGS_EQUAL(1000, buffer->Get()); CHECK(buffer->IsEmpty()); } TEST(CircularBuffer, PutToFull) { int capacity = buffer->Capacity(); fillTheQueue(900, capacity); buffer->Put(9999); for (int i = 0; i < buffer->Capacity() - 1; i++) LONGS_EQUAL(i+900+1, buffer->Get()); LONGS_EQUAL(9999, buffer->Get()); CHECK(buffer->IsEmpty()); } //Sometime people ask what tests the tests. //Do you know the answer TEST(CircularBuffer, GetFromEmpty) { LONGS_EQUAL(-1, buffer->Get()); CHECK(buffer->IsEmpty()); } /* * the next tests demonstrate using a mock object for * capturing output * */ TEST(CircularBuffer, PrintEmpty) { MockPrinter mock; Printer* p = &mock; buffer->Print(p); STRCMP_EQUAL("Circular buffer content:\n<>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintAfterOnePut) { MockPrinter mock; buffer->Put(1); buffer->Print(&mock); STRCMP_EQUAL("Circular buffer content:\n<1>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintNotYetWrappedOrFull) { MockPrinter mock; buffer->Put(1); buffer->Put(2); buffer->Put(3); buffer->Print(&mock); STRCMP_EQUAL("Circular buffer content:\n<1, 2, 3>\n", mock.getOutput().c_str()); } TEST(CircularBuffer, PrintNotYetWrappedAndIsFull) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<200, 201, 202, 203, 204>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintWrappedAndIsFullOldestToNewest) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Get(); buffer->Put(999); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<201, 202, 203, 204, 999>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintWrappedAndFullOverwriteOldest) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); buffer->Put(9999); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<201, 202, 203, 204, 9999>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, PrintBoundary) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); removeFromQueue(buffer->Capacity() - 2); buffer->Put(888); fillTheQueue(300, buffer->Capacity() - 1); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<888, 300, 301, 302, 303>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } TEST(CircularBuffer, FillEmptyThenPrint) { MockPrinter mock; fillTheQueue(200, buffer->Capacity()); removeFromQueue(buffer->Capacity()); buffer->Print(&mock); const char* expected = "Circular buffer content:\n" "<>\n"; STRCMP_EQUAL(expected, mock.getOutput().c_str()); } cpputest-4.0/examples/AllTests/PrinterTest.cpp000644 000765 000024 00000004504 13663176127 022535 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "Printer.h" #include "MockPrinter.h" TEST_GROUP(Printer) { Printer* printer; MockPrinter* mockPrinter; void setup() { mockPrinter = new MockPrinter(); printer = mockPrinter; } void teardown() { delete printer; } }; TEST(Printer, PrintConstCharStar) { printer->Print("hello"); printer->Print("hello\n"); const char* expected = "hellohello\n"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } TEST(Printer, PrintLong) { printer->Print(1234); const char* expected = "1234"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } TEST(Printer, StreamOperators) { *printer << "n=" << 1234; const char* expected = "n=1234"; CHECK_EQUAL(expected, mockPrinter->getOutput()); } cpputest-4.0/examples/AllTests/MockDocumentationTest.cpp000644 000765 000024 00000014226 13663176127 024537 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupport_c.h" TEST_GROUP(FirstTestGroup) { }; TEST(FirstTestGroup, FirsTest) { // FAIL("Fail me!"); } TEST(FirstTestGroup, SecondTest) { // STRCMP_EQUAL("hello", "world"); } TEST_GROUP(MockDocumentation) { }; static void productionCode() { mock().actualCall("productionCode"); } TEST(MockDocumentation, SimpleScenario) { mock().expectOneCall("productionCode"); productionCode(); mock().checkExpectations(); } class ClassFromProductionCode { public: virtual void importantFunction(){} virtual ~ClassFromProductionCode() {} }; class ClassFromProductionCodeMock : public ClassFromProductionCode { public: virtual void importantFunction() { mock().actualCall("importantFunction").onObject(this); } }; TEST(MockDocumentation, SimpleScenarioObject) { ClassFromProductionCode* object = new ClassFromProductionCodeMock; /* create mock instead of real thing */ mock().expectOneCall("importantFunction").onObject(object); object->importantFunction(); mock().checkExpectations(); delete object; } static void parameters_function(int p1, const char* p2) { void* object = (void*) 1; mock().actualCall("function").onObject(object).withParameter("p1", p1).withParameter("p2", p2); } TEST(MockDocumentation, parameters) { void* object = (void*) 1; mock().expectOneCall("function").onObject(object).withParameter("p1", 2).withParameter("p2", "hah"); parameters_function(2, "hah"); } class MyTypeComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return object1 == object2; } virtual SimpleString valueToString(const void* object) { return StringFrom(object); } }; TEST(MockDocumentation, ObjectParameters) { void* object = (void*) 1; MyTypeComparator comparator; mock().installComparator("myType", comparator); mock().expectOneCall("function").withParameterOfType("myType", "parameterName", object); mock().clear(); mock().removeAllComparatorsAndCopiers(); } TEST(MockDocumentation, returnValue) { mock().expectOneCall("function").andReturnValue(10); int value = mock().actualCall("function").returnValue().getIntValue(); value = mock().returnValue().getIntValue(); LONGS_EQUAL(10, value); } TEST(MockDocumentation, setData) { ClassFromProductionCode object; mock().setData("importantValue", 10); mock().setDataObject("importantObject", "ClassFromProductionCode", &object); ClassFromProductionCode * pobject; int value = mock().getData("importantValue").getIntValue(); pobject = (ClassFromProductionCode*) mock().getData("importantObject").getObjectPointer(); LONGS_EQUAL(10, value); POINTERS_EQUAL(pobject, &object); } static void doSomethingThatWouldOtherwiseBlowUpTheMockingFramework() { } TEST(MockDocumentation, otherMockSupport) { mock().crashOnFailure(); // mock().actualCall("unex"); mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().disable(); doSomethingThatWouldOtherwiseBlowUpTheMockingFramework(); mock().enable(); mock().clear(); } TEST(MockDocumentation, scope) { mock("xmlparser").expectOneCall("open"); mock("filesystem").ignoreOtherCalls(); mock("xmlparser").actualCall("open"); } static int equalMethod(const void* object1, const void* object2) { return object1 == object2; } static const char* toStringMethod(const void*) { return "string"; } TEST(MockDocumentation, CInterface) { void* object = (void*) 0x1; mock_c()->expectOneCall("foo")->withIntParameters("integer", 10)->andReturnDoubleValue(1.11); double d = mock_c()->actualCall("foo")->withIntParameters("integer", 10)->returnValue().value.doubleValue; DOUBLES_EQUAL(1.11, d, 0.00001); mock_c()->installComparator("type", equalMethod, toStringMethod); mock_scope_c("scope")->expectOneCall("bar")->withParameterOfType("type", "name", object); mock_scope_c("scope")->actualCall("bar")->withParameterOfType("type", "name", object); mock_c()->removeAllComparatorsAndCopiers(); mock_c()->setIntData("important", 10); mock_c()->checkExpectations(); mock_c()->clear(); } TEST_GROUP(FooTestGroup) { void setup() { // Init stuff } void teardown() { // Uninit stuff } }; TEST(FooTestGroup, Foo) { // Test FOO } TEST(FooTestGroup, MoreFoo) { // Test more FOO } TEST_GROUP(BarTestGroup) { void setup() { // Init Bar } }; TEST(BarTestGroup, Bar) { // Test Bar } cpputest-4.0/examples/AllTests/AllTests.cpp000644 000765 000024 00000004746 13663176127 022015 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestPlugin.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/IEEE754ExceptionsPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" class MyDummyComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { return object1 == object2; } virtual SimpleString valueToString(const void* object) { return StringFrom(object); } }; int main(int ac, char** av) { MyDummyComparator dummyComparator; MockSupportPlugin mockPlugin; IEEE754ExceptionsPlugin ieee754Plugin; mockPlugin.installComparator("MyDummyType", dummyComparator); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); TestRegistry::getCurrentRegistry()->installPlugin(&ieee754Plugin); return CommandLineTestRunner::RunAllTests(ac, av); } #include "AllTests.h" cpputest-4.0/examples/AllTests/AllTests.h000644 000765 000024 00000003361 13663176127 021452 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ IMPORT_TEST_GROUP( Printer); IMPORT_TEST_GROUP( CircularBuffer); IMPORT_TEST_GROUP( HelloWorld); IMPORT_TEST_GROUP( EventDispatcher); IMPORT_TEST_GROUP( MockDocumentation); cpputest-4.0/examples/AllTests/AllTests.vcproj000644 000765 000024 00000014313 13663176127 022525 0ustar00basvoddestaff000000 000000 cpputest-4.0/examples/AllTests/FEDemoTest.cpp000644 000765 000024 00000005605 13663176127 022214 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2016, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #ifdef CPPUTEST_HAVE_FENV #include "CppUTestExt/IEEE754ExceptionsPlugin.h" /* * To see a demonstration of tests failing as a result of IEEE754ExceptionsPlugin * picking up floating point errors, run the test executable with the -ri option. * */ extern "C" { #include } #include static volatile float f; TEST_GROUP(FE_Demo) { void setup() { IEEE754ExceptionsPlugin::disableInexact(); } }; IGNORE_TEST(FE_Demo, should_fail_when__FE_DIVBYZERO__is_set) { f = 1.0f; CHECK((f /= 0.0f) >= std::numeric_limits::infinity()); } IGNORE_TEST(FE_Demo, should_fail_when__FE_UNDERFLOW__is_set) { f = 0.01f; while (f > 0.0f) f *= f; CHECK(f == 0.0f); } IGNORE_TEST(FE_Demo, should_fail_when__FE_OVERFLOW__is_set) { f = 1000.0f; while (f < std::numeric_limits::infinity()) f *= f; CHECK(f >= std::numeric_limits::infinity()); } IGNORE_TEST(FE_Demo, should_fail_when__FE_INEXACT____is_set) { IEEE754ExceptionsPlugin::enableInexact(); f = 10.0f; DOUBLES_EQUAL((double) (f / 3.0f), (double) 3.333f, (double) 0.001f); } TEST(FE_Demo, should_succeed_when_no_flags_are_set) { CHECK(5.0f == 15.0f / 3.0f); } #endif cpputest-4.0/.settings/org.eclipse.cdt.core.prefs000644 000765 000024 00000030624 13663176127 023070 0ustar00basvoddestaff000000 000000 #Mon Jun 07 17:30:05 SGT 2010 eclipse.preferences.version=1 org.eclipse.cdt.core.formatter.alignment_for_arguments_in_method_invocation=16 org.eclipse.cdt.core.formatter.alignment_for_base_clause_in_type_declaration=80 org.eclipse.cdt.core.formatter.alignment_for_compact_if=0 org.eclipse.cdt.core.formatter.alignment_for_conditional_expression=80 org.eclipse.cdt.core.formatter.alignment_for_declarator_list=16 org.eclipse.cdt.core.formatter.alignment_for_enumerator_list=48 org.eclipse.cdt.core.formatter.alignment_for_expression_list=0 org.eclipse.cdt.core.formatter.alignment_for_expressions_in_array_initializer=16 org.eclipse.cdt.core.formatter.alignment_for_parameters_in_method_declaration=16 org.eclipse.cdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 org.eclipse.cdt.core.formatter.brace_position_for_array_initializer=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_block=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_block_in_case=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_method_declaration=next_line org.eclipse.cdt.core.formatter.brace_position_for_namespace_declaration=next_line org.eclipse.cdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.cdt.core.formatter.brace_position_for_type_declaration=next_line org.eclipse.cdt.core.formatter.compact_else_if=true org.eclipse.cdt.core.formatter.continuation_indentation=2 org.eclipse.cdt.core.formatter.continuation_indentation_for_array_initializer=2 org.eclipse.cdt.core.formatter.format_guardian_clause_on_one_line=false org.eclipse.cdt.core.formatter.indent_access_specifier_compare_to_type_header=false org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_access_specifier=true org.eclipse.cdt.core.formatter.indent_body_declarations_compare_to_namespace_header=false org.eclipse.cdt.core.formatter.indent_breaks_compare_to_cases=true org.eclipse.cdt.core.formatter.indent_declaration_compare_to_template_header=false org.eclipse.cdt.core.formatter.indent_empty_lines=false org.eclipse.cdt.core.formatter.indent_statements_compare_to_block=true org.eclipse.cdt.core.formatter.indent_statements_compare_to_body=true org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_cases=true org.eclipse.cdt.core.formatter.indent_switchstatements_compare_to_switch=false org.eclipse.cdt.core.formatter.indentation.size=4 org.eclipse.cdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_new_line_after_template_declaration=do not insert org.eclipse.cdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert org.eclipse.cdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_else_in_if_statement=insert org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert org.eclipse.cdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert org.eclipse.cdt.core.formatter.insert_new_line_in_empty_block=insert org.eclipse.cdt.core.formatter.insert_space_after_assignment_operator=insert org.eclipse.cdt.core.formatter.insert_space_after_binary_operator=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_angle_bracket_in_template_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_brace_in_block=insert org.eclipse.cdt.core.formatter.insert_space_after_closing_paren_in_cast=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_base_clause=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_case=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_base_types=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_declarator_list=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_expression_list=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_arguments=insert org.eclipse.cdt.core.formatter.insert_space_after_comma_in_template_parameters=insert org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_after_opening_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert org.eclipse.cdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert org.eclipse.cdt.core.formatter.insert_space_after_postfix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_after_prefix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_after_question_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_after_semicolon_in_for=insert org.eclipse.cdt.core.formatter.insert_space_after_unary_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_assignment_operator=insert org.eclipse.cdt.core.formatter.insert_space_before_binary_operator=insert org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_before_closing_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert org.eclipse.cdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_base_clause=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_case=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_default=do not insert org.eclipse.cdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_base_types=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_declarator_list=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_expression_list=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_comma_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_arguments=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_angle_bracket_in_template_parameters=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_block=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_namespace_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_switch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_bracket=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_catch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_exception_specification=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_for=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_if=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_switch=insert org.eclipse.cdt.core.formatter.insert_space_before_opening_paren_in_while=insert org.eclipse.cdt.core.formatter.insert_space_before_postfix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_prefix_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_before_question_in_conditional=insert org.eclipse.cdt.core.formatter.insert_space_before_semicolon=do not insert org.eclipse.cdt.core.formatter.insert_space_before_semicolon_in_for=do not insert org.eclipse.cdt.core.formatter.insert_space_before_unary_operator=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_brackets=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_exception_specification=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert org.eclipse.cdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert org.eclipse.cdt.core.formatter.keep_else_statement_on_same_line=true org.eclipse.cdt.core.formatter.keep_empty_array_initializer_on_one_line=false org.eclipse.cdt.core.formatter.keep_imple_if_on_one_line=false org.eclipse.cdt.core.formatter.keep_then_statement_on_same_line=true org.eclipse.cdt.core.formatter.lineSplit=200 org.eclipse.cdt.core.formatter.number_of_empty_lines_to_preserve=1 org.eclipse.cdt.core.formatter.put_empty_statement_on_new_line=true org.eclipse.cdt.core.formatter.tabulation.char=tab org.eclipse.cdt.core.formatter.tabulation.size=4 org.eclipse.cdt.core.formatter.use_tabs_only_for_leading_indentations=false cpputest-4.0/.settings/org.eclipse.cdt.ui.prefs000644 000765 000024 00000000202 13663176127 022542 0ustar00basvoddestaff000000 000000 #Tue Dec 29 09:23:19 SGT 2009 eclipse.preferences.version=1 formatter_profile=_CppUTest Coding Style formatter_settings_version=1 cpputest-4.0/platforms_examples/README000644 000765 000024 00000000745 13663176127 020765 0ustar00basvoddestaff000000 000000 Directory to place test examples for different toolchains/chips combinations. Source files from this directory is compiled to executable using CppUTest, CppUTestExt and startup libraries from lib directory in CppUTest home. There is a sample eclipse project in armcc/AT91SAM7A3 folder. It may be used to see at possibility way of cross development with CppUTest running in target platform. It is based on Makefile. Makefile need some Cygwin utility, so you need to install cygwin. cpputest-4.0/platforms_examples/armcc/000755 000765 000024 00000000000 13663444566 021171 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1833/000755 000765 000024 00000000000 13663444566 022126 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1768/000755 000765 000024 00000000000 13663444566 022135 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/000755 000765 000024 00000000000 13663444566 022463 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/LICENSE000644 000765 000024 00000000244 13663176127 023463 0ustar00basvoddestaff000000 000000 No any additional license is used except standard Keil MDK-ARM license. If you use Keil MDK-ARM or ARM C/C++ then you agreed with terms of Keil MDK-ARM license. cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/AT91SAM7A3.launch000644 000765 000024 00000016312 13663176127 025147 0ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/ROM.sct000644 000765 000024 00000001451 13663176127 023627 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For AT91SAM7A3 ;------------------------------------------------------------------------------------- #define FLASH_START (0x00100000) #define FLASH_END (0x00140000) #define FLASH_SIZE (FLASH_END-FLASH_START) ; Internal SRAM #define RAM_START 0x00200000 #define RAM_END 0x00208000 #define RAM_SIZE (RAM_END-RAM_START) ; Load region for main program LR1 FLASH_START FLASH_SIZE { ER2 FLASH_START { *.o(.reset, +First) *.o(InRoot$$Sections) *.o(+RO) } ER5 RAM_START RAM_SIZE { *.o(+RW +ZI) *.o(STACK) } } /*----------------------------------------------------------------------------*/ cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/Makefile000644 000765 000024 00000021341 13663176127 024117 0ustar00basvoddestaff000000 000000 .SILENT: #We don't need to clean up when we're making these targets NODEPS = clean # CPU architecture. Passing to armcc.exe. For list: armcc --cpu list ifndef CPU CPU = ARM7TDMI endif # ARM/THUMB mode. Passing to armcc.exe. May be 'thumb' or 'arm' ifndef CPU_MODE CPU_MODE = thumb endif TARGET_PLATFORM =armcc_$(CPU)_$(CPU_MODE) # Need to use only relative path! Path with logical letters does not working. CPPUTEST_HOME = ../../.. COMPONENT_NAME = app CPPUTEST_OBJS_DIR = objs # directory for appication library CPPUTEST_LIB_DIR = lib CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_USE_STD_CPP_LIB = Y CPPUTEST_USE_VPATH = Y CPPUTEST_USE_STD_C_LIB = Y CPPUTEST_ENABLE_DEBUG = Y CPPUTEST_USE_EXTENSIONS = N SRC_DIRS = \ SRC_FILES = $(CPPUTEST_HOME)/examples/ApplicationLib/CircularBuffer.cpp \ $(CPPUTEST_HOME)/examples/ApplicationLib/Printer.cpp TEST_SRC_DIRS = \ tests \ TEST_FILES = $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp # directory with CppUTest and startup libraries CPPUTEST_LIB_LINK_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) INCLUDE_DIRS = \ $(CPPUTEST_HOME)/include \ $(SRC_DIRS) \ $(CPPUTEST_HOME)/examples/ApplicationLib \ # name of extension of output file. Default Keil MDK-ARM extension is .axf which is elf format # .axf will be .elf for eclipse debug OUTFILE_EXT = elf # output filename, mapfile (.map), hexfile (.mot) OUTNAME = $(COMPONENT_NAME) OUTFILE = $(OUTNAME).$(OUTFILE_EXT) HEXFILE = $(OUTNAME).mot MAPFILE = $(OUTNAME).map # CYGWIN path CYGWIN =C:/CYGWIN/bin MKDIR =$(CYGWIN)/mkdir RM =$(CYGWIN)/rm TOUCH =$(CYGWIN)/touch ECHO =$(CYGWIN)/echo KEIL_DIR=D:/Keil/ARM/ARMCC CC=$(KEIL_DIR)/bin/armcc.exe AS=$(KEIL_DIR)/bin/armasm.exe AR=$(KEIL_DIR)/bin/armar.exe LD=$(KEIL_DIR)/bin/armlink.exe FROMELF=$(KEIL_DIR)/bin/fromelf.exe # armcc system include path SYS_INCLUDE_DIRS =$(KEIL_DIR)/include JFLASH ="C:/Program Files (x86)/SEGGER/JLink_V490b/JFlash.exe" JFLASHPRJ =AT91SAM7A3.jflash LDSCRIPT = ROM.sct CPUFLAGS =--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =-M \ $(INCLUDES) \ --depend_format=unix_escaped \ --depend_single_line \ --no_depend_system_headers OPTFLAGS =-O3 CPPUTEST_CPPFLAGS =$(CPUFLAGS) \ $(OPTFLAGS) \ -c \ -g \ $(INCLUDES) \ --$(CPU_MODE) \ --exceptions \ -D__CLK_TCK=1000 \ CPPUTEST_LDFLAGS =$(CPUFLAGS) \ --strict \ --entry=Reset_Handler \ --summary_stderr \ --map \ --callgraph \ --info=summarysizes \ --info=sizes \ --info=totals \ --info=veneers\ --load_addr_map_info \ --library_type=standardlib \ --remove \ --debug \ ARFLAGS = --debug_symbols # new and delete for memory leak detection on by default ifndef CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_USE_MEM_LEAK_DETECTION = Y endif # Use the standard C library ifndef CPPUTEST_USE_STD_C_LIB CPPUTEST_USE_STD_C_LIB = Y endif # Use the standard C++ library ifndef CPPUTEST_USE_STD_CPP_LIB CPPUTEST_USE_STD_CPP_LIB = Y endif # No extentions is default ifndef CPPUTEST_USE_EXTENSIONS CPPUTEST_USE_EXTENSIONS = N endif # No VPATH is default ifndef CPPUTEST_USE_VPATH CPPUTEST_USE_VPATH = N endif # Make empty, instead of 'N', for usage in $(if ) conditionals ifneq ($(CPPUTEST_USE_VPATH), Y) CPPUTEST_USE_VPATH = endif # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED CPPUTEST_LDFLAGS +=--no_scanlib else INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) endif ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED else ifndef CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_NEW_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorNewMacros.h endif ifndef CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE CPPUTEST_MEMLEAK_DETECTOR_MALLOC_MACRO_FILE = -include $(CPPUTEST_HOME)/include/CppUTest/MemoryLeakDetectorMallocMacros.h endif endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CPPUTEST_CPPFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED endif # Link with CppUTest lib CPPUTEST_LIB = $(CPPUTEST_LIB_LINK_DIR)/libCppUTest.a # Link with startup lib CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libStartup_AT91SAM7A3.a # Link with CppUTestExt lib ifeq ($(CPPUTEST_USE_EXTENSIONS), Y) CPPUTEST_LIB += $(CPPUTEST_LIB_LINK_DIR)/libCppUTestExt.a endif TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a ifndef TEST_TARGET ifndef TARGET_PLATFORM TEST_TARGET = $(COMPONENT_NAME)_tests else TEST_TARGET = $(COMPONENT_NAME)_$(TARGET_PLATFORM)_tests endif endif #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) $(wildcard $1/*.asm) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1, $(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $3/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1,$2) src_to_d = $(call src_to,.d,$1,$2) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo # иÑходники программных модулей SRC = $(call get_src_from_dir_list, $(SRC_DIRS)) $(SRC_FILES) OBJ = $(call src_to_o,$(SRC),$(CPPUTEST_OBJS_DIR)) # иÑходники теÑтов TEST_SRC = $(call get_src_from_dir_list, $(TEST_SRC_DIRS)) $(TEST_FILES) TEST_OBJ = $(call src_to_o,$(TEST_SRC),$(CPPUTEST_OBJS_DIR)) # If we're using VPATH ALL_SRC = $(SRC) $(TEST_SRC) ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif # for building application library INCLUDES += $(foreach dir, $(INCLUDE_DIRS), -I$(dir)) DEP_FILES = $(call src_to_d, $(SRC), $(CPPUTEST_OBJS_DIR)) DEP_TEST_FILES = $(call src_to_d, $(TEST_SRC), $(CPPUTEST_OBJS_DIR)) STUFF_TO_CLEAN = $(OBJ) $(TEST_OBJ) $(DEP_FILES) $(DEP_TEST_FILES) $(TARGET_LIB) #Don't create CRT dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif STUFF_TO_CLEAN += $(OUTFILE) $(MAPFILE) all: $(CPPUTEST_OBJS_DIR)/$(OUTFILE) echo Done! $(TARGET_LIB): $(OBJ) | $(CPPUTEST_LIB_DIR) echo Building application library $@ $(AR) $(ARFLAGS) --create $@ $^ $(CPPUTEST_OBJS_DIR)/$(OUTFILE): $(TEST_OBJ) $(CPPUTEST_LIB) $(TARGET_LIB) | ROM.sct Makefile echo Linking! $(LD) $(CPPUTEST_LDFLAGS) $^ --scatter $(LDSCRIPT) --list $(MAPFILE) -o $@ .PHONY: prog prog: $(CPPUTEST_OBJS_DIR)/$(HEXFILE) $(JFLASH) -openprj$(JFLASHPRJ) -open$< -auto -exit $(CPPUTEST_OBJS_DIR)/$(HEXFILE): $(CPPUTEST_OBJS_DIR)/$(OUTFILE) echo Converting to Motorola S19 $(FROMELF) --m32 --output=$@ $< debug: echo echo "Target Source files:" $(call debug_print_list,$(SRC)) echo "Target Object files:" $(call debug_print_list,$(OBJ)) echo "All Input Dependency files:" $(call debug_print_list,$(DEP_FILES)) echo Stuff to clean: $(call debug_print_list,$(STUFF_TO_CLEAN)) echo Includes: $(call debug_print_list,$(INCLUDES)) echo Directories to create: $(call debug_print_list,$(OBJS_DIRS)) echo Directories of CppUTest object files: $(call debug_print_list,$(OBJS_DIR)) #Don't create dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif OBJS_DIRS =$(sort $(dir $(STUFF_TO_CLEAN))) $(LIB_DIR) $(OBJS_DIRS): echo Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(CPPUTEST_OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIRS) echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cpp Makefile | $(OBJS_DIRS) echo Compiling C++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cc Makefile | $(OBJS_DIRS) echo Compiling CC++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' #This rule does the compilation C++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cpp $(CPPUTEST_OBJS_DIR)/%.d echo Compiling C++ file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation CC++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cc $(CPPUTEST_OBJS_DIR)/%.d echo Compiling CC++ file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ #This rule does the compilation C files $(CPPUTEST_OBJS_DIR)/%.o: %.c $(CPPUTEST_OBJS_DIR)/%.d echo Compiling C file $<. Out file $@ $(CC) $(CPPUTEST_CPPFLAGS) $< -o $@ clean: $(RM) -f $(STUFF_TO_CLEAN) cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/tests/000755 000765 000024 00000000000 13663444566 023625 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/AT91SAM7A3.jflash000644 000765 000024 00000022073 13663176127 025145 0ustar00basvoddestaff000000 000000 AppVersion = 47803 [GENERAL] ConnectMode = 0 CurrentFile = "obj/tst.mot" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 0 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 30 Speed1 = 400 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 0 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "Atmel AT91SAM7A3" ClockSpeed = 0x003D0900 Core = 0x070000FF CoreID = 0x3F0F0F0F CoreIDMask = 0xFFFFFFFF DeviceFamily = 0x00000007 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Write 32bit" InitStep0_Comment = "Peripherial reset, need for disable WDT" InitStep0_Value0 = 0xFFFFFD00 InitStep0_Value1 = 0xA5000004 InitStep10_Action = "Write 32bit" InitStep10_Comment = "Unlock 0 region" InitStep10_Value0 = 0xFFFFFF64 InitStep10_Value1 = 0x5A000004 InitStep11_Action = "Delay" InitStep11_Comment = "" InitStep11_Value0 = 0x00000000 InitStep11_Value1 = 0x00000001 InitStep12_Action = "Write 32bit" InitStep12_Comment = "Unlock 1 region" InitStep12_Value0 = 0xFFFFFF64 InitStep12_Value1 = 0x5A001004 InitStep13_Action = "Delay" InitStep13_Comment = "" InitStep13_Value0 = 0x00000000 InitStep13_Value1 = 0x00000001 InitStep14_Action = "Write 32bit" InitStep14_Comment = "Unlock 2 region" InitStep14_Value0 = 0xFFFFFF64 InitStep14_Value1 = 0x5A002004 InitStep15_Action = "Delay" InitStep15_Comment = "" InitStep15_Value0 = 0x00000000 InitStep15_Value1 = 0x00000001 InitStep16_Action = "Write 32bit" InitStep16_Comment = "Unlock 3 region" InitStep16_Value0 = 0xFFFFFF64 InitStep16_Value1 = 0x5A003004 InitStep17_Action = "Delay" InitStep17_Comment = "" InitStep17_Value0 = 0x00000000 InitStep17_Value1 = 0x00000001 InitStep18_Action = "Write 32bit" InitStep18_Comment = "Unlock 4 region" InitStep18_Value0 = 0xFFFFFF64 InitStep18_Value1 = 0x5A004004 InitStep19_Action = "Delay" InitStep19_Comment = "" InitStep19_Value0 = 0x00000000 InitStep19_Value1 = 0x00000001 InitStep1_Action = "Reset" InitStep1_Comment = "" InitStep1_Value0 = 0x00000000 InitStep1_Value1 = 0x00000000 InitStep20_Action = "Write 32bit" InitStep20_Comment = "Unlock 5 region" InitStep20_Value0 = 0xFFFFFF64 InitStep20_Value1 = 0x5A005004 InitStep21_Action = "Delay" InitStep21_Comment = "" InitStep21_Value0 = 0x00000000 InitStep21_Value1 = 0x00000001 InitStep22_Action = "Write 32bit" InitStep22_Comment = "Unlock 6 region" InitStep22_Value0 = 0xFFFFFF64 InitStep22_Value1 = 0x5A006004 InitStep23_Action = "Delay" InitStep23_Comment = "" InitStep23_Value0 = 0x00000000 InitStep23_Value1 = 0x00000001 InitStep24_Action = "Write 32bit" InitStep24_Comment = "Unlock 7 region" InitStep24_Value0 = 0xFFFFFF64 InitStep24_Value1 = 0x5A007004 InitStep25_Action = "Delay" InitStep25_Comment = "" InitStep25_Value0 = 0x00000000 InitStep25_Value1 = 0x00000001 InitStep26_Action = "Write 32bit" InitStep26_Comment = "Unlock 8 region" InitStep26_Value0 = 0xFFFFFF64 InitStep26_Value1 = 0x5A008004 InitStep27_Action = "Delay" InitStep27_Comment = "" InitStep27_Value0 = 0x00000000 InitStep27_Value1 = 0x00000001 InitStep28_Action = "Write 32bit" InitStep28_Comment = "Unlock 9 region" InitStep28_Value0 = 0xFFFFFF64 InitStep28_Value1 = 0x5A009004 InitStep29_Action = "Delay" InitStep29_Comment = "" InitStep29_Value0 = 0x00000000 InitStep29_Value1 = 0x00000001 InitStep2_Action = "Delay" InitStep2_Comment = "" InitStep2_Value0 = 0x00000000 InitStep2_Value1 = 0x00000002 InitStep30_Action = "Write 32bit" InitStep30_Comment = "Unlock 10 region" InitStep30_Value0 = 0xFFFFFF64 InitStep30_Value1 = 0x5A00A004 InitStep31_Action = "Delay" InitStep31_Comment = "" InitStep31_Value0 = 0x00000000 InitStep31_Value1 = 0x00000001 InitStep32_Action = "Write 32bit" InitStep32_Comment = "Unlock 11 region" InitStep32_Value0 = 0xFFFFFF64 InitStep32_Value1 = 0x5A00B004 InitStep33_Action = "Delay" InitStep33_Comment = "" InitStep33_Value0 = 0x00000000 InitStep33_Value1 = 0x00000001 InitStep34_Action = "Write 32bit" InitStep34_Comment = "Unlock 12 region" InitStep34_Value0 = 0xFFFFFF64 InitStep34_Value1 = 0x5A00C004 InitStep35_Action = "Delay" InitStep35_Comment = "" InitStep35_Value0 = 0x00000000 InitStep35_Value1 = 0x00000001 InitStep36_Action = "Write 32bit" InitStep36_Comment = "Unlock 13 region" InitStep36_Value0 = 0xFFFFFF64 InitStep36_Value1 = 0x5A00D004 InitStep37_Action = "Delay" InitStep37_Comment = "" InitStep37_Value0 = 0x00000000 InitStep37_Value1 = 0x00000001 InitStep38_Action = "Write 32bit" InitStep38_Comment = "Unlock 14 region" InitStep38_Value0 = 0xFFFFFF64 InitStep38_Value1 = 0x5A00E004 InitStep39_Action = "Delay" InitStep39_Comment = "" InitStep39_Value0 = 0x00000000 InitStep39_Value1 = 0x00000001 InitStep3_Action = "Write 32bit" InitStep3_Comment = "Disable watchdog" InitStep3_Value0 = 0xFFFFFD44 InitStep3_Value1 = 0x00008000 InitStep40_Action = "Write 32bit" InitStep40_Comment = "Unlock 15 region" InitStep40_Value0 = 0xFFFFFF64 InitStep40_Value1 = 0x5A00F004 InitStep41_Action = "Delay" InitStep41_Comment = "" InitStep41_Value0 = 0x00000000 InitStep41_Value1 = 0x00000001 InitStep4_Action = "Write 32bit" InitStep4_Comment = "Set PLL" InitStep4_Value0 = 0xFFFFFC20 InitStep4_Value1 = 0x00000601 InitStep5_Action = "Delay" InitStep5_Comment = "" InitStep5_Value0 = 0x00000000 InitStep5_Value1 = 0x00000002 InitStep6_Action = "Write 32bit" InitStep6_Comment = "Set PLL and divider" InitStep6_Value0 = 0xFFFFFC2C InitStep6_Value1 = 0x00C79E04 InitStep7_Action = "Write 32bit" InitStep7_Comment = "4MHz" InitStep7_Value0 = 0xFFFFFC30 InitStep7_Value1 = 0x00000001 InitStep8_Action = "Delay" InitStep8_Comment = "" InitStep8_Value0 = 0x00000000 InitStep8_Value1 = 0x00000002 InitStep9_Action = "Write 32bit" InitStep9_Comment = "Set WS = 2 (for write), FCN = 6 for 4 MHz" InitStep9_Value0 = 0xFFFFFF60 InitStep9_Value1 = 0x00060000 NumExitSteps = 0 NumInitSteps = 42 RAMAddr = 0x00200000 RAMSize = 0x00004000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[1024] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x00100000 CheckId = 0 CustomRAMCode = "" DeviceName = "AT91SAM7A3 internal" EndBank = 1023 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 1 EraseType = 1 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 2 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/README000644 000765 000024 00000003724 13663176127 023344 0ustar00basvoddestaff000000 000000 Sample project to test CppUTest for Keil MDK-ARM toolchain and AT91SAM7A3 chip. Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe) 2. Keil MDK-ARM 3. JLink Flash (for programming chip) 4. serial connection to DBGU interface 5. 4 MHz quartz. If else, need to be adjusted in $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/SAM7A3.asm (for setup PLL and change core clock from IRC to PLL) and $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/Retarget.c (for _clock_init() function working correctly) 6. eclipse + gdb server from JLink + arm-none-eabi-gdb from GNU ARM Tools Embedded For debug only. First, you need to compile CppUTest and target startup library: make -C ../../../platforms/armcc make -C ../../../platforms_startup/armcc/AT91SAM7A3 Second, you need to write tests. As example, I use $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp. All test from $(CPPUTEST_HOME)/examples/AllTests/ needs to many RAM (chip does not have such). Third, you need to make executable: make all Fourth, you need to program executable on target chip: make prog Project use semihosting, so you may use standard printf() or std::cout << "Hello!" If problems with heap or low memory, adjust heap size in $(CPPUTEST_HOME)/platforms_startup/armcc/AT91SAM7A3/SAM7A3.asm and rebuild startup library. Startup library uses standard Keil MDK-ARM license. Eclipse project is tested in eclipse Kepler, eclipse Luna. You need to adjust some environment variables in "C/C++ Build" tab in properties window for project. "CPPUTEST_HOME" is a path to root of CppUTest "KEIL_DIR" is a path to ARM C/C++ compiler "PATH" there is need to add path to make.exe Eclipse project use plugin "GDB Hardware Debugger" to debug, so for debug you may install "GDB Hardware Debugger" and gdb client (from GNU ARM Tools Embedded) or create your own debug configuration (for exampe, use eclipse plugin from Keil MDK-ARM installation; no need to install other plugins and toolchains). cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/jlink_gdb.cmd000644 000765 000024 00000000155 13663176127 025067 0ustar00basvoddestaff000000 000000 start "JLink GDB Server" "C:\Program Files (x86)\SEGGER\JLink_V490b\JLinkGDBServerCL.exe" -device AT91SAM7A3 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/.project000644 000765 000024 00000001423 13663176127 024125 0ustar00basvoddestaff000000 000000 CppUTest AT91SAM7A3 sample project org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature org.eclipse.cdt.core.ccnature cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/.cproject000644 000765 000024 00000017367 13663176127 024306 0ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/STACK.txt000644 000765 000024 00000001327 13663176127 024067 0ustar00basvoddestaff000000 000000 See objs/app/app.htm for details about stack sizes for functions and call tree. Stack usage for std::cout << (double) is about 1336 bytes Stack usage for CppUTest is at least 4368 bytes with call chain: main -> CommandLineTestRunner::RunAllTests(int, char**) -> CommandLineTestRunner::RunAllTests(int, const char**) -> MemoryLeakWarningPlugin::MemoryLeakWarningPlugin(const SimpleString&, MemoryLeakDetector*) -> MemoryLeakWarningPlugin::getGlobalDetector() -> MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure*) -> MemoryLeakDetectorTable::MemoryLeakDetectorTable() -> __aeabi_vec_ctor_nocookie_nodtor Maximum stack consumption for constructor MemoryLeakDetector::MemoryLeakDetector(MemoryLeakFailure*) cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/RAM.txt000644 000765 000024 00000000354 13663176127 023640 0ustar00basvoddestaff000000 000000 bss memory usage for std::cout is about 12248 bytes Library cpp_ts(ios.o) needs two big regions of 7472 and 4104 bytes and other small regions. More than 8k needed for statically created arrays with size SetPointerPlugin::MAX_SET cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/HEAP.txt000644 000765 000024 00000000306 13663176127 023733 0ustar00basvoddestaff000000 000000 Heap usage for initialization of std::cout is about 1496 bytes. Additional heap usage for std::cout << (double) is about 644 bytes. All heap usage for CRT + cpp + sample tests is about 10624 bytes.cpputest-4.0/platforms_examples/armcc/AT91SAM7A3/tests/main.cpp000644 000765 000024 00000003264 13663176127 025255 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { return RUN_ALL_TESTS(ac, av); } cpputest-4.0/platforms_examples/armcc/LPC1768/ROM.sct000644 000765 000024 00000001747 13663176127 023311 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For LPC1768 ;------------------------------------------------------------------------------------- #define FLASH_START (0x00000000) #define FLASH_END (0x00080000) #define FLASH_SIZE (FLASH_END-FLASH_START) ; Internal SRAM #define RAM1_START 0x10000000 #define RAM1_END 0x10008000 #define RAM1_SIZE (RAM1_END-RAM1_START) ; Internal SRAM for peripherial DMA #define RAM2_START 0x2007C000 #define RAM2_END 0x20084000 #define RAM2_SIZE (RAM2_END-RAM2_START) ; Load region for main program LR1 FLASH_START FLASH_SIZE { ER1 FLASH_START { *.o(RESET, +First) *.o(InRoot$$Sections) *.o(+RO) } ER2 RAM1_START RAM1_SIZE { *.o(+RW +ZI) } ER3 RAM2_START RAM2_SIZE { *.o(HEAP) *.o(STACK) } } /*----------------------------------------------------------------------------*/ cpputest-4.0/platforms_examples/armcc/LPC1768/tests/000755 000765 000024 00000000000 13663444566 023277 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1768/README000644 000765 000024 00000002533 13663176127 023013 0ustar00basvoddestaff000000 000000 Sample project to test CppUTest for Keil MDK-ARM toolchain and LPC1768 chip. Requirements: 1. CYGWIN (rm.exe, mkdir.exe, make.exe) 2. Keil MDK-ARM 3. JLink Flash (for programming chip) or FlashMagic 4. serial connection to UART0 or UART1 interface 5. 12 or 24 MHz quartz. If else, need to be adjusted in $(CPPUTEST_HOME)/platforms_startup/armcc/LPC1768/system_LPC17xx.c (for _clock_init() function working correctly and to set up 100 MHz core clock). Please check system_LPC17xx.c for correct quartz selection in function SystemInit(), and rebuild startup library for any change. Default is 12 MHz quartz. 6. eclipse + gdb server from JLink + arm-none-eabi-gdb from GNU ARM Tools Embedded For debug only. First, you need to compile CppUTest and target startup library: make -C ../../../platforms/armcc CPU=Cortex-M3 all make -C ../../../platforms_startup/armcc/LPC1768 all Second, you need to write tests. As example, I use $(CPPUTEST_HOME)/examples/AllTests/CircularBufferTest.cpp. Third, you need to make executable: make all Fourth, you need to program executable on target chip: make prog Project use semihosting, so you may use standard printf() or std::cout << "Hello!" If problems with heap or low memory, adjust heap size in $(CPPUTEST_HOME)/platforms_startup/armcc/LPC1768/startup_LPC17xx.asm and rebuild startup library. cpputest-4.0/platforms_examples/armcc/LPC1768/jlink_gdb.cmd000644 000765 000024 00000000165 13663176127 024542 0ustar00basvoddestaff000000 000000 start "JLink GDB Server" "C:\Program Files (x86)\SEGGER\JLinkARM_V486a\JLinkGDBServerCL.exe" -device LPC1768 -if SWD cpputest-4.0/platforms_examples/armcc/LPC1768/.project000644 000765 000024 00000001401 13663176127 023573 0ustar00basvoddestaff000000 000000 cpputest_example org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature cpputest-4.0/platforms_examples/armcc/LPC1768/LPC1768.jflash000644 000765 000024 00000003446 13663176127 024274 0ustar00basvoddestaff000000 000000 AppVersion = 46202 [GENERAL] ConnectMode = 0 CurrentFile = "objs/app/app.mot" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 1 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 5 Speed1 = 4000 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 1 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "NXP LPC1768" ClockSpeed = 0x05F5E100 Core = 0x030000FF CoreID = 0x4BA00477 CoreIDMask = 0xFFFFFFFF DeviceFamily = 0x00000003 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Reset" InitStep0_Comment = "Reset and halt target" InitStep0_Value0 = 0x00000000 InitStep0_Value1 = 0x00000000 NumExitSteps = 0 NumInitSteps = 1 RAMAddr = 0x10000000 RAMSize = 0x00008000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[30] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x00000000 CheckId = 0 CustomRAMCode = "" DeviceName = "LPC1768 internal" EndBank = 29 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 0 EraseType = 2 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 1 cpputest-4.0/platforms_examples/armcc/LPC1768/.cproject000644 000765 000024 00000015355 13663176127 023753 0ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1768/cpputest_example_Default.launch000644 000765 000024 00000013642 13663176127 030360 0ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1768/tests/main.cpp000644 000765 000024 00000004142 13663176127 024723 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include #include extern "C" void _clock_init(void); extern std::uint32_t SystemCoreClock; extern const std::uint32_t SystemCoreClock12; int main(int ac, char** av) { SystemCoreClock = SystemCoreClock12; /* if 12 MHz quartz is used; need to LPC_TIM3 measure */ _clock_init(); /* secondary call for new SystemCoreClock freq; previous call worked with unknown value */ std::cout << "Hello, World!\n"; int result = RUN_ALL_TESTS(ac, av); return result; } cpputest-4.0/platforms_examples/armcc/LPC1833/FLASH.sct000644 000765 000024 00000002237 13663176127 023475 0ustar00basvoddestaff000000 000000 #! armcc -E ; code upper need to use #define ;------------------------------------------------------------------------------------- ; Keil scatter loading file ; For LPC1833 ;------------------------------------------------------------------------------------- ; Internal SRAM0 #define SRAM0_START 0x10000000 #define SRAM0_END 0x10008000 #define SRAM0_SIZE (SRAM0_END-SRAM0_START) ; Internal SRAM1 #define SRAM1_START 0x10080000 #define SRAM1_END 0x1008A000 #define SRAM1_SIZE (SRAM1_END-SRAM1_START) ; Internal SRAM2 #define SRAM2_START 0x20000000 #define SRAM2_END 0x20010000 #define SRAM2_SIZE (SRAM2_END-SRAM2_START) ; SDRAM #define SDRAM_START 0x28000000 ; Internal FLASHA #define FLASHA_START 0x1A000000 #define FLASHA_END 0x1A040000 #define FLASHA_SIZE (FLASHA_END-FLASHA_START) ; Internal FLASHB #define FLASHB_START 0x1B000000 #define FLASHB_END 0x1B040000 #define FLASHB_SIZE (FLASHB_END-FLASHB_START) LR1 FLASHA_START FLASHA_SIZE { ER1 FLASHA_START FLASHA_SIZE { *(RESET, +FIRST) *(InRoot$$Sections) *.o (+RO) } ER2 SRAM0_START SRAM0_SIZE { *.o (+RW +ZI) } ER4 (SRAM1_START) SRAM1_SIZE { *(HEAP) *(STACK) } } cpputest-4.0/platforms_examples/armcc/LPC1833/LPC1833.jflash000644 000765 000024 00000003426 13663176127 024254 0ustar00basvoddestaff000000 000000 AppVersion = 46202 [GENERAL] ConnectMode = 0 CurrentFile = "objs\can_eth.hex" DataFileSAddr = 0x00000000 GUIMode = 0 HostName = "" TargetIF = 0 USBPort = 0 USBSerialNo = 0x00000000 [JTAG] IRLen = 0 MultipleTargets = 0 NumDevices = 0 Speed0 = 5 Speed1 = 4000 TAP_Number = 0 UseAdaptive0 = 0 UseAdaptive1 = 0 UseMaxSpeed0 = 1 UseMaxSpeed1 = 1 [CPU] CheckCoreID = 1 ChipName = "NXP LPC1833" ClockSpeed = 0x016E3600 Core = 0x030000FF CoreID = 0x4BA00477 CoreIDMask = 0x0F000FFF DeviceFamily = 0x00000003 EndianMode = 0 HasInternalFlash = 1 InitStep0_Action = "Reset" InitStep0_Comment = "Reset and halt target" InitStep0_Value0 = 0x00000000 InitStep0_Value1 = 0x00000000 NumExitSteps = 0 NumInitSteps = 1 RAMAddr = 0x10080000 RAMSize = 0x00008000 ScriptFile = "" UseAutoSpeed = 0x00000001 UseRAM = 1 UseScriptFile = 0 [FLASH] aSectorSel[22] = 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 AutoDetect = 0 BankName = "" BankSelMode = 0 BaseAddr = 0x1A000000 CheckId = 0 CustomRAMCode = "" DeviceName = "LPC1833 internal" EndBank = 21 NumBanks = 1 OrgNumBits = 32 OrgNumChips = 1 StartBank = 0 UseCustomRAMCode = 0 [PRODUCTION] AutoPerformsErase = 1 AutoPerformsHardLock = 0 AutoPerformsHardUnlock = 0 AutoPerformsProgram = 1 AutoPerformsSecure = 0 AutoPerformsSoftLock = 0 AutoPerformsSoftUnlock = 1 AutoPerformsStartApp = 1 AutoPerformsUnsecure = 0 AutoPerformsVerify = 1 EnableProductionMode = 0 EnableTargetPower = 0 EraseType = 1 ProductionDelay = 0x000001F4 ProductionThreshold = 0x00000BB8 ProgramSN = 0 SerialFile = "" SNAddr = 0x00000000 SNInc = 0x00000001 SNLen = 0x00000008 SNListFile = "" SNValue = 0x00000001 TargetPowerDelay = 0x00000014 VerifyType = 1 cpputest-4.0/platforms_examples/armcc/LPC1833/tests/000755 000765 000024 00000000000 13663444566 023270 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1833/src/000755 000765 000024 00000000000 13663444566 022715 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms_examples/armcc/LPC1833/src/dummy.c000644 000765 000024 00000000204 13663176127 024203 0ustar00basvoddestaff000000 000000 /* this file is requred to build application library, armar.exe can't build * libraries without at least one object input file. */ cpputest-4.0/platforms_examples/armcc/LPC1833/tests/test1.cpp000644 000765 000024 00000000156 13663176127 025031 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" TEST_GROUP(start) { }; TEST(start, first) { FAIL("Start here!"); } cpputest-4.0/platforms_examples/armcc/LPC1833/tests/main.cpp000644 000765 000024 00000003516 13663176127 024720 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, const char** av) { /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, av); } cpputest-4.0/builds/make-gcc-macport.sh000755 000765 000024 00000002025 13663176127 021124 0ustar00basvoddestaff000000 000000 #!/bin/bash # run from the builds directory listGccMacVersions() { port select --list gcc } if [ -z "$1" ]; then echo "usage: $0 gcc-version\navailable versions:" 1>&2 listGccMacVersions exit 1 fi gcc_v=$1 setGccMac() { sudo port select --set gcc $1 } setGccLinux() { echo "Not implemented for Linux" exit 1 # if [ ! -f "/usr/bin/gcc-$1" ] || [ ! -f "/usr/bin/g++-$1" ]; then # echo "no such version gcc/g++ installed" 1>&2 # exit 1 # fi # update-alternatives --set gcc "/usr/bin/gcc-$1" # update-alternatives --set g++ "/usr/bin/g++-$1" } if [ "$(uname)" == "Darwin" ]; then setGccMac $gcc_v elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then setGccLinux $gcc_v else echo "can't determine OS" exit 1 fi pushd .. cpputest_home=$(pwd) popd mkdir -p $gcc_v cd $gcc_v ../../configure make make check #these links keep compatibility with makefile worker ln -s $cpputest_home/include include ln -s $cpputest_home/build build ln -s $cpputest_home/scripts scripts cpputest-4.0/tests/CppUTest/000755 000765 000024 00000000000 13663444567 017051 5ustar00basvoddestaff000000 000000 cpputest-4.0/tests/AllTests.vcxproj000644 000765 000024 00000041661 13663176127 020514 0ustar00basvoddestaff000000 000000  Debug Win32 Debug x64 Release Win32 Release x64 {913088F6-37C0-4195-80E9-548C7C5303CB} Application false MultiByte Application false MultiByte Application false MultiByte Application false MultiByte <_ProjectFileVersion>10.0.30319.1 ..\cpputest_build\ ..\cpputest_build\ ..\cpputest_build\Release\$(ProjectName)\ ..\cpputest_build\Release\$(ProjectName)\ false false ..\cpputest_build\ ..\cpputest_build\ ..\cpputest_build\Debug\$(ProjectName)\ ..\cpputest_build\Debug\$(ProjectName)\ true true .\Release/AllTests.tlb MaxSpeed OnlyExplicitInline WIN32;NDEBUG;_CONSOLE;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OldStyle true NDEBUG;%(PreprocessorDefinitions) 0x0409 true Console false MachineX86 true .\Release/AllTests.bsc "$(TargetPath)" .\Release/AllTests.tlb MaxSpeed OnlyExplicitInline WIN32;NDEBUG;_CONSOLE;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) true MultiThreadedDLL true Level3 true ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) OldStyle true NDEBUG;%(PreprocessorDefinitions) 0x0409 true Console false true .\Release/AllTests.bsc "$(TargetPath)" .\Debug/AllTests.tlb Disabled ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true Level3 true EditAndContinue _DEBUG;%(PreprocessorDefinitions) 0x0409 true true Console false MachineX86 true "$(TargetPath)" .\Debug/AllTests.tlb Disabled ..\include;..\include\CppUTestExt\CppUTestGTest;..\include\CppUTestExt\CppUTestGMock;..\include\Platforms\VisualCpp;%(AdditionalIncludeDirectories) _CONSOLE;WIN32;_DEBUG;CPPUTEST_USE_LONG_LONG;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true Level3 true ProgramDatabase _DEBUG;%(PreprocessorDefinitions) 0x0409 true true Console false true "$(TargetPath)" {f468f539-27bd-468e-be64-dde641400b51} false false false true false cpputest-4.0/tests/CppUTestExt/000755 000765 000024 00000000000 13663444567 017532 5ustar00basvoddestaff000000 000000 cpputest-4.0/tests/AllTests.vcproj000644 000765 000024 00000101055 13663176127 020316 0ustar00basvoddestaff000000 000000 cpputest-4.0/tests/CppUTestExt/MockSupport_cTest.cpp000644 000765 000024 00000071047 13663176127 023671 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestHarness_c.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/MockSupport_c.h" #include "MockSupport_cTestCFile.h" #include "CppUTestExt/OrderedTest.h" extern "C" { static void dummy_function_for_mock_c_test() { } static void dummy_function_for_mock_c_test_two() { } } TEST_GROUP(MockSupport_c) { void teardown() { mock_c()->clear(); } }; TEST(MockSupport_c, OrderObserved) { mock_c()->strictOrder(); mock_c()->expectOneCall("foo1"); mock_c()->expectOneCall("foo2"); mock_c()->actualCall("foo1"); mock_c()->actualCall("foo2"); mock_c()->checkExpectations(); } TEST(MockSupport_c, hasReturnValue) { mock_c()->expectOneCall("foo"); CHECK(mock_c()->actualCall("foo")->hasReturnValue() == 0); CHECK(mock_c()->hasReturnValue() == 0); mock_c()->expectOneCall("foo2")->andReturnIntValue(1); CHECK(mock_c()->actualCall("foo2")->hasReturnValue() != 0); CHECK(mock_c()->hasReturnValue() != 0); } TEST(MockSupport_c, expectAndActualOneCall) { mock_c()->expectOneCall("boo"); mock_c()->actualCall("boo"); mock_c()->checkExpectations(); } TEST(MockSupport_c, expectAndActualThreeCalls) { mock_c()->expectNCalls(3, "boo"); mock_c()->actualCall("boo"); mock_c()->actualCall("boo"); mock_c()->actualCall("boo"); mock_c()->checkExpectations(); } TEST(MockSupport_c, expectNoCall) { mock_c()->expectNoCall("foo"); mock_c()->expectOneCall("bar"); mock_c()->actualCall("bar"); mock_c()->checkExpectations(); } TEST(MockSupport_c, expectAndActualParameters) { mock_c()->expectOneCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1)-> withFunctionPointerParameters("functionPointer", dummy_function_for_mock_c_test); mock_c()->actualCall("boo")->withIntParameters("integer", 1)->withDoubleParameters("double", 1.0)-> withStringParameters("string", "string")->withPointerParameters("pointer", (void*) 1)-> withFunctionPointerParameters("functionPointer", dummy_function_for_mock_c_test); } extern "C"{ static int typeNameIsEqual(const void* object1, const void* object2) { return object1 == object2; } static const char* typeNameValueToString(const void* PUNUSED(object)) { return "valueToString"; } static void typeCopy(void* dst, const void* src) { *(int*) dst = *(const int*) src; } } TEST(MockSupport_c, expectAndActualParametersOnObject) { mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); mock_c()->expectOneCall("boo")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->actualCall("boo")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->checkExpectations(); mock_c()->removeAllComparatorsAndCopiers(); } TEST(MockSupport_c, boolParameter) { mock_c()->expectOneCall("foo")->withBoolParameters("p", 1); mock_c()->actualCall("foo")->withBoolParameters("p", 1); } TEST(MockSupport_c, unsignedIntParameter) { mock_c()->expectOneCall("foo")->withUnsignedIntParameters("p", 1); mock_c()->actualCall("foo")->withUnsignedIntParameters("p", 1); } TEST(MockSupport_c, longIntParameter) { mock_c()->expectOneCall("foo")->withLongIntParameters("p", 1); mock_c()->actualCall("foo")->withLongIntParameters("p", 1); } TEST(MockSupport_c, unsignedLongIntParameter) { mock_c()->expectOneCall("foo")->withUnsignedLongIntParameters("p", 1); mock_c()->actualCall("foo")->withUnsignedLongIntParameters("p", 1); } TEST(MockSupport_c, doubleParameterWithTolerance) { mock_c( )->expectOneCall("foo")->withDoubleParametersAndTolerance("p", 2.0, 0.2); mock_c( )->actualCall("foo")->withDoubleParameters("p", 1.9); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockSupport_c, longLongIntParameter) { mock_c()->expectOneCall("foo")->withLongLongIntParameters("p", 1); mock_c()->actualCall("foo")->withLongLongIntParameters("p", 1); } TEST(MockSupport_c, unsignedLongLongIntParameter) { mock_c()->expectOneCall("foo")->withUnsignedLongLongIntParameters("p", 1); mock_c()->actualCall("foo")->withUnsignedLongLongIntParameters("p", 1); } #endif TEST(MockSupport_c, memoryBufferParameter) { const unsigned char mem_buffer[] = { 1, 2, 3}; mock_c()->expectOneCall("foo")->withMemoryBufferParameter("out", mem_buffer, sizeof(mem_buffer)); mock_c()->actualCall("foo")->withMemoryBufferParameter("out", mem_buffer, sizeof(mem_buffer)); mock_c()->checkExpectations(); } TEST(MockSupport_c, outputParameters) { int param = 1; const int retval = 2; mock_c()->expectOneCall("foo")->withOutputParameterReturning("out", &retval, sizeof(retval)); mock_c()->actualCall("foo")->withOutputParameter("out", ¶m); mock_c()->checkExpectations(); LONGS_EQUAL(2, param); LONGS_EQUAL(2, retval); } TEST(MockSupport_c, unmodifiedOutputParameter) { int param = 1; mock_c()->expectOneCall("foo")->withUnmodifiedOutputParameter("out"); mock_c()->actualCall("foo")->withOutputParameter("out", ¶m); mock_c()->checkExpectations(); LONGS_EQUAL(1, param); } TEST(MockSupport_c, outputParameters_differentType) { long param = 1; const long retval = 2; mock_c()->expectOneCall("foo")->withOutputParameterReturning("out", &retval, sizeof(retval)); mock_c()->actualCall("foo")->withOutputParameter("out", ¶m); mock_c()->checkExpectations(); LONGS_EQUAL(2, param); LONGS_EQUAL(2, retval); } TEST(MockSupport_c, outputParametersOfType) { int param = 1; const int retval = 2; mock_c()->installCopier("typeName", typeCopy); mock_c()->expectOneCall("foo")->withOutputParameterOfTypeReturning("typeName", "out", &retval); mock_c()->actualCall("foo")->withOutputParameterOfType("typeName", "out", ¶m); LONGS_EQUAL(2, param); LONGS_EQUAL(2, retval); mock_c()->checkExpectations(); mock_c()->removeAllComparatorsAndCopiers(); } TEST(MockSupport_c, ignoreOtherParameters) { mock_c()->expectOneCall("foo")->withIntParameters("int", 1)->ignoreOtherParameters(); mock_c()->actualCall("foo")->withIntParameters("int", 1)->withDoubleParameters("double", 0.01); mock_c()->checkExpectations(); } TEST(MockSupport_c, returnBoolValue) { int expected_value = 1; mock_c()->expectOneCall("boo")->andReturnBoolValue(expected_value); CHECK_EQUAL(expected_value, mock_c()->actualCall("boo")->boolReturnValue()); CHECK_EQUAL(expected_value, mock_c()->boolReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_BOOL, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnBoolValueOrDefaultShouldIgnoreTheDefault) { int defaultValue = 1; int expectedValue = 0; mock_c()->expectOneCall("foo")->andReturnBoolValue(expectedValue); LONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnBoolValueOrDefault(defaultValue)); LONGS_EQUAL(expectedValue, mock_c()->returnBoolValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnBoolValueOrDefaultShouldlUseTheDefaultValue) { int defaultValue = 1; mock_c()->expectOneCall("foo"); LONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnBoolValueOrDefault(defaultValue)); LONGS_EQUAL(defaultValue, mock_c()->returnBoolValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnIntValue) { int expected_value = -10; mock_c()->expectOneCall("boo")->andReturnIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->intReturnValue()); LONGS_EQUAL(expected_value, mock_c()->intReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnIntValueOrDefaultShouldIgnoreTheDefault) { int defaultValue = -10; int expectedValue = defaultValue - 1; mock_c()->expectOneCall("foo")->andReturnIntValue(expectedValue); LONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnIntValueOrDefault(defaultValue)); LONGS_EQUAL(expectedValue, mock_c()->returnIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnIntValueOrDefaultShouldlUseTheDefaultValue) { int defaultValue = -10; mock_c()->expectOneCall("foo"); LONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnIntValueOrDefault(defaultValue)); LONGS_EQUAL(defaultValue, mock_c()->returnIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnUnsignedIntValue) { unsigned int expected_value = 7; mock_c()->expectOneCall("boo")->andReturnUnsignedIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->unsignedIntReturnValue()); LONGS_EQUAL(expected_value, mock_c()->unsignedIntReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_UNSIGNED_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnUnsignedIntValueOrDefaultShouldIgnoreTheDefault) { unsigned int defaultValue = 10; unsigned int expectedValue = defaultValue + 1; mock_c()->expectOneCall("foo")->andReturnUnsignedIntValue(expectedValue); LONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnUnsignedIntValueOrDefault(defaultValue)); LONGS_EQUAL(expectedValue, mock_c()->returnUnsignedIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnUnsignedIntValueOrDefaultShouldlUseTheDefaultValue) { unsigned int defaultValue = 10; mock_c()->expectOneCall("foo"); LONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnUnsignedIntValueOrDefault(defaultValue)); LONGS_EQUAL(defaultValue, mock_c()->returnUnsignedIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnLongIntValue) { long int expected_value = -10L; mock_c()->expectOneCall("boo")->andReturnLongIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->longIntReturnValue()); LONGS_EQUAL(expected_value, mock_c()->longIntReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnLongIntValueOrDefaultShouldIgnoreTheDefault) { long int defaultValue = -10L; long int expectedValue = defaultValue - 1L; mock_c()->expectOneCall("foo")->andReturnLongIntValue(expectedValue); LONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnLongIntValueOrDefault(defaultValue)); LONGS_EQUAL(expectedValue, mock_c()->returnLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnLongIntValueOrDefaultShouldlUseTheDefaultValue) { long int defaultValue = -10L; mock_c()->expectOneCall("foo"); LONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnLongIntValueOrDefault(defaultValue)); LONGS_EQUAL(defaultValue, mock_c()->returnLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnUnsignedLongIntValue) { unsigned long int expected_value = 10; mock_c()->expectOneCall("boo")->andReturnUnsignedLongIntValue(expected_value); LONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->unsignedLongIntReturnValue()); LONGS_EQUAL(expected_value, mock_c()->unsignedLongIntReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_UNSIGNED_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnUnsignedLongIntValueOrDefaultShouldIgnoreTheDefault) { unsigned long int defaultValue = 10L; unsigned long int expectedValue = defaultValue + 1L; mock_c()->expectOneCall("foo")->andReturnUnsignedLongIntValue(expectedValue); LONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnUnsignedLongIntValueOrDefault(defaultValue)); LONGS_EQUAL(expectedValue, mock_c()->returnUnsignedLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnUnsignedLongIntValueOrDefaultShouldlUseTheDefaultValue) { unsigned long int defaultValue = 10L; mock_c()->expectOneCall("foo"); LONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnUnsignedLongIntValueOrDefault(defaultValue)); LONGS_EQUAL(defaultValue, mock_c()->returnUnsignedLongIntValueOrDefault(defaultValue)); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockSupport_c, returnLongLongIntValue) { long long int expected_value = -10L; mock_c()->expectOneCall("boo")->andReturnLongLongIntValue(expected_value); LONGLONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->longLongIntReturnValue()); LONGLONGS_EQUAL(expected_value, mock_c()->longLongIntReturnValue()); LONGLONGS_EQUAL(MOCKVALUETYPE_LONG_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnLongLongIntValueOrDefaultShouldIgnoreTheDefault) { long long int defaultValue = -10L; long long int expectedValue = defaultValue - 1L; mock_c()->expectOneCall("foo")->andReturnLongLongIntValue(expectedValue); LONGLONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnLongLongIntValueOrDefault(defaultValue)); LONGLONGS_EQUAL(expectedValue, mock_c()->returnLongLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnLongLongIntValueOrDefaultShouldlUseTheDefaultValue) { long long int defaultValue = -10L; mock_c()->expectOneCall("foo"); LONGLONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnLongLongIntValueOrDefault(defaultValue)); LONGLONGS_EQUAL(defaultValue, mock_c()->returnLongLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnUnsignedLongLongIntValue) { unsigned long long int expected_value = 10; mock_c()->expectOneCall("boo")->andReturnUnsignedLongLongIntValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock_c()->actualCall("boo")->unsignedLongLongIntReturnValue()); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock_c()->unsignedLongLongIntReturnValue()); UNSIGNED_LONGLONGS_EQUAL(MOCKVALUETYPE_UNSIGNED_LONG_LONG_INTEGER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnUnsignedLongLongIntValueOrDefaultShouldIgnoreTheDefault) { unsigned long long int defaultValue = 10L; unsigned long long int expectedValue = defaultValue + 1L; mock_c()->expectOneCall("foo")->andReturnUnsignedLongLongIntValue(expectedValue); UNSIGNED_LONGLONGS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnUnsignedLongLongIntValueOrDefault(defaultValue)); UNSIGNED_LONGLONGS_EQUAL(expectedValue, mock_c()->returnUnsignedLongLongIntValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnUnsignedLongLongIntValueOrDefaultShouldlUseTheDefaultValue) { unsigned long long int defaultValue = 10L; mock_c()->expectOneCall("foo"); UNSIGNED_LONGLONGS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnUnsignedLongLongIntValueOrDefault(defaultValue)); UNSIGNED_LONGLONGS_EQUAL(defaultValue, mock_c()->returnUnsignedLongLongIntValueOrDefault(defaultValue)); } #endif TEST(MockSupport_c, returnStringValue) { mock_c()->expectOneCall("boo")->andReturnStringValue("hello world"); STRCMP_EQUAL("hello world", mock_c()->actualCall("boo")->stringReturnValue()); STRCMP_EQUAL("hello world", mock_c()->stringReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_STRING, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnStringValueOrDefaultShouldIgnoreTheDefault) { const char defaultValue[] = "bar"; const char expectedValue[] = "bla"; mock_c()->expectOneCall("foo")->andReturnStringValue(expectedValue); STRCMP_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnStringValueOrDefault(defaultValue)); STRCMP_EQUAL(expectedValue, mock_c()->returnStringValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnStringValueOrDefaultShouldlUseTheDefaultValue) { const char defaultValue[] = "bar"; mock_c()->expectOneCall("foo"); STRCMP_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnStringValueOrDefault(defaultValue)); STRCMP_EQUAL(defaultValue, mock_c()->returnStringValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnDoubleValue) { mock_c()->expectOneCall("boo")->andReturnDoubleValue(1.0); DOUBLES_EQUAL(1.0, mock_c()->actualCall("boo")->doubleReturnValue(), 0.005); DOUBLES_EQUAL(1.0, mock_c()->doubleReturnValue(), 0.005); LONGS_EQUAL(MOCKVALUETYPE_DOUBLE, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnDoubleValueOrDefaultShouldIgnoreTheDefault) { double defaultValue = 2.2; double expectedValue = defaultValue + 0.1; mock_c()->expectOneCall("foo")->andReturnDoubleValue(expectedValue); DOUBLES_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnDoubleValueOrDefault(defaultValue), 0.005); DOUBLES_EQUAL(expectedValue, mock_c()->returnDoubleValueOrDefault(defaultValue), 0.005); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnDoubleValueOrDefaultShouldlUseTheDefaultValue) { double defaultValue = 2.2; mock_c()->expectOneCall("foo"); DOUBLES_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnDoubleValueOrDefault(defaultValue), 0.005); DOUBLES_EQUAL(defaultValue, mock_c()->returnDoubleValueOrDefault(defaultValue), 0.005); } TEST(MockSupport_c, returnPointerValue) { mock_c()->expectOneCall("boo")->andReturnPointerValue((void*) 10); POINTERS_EQUAL((void*) 10, mock_c()->actualCall("boo")->pointerReturnValue()); POINTERS_EQUAL((void*) 10, mock_c()->pointerReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_POINTER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnPointerValueOrDefaultShouldIgnoreTheDefault) { void* defaultValue = (void*) 10; void* expectedValue = (void*) 27; mock_c()->expectOneCall("foo")->andReturnPointerValue(expectedValue); POINTERS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnPointerValueOrDefault(defaultValue)); POINTERS_EQUAL(expectedValue, mock_c()->returnPointerValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnPointerValueOrDefaultShouldlUseTheDefaultValue) { void* defaultValue = (void*) 10; mock_c()->expectOneCall("foo"); POINTERS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnPointerValueOrDefault(defaultValue)); POINTERS_EQUAL(defaultValue, mock_c()->returnPointerValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnConstPointerValue) { mock_c()->expectOneCall("boo")->andReturnConstPointerValue((const void*) 10); POINTERS_EQUAL((const void*) 10, mock_c()->actualCall("boo")->constPointerReturnValue()); POINTERS_EQUAL((const void*) 10, mock_c()->constPointerReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_CONST_POINTER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnConstPointerValueOrDefaultShouldIgnoreTheDefault) { const void* defaultValue = (void*) 10; const void* expectedValue = (void*) 27; mock_c()->expectOneCall("foo")->andReturnConstPointerValue(expectedValue); POINTERS_EQUAL(expectedValue, mock_c()->actualCall("foo")->returnConstPointerValueOrDefault(defaultValue)); POINTERS_EQUAL(expectedValue, mock_c()->returnConstPointerValueOrDefault(defaultValue)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnConstPointerValueOrDefaultShouldlUseTheDefaultValue) { const void* defaultValue = (void*) 10; mock_c()->expectOneCall("foo"); POINTERS_EQUAL(defaultValue, mock_c()->actualCall("foo")->returnConstPointerValueOrDefault(defaultValue)); POINTERS_EQUAL(defaultValue, mock_c()->returnConstPointerValueOrDefault(defaultValue)); } TEST(MockSupport_c, returnFunctionPointerValue) { mock_c()->expectOneCall("boo")->andReturnFunctionPointerValue(dummy_function_for_mock_c_test); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test, mock_c()->actualCall("boo")->functionPointerReturnValue()); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test, mock_c()->functionPointerReturnValue()); LONGS_EQUAL(MOCKVALUETYPE_FUNCTIONPOINTER, mock_c()->returnValue().type); } TEST(MockSupport_c, whenReturnValueIsGivenReturnFunctionPointerValueOrDefaultShouldIgnoreTheDefault) { mock_c()->expectOneCall("foo")->andReturnFunctionPointerValue(dummy_function_for_mock_c_test); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test, mock_c()->actualCall("foo")->returnFunctionPointerValueOrDefault(dummy_function_for_mock_c_test_two)); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test, mock_c()->returnFunctionPointerValueOrDefault(dummy_function_for_mock_c_test_two)); } TEST(MockSupport_c, whenNoReturnValueIsGivenReturnFunctionPointerValueOrDefaultShouldlUseTheDefaultValue) { mock_c()->expectOneCall("foo"); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test_two, mock_c()->actualCall("foo")->returnFunctionPointerValueOrDefault(dummy_function_for_mock_c_test_two)); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test_two, mock_c()->returnFunctionPointerValueOrDefault(dummy_function_for_mock_c_test_two)); } TEST(MockSupport_c, MockSupportWithScope) { mock_scope_c("scope")->expectOneCall("boo"); LONGS_EQUAL(0, mock_scope_c("other")->expectedCallsLeft()); LONGS_EQUAL(1, mock_scope_c("scope")->expectedCallsLeft()); mock_scope_c("scope")->actualCall("boo"); } TEST(MockSupport_c, MockSupportSetBoolData) { mock_c()->setBoolData("boolean", 1); CHECK_EQUAL(1, mock_c()->getData("boolean").value.boolValue); } TEST(MockSupport_c, MockSupportSetIntData) { mock_c()->setIntData("integer", 10); LONGS_EQUAL(10, mock_c()->getData("integer").value.intValue); } TEST(MockSupport_c, MockSupportSetDoubleData) { mock_c()->setDoubleData("double", 1.0); DOUBLES_EQUAL(1.00, mock_c()->getData("double").value.doubleValue, 0.05); } TEST(MockSupport_c, MockSupportSetStringData) { mock_c()->setStringData("string", "hello world"); STRCMP_EQUAL("hello world", mock_c()->getData("string").value.stringValue); } TEST(MockSupport_c, MockSupportSetPointerData) { mock_c()->setPointerData("pointer", (void*) 1); POINTERS_EQUAL((void*) 1, mock_c()->getData("pointer").value.pointerValue); } TEST(MockSupport_c, MockSupportSetConstPointerData) { mock_c()->setConstPointerData("constPointer", (const void*) 1); POINTERS_EQUAL((const void*) 1, mock_c()->getData("constPointer").value.constPointerValue); } TEST(MockSupport_c, MockSupportMemoryBufferData) { mock_c()->setDataObject("name", "const unsigned char*", (void *) 0xDEAD); POINTERS_EQUAL(0xDEAD, mock_c()->getData("name").value.memoryBufferValue); LONGS_EQUAL(MOCKVALUETYPE_MEMORYBUFFER, mock_c()->getData("name").type); } TEST(MockSupport_c, MockSupportSetFunctionPointerData) { mock_c()->setFunctionPointerData("functionPointer", dummy_function_for_mock_c_test); FUNCTIONPOINTERS_EQUAL(dummy_function_for_mock_c_test, mock_c()->getData("functionPointer").value.functionPointerValue); } TEST(MockSupport_c, MockSupportSetDataObject) { mock_c()->setDataObject("name", "type", (void*) 1); POINTERS_EQUAL((void*) 1, mock_c()->getData("name").value.objectValue); } TEST(MockSupport_c, MockSupportSetDataConstObject) { mock_c()->setDataConstObject("name", "type", (const void*) 5); POINTERS_EQUAL((void*) 5, mock_c()->getData("name").value.constObjectValue); } TEST(MockSupport_c, WorksInCFile) { all_mock_support_c_calls(); } static bool destructorWasCalled = false; static void failedCallToMockC() { SetBooleanOnDestructorCall setOneDestructor(destructorWasCalled); mock_c()->actualCall("Not a call"); } // LCOV_EXCL_LINE // Silly wrapper because of a test that only fails in Visual C++ due to different // destructor behaviors #ifdef _MSC_VER #define MSC_SWITCHED_TEST(testGroup, testName) IGNORE_TEST(testGroup, testName) #else #define MSC_SWITCHED_TEST(testGroup, testName) TEST(testGroup, testName) #endif MSC_SWITCHED_TEST(MockSupport_c, NoExceptionsAreThrownWhenAMock_cCallFailed) { TestTestingFixture fixture; fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); // Odd behavior in Visual C++, destructor still gets called here CHECK(!destructorWasCalled); } static bool cpputestHasCrashed; static void crashMethod() { cpputestHasCrashed = true; } TEST_ORDERED(MockSupport_c, shouldCrashOnFailure, 21) { cpputestHasCrashed = false; TestTestingFixture fixture; UtestShell::setCrashMethod(crashMethod); mock_c()->crashOnFailure(true); fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); CHECK(cpputestHasCrashed); UtestShell::resetCrashMethod(); mock_c()->crashOnFailure(false); } TEST_ORDERED(MockSupport_c, nextTestShouldNotCrashOnFailure, 22) { cpputestHasCrashed = false; TestTestingFixture fixture; UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(failedCallToMockC); fixture.runAllTests(); CHECK_FALSE(cpputestHasCrashed); UtestShell::resetCrashMethod(); } static void failingCallToMockCWithParameterOfType_() { mock_c()->expectOneCall("bar")->withParameterOfType("typeName", "name", (const void*) 1); mock_c()->actualCall("bar")->withParameterOfType("typeName", "name", (const void*) 2); } // LCOV_EXCL_LINE TEST(MockSupport_c, failureWithParameterOfTypeCoversValueToString) { TestTestingFixture fixture; mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); fixture.setTestFunction(failingCallToMockCWithParameterOfType_); fixture.runAllTests(); fixture.assertPrintContains("typeName name: "); mock_c()->removeAllComparatorsAndCopiers(); } static void callToMockCWithOutputParameterOfType_() { int value1 = 7; const int value2 = 9; mock_c()->expectOneCall("bar")->withOutputParameterOfTypeReturning("intType", "bla", &value2); mock_c()->actualCall("bar")->withOutputParameterOfType("intType", "bla", &value1); LONGS_EQUAL(value1, value2); } TEST(MockSupport_c, successWithOutputParameterOfType) { TestTestingFixture fixture; mock_c()->installCopier("intType", typeCopy); fixture.setTestFunction(callToMockCWithOutputParameterOfType_); fixture.runAllTests(); LONGS_EQUAL(2, fixture.getCheckCount()); LONGS_EQUAL(0, fixture.getFailureCount()); mock_c()->removeAllComparatorsAndCopiers(); } static void failingCallToMockCWithMemoryBuffer_() { unsigned char memBuffer1[] = { 0x12, 0x15, 0xFF }; unsigned char memBuffer2[] = { 0x12, 0x05, 0xFF }; mock_c()->expectOneCall("bar")->withMemoryBufferParameter("name", memBuffer1, sizeof(memBuffer1)); mock_c()->actualCall("bar")->withMemoryBufferParameter("name", memBuffer2, sizeof(memBuffer2)); } // LCOV_EXCL_LINE TEST(MockSupport_c, expectOneMemBufferParameterAndValueFailsDueToContents) { TestTestingFixture fixture; fixture.setTestFunction(failingCallToMockCWithMemoryBuffer_); fixture.runAllTests(); fixture.assertPrintContains("Unexpected parameter value to parameter \"name\" " "to function \"bar\": "); } TEST(MockSupport_c, ignoreOtherCalls) { mock_c()->expectOneCall("foo"); mock_c()->ignoreOtherCalls(); mock_c()->actualCall("foo"); mock_c()->actualCall("bar"); mock_c()->checkExpectations(); } cpputest-4.0/tests/CppUTestExt/MockParameterTest.cpp000644 000765 000024 00000103277 13663176127 023634 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockParameterTest) { void teardown() { mock().checkExpectations(); mock().clear(); } }; TEST(MockParameterTest, expectOneBooleanParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", true); mock().actualCall("foo").withParameter("parameter", true); mock().checkExpectations(); } TEST(MockParameterTest, expectOneUnsignedIntegerParameterAndValue) { unsigned int value = 14400; mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("parameter", value); mock().checkExpectations(); } TEST(MockParameterTest, expectOneIntegerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", 10); mock().checkExpectations(); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockParameterTest, expectOneUnsignedLongLongIntegerParameterAndValue) { unsigned long long value = 0xFFFFAAAAFFFFAAAA; mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("parameter", value); mock().checkExpectations(); } TEST(MockParameterTest, expectOneLongLongIntegerParameterAndValue) { long long value = 0x7FFFAAAAFFFFAAAA; mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("parameter", value); mock().checkExpectations(); } #endif TEST(MockParameterTest, mismatchedIntegerTypesIntAndLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (int)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesIntAndUnsignedAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (int)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesIntAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (int)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedAndLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesLongAndUnsignedLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().checkExpectations(); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockParameterTest, mismatchedIntegerTypesIntAndLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (long long)1); mock().expectOneCall("foo").withParameter("parameter", (long long)1); mock().actualCall("foo").withParameter("parameter", (int)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesIntAndUnsignedLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (int)1); mock().actualCall("foo").withParameter("parameter", (unsigned long long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long long)1); mock().actualCall("foo").withParameter("parameter", (int)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedAndLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (long long)1); mock().expectOneCall("foo").withParameter("parameter", (long long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedAndUnsignedLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned)1); mock().actualCall("foo").withParameter("parameter", (unsigned long long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long long)1); mock().actualCall("foo").withParameter("parameter", (unsigned)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedLongAndUnsignedLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesLongAndLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (long long)1); mock().expectOneCall("foo").withParameter("parameter", (long long)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesLongAndUnsignedLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long long)1); mock().actualCall("foo").withParameter("parameter", (long)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesUnsignedLongAndLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (unsigned long)1); mock().actualCall("foo").withParameter("parameter", (long long)1); mock().expectOneCall("foo").withParameter("parameter", (long long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long)1); mock().checkExpectations(); } TEST(MockParameterTest, mismatchedIntegerTypesLongLongAndUnsignedLongLongAreAllowed) { mock().expectOneCall("foo").withParameter("parameter", (long long)1); mock().actualCall("foo").withParameter("parameter", (unsigned long long)1); mock().expectOneCall("foo").withParameter("parameter", (unsigned long long)1); mock().actualCall("foo").withParameter("parameter", (long long)1); mock().checkExpectations(); } #endif TEST(MockParameterTest, longAndUnsignedLongWithSameBitRepresentationShouldNotBeTreatedAsEqual) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", (long)-1); MockNamedValue parameter("parameter"); parameter.setValue((unsigned long)-1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", (long)-1); mock().actualCall("foo").withParameter("parameter", (unsigned long)-1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, unsignedLongAndLongWithSameBitRepresentationShouldnotBeTreatedAsEqual) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", (unsigned long)-1); MockNamedValue parameter("parameter"); parameter.setValue((long)-1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", (unsigned long)-1); mock().actualCall("foo").withParameter("parameter", (long)-1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneDoubleParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", 1.0); mock().actualCall("foo").withParameter("parameter", 1.0); mock().checkExpectations(); } TEST(MockParameterTest, expectOneDoubleParameterAndValueAndTolerance) { mock( ).expectOneCall("foo").withParameter("parameter", 100.0, 5.0); mock( ).actualCall("foo").withParameter("parameter", 96.0); mock( ).checkExpectations(); } TEST(MockParameterTest, doubleParameterNotEqualIfOutsideTolerance) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", 100.0); MockNamedValue parameter("parameter"); parameter.setValue(106.0); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock( ).expectOneCall("foo").withParameter("parameter", 100.0, 5.0); mock( ).actualCall("foo").withParameter("parameter", 106.0); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneStringParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", "string"); mock().actualCall("foo").withParameter("parameter", "string"); mock().checkExpectations(); } TEST(MockParameterTest, expectOnePointerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", (void*) 0x01); mock().actualCall("foo").withParameter("parameter", (void*) 0x01); mock().checkExpectations(); } TEST(MockParameterTest, expectOneConstPointerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", (const void*) 0x01); mock().actualCall("foo").withParameter("parameter", (const void*) 0x01); mock().checkExpectations(); } TEST(MockParameterTest, expectOneFunctionPointerParameterAndValue) { mock().expectOneCall("foo").withParameter("parameter", (void(*)()) 0x01); mock().actualCall("foo").withParameter("parameter", (void(*)()) 0x01); mock().checkExpectations(); } TEST(MockParameterTest, expectOneMemBufferParameterAndValue) { unsigned char memBuffer1[] = { 0x12, 0x15, 0xFF }; unsigned char memBuffer2[] = { 0x12, 0x15, 0xFF }; mock().expectOneCall("foo").withParameter("parameter", memBuffer1, sizeof(memBuffer1)); mock().actualCall("foo").withParameter("parameter", memBuffer2, sizeof(memBuffer2)); mock().checkExpectations(); } TEST(MockParameterTest, expectOneMemBufferParameterAndValueFailsDueToContents) { MockFailureReporterInstaller failureReporterInstaller; unsigned char memBuffer1[] = { 0x12, 0x15, 0xFF }; unsigned char memBuffer2[] = { 0x12, 0x05, 0xFF }; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", memBuffer1, sizeof(memBuffer1)); MockNamedValue parameter("parameter"); parameter.setMemoryBuffer( memBuffer2, sizeof(memBuffer2) ); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", memBuffer1, sizeof(memBuffer1)); mock().actualCall("foo").withParameter("parameter", memBuffer2, sizeof(memBuffer2)); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneMemBufferParameterAndValueFailsDueToSize) { MockFailureReporterInstaller failureReporterInstaller; unsigned char memBuffer1[] = { 0x12, 0x15, 0xFF }; unsigned char memBuffer2[] = { 0x12, 0x15, 0xFF, 0x90 }; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", memBuffer1, sizeof(memBuffer1)); MockNamedValue parameter("parameter"); parameter.setMemoryBuffer( memBuffer2, sizeof(memBuffer2) ); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", memBuffer1, sizeof(memBuffer1)); mock().actualCall("foo").withParameter("parameter", memBuffer2, sizeof(memBuffer2)); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneStringParameterAndValueFails) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", "string"); MockNamedValue parameter("parameter"); parameter.setValue("different"); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", "string"); mock().actualCall("foo").withParameter("parameter", "different"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneUnsignedIntegerParameterAndFailsDueToParameterName) { MockFailureReporterInstaller failureReporterInstaller; unsigned int value = 7; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", value); MockNamedValue parameter("different"); parameter.setValue(value); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", value); mock().actualCall("foo").withParameter("different", value); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneIntegerParameterAndFailsDueToParameterName) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", 10); MockNamedValue parameter("different"); parameter.setValue(10); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("different", 10); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneUnsignedIntegerParameterAndFailsDueToValue) { MockFailureReporterInstaller failureReporterInstaller; unsigned int actual_value = 8; unsigned int expected_value = actual_value + 1; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", expected_value); MockNamedValue parameter("parameter"); parameter.setValue(actual_value); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", expected_value); mock().actualCall("foo").withParameter("parameter", actual_value); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneIntegerParameterAndFailsDueToValue) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", 10); MockNamedValue parameter("parameter"); parameter.setValue(8); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", 8); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectOneIntegerParameterAndFailsDueToTypes) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("parameter", 10); MockNamedValue parameter("parameter"); parameter.setValue("heh"); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withParameter("parameter", 10); mock().actualCall("foo").withParameter("parameter", "heh"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, expectMultipleCallsWithDifferentParametersThatHappenOutOfOrder) { mock().expectOneCall("foo").withParameter("p1", 1); mock().expectOneCall("foo").withParameter("p1", 2); mock().actualCall("foo").withParameter("p1", 2); mock().actualCall("foo").withParameter("p1", 1); mock().checkExpectations(); } TEST(MockParameterTest, expectMultipleCallsWithMultipleDifferentParametersThatHappenOutOfOrder) { mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 20); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 20); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); } TEST(MockParameterTest, twiceCalledWithSameParameters) { mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().expectOneCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); } TEST(MockParameterTest, calledWithoutParameters) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("p1", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo").withParameter("p1", 1); mock().actualCall("foo"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, ignoreOtherParameters) { mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p1", 1).withParameter("p2", 2); mock().checkExpectations(); } TEST(MockParameterTest, ignoreOtherParametersButStillPassAll) { mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p1", 1); mock().checkExpectations(); } TEST(MockParameterTest, ignoreOtherParametersButExpectedParameterDidntHappen) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("p1", 1).ignoreOtherParameters(); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters(); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, ignoreOtherParametersMultipleCalls) { mock().expectOneCall("foo").ignoreOtherParameters(); mock().expectOneCall("foo").ignoreOtherParameters(); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); LONGS_EQUAL(1, mock().expectedCallsLeft()); mock().actualCall("foo").withParameter("p2", 2).withParameter("p3", 3).withParameter("p4", 4); mock().checkExpectations(); } TEST(MockParameterTest, ignoreOtherParametersMultipleCallsButOneDidntHappen) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; MockCheckedExpectedCall* call = expectations.addFunction("boo"); call->ignoreOtherParameters(); call->callWasMade(1); call->finalizeActualCallMatch(); call->ignoreOtherParameters(); expectations.addFunction("boo")->ignoreOtherParameters(); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("boo").ignoreOtherParameters(); mock().expectOneCall("boo").ignoreOtherParameters(); mock().actualCall("boo"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, newCallStartsWhileNotAllParametersWerePassed) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withParameter("p1", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo").withParameter("p1", 1); mock().actualCall("foo"); mock().actualCall("foo").withParameter("p1", 1); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, outputParameterSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval, sizeof(retval)); mock().actualCall("function").withOutputParameter("parameterName", ¶m); CHECK_EQUAL(param, 2); CHECK_EQUAL(retval, 2); mock().checkExpectations(); } TEST(MockParameterTest, unmodifiedOutputParameterSucceeds) { int param = 1; mock().expectOneCall("function").withUnmodifiedOutputParameter("parameterName"); mock().actualCall("function").withOutputParameter("parameterName", ¶m); CHECK_EQUAL(param, 1); mock().checkExpectations(); } TEST(MockParameterTest, noActualCallForOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; int output; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo").withOutputParameterReturning("output", &output, sizeof(output)); expectations.addFunction("foo")->withOutputParameterReturning("output", &output, sizeof(output)); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, noActualCallForUnmodifiedOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo").withUnmodifiedOutputParameter("output"); expectations.addFunction("foo")->withUnmodifiedOutputParameter("output"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, unexpectedOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; int param; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo"); mock().actualCall("foo").withOutputParameter("parameterName", ¶m); expectations.addFunction("foo"); MockNamedValue parameter("parameterName"); parameter.setValue(¶m); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, outputParameterMissing) { MockFailureReporterInstaller failureReporterInstaller; int output; MockExpectedCallsListForTest expectations; mock().expectOneCall("foo").withOutputParameterReturning("output", &output, sizeof(output)); mock().actualCall("foo"); expectations.addFunction("foo")->withOutputParameterReturning("output", &output, sizeof(output)); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockParameterTest, twoOutputParameters) { int param1 = 55; int retval1 = 1; int param2 = 77; int retval2 = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval1, sizeof(retval1)).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval2, sizeof(retval2)).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m1).withParameter("id", 1); mock().actualCall("function").withOutputParameter("parameterName", ¶m2).withParameter("id", 2); CHECK_EQUAL(retval1, param1); CHECK_EQUAL(retval2, param2); mock().checkExpectations(); } TEST(MockParameterTest, twoInterleavedOutputParameters) { int param1 = 55; int retval1 = 1; int param2 = 77; int retval2 = 2; mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval1, sizeof(retval1)).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterReturning("parameterName", &retval2, sizeof(retval2)).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m2).withParameter("id", 2); mock().actualCall("function").withOutputParameter("parameterName", ¶m1).withParameter("id", 1); CHECK_EQUAL(retval1, param1); CHECK_EQUAL(retval2, param2); mock().checkExpectations(); } TEST(MockParameterTest, twoDifferentOutputParametersInSameFunctionCallSucceeds) { int param1 = 1; int param2 = 1; int retval1 = 2; int retval2 = 3; mock().expectOneCall("foo") .withOutputParameterReturning("bar", &retval1, sizeof(retval1)) .withOutputParameterReturning("foobar", &retval2, sizeof(retval2)); mock().actualCall("foo") .withOutputParameter("bar", ¶m1) .withOutputParameter("foobar", ¶m2); CHECK_EQUAL(2, retval1); CHECK_EQUAL(2, param1); CHECK_EQUAL(3, retval2); CHECK_EQUAL(3, param2); mock().checkExpectations(); } TEST(MockParameterTest, outputAndIntParametersOfSameNameInDifferentFunctionCallsOfSameFunctionSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval, sizeof(retval)); mock().expectOneCall("foo").withIntParameter("bar", 25); mock().actualCall("foo").withOutputParameter("bar", ¶m); mock().actualCall("foo").withIntParameter("bar", 25); CHECK_EQUAL(2, retval); CHECK_EQUAL(2, param); mock().checkExpectations(); } TEST(MockParameterTest, twoOutputParameterOfSameNameInDifferentFunctionCallsOfSameFunctionSucceeds) { int param1 = 1; int param2 = 1; int retval1 = 2; int retval2 = 3; mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval1, sizeof(retval1)); mock().expectOneCall("foo").withOutputParameterReturning("bar", &retval2, sizeof(retval2)); mock().actualCall("foo").withOutputParameter("bar", ¶m1); mock().actualCall("foo").withOutputParameter("bar", ¶m2); CHECK_EQUAL(2, retval1); CHECK_EQUAL(2, param1); CHECK_EQUAL(3, retval2); CHECK_EQUAL(3, param2); mock().checkExpectations(); } TEST(MockParameterTest, twoOutputParametersOfSameNameInDifferentFunctionsSucceeds) { int param = 1; int retval = 2; mock().expectOneCall("foo1").withOutputParameterReturning("bar", &retval, sizeof(retval)); mock().expectOneCall("foo2").withIntParameter("bar", 25); mock().actualCall("foo1").withOutputParameter("bar", ¶m); mock().actualCall("foo2").withIntParameter("bar", 25); CHECK_EQUAL(2, retval); CHECK_EQUAL(2, param); mock().checkExpectations(); } TEST(MockParameterTest, outputAndInputParameter) { int return_value = 5; int returned_value = 7; mock().expectOneCall("foo").withParameter("bar", 10).withOutputParameterReturning("bar", &return_value, sizeof(return_value)); mock().actualCall("foo").withParameter("bar", 10).withOutputParameter("bar", &returned_value); LONGS_EQUAL(5, returned_value); mock().checkExpectations(); } TEST(MockParameterTest, outputParameterTraced) { mock().tracing(true); int param = 1; mock().actualCall("someFunc").withOutputParameter("someParameter", ¶m); mock().checkExpectations(); STRCMP_CONTAINS("Function name:someFunc someParameter:", mock().getTraceOutput()); mock().checkExpectations(); } TEST(MockParameterTest, outputParameterThatIsIgnoredShouldNotFail) { int param; mock().expectOneCall("function").ignoreOtherParameters(); mock().actualCall("function").withOutputParameter("parameterName", ¶m); mock().checkExpectations(); } TEST(MockParameterTest, outputParameterWithIgnoredParameters) { int param = 1; int retval = 2; mock().expectOneCall("foo").withOutputParameterReturning("bar", ¶m, sizeof(param)).ignoreOtherParameters(); mock().actualCall("foo").withOutputParameter("bar", &retval).withParameter("other", 1); LONGS_EQUAL(param, retval); mock().checkExpectations(); } /* * This test checks that the proper output parameters are copied when multiple calls to the same * function are expected. */ TEST(MockParameterTest, properOutputParametersAreCopied) { int expectedValue1 = 1; int expectedValue2 = 2; mock().expectOneCall("foo").withOutputParameterReturning("param", &expectedValue1, sizeof(expectedValue1)).ignoreOtherParameters(); mock().expectOneCall("foo").withOutputParameterReturning("param", &expectedValue2, sizeof(expectedValue2)); int returnedValue1 = 0; int returnedValue2 = 0; mock().actualCall("foo").withOutputParameter("param", &returnedValue1); mock().actualCall("foo").withOutputParameter("param", &returnedValue2).withParameter("optional", 50); CHECK_EQUAL_TEXT(expectedValue2, returnedValue1, "Wrong output value in 1st call"); CHECK_EQUAL_TEXT(expectedValue1, returnedValue2, "Wrong output value in 2nd call"); mock().checkExpectations(); } TEST(MockParameterTest, ignoreOtherCallsIgnoresWithAllKindsOfParameters) { mock().ignoreOtherCalls(); mock().actualCall("boo") .withParameter("umm", true) .withParameter("bar", 1u) .withParameter("foo", 1l) .withParameter("hey", 1ul) #ifdef CPPUTEST_USE_LONG_LONG .withParameter("ick", 1ll) .withParameter("grr", 1ull) #endif .withParameter("duh", 1.0) .withParameter("yoo", (const void*) NULLPTR) .withParameter("func", (void(*)()) NULLPTR) .withParameter("mem", (const unsigned char*) NULLPTR, 0) .withParameterOfType("hoo", "int", (const void*) NULLPTR) .withOutputParameter("gah", (void*) NULLPTR) .withOutputParameterOfType("goo", "int", (void*) NULLPTR); mock().checkExpectations(); } TEST(MockParameterTest, expectMultipleCallsWithParameters) { int expected_int = -7; unsigned int expected_uint = 7; mock().expectNCalls(2, "boo").withParameter("double", 1.0).withParameter("int", expected_int). withParameter("string", "string").withParameter("uint", expected_uint); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", expected_int).withParameter("string", "string"). withParameter("uint", expected_uint); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", expected_int).withParameter("string", "string"). withParameter("uint", expected_uint); mock().checkExpectations(); } TEST(MockParameterTest, expectMultipleMultipleCallsWithParameters) { mock().expectNCalls(2, "boo").withParameter("double", 1.0).ignoreOtherParameters(); mock().expectNCalls(2, "boo").withParameter("double", 1.0).ignoreOtherParameters(); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().checkExpectations(); } cpputest-4.0/tests/CppUTestExt/MockFailureTest.cpp000644 000765 000024 00000032227 13663176127 023277 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockFailureTest) { MockFailureReporter reporter; MockExpectedCallsList *list; MockCheckedExpectedCall* call1; MockCheckedExpectedCall* call2; MockCheckedExpectedCall* call3; void setup () { list = new MockExpectedCallsList; call1 = new MockCheckedExpectedCall; call2 = new MockCheckedExpectedCall; call3 = new MockCheckedExpectedCall; } void teardown () { delete list; delete call1; delete call2; delete call3; CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); } void addAllToList() { list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); } void checkUnexpectedNthCallMessage(unsigned int count, const char* expectedOrdinal) { MockExpectedCallsList callList; MockCheckedExpectedCall expectedCallSingle(1); MockCheckedExpectedCall expectedCallMulti(count-1); expectedCallSingle.withName("bar"); expectedCallMulti.withName("bar"); if (count > 1) { callList.addExpectedCall(&expectedCallSingle); expectedCallSingle.callWasMade(1); } if (count > 2) { callList.addExpectedCall(&expectedCallMulti); for (unsigned int i = 1; i < (count - 1); i++) { expectedCallMulti.callWasMade(i+1); } } MockUnexpectedCallHappenedFailure failure(UtestShell::getCurrent(), "bar", callList); SimpleString expectedMessage = StringFromFormat("Mock Failure: Unexpected additional (%s) call to function: bar\n\tEXPECTED", expectedOrdinal); STRCMP_CONTAINS(expectedMessage.asCharString(), failure.getMessage().asCharString()); } }; TEST(MockFailureTest, noErrorFailureSomethingGoneWrong) { MockFailure failure(UtestShell::getCurrent()); STRCMP_EQUAL("Test failed with MockFailure without an error! Something went seriously wrong.", failure.getMessage().asCharString()); } TEST(MockFailureTest, unexpectedCallHappened) { MockUnexpectedCallHappenedFailure failure(UtestShell::getCurrent(), "foobar", *list); STRCMP_EQUAL("Mock Failure: Unexpected call to function: foobar\n" "\tEXPECTED calls that WERE NOT fulfilled:\n" "\t\t\n" "\tEXPECTED calls that WERE fulfilled:\n" "\t\t", failure.getMessage().asCharString()); } TEST(MockFailureTest, expectedCallDidNotHappen) { call1->withName("foobar"); call2->withName("world").withParameter("boo", 2).withParameter("hello", "world"); call3->withName("haphaphap"); call3->callWasMade(1); addAllToList(); MockExpectedCallsDidntHappenFailure failure(UtestShell::getCurrent(), *list); STRCMP_EQUAL("Mock Failure: Expected call WAS NOT fulfilled.\n" "\tEXPECTED calls that WERE NOT fulfilled:\n" "\t\tfoobar -> no parameters (expected 1 call, called 0 times)\n" "\t\tworld -> int boo: <2 (0x2)>, const char* hello: (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled:\n" "\t\thaphaphap -> no parameters (expected 1 call, called 1 time)", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedNthAdditionalCallFailure) { checkUnexpectedNthCallMessage(2, "2nd"); checkUnexpectedNthCallMessage(3, "3rd"); checkUnexpectedNthCallMessage(4, "4th"); checkUnexpectedNthCallMessage(11, "11th"); checkUnexpectedNthCallMessage(12, "12th"); checkUnexpectedNthCallMessage(13, "13th"); checkUnexpectedNthCallMessage(14, "14th"); checkUnexpectedNthCallMessage(21, "21st"); checkUnexpectedNthCallMessage(22, "22nd"); checkUnexpectedNthCallMessage(23, "23rd"); } TEST(MockFailureTest, MockUnexpectedInputParameterFailure) { call1->withName("foo").withParameter("boo", 2); call2->withName("foo").withParameter("boo", 3.3); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("bar"); actualParameter.setValue(2); MockUnexpectedInputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected parameter name to function \"foo\": bar\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\tfoo -> int boo: <2 (0x2)> (expected 1 call, called 0 times)\n" "\t\tfoo -> double boo: <3.3> (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t\n" "\tACTUAL unexpected parameter passed to function: foo\n" "\t\tint bar: <2 (0x2)>", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedOutputParameterFailure) { int out1; int out2; call1->withName("foo").withOutputParameterReturning("boo", &out1, sizeof(out1)); call2->withName("foo").withOutputParameterReturning("boo", &out2, sizeof(out2)); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("bar"); actualParameter.setValue((void *)0x123); MockUnexpectedOutputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected output parameter name to function \"foo\": bar\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\tfoo -> const void* boo: (expected 1 call, called 0 times)\n" "\t\tfoo -> const void* boo: (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t\n" "\tACTUAL unexpected output parameter passed to function: foo\n" "\t\tvoid* bar", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedUnmodifiedOutputParameterFailure) { int out1; call1->withName("foo").withOutputParameterReturning("boo", &out1, sizeof(out1)); call2->withName("foo").withUnmodifiedOutputParameter("boo"); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("bar"); actualParameter.setValue((void *)0x123); MockUnexpectedOutputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected output parameter name to function \"foo\": bar\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\tfoo -> const void* boo: (expected 1 call, called 0 times)\n" "\t\tfoo -> const void* boo: (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t\n" "\tACTUAL unexpected output parameter passed to function: foo\n" "\t\tvoid* bar", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedParameterValueFailure) { call1->withName("foo").withParameter("boo", 2); call2->withName("foo").withParameter("boo", 10); call3->withName("unrelated"); addAllToList(); MockNamedValue actualParameter("boo"); actualParameter.setValue(20); MockUnexpectedInputParameterFailure failure(UtestShell::getCurrent(), "foo", actualParameter, *list); STRCMP_EQUAL("Mock Failure: Unexpected parameter value to parameter \"boo\" to function \"foo\": <20 (0x14)>\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\tfoo -> int boo: <2 (0x2)> (expected 1 call, called 0 times)\n" "\t\tfoo -> int boo: <10 (0xa)> (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t\n" "\tACTUAL unexpected parameter passed to function: foo\n" "\t\tint boo: <20 (0x14)>", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockExpectedParameterDidntHappenFailure) { call1->withName("foo").withParameter("bar", 2).withParameter("boo", "str"); call2->withName("foo").withParameter("bar", 10).withParameter("boo", "bleh"); call2->callWasMade(1); call2->inputParameterWasPassed("bar"); call2->inputParameterWasPassed("boo"); call3->withName("unrelated"); addAllToList(); MockExpectedParameterDidntHappenFailure failure(UtestShell::getCurrent(), "foo", *list); STRCMP_EQUAL("Mock Failure: Expected parameter for function \"foo\" did not happen.\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\tfoo -> int bar: <2 (0x2)>, const char* boo: (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\tfoo -> int bar: <10 (0xa)>, const char* boo: (expected 1 call, called 1 time)\n" "\tMISSING parameters that didn't happen:\n" "\t\tint bar, const char* boo", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockNoWayToCompareCustomTypeFailure) { MockNoWayToCompareCustomTypeFailure failure(UtestShell::getCurrent(), "myType"); STRCMP_EQUAL("MockFailure: No way to compare type . Please install a MockNamedValueComparator.", failure.getMessage().asCharString()); } TEST(MockFailureTest, MockUnexpectedObjectFailure) { call1->withName("foo").onObject((void*) 0x02); call2->withName("foo").onObject((void*) 0x03); call2->callWasMade(1); call2->wasPassedToObject(); call3->withName("unrelated"); addAllToList(); MockUnexpectedObjectFailure failure(UtestShell::getCurrent(), "foo", (void*)0x1, *list); STRCMP_EQUAL(StringFromFormat ( "MockFailure: Function called on an unexpected object: foo\n" "\tActual object for call has address: <%p>\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters (expected 1 call, called 1 time)", (void*) 0x01, (void*) 0x02, (void*) 0x03).asCharString(), failure.getMessage().asCharString()); } TEST(MockFailureTest, MockExpectedObjectDidntHappenFailure) { call1->withName("foo").onObject((void*) 0x02); call2->withName("foo").onObject((void*) 0x03); call2->callWasMade(1); call2->wasPassedToObject(); call3->withName("unrelated"); addAllToList(); MockExpectedObjectDidntHappenFailure failure(UtestShell::getCurrent(), "foo", *list); STRCMP_EQUAL(StringFromFormat( "Mock Failure: Expected call on object for function \"foo\" but it did not happen.\n" "\tEXPECTED calls that WERE NOT fulfilled related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters (expected 1 call, called 0 times)\n" "\tEXPECTED calls that WERE fulfilled related to function: foo\n" "\t\t(object address: %p)::foo -> no parameters (expected 1 call, called 1 time)", (void*) 0x2, (void*) 0x3).asCharString(), failure.getMessage().asCharString()); } cpputest-4.0/tests/CppUTestExt/MockFakeLongLong.cpp000644 000765 000024 00000014334 13663176127 023355 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureReporterForTest.h" TEST_GROUP(FakeLongLongs) { TestTestingFixture fixture; }; #ifndef CPPUTEST_USE_LONG_LONG #define CHECK_TEST_FAILS_PROPER_WITH_TEXT(text) fixture.checkTestFailsWithProperTestLocation(text, __FILE__, __LINE__) static void _actualCallWithFakeLongLongParameter() { cpputest_longlong value = {0}; mock().expectOneCall("foo").withParameter("bar", 0); mock().actualCall("foo").withParameter("bar", value); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ActualCallWithFakeLongLongParameterFAILS) { fixture.runTestWithMethod(_actualCallWithFakeLongLongParameter); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Long Long type is not supported"); } static void _actualCallWithFakeUnsignedLongLongParameter() { cpputest_ulonglong value = {0}; mock().expectOneCall("foo").withParameter("bar", 0); mock().actualCall("foo").withParameter("bar", value); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ActualCallWithFakeUnsignedLongLongParameterFAILS) { fixture.runTestWithMethod(_actualCallWithFakeUnsignedLongLongParameter); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Unsigned Long Long type is not supported"); } static void _actualCallWithFakeLongLongReturn() { mock().expectOneCall("foo").andReturnValue(0); mock().actualCall("foo").returnLongLongIntValue(); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ActualCallWithFakeLongLongReturnFAILS) { fixture.runTestWithMethod(_actualCallWithFakeLongLongReturn); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Long Long type is not supported"); } static void _actualCallWithFakeUnsignedLongLongReturn() { mock().expectOneCall("foo").andReturnValue(0); mock().actualCall("foo").returnUnsignedLongLongIntValue(); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ActualCallWithFakeUnsignedLongLongReturnFAILS) { fixture.runTestWithMethod(_actualCallWithFakeUnsignedLongLongReturn); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Unsigned Long Long type is not supported"); } static void _expectOneCallWithFakeLongLongParameter() { cpputest_longlong value = {0}; mock().expectOneCall("foo").withParameter("bar", value); mock().actualCall("foo").withParameter("bar", 0); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ExpectedCallWithFakeLongLongParameterFAILS) { fixture.runTestWithMethod(_expectOneCallWithFakeLongLongParameter); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Long Long type is not supported"); } static void _expectOneCallWithFakeUnsignedLongLongParameter() { cpputest_ulonglong value = {0}; mock().expectOneCall("foo").withParameter("bar", value); mock().actualCall("foo").withParameter("bar", 0); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ExpectedCallWithFakeUnsignedLongLongParameterFAILS) { fixture.runTestWithMethod(_expectOneCallWithFakeUnsignedLongLongParameter); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Unsigned Long Long type is not supported"); } static void _expectOneCallWithFakeLongLongReturn() { cpputest_longlong value = {0}; mock().expectOneCall("foo").andReturnValue(value); mock().actualCall("foo").returnIntValue(); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ExpectedCallWithFakeLongLongReturnFAILS) { fixture.runTestWithMethod(_expectOneCallWithFakeLongLongReturn); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Long Long type is not supported"); } static void _expectOneCallWithFakeUnsignedLongLongReturn() { cpputest_ulonglong value = {0}; mock().expectOneCall("foo").andReturnValue(value); mock().actualCall("foo").returnIntValue(); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(FakeLongLongs, ExpectedCallWithFakeUnsignedLongLongReturnFAILS) { fixture.runTestWithMethod(_expectOneCallWithFakeUnsignedLongLongReturn); mock().clear(); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Unsigned Long Long type is not supported"); } #endif cpputest-4.0/tests/CppUTestExt/MockSupportTest.cpp000644 000765 000024 00000021103 13663176127 023353 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockSupportTest) { MockExpectedCallsListForTest expectations; MockFailureReporterInstaller failureReporterInstaller; void teardown() { mock().checkExpectations(); CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); mock().clear(); } }; TEST(MockSupportTest, setDataForUnsignedIntegerValues) { unsigned int expected_data = 7; mock().setData("data", expected_data); LONGS_EQUAL(expected_data, mock().getData("data").getUnsignedIntValue()); } TEST(MockSupportTest, setDataForIntegerValues) { int expected_data = 10; mock().setData("data", expected_data); LONGS_EQUAL(expected_data, mock().getData("data").getIntValue()); } TEST(MockSupportTest, setDataForBooleanValues) { bool expected_data = true; mock().setData("data", expected_data); CHECK_EQUAL(expected_data, mock().getData("data").getBoolValue()); } TEST(MockSupportTest, hasDataBeenSet) { CHECK(!mock().hasData("data")); mock().setData("data", 10); CHECK(mock().hasData("data")); } TEST(MockSupportTest, dataCanBeChanged) { mock().setData("data", 10); mock().setData("data", 15); LONGS_EQUAL(15, mock().getData("data").getIntValue()); } TEST(MockSupportTest, uninitializedData) { LONGS_EQUAL(0, mock().getData("nonexisting").getIntValue()); STRCMP_EQUAL("int", mock().getData("nonexisting").getType().asCharString()); } TEST(MockSupportTest, setMultipleData) { mock().setData("data", 1); mock().setData("data2", 10); LONGS_EQUAL(1, mock().getData("data").getIntValue()); LONGS_EQUAL(10, mock().getData("data2").getIntValue()); } TEST(MockSupportTest, setDataString) { mock().setData("data", "string"); STRCMP_EQUAL("string", mock().getData("data").getStringValue()); } TEST(MockSupportTest, setDataDouble) { mock().setData("data", 1.0); DOUBLES_EQUAL(1.0, mock().getData("data").getDoubleValue(), 0.05); } TEST(MockSupportTest, setDataPointer) { void * ptr = (void*) 0x001; mock().setData("data", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getPointerValue()); } TEST(MockSupportTest, setConstDataPointer) { const void * ptr = (const void*) 0x001; mock().setData("data", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getConstPointerValue()); } TEST(MockSupportTest, setDataFunctionPointer) { void (*ptr)() = (void(*)()) 0x001; mock().setData("data", ptr); FUNCTIONPOINTERS_EQUAL(ptr, mock().getData("data").getFunctionPointerValue()); } TEST(MockSupportTest, setDataObject) { void * ptr = (void*) 0x001; mock().setDataObject("data", "type", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getObjectPointer()); STRCMP_EQUAL("type", mock().getData("data").getType().asCharString()); } TEST(MockSupportTest, setDataConstObject) { void * ptr = (void*) 0x011; mock().setDataConstObject("data", "type", ptr); POINTERS_EQUAL(ptr, mock().getData("data").getConstObjectPointer()); STRCMP_EQUAL("type", mock().getData("data").getType().asCharString()); } TEST(MockSupportTest, tracing) { mock().tracing(true); mock().actualCall("boo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock("scope").actualCall("foo").withParameter("double", 1.0).withParameter("int", 1).withParameter("string", "string"); mock().checkExpectations(); STRCMP_CONTAINS("boo", mock().getTraceOutput()); STRCMP_CONTAINS("foo", mock().getTraceOutput()); } TEST(MockSupportTest, tracingWorksHierarchically) { mock("scope").tracing(true); mock().tracing(true); mock().actualCall("boo"); mock("scope").actualCall("foo"); mock().checkExpectations(); STRCMP_CONTAINS("boo", mock().getTraceOutput()); STRCMP_CONTAINS("foo", mock().getTraceOutput()); } TEST_GROUP(MockSupportTestWithFixture) { TestTestingFixture fixture; void teardown() { mock().clear(); MockFailureReporterForTest::clearReporter(); } }; static void CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failedTestMethod_() { MockExpectedCallsList list; MockUnexpectedCallHappenedFailure expectedFailure(UtestShell::getCurrent(), "unexpected", list); mock().actualCall("boo"); CHECK_EXPECTED_MOCK_FAILURE_LOCATION(expectedFailure, "file", 1); } TEST(MockSupportTestWithFixture, CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failed) { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); fixture.setTestFunction(CHECK_EXPECTED_MOCK_FAILURE_LOCATION_failedTestMethod_); fixture.runAllTests(); fixture.assertPrintContains("MockFailures are different."); fixture.assertPrintContains("Expected MockFailure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: unexpected"); fixture.assertPrintContains("Actual MockFailure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: boo"); } static void CHECK_NO_MOCK_FAILURE_LOCATION_failedTestMethod_() { mock().actualCall("boo"); CHECK_NO_MOCK_FAILURE_LOCATION("file", 1); } TEST(MockSupportTestWithFixture, CHECK_NO_MOCK_FAILURE_LOCATION_failed) { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); fixture.setTestFunction(CHECK_NO_MOCK_FAILURE_LOCATION_failedTestMethod_); fixture.runAllTests(); fixture.assertPrintContains("Unexpected mock failure:"); fixture.assertPrintContains("Mock Failure: Unexpected call to function: boo"); } static bool cpputestHasCrashed; static void crashMethod() { cpputestHasCrashed = true; } static void unexpectedCallTestFunction_(void) { mock().actualCall("unexpected"); } // LCOV_EXCL_LINE #include "CppUTestExt/OrderedTest.h" TEST(MockSupportTestWithFixture, shouldCrashOnFailure) { mock().crashOnFailure(true); UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(unexpectedCallTestFunction_); fixture.runAllTests(); CHECK(cpputestHasCrashed); mock().crashOnFailure(false); UtestShell::resetCrashMethod(); } TEST(MockSupportTestWithFixture, ShouldNotCrashOnFailureAfterCrashMethodWasReset) { cpputestHasCrashed = false; UtestShell::setCrashMethod(crashMethod); fixture.setTestFunction(unexpectedCallTestFunction_); UtestShell::resetCrashMethod(); fixture.runAllTests(); fixture.assertPrintContains("Unexpected call to function: unexpected"); CHECK_FALSE(cpputestHasCrashed); } TEST(MockSupportTestWithFixture, failedMockShouldFailAgainWhenRepeated) { fixture.setTestFunction(unexpectedCallTestFunction_); int repeatCount = 2; while(repeatCount--) { fixture.runAllTests(); fixture.assertPrintContains("Unexpected call to function: unexpected"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out"); fixture.flushOutputAndResetResult(); } } cpputest-4.0/tests/CppUTestExt/CMakeLists.txt000644 000765 000024 00000002240 13663176127 022262 0ustar00basvoddestaff000000 000000 set(CppUTestExtTests_src AllTests.cpp CodeMemoryReporterTest.cpp GMockTest.cpp GTest1Test.cpp IEEE754PluginTest.cpp IEEE754PluginTest_c.c MemoryReportAllocatorTest.cpp MemoryReporterPluginTest.cpp MemoryReportFormatterTest.cpp MockActualCallTest.cpp MockCheatSheetTest.cpp MockCallTest.cpp MockComparatorCopierTest.cpp MockExpectedCallTest.cpp ExpectedFunctionsListTest.cpp MockFailureReporterForTest.cpp MockFailureTest.cpp MockHierarchyTest.cpp MockNamedValueTest.cpp MockParameterTest.cpp MockPluginTest.cpp MockSupportTest.cpp MockSupport_cTestCFile.c MockSupport_cTest.cpp MockStrictOrderTest.cpp MockReturnValueTest.cpp OrderedTestTest_c.c OrderedTestTest.cpp ) if (MINGW) find_package (Threads REQUIRED) set(THREAD_LIB "pthread") endif (MINGW) add_executable(CppUTestExtTests ${CppUTestExtTests_src}) cpputest_normalize_test_output_location(CppUTestExtTests) target_link_libraries(CppUTestExtTests CppUTest CppUTestExt ${THREAD_LIB} ${CPPUNIT_EXTERNAL_LIBRARIES}) if (TESTS_BUILD_DISCOVER) cpputest_buildtime_discover_tests(CppUTestExtTests) endif() cpputest-4.0/tests/CppUTestExt/ExpectedFunctionsListTest.cpp000644 000765 000024 00000025350 13663176127 025363 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockExpectedCallsList) { MockExpectedCallsList * list; MockCheckedExpectedCall* call1; MockCheckedExpectedCall* call2; MockCheckedExpectedCall* call3; MockCheckedExpectedCall* call4; void setup() { list = new MockExpectedCallsList; call1 = new MockCheckedExpectedCall; call2 = new MockCheckedExpectedCall; call3 = new MockCheckedExpectedCall; call4 = new MockCheckedExpectedCall; call1->withName("foo"); call2->withName("bar"); call3->withName("boo"); } void teardown() { delete call1; delete call2; delete call3; delete call4; delete list; CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); } }; TEST(MockExpectedCallsList, emptyList) { CHECK(! list->hasUnfulfilledExpectations()); CHECK(! list->hasFinalizedMatchingExpectations()); LONGS_EQUAL(0, list->size()); } TEST(MockExpectedCallsList, addingCalls) { list->addExpectedCall(call1); list->addExpectedCall(call2); LONGS_EQUAL(2, list->size()); } TEST(MockExpectedCallsList, listWithFulfilledExpectationHasNoUnfulfilledOnes) { call1->callWasMade(1); call2->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); CHECK(! list->hasUnfulfilledExpectations()); } TEST(MockExpectedCallsList, listWithFulfilledExpectationButOutOfOrder) { call1->withCallOrder(1); call2->withCallOrder(2); list->addExpectedCall(call1); list->addExpectedCall(call2); call2->callWasMade(1); call1->callWasMade(2); CHECK(! list->hasUnfulfilledExpectations()); CHECK(list->hasCallsOutOfOrder()); } TEST(MockExpectedCallsList, listWithUnFulfilledExpectationHasNoUnfillfilledOnes) { call1->callWasMade(1); call3->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); CHECK(list->hasUnfulfilledExpectations()); } TEST(MockExpectedCallsList, deleteAllExpectationsAndClearList) { list->addExpectedCall(new MockCheckedExpectedCall); list->addExpectedCall(new MockCheckedExpectedCall); list->deleteAllExpectationsAndClearList(); } TEST(MockExpectedCallsList, onlyKeepUnmatchingExpectations) { call1->withName("relate"); call2->withName("unrelate"); call3->withName("relate").withParameter("param",1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepUnmatchingExpectations(); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, onlyKeepExpectationsRelatedTo) { call1->withName("relate"); call2->withName("unrelate"); call3->withName("unrelate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepExpectationsRelatedTo("relate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToTheWoleList) { call1->withName("relate"); call2->withName("relate"); call3->withName("relate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepExpectationsRelatedTo("unrelate"); LONGS_EQUAL(0, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToFirstOne) { call1->withName("relate"); call2->withName("unrelate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->onlyKeepExpectationsRelatedTo("unrelate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, removeAllExpectationsExceptThisThatRelateToLastOne) { call1->withName("unrelate"); call2->withName("relate"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->onlyKeepExpectationsRelatedTo("unrelate"); LONGS_EQUAL(1, list->size()); } TEST(MockExpectedCallsList, onlyKeepExpectationsWithInputParameterName) { call1->withName("func").withParameter("param", 1); call2->withName("func").withParameter("diffname", 1); call3->withName("func").withParameter("diffname", 1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->onlyKeepExpectationsWithInputParameterName("diffname"); LONGS_EQUAL(2, list->size()); } TEST(MockExpectedCallsList, onlyKeepExpectationsWithInputParameter) { MockNamedValue parameter("diffname"); parameter.setValue(1); call1->withName("func").withParameter("param", 1); call2->withName("func").withParameter("diffname", 1); call3->withName("func").withParameter("diffname", 1); call4->withName("func").withParameter("diffname", 2); call3->callWasMade(1); call3->inputParameterWasPassed("diffname"); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); list->addExpectedCall(call4); list->onlyKeepExpectationsWithInputParameter(parameter); LONGS_EQUAL(2, list->size()); } TEST(MockExpectedCallsList, addPotentiallyMatchingExpectationsWithEmptyList) { MockExpectedCallsList newList; newList.addPotentiallyMatchingExpectations(*list); LONGS_EQUAL(0, newList.size()); } TEST(MockExpectedCallsList, addPotentiallyMatchingExpectationsMultipleUnmatchedExpectations) { call2->callWasMade(1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); MockExpectedCallsList newList; newList.addPotentiallyMatchingExpectations(*list); LONGS_EQUAL(2, newList.size()); } TEST(MockExpectedCallsList, amountOfActualCallsFulfilledFor_HasOneRelated) { call1->withName("foo"); call1->callWasMade(1); call2->withName("bar"); call2->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); LONGS_EQUAL(1, list->amountOfActualCallsFulfilledFor("bar")); } TEST(MockExpectedCallsList, amountOfActualCallsFulfilledFor_HasNone) { call1->withName("foo"); call1->callWasMade(1); call2->withName("bar"); list->addExpectedCall(call1); LONGS_EQUAL(0, list->amountOfActualCallsFulfilledFor("bar")); } TEST(MockExpectedCallsList, callToStringForUnfulfilledFunctions) { call1->withName("foo"); call2->withName("bar"); call3->withName("blah"); call3->callWasMade(1); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); SimpleString expectedString; expectedString = StringFromFormat("%s\n%s", call1->callToString().asCharString(), call2->callToString().asCharString()); STRCMP_EQUAL(expectedString.asCharString(), list->unfulfilledCallsToString().asCharString()); } TEST(MockExpectedCallsList, callToStringForFulfilledFunctions) { call1->withName("foo"); call2->withName("bar"); call2->callWasMade(1); call1->callWasMade(2); list->addExpectedCall(call1); list->addExpectedCall(call2); SimpleString expectedString; expectedString = StringFromFormat("%s\n%s", call1->callToString().asCharString(), call2->callToString().asCharString()); STRCMP_EQUAL(expectedString.asCharString(), list->fulfilledCallsToString().asCharString()); } TEST(MockExpectedCallsList, removeOneFinalizedMatchingExpectationFromEmptyList) { POINTERS_EQUAL(NULLPTR, list->removeFirstFinalizedMatchingExpectation()); } TEST(MockExpectedCallsList, getOneMatchingExpectationFromEmptyList) { POINTERS_EQUAL(NULLPTR, list->getFirstMatchingExpectation()); } TEST(MockExpectedCallsList, toStringOnEmptyList) { STRCMP_EQUAL("", list->unfulfilledCallsToString().asCharString()); } TEST(MockExpectedCallsList, hasFinalizedMatchingExpectations_emptyList) { CHECK(! list->hasFinalizedMatchingExpectations()); } TEST(MockExpectedCallsList, hasFinalizedMatchingExpectations_listHasNonMatchingCalls) { call1->withParameter("param", 0); call2->withParameter("param", 0); call3->withParameter("param", 0); list->addExpectedCall(call1); list->addExpectedCall(call2); list->addExpectedCall(call3); CHECK(! list->hasFinalizedMatchingExpectations()); } TEST(MockExpectedCallsList, hasFinalizedMatchingExpectations_listHasMatchingButNotFinalizedCall) { list->addExpectedCall(call1); list->addExpectedCall(call2); call1->ignoreOtherParameters(); call2->withParameter("param", 0); CHECK(! list->hasFinalizedMatchingExpectations()); } TEST(MockExpectedCallsList, hasFinalizedMatchingExpectations_listHasFinalizedCallThatIgnoresParameters) { list->addExpectedCall(call1); list->addExpectedCall(call2); call1->ignoreOtherParameters(); call2->withParameter("param", 0); call1->finalizeActualCallMatch(); CHECK(list->hasFinalizedMatchingExpectations()); } TEST(MockExpectedCallsList, hasFinalizedMatchingExpectations_listHasFinalizedCallThatDoesntIgnoreParameters) { list->addExpectedCall(call1); list->addExpectedCall(call2); call1->withParameter("param", 1); call2->withParameter("param", 0); call1->inputParameterWasPassed("param"); CHECK(list->hasFinalizedMatchingExpectations()); } cpputest-4.0/tests/CppUTestExt/IEEE754PluginTest_c.c000644 000765 000024 00000004110 13663176127 023154 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2015, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "IEEE754PluginTest_c.h" static volatile float f; static volatile float zero_float = 0.0f; void set_divisionbyzero_c(void) { f = 1.0f; f /= zero_float; } void set_overflow_c(void) { f = 1e38f; f *= f; } void set_underflow_c(void) { f = 1e-38f; f *= f; } void set_inexact_c(void) { f = 10.0f; f /= 3.0f; } void set_nothing_c(void) { } void set_everything_c() { set_divisionbyzero_c(); set_overflow_c(); set_underflow_c(); set_inexact_c(); } cpputest-4.0/tests/CppUTestExt/CodeMemoryReporterTest.cpp000644 000765 000024 00000017655 13663176127 024674 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/CodeMemoryReportFormatter.h" #define TESTOUTPUT_EQUAL(a) STRCMP_EQUAL_LOCATION(a, testOutput.getOutput().asCharString(), "", __FILE__, __LINE__) #define TESTOUTPUT_CONTAINS(a) STRCMP_CONTAINS_LOCATION(a, testOutput.getOutput().asCharString(), "", __FILE__, __LINE__) TEST_GROUP(CodeMemoryReportFormatter) { TestMemoryAllocator* cAllocator; TestMemoryAllocator* newAllocator; TestMemoryAllocator* newArrayAllocator; char* memory01; char* memory02; StringBufferTestOutput testOutput; TestResult* testResult; CodeMemoryReportFormatter* formatter; void setup() { cAllocator = defaultMallocAllocator(); newAllocator = defaultNewAllocator(); newArrayAllocator= defaultNewArrayAllocator(); memory01 = (char*) 0x01; memory02 = (char*) 0x02; formatter = new CodeMemoryReportFormatter(cAllocator); testResult = new TestResult(testOutput); } void teardown() { delete testResult; delete formatter; } }; TEST(CodeMemoryReportFormatter, mallocCreatesAnMallocCall) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 9); TESTOUTPUT_EQUAL("\tvoid* file_9_1 = malloc(10);\n"); } TEST(CodeMemoryReportFormatter, freeCreatesAnFreeCall) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 9); testOutput.flush(); formatter->report_free_memory(testResult, cAllocator, memory01, "boo", 6); TESTOUTPUT_EQUAL("\tfree(file_9_1); /* at boo:6 */\n"); } TEST(CodeMemoryReportFormatter, twoMallocAndTwoFree) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 2); formatter->report_alloc_memory(testResult, cAllocator, 10, memory02, "boo", 4); testOutput.flush(); formatter->report_free_memory(testResult, cAllocator, memory01, "foo", 6); formatter->report_free_memory(testResult, cAllocator, memory02, "bar", 8); TESTOUTPUT_CONTAINS("\tfree(file_2_1); /* at foo:6 */\n"); TESTOUTPUT_CONTAINS("\tfree(boo_4_1); /* at bar:8 */\n"); } TEST(CodeMemoryReportFormatter, variableNamesShouldNotContainSlahses) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "dir/file", 2); TESTOUTPUT_CONTAINS("\tvoid* file_2"); } TEST(CodeMemoryReportFormatter, variableNamesShouldNotContainDotButUseUnderscore) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "foo.cpp", 2); TESTOUTPUT_CONTAINS("foo_cpp"); } TEST(CodeMemoryReportFormatter, newArrayAllocatorGeneratesNewArrayCode) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); TESTOUTPUT_CONTAINS("char* file_8_1 = new char[10]; /* using new [] */"); } TEST(CodeMemoryReportFormatter, newArrayGeneratesNewCode) { formatter->report_alloc_memory(testResult, newAllocator, 6, memory01, "file", 4); TESTOUTPUT_CONTAINS("new char[6]; /* using new */"); } TEST(CodeMemoryReportFormatter, NewAllocatorGeneratesDeleteCode) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newAllocator, memory01, "boo", 4); TESTOUTPUT_CONTAINS("delete [] file_8_1; /* using delete at boo:4 */"); } TEST(CodeMemoryReportFormatter, DeleteNullWorksFine) { formatter->report_free_memory(testResult, newAllocator, NULLPTR, "boo", 4); TESTOUTPUT_CONTAINS("delete [] NULL; /* using delete at boo:4 */"); } TEST(CodeMemoryReportFormatter, NewArrayAllocatorGeneratesDeleteArrayCode) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newArrayAllocator, memory01, "boo", 4); TESTOUTPUT_CONTAINS("delete [] file_8_1; /* using delete [] at boo:4 */"); } TEST(CodeMemoryReportFormatter, allocationUsingMallocOnTheSameLineDoesntGenerateTheSameVariableTwice) { formatter->report_alloc_memory(testResult, cAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_alloc_memory(testResult, cAllocator, 10, memory02, "file", 8); CHECK(testOutput.getOutput().contains("2")); } TEST(CodeMemoryReportFormatter, allocationUsingNewcOnTheSameLineDoesntGenerateTheSameVariableTwice) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); CHECK(testOutput.getOutput().contains("2")); } TEST(CodeMemoryReportFormatter, allocationUsingNewcOnTheSameLineDoesntGenerateVariableTwiceExceptWhenInANewTest) { formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); formatter->report_test_start(testResult, *UtestShell::getCurrent()); testOutput.flush(); formatter->report_alloc_memory(testResult, newAllocator, 10, memory01, "file", 8); CHECK(testOutput.getOutput().contains("char*")); } TEST(CodeMemoryReportFormatter, testStartGeneratesTESTcode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_test_start(testResult, test); TESTOUTPUT_EQUAL("*/\nTEST(groupName_memoryReport, testName)\n{ /* at fileName:1 */\n"); } TEST(CodeMemoryReportFormatter, testEndGeneratesTESTcode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_test_end(testResult, test); TESTOUTPUT_EQUAL("}/*"); } TEST(CodeMemoryReportFormatter, TestGroupGeneratesTestGroupCode) { UtestShell test("groupName", "testName", "fileName", 1); formatter->report_testgroup_start(testResult, test); TESTOUTPUT_EQUAL("*/TEST_GROUP(groupName_memoryReport)\n{\n};\n/*"); } TEST(CodeMemoryReportFormatter, VariableFromFileLineInfoAlreadyExists) { for(int i = 1; i < 100; i++) { formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); } formatter->report_alloc_memory(testResult, newArrayAllocator, 10, memory01, "file", 8); testOutput.flush(); formatter->report_free_memory(testResult, newArrayAllocator, memory01, "boo", 8); TESTOUTPUT_CONTAINS("delete [] ; /* using delete [] at boo:8 */"); } // TODO: do! /* Dealloc without alloc */ /* Remove the ugly comments by controlling the output! */ /* Write tests for the variable name lengths */ cpputest-4.0/tests/CppUTestExt/MockComparatorCopierTest.cpp000644 000765 000024 00000056763 13663176127 025174 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockComparatorCopierTest) { void teardown() { mock().checkExpectations(); mock().clear(); mock().removeAllComparatorsAndCopiers(); } }; class MyTypeForTesting { public: MyTypeForTesting(long val) { value = new long(val); } virtual ~MyTypeForTesting() { delete value; } long *value; }; class MyTypeForTestingComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { const MyTypeForTesting* obj1 = (const MyTypeForTesting*) object1; const MyTypeForTesting* obj2 = (const MyTypeForTesting*) object2; return *(obj1->value) == *(obj2->value); } virtual SimpleString valueToString(const void* object) { const MyTypeForTesting* obj = (const MyTypeForTesting*) object; return StringFrom(*(obj->value)); } }; class MyTypeForTestingCopier : public MockNamedValueCopier { public: virtual void copy(void* dst_, const void* src_) { MyTypeForTesting* dst = (MyTypeForTesting*) dst_; const MyTypeForTesting* src = (const MyTypeForTesting*) src_; *(dst->value) = *(src->value); } }; TEST(MockComparatorCopierTest, customObjectParameterFailsWhenNotHavingAComparisonRepository) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(1); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); MockNoWayToCompareCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockComparatorCopierTest, customObjectParameterFailsWhenNotHavingACopierRepository) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(1); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &object); MockNoWayToCopyCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockComparatorCopierTest, customObjectParameterSucceeds) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); mock().removeAllComparatorsAndCopiers(); } static bool myTypeIsEqual(const void* object1, const void* object2) { return ((const MyTypeForTesting*)object1)->value == ((const MyTypeForTesting*)object2)->value; } static SimpleString myTypeValueToString(const void* object) { return StringFrom(((const MyTypeForTesting*)object)->value); } TEST(MockComparatorCopierTest, customObjectWithFunctionComparator) { MyTypeForTesting object(1); MockFunctionComparator comparator(myTypeIsEqual, myTypeValueToString); mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customObjectWithFunctionComparatorThatFailsCoversValueToString) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(5); MockFunctionComparator comparator(myTypeIsEqual, myTypeValueToString); mock().installComparator("MyTypeForTesting", comparator); MockExpectedCallsListForTest expectations; expectations.addFunction("function")->withParameterOfType("MyTypeForTesting", "parameterName", &object); MockExpectedCallsDidntHappenFailure failure(UtestShell::getCurrent(), expectations); mock().expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE_LOCATION(failure, __FILE__, __LINE__); } TEST(MockComparatorCopierTest, customTypeOutputParameterSucceeds) { MyTypeForTesting expectedObject(55); MyTypeForTesting actualObject(99); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject); mock().checkExpectations(); CHECK_EQUAL(55, *(expectedObject.value)); CHECK_EQUAL(55, *(actualObject.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, noActualCallForCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(1); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, unexpectedCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting actualObject(8834); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo"); MockNamedValue parameter("parameterName"); parameter.setConstObjectPointer("MyTypeForTesting", &actualObject); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo"); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputParameterMissing) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(123464); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().actualCall("foo"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputParameterOfWrongType) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(123464); MyTypeForTesting actualObject(75646); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockNamedValue parameter("output"); parameter.setConstObjectPointer("OtherTypeForTesting", &actualObject); MockUnexpectedOutputParameterFailure expectedFailure(mockFailureTest(), "foo", parameter, expectations); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().actualCall("foo").withOutputParameterOfType("OtherTypeForTesting", "output", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, noCopierForCustomTypeOutputParameter) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting expectedObject(123464); MyTypeForTesting actualObject(8834); MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); MockNoWayToCopyCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "output", &expectedObject); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "output", &actualObject); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockComparatorCopierTest, twoCustomTypeOutputParameters) { MyTypeForTesting expectedObject1(545); MyTypeForTesting actualObject1(979); MyTypeForTesting expectedObject2(123); MyTypeForTesting actualObject2(4567); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject1).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject2).withParameter("id", 2); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject1).withParameter("id", 1); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject2).withParameter("id", 2); mock().checkExpectations(); CHECK_EQUAL(545, *(expectedObject1.value)); CHECK_EQUAL(545, *(actualObject1.value)); CHECK_EQUAL(123, *(expectedObject2.value)); CHECK_EQUAL(123, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, twoInterleavedCustomTypeOutputParameters) { MyTypeForTesting expectedObject1(9545); MyTypeForTesting actualObject1(79); MyTypeForTesting expectedObject2(132); MyTypeForTesting actualObject2(743); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject1).withParameter("id", 1); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject2).withParameter("id", 2); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject2).withParameter("id", 2); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject1).withParameter("id", 1); mock().checkExpectations(); CHECK_EQUAL(9545, *(expectedObject1.value)); CHECK_EQUAL(9545, *(actualObject1.value)); CHECK_EQUAL(132, *(expectedObject2.value)); CHECK_EQUAL(132, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, twoDifferentCustomTypeOutputParametersInSameFunctionCallSucceeds) { MyTypeForTesting expectedObject1(11); MyTypeForTesting actualObject1(22); MyTypeForTesting expectedObject2(33); MyTypeForTesting actualObject2(44); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("foo") .withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &expectedObject1) .withOutputParameterOfTypeReturning("MyTypeForTesting", "foobar", &expectedObject2); mock().actualCall("foo") .withOutputParameterOfType("MyTypeForTesting", "bar", &actualObject1) .withOutputParameterOfType("MyTypeForTesting", "foobar", &actualObject2); mock().checkExpectations(); CHECK_EQUAL(11, *(expectedObject1.value)); CHECK_EQUAL(11, *(actualObject1.value)); CHECK_EQUAL(33, *(expectedObject2.value)); CHECK_EQUAL(33, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputAndInputParametersOfSameNameInDifferentFunctionCallsOfSameFunctionSucceeds) { MyTypeForTesting expectedObject1(911); MyTypeForTesting actualObject1(6576878); MyTypeForTesting expectedObject2(123); MyTypeForTesting actualObject2(123); MyTypeForTestingCopier copier; MyTypeForTestingComparator comparator; mock().installCopier("MyTypeForTesting", copier); mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &expectedObject1); mock().expectOneCall("foo").withParameterOfType("MyTypeForTesting", "bar", &expectedObject2); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "bar", &actualObject1); mock().actualCall("foo").withParameterOfType("MyTypeForTesting", "bar", &actualObject2); mock().checkExpectations(); CHECK_EQUAL(911, *(expectedObject1.value)); CHECK_EQUAL(911, *(actualObject1.value)); CHECK_EQUAL(123, *(expectedObject2.value)); CHECK_EQUAL(123, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, twoCustomTypeOutputParametersOfSameNameInDifferentFunctionsSucceeds) { MyTypeForTesting expectedObject1(657); MyTypeForTesting actualObject1(984465); MyTypeForTesting expectedObject2(987); MyTypeForTesting actualObject2(987); MyTypeForTestingCopier copier; MyTypeForTestingComparator comparator; mock().installCopier("MyTypeForTesting", copier); mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("foo1").withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &expectedObject1); mock().expectOneCall("foo2").withParameterOfType("MyTypeForTesting", "bar", &expectedObject2); mock().actualCall("foo1").withOutputParameterOfType("MyTypeForTesting", "bar", &actualObject1); mock().actualCall("foo2").withParameterOfType("MyTypeForTesting", "bar", &actualObject2); mock().checkExpectations(); CHECK_EQUAL(657, *(expectedObject1.value)); CHECK_EQUAL(657, *(actualObject1.value)); CHECK_EQUAL(987, *(expectedObject2.value)); CHECK_EQUAL(987, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputAndInputParameterOfSameTypeInSameFunctionCall) { MyTypeForTesting expectedObject1(45); MyTypeForTesting actualObject1(45); MyTypeForTesting expectedObject2(987765443); MyTypeForTesting actualObject2(0); MyTypeForTestingCopier copier; MyTypeForTestingComparator comparator; mock().installCopier("MyTypeForTesting", copier); mock().installComparator("MyTypeForTesting", comparator); mock().expectOneCall("foo") .withParameterOfType("MyTypeForTesting", "bar", &expectedObject1) .withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &expectedObject2); mock().actualCall("foo") .withParameterOfType("MyTypeForTesting", "bar", &actualObject1) .withOutputParameterOfType("MyTypeForTesting", "bar", &actualObject2); mock().checkExpectations(); CHECK_EQUAL(45, *(expectedObject1.value)); CHECK_EQUAL(45, *(actualObject1.value)); CHECK_EQUAL(987765443, *(expectedObject2.value)); CHECK_EQUAL(987765443, *(actualObject2.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputParameterTraced) { MyTypeForTesting actualObject(676789); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().tracing(true); mock().actualCall("someFunc").withOutputParameterOfType("MyTypeForTesting", "someParameter", &actualObject); mock().checkExpectations(); STRCMP_CONTAINS("Function name:someFunc MyTypeForTesting someParameter:", mock().getTraceOutput()); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, customTypeOutputParameterWithIgnoredParameters) { MyTypeForTesting expectedObject(444537909); MyTypeForTesting actualObject(98765); MyTypeForTestingCopier copier; mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &expectedObject).ignoreOtherParameters(); mock().actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "bar", &actualObject).withParameter("other", 1); mock().checkExpectations(); CHECK_EQUAL(444537909, *(expectedObject.value)); CHECK_EQUAL(444537909, *(actualObject.value)); mock().removeAllComparatorsAndCopiers(); } static void myTypeCopy(void* dst_, const void* src_) { MyTypeForTesting* dst = (MyTypeForTesting*) dst_; const MyTypeForTesting* src = (const MyTypeForTesting*) src_; *(dst->value) = *(src->value); } TEST(MockComparatorCopierTest, customObjectWithFunctionCopier) { MyTypeForTesting expectedObject(9874452); MyTypeForTesting actualObject(2034); MockFunctionCopier copier(myTypeCopy); mock().installCopier("MyTypeForTesting", copier); mock().expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &expectedObject); mock().actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &actualObject); mock().checkExpectations(); CHECK_EQUAL(9874452, *(expectedObject.value)); CHECK_EQUAL(9874452, *(actualObject.value)); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, removingComparatorsWorksHierachically) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock("scope").installComparator("MyTypeForTesting", comparator); mock().removeAllComparatorsAndCopiers(); mock("scope").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("scope").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); MockNoWayToCompareCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockComparatorCopierTest, removingCopiersWorksHierachically) { MockFailureReporterInstaller failureReporterInstaller; MyTypeForTesting object(1); MyTypeForTestingCopier copier; mock("scope").installCopier("MyTypeForTesting", copier); mock().removeAllComparatorsAndCopiers(); mock("scope").expectOneCall("foo").withOutputParameterOfTypeReturning("MyTypeForTesting", "bar", &object); mock("scope").actualCall("foo").withOutputParameterOfType("MyTypeForTesting", "bar", &object); MockNoWayToCopyCustomTypeFailure expectedFailure(mockFailureTest(), "MyTypeForTesting"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockComparatorCopierTest, installComparatorWorksHierarchicalOnBothExistingAndDynamicallyCreatedMockSupports) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; mock("existing"); mock().installComparator("MyTypeForTesting", comparator); mock("existing").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("existing").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("dynamic").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("dynamic").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, installComparatorsWorksHierarchical) { MyTypeForTesting object(1); MyTypeForTestingComparator comparator; MockNamedValueComparatorsAndCopiersRepository repos; repos.installComparator("MyTypeForTesting", comparator); mock("existing"); mock().installComparatorsAndCopiers(repos); mock("existing").expectOneCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock("existing").actualCall("function").withParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); mock().removeAllComparatorsAndCopiers(); } TEST(MockComparatorCopierTest, installCopiersWorksHierarchically) { MyTypeForTesting object(1); MyTypeForTestingCopier copier; mock("existing"); mock().installCopier("MyTypeForTesting", copier); mock("existing").expectOneCall("function").withOutputParameterOfTypeReturning("MyTypeForTesting", "parameterName", &object); mock("existing").actualCall("function").withOutputParameterOfType("MyTypeForTesting", "parameterName", &object); mock().checkExpectations(); mock().removeAllComparatorsAndCopiers(); } class StubComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void*, const void*) { return true; } virtual SimpleString valueToString(const void*) { return ""; } }; struct SomeClass { int someDummy_; }; static void functionWithConstParam(const SomeClass param) { mock().actualCall("functionWithConstParam").withParameterOfType("SomeClass", "param", ¶m); } TEST(MockComparatorCopierTest, shouldSupportConstParameters) { StubComparator comparator; mock().installComparator("SomeClass", comparator); SomeClass param; mock().expectOneCall("functionWithConstParam").withParameterOfType("SomeClass", "param", ¶m); functionWithConstParam(param); mock().checkExpectations(); } cpputest-4.0/tests/CppUTestExt/GMockTest.cpp000644 000765 000024 00000005407 13663176127 022076 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef CPPUTEST_INCLUDE_GTEST_TESTS #include "CppUTestExt/GMock.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(GMock) { TestTestingFixture *fixture; void setup() { fixture = new TestTestingFixture; } void teardown() { delete fixture; } }; class myMock { public: MOCK_METHOD0(methodName, int()); }; static void failedMockCall() { myMock mock; EXPECT_CALL(mock, methodName()).WillOnce(Return(1)); } TEST(GMock, GMockFailuresWorkAsExpected) { fixture->setTestFunction(failedMockCall); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } static void failedMockCallAfterOneSuccess() { myMock mock; EXPECT_CALL(mock, methodName()).Times(2).WillRepeatedly(Return(1)); mock.methodName(); } TEST(GMock, GMockFailuresWorkAsExpectedWithTwoExpectedCallButJustOneActual) { fixture->setTestFunction(failedMockCallAfterOneSuccess); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } TEST(GMock, GMockNiceMocksWorkFine) { NiceMock mock; mock.methodName(); } #endif cpputest-4.0/tests/CppUTestExt/MockPluginTest.cpp000644 000765 000024 00000013567 13663176127 023154 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockSupportPlugin.h" #include "MockFailureReporterForTest.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(MockPlugin) { StringBufferTestOutput output; UtestShell *test; TestResult *result; MockSupportPlugin plugin; void setup() { test = new UtestShell("group", "name", "file", 1); result = new TestResult(output); } void teardown() { delete test; delete result; mock().clear(); mock().removeAllComparatorsAndCopiers(); } }; TEST(MockPlugin, checkExpectationsAndClearAtEnd) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foobar"); MockExpectedCallsDidntHappenFailure expectedFailure(test, expectations); mock().expectOneCall("foobar"); plugin.postTestAction(*test, *result); STRCMP_CONTAINS(expectedFailure.getMessage().asCharString(), output.getOutput().asCharString()); LONGS_EQUAL(0, mock().expectedCallsLeft()); CHECK_NO_MOCK_FAILURE(); } TEST(MockPlugin, checkExpectationsWorksAlsoWithHierachicalObjects) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("differentScope::foobar")->onObject((void*) 1); MockExpectedObjectDidntHappenFailure expectedFailure(test, "differentScope::foobar", expectations); mock("differentScope").expectOneCall("foobar").onObject((void*) 1); mock("differentScope").actualCall("foobar"); plugin.postTestAction(*test, *result); STRCMP_CONTAINS(expectedFailure.getMessage().asCharString(), output.getOutput().asCharString()); CHECK_NO_MOCK_FAILURE(); } class DummyComparator : public MockNamedValueComparator { public: bool isEqual(const void* object1, const void* object2) { return object1 == object2; } SimpleString valueToString(const void*) { return "string"; } }; TEST(MockPlugin, installComparatorRecordsTheComparatorButNotInstallsItYet) { MockFailureReporterInstaller failureReporterInstaller; DummyComparator comparator; plugin.installComparator("myType", comparator); mock().expectOneCall("foo").withParameterOfType("myType", "name", NULLPTR); mock().actualCall("foo").withParameterOfType("myType", "name", NULLPTR); MockNoWayToCompareCustomTypeFailure failure(test, "myType"); CHECK_EXPECTED_MOCK_FAILURE(failure); plugin.clear(); } class DummyCopier : public MockNamedValueCopier { public: void copy(void* dst, const void* src) { *(int*)dst = *(const int*)src; } }; TEST(MockPlugin, installCopierRecordsTheCopierButNotInstallsItYet) { MockFailureReporterInstaller failureReporterInstaller; DummyCopier copier; plugin.installCopier("myType", copier); mock().expectOneCall("foo").withOutputParameterOfTypeReturning("myType", "name", NULLPTR); mock().actualCall("foo").withOutputParameterOfType("myType", "name", NULLPTR); MockNoWayToCopyCustomTypeFailure failure(test, "myType"); CHECK_EXPECTED_MOCK_FAILURE(failure); plugin.clear(); } TEST(MockPlugin, preTestActionWillEnableMultipleComparatorsToTheGlobalMockSupportSpace) { DummyComparator comparator; DummyComparator comparator2; plugin.installComparator("myType", comparator); plugin.installComparator("myOtherType", comparator2); plugin.preTestAction(*test, *result); mock().expectOneCall("foo").withParameterOfType("myType", "name", &comparator); mock().expectOneCall("foo").withParameterOfType("myOtherType", "name", &comparator); mock().actualCall("foo").withParameterOfType("myType", "name", &comparator); mock().actualCall("foo").withParameterOfType("myOtherType", "name", &comparator); mock().checkExpectations(); LONGS_EQUAL(0, result->getFailureCount()); plugin.clear(); } static void _failTwiceFunction() { mock().expectOneCall("foobar"); FAIL("This failed"); } TEST(MockPlugin, shouldNotFailAgainWhenTestAlreadyFailed) { TestTestingFixture fixture; fixture.installPlugin(&plugin); fixture.setTestFunction(_failTwiceFunction); fixture.runAllTests(); fixture.assertPrintContains("1 failures, 1 tests, 1 ran, 2 checks,"); } cpputest-4.0/tests/CppUTestExt/MockExpectedCallTest.cpp000644 000765 000024 00000100364 13663176127 024243 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureReporterForTest.h" class TypeForTestingExpectedFunctionCall { public: TypeForTestingExpectedFunctionCall(int val) { value = new int(val); } virtual ~TypeForTestingExpectedFunctionCall() { delete value; } int *value; }; class TypeForTestingExpectedFunctionCallComparator : public MockNamedValueComparator { public: virtual bool isEqual(const void* object1, const void* object2) { const TypeForTestingExpectedFunctionCall* obj1 = (const TypeForTestingExpectedFunctionCall*) object1; const TypeForTestingExpectedFunctionCall* obj2 = (const TypeForTestingExpectedFunctionCall*) object2; return *(obj1->value) == *(obj2->value); } virtual SimpleString valueToString(const void* object) { const TypeForTestingExpectedFunctionCall* obj = (const TypeForTestingExpectedFunctionCall*) object; return StringFrom(*(obj->value)); } }; class TypeForTestingExpectedFunctionCallCopier : public MockNamedValueCopier { public: virtual void copy(void* dst_, const void* src_) { TypeForTestingExpectedFunctionCall* dst = (TypeForTestingExpectedFunctionCall*) dst_; const TypeForTestingExpectedFunctionCall* src = (const TypeForTestingExpectedFunctionCall*) src_; *(dst->value) = *(src->value); } }; TEST_GROUP(MockNamedValueHandlerRepository) { void teardown() { CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); } }; TEST(MockNamedValueHandlerRepository, getComparatorForNonExistingName) { MockNamedValueComparatorsAndCopiersRepository repository; POINTERS_EQUAL(NULLPTR, repository.getComparatorForType("typeName")); } TEST(MockNamedValueHandlerRepository, installComparator) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorsAndCopiersRepository repository; repository.installComparator("typeName", comparator); POINTERS_EQUAL(&comparator, repository.getComparatorForType("typeName")); } TEST(MockNamedValueHandlerRepository, installMultipleComparators) { TypeForTestingExpectedFunctionCallComparator comparator1, comparator2, comparator3; MockNamedValueComparatorsAndCopiersRepository repository; repository.installComparator("type1", comparator1); repository.installComparator("type2", comparator2); repository.installComparator("type3", comparator3); POINTERS_EQUAL(&comparator3, repository.getComparatorForType("type3")); POINTERS_EQUAL(&comparator2, repository.getComparatorForType("type2")); POINTERS_EQUAL(&comparator1, repository.getComparatorForType("type1")); } TEST(MockNamedValueHandlerRepository, getCopierForNonExistingName) { MockNamedValueComparatorsAndCopiersRepository repository; POINTERS_EQUAL(NULLPTR, repository.getCopierForType("typeName")); } TEST(MockNamedValueHandlerRepository, installCopier) { TypeForTestingExpectedFunctionCallCopier copier; MockNamedValueComparatorsAndCopiersRepository repository; repository.installCopier("typeName", copier); POINTERS_EQUAL(&copier, repository.getCopierForType("typeName")); } TEST(MockNamedValueHandlerRepository, installMultipleCopiers) { TypeForTestingExpectedFunctionCallCopier copier1, copier2, copier3; MockNamedValueComparatorsAndCopiersRepository repository; repository.installCopier("type1", copier1); repository.installCopier("type2", copier2); repository.installCopier("type3", copier3); POINTERS_EQUAL(&copier3, repository.getCopierForType("type3")); POINTERS_EQUAL(&copier2, repository.getCopierForType("type2")); POINTERS_EQUAL(&copier1, repository.getCopierForType("type1")); } TEST(MockNamedValueHandlerRepository, installMultipleHandlers) { TypeForTestingExpectedFunctionCallCopier copier1, copier2, copier3; TypeForTestingExpectedFunctionCallComparator comparator1, comparator2, comparator3; MockNamedValueComparatorsAndCopiersRepository repository; repository.installCopier("type1", copier1); repository.installComparator("type1", comparator1); repository.installCopier("type2", copier2); repository.installCopier("type3", copier3); repository.installComparator("type2", comparator2); repository.installComparator("type3", comparator3); POINTERS_EQUAL(&comparator3, repository.getComparatorForType("type3")); POINTERS_EQUAL(&comparator2, repository.getComparatorForType("type2")); POINTERS_EQUAL(&comparator1, repository.getComparatorForType("type1")); POINTERS_EQUAL(&copier3, repository.getCopierForType("type3")); POINTERS_EQUAL(&copier2, repository.getCopierForType("type2")); POINTERS_EQUAL(&copier1, repository.getCopierForType("type1")); } TEST_GROUP(MockExpectedCall) { MockCheckedExpectedCall* call; MockNamedValueComparatorsAndCopiersRepository* originalComparatorRepository; void setup() { originalComparatorRepository = MockNamedValue::getDefaultComparatorsAndCopiersRepository(); call = new MockCheckedExpectedCall(1); call->withName("funcName"); } void teardown() { MockNamedValue::setDefaultComparatorsAndCopiersRepository(originalComparatorRepository); delete call; CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); } }; TEST(MockExpectedCall, callWithoutParameterSetOrNotFound) { STRCMP_EQUAL("", call->getInputParameterType("nonexisting").asCharString()); LONGS_EQUAL(0, call->getInputParameter("nonexisting").getIntValue()); CHECK(!call->hasInputParameterWithName("nonexisting")); } TEST(MockExpectedCall, callWithUnsignedIntegerParameter) { const SimpleString paramName = "paramName"; unsigned int value = 356; call->withParameter(paramName, value); STRCMP_EQUAL("unsigned int", call->getInputParameterType(paramName).asCharString()); LONGS_EQUAL(value, call->getInputParameter(paramName).getUnsignedIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> unsigned int paramName: <356 (0x164)>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithIntegerParameter) { const SimpleString paramName = "paramName"; int value = 2; call->withParameter(paramName, value); STRCMP_EQUAL("int", call->getInputParameterType(paramName).asCharString()); LONGS_EQUAL(value, call->getInputParameter(paramName).getIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> int paramName: <2 (0x2)>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithBooleanParameter) { const SimpleString paramName = "paramName"; bool value = true; call->withParameter(paramName, value); STRCMP_EQUAL("bool", call->getInputParameterType(paramName).asCharString()); CHECK_EQUAL(value, call->getInputParameter(paramName).getBoolValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> bool paramName: ", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithUnsignedLongIntegerParameter) { const SimpleString paramName = "paramName"; unsigned long value = 888; call->withParameter(paramName, value); STRCMP_EQUAL("unsigned long int", call->getInputParameterType(paramName).asCharString()); LONGS_EQUAL(value, call->getInputParameter(paramName).getUnsignedLongIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> unsigned long int paramName: <888 (0x378)>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithLongIntegerParameter) { const SimpleString paramName = "paramName"; long value = 777; call->withParameter(paramName, value); STRCMP_EQUAL("long int", call->getInputParameterType(paramName).asCharString()); LONGS_EQUAL(value, call->getInputParameter(paramName).getLongIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> long int paramName: <777 (0x309)>", call->callToString().asCharString()); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockExpectedCall, callWithUnsignedLongLongIntegerParameter) { const SimpleString paramName = "paramName"; unsigned long long value = 888; call->withParameter(paramName, value); STRCMP_EQUAL("unsigned long long int", call->getInputParameterType(paramName).asCharString()); UNSIGNED_LONGLONGS_EQUAL(value, call->getInputParameter(paramName).getUnsignedLongLongIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> unsigned long long int paramName: <888 (0x378)>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithLongLongIntegerParameter) { const SimpleString paramName = "paramName"; long long value = 777; call->withParameter(paramName, value); STRCMP_EQUAL("long long int", call->getInputParameterType(paramName).asCharString()); LONGLONGS_EQUAL(value, call->getInputParameter(paramName).getLongLongIntValue()); CHECK(call->hasInputParameterWithName(paramName)); STRCMP_CONTAINS("funcName -> long long int paramName: <777 (0x309)>", call->callToString().asCharString()); } #endif TEST(MockExpectedCall, callWithDoubleParameter) { const SimpleString paramName = "paramName"; double value = 1.2; call->withParameter(paramName, value); STRCMP_EQUAL("double", call->getInputParameterType(paramName).asCharString()); DOUBLES_EQUAL(value, call->getInputParameter(paramName).getDoubleValue(), 0.0); STRCMP_CONTAINS("funcName -> double paramName: <1.2>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithDoubleParameterAndTolerance) { const SimpleString paramName = "paramName"; double value = 1.2; double tolerance = 0.2; call->withParameter(paramName, value, tolerance); STRCMP_EQUAL("double", call->getInputParameterType(paramName).asCharString()); DOUBLES_EQUAL(value, call->getInputParameter(paramName).getDoubleValue(), 0.0); DOUBLES_EQUAL(tolerance, call->getInputParameter(paramName).getDoubleTolerance(), 0.0); STRCMP_CONTAINS("funcName -> double paramName: <1.2>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithStringParameter) { const SimpleString paramName = "paramName"; const char* value = "hello world"; call->withParameter(paramName, value); STRCMP_EQUAL("const char*", call->getInputParameterType(paramName).asCharString()); STRCMP_EQUAL(value, call->getInputParameter(paramName).getStringValue()); STRCMP_CONTAINS("funcName -> const char* paramName: ", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithPointerParameter) { const SimpleString paramName = "paramName"; void* value = (void*) 0x123; call->withParameter(paramName, value); STRCMP_EQUAL("void*", call->getInputParameterType(paramName).asCharString()); POINTERS_EQUAL(value, call->getInputParameter(paramName).getPointerValue()); STRCMP_CONTAINS("funcName -> void* paramName: <0x123>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithConstPointerParameter) { const SimpleString paramName = "paramName"; const void* value = (const void*) 0x345; call->withParameter(paramName, value); STRCMP_EQUAL("const void*", call->getInputParameterType(paramName).asCharString()); POINTERS_EQUAL(value, call->getInputParameter(paramName).getConstPointerValue()); STRCMP_CONTAINS("funcName -> const void* paramName: <0x345>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithFunctionPointerParameter) { const SimpleString paramName = "paramName"; void (*value)() = (void (*)()) 0xdead; call->withParameter(paramName, value); STRCMP_EQUAL("void (*)()", call->getInputParameterType(paramName).asCharString()); FUNCTIONPOINTERS_EQUAL(value, call->getInputParameter(paramName).getFunctionPointerValue()); STRCMP_CONTAINS("funcName -> void (*)() paramName: <0xdead>", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithMemoryBuffer) { const SimpleString paramName = "paramName"; const unsigned char value[] = { 0x12, 0xFE, 0xA1 }; call->withParameter(paramName, value, sizeof(value)); STRCMP_EQUAL("const unsigned char*", call->getInputParameterType(paramName).asCharString()); POINTERS_EQUAL( (void*) value, (void*) call->getInputParameter(paramName).getMemoryBuffer() ); LONGS_EQUAL(sizeof(value), call->getInputParameter(paramName).getSize()); STRCMP_CONTAINS("funcName -> const unsigned char* paramName: ", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithObjectParameter) { const SimpleString paramName = "paramName"; void* value = (void*) 0x123; call->withParameterOfType("ClassName", paramName, value); POINTERS_EQUAL(value, call->getInputParameter(paramName).getConstObjectPointer()); STRCMP_EQUAL("ClassName", call->getInputParameterType(paramName).asCharString()); STRCMP_CONTAINS("funcName -> ClassName paramName: ", call->callToString().asCharString()); } TEST(MockExpectedCall, callWithObjectParameterUnequalComparison) { TypeForTestingExpectedFunctionCall type(1), unequalType(2); MockNamedValue parameter("name"); parameter.setConstObjectPointer("type", &unequalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparisonButFailsWithoutRepository) { TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setConstObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparisonButFailsWithoutComparator) { MockNamedValueComparatorsAndCopiersRepository repository; MockNamedValue::setDefaultComparatorsAndCopiersRepository(&repository); TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setConstObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(!call->hasInputParameter(parameter)); } TEST(MockExpectedCall, callWithObjectParameterEqualComparison) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorsAndCopiersRepository repository; MockNamedValue::setDefaultComparatorsAndCopiersRepository(&repository); repository.installComparator("type", comparator); TypeForTestingExpectedFunctionCall type(1), equalType(1); MockNamedValue parameter("name"); parameter.setConstObjectPointer("type", &equalType); call->withParameterOfType("type", "name", &type); CHECK(call->hasInputParameter(parameter)); } TEST(MockExpectedCall, getParameterValueOfObjectType) { TypeForTestingExpectedFunctionCallComparator comparator; MockNamedValueComparatorsAndCopiersRepository repository; MockNamedValue::setDefaultComparatorsAndCopiersRepository(&repository); repository.installComparator("type", comparator); TypeForTestingExpectedFunctionCall type(1); call->withParameterOfType("type", "name", &type); POINTERS_EQUAL(&type, call->getInputParameter("name").getConstObjectPointer()); STRCMP_EQUAL("1", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, getParameterValueOfObjectTypeWithoutRepository) { TypeForTestingExpectedFunctionCall type(1); call->withParameterOfType("type", "name", &type); STRCMP_EQUAL("No comparator found for type: \"type\"", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, getParameterValueOfObjectTypeWithoutComparator) { TypeForTestingExpectedFunctionCall type(1); MockNamedValueComparatorsAndCopiersRepository repository; MockNamedValue::setDefaultComparatorsAndCopiersRepository(&repository); call->withParameterOfType("type", "name", &type); STRCMP_EQUAL("No comparator found for type: \"type\"", call->getInputParameterValueString("name").asCharString()); } TEST(MockExpectedCall, callWithTwoUnsignedIntegerParameter) { unsigned int expected_value = 1; unsigned int another_expected_value = 2; call->withParameter("unsigned-integer1", expected_value); call->withParameter("unsigned-integer2", another_expected_value); STRCMP_EQUAL("unsigned int", call->getInputParameterType("unsigned-integer1").asCharString()); STRCMP_EQUAL("unsigned int", call->getInputParameterType("unsigned-integer2").asCharString()); LONGS_EQUAL(expected_value, call->getInputParameter("unsigned-integer1").getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, call->getInputParameter("unsigned-integer2").getUnsignedIntValue()); } TEST(MockExpectedCall, callWithTwoIntegerParameter) { int expected_value = 1; int another_expected_value = -1; call->withParameter("integer1", expected_value); call->withParameter("integer2", another_expected_value); STRCMP_EQUAL("int", call->getInputParameterType("integer1").asCharString()); STRCMP_EQUAL("int", call->getInputParameterType("integer2").asCharString()); LONGS_EQUAL(expected_value, call->getInputParameter("integer1").getIntValue()); LONGS_EQUAL(another_expected_value, call->getInputParameter("integer2").getIntValue()); } TEST(MockExpectedCall, callWithThreeDifferentParameter) { call->withParameter("integer", 1); call->withParameter("string", "hello world"); call->withParameter("double", 0.12); STRCMP_EQUAL("int", call->getInputParameterType("integer").asCharString()); STRCMP_EQUAL("const char*", call->getInputParameterType("string").asCharString()); STRCMP_EQUAL("double", call->getInputParameterType("double").asCharString()); LONGS_EQUAL(1, call->getInputParameter("integer").getIntValue()); STRCMP_EQUAL("hello world", call->getInputParameter("string").getStringValue()); DOUBLES_EQUAL(0.12, call->getInputParameter("double").getDoubleValue(), 0.05); } TEST(MockExpectedCall, singleCallNotMadeIsNotFulfilledButCanMatchActualCalls) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); CHECK(!expectedCall.isFulfilled()); CHECK(expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, singleCallMadeIsFulFilledAndCannotMatchActualCalls) { MockCheckedExpectedCall expectedCall(1); expectedCall.callWasMade(1); CHECK(expectedCall.isFulfilled()); CHECK(!expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, multiCallNotMadeIsNotFulfilledButCanMatchActualCalls) { MockCheckedExpectedCall expectedCall(2); expectedCall.withName("name"); CHECK(!expectedCall.isFulfilled()); CHECK(expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, multiCallNotMadeExpectedTimesIsNotFulfilledButCanMatchActualCalls) { MockCheckedExpectedCall expectedCall(2); expectedCall.withName("name"); expectedCall.callWasMade(1); CHECK(!expectedCall.isFulfilled()); CHECK(expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, multiCallsMadeExpectedTimesIsFulfilledAndCannotMatchActualCalls) { MockCheckedExpectedCall expectedCall(3); expectedCall.withName("name"); expectedCall.callWasMade(1); expectedCall.callWasMade(2); expectedCall.callWasMade(3); CHECK(expectedCall.isFulfilled()); CHECK(!expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, multiCallsMadeMoreThanExpectedTimesIsNotFulfilledAndCannotMatchActualCalls) { MockCheckedExpectedCall expectedCall(3); expectedCall.withName("name"); expectedCall.callWasMade(1); expectedCall.callWasMade(2); expectedCall.callWasMade(3); expectedCall.callWasMade(4); CHECK(!expectedCall.isFulfilled()); CHECK(!expectedCall.canMatchActualCalls()); } TEST(MockExpectedCall, callsWithoutParameterAlwaysMatch) { MockCheckedExpectedCall expectedCall(1); CHECK(expectedCall.isMatchingActualCall()); } TEST(MockExpectedCall, callsWithParameterNotFulfilledDontMatch) { MockCheckedExpectedCall expectedCall(1); expectedCall.withParameter("para", 1); CHECK(!expectedCall.isMatchingActualCall()); } TEST(MockExpectedCall, callsWithParameterFulfilledDoMatch) { MockCheckedExpectedCall expectedCall(1); expectedCall.withParameter("para", 1); expectedCall.inputParameterWasPassed("para"); CHECK(expectedCall.isMatchingActualCall()); } TEST(MockExpectedCall, callsWithSomeParametersNotFulfilledDontMatch) { MockCheckedExpectedCall expectedCall(1); expectedCall.withParameter("para", 1).withParameter("two", 2); expectedCall.inputParameterWasPassed("para"); CHECK(!expectedCall.isMatchingActualCall()); } TEST(MockExpectedCall, toStringForNoParametersSingleCallNotCalled) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); STRCMP_EQUAL("name -> no parameters (expected 1 call, called 0 times)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForNoParametersMultiCallCalledLessThanExpectedTimes) { MockCheckedExpectedCall expectedCall(2); expectedCall.withName("name"); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> no parameters (expected 2 calls, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForNoParametersMultiCallCalledExpectedTimes) { MockCheckedExpectedCall expectedCall(2); expectedCall.withName("name"); expectedCall.callWasMade(1); expectedCall.callWasMade(2); STRCMP_EQUAL("name -> no parameters (expected 2 calls, called 2 times)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForIgnoredParameters) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.ignoreOtherParameters(); STRCMP_EQUAL("name -> all parameters ignored (expected 1 call, called 0 times)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForMultipleInputParameters) { int int_value = 10; unsigned int uint_value = 7; MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withParameter("string", "value"); expectedCall.withParameter("integer", int_value); expectedCall.withParameter("unsigned-integer", uint_value); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> const char* string: , int integer: <10 (0xa)>, unsigned int unsigned-integer: <7 (0x7)> " "(expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForMultipleInputAndOutputParameters) { int int_value = 10; unsigned int uint_value = 7; unsigned char buffer_value[3]; MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withParameter("string", "value"); expectedCall.withParameter("integer", int_value); expectedCall.withParameter("unsigned-integer", uint_value); expectedCall.withOutputParameterReturning("buffer", buffer_value, sizeof(buffer_value)); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> const char* string: , int integer: <10 (0xa)>, unsigned int unsigned-integer: <7 (0x7)>, " "const void* buffer: (expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForMultipleOutputParameters) { unsigned char buffer_value[3]; MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withOutputParameterReturning("buffer1", buffer_value, sizeof(buffer_value)); expectedCall.withOutputParameterReturning("buffer2", buffer_value, sizeof(buffer_value)); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> const void* buffer1: , const void* buffer2: (expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForUnmodifiedOutputParameter) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withUnmodifiedOutputParameter("buffer1"); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> const void* buffer1: (expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForParameterAndIgnored) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withParameter("string", "value"); expectedCall.ignoreOtherParameters(); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> const char* string: , other parameters are ignored (expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForCallOrderSingle) { MockCheckedExpectedCall expectedCall(1); expectedCall.withName("name"); expectedCall.withCallOrder(2); expectedCall.callWasMade(1); STRCMP_EQUAL("name -> expected call order: <2> -> no parameters (expected 1 call, called 1 time)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, toStringForCallOrderMultiple) { MockCheckedExpectedCall expectedCall(5); expectedCall.withName("name"); expectedCall.withCallOrder(5, 9); expectedCall.callWasMade(5); expectedCall.callWasMade(6); expectedCall.callWasMade(7); expectedCall.callWasMade(8); expectedCall.callWasMade(9); STRCMP_EQUAL("name -> expected calls order: <5..9> -> no parameters (expected 5 calls, called 5 times)", expectedCall.callToString().asCharString()); } TEST(MockExpectedCall, callOrderIsFulfilledButWithWrongOrderSingle) { call->withName("name"); call->withCallOrder(2); call->callWasMade(1); CHECK(call->isFulfilled()); CHECK(call->isOutOfOrder()); } TEST(MockExpectedCall, callOrderIsFulfilledButWithWrongOrderMultipleTooEarly) { MockCheckedExpectedCall expectedCall(3); expectedCall.withName("name"); expectedCall.withCallOrder(10, 12); expectedCall.callWasMade(9); expectedCall.callWasMade(10); expectedCall.callWasMade(11); CHECK(expectedCall.isFulfilled()); CHECK(expectedCall.isOutOfOrder()); } TEST(MockExpectedCall, callOrderIsFulfilledButWithWrongOrderMultipleTooLate) { MockCheckedExpectedCall expectedCall(3); expectedCall.withName("name"); expectedCall.withCallOrder(10, 12); expectedCall.callWasMade(11); expectedCall.callWasMade(12); expectedCall.callWasMade(13); CHECK(expectedCall.isFulfilled()); CHECK(expectedCall.isOutOfOrder()); } TEST(MockExpectedCall, callOrderIsFulfilledSingle) { call->withName("name"); call->withCallOrder(1); call->callWasMade(1); CHECK(call->isFulfilled()); CHECK_FALSE(call->isOutOfOrder()); } TEST(MockExpectedCall, callOrderIsFulfilledMultiple) { MockCheckedExpectedCall expectedCall(4); expectedCall.withName("name"); expectedCall.withCallOrder(150, 153); expectedCall.callWasMade(150); expectedCall.callWasMade(151); expectedCall.callWasMade(152); expectedCall.callWasMade(153); CHECK(expectedCall.isFulfilled()); CHECK_FALSE(expectedCall.isOutOfOrder()); } TEST(MockExpectedCall, hasOutputParameter) { const int value = 1; call->withOutputParameterReturning("foo", &value, sizeof(value)); MockNamedValue foo("foo"); foo.setValue(&value); CHECK(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasUnmodifiedOutputParameter) { call->withUnmodifiedOutputParameter("foo"); MockNamedValue foo("foo"); foo.setValue((const void *)NULLPTR); foo.setSize(0); CHECK(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasNoOutputParameter) { call->withIntParameter("foo", (int)1); MockNamedValue foo("foo"); foo.setValue((int)1); CHECK_FALSE(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasOutputParameterOfType) { TypeForTestingExpectedFunctionCall object(6789); call->withOutputParameterOfTypeReturning("TypeForTestingExpectedFunctionCall", "foo", &object); MockNamedValue foo("foo"); foo.setConstObjectPointer("TypeForTestingExpectedFunctionCall", &object); CHECK(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasNoOutputParameterOfTypeSameTypeButInput) { TypeForTestingExpectedFunctionCall object(543); call->withParameterOfType("TypeForTestingExpectedFunctionCall", "foo", &object); MockNamedValue foo("foo"); foo.setConstObjectPointer("TypeForTestingExpectedFunctionCall", &object); CHECK_FALSE(call->hasOutputParameter(foo)); } TEST(MockExpectedCall, hasNoOutputParameterOfTypeDifferentType) { TypeForTestingExpectedFunctionCall object(543); call->withOutputParameterOfTypeReturning("TypeForTestingExpectedFunctionCall", "foo", &object); MockNamedValue foo("foo"); foo.setConstObjectPointer("OtherTypeForTestingExpectedFunctionCall", &object); CHECK_FALSE(call->hasOutputParameter(foo)); } TEST_GROUP(MockIgnoredExpectedCall) { MockIgnoredExpectedCall ignored; }; TEST(MockIgnoredExpectedCall, worksAsItShould) { ignored.withName("func"); ignored.withCallOrder(1); ignored.withCallOrder(1, 1); ignored.onObject(NULLPTR); ignored.withBoolParameter("umm", true); ignored.withIntParameter("bla", (int) 1); ignored.withUnsignedIntParameter("foo", (unsigned int) 1); ignored.withLongIntParameter("hey", (long int) 1); ignored.withUnsignedLongIntParameter("bah", (unsigned long int) 1); #ifdef CPPUTEST_USE_LONG_LONG ignored.withLongLongIntParameter("yo", (long long int) 1); ignored.withUnsignedLongLongIntParameter("grr", (unsigned long long int) 1); #endif ignored.withDoubleParameter("hah", (double) 1.1f); ignored.withDoubleParameter("gah", 2.1, 0.3); ignored.withStringParameter("goo", "hello"); ignored.withPointerParameter("pie", (void*) NULLPTR); ignored.withConstPointerParameter("woo", (const void*) NULLPTR); ignored.withFunctionPointerParameter("fop", (void(*)()) NULLPTR); ignored.withMemoryBufferParameter("waa", (const unsigned char*) NULLPTR, 0); ignored.withParameterOfType( "mytype", "top", (const void*) NULLPTR); ignored.withOutputParameterReturning("bar", (void*) NULLPTR, 1); ignored.withOutputParameterOfTypeReturning("mytype", "bar", (const void*) NULLPTR); ignored.withUnmodifiedOutputParameter("unmod"); ignored.ignoreOtherParameters(); ignored.andReturnValue(true); ignored.andReturnValue((double) 1.0f); ignored.andReturnValue((unsigned int) 1); ignored.andReturnValue((int) 1); ignored.andReturnValue((unsigned long int) 1); ignored.andReturnValue((long int) 1); #ifdef CPPUTEST_USE_LONG_LONG ignored.andReturnValue((unsigned long long int) 1); ignored.andReturnValue((long long int) 1); #endif ignored.andReturnValue("boo"); ignored.andReturnValue((void*) NULLPTR); ignored.andReturnValue((const void*) NULLPTR); ignored.andReturnValue((void(*)()) NULLPTR); } cpputest-4.0/tests/CppUTestExt/MockCallTest.cpp000644 000765 000024 00000036320 13663176127 022561 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockCallTest) { void teardown() { mock().checkExpectations(); mock().clear(); } }; TEST(MockCallTest, clear) { mock().expectOneCall("func"); mock().clear(); CHECK(! mock().expectedCallsLeft()); } TEST(MockCallTest, checkExpectationsDoesntFail) { mock().checkExpectations(); } TEST(MockCallTest, expectASingleCallThatHappens) { mock().expectOneCall("func"); MockCheckedActualCall& actualCall = (MockCheckedActualCall&) mock().actualCall("func"); actualCall.checkExpectations(); CHECK(! mock().expectedCallsLeft()); } TEST(MockCallTest, expectASingleCallThatDoesntHappen) { mock().expectOneCall("func"); CHECK(mock().expectedCallsLeft()); mock().clear(); } TEST(MockCallTest, expectAMultiCallThatHappensTheExpectedTimes) { mock().expectNCalls(2, "func"); mock().actualCall("func"); MockCheckedActualCall& actualCall = (MockCheckedActualCall&) mock().actualCall("func"); actualCall.checkExpectations(); CHECK(! mock().expectedCallsLeft()); } TEST(MockCallTest, expectAMultiCallThatDoesntHappenTheExpectedTimes) { mock().expectNCalls(2, "func"); MockCheckedActualCall& actualCall = (MockCheckedActualCall&) mock().actualCall("func"); actualCall.checkExpectations(); CHECK(mock().expectedCallsLeft()); mock().clear(); } TEST(MockCallTest, checkExpectationsClearsTheExpectations) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foobar"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("foobar"); mock().checkExpectations(); CHECK(! mock().expectedCallsLeft()); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectOneCallInScopeButNotHappen) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("scope::foobar"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock("scope").expectOneCall("foobar"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, unexpectedCallHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest emptyExpectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "func", emptyExpectations); mock().actualCall("func"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, unexpectedScopeCallHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest emptyExpectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "scope::func", emptyExpectations); mock("scope").actualCall("func"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectOneCallInOneScopeButActualCallInAnotherScope) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest emptyExpectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "class::foo", emptyExpectations); mock("scope").expectOneCall("foo"); mock("class").actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().clear(); } TEST(MockCallTest, expectOneCallInScopeButActualCallInGlobal) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest emptyExpectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", emptyExpectations); mock("scope").expectOneCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().clear(); } TEST(MockCallTest, expectMultipleSingleCallsThatHappen) { mock().expectOneCall("foo"); mock().expectOneCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); mock().checkExpectations(); } TEST(MockCallTest, expectOneCallHoweverMultipleHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->callWasMade(1); expectations.addFunction("foo")->callWasMade(2); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo"); mock().expectOneCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallThatHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(0, "lazy"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock().expectNoCall("lazy"); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallDoesntInfluenceExpectOneCall) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(0, "lazy"); expectations.addFunction("influence")->callWasMade(1); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock().expectNoCall("lazy"); mock().expectOneCall("influence"); mock().actualCall("influence"); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallOnlyFailureOnceWhenMultipleHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(0, "lazy"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock().expectNoCall("lazy"); mock().actualCall("lazy"); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, ignoreOtherCallsExceptForTheUnExpectedOne) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(0, "lazy"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock().expectNoCall("lazy"); mock().ignoreOtherCalls(); mock().actualCall("bar").withParameter("foo", 1); mock().actualCall("bar1").withParameter("foo", 1); mock().actualCall("bar2").withParameter("foo", 1); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallInScopeThatHappened) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(0, "scope::lazy"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "scope::lazy", expectations); mock("scope").expectNoCall("lazy"); mock("scope").actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallInScopeButActualCallInAnotherScope) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "scope2::lazy", expectations); mock("scope1").expectNoCall("lazy"); mock("scope2").actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNoCallInScopeButActualCallInGlobal) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "lazy", expectations); mock("scope1").expectNoCall("lazy"); mock().actualCall("lazy"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, ignoreOtherCallsExceptForTheExpectedOne) { mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().actualCall("bar").withParameter("foo", 1); mock().clear(); } TEST(MockCallTest, ignoreOtherCallsDoesntIgnoreMultipleCallsOfTheSameFunction) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo")->callWasMade(1); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "foo", expectations); mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().actualCall("bar"); mock().actualCall("foo"); mock().actualCall("foo"); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, ignoreOtherStillFailsIfExpectedOneDidntHappen) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("foo"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("foo"); mock().ignoreOtherCalls(); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, threeExpectedAndActual) { mock().expectOneCall("function1"); mock().expectOneCall("function2"); mock().expectOneCall("function3"); mock().actualCall("function1"); mock().actualCall("function2"); mock().actualCall("function3"); mock().checkExpectations(); } TEST(MockCallTest, disableEnable) { mock().disable(); mock().expectOneCall("function"); mock().actualCall("differenFunction"); CHECK(! mock().expectedCallsLeft()); mock().enable(); mock().expectOneCall("function"); CHECK(mock().expectedCallsLeft()); mock().actualCall("function"); mock().checkExpectations(); } TEST(MockCallTest, OnObject) { void* objectPtr = (void*) 0x001; mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo").onObject(objectPtr); } TEST(MockCallTest, OnObjectIgnored_MatchingAlreadyWhenObjectPassed) { void* objectPtr = (void*) 0x001; mock().expectOneCall("boo"); mock().actualCall("boo").onObject(objectPtr); } TEST(MockCallTest, OnObjectIgnored_NotMatchingYetWhenObjectPassed) { void* objectPtr = (void*) 0x001; mock().expectOneCall("boo").withBoolParameter("p", true); mock().actualCall("boo").onObject(objectPtr).withBoolParameter("p", true); } TEST(MockCallTest, OnObjectIgnored_InitialMatchDiscarded) { void* objectPtr1 = (void*) 0x001; void* objectPtr2 = (void*) 0x002; mock().expectOneCall("boo"); mock().expectOneCall("boo").withBoolParameter("p", true); mock().actualCall("boo").onObject(objectPtr2).withBoolParameter("p", true); mock().actualCall("boo").onObject(objectPtr1); } TEST(MockCallTest, OnObjectFails) { MockFailureReporterInstaller failureReporterInstaller; void* objectPtr = (void*) 0x001; void* objectPtr2 = (void*) 0x002; MockExpectedCallsListForTest expectations; expectations.addFunction("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo").onObject(objectPtr2); MockUnexpectedObjectFailure expectedFailure(mockFailureTest(), "boo", objectPtr2, expectations); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, OnObjectExpectedButNotCalled) { MockFailureReporterInstaller failureReporterInstaller; void* objectPtr = (void*) 0x001; MockExpectedCallsListForTest expectations; expectations.addFunction("boo")->onObject(objectPtr); expectations.addFunction("boo")->onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().expectOneCall("boo").onObject(objectPtr); mock().actualCall("boo"); mock().actualCall("boo"); MockExpectedObjectDidntHappenFailure expectedFailure(mockFailureTest(), "boo", expectations); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, expectNCalls_Fulfilled) { mock().expectNCalls(2, "boo"); mock().actualCall("boo"); mock().actualCall("boo"); mock().checkExpectations(); } TEST(MockCallTest, expectNCalls_NotFulfilled) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction(2, "boo")->callWasMade(1); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock().expectNCalls(2, "boo"); mock().actualCall("boo"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCallTest, shouldntFailTwice) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); mock().expectOneCall("foo"); mock().expectOneCall("boo"); mock().actualCall("boo"); mock().actualCall("bar"); mock().checkExpectations(); CHECK(!MockFailureReporterForTest::getReporter()->mockFailureString.contains("bar")); CHECK(MockFailureReporterForTest::getReporter()->mockFailureString.contains("boo")); } TEST(MockCallTest, shouldReturnDefaultWhenThereIsntAnythingToReturn) { CHECK(mock().returnValue().equals(MockNamedValue(""))); } IGNORE_TEST(MockCallTest, testForPerformanceProfiling) { /* TO fix! */ mock().expectNCalls(2000, "SimpleFunction"); for (int i = 0; i < 2000; i++) { mock().actualCall("SimpleFunction"); } } static void mocksAreCountedAsChecksTestFunction_() { mock().expectOneCall("foo"); mock().expectNCalls(3, "bar"); mock().expectNoCall("lazy"); mock().clear(); } TEST(MockCallTest, mockExpectationShouldIncreaseNumberOfChecks) { TestTestingFixture fixture; fixture.setTestFunction(mocksAreCountedAsChecksTestFunction_); fixture.runAllTests(); LONGS_EQUAL(3, fixture.getCheckCount()); } cpputest-4.0/tests/CppUTestExt/MockSupport_cTestCFile.h000644 000765 000024 00000003440 13663176127 024231 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef TESTMOCKSUPPORTC_CFILE_H #define TESTMOCKSUPPORTC_CFILE_H #ifdef __cplusplus extern "C" { #endif extern void all_mock_support_c_calls(void); #ifdef __cplusplus } #endif #endif /* TESTMOCKSUPPORTC_CFILE_H */ cpputest-4.0/tests/CppUTestExt/IEEE754PluginTest.cpp000644 000765 000024 00000011663 13663176127 023225 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2015, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/IEEE754ExceptionsPlugin.h" #ifdef CPPUTEST_HAVE_FENV #if CPPUTEST_FENV_IS_WORKING_PROPERLY extern "C" { #include "IEEE754PluginTest_c.h" } TEST_GROUP(FE__with_Plugin) { TestTestingFixture fixture; IEEE754ExceptionsPlugin ieee754Plugin; void setup(void) _override { fixture.installPlugin(&ieee754Plugin); } }; TEST(FE__with_Plugin, should_fail____when__FE_DIVBYZERO__is_set) { fixture.setTestFunction(set_divisionbyzero_c); fixture.runAllTests(); fixture.assertPrintContains("IEEE754_CHECK_CLEAR(FE_DIVBYZERO) failed"); } TEST(FE__with_Plugin, should_fail____when__FE_OVERFLOW___is_set) { fixture.setTestFunction(set_overflow_c); fixture.runAllTests(); fixture.assertPrintContains("IEEE754_CHECK_CLEAR(FE_OVERFLOW) failed"); } TEST(FE__with_Plugin, should_fail____when__FE_UNDERFLOW__is_set) { fixture.setTestFunction(set_underflow_c); fixture.runAllTests(); fixture.assertPrintContains("IEEE754_CHECK_CLEAR(FE_UNDERFLOW) failed"); } TEST(FE__with_Plugin, should_fail____when__FE_INEXACT____is_set_and_enabled) { IEEE754ExceptionsPlugin::enableInexact(); fixture.setTestFunction(set_inexact_c); fixture.runAllTests(); fixture.assertPrintContains("IEEE754_CHECK_CLEAR(FE_INEXACT) failed"); } TEST(FE__with_Plugin, should_succeed_when__FE_INEXACT____is_set_and_disabled) { IEEE754ExceptionsPlugin::enableInexact(); IEEE754ExceptionsPlugin::disableInexact(); fixture.setTestFunction(set_inexact_c); fixture.runAllTests(); fixture.assertPrintContains("OK"); } TEST(FE__with_Plugin, should_succeed_with_5_checks_when_no_flags_are_set) { IEEE754ExceptionsPlugin::enableInexact(); fixture.setTestFunction(set_nothing_c); fixture.runAllTests(); fixture.assertPrintContains("OK (1 tests, 1 ran, 5 checks, 0 ignored, 0 filtered out"); IEEE754ExceptionsPlugin::disableInexact(); } TEST(FE__with_Plugin, should_check_five_times_when_all_flags_are_set) { fixture.setTestFunction(set_everything_c); fixture.runAllTests(); LONGS_EQUAL(5, fixture.getCheckCount()); } TEST(FE__with_Plugin, should_fail_only_once_when_all_flags_are_set) { fixture.setTestFunction(set_everything_c); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); } static void set_everything_but_already_failed(void) { set_everything_c(); CHECK(1 == 2); } TEST(FE__with_Plugin, should_not_fail_again_when_test_has_already_failed) { fixture.setTestFunction(set_everything_but_already_failed); fixture.runAllTests(); CHECK(IEEE754ExceptionsPlugin::checkIeee754OverflowExceptionFlag()); CHECK(IEEE754ExceptionsPlugin::checkIeee754UnderflowExceptionFlag()); CHECK(IEEE754ExceptionsPlugin::checkIeee754InexactExceptionFlag()); CHECK(IEEE754ExceptionsPlugin::checkIeee754DivByZeroExceptionFlag()); LONGS_EQUAL(1, fixture.getCheckCount()); LONGS_EQUAL(1, fixture.getFailureCount()); } static IEEE754ExceptionsPlugin ip; TEST_GROUP(IEEE754ExceptionsPlugin2) { void setup(void) _override { TestRegistry::getCurrentRegistry()->installPlugin(&ip); } }; IGNORE_TEST(IEEE754ExceptionsPlugin2, should_not_fail_in_ignored_test) { set_everything_c(); } #endif #endif cpputest-4.0/tests/CppUTestExt/MockHierarchyTest.cpp000644 000765 000024 00000011742 13663176127 023625 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockHierarchyTest) { void teardown() { mock().clear(); } }; TEST(MockHierarchyTest, getMockSupportScope) { MockSupport* mock1 = mock().getMockSupportScope("name"); MockSupport* mock2 = mock().getMockSupportScope("differentName"); CHECK(!mock().hasData("name")); CHECK(mock1 != mock2); POINTERS_EQUAL(mock1, mock().getMockSupportScope("name")); CHECK(mock1 != &mock()); } TEST(MockHierarchyTest, usingTwoMockSupportsByName) { mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("other").expectedCallsLeft()); LONGS_EQUAL(1, mock("first").expectedCallsLeft()); mock("first").clear(); } TEST(MockHierarchyTest, EnableDisableWorkHierarchically) { mock("first"); mock().disable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("first").expectedCallsLeft()); mock().enable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(1, mock("first").expectedCallsLeft()); mock("first").clear(); } TEST(MockHierarchyTest, EnableDisableWorkHierarchicallyWhenSupportIsDynamicallyCreated) { mock().disable(); mock("first").expectOneCall("boo"); LONGS_EQUAL(0, mock("first").expectedCallsLeft()); mock().enable(); mock("second").expectOneCall("boo"); LONGS_EQUAL(1, mock("second").expectedCallsLeft()); mock().clear(); } TEST(MockHierarchyTest, ExpectedCallsLeftWorksHierarchically) { mock("first").expectOneCall("foobar"); LONGS_EQUAL(1, mock().expectedCallsLeft()); mock().clear(); } TEST(MockHierarchyTest, checkExpectationsWorksHierarchically) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("first::foobar"); expectations.addFunction("second::helloworld"); MockExpectedCallsDidntHappenFailure expectedFailure(mockFailureTest(), expectations); mock("first").expectOneCall("foobar"); mock("second").expectOneCall("helloworld"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockHierarchyTest, ignoreOtherCallsWorksHierarchically) { mock("first"); mock().ignoreOtherCalls(); mock("first").actualCall("boo"); mock().checkExpectations(); } TEST(MockHierarchyTest, ignoreOtherCallsWorksHierarchicallyWhenDynamicallyCreated) { mock().ignoreOtherCalls(); mock("first").actualCall("boo"); mock().checkExpectations(); } TEST(MockHierarchyTest, checkExpectationsWorksHierarchicallyForLastCallNotFinished) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; expectations.addFunction("first::foobar")->withParameter("boo", 1); MockExpectedParameterDidntHappenFailure expectedFailure(mockFailureTest(), "first::foobar", expectations); mock("first").expectOneCall("foobar").withParameter("boo", 1); mock("first").actualCall("foobar"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockHierarchyTest, reporterIsInheritedInHierarchicalMocks) { MockFailureReporterInstaller failureReporterInstaller; MockExpectedCallsListForTest expectations; mock("differentScope").actualCall("foobar"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "differentScope::foobar", expectations); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } cpputest-4.0/tests/CppUTestExt/GTest1Test.cpp000644 000765 000024 00000011542 13663176127 022202 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef CPPUTEST_INCLUDE_GTEST_TESTS #undef new #include "CppUTestExt/GTest.h" #include "CppUTestExt/GMock.h" static bool g_GTestEqual_has_been_called = false; TEST(GTestSimpleTest, GTestEqual) { EXPECT_EQ(1, 1); g_GTestEqual_has_been_called = true; } TEST(GTestSimpleTest, GTestAssertEq) { ASSERT_EQ(1, 1); } TEST(GTestSimpleTest, GTestExpectTrue) { EXPECT_TRUE(true); } TEST(GTestSimpleTest, GTestAssertTrue) { ASSERT_TRUE(true); } TEST(GTestSimpleTest, GTestExpectFalse) { EXPECT_FALSE(false); } TEST(GTestSimpleTest, GTestExpectStreq) { EXPECT_STREQ("hello world", "hello world"); } /* Death tests are IMHO not a good idea at all. But for compatibility reason, we'll support it */ static void crashMe () { fprintf(stderr, "Crash me!"); *((int*) 0) = 10; } TEST(GTestSimpleTest, GTestDeathTest) { #if defined(GTEST_VERSION_GTEST_1_7) CppuTestGTestIgnoreLeaksInTest(); #endif ASSERT_DEATH(crashMe(), "Crash me!"); } #undef TEST #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(gtest) { }; TEST(gtest, SimpleGoogleTestExists) { TestRegistry* registry = TestRegistry::getCurrentRegistry(); CHECK(registry->findTestWithName("GTestEqual")); } TEST(gtest, SimpleGoogleTestGroupExists) { TestRegistry* registry = TestRegistry::getCurrentRegistry(); CHECK(registry->findTestWithGroup("GTestSimpleTest")); } TEST(gtest, SimpleGoogleTestGetCalled) { StringBufferTestOutput output; TestResult result(output); TestPlugin plugin("dummy"); TestRegistry* registry = TestRegistry::getCurrentRegistry(); UtestShell * shell = registry->findTestWithName("GTestEqual"); g_GTestEqual_has_been_called = false; shell->runOneTest(&plugin, result); CHECK(g_GTestEqual_has_been_called); } static bool afterCheck; static void _failMethodEXPECT_EQ() { EXPECT_EQ(1, 2); afterCheck = true; } static void _failMethodASSERT_EQ() { ASSERT_EQ(1, 2); afterCheck = true; } static void _failMethodEXPECT_TRUE() { EXPECT_TRUE(false); afterCheck = true; } static void _failMethodASSERT_TRUE() { ASSERT_TRUE(false); afterCheck = true; } static void _failMethodEXPECT_FALSE() { EXPECT_FALSE(true); afterCheck = true; } static void _failMethodEXPECT_STREQ() { EXPECT_STREQ("hello", "world"); afterCheck = true; } TEST_GROUP(gtestMacros) { TestTestingFixture* fixture; void setup() { fixture = new TestTestingFixture(); afterCheck = false; } void teardown() { delete fixture; } void testFailureWith(void(*method)()) { fixture->setTestFunction(method); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); CHECK(!afterCheck); } }; TEST(gtestMacros, EXPECT_EQFails) { testFailureWith(_failMethodEXPECT_EQ); } TEST(gtestMacros, EXPECT_TRUEFails) { testFailureWith(_failMethodEXPECT_TRUE); } TEST(gtestMacros, EXPECT_FALSEFails) { testFailureWith(_failMethodEXPECT_FALSE); } TEST(gtestMacros, EXPECT_STREQFails) { testFailureWith(_failMethodEXPECT_STREQ); } TEST(gtestMacros, ASSERT_EQFails) { testFailureWith(_failMethodASSERT_EQ); } TEST(gtestMacros, ASSERT_TRUEFails) { testFailureWith(_failMethodASSERT_TRUE); } #endif cpputest-4.0/tests/CppUTestExt/MemoryReportAllocatorTest.cpp000644 000765 000024 00000004475 13663176127 025407 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" TEST_GROUP(MemoryReportAllocator) { MemoryReportAllocator allocator; }; TEST(MemoryReportAllocator, FunctionsAreForwardedForMallocAllocator) { allocator.setRealAllocator(getCurrentMallocAllocator()); STRCMP_EQUAL("malloc", allocator.alloc_name()); STRCMP_EQUAL("free", allocator.free_name()); } TEST(MemoryReportAllocator, keepingTrackOfActualAllocator) { TestMemoryAllocator* originalAllocator = getCurrentMallocAllocator(); allocator.setRealAllocator(getCurrentMallocAllocator()); POINTERS_EQUAL(originalAllocator->actualAllocator(), allocator.actualAllocator()); } cpputest-4.0/tests/CppUTestExt/MockStrictOrderTest.cpp000644 000765 000024 00000014523 13663176127 024153 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockStrictOrderTest) { void teardown() { mock().clear(); } }; TEST(MockStrictOrderTest, OrderObserved) { mock().strictOrder(); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().checkExpectations(); } TEST(MockStrictOrderTest, someOrderObserved) { mock().expectOneCall("foo3").withCallOrder(3); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo3"); mock().checkExpectations(); } TEST(MockStrictOrderTest, orderViolated) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); MockExpectedCallsListForTest expectations; expectations.addFunctionOrdered("foo1", 1)->callWasMade(1); expectations.addFunctionOrdered("foo1", 2)->callWasMade(3); expectations.addFunctionOrdered("foo2", 3)->callWasMade(2); MockCallOrderFailure expectedFailure(mockFailureTest(), expectations); mock().expectOneCall("foo1"); mock().expectOneCall("foo1"); mock().expectOneCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockStrictOrderTest, orderViolatedWorksHierarchically) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); mock("bla").strictOrder(); MockExpectedCallsListForTest expectations; expectations.addFunctionOrdered("foo::foo1", 1)->callWasMade(2); expectations.addFunctionOrdered("foo::foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), expectations); mock("bla").expectOneCall("foo1"); mock("foo").expectOneCall("foo1"); mock("foo").expectOneCall("foo2"); mock("bla").actualCall("foo1"); mock("foo").actualCall("foo2"); mock("foo").actualCall("foo1"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockStrictOrderTest, orderViolatedWorksWithExtraUnexpectedCall) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); mock("bla").strictOrder(); mock().ignoreOtherCalls(); MockExpectedCallsListForTest expectations; expectations.addFunctionOrdered("foo::foo1", 1)->callWasMade(2); expectations.addFunctionOrdered("foo::foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), expectations); mock("bla").expectOneCall("foo1"); mock("foo").expectOneCall("foo1"); mock("foo").expectOneCall("foo2"); mock("bla").actualCall("foo1"); mock("foo").actualCall("foo2"); mock("foo").actualCall("unexpected1"); mock("foo").actualCall("foo1"); mock("foo").actualCall("unexpected2"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockStrictOrderTest, orderViolatedWithinAScope) { MockFailureReporterInstaller failureReporterInstaller; mock().strictOrder(); MockExpectedCallsListForTest expectations; expectations.addFunctionOrdered("scope::foo1", 1)->callWasMade(2); expectations.addFunctionOrdered("scope::foo2", 2)->callWasMade(1); MockCallOrderFailure expectedFailure(mockFailureTest(), expectations); mock("scope").expectOneCall("foo1"); mock("scope").expectOneCall("foo2"); mock("scope").actualCall("foo2"); mock("scope").actualCall("foo1"); mock().checkExpectations(); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockStrictOrderTest, orderNotViolatedAcrossScopes) { mock("mock1").strictOrder(); mock("mock2").strictOrder(); mock("mock1").expectOneCall("foo1"); mock("mock2").expectOneCall("foo2"); mock("mock1").actualCall("foo1"); mock("mock2").actualCall("foo2"); mock("mock1").checkExpectations(); mock("mock2").checkExpectations(); } TEST(MockStrictOrderTest, orderViolatedAcrossScopes) { mock("mock1").strictOrder(); mock("mock2").strictOrder(); mock("mock1").expectOneCall("foo1"); mock("mock2").expectOneCall("foo2"); mock("mock2").actualCall("foo2"); mock("mock1").actualCall("foo1"); mock("mock1").checkExpectations(); mock("mock2").checkExpectations(); } TEST(MockStrictOrderTest, orderUsingNCalls) { mock().strictOrder(); mock().expectOneCall("foo1"); mock().expectNCalls(2, "foo2"); mock().expectOneCall("foo1"); mock().expectNCalls(3, "foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo2"); mock().actualCall("foo1"); mock().actualCall("foo2"); mock().actualCall("foo2"); mock().actualCall("foo2"); mock().checkExpectations(); } cpputest-4.0/tests/CppUTestExt/GTest2ConvertorTest.cpp000644 000765 000024 00000007150 13663176127 024105 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef CPPUTEST_INCLUDE_GTEST_TESTS #include "CppUTestExt/GTestConvertor.h" class GTestTestingFixtureTest : public testing::Test { protected: bool setup_was_called; char* freed_during_teardown; void SetUp() { setup_was_called = true; freed_during_teardown = NULL; } void TearDown() { delete [] freed_during_teardown; } }; TEST_F(GTestTestingFixtureTest, setupBeenCalled) { EXPECT_TRUE(setup_was_called); } TEST_F(GTestTestingFixtureTest, teardownMustBeCalledOrElseThisWillLeak) { freed_during_teardown = new char[100]; } #endif #undef TEST #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" TEST_GROUP(GTestConvertor) { }; #ifdef CPPUTEST_INCLUDE_GTEST_TESTS /* * These tests depend on the amount of GTests that are actually added (also in other files). * This is due to the singleton in gtest. * */ TEST(GTestConvertor, correctNumberOfTestCases) { LONGS_EQUAL(2, ::testing::UnitTest::GetInstance()->total_test_case_count()); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(0)); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(1)); CHECK(::testing::UnitTest::GetInstance()->GetTestCase(2) == NULL); } TEST(GTestConvertor, correctNumberOfTestsInTheTestCases) { const ::testing::TestCase* firstTestCase = ::testing::UnitTest::GetInstance()->GetTestCase(0); const ::testing::TestCase* secondTestCase = ::testing::UnitTest::GetInstance()->GetTestCase(1); STRCMP_EQUAL("GTestSimpleTest", firstTestCase->name()); STRCMP_EQUAL("GTestTestingFixtureTest", secondTestCase->name()); LONGS_EQUAL(7, firstTestCase->total_test_count()); LONGS_EQUAL(2, secondTestCase->total_test_count()); } TEST(GTestConvertor, testsGetAddedToCurrentTestRegistry) { TestTestingFixture fixture; TestRegistry::getCurrentRegistry()->unDoLastAddTest(); GTestConvertor convertor(false); convertor.addAllGTestToTestRegistry(); LONGS_EQUAL(9, TestRegistry::getCurrentRegistry()->countTests()); } #endif cpputest-4.0/tests/CppUTestExt/MemoryReportFormatterTest.cpp000644 000765 000024 00000006674 13663176127 025435 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReportAllocator.h" #include "CppUTestExt/MemoryReportFormatter.h" #define TESTOUTPUT_EQUAL(a) STRCMP_EQUAL_LOCATION(a, testOutput.getOutput().asCharString(), "", __FILE__, __LINE__) TEST_GROUP(NormalMemoryReportFormatter) { char* memory01; StringBufferTestOutput testOutput; TestResult* testResult; NormalMemoryReportFormatter formatter; void setup() { memory01 = (char*) 0x01; testResult = new TestResult(testOutput); } void teardown() { delete testResult; } }; TEST(NormalMemoryReportFormatter, mallocCreatesAnMallocCall) { formatter.report_alloc_memory(testResult, defaultMallocAllocator(), 10, memory01, "file", 9); TESTOUTPUT_EQUAL(StringFromFormat("\tAllocation using malloc of size: 10 pointer: %p at file:9\n", (void*) memory01).asCharString()); } TEST(NormalMemoryReportFormatter, freeCreatesAnFreeCall) { formatter.report_free_memory(testResult, defaultMallocAllocator(), memory01, "boo", 6); TESTOUTPUT_EQUAL(StringFromFormat("\tDeallocation using free of pointer: %p at boo:6\n", (void*) memory01).asCharString()); } TEST(NormalMemoryReportFormatter, testStarts) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_test_start(testResult, test); TESTOUTPUT_EQUAL("TEST(groupName, TestName)\n"); } TEST(NormalMemoryReportFormatter, testEnds) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_test_end(testResult, test); TESTOUTPUT_EQUAL("ENDTEST(groupName, TestName)\n"); } TEST(NormalMemoryReportFormatter, testGroupStarts) { UtestShell test("groupName", "TestName", "file", 1); formatter.report_testgroup_start(testResult, test); TESTOUTPUT_EQUAL("------------------------------TEST GROUP(groupName)-----------------------------\n"); } cpputest-4.0/tests/CppUTestExt/OrderedTestTest.cpp000644 000765 000024 00000015631 13663176127 023322 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTestExt/OrderedTest.h" #include "OrderedTestTest.h" TEST_GROUP(TestOrderedTest) { TestTestingFixture* fixture; OrderedTestShell orderedTest; OrderedTestShell orderedTest2; OrderedTestShell orderedTest3; ExecFunctionTestShell normalTest; ExecFunctionTestShell normalTest2; ExecFunctionTestShell normalTest3; OrderedTestShell* orderedTestCache; void setup() { orderedTestCache = OrderedTestShell::getOrderedTestHead(); OrderedTestShell::setOrderedTestHead(NULLPTR); fixture = new TestTestingFixture(); fixture->getRegistry()->unDoLastAddTest(); } void teardown() { delete fixture; OrderedTestShell::setOrderedTestHead(orderedTestCache); } void InstallOrderedTest(OrderedTestShell& test, int level) { OrderedTestInstaller(test, "testgroup", "testname", __FILE__, __LINE__, level); } void InstallNormalTest(UtestShell& test) { TestInstaller(test, "testgroup", "testname", __FILE__, __LINE__); } UtestShell* firstTest() { return fixture->getRegistry()->getFirstTest(); } UtestShell* secondTest() { return firstTest()->getNext(); } }; TEST(TestOrderedTest, TestInstallerSetsFields) { OrderedTestInstaller(orderedTest, "testgroup", "testname", "this.cpp", 10, 5); STRCMP_EQUAL("testgroup", orderedTest.getGroup().asCharString()); STRCMP_EQUAL("testname", orderedTest.getName().asCharString()); STRCMP_EQUAL("this.cpp", orderedTest.getFile().asCharString()); LONGS_EQUAL(10, orderedTest.getLineNumber()); LONGS_EQUAL(5, orderedTest.getLevel()); } TEST(TestOrderedTest, InstallOneText) { InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &orderedTest); } TEST(TestOrderedTest, OrderedTestsAreLast) { InstallNormalTest(normalTest); InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &normalTest); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, TwoTestsAddedInReverseOrder) { InstallOrderedTest(orderedTest, 5); InstallOrderedTest(orderedTest2, 3); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, TwoTestsAddedInOrder) { InstallOrderedTest(orderedTest2, 3); InstallOrderedTest(orderedTest, 5); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest); } TEST(TestOrderedTest, MultipleOrderedTests) { InstallNormalTest(normalTest); InstallOrderedTest(orderedTest2, 3); InstallNormalTest(normalTest2); InstallOrderedTest(orderedTest, 5); InstallNormalTest(normalTest3); InstallOrderedTest(orderedTest3, 7); UtestShell * firstOrderedTest = firstTest()->getNext()->getNext()->getNext(); CHECK(firstOrderedTest == &orderedTest2); CHECK(firstOrderedTest->getNext() == &orderedTest); CHECK(firstOrderedTest->getNext()->getNext() == &orderedTest3); } TEST(TestOrderedTest, MultipleOrderedTests2) { InstallOrderedTest(orderedTest, 3); InstallOrderedTest(orderedTest2, 1); InstallOrderedTest(orderedTest3, 2); CHECK(firstTest() == &orderedTest2); CHECK(secondTest() == &orderedTest3); CHECK(secondTest()->getNext() == &orderedTest); } class OrderedTestTestingFixture { public: static void checkRun(int run) { if(run != run_) { run_ = run; count_ = 0; } } static int count(void) { return count_++; } private: static int run_; static int count_; }; int OrderedTestTestingFixture::run_ = 0; int OrderedTestTestingFixture::count_ = 0; TEST_GROUP(TestOrderedTestMacros) { void setup() { OrderedTestTestingFixture::checkRun(TestRegistry::getCurrentRegistry()->getCurrentRepetition()); } }; TEST(TestOrderedTestMacros, NormalTest) { CHECK(OrderedTestTestingFixture::count() == 0); } TEST_ORDERED(TestOrderedTestMacros, Test2, 2) { CHECK(OrderedTestTestingFixture::count() == 2); } TEST_ORDERED(TestOrderedTestMacros, Test1, 1) { CHECK(OrderedTestTestingFixture::count() == 1); } TEST_ORDERED(TestOrderedTestMacros, Test4, 4) { CHECK(OrderedTestTestingFixture::count() == 4); } TEST_ORDERED(TestOrderedTestMacros, Test3, 3) { CHECK(OrderedTestTestingFixture::count() == 3); } // Test with same level TEST_ORDERED(TestOrderedTestMacros, Test5_1, 5) { CHECK(OrderedTestTestingFixture::count() == 5); } TEST_ORDERED(TestOrderedTestMacros, Test6_1, 6) { CHECK(OrderedTestTestingFixture::count() == 7); } TEST_ORDERED(TestOrderedTestMacros, Test5_2, 5) { CHECK(OrderedTestTestingFixture::count() == 6); } TEST_ORDERED(TestOrderedTestMacros, Test6_2, 6) { CHECK(OrderedTestTestingFixture::count() == 8); } // Test C-Interface TEST_ORDERED(TestOrderedTestMacros, Test10, 10) { CHECK(OrderedTestTestingFixture::count() == 12); } TEST_ORDERED(TestOrderedTestMacros, Test8, 8) { CHECK(OrderedTestTestingFixture::count() == 10); } // Export to be usable in OrderedTestTest_c.c extern "C" { int orderedTestFixtureCWrapper(void) { return OrderedTestTestingFixture::count(); } } TEST_ORDERED_C_WRAPPER(TestOrderedTestMacros, Test11, 11) TEST_ORDERED_C_WRAPPER(TestOrderedTestMacros, Test7, 7) TEST_ORDERED_C_WRAPPER(TestOrderedTestMacros, Test9, 9) cpputest-4.0/tests/CppUTestExt/MockFailureReporterForTest.cpp000644 000765 000024 00000010714 13663176127 025466 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "MockFailureReporterForTest.h" void MockFailureReporterForTest::failTest(const MockFailure& failure) { mockFailureString = failure.getMessage(); } MockFailureReporterForTest* MockFailureReporterForTest::instance_ = NULLPTR; MockFailureReporterForTest* MockFailureReporterForTest::getReporter() { if (instance_ == NULLPTR) instance_ = new MockFailureReporterForTest; return instance_; } void MockFailureReporterForTest::clearReporter() { delete instance_; instance_ = NULLPTR; } MockFailureReporterInstaller::MockFailureReporterInstaller() { mock().setMockFailureStandardReporter(MockFailureReporterForTest::getReporter()); } MockFailureReporterInstaller::~MockFailureReporterInstaller() { mock().setMockFailureStandardReporter(NULLPTR); MockFailureReporterForTest::clearReporter(); } UtestShell* mockFailureTest() { return MockFailureReporterForTest::getReporter()->getTestToFail(); } SimpleString mockFailureString() { return MockFailureReporterForTest::getReporter()->mockFailureString; } void CLEAR_MOCK_FAILURE() { MockFailureReporterForTest::getReporter()->mockFailureString = ""; } void CHECK_EXPECTED_MOCK_FAILURE_LOCATION(const MockFailure& expectedFailure, const char* file, size_t line) { SimpleString expectedFailureString = expectedFailure.getMessage(); SimpleString actualFailureString = mockFailureString(); CLEAR_MOCK_FAILURE(); if (expectedFailureString != actualFailureString) { SimpleString error = "MockFailures are different.\n"; error += "Expected MockFailure:\n\t"; error += expectedFailureString; error += "\nActual MockFailure:\n\t"; error += actualFailureString; FAIL_LOCATION(error.asCharString(), file, line); } } void CHECK_NO_MOCK_FAILURE_LOCATION(const char* file, size_t line) { if (mockFailureString() != "") { SimpleString error = "Unexpected mock failure:\n"; error += mockFailureString(); CLEAR_MOCK_FAILURE(); FAIL_LOCATION(error.asCharString(), file, line); } CLEAR_MOCK_FAILURE(); } MockExpectedCallsListForTest::~MockExpectedCallsListForTest() { deleteAllExpectationsAndClearList(); } MockCheckedExpectedCall* MockExpectedCallsListForTest::addFunction(const SimpleString& name) { MockCheckedExpectedCall* newCall = new MockCheckedExpectedCall; newCall->withName(name); addExpectedCall(newCall); return newCall; } MockCheckedExpectedCall* MockExpectedCallsListForTest::addFunction(unsigned int numCalls, const SimpleString& name) { MockCheckedExpectedCall* newCall = new MockCheckedExpectedCall(numCalls); newCall->withName(name); addExpectedCall(newCall); return newCall; } MockCheckedExpectedCall* MockExpectedCallsListForTest::addFunctionOrdered(const SimpleString& name, unsigned int order) { MockCheckedExpectedCall* newCall = addFunction(name); newCall->withCallOrder(order); return newCall; } cpputest-4.0/tests/CppUTestExt/MockFailureReporterForTest.h000644 000765 000024 00000005743 13663176127 025141 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockFailureReporterForTest_h #define D_MockFailureReporterForTest_h #include "CppUTestExt/MockSupport.h" #define CHECK_EXPECTED_MOCK_FAILURE(expectedFailure) CHECK_EXPECTED_MOCK_FAILURE_LOCATION(expectedFailure, __FILE__, __LINE__) #define CHECK_NO_MOCK_FAILURE() CHECK_NO_MOCK_FAILURE_LOCATION(__FILE__, __LINE__) class MockFailureReporterForTest : public MockFailureReporter { public: SimpleString mockFailureString; virtual void failTest(const MockFailure& failure); static MockFailureReporterForTest* getReporter(); static void clearReporter(); private: static MockFailureReporterForTest* instance_; }; class MockFailureReporterInstaller { public: MockFailureReporterInstaller(); ~MockFailureReporterInstaller(); }; UtestShell* mockFailureTest(); SimpleString mockFailureString(); void CLEAR_MOCK_FAILURE(); void CHECK_EXPECTED_MOCK_FAILURE_LOCATION(const MockFailure& expectedFailure, const char* file, size_t line); void CHECK_NO_MOCK_FAILURE_LOCATION(const char* file, size_t line); class MockExpectedCallsListForTest : public MockExpectedCallsList { public: ~MockExpectedCallsListForTest() _destructor_override; MockCheckedExpectedCall* addFunction(const SimpleString& name); MockCheckedExpectedCall* addFunction(unsigned int numCalls, const SimpleString& name); MockCheckedExpectedCall* addFunctionOrdered(const SimpleString& name, unsigned int order); }; #endif cpputest-4.0/tests/CppUTestExt/MockReturnValueTest.cpp000644 000765 000024 00000105110 13663176127 024154 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockReturnValueTest) { void teardown() { mock().checkExpectations(); mock().clear(); } }; TEST(MockReturnValueTest, hasReturnValue) { CHECK(!mock().hasReturnValue()); mock().expectOneCall("foo"); CHECK(!mock().actualCall("foo").hasReturnValue()); CHECK(!mock().hasReturnValue()); mock().expectOneCall("foo2").andReturnValue(1); CHECK(mock().actualCall("foo2").hasReturnValue()); CHECK(mock().hasReturnValue()); } TEST(MockReturnValueTest, UnsignedIntegerReturnValue) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, actual_call.returnUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().unsignedIntReturnValue()); } TEST(MockReturnValueTest, PositiveIntReturnValueCanBeRetrievedAsUnsignedInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); } TEST(MockReturnValueTest, IntReturnValueCanBeRetrievedAsLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); } TEST(MockReturnValueTest, UnsignedIntReturnValueCanBeRetrievedAsLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); } TEST(MockReturnValueTest, PositiveIntReturnValueCanBeRetrievedAsUnsignedLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } TEST(MockReturnValueTest, PositiveLongIntReturnValueCanBeRetrievedAsUnsignedLongInt) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } TEST(MockReturnValueTest, UnsignedIntReturnValueCanBeRetrievedAsUnsignedLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockReturnValueTest, PositiveIntReturnValueCanBeRetrievedAsUnsignedLongLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, PositiveLongIntReturnValueCanBeRetrievedAsUnsignedLongLongInt) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, PositiveLongLongIntReturnValueCanBeRetrievedAsUnsignedLongLongInt) { long long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedIntReturnValueCanBeRetrievedAsUnsignedLongLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongIntReturnValueCanBeRetrievedAsUnsignedLongLongInt) { unsigned long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongLongIntReturnValueCanBeRetrieved) { unsigned long long int expected_value = ULLONG_MAX; mock().expectOneCall("foo").andReturnValue(expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, PositiveIntReturnValueCanBeRetrievedAsLongLongInt) { int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, PositiveLongIntReturnValueCanBeRetrievedAsLongLongInt) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedIntReturnValueCanBeRetrievedAsLongLongInt) { unsigned int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongIntReturnValueCanBeRetrievedAsLongLongInt) { unsigned long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, LongLongIntReturnValueCanBeRetrieved) { long long int expected_value = LLONG_MAX; mock().expectOneCall("foo").andReturnValue(expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); } #endif TEST(MockReturnValueTest, UnsignedIntegerReturnValueSetsDifferentValues) { unsigned int expected_value = 1; unsigned int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getUnsignedIntValue()); } TEST(MockReturnValueTest, UnsignedIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { unsigned int ret_value = 1; unsigned int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getUnsignedIntValue()); } TEST(MockReturnValueTest, WhenADoubleReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { double default_return_value = 10.7; double expected_return_value = default_return_value + 1.3; mock().expectOneCall("foo").andReturnValue(expected_return_value); DOUBLES_EQUAL(expected_return_value, mock().actualCall("foo").returnDoubleValueOrDefault(default_return_value), 0.05); DOUBLES_EQUAL(expected_return_value, mock().returnDoubleValueOrDefault(default_return_value), 0.05); } TEST(MockReturnValueTest, WhenNoDoubleReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { double default_return_value = 7.7; mock().expectOneCall("foo"); DOUBLES_EQUAL(default_return_value, mock().actualCall("foo").returnDoubleValueOrDefault(default_return_value), 0.05); DOUBLES_EQUAL(default_return_value, mock().returnDoubleValueOrDefault(default_return_value), 0.05); } TEST(MockReturnValueTest, WhenAUnsignedIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { unsigned int default_return_value = 10; unsigned int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnUnsignedIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnUnsignedIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoUnsignedIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { unsigned int default_return_value = 10; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnUnsignedIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnUnsignedIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenAUnsignedLongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { unsigned long int default_return_value = 121487; unsigned long int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnUnsignedLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnUnsignedLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoUnsignedLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { unsigned long int default_return_value = 7710144; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnUnsignedLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnUnsignedLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenALongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { long int default_return_value = 748797; long int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { long int default_return_value = 123659; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnLongIntValueOrDefault(default_return_value)); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockReturnValueTest, WhenAUnsignedLongLongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { unsigned long long int default_return_value = ULLONG_MAX; unsigned long long int expected_return_value = default_return_value - 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnUnsignedLongLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnUnsignedLongLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoUnsignedLongLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { unsigned long long int default_return_value = ULLONG_MAX; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnUnsignedLongLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnUnsignedLongLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenALongLongIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { long long int default_return_value = LLONG_MAX; long long int expected_return_value = default_return_value - 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnLongLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnLongLongIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoLongLongIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { long long int default_return_value = LLONG_MAX; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnLongLongIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnLongLongIntValueOrDefault(default_return_value)); } #endif TEST(MockReturnValueTest, WhenABooleanReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { bool default_return_value = true; bool expected_return_value = false; mock().expectOneCall("foo").andReturnValue(expected_return_value); CHECK_EQUAL(expected_return_value, mock().actualCall("foo").returnBoolValueOrDefault(default_return_value)); CHECK_EQUAL(expected_return_value, mock().returnBoolValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoBooleanReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { bool default_return_value = true; mock().expectOneCall("foo"); CHECK_EQUAL(default_return_value, mock().actualCall("foo").returnBoolValueOrDefault(default_return_value)); CHECK_EQUAL(default_return_value, mock().returnBoolValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenAIntegerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { int default_return_value = 777; int expected_return_value = default_return_value + 1; mock().expectOneCall("foo").andReturnValue(expected_return_value); LONGS_EQUAL(expected_return_value, mock().actualCall("foo").returnIntValueOrDefault(default_return_value)); LONGS_EQUAL(expected_return_value, mock().returnIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoIntegerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { int default_return_value = 777; mock().expectOneCall("foo"); LONGS_EQUAL(default_return_value, mock().actualCall("foo").returnIntValueOrDefault(default_return_value)); LONGS_EQUAL(default_return_value, mock().returnIntValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, BooleanReturnValue) { bool expected_value = true; mock().expectOneCall("foo").andReturnValue(true); MockActualCall& actual_call = mock().actualCall("foo"); CHECK_EQUAL(expected_value, actual_call.returnValue().getBoolValue()); CHECK_EQUAL(expected_value, actual_call.returnBoolValue()); CHECK_EQUAL(expected_value, mock().returnValue().getBoolValue()); CHECK_EQUAL(expected_value, mock().boolReturnValue()); } TEST(MockReturnValueTest, BooleanReturnValueSetsDifferentValues) { bool expected_value = true; bool another_expected_value = false; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); CHECK_EQUAL(expected_value, mock().actualCall("foo").returnValue().getBoolValue()); CHECK_EQUAL(expected_value, mock().returnValue().getBoolValue()); CHECK_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getBoolValue()); CHECK_EQUAL(another_expected_value, mock().returnValue().getBoolValue()); } TEST(MockReturnValueTest, BooleanReturnValueSetsDifferentValuesWhileParametersAreIgnored) { bool ret_value = true; bool another_ret_value = false; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); CHECK_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getBoolValue()); CHECK_EQUAL(ret_value, mock().returnValue().getBoolValue()); CHECK_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getBoolValue()); CHECK_EQUAL(another_ret_value, mock().returnValue().getBoolValue()); } TEST(MockReturnValueTest, IntegerReturnValue) { int expected_value = 1; mock().expectOneCall("foo").andReturnValue(1); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getIntValue()); LONGS_EQUAL(expected_value, actual_call.returnIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getIntValue()); LONGS_EQUAL(expected_value, mock().intReturnValue()); } TEST(MockReturnValueTest, IntegerReturnValueSetsDifferentValues) { int expected_value = 1; int another_expected_value = -1; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getIntValue()); } TEST(MockReturnValueTest, IntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { int ret_value = 1; int another_ret_value = -1; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getIntValue()); } TEST(MockReturnValueTest, LongIntegerReturnValue) { long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, actual_call.returnLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, mock().longIntReturnValue()); } TEST(MockReturnValueTest, LongIntegerReturnValueSetsDifferentValues) { long int expected_value = 1; long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getLongIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getLongIntValue()); } TEST(MockReturnValueTest, LongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { long int ret_value = 1; long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getLongIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongIntegerReturnValue) { unsigned long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGS_EQUAL(expected_value, actual_call.returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, actual_call.returnUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().unsignedLongIntReturnValue()); } TEST(MockReturnValueTest, UnsignedLongIntegerReturnValueSetsDifferentValues) { unsigned long int expected_value = 1; unsigned long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_expected_value, mock().returnValue().getUnsignedLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { unsigned long int ret_value = 1; unsigned long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(ret_value, mock().returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongIntValue()); LONGS_EQUAL(another_ret_value, mock().returnValue().getUnsignedLongIntValue()); } #ifdef CPPUTEST_USE_LONG_LONG TEST(MockReturnValueTest, LongLongIntegerReturnValue) { long long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); LONGLONGS_EQUAL(expected_value, actual_call.returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(expected_value, actual_call.returnLongLongIntValue()); LONGLONGS_EQUAL(expected_value, mock().returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(expected_value, mock().longLongIntReturnValue()); } TEST(MockReturnValueTest, LongLongIntegerReturnValueSetsDifferentValues) { long long int expected_value = 1; long long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(expected_value, mock().returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(another_expected_value, mock().returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, LongLongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { long long int ret_value = 1; long long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); LONGLONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(ret_value, mock().returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getLongLongIntValue()); LONGLONGS_EQUAL(another_ret_value, mock().returnValue().getLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongLongIntegerReturnValue) { unsigned long long int expected_value = 7; mock().expectOneCall("foo").andReturnValue(expected_value); MockActualCall& actual_call = mock().actualCall("foo"); UNSIGNED_LONGLONGS_EQUAL(expected_value, actual_call.returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(expected_value, actual_call.returnUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().unsignedLongLongIntReturnValue()); } TEST(MockReturnValueTest, UnsignedLongLongIntegerReturnValueSetsDifferentValues) { unsigned long long int expected_value = 1; unsigned long long int another_expected_value = 2; mock().expectOneCall("foo").andReturnValue(expected_value); mock().expectOneCall("foo").andReturnValue(another_expected_value); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(expected_value, mock().returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(another_expected_value, mock().actualCall("foo").returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(another_expected_value, mock().returnValue().getUnsignedLongLongIntValue()); } TEST(MockReturnValueTest, UnsignedLongLongIntegerReturnValueSetsDifferentValuesWhileParametersAreIgnored) { unsigned long long int ret_value = 1; unsigned long long int another_ret_value = 2; mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(ret_value); mock().expectOneCall("foo").withParameter("p1", 1).ignoreOtherParameters().andReturnValue(another_ret_value); UNSIGNED_LONGLONGS_EQUAL(ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(ret_value, mock().returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(another_ret_value, mock().actualCall("foo").withParameter("p1", 1).returnValue().getUnsignedLongLongIntValue()); UNSIGNED_LONGLONGS_EQUAL(another_ret_value, mock().returnValue().getUnsignedLongLongIntValue()); } #endif TEST(MockReturnValueTest, MatchingReturnValueOnWhileSignature) { mock().expectOneCall("foo").withParameter("p1", 1).andReturnValue(1); mock().expectOneCall("foo").withParameter("p1", 2).andReturnValue(2); mock().expectOneCall("foo").withParameter("p1", 3).andReturnValue(3); mock().expectOneCall("foo").ignoreOtherParameters().andReturnValue(4); LONGS_EQUAL(3, mock().actualCall("foo").withParameter("p1", 3).returnValue().getIntValue()); LONGS_EQUAL(4, mock().actualCall("foo").withParameter("p1", 4).returnValue().getIntValue()); LONGS_EQUAL(1, mock().actualCall("foo").withParameter("p1", 1).returnValue().getIntValue()); LONGS_EQUAL(2, mock().actualCall("foo").withParameter("p1", 2).returnValue().getIntValue()); } TEST(MockReturnValueTest, WhenAStringReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { const char * default_return_value = "default"; const char * expected_return_value = "expected"; mock().expectOneCall("foo").andReturnValue(expected_return_value); STRCMP_EQUAL(expected_return_value, mock().actualCall("foo").returnStringValueOrDefault(default_return_value)); STRCMP_EQUAL(expected_return_value, mock().returnStringValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoStringReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { const char * default_return_value = "default"; mock().expectOneCall("foo"); STRCMP_EQUAL(default_return_value, mock().actualCall("foo").returnStringValueOrDefault(default_return_value)); STRCMP_EQUAL(default_return_value, mock().returnStringValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, StringReturnValue) { mock().expectOneCall("foo").andReturnValue("hello world"); MockActualCall& actual_call = mock().actualCall("foo"); STRCMP_EQUAL("hello world", actual_call.returnValue().getStringValue()); STRCMP_EQUAL("hello world", actual_call.returnStringValue()); STRCMP_EQUAL("hello world", mock().stringReturnValue()); } TEST(MockReturnValueTest, DoubleReturnValue) { double expected_return_value = 7.8; mock().expectOneCall("foo").andReturnValue(expected_return_value); MockActualCall& actual_call = mock().actualCall("foo"); DOUBLES_EQUAL(expected_return_value, actual_call.returnValue().getDoubleValue(), 0.05); DOUBLES_EQUAL(expected_return_value, actual_call.returnDoubleValue(), 0.05); DOUBLES_EQUAL(expected_return_value, mock().doubleReturnValue(), 0.05); } TEST(MockReturnValueTest, WhenAConstPointerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { const void * default_return_value = (void*) 0x7778; const void * expected_return_value = (void*) 0x144010; mock().expectOneCall("foo").andReturnValue(expected_return_value); POINTERS_EQUAL(expected_return_value, mock().actualCall("foo").returnConstPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(expected_return_value, mock().returnConstPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoConstPointerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { const void * default_return_value = (void*) 0x11; mock().expectOneCall("foo"); POINTERS_EQUAL(default_return_value, mock().actualCall("foo").returnConstPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(default_return_value, mock().returnConstPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenAPointerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { void * default_return_value = (void*) 0x777; void * expected_return_value = (void*) 0x144000; mock().expectOneCall("foo").andReturnValue(expected_return_value); POINTERS_EQUAL(expected_return_value, mock().actualCall("foo").returnPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(expected_return_value, mock().returnPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoPointerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { void * default_return_value = (void*) 0x10; mock().expectOneCall("foo"); POINTERS_EQUAL(default_return_value, mock().actualCall("foo").returnPointerValueOrDefault(default_return_value)); POINTERS_EQUAL(default_return_value, mock().returnPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenAFunctionPointerReturnValueIsExpectedAndAlsoThereIsADefaultShouldlIgnoreTheDefault) { void (*default_return_value)() = (void(*)()) 0x777; void (*expected_return_value)() = (void(*)()) 0x144000; mock().expectOneCall("foo").andReturnValue(expected_return_value); FUNCTIONPOINTERS_EQUAL(expected_return_value, mock().actualCall("foo").returnFunctionPointerValueOrDefault(default_return_value)); FUNCTIONPOINTERS_EQUAL(expected_return_value, mock().returnFunctionPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, WhenNoFunctionPointerReturnValueIsExpectedButThereIsADefaultShouldlUseTheDefaultValue) { void (*default_return_value)() = (void(*)()) 0x10; mock().expectOneCall("foo"); FUNCTIONPOINTERS_EQUAL(default_return_value, mock().actualCall("foo").returnFunctionPointerValueOrDefault(default_return_value)); FUNCTIONPOINTERS_EQUAL(default_return_value, mock().returnFunctionPointerValueOrDefault(default_return_value)); } TEST(MockReturnValueTest, PointerReturnValue) { void* ptr = (void*) 0x00107; mock().expectOneCall("foo").andReturnValue(ptr); MockActualCall& actual_call = mock().actualCall("foo"); POINTERS_EQUAL(ptr, actual_call.returnValue().getPointerValue()); POINTERS_EQUAL(ptr, actual_call.returnPointerValue()); POINTERS_EQUAL(ptr, mock().pointerReturnValue()); } TEST(MockReturnValueTest, ConstPointerReturnValue) { const void* ptr = (const void*) 0x001074; mock().expectOneCall("foo").andReturnValue(ptr); MockActualCall& actual_call = mock().actualCall("foo"); POINTERS_EQUAL(ptr, actual_call.returnValue().getConstPointerValue()); POINTERS_EQUAL(ptr, actual_call.returnConstPointerValue()); POINTERS_EQUAL(ptr, mock().constPointerReturnValue()); } TEST(MockReturnValueTest, FunctionPointerReturnValue) { void (*ptr)() = (void(*)()) 0x00107; mock().expectOneCall("foo").andReturnValue(ptr); MockActualCall& actual_call = mock().actualCall("foo"); FUNCTIONPOINTERS_EQUAL(ptr, actual_call.returnValue().getFunctionPointerValue()); FUNCTIONPOINTERS_EQUAL(ptr, actual_call.returnFunctionPointerValue()); FUNCTIONPOINTERS_EQUAL(ptr, mock().functionPointerReturnValue()); } TEST(MockReturnValueTest, whenCallingDisabledOrIgnoredActualCallsThenTheyDontReturnPreviousCallsValues) { mock().expectOneCall("boo").ignoreOtherParameters().andReturnValue(10); mock().ignoreOtherCalls(); mock().actualCall("boo"); mock().actualCall("An Ignored Call"); CHECK(!mock().hasReturnValue()); } cpputest-4.0/tests/CppUTestExt/IEEE754PluginTest_c.h000644 000765 000024 00000003376 13663176127 023176 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2015, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ void set_divisionbyzero_c(void); void set_overflow_c(void); void set_underflow_c(void); void set_inexact_c(void); void set_nothing_c(void); void set_everything_c(void); cpputest-4.0/tests/CppUTestExt/MockCheatSheetTest.cpp000644 000765 000024 00000003642 13663176127 023724 0ustar00basvoddestaff000000 000000 /* Additional include from CppUTestExt */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockSupport.h" /* Stubbed out product code using linker, function pointer, or overriding */ static int foo(const char* param_string, int param_int) { /* Tell CppUTest Mocking what we mock. Also return recorded value */ return mock().actualCall("Foo") .withParameter("param_string", param_string) .withParameter("param_int", param_int) .returnValue().getIntValue(); } static void bar(double param_double, const char* param_string) { mock().actualCall("Bar") .withParameter("param_double", param_double) .withParameter("param_string", param_string); } /* Production code calls to the methods we stubbed */ static int productionCodeFooCalls() { int return_value; return_value = foo("value_string", 10); (void)return_value; return_value = foo("value_string", 10); return return_value; } static void productionCodeBarCalls() { bar(1.5, "more"); bar(1.5, "more"); } /* Actual test */ TEST_GROUP(MockCheatSheet) { void teardown() { /* Check expectations. Alternatively use MockSupportPlugin */ mock().checkExpectations(); mock().clear(); } }; TEST(MockCheatSheet, foo) { /* Record 2 calls to Foo. Return different values on each call */ mock().expectOneCall("Foo") .withParameter("param_string", "value_string") .withParameter("param_int", 10) .andReturnValue(30); mock().expectOneCall("Foo") .ignoreOtherParameters() .andReturnValue(50); /* Call production code */ productionCodeFooCalls(); } TEST(MockCheatSheet, bar) { /* Expect 2 calls on Bar. Check only one parameter */ mock().expectNCalls(2, "Bar") .withParameter("param_double", 1.5) .ignoreOtherParameters(); /* And the production code call */ productionCodeBarCalls(); } cpputest-4.0/tests/CppUTestExt/MockActualCallTest.cpp000644 000765 000024 00000025744 13663176127 023723 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" #include "CppUTestExt/MockFailure.h" #include "MockFailureReporterForTest.h" TEST_GROUP(MockCheckedActualCall) { MockExpectedCallsList* emptyList; MockExpectedCallsList* list; MockFailureReporter* reporter; void setup() { emptyList = new MockExpectedCallsList; list = new MockExpectedCallsList; reporter = MockFailureReporterForTest::getReporter(); } void teardown() { CHECK_NO_MOCK_FAILURE(); MockFailureReporterForTest::clearReporter(); delete emptyList; delete list; } }; TEST(MockCheckedActualCall, unExpectedCall) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected"); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedCallWithAParameter) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected").withParameter("bar", 0); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedCallWithAnOutputParameter) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected").withOutputParameter("bar", NULLPTR); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedCallOnObject) { int object; MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("unexpected").onObject(&object); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "unexpected", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); CHECK(actualCall.hasFailed()); // Checks that onObject() doesn't "reset" call state } TEST(MockCheckedActualCall, actualCallWithNoReturnValueAndMeaninglessCallOrderForCoverage) { MockCheckedActualCall actualCall(1, reporter, *emptyList); actualCall.withName("noreturn").withCallOrder(0).returnValue(); MockUnexpectedCallHappenedFailure expectedFailure(mockFailureTest(), "noreturn", *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, unExpectedParameterName) { MockCheckedExpectedCall call1; call1.withName("func"); list->addExpectedCall(&call1); MockCheckedActualCall actualCall(1, reporter, *list); actualCall.withName("func").withParameter("integer", 1); MockNamedValue parameter("integer"); parameter.setValue(1); MockUnexpectedInputParameterFailure expectedFailure(mockFailureTest(), "func", parameter, *list); CHECK_EXPECTED_MOCK_FAILURE(expectedFailure); } TEST(MockCheckedActualCall, multipleSameFunctionsExpectingAndHappenGradually) { MockCheckedExpectedCall* call1 = new MockCheckedExpectedCall(); MockCheckedExpectedCall* call2 = new MockCheckedExpectedCall(); call1->withName("func"); call2->withName("func"); list->addExpectedCall(call1); list->addExpectedCall(call2); LONGS_EQUAL(2, list->amountOfUnfulfilledExpectations()); MockCheckedActualCall actualCall1(1, reporter, *list); actualCall1.withName("func"); actualCall1.checkExpectations(); LONGS_EQUAL(1, list->amountOfUnfulfilledExpectations()); MockCheckedActualCall actualCall2(2, reporter, *list); actualCall2.withName("func"); actualCall2.checkExpectations(); LONGS_EQUAL(0, list->amountOfUnfulfilledExpectations()); list->deleteAllExpectationsAndClearList(); } TEST(MockCheckedActualCall, MockIgnoredActualCallWorksAsItShould) { MockIgnoredActualCall actual; actual.withName("func"); actual.withCallOrder(1); CHECK(false == actual.returnBoolValue()); CHECK(true == actual.returnBoolValueOrDefault(true)); CHECK(false == actual.returnBoolValueOrDefault(false)); CHECK(0 == actual.returnUnsignedLongIntValue()); CHECK(0 == actual.returnIntValue()); CHECK(1ul == actual.returnUnsignedLongIntValueOrDefault(1ul)); CHECK(1 == actual.returnIntValueOrDefault(1)); CHECK(0 == actual.returnLongIntValue()); CHECK(1l == actual.returnLongIntValueOrDefault(1l)); CHECK(0 == actual.returnUnsignedIntValue()); CHECK(1u == actual.returnUnsignedIntValueOrDefault(1u)); #ifdef CPPUTEST_USE_LONG_LONG CHECK(0 == actual.returnLongLongIntValue()); CHECK(1ll == actual.returnLongLongIntValueOrDefault(1ll)); CHECK(0 == actual.returnUnsignedLongLongIntValue()); CHECK(1ull == actual.returnUnsignedLongLongIntValueOrDefault(1ull)); #endif DOUBLES_EQUAL(0.0, actual.returnDoubleValue(), 0.0); DOUBLES_EQUAL(1.5, actual.returnDoubleValueOrDefault(1.5), 0.0); STRCMP_EQUAL("bla", actual.returnStringValueOrDefault("bla")); STRCMP_EQUAL("", actual.returnStringValue()); CHECK(NULLPTR == actual.returnPointerValue()); CHECK((void*) 0x2 == actual.returnPointerValueOrDefault((void*) 0x2)); CHECK(NULLPTR == actual.returnConstPointerValue()); CHECK((const void*) 0x2 == actual.returnConstPointerValueOrDefault((const void*) 0x2)); CHECK(NULLPTR == actual.returnFunctionPointerValue()); CHECK((void(*)()) 1 == actual.returnFunctionPointerValueOrDefault((void(*)()) 0x1)); CHECK_FALSE(actual.hasReturnValue()); CHECK(actual.returnValue().equals(MockNamedValue(""))); } TEST(MockCheckedActualCall, remainderOfMockActualCallTraceWorksAsItShould) { int value; const int const_value = 1; const unsigned char mem_buffer[] = { 0xFE, 0x15 }; void (*function_value)() = (void (*)())0xDEAD; MockActualCallTrace actual; actual.withName("func"); actual.withCallOrder(1); actual.onObject(&value); actual.withBoolParameter("bool", true); actual.withUnsignedIntParameter("unsigned_int", (unsigned int) 1); actual.withUnsignedLongIntParameter("unsigned_long", (unsigned long)1); actual.withLongIntParameter("long_int", (long int) 1); #ifdef CPPUTEST_USE_LONG_LONG actual.withLongLongIntParameter("long_long_int", (long long int) 1); actual.withUnsignedLongLongIntParameter("unsigned_long_long_int", (unsigned long long int) 1); #endif actual.withPointerParameter("pointer", &value); actual.withConstPointerParameter("const_pointer", &const_value); actual.withFunctionPointerParameter("function_pointer", function_value); actual.withMemoryBufferParameter("mem_buffer", mem_buffer, sizeof(mem_buffer)); actual.withParameterOfType("int", "named_type", &const_value); SimpleString expectedString("\nFunction name:func"); expectedString += " withCallOrder:1"; expectedString += " onObject:0x"; expectedString += HexStringFrom(&value); expectedString += " bool:true"; expectedString += " unsigned_int:1 (0x1)"; expectedString += " unsigned_long:1 (0x1)"; expectedString += " long_int:1 (0x1)"; #ifdef CPPUTEST_USE_LONG_LONG expectedString += " long_long_int:1 (0x1)"; expectedString += " unsigned_long_long_int:1 (0x1)"; #endif expectedString += " pointer:0x"; expectedString += HexStringFrom(&value); expectedString += " const_pointer:0x"; expectedString += HexStringFrom(&const_value); expectedString += " function_pointer:0x"; expectedString += HexStringFrom(function_value); expectedString += " mem_buffer:Size = 2 | HexContents = FE 15"; expectedString += " int named_type:0x"; expectedString += HexStringFrom(&const_value); STRCMP_EQUAL(expectedString.asCharString(), actual.getTraceOutput()); CHECK_FALSE(actual.hasReturnValue()); CHECK(actual.returnValue().equals(MockNamedValue(""))); CHECK(false == actual.returnBoolValue()); CHECK(false == actual.returnBoolValueOrDefault(true)); CHECK(0 == actual.returnLongIntValue()); CHECK(0 == actual.returnUnsignedLongIntValue()); CHECK(0 == actual.returnIntValue()); CHECK(0 == actual.returnUnsignedLongIntValueOrDefault(1ul)); CHECK(0 == actual.returnIntValueOrDefault(1)); CHECK(0 == actual.returnLongIntValue()); CHECK(0 == actual.returnLongIntValueOrDefault(1l)); #ifdef CPPUTEST_USE_LONG_LONG CHECK(0 == actual.returnLongLongIntValue()); CHECK(0 == actual.returnLongLongIntValueOrDefault(1ll)); CHECK(0 == actual.returnUnsignedLongLongIntValue()); CHECK(0 == actual.returnUnsignedLongLongIntValueOrDefault(1ull)); #endif CHECK(0 == actual.returnUnsignedIntValue()); CHECK(0 == actual.returnUnsignedIntValueOrDefault(1u)); DOUBLES_EQUAL(0.0, actual.returnDoubleValue(), 0.0); DOUBLES_EQUAL(0.0, actual.returnDoubleValueOrDefault(1.0), 0.0); STRCMP_EQUAL("", actual.returnStringValueOrDefault("bla")); STRCMP_EQUAL("", actual.returnStringValue()); CHECK(NULLPTR == actual.returnPointerValue()); CHECK(NULLPTR == actual.returnPointerValueOrDefault((void*) NULLPTR)); CHECK(NULLPTR == actual.returnConstPointerValue()); CHECK(NULLPTR == actual.returnConstPointerValueOrDefault((const void*) NULLPTR)); CHECK(NULLPTR == actual.returnFunctionPointerValue()); CHECK(NULLPTR == actual.returnFunctionPointerValueOrDefault((void (*)()) NULLPTR)); } TEST(MockCheckedActualCall, MockActualCallTraceClear) { MockActualCallTrace actual; actual.withName("func"); actual.clear(); STRCMP_EQUAL("", actual.getTraceOutput()); } cpputest-4.0/tests/CppUTestExt/OrderedTestTest.h000644 000765 000024 00000003414 13663176127 022763 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef ORDEREDTESTTEST_H #define ORDEREDTESTTEST_H #ifdef __cplusplus extern "C" { #endif extern int orderedTestFixtureCWrapper(void); #ifdef __cplusplus } #endif #endif /* ORDEREDTESTTEST_H */ cpputest-4.0/tests/CppUTestExt/AllTests.cpp000644 000765 000024 00000005376 13663176127 021776 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/SimpleStringInternalCache.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" #ifdef CPPUTEST_INCLUDE_GTEST_TESTS #include "CppUTestExt/GTestConvertor.h" #endif int main(int ac, const char *const *av) { int result = 0; GlobalSimpleStringCache simpleStringCache; { #ifdef CPPUTEST_INCLUDE_GTEST_TESTS GTestConvertor convertor; convertor.addAllGTestToTestRegistry(); #endif MemoryReporterPlugin plugin; MockSupportPlugin mockPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&plugin); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); #ifndef GMOCK_RENAME_MAIN result = CommandLineTestRunner::RunAllTests(ac, av); #else /* Don't have any memory leak detector when running the Google Test tests */ testing::GMOCK_FLAG(verbose) = testing::internal::kWarningVerbosity; ConsoleTestOutput output; CommandLineTestRunner runner(ac, av, TestRegistry::getCurrentRegistry()); result = runner.runAllTestsMain(); #endif } return result; } cpputest-4.0/tests/CppUTestExt/OrderedTestTest_c.c000644 000765 000024 00000000522 13663176127 023255 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness_c.h" #include "OrderedTestTest.h" TEST_C(TestOrderedTestMacros, Test11) { CHECK_C(orderedTestFixtureCWrapper() == 13); } TEST_C(TestOrderedTestMacros, Test7) { CHECK_C(orderedTestFixtureCWrapper() == 9); } TEST_C(TestOrderedTestMacros, Test9) { CHECK_C(orderedTestFixtureCWrapper() == 11); } cpputest-4.0/tests/CppUTestExt/MemoryReporterPluginTest.cpp000644 000765 000024 00000032335 13663176127 025250 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MemoryReportFormatter.h" #include "CppUTestExt/MockSupport.h" #include "CppUTestExt/MockNamedValue.h" static TestMemoryAllocator* previousNewAllocator; class TemporaryDefaultNewAllocator { TestMemoryAllocator* newAllocator; public: TemporaryDefaultNewAllocator(TestMemoryAllocator* oldAllocator) { newAllocator = getCurrentNewAllocator(); setCurrentNewAllocator(oldAllocator); } ~TemporaryDefaultNewAllocator() { setCurrentNewAllocator(newAllocator); } }; class MockMemoryReportFormatter : public MemoryReportFormatter { public: virtual void report_testgroup_start(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_testgroup_start").withParameter("result", result).withParameter("test", &test); } virtual void report_testgroup_end(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_testgroup_end").withParameter("result", result).withParameter("test", &test); } virtual void report_test_start(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_test_start").withParameter("result", result).withParameter("test", &test); } virtual void report_test_end(TestResult* result, UtestShell& test) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_test_end").withParameter("result", result).withParameter("test", &test); } virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t, char* , const char* , size_t ) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", allocator); } virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* , const char* , size_t ) { TemporaryDefaultNewAllocator tempAlloc(previousNewAllocator); mock("formatter").actualCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", allocator); } }; static MockMemoryReportFormatter formatterForPluginTest; class MemoryReporterPluginUnderTest : public MemoryReporterPlugin { public: MemoryReportFormatter* createMemoryFormatter(const SimpleString& type) { mock("reporter").actualCall("createMemoryFormatter").onObject(this).withParameter("type", type.asCharString()); return new MockMemoryReportFormatter; } }; class TestMemoryAllocatorComparator : public MockNamedValueComparator { public: bool isEqual(const void* object1, const void* object2) { return ((const TestMemoryAllocator*)object1)->name() == ((const TestMemoryAllocator*)object2)->name(); } SimpleString valueToString(const void* object) { return ((const TestMemoryAllocator*)object)->name(); } }; TEST_GROUP(MemoryReporterPlugin) { MemoryReporterPluginUnderTest* reporter; StringBufferTestOutput output; TestMemoryAllocatorComparator memLeakAllocatorComparator; TestResult* result; UtestShell* test; void setup() { previousNewAllocator = getCurrentNewAllocator(); result = new TestResult(output); test = new UtestShell("groupname", "testname", "filename", 1); reporter = new MemoryReporterPluginUnderTest; mock("formatter").installComparator("TestMemoryAllocator", memLeakAllocatorComparator); mock("reporter").disable(); const char *cmd_line[] = {"-pmemoryreport=normal"}; reporter->parseArguments(1, cmd_line, 0); mock("reporter").enable(); } void teardown() { setCurrentNewAllocator(previousNewAllocator); mock().clear(); delete reporter; delete test; delete result; } }; TEST(MemoryReporterPlugin, offReportsNothing) { MemoryReporterPluginUnderTest freshReporter; freshReporter.preTestAction(*test, *result); char* memory = new char; delete memory; freshReporter.postTestAction(*test, *result); } TEST(MemoryReporterPlugin, meaninglessArgumentsAreIgnored) { const char *cmd_line[] = {"-nothing", "-pnotmemoryreport=normal", "alsomeaningless", "-pmemoryreportnonsensebutnotus"}; CHECK(reporter->parseArguments(3, cmd_line, 1) == false); } TEST(MemoryReporterPlugin, commandLineParameterTurnsOnNormalLogging) { mock("reporter").expectOneCall("createMemoryFormatter").onObject(reporter).withParameter("type", "normal"); const char *cmd_line[] = {"-nothing", "-pmemoryreport=normal", "alsomeaningless" }; CHECK(reporter->parseArguments(3, cmd_line, 1)); } TEST(MemoryReporterPlugin, preTestActionReportsTest) { mock("formatter").expectOneCall("report_testgroup_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); reporter->preTestAction(*test, *result); } TEST(MemoryReporterPlugin, postTestActionReportsTest) { mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_testgroup_end").withParameter("result", result).withParameter("test", test); reporter->postTestAction(*test, *result); } TEST(MemoryReporterPlugin, newAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getNewAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getNewAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentNewAllocator()->allocMemoryLeakNode(100); getCurrentNewAllocator()->free_memory(memory, 100, "unknown", 1); } TEST(MemoryReporterPlugin, whenUsingOnlyMallocAllocatorNoOtherOfTheAllocatorsAreUsed) { mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getMallocAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getMallocAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentMallocAllocator()->allocMemoryLeakNode(100); getCurrentMallocAllocator()->free_memory(memory, 100, "unknown", 1); } TEST(MemoryReporterPlugin, newArrayAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getNewArrayAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getNewArrayAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentNewArrayAllocator()->allocMemoryLeakNode(100); getCurrentNewArrayAllocator()->free_memory(memory, 100, "unknown", 1); } TEST(MemoryReporterPlugin, mallocAllocationsAreReportedTest) { mock("formatter").expectOneCall("report_alloc_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getMallocAllocator()); mock("formatter").expectOneCall("report_free_memory").withParameter("result", result).withParameterOfType("TestMemoryAllocator", "allocator", reporter->getMallocAllocator()); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); char *memory = getCurrentMallocAllocator()->allocMemoryLeakNode(100); getCurrentMallocAllocator()->free_memory(memory, 100, "unknown", 1); } TEST(MemoryReporterPlugin, startOfANewTestWillReportTheTestGroupStart) { mock("formatter").expectOneCall("report_testgroup_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_start").withParameter("result", result).withParameter("test", test); mock("formatter").expectOneCall("report_test_end").withParameter("result", result).withParameter("test", test); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); } class UtestForMemoryReportingPlugingTest : public UtestShell { public: UtestForMemoryReportingPlugingTest(const char* groupname, UtestShell* test) : UtestShell(groupname, "testname", "filename", 1, test) { } }; TEST(MemoryReporterPlugin, endOfaTestGroupWillReportSo) { UtestForMemoryReportingPlugingTest fourthTest("differentGroupName", NULLPTR); UtestForMemoryReportingPlugingTest thirdTest("differentGroupName", &fourthTest); UtestForMemoryReportingPlugingTest secondTest("groupname", &thirdTest); UtestForMemoryReportingPlugingTest firstTest("groupname", &secondTest); mock("formatter").expectOneCall("report_testgroup_end").withParameter("result", result).withParameter("test", &secondTest); mock("formatter").ignoreOtherCalls(); reporter->preTestAction(firstTest, *result); reporter->postTestAction(firstTest, *result); reporter->preTestAction(secondTest, *result); reporter->postTestAction(secondTest, *result); reporter->preTestAction(thirdTest, *result); reporter->postTestAction(thirdTest, *result); } TEST(MemoryReporterPlugin, preActionReplacesAllocators) { mock("formatter").ignoreOtherCalls(); TestMemoryAllocator* allocator = getCurrentMallocAllocator(); reporter->preTestAction(*test, *result); CHECK(allocator != getCurrentMallocAllocator()); } TEST(MemoryReporterPlugin, postActionRestoresAllocators) { mock("formatter").ignoreOtherCalls(); TestMemoryAllocator* allocator = getCurrentMallocAllocator(); reporter->preTestAction(*test, *result); reporter->postTestAction(*test, *result); CHECK(allocator == getCurrentMallocAllocator()); } TEST(MemoryReporterPlugin, shouldCreateNormalMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=normal"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); } TEST(MemoryReporterPlugin, shouldCreateCodeMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=code"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); } TEST(MemoryReporterPlugin, shouldntCrashCreateInvalidMemoryReportFormatterWithoutMock) { MemoryReporterPlugin realReporter; const char *cmd_line[] = {"-pmemoryreport=foo"}; CHECK(realReporter.parseArguments(1, cmd_line, 0)); realReporter.preTestAction(*test, *result); realReporter.postTestAction(*test, *result); } cpputest-4.0/tests/CppUTestExt/MockNamedValueTest.cpp000644 000765 000024 00000010600 13663176127 023720 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockNamedValue.h" TEST_GROUP(ComparatorsAndCopiersRepository) { }; class MyComparator : public MockNamedValueComparator { public: MyComparator() {} virtual ~MyComparator() _destructor_override {} virtual bool isEqual(const void*, const void*) _override { return false; } virtual SimpleString valueToString(const void*) _override { return ""; } }; class MyCopier : public MockNamedValueCopier { public: MyCopier() {} virtual ~MyCopier() _destructor_override {} virtual void copy(void*, const void*) _override {} }; TEST(ComparatorsAndCopiersRepository, InstallCopierAndRetrieveIt) { MyCopier copier; MockNamedValueComparatorsAndCopiersRepository repository; repository.installCopier("MyType", copier); POINTERS_EQUAL(&copier, repository.getCopierForType("MyType")); repository.clear(); } TEST(ComparatorsAndCopiersRepository, ComparatorAndCopierByTheSameNameShouldBothBeFound) { MyComparator comparator; MyCopier copier; MockNamedValueComparatorsAndCopiersRepository repository; repository.installCopier("MyType", copier); repository.installComparator("MyType", comparator); POINTERS_EQUAL(&comparator, repository.getComparatorForType("MyType")); POINTERS_EQUAL(&copier, repository.getCopierForType("MyType")); repository.clear(); } TEST(ComparatorsAndCopiersRepository, InstallComparatorsAndCopiersFromRepository) { MyComparator comparator; MyCopier copier; MockNamedValueComparatorsAndCopiersRepository source; MockNamedValueComparatorsAndCopiersRepository target; source.installCopier("MyType", copier); source.installComparator("MyType", comparator); target.installComparatorsAndCopiers(source); POINTERS_EQUAL(&comparator, target.getComparatorForType("MyType")); POINTERS_EQUAL(&copier, target.getCopierForType("MyType")); source.clear(); target.clear(); } TEST_GROUP(MockNamedValue) { MockNamedValue * value; void setup() { value = new MockNamedValue("param"); } void teardown() { delete value; } }; TEST(MockNamedValue, DefaultToleranceUsedWhenNoToleranceGiven) { value->setValue(0.2); DOUBLES_EQUAL(MockNamedValue::defaultDoubleTolerance, value->getDoubleTolerance(), 0.0); } TEST(MockNamedValue, GivenToleranceUsed) { value->setValue(0.2, 3.2); STRCMP_EQUAL("double", value->getType().asCharString()); DOUBLES_EQUAL(0.2, value->getDoubleValue(), 0.0); DOUBLES_EQUAL(3.2, value->getDoubleTolerance(), 0.0); } TEST(MockNamedValue, DoublesEqualIfWithinTolerance) { value->setValue(5.0, 0.4); MockNamedValue other("param2"); other.setValue(5.3); CHECK_TRUE(value->equals(other)); } TEST(MockNamedValue, DoublesNotEqualIfOutsideTolerance) { value->setValue(5.0, 0.4); MockNamedValue other("param2"); other.setValue(5.5); CHECK_FALSE(value->equals(other)); } cpputest-4.0/tests/CppUTestExt/MockSupport_cTestCFile.c000644 000765 000024 00000023762 13663176127 024235 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTestExt/MockSupport_c.h" #include "MockSupport_cTestCFile.h" static int typeNameIsEqual(const void* object1, const void* object2) { return object1 == object2; } static const char* typeNameValueToString(const void* object) { return (const char*) object; } void all_mock_support_c_calls(void) { mock_c()->strictOrder(); mock_c()->expectOneCall("boo"); mock_c()->expectNoCall("bla"); mock_c()->expectNCalls(1, "foo"); mock_c()->actualCall("boo"); mock_c()->actualCall("foo"); mock_c()->checkExpectations(); mock_c()->expectOneCall("boo")->withIntParameters("integer", 1)-> withBoolParameters("bool", 1)-> withUnsignedIntParameters("unsigned", 1)-> withLongIntParameters("long int", (long int) -1)-> withUnsignedLongIntParameters("unsigned long int", (unsigned long int) 1)-> #ifdef CPPUTEST_USE_LONG_LONG withLongLongIntParameters("long long int", (long long int) -1)-> withUnsignedLongLongIntParameters("unsigned long long int", (unsigned long long int) 1)-> #endif withDoubleParameters("double", 1.0)-> withDoubleParametersAndTolerance("doubleWithTolerance", 1.0, 1.0)-> withStringParameters("string", "string")-> withPointerParameters("pointer", (void*) 1)-> withConstPointerParameters("constpointer", (const void*) 1)-> withFunctionPointerParameters("functionpointer", (void(*)(void)) 1)-> withMemoryBufferParameter("name", (void*) 1, 0UL)-> ignoreOtherParameters(); mock_c()->actualCall("boo")->withIntParameters("integer", 1)-> withBoolParameters("bool", 1)-> withUnsignedIntParameters("unsigned", 1)-> withLongIntParameters("long int", (long int) -1)-> withUnsignedLongIntParameters("unsigned long int", (unsigned long int) 1)-> #ifdef CPPUTEST_USE_LONG_LONG withLongLongIntParameters("long long int", (long long int) -1)-> withUnsignedLongLongIntParameters("unsigned long long int", (unsigned long long int) 1)-> #endif withDoubleParameters("double", 1.0)-> withDoubleParameters("doubleWithTolerance", 0.0 )-> withStringParameters("string", "string")-> withPointerParameters("pointer", (void*) 1)-> withConstPointerParameters("constpointer", (const void*) 1)-> withFunctionPointerParameters("functionpointer", (void(*)(void)) 1)-> withMemoryBufferParameter("name", (void*) 1, 0UL)-> hasReturnValue(); mock_c()->disable(); mock_c()->expectOneCall("boo")->withParameterOfType("type", "name", (void*) 1)-> withOutputParameterReturning("name", (void*)1, 0UL)-> withOutputParameterOfTypeReturning("type", "name", (void*)1); mock_c()->actualCall("boo")->withParameterOfType("type", "name", (void*) 1)-> withOutputParameter("name", (void*)1)-> withOutputParameterOfType("type", "name", (void*)1); mock_c()->enable(); mock_c()->clear(); mock_c()->installComparator("typeName", typeNameIsEqual, typeNameValueToString); mock_c()->expectOneCall("boo")->withParameterOfType("typeName", "name", (void*) 1); mock_c()->actualCall("boo")->withParameterOfType("typeName", "name", (void*) 1); mock_c()->clear(); mock_c()->removeAllComparatorsAndCopiers(); mock_c()->expectOneCall("boo")->andReturnBoolValue(1); mock_c()->actualCall("boo")->boolReturnValue(); mock_c()->boolReturnValue(); mock_c()->expectOneCall("boo")->andReturnIntValue(-10); mock_c()->actualCall("boo")->intReturnValue(); mock_c()->intReturnValue(); mock_c()->returnValue(); mock_c()->expectOneCall("boo2")->andReturnUnsignedIntValue(1); mock_c()->actualCall("boo2")->unsignedIntReturnValue(); mock_c()->unsignedIntReturnValue(); mock_c()->expectOneCall("boo3")->andReturnLongIntValue(1); mock_c()->actualCall("boo3")->longIntReturnValue(); mock_c()->longIntReturnValue(); mock_c()->expectOneCall("boo3")->andReturnUnsignedLongIntValue(1); mock_c()->actualCall("boo3")->unsignedLongIntReturnValue(); mock_c()->unsignedLongIntReturnValue(); #ifdef CPPUTEST_USE_LONG_LONG mock_c()->expectOneCall("mgrgrgr1")->andReturnLongLongIntValue(1); mock_c()->actualCall("mgrgrgr1")->longLongIntReturnValue(); mock_c()->longLongIntReturnValue(); mock_c()->expectOneCall("mgrgrgr2")->andReturnUnsignedLongLongIntValue(1); mock_c()->actualCall("mgrgrgr2")->unsignedLongLongIntReturnValue(); mock_c()->unsignedLongLongIntReturnValue(); #endif mock_c()->expectOneCall("boo4")->andReturnDoubleValue(1.0); mock_c()->actualCall("boo4")->doubleReturnValue(); mock_c()->doubleReturnValue(); mock_c()->expectOneCall("boo5")->andReturnStringValue("hello world"); mock_c()->actualCall("boo5")->stringReturnValue(); mock_c()->stringReturnValue(); mock_c()->expectOneCall("boo6")->andReturnPointerValue((void*) 10); mock_c()->actualCall("boo6")->pointerReturnValue(); mock_c()->pointerReturnValue(); mock_c()->expectOneCall("boo7")->andReturnConstPointerValue((void*) 10); mock_c()->actualCall("boo7")->constPointerReturnValue(); mock_c()->constPointerReturnValue(); mock_c()->expectOneCall("boo8")->andReturnFunctionPointerValue((void(*)(void)) 10); mock_c()->actualCall("boo8")->functionPointerReturnValue(); mock_c()->functionPointerReturnValue(); mock_c()->setBoolData("bool", 1); mock_c()->expectOneCall("bla")->withBoolParameters("bool", 1); mock_c()->actualCall("bla")->withBoolParameters("bool", mock_c()->getData("bool").value.boolValue); mock_c()->setIntData("int", 5); mock_c()->expectOneCall("bla")->withIntParameters("int", 5); mock_c()->actualCall("bla")->withIntParameters("int", mock_c()->getData("int").value.intValue); mock_c()->setStringData("string", "lol"); mock_c()->expectOneCall("bla")->withStringParameters("str", "lol"); mock_c()->actualCall("bla")->withStringParameters("str", mock_c()->getData("string").value.stringValue); mock_c()->setDoubleData("double", 0.001); mock_c()->expectOneCall("bla")->withDoubleParameters("double", 0.001); mock_c()->actualCall("bla")->withDoubleParameters("double", mock_c()->getData("double").value.doubleValue); mock_c()->setPointerData("ptr", (void*)1); mock_c()->expectOneCall("bla")->withPointerParameters("ptr", (void*)1); mock_c()->actualCall("bla")->withPointerParameters("ptr", mock_c()->getData("ptr").value.pointerValue); mock_c()->setConstPointerData("cptr", (const void*)1); mock_c()->expectOneCall("bla")->withConstPointerParameters("cptr", (const void*)1); mock_c()->actualCall("bla")->withConstPointerParameters("cptr", mock_c()->getData("ptr").value.constPointerValue); mock_c()->setFunctionPointerData("ptr", (void(*)(void))1); mock_c()->expectOneCall("bla")->withFunctionPointerParameters("ptr", (void(*)(void))1); mock_c()->actualCall("bla")->withFunctionPointerParameters("ptr", mock_c()->getData("ptr").value.functionPointerValue); mock_c()->clear(); mock_c()->hasReturnValue(); mock_c()->returnBoolValueOrDefault(1); mock_c()->returnIntValueOrDefault(-1); mock_c()->returnUnsignedIntValueOrDefault(1); mock_c()->returnLongIntValueOrDefault(-1L); mock_c()->returnUnsignedLongIntValueOrDefault(1L); #ifdef CPPUTEST_USE_LONG_LONG mock_c()->returnLongLongIntValueOrDefault(-1LL); mock_c()->returnUnsignedLongLongIntValueOrDefault(1ULL); #endif mock_c()->returnStringValueOrDefault(""); mock_c()->returnDoubleValueOrDefault(0.01); mock_c()->returnPointerValueOrDefault(0); mock_c()->returnConstPointerValueOrDefault(0); mock_c()->returnFunctionPointerValueOrDefault(0); mock_c()->disable(); mock_c()->actualCall("disabled"); mock_c()->enable(); mock_c()->checkExpectations(); mock_c()->setIntData("bla1", -2); mock_c()->setUnsignedIntData("bla2", 2); mock_c()->setDoubleData("bla3", 0.035); mock_c()->setStringData("bla4", "abc"); mock_c()->setPointerData("bla", (void*) 2); mock_c()->setConstPointerData("bla", (const void*) 2); mock_c()->setFunctionPointerData("bla", (void (*)(void)) 2); mock_c()->setDataObject("bla", "type", (void*) 2); mock_c()->getData("bla"); mock_scope_c("scope")->expectOneCall("boo"); mock_scope_c("other")->expectedCallsLeft(); mock_scope_c("scope")->expectedCallsLeft(); mock_scope_c("scope")->actualCall("boo"); } cpputest-4.0/tests/CppUTest/CompatabilityTests.cpp000644 000765 000024 00000000624 13663176127 023375 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #if CPPUTEST_USE_STD_CPP_LIB #include TEST_GROUP(StandardCppLibrary) { }; #if defined(__cplusplus) && __cplusplus >= 201402L TEST(StandardCppLibrary, UniquePtrConversationToBool) { auto const aNull = std::unique_ptr(nullptr); CHECK_FALSE(aNull); auto const notNull = std::make_unique(1); CHECK_TRUE(notNull); } #endif #endif cpputest-4.0/tests/CppUTest/SetPluginTest.cpp000644 000765 000024 00000006577 13663176127 022340 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestPlugin.h" static void orig_func1() { } static void stub_func1() { } static void orig_func2() { } static void stub_func2() { } static void (*fp1)(); static void (*fp2)(); TEST_GROUP(SetPointerPluginTest) { SetPointerPlugin* plugin_; TestRegistry* myRegistry_; StringBufferTestOutput* output_; TestResult* result_; void setup() { myRegistry_ = new TestRegistry(); plugin_ = new SetPointerPlugin("TestSetPlugin"); myRegistry_->setCurrentRegistry(myRegistry_); myRegistry_->installPlugin(plugin_); output_ = new StringBufferTestOutput(); result_ = new TestResult(*output_); } void teardown() { myRegistry_->setCurrentRegistry(NULLPTR); delete myRegistry_; delete plugin_; delete output_; delete result_; } }; class FunctionPointerUtest : public Utest { public: void setup() _override { UT_PTR_SET(fp1, stub_func1); UT_PTR_SET(fp2, stub_func2); UT_PTR_SET(fp2, stub_func2); } void testBody() _override { CHECK(fp1 == stub_func1); CHECK(fp2 == stub_func2); } }; class FunctionPointerUtestShell: public UtestShell { public: virtual Utest* createTest() { return new FunctionPointerUtest(); } }; TEST(SetPointerPluginTest, installTwoFunctionPointer) { FunctionPointerUtestShell *tst = new FunctionPointerUtestShell(); fp1 = orig_func1; fp2 = orig_func2; myRegistry_->addTest(tst); myRegistry_->runAllTests(*result_); CHECK(fp1 == orig_func1); CHECK(fp2 == orig_func2); LONGS_EQUAL(0, result_->getFailureCount()); LONGS_EQUAL(2, result_->getCheckCount()); delete tst; } class MaxFunctionPointerUtest : public Utest { public: int numOfFpSets; MaxFunctionPointerUtest(int num) : numOfFpSets(num) { } void setup() { for (int i = 0; i < numOfFpSets; ++i) { UT_PTR_SET(fp1, stub_func1); } } }; class MaxFunctionPointerUtestShell: public UtestShell { public: int numOfFpSets; MaxFunctionPointerUtestShell(int num) : numOfFpSets(num) { } virtual Utest* createTest() { return new MaxFunctionPointerUtest(numOfFpSets); } }; TEST(SetPointerPluginTest, installTooMuchFunctionPointer) { MaxFunctionPointerUtestShell *tst = new MaxFunctionPointerUtestShell(SetPointerPlugin::MAX_SET + 1); myRegistry_->addTest(tst); myRegistry_->runAllTests(*result_); LONGS_EQUAL(1, result_->getFailureCount()); delete tst; } static double orig_double = 3.0; static double* orig_double_ptr = &orig_double; static double stub_double = 4.0; class SetDoublePointerUtest : public Utest { public: void setup() { UT_PTR_SET(orig_double_ptr, &stub_double); } void testBody() { CHECK(orig_double_ptr == &stub_double); } }; class SetDoublePointerUtestShell: public UtestShell { public: Utest * createTest() { return new SetDoublePointerUtest(); } }; TEST(SetPointerPluginTest, doublePointer) { SetDoublePointerUtestShell *doubletst = new SetDoublePointerUtestShell(); myRegistry_->addTest(doubletst); myRegistry_->runAllTests(*result_); CHECK(orig_double_ptr == &orig_double); LONGS_EQUAL(1, result_->getCheckCount()); delete doubletst; } cpputest-4.0/tests/CppUTest/UtestPlatformTest.cpp000644 000765 000024 00000020020 13663176127 023212 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/StandardCLibrary.h" #include "CppUTest/TestMemoryAllocator.h" #if CPPUTEST_USE_STD_C_LIB // This will cause a crash in VS2010 due to PlatformSpecificFree being uninitialized static const SimpleString str1("abc"); static const SimpleString str2("def"); static const SimpleString str3(str1 + str2); TEST_GROUP(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess) { TestTestingFixture fixture; }; #ifndef CPPUTEST_HAVE_FORK TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, DummyFailsWithMessage) { fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("-p doesn't work on this platform, as it is lacking fork.\b"); } #else static void _failFunction() { FAIL("This test fails"); } static void _exitNonZeroFunction() _no_return_; static void _exitNonZeroFunction() { /* destructor of static objects will be called. If StringCache was there then the allocator will report invalid deallocations of static SimpleString */ SimpleString::setStringAllocator(SimpleString::getStringAllocator()->actualAllocator()); exit(1); } #include static int waitpid_while_debugging_stub_number_called = 0; static int waitpid_while_debugging_stub_forced_failures = 0; extern "C" { static int (*original_waitpid)(int, int*, int) = NULLPTR; static int fork_failed_stub(void) { return -1; } static int waitpid_while_debugging_stub(int pid, int* status, int options) { static int saved_status; if (waitpid_while_debugging_stub_number_called++ < waitpid_while_debugging_stub_forced_failures) { saved_status = *status; errno=EINTR; return -1; } else { *status = saved_status; return original_waitpid(pid, status, options); } } static int waitpid_failed_stub(int, int*, int) { return -1; } } #include #include static void _stoppedTestFunction() { kill(getpid(), SIGSTOP); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, TestInSeparateProcessWorks) { fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("OK (1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, FailureInSeparateProcessWorks) { fixture.setRunTestsInSeperateProcess(); fixture.setTestFunction(_failFunction); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out"); } #if (! CPPUTEST_SANITIZE_ADDRESS) static int _accessViolationTestFunction() { return *(volatile int*) NULLPTR; } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, AccessViolationInSeparateProcessWorks) { fixture.setRunTestsInSeperateProcess(); fixture.setTestFunction((void(*)())_accessViolationTestFunction); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process - killed by signal 11"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran"); } #endif TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, StoppedInSeparateProcessWorks) { fixture.setRunTestsInSeperateProcess(); fixture.setTestFunction(_stoppedTestFunction); fixture.runAllTests(); fixture.assertPrintContains("Stopped in separate process - continuing"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToForkFailedInSeparateProcessWorks) { UT_PTR_SET(PlatformSpecificFork, fork_failed_stub); fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Call to fork() failed"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToWaitPidWhileDebuggingInSeparateProcessWorks) { UT_PTR_SET(original_waitpid, PlatformSpecificWaitPid); UT_PTR_SET(PlatformSpecificWaitPid, waitpid_while_debugging_stub); waitpid_while_debugging_stub_number_called = 0; waitpid_while_debugging_stub_forced_failures = 10; fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("OK (1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out"); // extra check to confirm that waitpid() was polled until it passed (and passed call adds one) CHECK(waitpid_while_debugging_stub_number_called > waitpid_while_debugging_stub_forced_failures); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToWaitPidStopsAndReportsAnErrorAfter20TimesRetry) { UT_PTR_SET(original_waitpid, PlatformSpecificWaitPid); UT_PTR_SET(PlatformSpecificWaitPid, waitpid_while_debugging_stub); waitpid_while_debugging_stub_number_called = 0; waitpid_while_debugging_stub_forced_failures = 40; fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Call to waitpid() failed with EINTR. Tried 30 times and giving up! Sometimes happens in debugger"); // extra check to confirm that waitpid() was polled until it passed (and passed call adds one) CHECK(waitpid_while_debugging_stub_number_called > 30); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, CallToWaitPidFailedInSeparateProcessWorks) { UT_PTR_SET(PlatformSpecificWaitPid, waitpid_failed_stub); fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Call to waitpid() failed"); fixture.assertPrintContains("Errors (1 failures, 1 tests, 1 ran"); } TEST(UTestPlatformsTest_PlatformSpecificRunTestInASeperateProcess, MultipleTestsInSeparateProcessAreCountedProperly) { fixture.setRunTestsInSeperateProcess(); fixture.runTestWithMethod(NULLPTR); fixture.runTestWithMethod(_stoppedTestFunction); fixture.runTestWithMethod(NULLPTR); fixture.runTestWithMethod(_exitNonZeroFunction); fixture.runTestWithMethod(NULLPTR); fixture.assertPrintContains("Failed in separate process"); fixture.assertPrintContains("Stopped in separate process"); fixture.assertPrintContains("Errors (2 failures, 5 tests, 5 ran, 0 checks, 0 ignored, 0 filtered out"); } #endif #endif cpputest-4.0/tests/CppUTest/UtestTest.cpp000644 000765 000024 00000031372 13663176127 021521 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" TEST_GROUP(UtestShell) { TestTestingFixture fixture; }; static void _failMethod() { FAIL("This test fails"); } static void _passingTestMethod() { CHECK(true); } static void _passingCheckEqualTestMethod() { CHECK_EQUAL(1, 1); } static void _exitTestMethod() { TEST_EXIT; FAIL("Should not get here"); } static volatile double zero = 0.0; TEST(UtestShell, compareDoubles) { double not_a_number = zero / zero; double infinity = 1 / zero; CHECK(doubles_equal(1.0, 1.001, 0.01)); CHECK(!doubles_equal(not_a_number, 1.001, 0.01)); CHECK(!doubles_equal(1.0, not_a_number, 0.01)); CHECK(!doubles_equal(1.0, 1.001, not_a_number)); CHECK(!doubles_equal(1.0, 1.1, 0.05)); CHECK(!doubles_equal(infinity, 1.0, 0.01)); CHECK(!doubles_equal(1.0, infinity, 0.01)); CHECK(doubles_equal(1.0, -1.0, infinity)); CHECK(doubles_equal(infinity, infinity, 0.01)); CHECK(doubles_equal(infinity, infinity, infinity)); double a = 1.2345678; CHECK(doubles_equal(a, a, 0.000000001)); } TEST(UtestShell, FailWillIncreaseTheAmountOfChecks) { fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getCheckCount()); } TEST(UtestShell, PassedCheckEqualWillIncreaseTheAmountOfChecks) { fixture.setTestFunction(_passingCheckEqualTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getCheckCount()); } IGNORE_TEST(UtestShell, IgnoreTestAccessingFixture) { CHECK(&fixture != NULLPTR); } TEST(UtestShell, MacrosUsedInSetup) { IGNORE_ALL_LEAKS_IN_TEST(); fixture.setSetup(_failMethod); fixture.setTestFunction(_passingTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); } TEST(UtestShell, MacrosUsedInTearDown) { IGNORE_ALL_LEAKS_IN_TEST(); fixture.setTeardown(_failMethod); fixture.setTestFunction(_passingTestMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); } TEST(UtestShell, ExitLeavesQuietly) { fixture.setTestFunction(_exitTestMethod); fixture.runAllTests(); LONGS_EQUAL(0, fixture.getFailureCount()); } static int teardownCalled = 0; static void _teardownMethod() { teardownCalled++; } TEST(UtestShell, TeardownCalledAfterTestFailure) { teardownCalled = 0; IGNORE_ALL_LEAKS_IN_TEST(); fixture.setTeardown(_teardownMethod); fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); LONGS_EQUAL(1, teardownCalled); } static int stopAfterFailure = 0; static void _stopAfterFailureMethod() { FAIL("fail"); stopAfterFailure++; } TEST(UtestShell, TestStopsAfterTestFailure) { IGNORE_ALL_LEAKS_IN_TEST(); stopAfterFailure = 0; fixture.setTestFunction(_stopAfterFailureMethod); fixture.runAllTests(); CHECK(fixture.hasTestFailed()); LONGS_EQUAL(1, fixture.getFailureCount()); LONGS_EQUAL(0, stopAfterFailure); } TEST(UtestShell, TestStopsAfterSetupFailure) { stopAfterFailure = 0; fixture.setSetup(_stopAfterFailureMethod); fixture.setTeardown(_stopAfterFailureMethod); fixture.setTestFunction(_failMethod); fixture.runAllTests(); LONGS_EQUAL(2, fixture.getFailureCount()); LONGS_EQUAL(0, stopAfterFailure); } TEST(UtestShell, veryVebose) { UtestShell shell("Group", "name", __FILE__, __LINE__); StringBufferTestOutput normalOutput; normalOutput.verbose(TestOutput::level_veryVerbose); NullTestPlugin plugin; TestResult result(normalOutput); shell.runOneTestInCurrentProcess(&plugin, result); STRCMP_CONTAINS("\n------ before runTest", normalOutput.getOutput().asCharString()); } class defaultUtestShell: public UtestShell { }; TEST(UtestShell, this_test_covers_the_UtestShell_createTest_and_Utest_testBody_methods) { defaultUtestShell shell; fixture.addTest(&shell); fixture.runAllTests(); LONGS_EQUAL(2, fixture.getTestCount()); } static void StubPlatformSpecificRunTestInASeperateProcess(UtestShell* shell, TestPlugin*, TestResult* result) { result->addFailure(TestFailure(shell, "Failed in separate process")); } TEST(UtestShell, RunInSeparateProcessTest) { UT_PTR_SET(PlatformSpecificRunTestInASeperateProcess, StubPlatformSpecificRunTestInASeperateProcess); fixture.getRegistry()->setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process"); } #ifndef CPPUTEST_HAVE_FORK IGNORE_TEST(UtestShell, TestDefaultCrashMethodInSeparateProcessTest) {} #else #if !CPPUTEST_SANITIZE_ADDRESS TEST(UtestShell, TestDefaultCrashMethodInSeparateProcessTest) { fixture.setTestFunction(UtestShell::crash); fixture.setRunTestsInSeperateProcess(); fixture.runAllTests(); fixture.assertPrintContains("Failed in separate process - killed by signal"); /* Signal 11 usually happens, but with clang3.7 on Linux, it produced signal 4 */ CHECK(fixture.getOutput().contains("signal 11") || fixture.getOutput().contains("signal 4")); } #endif #endif #if CPPUTEST_USE_STD_CPP_LIB static bool destructorWasCalledOnFailedTest = false; static void _destructorCalledForLocalObjects() { SetBooleanOnDestructorCall pleaseCallTheDestructor(destructorWasCalledOnFailedTest); destructorWasCalledOnFailedTest = false; FAIL("fail"); } TEST(UtestShell, DestructorIsCalledForLocalObjectsWhenTheTestFails) { fixture.setTestFunction(_destructorCalledForLocalObjects); fixture.runAllTests(); CHECK(destructorWasCalledOnFailedTest); } #endif TEST_GROUP(IgnoredUtestShell) { TestTestingFixture fixture; IgnoredUtestShell ignoredTest; ExecFunctionTestShell normalUtestShell; void setup() _override { fixture.addTest(&ignoredTest); fixture.addTest(&normalUtestShell); } }; TEST(IgnoredUtestShell, doesIgnoreCount) { fixture.runAllTests(); LONGS_EQUAL(1, fixture.getIgnoreCount()); } TEST(IgnoredUtestShell, printsIGNORE_TESTwhenVerbose) { fixture.setOutputVerbose(); fixture.runAllTests(); fixture.assertPrintContains("IGNORE_TEST"); } TEST(IgnoredUtestShell, runIgnoredOptionSpecifiedThenIncreaseRunCount) { ignoredTest.setRunIgnored(); fixture.runAllTests(); LONGS_EQUAL(3, fixture.getRunCount()); LONGS_EQUAL(0, fixture.getIgnoreCount()); } TEST(IgnoredUtestShell, runIgnoredOptionNotSpecifiedThenIncreaseIgnoredCount) { fixture.runAllTests(); LONGS_EQUAL(2, fixture.getRunCount()); LONGS_EQUAL(1, fixture.getIgnoreCount()); } TEST(IgnoredUtestShell, runIgnoredOptionSpecifiedWillNotInfluenceNormalTestCount) { normalUtestShell.setRunIgnored(); fixture.runAllTests(); LONGS_EQUAL(2, fixture.getRunCount()); LONGS_EQUAL(1, fixture.getIgnoreCount()); } TEST(IgnoredUtestShell, runIgnoredOptionSpecifiedThenReturnTESTInFormattedName) { ignoredTest.setGroupName("TestGroup"); ignoredTest.setTestName("TestName"); ignoredTest.setRunIgnored(); fixture.runAllTests(); STRCMP_EQUAL("TEST(TestGroup, TestName)", ignoredTest.getFormattedName().asCharString()); } TEST(IgnoredUtestShell, runIgnoredOptionNotSpecifiedThenReturnIGNORETESTInFormattedName) { ignoredTest.setGroupName("TestGroup"); ignoredTest.setTestName("TestName"); fixture.runAllTests(); STRCMP_EQUAL("IGNORE_TEST(TestGroup, TestName)", ignoredTest.getFormattedName().asCharString()); } TEST(IgnoredUtestShell, runIgnoredOptionNotSpecifiedThenWillRunReturnFalse) { CHECK_FALSE(ignoredTest.willRun()); } TEST(IgnoredUtestShell, runIgnoredOptionSpecifiedThenWillRunReturnTrue) { ignoredTest.setRunIgnored(); CHECK_TRUE(ignoredTest.willRun()); } TEST_BASE(MyOwnTest) { MyOwnTest() : inTest(false) { } bool inTest; void setup() { CHECK(!inTest); inTest = true; } void teardown() { CHECK(inTest); inTest = false; } }; TEST_GROUP_BASE(UtestMyOwn, MyOwnTest) { }; TEST(UtestMyOwn, test) { CHECK(inTest); } class NullParameterTest: public UtestShell { }; TEST(UtestMyOwn, NullParameters) { NullParameterTest nullTest; /* Bug fix tests for creating a test without a name, fix in SimpleString */ TestFilter emptyFilter; CHECK(nullTest.shouldRun(&emptyFilter, &emptyFilter)); } class AllocateAndDeallocateInConstructorAndDestructor { char* memory_; char* morememory_; public: AllocateAndDeallocateInConstructorAndDestructor() { memory_ = new char[100]; morememory_ = NULLPTR; } void allocateMoreMemory() { morememory_ = new char[123]; } ~AllocateAndDeallocateInConstructorAndDestructor() { delete [] memory_; delete [] morememory_; } }; TEST_GROUP(CanHaveMemberVariablesInTestGroupThatAllocateMemoryWithoutCausingMemoryLeaks) { AllocateAndDeallocateInConstructorAndDestructor dummy; }; TEST(CanHaveMemberVariablesInTestGroupThatAllocateMemoryWithoutCausingMemoryLeaks, testInTestGroupName) { dummy.allocateMoreMemory(); } static int getZero() { return 0; } static int getOne() { return 1; } TEST_GROUP(UtestShellPointerArrayTest) { UtestShell* test0; UtestShell* test1; UtestShell* test2; void setup() { test0 = new IgnoredUtestShell(); test1 = new IgnoredUtestShell(); test2 = new IgnoredUtestShell(); test0->addTest(test1); test1->addTest(test2); } void teardown() { delete test0; delete test1; delete test2; } }; TEST(UtestShellPointerArrayTest, empty) { UtestShellPointerArray tests(NULLPTR); tests.shuffle(0); CHECK(NULLPTR == tests.getFirstTest()); } TEST(UtestShellPointerArrayTest, testsAreInOrder) { UtestShellPointerArray tests(test0); CHECK(tests.get(0) == test0); CHECK(tests.get(1) == test1); CHECK(tests.get(2) == test2); } TEST(UtestShellPointerArrayTest, relinkingTestsWillKeepThemTheSameWhenNothingWasDone) { UtestShellPointerArray tests(test0); tests.relinkTestsInOrder(); CHECK(tests.get(0) == test0); CHECK(tests.get(1) == test1); CHECK(tests.get(2) == test2); } TEST(UtestShellPointerArrayTest, firstTestisNotTheFirstTestWithSeed1234) { UtestShellPointerArray tests(test0); tests.shuffle(1234); CHECK(tests.getFirstTest() != test0); } TEST(UtestShellPointerArrayTest, ShuffleListTestWithRandomAlwaysReturningZero) { UT_PTR_SET(PlatformSpecificRand, getZero); UtestShellPointerArray tests(test0); tests.shuffle(3); CHECK(tests.get(0) == test1); CHECK(tests.get(1) == test2); CHECK(tests.get(2) == test0); } // swaps with 4 mod 3 (1) then 4 mod 2 (0): 1, [2], [0] --> [1], [0], 2 --> 0, 1, 2 TEST(UtestShellPointerArrayTest, ShuffleListTestWithRandomAlwaysReturningOne) { UT_PTR_SET(PlatformSpecificRand, getOne); UtestShellPointerArray tests(test0); tests.shuffle(3); CHECK(tests.get(0) == test0); CHECK(tests.get(1) == test2); CHECK(tests.get(2) == test1); } TEST(UtestShellPointerArrayTest, reverse) { UT_PTR_SET(PlatformSpecificRand, getOne); UtestShellPointerArray tests(test0); tests.reverse(); CHECK(tests.get(0) == test2); CHECK(tests.get(1) == test1); CHECK(tests.get(2) == test0); } cpputest-4.0/tests/CppUTest/SimpleStringTest.cpp000644 000765 000024 00000105627 13663176127 023042 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleString.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestTestingFixture.h" class JustUseNewStringAllocator : public TestMemoryAllocator { public: virtual ~JustUseNewStringAllocator() _destructor_override {} char* alloc_memory(size_t size, const char* file, size_t line) _override { return MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(getCurrentNewArrayAllocator(), size, file, line); } void free_memory(char* str, size_t, const char* file, size_t line) _override { MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(getCurrentNewArrayAllocator(), str, file, line); } }; class GlobalSimpleStringMemoryAccountantExecFunction : public ExecFunction { public: void (*testFunction_)(GlobalSimpleStringMemoryAccountant*); GlobalSimpleStringMemoryAccountant* parameter_; virtual void exec() _override { testFunction_(parameter_); } }; TEST_GROUP(GlobalSimpleStringMemoryAccountant) { GlobalSimpleStringAllocatorStash stash; GlobalSimpleStringMemoryAccountantExecFunction testFunction; TestTestingFixture fixture; GlobalSimpleStringMemoryAccountant accountant; void setup() { stash.save(); testFunction.parameter_ = &accountant; fixture.setTestFunction(&testFunction); } void teardown() { stash.restore(); } }; TEST(GlobalSimpleStringMemoryAccountant, start) { accountant.start(); POINTERS_EQUAL(accountant.getAllocator(), SimpleString::getStringAllocator()); } TEST(GlobalSimpleStringMemoryAccountant, startTwiceDoesNothing) { accountant.start(); TestMemoryAllocator* memoryAccountantAllocator = SimpleString::getStringAllocator(); accountant.start(); POINTERS_EQUAL(memoryAccountantAllocator, SimpleString::getStringAllocator()); accountant.stop(); } TEST(GlobalSimpleStringMemoryAccountant, stop) { TestMemoryAllocator* originalAllocator = SimpleString::getStringAllocator(); accountant.start(); accountant.stop(); POINTERS_EQUAL(originalAllocator, SimpleString::getStringAllocator()); } static void _stopAccountant(GlobalSimpleStringMemoryAccountant* accountant) { accountant->stop(); } TEST(GlobalSimpleStringMemoryAccountant, stopWithoutStartWillFail) { testFunction.testFunction_ = _stopAccountant; fixture.runAllTests(); fixture.assertPrintContains("Global SimpleString allocator stopped without starting"); } static void _changeAllocatorBetweenStartAndStop(GlobalSimpleStringMemoryAccountant* accountant) { TestMemoryAllocator* originalAllocator = SimpleString::getStringAllocator(); accountant->start(); SimpleString::setStringAllocator(originalAllocator); accountant->stop(); } TEST(GlobalSimpleStringMemoryAccountant, stopFailsWhenAllocatorWasChangedInBetween) { testFunction.testFunction_ = _changeAllocatorBetweenStartAndStop; fixture.runAllTests(); fixture.assertPrintContains("GlobalStrimpleStringMemoryAccountant: allocator has changed between start and stop!"); } TEST(GlobalSimpleStringMemoryAccountant, report) { SimpleString str; accountant.start(); str += "More"; accountant.stop(); STRCMP_CONTAINS(" 1 0 1", accountant.report().asCharString()); } TEST(GlobalSimpleStringMemoryAccountant, reportUseCaches) { size_t caches[] = {32}; accountant.useCacheSizes(caches, 1); SimpleString str; accountant.start(); str += "More"; accountant.stop(); STRCMP_CONTAINS("32 1 1 1", accountant.report().asCharString()); } TEST_GROUP(SimpleString) { JustUseNewStringAllocator justNewForSimpleStringTestAllocator; GlobalSimpleStringAllocatorStash stash; void setup() { stash.save(); SimpleString::setStringAllocator(&justNewForSimpleStringTestAllocator); } void teardown() { stash.restore(); } }; TEST(SimpleString, defaultAllocatorIsNewArrayAllocator) { SimpleString::setStringAllocator(NULLPTR); POINTERS_EQUAL(defaultNewArrayAllocator(), SimpleString::getStringAllocator()); } class MyOwnStringAllocator : public TestMemoryAllocator { public: MyOwnStringAllocator() : memoryWasAllocated(false) {} virtual ~MyOwnStringAllocator() _destructor_override {} bool memoryWasAllocated; char* alloc_memory(size_t size, const char* file, size_t line) _override { memoryWasAllocated = true; return TestMemoryAllocator::alloc_memory(size, file, line); } }; TEST(SimpleString, allocatorForSimpleStringCanBeReplaced) { MyOwnStringAllocator myOwnAllocator; SimpleString::setStringAllocator(&myOwnAllocator); SimpleString simpleString; CHECK(myOwnAllocator.memoryWasAllocated); SimpleString::setStringAllocator(NULLPTR); } TEST(SimpleString, CreateSequence) { SimpleString expected("hellohello"); SimpleString actual("hello", 2); CHECK_EQUAL(expected, actual); } TEST(SimpleString, CreateSequenceOfZero) { SimpleString expected(""); SimpleString actual("hello", 0); CHECK_EQUAL(expected, actual); } TEST(SimpleString, Copy) { SimpleString s1("hello"); SimpleString s2(s1); CHECK_EQUAL(s1, s2); } TEST(SimpleString, Assignment) { SimpleString s1("hello"); SimpleString s2("goodbye"); s2 = s1; CHECK_EQUAL(s1, s2); } TEST(SimpleString, Equality) { SimpleString s1("hello"); SimpleString s2("hello"); CHECK(s1 == s2); } TEST(SimpleString, InEquality) { SimpleString s1("hello"); SimpleString s2("goodbye"); CHECK(s1 != s2); } TEST(SimpleString, CompareNoCaseWithoutCase) { SimpleString s1("hello"); SimpleString s2("hello"); CHECK(s1.equalsNoCase(s2)); } TEST(SimpleString, CompareNoCaseWithCase) { SimpleString s1("hello"); SimpleString s2("HELLO"); CHECK(s1.equalsNoCase(s2)); } TEST(SimpleString, CompareNoCaseWithCaseNotEqual) { SimpleString s1("hello"); SimpleString s2("WORLD"); CHECK(!s1.equalsNoCase(s2)); } TEST(SimpleString, asCharString) { SimpleString s1("hello"); STRCMP_EQUAL("hello", s1.asCharString()); } TEST(SimpleString, Size) { SimpleString s1("hello!"); LONGS_EQUAL(6, s1.size()); } TEST(SimpleString, lowerCase) { SimpleString s1("AbCdEfG1234"); SimpleString s2(s1.lowerCase()); STRCMP_EQUAL("abcdefg1234", s2.asCharString()); STRCMP_EQUAL("AbCdEfG1234", s1.asCharString()); } TEST(SimpleString, Addition) { SimpleString s1("hello!"); SimpleString s2("goodbye!"); SimpleString s3("hello!goodbye!"); SimpleString s4; s4 = s1 + s2; CHECK_EQUAL(s3, s4); } TEST(SimpleString, Concatenation) { SimpleString s1("hello!"); SimpleString s2("goodbye!"); SimpleString s3("hello!goodbye!"); SimpleString s4; s4 += s1; s4 += s2; CHECK_EQUAL(s3, s4); SimpleString s5("hello!goodbye!hello!goodbye!"); s4 += s4; CHECK_EQUAL(s5, s4); } TEST(SimpleString, Contains) { SimpleString s("hello!"); SimpleString empty(""); SimpleString beginning("hello"); SimpleString end("lo!"); SimpleString mid("l"); SimpleString notPartOfString("xxxx"); CHECK(s.contains(empty)); CHECK(s.contains(beginning)); CHECK(s.contains(end)); CHECK(s.contains(mid)); CHECK(!s.contains(notPartOfString)); CHECK(empty.contains(empty)); CHECK(!empty.contains(s)); } TEST(SimpleString, startsWith) { SimpleString hi("Hi you!"); SimpleString part("Hi"); SimpleString diff("Hrrm Hi you! ffdsfd"); CHECK(hi.startsWith(part)); CHECK(!part.startsWith(hi)); CHECK(!diff.startsWith(hi)); } TEST(SimpleString, split) { SimpleString hi("hello\nworld\nhow\ndo\nyou\ndo\n\n"); SimpleStringCollection collection; hi.split("\n", collection); LONGS_EQUAL(7, collection.size()); STRCMP_EQUAL("hello\n", collection[0].asCharString()); STRCMP_EQUAL("world\n", collection[1].asCharString()); STRCMP_EQUAL("how\n", collection[2].asCharString()); STRCMP_EQUAL("do\n", collection[3].asCharString()); STRCMP_EQUAL("you\n", collection[4].asCharString()); STRCMP_EQUAL("do\n", collection[5].asCharString()); STRCMP_EQUAL("\n", collection[6].asCharString()); } TEST(SimpleString, splitNoTokenOnTheEnd) { SimpleString string("Bah Yah oops"); SimpleStringCollection collection; string.split(" ", collection); LONGS_EQUAL(3, collection.size()); STRCMP_EQUAL("Bah ", collection[0].asCharString()); STRCMP_EQUAL("Yah ", collection[1].asCharString()); STRCMP_EQUAL("oops", collection[2].asCharString()); } TEST(SimpleString, count) { SimpleString str("ha ha ha ha"); LONGS_EQUAL(4, str.count("ha")); } TEST(SimpleString, countTogether) { SimpleString str("hahahaha"); LONGS_EQUAL(4, str.count("ha")); } TEST(SimpleString, countEmptyString) { SimpleString str("hahahaha"); LONGS_EQUAL(8, str.count("")); } TEST(SimpleString, countEmptyStringInEmptyString) { SimpleString str; LONGS_EQUAL(0, str.count("")); } TEST(SimpleString, endsWith) { SimpleString str("Hello World"); CHECK(str.endsWith("World")); CHECK(!str.endsWith("Worl")); CHECK(!str.endsWith("Hello")); SimpleString str2("ah"); CHECK(str2.endsWith("ah")); CHECK(!str2.endsWith("baah")); SimpleString str3(""); CHECK(!str3.endsWith("baah")); SimpleString str4("ha ha ha ha"); CHECK(str4.endsWith("ha")); } TEST(SimpleString, replaceCharWithChar) { SimpleString str("abcabcabca"); str.replace('a', 'b'); STRCMP_EQUAL("bbcbbcbbcb", str.asCharString()); } TEST(SimpleString, replaceEmptyStringWithEmptyString) { SimpleString str; str.replace("", ""); STRCMP_EQUAL("", str.asCharString()); } TEST(SimpleString, replaceWholeString) { SimpleString str("boo"); str.replace("boo", ""); STRCMP_EQUAL("", str.asCharString()); } TEST(SimpleString, replaceStringWithString) { SimpleString str("boo baa boo baa boo"); str.replace("boo", "boohoo"); STRCMP_EQUAL("boohoo baa boohoo baa boohoo", str.asCharString()); } TEST(SimpleString, subStringFromEmptyString) { SimpleString str(""); STRCMP_EQUAL("", str.subString(0, 1).asCharString()); } TEST(SimpleString, subStringFromSmallString) { SimpleString str("H"); STRCMP_EQUAL("H", str.subString(0, 1).asCharString()); } TEST(SimpleString, subStringFromPos0) { SimpleString str("Hello World"); STRCMP_EQUAL("Hello", str.subString(0, 5).asCharString()); } TEST(SimpleString, subStringFromPos1) { SimpleString str("Hello World"); STRCMP_EQUAL("ello ", str.subString(1, 5).asCharString()); } TEST(SimpleString, subStringFromPos5WithAmountLargerThanString) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subString(6, 10).asCharString()); } TEST(SimpleString, subStringFromPos6ToEndOfString) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subString(6).asCharString()); } TEST(SimpleString, subStringBeginPosOutOfBounds) { SimpleString str("Hello World"); STRCMP_EQUAL("", str.subString(13, 5).asCharString()); } TEST(SimpleString, subStringFromTillNormal) { SimpleString str("Hello World"); STRCMP_EQUAL("Hello", str.subStringFromTill('H', ' ').asCharString()); } TEST(SimpleString, subStringFromTillOutOfBounds) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subStringFromTill('W', '!').asCharString()); } TEST(SimpleString, subStringFromTillStartDoesntExist) { SimpleString str("Hello World"); STRCMP_EQUAL("", str.subStringFromTill('!', ' ').asCharString()); } TEST(SimpleString, subStringFromTillWhenTheEndAppearsBeforeTheStart) { SimpleString str("Hello World"); STRCMP_EQUAL("World", str.subStringFromTill('W', 'H').asCharString()); } TEST(SimpleString, findNormal) { SimpleString str("Hello World"); LONGS_EQUAL(0, str.find('H')); LONGS_EQUAL(1, str.find('e')); LONGS_EQUAL(SimpleString::npos, str.find('!')); } TEST(SimpleString, at) { SimpleString str("Hello World"); BYTES_EQUAL('H', str.at(0)); } TEST(SimpleString, copyInBufferNormal) { SimpleString str("Hello World"); size_t bufferSize = str.size()+1; char* buffer = (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); STRCMP_EQUAL(str.asCharString(), buffer); PlatformSpecificFree(buffer); } TEST(SimpleString, copyInBufferWithEmptyBuffer) { SimpleString str("Hello World"); char* buffer= NULLPTR; str.copyToBuffer(buffer, 0); POINTERS_EQUAL(NULLPTR, buffer); } TEST(SimpleString, copyInBufferWithBiggerBufferThanNeeded) { SimpleString str("Hello"); size_t bufferSize = 20; char* buffer= (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); STRCMP_EQUAL(str.asCharString(), buffer); PlatformSpecificFree(buffer); } TEST(SimpleString, copyInBufferWithSmallerBufferThanNeeded) { SimpleString str("Hello"); size_t bufferSize = str.size(); char* buffer= (char*) PlatformSpecificMalloc(bufferSize); str.copyToBuffer(buffer, bufferSize); STRNCMP_EQUAL(str.asCharString(), buffer, (bufferSize-1)); LONGS_EQUAL(0, buffer[bufferSize-1]); PlatformSpecificFree(buffer); } TEST(SimpleString, ContainsNull) { SimpleString s(NULLPTR); STRCMP_EQUAL("", s.asCharString()); } TEST(SimpleString, NULLReportsNullString) { STRCMP_EQUAL("(null)", StringFromOrNull((char*) NULLPTR).asCharString()); } TEST(SimpleString, Booleans) { SimpleString s1(StringFrom(true)); SimpleString s2(StringFrom(false)); CHECK(s1 == "true"); CHECK(s2 == "false"); } TEST(SimpleString, Pointers) { SimpleString s(StringFrom((void *)0x1234)); STRCMP_EQUAL("0x1234", s.asCharString()); } TEST(SimpleString, FunctionPointers) { SimpleString s(StringFrom((void (*)())0x1234)); STRCMP_EQUAL("0x1234", s.asCharString()); } TEST(SimpleString, Characters) { SimpleString s(StringFrom('a')); STRCMP_EQUAL("a", s.asCharString()); } TEST(SimpleString, NegativeSignedBytes) { STRCMP_EQUAL("-15", StringFrom((signed char)-15).asCharString()); } TEST(SimpleString, PositiveSignedBytes) { STRCMP_EQUAL("4", StringFrom(4).asCharString()); } TEST(SimpleString, LongInts) { SimpleString s(StringFrom((long)1)); CHECK(s == "1"); } TEST(SimpleString, UnsignedLongInts) { SimpleString s(StringFrom((unsigned long)1)); SimpleString s2(StringFrom((unsigned long)1)); CHECK(s == s2); } #ifdef CPPUTEST_USE_LONG_LONG TEST(SimpleString, LongLongInts) { SimpleString s(StringFrom((long long)1)); CHECK(s == "1"); } TEST(SimpleString, UnsignedLongLongInts) { SimpleString s(StringFrom((unsigned long long)1)); SimpleString s2(StringFrom((unsigned long long)1)); CHECK(s == s2); } #endif /* CPPUTEST_USE_LONG_LONG */ TEST(SimpleString, Doubles) { SimpleString s(StringFrom(1.2)); STRCMP_EQUAL("1.2", s.asCharString()); } extern "C" { static int alwaysTrue(double) { return true; } } TEST(SimpleString, NaN) { UT_PTR_SET(PlatformSpecificIsNan, alwaysTrue); SimpleString s(StringFrom(0.0)); STRCMP_EQUAL("Nan - Not a number", s.asCharString()); } TEST(SimpleString, Inf) { UT_PTR_SET(PlatformSpecificIsInf, alwaysTrue); SimpleString s(StringFrom(0.0)); STRCMP_EQUAL("Inf - Infinity", s.asCharString()); } TEST(SimpleString, SmallDoubles) { SimpleString s(StringFrom(1.2e-10)); STRCMP_CONTAINS("1.2e", s.asCharString()); } TEST(SimpleString, Sizes) { size_t size = 10; STRCMP_EQUAL("10", StringFrom((int) size).asCharString()); } #if __cplusplus > 199711L && !defined __arm__ && CPPUTEST_USE_STD_CPP_LIB TEST(SimpleString, nullptr_type) { SimpleString s(StringFrom(nullptr)); STRCMP_EQUAL("(null)", s.asCharString()); } #endif TEST(SimpleString, HexStrings) { STRCMP_EQUAL("f3", HexStringFrom((signed char)-13).asCharString()); SimpleString h1 = HexStringFrom(0xffffL); STRCMP_EQUAL("ffff", h1.asCharString()); #ifdef CPPUTEST_USE_LONG_LONG SimpleString h15 = HexStringFrom(0xffffLL); STRCMP_EQUAL("ffff", h15.asCharString()); #endif SimpleString h2 = HexStringFrom((void *)0xfffeL); STRCMP_EQUAL("fffe", h2.asCharString()); SimpleString h3 = HexStringFrom((void (*)())0xfffdL); STRCMP_EQUAL("fffd", h3.asCharString()); } TEST(SimpleString, StringFromFormat) { SimpleString h1 = StringFromFormat("%s %s! %d", "Hello", "World", 2009); STRCMP_EQUAL("Hello World! 2009", h1.asCharString()); } TEST(SimpleString, StringFromFormatpointer) { //this is not a great test. but %p is odd on mingw and even more odd on Solaris. SimpleString h1 = StringFromFormat("%p", (void*) 1); if (h1.size() == 3) STRCMP_EQUAL("0x1", h1.asCharString()); else if (h1.size() == 8) STRCMP_EQUAL("00000001", h1.asCharString()); else if (h1.size() == 9) STRCMP_EQUAL("0000:0001", h1.asCharString()); else if (h1.size() == 16) STRCMP_EQUAL("0000000000000001", h1.asCharString()); else if (h1.size() == 1) STRCMP_EQUAL("1", h1.asCharString()); else FAIL("Off %p behavior"); } TEST(SimpleString, StringFromFormatLarge) { const char* s = "ThisIsAPrettyLargeStringAndIfWeAddThisManyTimesToABufferItWillbeFull"; SimpleString h1 = StringFromFormat("%s%s%s%s%s%s%s%s%s%s", s, s, s, s, s, s, s, s, s, s); LONGS_EQUAL(10, h1.count(s)); } TEST(SimpleString, StringFromConstSimpleString) { STRCMP_EQUAL("bla", StringFrom(SimpleString("bla")).asCharString()); } static int WrappedUpVSNPrintf(char* buf, size_t n, const char* format, ...) { va_list arguments; va_start(arguments, format); int result = PlatformSpecificVSNprintf(buf, n, format, arguments); va_end(arguments); return result; } TEST(SimpleString, PlatformSpecificSprintf_fits) { char buf[10]; int count = WrappedUpVSNPrintf(buf, sizeof(buf), "%s", "12345"); STRCMP_EQUAL("12345", buf); LONGS_EQUAL(5, count); } TEST(SimpleString, PlatformSpecificSprintf_doesNotFit) { char buf[10]; int count = WrappedUpVSNPrintf(buf, sizeof(buf), "%s", "12345678901"); STRCMP_EQUAL("123456789", buf); LONGS_EQUAL(11, count); } TEST(SimpleString, PadStringsToSameLengthString1Larger) { SimpleString str1("1"); SimpleString str2("222"); SimpleString::padStringsToSameLength(str1, str2, '4'); STRCMP_EQUAL("441", str1.asCharString()); STRCMP_EQUAL("222", str2.asCharString()); } TEST(SimpleString, PadStringsToSameLengthString2Larger) { SimpleString str1(" "); SimpleString str2(""); SimpleString::padStringsToSameLength(str1, str2, ' '); STRCMP_EQUAL(" ", str1.asCharString()); STRCMP_EQUAL(" ", str2.asCharString()); } TEST(SimpleString, PadStringsToSameLengthWithSameLengthStrings) { SimpleString str1("123"); SimpleString str2("123"); SimpleString::padStringsToSameLength(str1, str2, ' '); STRCMP_EQUAL("123", str1.asCharString()); STRCMP_EQUAL("123", str2.asCharString()); } TEST(SimpleString, NullParameters2) { SimpleString* arr = new SimpleString[100]; delete[] arr; } TEST(SimpleString, CollectionMultipleAllocateNoLeaksMemory) { SimpleStringCollection col; col.allocate(5); col.allocate(5); // CHECK no memory leak } TEST(SimpleString, CollectionReadOutOfBoundsReturnsEmptyString) { SimpleStringCollection col; col.allocate(3); STRCMP_EQUAL("", col[3].asCharString()); } TEST(SimpleString, CollectionWritingToEmptyString) { SimpleStringCollection col; col.allocate(3); col[3] = SimpleString("HAH"); STRCMP_EQUAL("", col[3].asCharString()); } #ifdef CPPUTEST_64BIT TEST(SimpleString, _64BitAddressPrintsCorrectly) { char* p = (char*) 0x0012345678901234; SimpleString expected("0x12345678901234"); SimpleString actual = StringFrom((void*)p); STRCMP_EQUAL(expected.asCharString(), actual.asCharString()); } #ifndef CPPUTEST_64BIT_32BIT_LONGS TEST(SimpleString, BracketsFormattedHexStringFromForLongOnDifferentPlatform) { long value = -1; STRCMP_EQUAL("(0xffffffffffffffff)", BracketsFormattedHexStringFrom(value).asCharString()); } #else TEST(SimpleString, BracketsFormattedHexStringFromForLongOnDifferentPlatform) { long value = -1; STRCMP_EQUAL("(0xffffffff)", BracketsFormattedHexStringFrom(value).asCharString()); } #endif #else /* * This test case cannot pass on 32 bit systems. */ IGNORE_TEST(SimpleString, _64BitAddressPrintsCorrectly) { } TEST(SimpleString, BracketsFormattedHexStringFromForLongOnDifferentPlatform) { long value = -1; STRCMP_EQUAL("(0xffffffff)", BracketsFormattedHexStringFrom(value).asCharString()); } #endif TEST(SimpleString, BuildStringFromUnsignedLongInteger) { unsigned long int i = 0xffffffff; SimpleString result = StringFrom(i); const char* expected_string = "4294967295"; CHECK_EQUAL(expected_string, result); } TEST(SimpleString, BuildStringFromUnsignedInteger) { unsigned int i = 0xff; SimpleString result = StringFrom(i); const char* expected_string = "255"; CHECK_EQUAL(expected_string, result); } #if CPPUTEST_USE_STD_CPP_LIB TEST(SimpleString, fromStdString) { std::string s("hello"); SimpleString s1(StringFrom(s)); STRCMP_EQUAL("hello", s1.asCharString()); } TEST(SimpleString, CHECK_EQUAL_unsigned_long) { unsigned long i = 0xffffffffUL; CHECK_EQUAL(i, i); } TEST(SimpleString, unsigned_long) { unsigned long i = 0xffffffffUL; SimpleString result = StringFrom(i); const char* expected_string = "4294967295"; CHECK_EQUAL(expected_string, result); } #endif TEST(SimpleString, StrCmp) { char empty[] = ""; char blabla[] = "blabla"; char bla[] = "bla"; CHECK(SimpleString::StrCmp(empty, empty) == 0); CHECK(SimpleString::StrCmp(bla, blabla) == -(int)'b'); CHECK(SimpleString::StrCmp(blabla, bla) == 'b'); CHECK(SimpleString::StrCmp(bla, empty) == 'b'); CHECK(SimpleString::StrCmp(empty, bla) == -(int)'b'); CHECK(SimpleString::StrCmp(bla, bla) == 0); } TEST(SimpleString, StrNCpy_no_zero_termination) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("womanXXXXX", SimpleString::StrNCpy(str, "woman", 5)); } TEST(SimpleString, StrNCpy_zero_termination) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("woman", SimpleString::StrNCpy(str, "woman", 6)); } TEST(SimpleString, StrNCpy_null_proof) { POINTERS_EQUAL(NULLPTR, SimpleString::StrNCpy(NULLPTR, "woman", 6)); } TEST(SimpleString, StrNCpy_stops_at_end_of_string) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("woman", SimpleString::StrNCpy(str, "woman", 8)); } TEST(SimpleString, StrNCpy_nothing_to_do) { char str[] = "XXXXXXXXXX"; STRCMP_EQUAL("XXXXXXXXXX", SimpleString::StrNCpy(str, "woman", 0)); } TEST(SimpleString, StrNCpy_write_into_the_middle) { char str[] = "womanXXXXX"; SimpleString::StrNCpy(str+3, "e", 1); STRCMP_EQUAL("womenXXXXX", str); } TEST(SimpleString, StrNCmp_equal) { int result = SimpleString::StrNCmp("teststring", "tests", 5); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_should_always_return_0_when_n_is_0) { int result = SimpleString::StrNCmp("a", "b", 0); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_s1_smaller) { int result = SimpleString::StrNCmp("testing", "tests", 7); LONGS_EQUAL('i' - 's', result); } TEST(SimpleString, StrNCmp_s1_larger) { int result = SimpleString::StrNCmp("teststring", "tester", 7); LONGS_EQUAL('s' - 'e', result); } TEST(SimpleString, StrNCmp_n_too_large) { int result = SimpleString::StrNCmp("teststring", "teststring", 20); LONGS_EQUAL(0, result); } TEST(SimpleString, StrNCmp_s1_empty) { int result = SimpleString::StrNCmp("", "foo", 2); LONGS_EQUAL(0 - 'f', result); } TEST(SimpleString, StrNCmp_s2_empty) { int result = SimpleString::StrNCmp("foo", "", 2); LONGS_EQUAL('f', result); } TEST(SimpleString, StrNCmp_s1_and_s2_empty) { int result = SimpleString::StrNCmp("", "", 2); LONGS_EQUAL(0, result); } TEST(SimpleString, StrStr) { char foo[] = "foo"; char empty[] = ""; char foobarfoo[] = "foobarfoo"; char barf[] = "barf"; CHECK(SimpleString::StrStr(foo, empty) == foo); CHECK(SimpleString::StrStr(empty, foo) == NULLPTR); CHECK(SimpleString::StrStr(foobarfoo, barf) == foobarfoo+3); CHECK(SimpleString::StrStr(barf, foobarfoo) == NULLPTR); CHECK(SimpleString::StrStr(foo, foo) == foo); } TEST(SimpleString, AtoI) { char max_short_str[] = "32767"; char min_short_str[] = "-32768"; CHECK(12345 == SimpleString::AtoI("012345")); CHECK(6789 == SimpleString::AtoI("6789")); CHECK(12345 == SimpleString::AtoI("12345/")); CHECK(12345 == SimpleString::AtoI("12345:")); CHECK(-12345 == SimpleString::AtoI("-12345")); CHECK(123 == SimpleString::AtoI("\t \r\n123")); CHECK(123 == SimpleString::AtoI("123-foo")); CHECK(0 == SimpleString::AtoI("-foo")); CHECK(-32768 == SimpleString::AtoI(min_short_str)); CHECK(32767 == SimpleString::AtoI(max_short_str)); } TEST(SimpleString, AtoU) { char max_short_str[] = "65535"; CHECK(12345 == SimpleString::AtoU("012345")); CHECK(6789 == SimpleString::AtoU("6789")); CHECK(12345 == SimpleString::AtoU("12345/")); CHECK(12345 == SimpleString::AtoU("12345:")); CHECK(123 == SimpleString::AtoU("\t \r\n123")); CHECK(123 == SimpleString::AtoU("123-foo")); CHECK(65535 == SimpleString::AtoU(max_short_str)); CHECK(0 == SimpleString::AtoU("foo")); CHECK(0 == SimpleString::AtoU("-foo")); CHECK(0 == SimpleString::AtoU("+1")); CHECK(0 == SimpleString::AtoU("-1")); CHECK(0 == SimpleString::AtoU("0")); } TEST(SimpleString, Binary) { const unsigned char value[] = { 0x00, 0x01, 0x2A, 0xFF }; const char expectedString[] = "00 01 2A FF"; STRCMP_EQUAL(expectedString, StringFromBinary(value, sizeof(value)).asCharString()); STRCMP_EQUAL(expectedString, StringFromBinaryOrNull(value, sizeof(value)).asCharString()); STRCMP_EQUAL("", StringFromBinary(value, 0).asCharString()); STRCMP_EQUAL("(null)", StringFromBinaryOrNull(NULLPTR, 0).asCharString()); } TEST(SimpleString, BinaryWithSize) { const unsigned char value[] = { 0x12, 0xFE, 0xA1 }; const char expectedString[] = "Size = 3 | HexContents = 12 FE A1"; STRCMP_EQUAL(expectedString, StringFromBinaryWithSize(value, sizeof(value)).asCharString()); STRCMP_EQUAL(expectedString, StringFromBinaryWithSizeOrNull(value, sizeof(value)).asCharString()); STRCMP_EQUAL("Size = 0 | HexContents = ", StringFromBinaryWithSize(value, 0).asCharString()); STRCMP_EQUAL("(null)", StringFromBinaryWithSizeOrNull(NULLPTR, 0).asCharString()); } TEST(SimpleString, BinaryWithSizeLargerThan128) { unsigned char value[129]; value[127] = 0x00; value[128] = 0xff; STRCMP_CONTAINS("00 ...", StringFromBinaryWithSize(value, sizeof(value)).asCharString()); } TEST(SimpleString, MemCmp) { unsigned char smaller[] = { 0x00, 0x01, 0x2A, 0xFF }; unsigned char greater[] = { 0x00, 0x01, 0xFF, 0xFF }; LONGS_EQUAL(0, SimpleString::MemCmp(smaller, smaller, sizeof(smaller))); CHECK(SimpleString::MemCmp(smaller, greater, sizeof(smaller)) < 0); CHECK(SimpleString::MemCmp(greater, smaller, sizeof(smaller)) > 0); LONGS_EQUAL(0, SimpleString::MemCmp(NULLPTR, NULLPTR, 0)); } TEST(SimpleString, MemCmpFirstLastNotMatching) { unsigned char base[] = { 0x00, 0x01, 0x2A, 0xFF }; unsigned char firstNotMatching[] = { 0x01, 0x01, 0x2A, 0xFF }; unsigned char lastNotMatching[] = { 0x00, 0x01, 0x2A, 0x00 }; CHECK(0 != SimpleString::MemCmp(base, firstNotMatching, sizeof(base))); CHECK(0 != SimpleString::MemCmp(base, lastNotMatching, sizeof(base))); } #if (CPPUTEST_CHAR_BIT == 16) TEST(SimpleString, MaskedBitsChar) { STRCMP_EQUAL("xxxxxxxx xxxxxxxx", StringFromMaskedBits(0x00, 0x00, 1).asCharString()); STRCMP_EQUAL("xxxxxxxx 00000000", StringFromMaskedBits(0x00, 0xFF, 1).asCharString()); STRCMP_EQUAL("xxxxxxxx 11111111", StringFromMaskedBits(0xFF, 0xFF, 1).asCharString()); STRCMP_EQUAL("xxxxxxxx 1xxxxxxx", StringFromMaskedBits(0x80, 0x80, 1).asCharString()); STRCMP_EQUAL("xxxxxxxx xxxxxxx1", StringFromMaskedBits(0x01, 0x01, 1).asCharString()); STRCMP_EQUAL("xxxxxxxx 11xx11xx", StringFromMaskedBits(0xFF, 0xCC, 1).asCharString()); } #else TEST(SimpleString, MaskedBitsChar) { STRCMP_EQUAL("xxxxxxxx", StringFromMaskedBits(0x00, 0x00, 1).asCharString()); STRCMP_EQUAL("00000000", StringFromMaskedBits(0x00, 0xFF, 1).asCharString()); STRCMP_EQUAL("11111111", StringFromMaskedBits(0xFF, 0xFF, 1).asCharString()); STRCMP_EQUAL("1xxxxxxx", StringFromMaskedBits(0x80, 0x80, 1).asCharString()); STRCMP_EQUAL("xxxxxxx1", StringFromMaskedBits(0x01, 0x01, 1).asCharString()); STRCMP_EQUAL("11xx11xx", StringFromMaskedBits(0xFF, 0xCC, 1).asCharString()); } #endif TEST(SimpleString, MaskedBits16Bit) { STRCMP_EQUAL("xxxxxxxx xxxxxxxx", StringFromMaskedBits(0x0000, 0x0000, 2*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("00000000 00000000", StringFromMaskedBits(0x0000, 0xFFFF, 2*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("11111111 11111111", StringFromMaskedBits(0xFFFF, 0xFFFF, 2*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("1xxxxxxx xxxxxxxx", StringFromMaskedBits(0x8000, 0x8000, 2*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("xxxxxxxx xxxxxxx1", StringFromMaskedBits(0x0001, 0x0001, 2*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("11xx11xx 11xx11xx", StringFromMaskedBits(0xFFFF, 0xCCCC, 2*8/CPPUTEST_CHAR_BIT).asCharString()); } TEST(SimpleString, MaskedBits32Bit) { STRCMP_EQUAL("xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx", StringFromMaskedBits(0x00000000, 0x00000000, 4*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("00000000 00000000 00000000 00000000", StringFromMaskedBits(0x00000000, 0xFFFFFFFF, 4*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("11111111 11111111 11111111 11111111", StringFromMaskedBits(0xFFFFFFFF, 0xFFFFFFFF, 4*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx", StringFromMaskedBits(0x80000000, 0x80000000, 4*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("xxxxxxxx xxxxxxxx xxxxxxxx xxxxxxx1", StringFromMaskedBits(0x00000001, 0x00000001, 4*8/CPPUTEST_CHAR_BIT).asCharString()); STRCMP_EQUAL("11xx11xx 11xx11xx 11xx11xx 11xx11xx", StringFromMaskedBits(0xFFFFFFFF, 0xCCCCCCCC, 4*8/CPPUTEST_CHAR_BIT).asCharString()); } TEST(SimpleString, StringFromOrdinalNumberOnes) { STRCMP_EQUAL("2nd", StringFromOrdinalNumber(2).asCharString()); STRCMP_EQUAL("3rd", StringFromOrdinalNumber(3).asCharString()); STRCMP_EQUAL("4th", StringFromOrdinalNumber(4).asCharString()); STRCMP_EQUAL("5th", StringFromOrdinalNumber(5).asCharString()); STRCMP_EQUAL("6th", StringFromOrdinalNumber(6).asCharString()); STRCMP_EQUAL("7th", StringFromOrdinalNumber(7).asCharString()); } TEST(SimpleString, StringFromOrdinalNumberTens) { STRCMP_EQUAL("10th", StringFromOrdinalNumber(10).asCharString()); STRCMP_EQUAL("11th", StringFromOrdinalNumber(11).asCharString()); STRCMP_EQUAL("12th", StringFromOrdinalNumber(12).asCharString()); STRCMP_EQUAL("13th", StringFromOrdinalNumber(13).asCharString()); STRCMP_EQUAL("14th", StringFromOrdinalNumber(14).asCharString()); STRCMP_EQUAL("18th", StringFromOrdinalNumber(18).asCharString()); } TEST(SimpleString, StringFromOrdinalNumberOthers) { STRCMP_EQUAL("21st", StringFromOrdinalNumber(21).asCharString()); STRCMP_EQUAL("22nd", StringFromOrdinalNumber(22).asCharString()); STRCMP_EQUAL("23rd", StringFromOrdinalNumber(23).asCharString()); STRCMP_EQUAL("24th", StringFromOrdinalNumber(24).asCharString()); STRCMP_EQUAL("32nd", StringFromOrdinalNumber(32).asCharString()); STRCMP_EQUAL("100th", StringFromOrdinalNumber(100).asCharString()); STRCMP_EQUAL("101st", StringFromOrdinalNumber(101).asCharString()); } TEST(SimpleString, BracketsFormattedHexStringFromForSignedChar) { signed char value = 'c'; STRCMP_EQUAL("(0x63)", BracketsFormattedHexStringFrom(value).asCharString()); } TEST(SimpleString, BracketsFormattedHexStringFromForUnsignedInt) { unsigned int value = 1; STRCMP_EQUAL("(0x1)", BracketsFormattedHexStringFrom(value).asCharString()); } TEST(SimpleString, BracketsFormattedHexStringFromForUnsignedLong) { unsigned long value = 1; STRCMP_EQUAL("(0x1)", BracketsFormattedHexStringFrom(value).asCharString()); } #ifdef CPPUTEST_16BIT_INTS TEST(SimpleString, BracketsFormattedHexStringFromForInt) { int value = -1; STRCMP_EQUAL("(0xffff)", BracketsFormattedHexStringFrom(value).asCharString()); } #else TEST(SimpleString, BracketsFormattedHexStringFromForInt) { int value = -1; STRCMP_EQUAL("(0xffffffff)", BracketsFormattedHexStringFrom(value).asCharString()); } #endif TEST(SimpleString, BracketsFormattedHexStringFromForLong) { long value = 1; STRCMP_EQUAL("(0x1)", BracketsFormattedHexStringFrom(value).asCharString()); } #ifdef CPPUTEST_USE_LONG_LONG TEST(SimpleString, BracketsFormattedHexStringFromForLongLong) { cpputest_longlong value = 1; STRCMP_EQUAL("(0x1)", BracketsFormattedHexStringFrom(value).asCharString()); } TEST(SimpleString, BracketsFormattedHexStringFromForULongLong) { cpputest_ulonglong value = 1; STRCMP_EQUAL("(0x1)", BracketsFormattedHexStringFrom(value).asCharString()); } #else TEST(SimpleString, BracketsFormattedHexStringFromForLongLong) { cpputest_longlong value = 1; STRCMP_EQUAL("", BracketsFormattedHexStringFrom(value).asCharString()); } TEST(SimpleString, BracketsFormattedHexStringFromForULongLong) { cpputest_ulonglong value = 1; STRCMP_EQUAL("", BracketsFormattedHexStringFrom(value).asCharString()); } #endif cpputest-4.0/tests/CppUTest/CMakeLists.txt000644 000765 000024 00000003047 13663176127 021607 0ustar00basvoddestaff000000 000000 set(CppUTestTests_src AllTests.cpp SetPluginTest.cpp CheatSheetTest.cpp SimpleStringTest.cpp SimpleStringCacheTest.cpp CompatabilityTests.cpp CommandLineArgumentsTest.cpp TestFailureTest.cpp TestFailureNaNTest.cpp CommandLineTestRunnerTest.cpp TestFilterTest.cpp TestHarness_cTest.cpp JUnitOutputTest.cpp TestHarness_cTestCFile.c DummyMemoryLeakDetector.cpp MemoryLeakDetectorTest.cpp TestInstallerTest.cpp AllocLetTestFree.c MemoryOperatorOverloadTest.cpp TestMemoryAllocatorTest.cpp MemoryLeakWarningTest.cpp TestOutputTest.cpp AllocLetTestFreeTest.cpp TestRegistryTest.cpp AllocationInCFile.c PluginTest.cpp TestResultTest.cpp PreprocessorTest.cpp TestUTestMacro.cpp TestUTestStringMacro.cpp AllocationInCppFile.cpp UtestTest.cpp SimpleMutexTest.cpp UtestPlatformTest.cpp TeamCityOutputTest.cpp ) if (MSVC) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4723") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4723") endif (MSVC) if (MINGW) find_package (Threads REQUIRED) set(THREAD_LIB "pthread") endif (MINGW) if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "OpenBSD") set (THREADS_HAVE_PTHREAD_ARG 1) find_package (Threads REQUIRED) set (THREAD_LIB "pthread") endif () add_executable(CppUTestTests ${CppUTestTests_src}) cpputest_normalize_test_output_location(CppUTestTests) target_link_libraries(CppUTestTests CppUTest ${THREAD_LIB}) if (TESTS_BUILD_DISCOVER) cpputest_buildtime_discover_tests(CppUTestTests) endif() cpputest-4.0/tests/CppUTest/CommandLineTestRunnerTest.cpp000644 000765 000024 00000036443 13663176127 024641 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/TestPlugin.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTestExt/MockSupport.h" class DummyPluginWhichCountsThePlugins : public TestPlugin { public: bool returnValue; int amountOfPlugins; DummyPluginWhichCountsThePlugins(const SimpleString& name, TestRegistry* registry) : TestPlugin(name), returnValue(true), amountOfPlugins(0), registry_(registry) { } virtual bool parseArguments(int, const char *const *, int) { /* Remove ourselves from the count */ amountOfPlugins = registry_->countPlugins() - 1; return returnValue; } private: TestRegistry* registry_; }; class CommandLineTestRunnerWithStringBufferOutput : public CommandLineTestRunner { public: StringBufferTestOutput* fakeJUnitOutputWhichIsReallyABuffer_; StringBufferTestOutput* fakeConsoleOutputWhichIsReallyABuffer; StringBufferTestOutput* fakeTCOutputWhichIsReallyABuffer; CommandLineTestRunnerWithStringBufferOutput(int argc, const char *const *argv, TestRegistry* registry) : CommandLineTestRunner(argc, argv, registry), fakeJUnitOutputWhichIsReallyABuffer_(NULLPTR), fakeConsoleOutputWhichIsReallyABuffer(NULLPTR), fakeTCOutputWhichIsReallyABuffer(NULLPTR) {} TestOutput* createConsoleOutput() { fakeConsoleOutputWhichIsReallyABuffer = new StringBufferTestOutput; return fakeConsoleOutputWhichIsReallyABuffer; } TestOutput* createJUnitOutput(const SimpleString&) { fakeJUnitOutputWhichIsReallyABuffer_ = new StringBufferTestOutput; return fakeJUnitOutputWhichIsReallyABuffer_; } TestOutput* createTeamCityOutput() { fakeTCOutputWhichIsReallyABuffer = new StringBufferTestOutput; return fakeTCOutputWhichIsReallyABuffer; } }; TEST_GROUP(CommandLineTestRunner) { TestRegistry registry; UtestShell *test1; UtestShell *test2; DummyPluginWhichCountsThePlugins* pluginCountingPlugin; void setup() { test1 = new UtestShell("group1", "test1", "file1", 1); test2 = new UtestShell("group2", "test2", "file2", 2); registry.addTest(test1); pluginCountingPlugin = new DummyPluginWhichCountsThePlugins("PluginCountingPlugin", ®istry); } void teardown() { delete pluginCountingPlugin; delete test2; delete test1; } SimpleString runAndGetOutput(const int argc, const char* argv[]) { CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(argc, argv, ®istry); commandLineTestRunner.runAllTestsMain(); return commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput(); } }; TEST(CommandLineTestRunner, OnePluginGetsInstalledDuringTheRunningTheTests) { const char* argv[] = { "tests.exe", "-psomething"}; registry.installPlugin(pluginCountingPlugin); CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); registry.removePluginByName("PluginCountingPlugin"); LONGS_EQUAL(0, registry.countPlugins()); LONGS_EQUAL(1, pluginCountingPlugin->amountOfPlugins); } TEST(CommandLineTestRunner, NoPluginsAreInstalledAtTheEndOfARunWhenTheArgumentsAreInvalid) { const char* argv[] = { "tests.exe", "-fdskjnfkds"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(0, registry.countPlugins()); } TEST(CommandLineTestRunner, ReturnsOneWhenTheArgumentsAreInvalid) { const char* argv[] = { "tests.exe", "-some-invalid=parameter" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); int returned = commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(1, returned); } TEST(CommandLineTestRunner, ReturnsOnePrintsHelpOnHelp) { const char* argv[] = { "tests.exe", "-h" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); int returned = commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(1, returned); STRCMP_CONTAINS("Thanks for using CppUTest.", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, ReturnsZeroWhenNoErrors) { const char* argv[] = { "tests.exe" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(1, argv, ®istry); int returned = commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(0, returned); } TEST(CommandLineTestRunner, ReturnsOneWhenNoTestsMatchProvidedFilter) { const char* argv[] = { "tests.exe", "-g", "NoSuchGroup"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(3, argv, ®istry); int returned = commandLineTestRunner.runAllTestsMain(); LONGS_EQUAL(1, returned); } TEST(CommandLineTestRunner, TeamcityOutputEnabled) { const char* argv[] = {"tests.exe", "-oteamcity"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); CHECK(commandLineTestRunner.fakeTCOutputWhichIsReallyABuffer != NULLPTR); } TEST(CommandLineTestRunner, JunitOutputEnabled) { const char* argv[] = { "tests.exe", "-ojunit"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); CHECK(commandLineTestRunner.fakeJUnitOutputWhichIsReallyABuffer_ != NULLPTR); } TEST(CommandLineTestRunner, JunitOutputAndVerboseEnabled) { const char* argv[] = { "tests.exe", "-ojunit", "-v"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(3, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("TEST(group1, test1)", commandLineTestRunner.fakeJUnitOutputWhichIsReallyABuffer_->getOutput().asCharString()); STRCMP_CONTAINS("TEST(group1, test1)", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, veryVerboseSetOnOutput) { const char* argv[] = { "tests.exe", "-vv"}; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("TEST(group1, test1)", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); STRCMP_CONTAINS("destroyTest", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, defaultTestsAreRunInOrderTheyAreInRepository) { const char* argv[] = { "tests.exe", "-v"}; registry.addTest(test2); CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); SimpleStringCollection stringCollection; commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().split("\n", stringCollection); STRCMP_CONTAINS("test2", stringCollection[0].asCharString()); STRCMP_CONTAINS("test1", stringCollection[1].asCharString()); } TEST(CommandLineTestRunner, testsCanBeRunInReverseOrder) { const char* argv[] = { "tests.exe", "-v", "-b"}; registry.addTest(test2); CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(3, argv, ®istry); commandLineTestRunner.runAllTestsMain(); SimpleStringCollection stringCollection; commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().split("\n", stringCollection); STRCMP_CONTAINS("test1", stringCollection[0].asCharString()); STRCMP_CONTAINS("test2", stringCollection[1].asCharString()); } TEST(CommandLineTestRunner, listTestGroupNamesShouldWorkProperly) { const char* argv[] = { "tests.exe", "-lg" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("group", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, listTestGroupAndCaseNamesShouldWorkProperly) { const char* argv[] = { "tests.exe", "-ln" }; CommandLineTestRunnerWithStringBufferOutput commandLineTestRunner(2, argv, ®istry); commandLineTestRunner.runAllTestsMain(); STRCMP_CONTAINS("group1.test1", commandLineTestRunner.fakeConsoleOutputWhichIsReallyABuffer->getOutput().asCharString()); } TEST(CommandLineTestRunner, randomShuffleSeedIsPrintedAndRandFuncIsExercised) { // more than 1 item in test list ensures that shuffle algorithm calls rand_() UtestShell *anotherTest = new UtestShell("group", "test2", "file", 1); registry.addTest(anotherTest); const char* argv[] = { "tests.exe", "-s"}; SimpleString text = runAndGetOutput(2, argv); STRCMP_CONTAINS("shuffling enabled with seed:", text.asCharString()); delete anotherTest; } TEST(CommandLineTestRunner, specificShuffleSeedIsPrintedVerbose) { const char* argv[] = { "tests.exe", "-s2", "-v"}; SimpleString text = runAndGetOutput(3, argv); STRCMP_CONTAINS("shuffling enabled with seed: 2", text.asCharString()); } extern "C" { typedef PlatformSpecificFile (*FOpenFunc)(const char*, const char*); typedef void (*FPutsFunc)(const char*, PlatformSpecificFile); typedef void (*FCloseFunc)(PlatformSpecificFile); typedef int (*PutcharFunc)(int); } struct FakeOutput { FakeOutput() : SaveFOpen(PlatformSpecificFOpen), SaveFPuts(PlatformSpecificFPuts), SaveFClose(PlatformSpecificFClose), SavePutchar(PlatformSpecificPutchar) { installFakes(); currentFake = this; } ~FakeOutput() { currentFake = NULLPTR; restoreOriginals(); } void installFakes() { PlatformSpecificFOpen = (FOpenFunc)fopen_fake; PlatformSpecificFPuts = (FPutsFunc)fputs_fake; PlatformSpecificFClose = (FCloseFunc)fclose_fake; PlatformSpecificPutchar = (PutcharFunc)putchar_fake; } void restoreOriginals() { PlatformSpecificPutchar = SavePutchar; PlatformSpecificFOpen = SaveFOpen; PlatformSpecificFPuts = SaveFPuts; PlatformSpecificFClose = SaveFClose; } static PlatformSpecificFile fopen_fake(const char*, const char*) { return (PlatformSpecificFile) NULLPTR; } static void fputs_fake(const char* str, PlatformSpecificFile) { currentFake->file += str; } static void fclose_fake(PlatformSpecificFile) { } static int putchar_fake(int c) { currentFake->console += StringFrom((char)c); return c; } SimpleString file; SimpleString console; static FakeOutput* currentFake; private: FOpenFunc SaveFOpen; FPutsFunc SaveFPuts; FCloseFunc SaveFClose; PutcharFunc SavePutchar; }; FakeOutput* FakeOutput::currentFake = NULLPTR; TEST(CommandLineTestRunner, realJunitOutputShouldBeCreatedAndWorkProperly) { const char* argv[] = { "tests.exe", "-ojunit", "-v", "-kpackage", }; FakeOutput fakeOutput; /* UT_PTR_SET() is not reentrant */ CommandLineTestRunner commandLineTestRunner(4, argv, ®istry); commandLineTestRunner.runAllTestsMain(); fakeOutput.restoreOriginals(); STRCMP_CONTAINS(" nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" namespace { const int failLineNumber = 2; const char* failFileName = "fail.cpp"; } static double zero = 0.0; static double one = 1.0; static double not_a_number = zero / zero; static double infinity = one / zero; extern "C" { static int IsNanForSystemsWithoutNan(double d) { return ((long)not_a_number == (long)d); } static int IsInfForSystemsWithoutInf(double d) { return ((long)infinity == (long)d); } } TEST_GROUP(TestFailureNanAndInf) { UtestShell* test; void setup() _override { test = new UtestShell("groupname", "testname", failFileName, failLineNumber-1); if(PlatformSpecificIsNan(not_a_number) == false) { not_a_number = -1.0; UT_PTR_SET(PlatformSpecificIsNan, IsNanForSystemsWithoutNan); } if(PlatformSpecificIsInf(infinity) == false) { infinity = -2.0; UT_PTR_SET(PlatformSpecificIsInf, IsInfForSystemsWithoutInf); } } void teardown() _override { delete test; } }; #define FAILURE_EQUAL(a, b) STRCMP_EQUAL_LOCATION(a, b.getMessage().asCharString(), "", __FILE__, __LINE__) TEST(TestFailureNanAndInf, DoublesEqualExpectedIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, not_a_number, 2.0, 3.0, ""); FAILURE_EQUAL("expected \n" "\tbut was <2> threshold used was <3>\n" "\tCannot make comparisons with Nan", f); } TEST(TestFailureNanAndInf, DoublesEqualActualIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, not_a_number, 3.0, ""); FAILURE_EQUAL("expected <1>\n" "\tbut was threshold used was <3>\n" "\tCannot make comparisons with Nan", f); } TEST(TestFailureNanAndInf, DoublesEqualThresholdIsNaN) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, 2.0, not_a_number, ""); FAILURE_EQUAL("expected <1>\n" "\tbut was <2> threshold used was \n" "\tCannot make comparisons with Nan", f); } TEST(TestFailureNanAndInf, DoublesEqualExpectedIsInf) { DoublesEqualFailure f(test, failFileName, failLineNumber, infinity, 2.0, 3.0, ""); FAILURE_EQUAL("expected \n" "\tbut was <2> threshold used was <3>", f); } TEST(TestFailureNanAndInf, DoublesEqualActualIsInf) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, infinity, 3.0, ""); FAILURE_EQUAL("expected <1>\n" "\tbut was threshold used was <3>", f); } TEST(TestFailureNanAndInf, DoublesEqualThresholdIsInf) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, not_a_number, infinity, ""); FAILURE_EQUAL("expected <1>\n" "\tbut was threshold used was \n" "\tCannot make comparisons with Nan", f); } cpputest-4.0/tests/CppUTest/TestRegistryTest.cpp000644 000765 000024 00000027533 13663176127 023071 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" namespace { const int testLineNumber = 1; } class MockTest: public UtestShell { public: MockTest(const char* group = "Group") : UtestShell(group, "Name", "File", testLineNumber), hasRun_(false) { } virtual void runOneTest(TestPlugin*, TestResult&) { hasRun_ = true; } bool hasRun_; }; class MockTestResult: public TestResult { public: int countTestsStarted; int countTestsEnded; int countCurrentTestStarted; int countCurrentTestEnded; int countCurrentGroupStarted; int countCurrentGroupEnded; MockTestResult(TestOutput& p) : TestResult(p) { resetCount(); } virtual ~MockTestResult() _destructor_override { } void resetCount() { countTestsStarted = 0; countTestsEnded = 0; countCurrentTestStarted = 0; countCurrentTestEnded = 0; countCurrentGroupStarted = 0; countCurrentGroupEnded = 0; } virtual void testsStarted() _override { countTestsStarted++; } virtual void testsEnded() _override { countTestsEnded++; } virtual void currentTestStarted(UtestShell* /*test*/) _override { countCurrentTestStarted++; } virtual void currentTestEnded(UtestShell* /*test*/) _override { countCurrentTestEnded++; } virtual void currentGroupStarted(UtestShell* /*test*/) _override { countCurrentGroupStarted++; } virtual void currentGroupEnded(UtestShell* /*test*/) _override { countCurrentGroupEnded++; } }; TEST_GROUP(TestRegistry) { TestRegistry* myRegistry; StringBufferTestOutput* output; MockTest* test1; MockTest* test2; MockTest* test3; MockTest* test4; TestResult *result; MockTestResult *mockResult; void setup() { output = new StringBufferTestOutput(); mockResult = new MockTestResult(*output); result = mockResult; test1 = new MockTest(); test2 = new MockTest(); test3 = new MockTest("group2"); test4 = new MockTest(); myRegistry = new TestRegistry(); myRegistry->setCurrentRegistry(myRegistry); } void teardown() { myRegistry->setCurrentRegistry(NULLPTR); delete myRegistry; delete test1; delete test2; delete test3; delete test4; delete result; delete output; } void addAndRunAllTests() { myRegistry->addTest(test1); myRegistry->addTest(test2); myRegistry->addTest(test3); myRegistry->runAllTests(*result); } }; TEST(TestRegistry, registryMyRegistryAndReset) { CHECK(myRegistry->getCurrentRegistry() == myRegistry); } TEST(TestRegistry, emptyRegistryIsEmpty) { CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, addOneTestIsNotEmpty) { myRegistry->addTest(test1); CHECK(myRegistry->countTests() == 1); } TEST(TestRegistry, addOneTwoTests) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->countTests() == 2); } TEST(TestRegistry, runTwoTests) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(!test1->hasRun_); CHECK(!test2->hasRun_); myRegistry->runAllTests(*result); CHECK(test1->hasRun_); CHECK(test2->hasRun_); } TEST(TestRegistry, runTwoTestsCheckResultFunctionsCalled) { myRegistry->addTest(test1); myRegistry->addTest(test2); myRegistry->runAllTests(*result); LONGS_EQUAL(1, mockResult->countTestsStarted); LONGS_EQUAL(1, mockResult->countTestsEnded); LONGS_EQUAL(1, mockResult->countCurrentGroupStarted); LONGS_EQUAL(1, mockResult->countCurrentGroupEnded); LONGS_EQUAL(2, mockResult->countCurrentTestStarted); LONGS_EQUAL(2, mockResult->countCurrentTestEnded); } TEST(TestRegistry, runThreeTestsandTwoGroupsCheckResultFunctionsCalled) { addAndRunAllTests(); LONGS_EQUAL(2, mockResult->countCurrentGroupStarted); LONGS_EQUAL(2, mockResult->countCurrentGroupEnded); LONGS_EQUAL(3, mockResult->countCurrentTestStarted); LONGS_EQUAL(3, mockResult->countCurrentTestEnded); } TEST(TestRegistry, unDoTest) { myRegistry->addTest(test1); CHECK(myRegistry->countTests() == 1); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, unDoButNoTest) { CHECK(myRegistry->countTests() == 0); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 0); } TEST(TestRegistry, reallyUndoLastTest) { myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->countTests() == 2); myRegistry->unDoLastAddTest(); CHECK(myRegistry->countTests() == 1); myRegistry->runAllTests(*result); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, findTestWithNameDoesntExist) { CHECK(myRegistry->findTestWithName("ThisTestDoesntExists") == NULLPTR); } TEST(TestRegistry, findTestWithName) { test1->setTestName("NameOfATestThatDoesExist"); test2->setTestName("SomeOtherTest"); myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->findTestWithName("NameOfATestThatDoesExist") != NULLPTR); } TEST(TestRegistry, findTestWithGroupDoesntExist) { CHECK(myRegistry->findTestWithGroup("ThisTestGroupDoesntExists") == NULLPTR); } TEST(TestRegistry, findTestWithGroup) { test1->setGroupName("GroupOfATestThatDoesExist"); test2->setGroupName("SomeOtherGroup"); myRegistry->addTest(test1); myRegistry->addTest(test2); CHECK(myRegistry->findTestWithGroup("GroupOfATestThatDoesExist") != NULLPTR); } TEST(TestRegistry, nameFilterWorks) { test1->setTestName("testname"); test2->setTestName("noname"); TestFilter nameFilter("testname"); myRegistry->setNameFilters(&nameFilter); addAndRunAllTests(); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, groupFilterWorks) { test1->setGroupName("groupname"); test2->setGroupName("noname"); TestFilter groupFilter("groupname"); myRegistry->setGroupFilters(&groupFilter); addAndRunAllTests(); CHECK(test1->hasRun_); CHECK(!test2->hasRun_); } TEST(TestRegistry, runTestInSeperateProcess) { myRegistry->setRunTestsInSeperateProcess(); myRegistry->addTest(test1); myRegistry->runAllTests(*result); CHECK(test1->isRunInSeperateProcess()); } TEST(TestRegistry, CurrentRepetitionIsCorrectNone) { CHECK(0 == myRegistry->getCurrentRepetition()); myRegistry->runAllTests(*result); LONGS_EQUAL(1, myRegistry->getCurrentRepetition()); } TEST(TestRegistry, CurrentRepetitionIsCorrectTwo) { CHECK(0 == myRegistry->getCurrentRepetition()); myRegistry->runAllTests(*result); myRegistry->runAllTests(*result); LONGS_EQUAL(2, myRegistry->getCurrentRepetition()); } class MyTestPluginDummy: public TestPlugin { public: MyTestPluginDummy(const SimpleString& name) : TestPlugin(name) {} virtual ~MyTestPluginDummy() _destructor_override {} virtual void runAllPreTestAction(UtestShell&, TestResult&) _override {} virtual void runAllPostTestAction(UtestShell&, TestResult&) _override {} }; TEST(TestRegistry, ResetPluginsWorks) { MyTestPluginDummy plugin1("Plugin-1"); MyTestPluginDummy plugin2("Plugin-2"); myRegistry->installPlugin(&plugin1); myRegistry->installPlugin(&plugin2); LONGS_EQUAL(2, myRegistry->countPlugins()); myRegistry->resetPlugins(); LONGS_EQUAL(0, myRegistry->countPlugins()); } TEST(TestRegistry, listTestGroupNames_shouldListBackwardsGroup1AfterGroup11AndGroup2OnlyOnce) { test1->setGroupName("GROUP_1"); myRegistry->addTest(test1); test2->setGroupName("GROUP_2"); myRegistry->addTest(test2); test3->setGroupName("GROUP_11"); myRegistry->addTest(test3); test4->setGroupName("GROUP_2"); myRegistry->addTest(test4); myRegistry->listTestGroupNames(*result); SimpleString s = output->getOutput(); STRCMP_EQUAL("GROUP_2 GROUP_11 GROUP_1", s.asCharString()); } TEST(TestRegistry, listTestGroupAndCaseNames_shouldListBackwardsGroupATestaAfterGroupAtestaa) { test1->setGroupName("GROUP_A"); test1->setTestName("test_a"); myRegistry->addTest(test1); test2->setGroupName("GROUP_B"); test2->setTestName("test_b"); myRegistry->addTest(test2); test3->setGroupName("GROUP_A"); test3->setTestName("test_aa"); myRegistry->addTest(test3); myRegistry->listTestGroupAndCaseNames(*result); SimpleString s = output->getOutput(); STRCMP_EQUAL("GROUP_A.test_aa GROUP_B.test_b GROUP_A.test_a", s.asCharString()); } TEST(TestRegistry, shuffleEmptyListIsNoOp) { CHECK_TRUE(myRegistry->getFirstTest() == NULLPTR); myRegistry->shuffleTests(0); CHECK_TRUE(myRegistry->getFirstTest() == NULLPTR); } TEST(TestRegistry, shuffleSingleTestIsNoOp) { myRegistry->addTest(test1); myRegistry->shuffleTests(0); CHECK_TRUE(myRegistry->getFirstTest() == test1); } static int getZero() { return 0; } IGNORE_TEST(TestRegistry, shuffleTestList) { UT_PTR_SET(PlatformSpecificRand, getZero); myRegistry->addTest(test3); myRegistry->addTest(test2); myRegistry->addTest(test1); UtestShell* first_before = myRegistry->getFirstTest(); UtestShell* second_before = first_before->getNext(); UtestShell* third_before = second_before->getNext(); CHECK_TRUE(first_before == test1); CHECK_TRUE(second_before == test2); CHECK_TRUE(third_before == test3); CHECK_TRUE(third_before->getNext() == NULLPTR); // shuffle always with element at index 0: [1] 2 [3] --> [3] [2] 1 --> 2 3 1 myRegistry->shuffleTests(0); UtestShell* first_after = myRegistry->getFirstTest(); UtestShell* second_after = first_after->getNext(); UtestShell* third_after = second_after->getNext(); CHECK_TRUE(first_after == test2); CHECK_TRUE(second_after == test3); CHECK_TRUE(third_after == test1); CHECK_TRUE(third_after->getNext() == NULLPTR); } TEST(TestRegistry, reverseTests) { myRegistry->addTest(test1); myRegistry->addTest(test2); myRegistry->reverseTests(); CHECK(test1 == myRegistry->getFirstTest()); } TEST(TestRegistry, reverseZeroTests) { myRegistry->reverseTests(); CHECK(NULLPTR == myRegistry->getFirstTest()); } cpputest-4.0/tests/CppUTest/CheatSheetTest.cpp000644 000765 000024 00000001401 13663176127 022420 0ustar00basvoddestaff000000 000000 static void (*real_one) (); static void stub(){} /* in CheatSheetTest.cpp */ #include "CppUTest/TestHarness.h" /* Declare TestGroup with name CheatSheet */ TEST_GROUP(CheatSheet) { /* declare a setup method for the test group. Optional. */ void setup () { /* Set method real_one to stub. Automatically restore in teardown */ UT_PTR_SET(real_one, stub); } /* Declare a teardown method for the test group. Optional */ void teardown() { } }; /* Do not forget semicolumn */ /* Declare one test within the test group */ TEST(CheatSheet, TestName) { /* Check two longs are equal */ LONGS_EQUAL(1, 1); /* Check a condition */ CHECK(true == true); /* Check a string */ STRCMP_EQUAL("HelloWorld", "HelloWorld"); } cpputest-4.0/tests/CppUTest/TestMemoryAllocatorTest.cpp000644 000765 000024 00000057011 13663176127 024364 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/MemoryLeakDetector.h" TEST_GROUP(TestMemoryAllocatorTest) { TestMemoryAllocator* allocator; GlobalMemoryAllocatorStash memoryAllocatorStash; void setup() { allocator = NULLPTR; memoryAllocatorStash.save(); } void teardown() { memoryAllocatorStash.restore(); delete allocator; } }; TEST(TestMemoryAllocatorTest, SetCurrentNewAllocator) { allocator = new TestMemoryAllocator("new allocator for test"); setCurrentNewAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentNewAllocator()); } TEST(TestMemoryAllocatorTest, SetCurrentNewAllocatorToDefault) { TestMemoryAllocator* originalAllocator = getCurrentNewAllocator(); setCurrentNewAllocatorToDefault(); POINTERS_EQUAL(defaultNewAllocator(), getCurrentNewAllocator()); setCurrentNewAllocator(originalAllocator); } TEST(TestMemoryAllocatorTest, SetCurrentNewArrayAllocator) { allocator = new TestMemoryAllocator("new array allocator for test"); setCurrentNewArrayAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentNewArrayAllocator()); setCurrentNewArrayAllocatorToDefault(); POINTERS_EQUAL(defaultNewArrayAllocator(), getCurrentNewArrayAllocator()); } TEST(TestMemoryAllocatorTest, SetCurrentMallocAllocator) { allocator = new TestMemoryAllocator("malloc_allocator"); setCurrentMallocAllocator(allocator); POINTERS_EQUAL(allocator, getCurrentMallocAllocator()); setCurrentMallocAllocatorToDefault(); POINTERS_EQUAL(defaultMallocAllocator(), getCurrentMallocAllocator()); } TEST(TestMemoryAllocatorTest, MemoryAllocation) { allocator = new TestMemoryAllocator(); allocator->free_memory(allocator->alloc_memory(100, "file", 1), 100, "file", 1); } TEST(TestMemoryAllocatorTest, MallocNames) { STRCMP_EQUAL("Standard Malloc Allocator", defaultMallocAllocator()->name()); STRCMP_EQUAL("malloc", defaultMallocAllocator()->alloc_name()); STRCMP_EQUAL("free", defaultMallocAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NewNames) { STRCMP_EQUAL("Standard New Allocator", defaultNewAllocator()->name()); STRCMP_EQUAL("new", defaultNewAllocator()->alloc_name()); STRCMP_EQUAL("delete", defaultNewAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NewArrayNames) { STRCMP_EQUAL("Standard New [] Allocator", defaultNewArrayAllocator()->name()); STRCMP_EQUAL("new []", defaultNewArrayAllocator()->alloc_name()); STRCMP_EQUAL("delete []", defaultNewArrayAllocator()->free_name()); } TEST(TestMemoryAllocatorTest, NullUnknownAllocation) { allocator = new NullUnknownAllocator; allocator->free_memory(allocator->alloc_memory(100, "file", 1), 100, "file", 1); } TEST(TestMemoryAllocatorTest, NullUnknownNames) { allocator = new NullUnknownAllocator; STRCMP_EQUAL("Null Allocator", allocator->name()); STRCMP_EQUAL("unknown", allocator->alloc_name()); STRCMP_EQUAL("unknown", allocator->free_name()); } #if (! CPPUTEST_SANITIZE_ADDRESS) #define MAX_SIZE_FOR_ALLOC ((size_t) -1 > (unsigned short)-1) ? (size_t) -97 : (size_t) -1 static void failTryingToAllocateTooMuchMemory(void) { TestMemoryAllocator allocator; allocator.alloc_memory(MAX_SIZE_FOR_ALLOC, "file", 1); } // LCOV_EXCL_LINE TEST(TestMemoryAllocatorTest, TryingToAllocateTooMuchFailsTest) { TestTestingFixture fixture; fixture.setTestFunction(&failTryingToAllocateTooMuchMemory); fixture.runAllTests(); fixture.assertPrintContains("malloc returned null pointer"); } #endif TEST_GROUP(MemoryLeakAllocator) { MemoryLeakAllocator* allocator; void setup() { allocator = new MemoryLeakAllocator(defaultMallocAllocator()); } void teardown() { delete allocator; } }; TEST(MemoryLeakAllocator, allocMemory) { char* memory = allocator->alloc_memory(10, __FILE__, __LINE__); memory[0] = 'B'; MemoryLeakWarningPlugin::getGlobalDetector()->deallocMemory(allocator->actualAllocator(), memory); /* No leaks or crashes */ } TEST(MemoryLeakAllocator, freeMemory) { char* memory = MemoryLeakWarningPlugin::getGlobalDetector()->allocMemory(allocator->actualAllocator(), 10); allocator->free_memory(memory, 10, __FILE__, __LINE__); /* No leaks or crashes */ } TEST(MemoryLeakAllocator, originalAllocator) { POINTERS_EQUAL(defaultMallocAllocator(), allocator->actualAllocator()); STRCMP_EQUAL(defaultMallocAllocator()->alloc_name(), allocator->alloc_name()); STRCMP_EQUAL(defaultMallocAllocator()->free_name(), allocator->free_name()); } TEST(MemoryLeakAllocator, name) { STRCMP_EQUAL("MemoryLeakAllocator", allocator->name()); } #if CPPUTEST_USE_MEM_LEAK_DETECTION #if CPPUTEST_USE_MALLOC_MACROS class FailableMemoryAllocatorExecFunction : public ExecFunction { public: FailableMemoryAllocator* allocator_; void (*testFunction_)(FailableMemoryAllocator*); void exec() _override { testFunction_(allocator_); } FailableMemoryAllocatorExecFunction() : allocator_(NULLPTR), testFunction_(NULLPTR) {} virtual ~FailableMemoryAllocatorExecFunction() _destructor_override {} }; TEST_GROUP(FailableMemoryAllocator) { FailableMemoryAllocator *failableMallocAllocator; FailableMemoryAllocatorExecFunction testFunction; TestTestingFixture fixture; GlobalMemoryAllocatorStash stash; void setup() { stash.save(); testFunction.allocator_ = failableMallocAllocator = new FailableMemoryAllocator("Failable Malloc Allocator", "malloc", "free"); fixture.setTestFunction(&testFunction); setCurrentMallocAllocator(failableMallocAllocator); } void teardown() { failableMallocAllocator->checkAllFailedAllocsWereDone(); failableMallocAllocator->clearFailedAllocs(); delete failableMallocAllocator; stash.restore(); } }; TEST(FailableMemoryAllocator, MallocWorksNormallyIfNotAskedToFail) { int *memory = (int*)malloc(sizeof(int)); CHECK(memory != NULLPTR); free(memory); } TEST(FailableMemoryAllocator, FailFirstMalloc) { failableMallocAllocator->failAllocNumber(1); POINTERS_EQUAL(NULLPTR, (int*)malloc(sizeof(int))); } TEST(FailableMemoryAllocator, FailSecondAndFourthMalloc) { failableMallocAllocator->failAllocNumber(2); failableMallocAllocator->failAllocNumber(4); int *memory1 = (int*)malloc(sizeof(int)); int *memory2 = (int*)malloc(sizeof(int)); int *memory3 = (int*)malloc(sizeof(int)); int *memory4 = (int*)malloc(sizeof(int)); CHECK(NULLPTR != memory1); POINTERS_EQUAL(NULLPTR, memory2); CHECK(NULLPTR != memory3); POINTERS_EQUAL(NULLPTR, memory4); free(memory1); free(memory3); } static void _failingAllocIsNeverDone(FailableMemoryAllocator* failableMallocAllocator) { failableMallocAllocator->failAllocNumber(1); failableMallocAllocator->failAllocNumber(2); failableMallocAllocator->failAllocNumber(3); malloc(sizeof(int)); malloc(sizeof(int)); failableMallocAllocator->checkAllFailedAllocsWereDone(); } TEST(FailableMemoryAllocator, CheckAllFailingAllocsWereDone) { testFunction.testFunction_ = _failingAllocIsNeverDone; fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); fixture.assertPrintContains("Expected allocation number 3 was never done"); failableMallocAllocator->clearFailedAllocs(); } TEST(FailableMemoryAllocator, FailFirstAllocationAtGivenLine) { failableMallocAllocator->failNthAllocAt(1, __FILE__, __LINE__ + 2); POINTERS_EQUAL(NULLPTR, malloc(sizeof(int))); } TEST(FailableMemoryAllocator, FailThirdAllocationAtGivenLine) { int *memory[10] = { NULLPTR }; int allocation; failableMallocAllocator->failNthAllocAt(3, __FILE__, __LINE__ + 4); for (allocation = 1; allocation <= 10; allocation++) { memory[allocation - 1] = (int *)malloc(sizeof(int)); if (memory[allocation - 1] == NULLPTR) break; free(memory[allocation -1]); } LONGS_EQUAL(3, allocation); } static void _failingLocationAllocIsNeverDone(FailableMemoryAllocator* failableMallocAllocator) { failableMallocAllocator->failNthAllocAt(1, "TestMemoryAllocatorTest.cpp", __LINE__); failableMallocAllocator->checkAllFailedAllocsWereDone(); } TEST(FailableMemoryAllocator, CheckAllFailingLocationAllocsWereDone) { testFunction.testFunction_ = _failingLocationAllocIsNeverDone; fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); fixture.assertPrintContains("Expected failing alloc at TestMemoryAllocatorTest.cpp:"); fixture.assertPrintContains("was never done"); failableMallocAllocator->clearFailedAllocs(); } #endif #endif class MemoryAccountantExecFunction : public ExecFunction { public: virtual ~MemoryAccountantExecFunction() _destructor_override { } void (*testFunction_)(MemoryAccountant*); MemoryAccountant* parameter_; virtual void exec() _override { testFunction_(parameter_); } }; TEST_GROUP(TestMemoryAccountant) { MemoryAccountant accountant; TestTestingFixture fixture; MemoryAccountantExecFunction testFunction; void setup() { testFunction.parameter_ = &accountant; fixture.setTestFunction(&testFunction); } void teardown() { accountant.clear(); } }; TEST(TestMemoryAccountant, totalAllocsIsZero) { LONGS_EQUAL(0, accountant.totalAllocations()); LONGS_EQUAL(0, accountant.totalDeallocations()); } TEST(TestMemoryAccountant, countAllocationsPerSize) { accountant.alloc(4); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(4)); LONGS_EQUAL(0, accountant.totalAllocationsOfSize(10)); LONGS_EQUAL(1, accountant.totalAllocations()); LONGS_EQUAL(0, accountant.maximumAllocationAtATimeOfSize(10)); } TEST(TestMemoryAccountant, countAllocationsPerSizeMultipleAllocations) { accountant.alloc(4); accountant.alloc(4); accountant.alloc(8); LONGS_EQUAL(2, accountant.totalAllocationsOfSize(4)); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(8)); LONGS_EQUAL(0, accountant.totalAllocationsOfSize(10)); LONGS_EQUAL(3, accountant.totalAllocations()); } TEST(TestMemoryAccountant, countAllocationsPerSizeMultipleAllocationsOutOfOrder) { accountant.alloc(4); accountant.alloc(8); accountant.alloc(4); accountant.alloc(5); accountant.alloc(2); accountant.alloc(4); accountant.alloc(10); LONGS_EQUAL(3, accountant.totalAllocationsOfSize(4)); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(8)); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(10)); LONGS_EQUAL(7, accountant.totalAllocations()); } TEST(TestMemoryAccountant, countDeallocationsPerSizeMultipleAllocations) { accountant.dealloc(8); accountant.dealloc(4); accountant.dealloc(8); LONGS_EQUAL(1, accountant.totalDeallocationsOfSize(4)); LONGS_EQUAL(2, accountant.totalDeallocationsOfSize(8)); LONGS_EQUAL(0, accountant.totalDeallocationsOfSize(20)); LONGS_EQUAL(3, accountant.totalDeallocations()); } TEST(TestMemoryAccountant, countMaximumAllocationsAtATime) { accountant.alloc(4); accountant.alloc(4); accountant.dealloc(4); accountant.dealloc(4); accountant.alloc(4); LONGS_EQUAL(2, accountant.maximumAllocationAtATimeOfSize(4)); } TEST(TestMemoryAccountant, reportNoAllocations) { STRCMP_EQUAL("CppUTest Memory Accountant has not noticed any allocations or deallocations. Sorry\n", accountant.report().asCharString()); } TEST(TestMemoryAccountant, reportAllocations) { accountant.dealloc(8); accountant.dealloc(8); accountant.dealloc(8); accountant.alloc(4); accountant.dealloc(4); accountant.alloc(4); STRCMP_EQUAL("CppUTest Memory Accountant report:\n" "Allocation size # allocations # deallocations max # allocations at one time\n" " 4 2 1 1\n" " 8 0 3 0\n" " Thank you for your business\n" , accountant.report().asCharString()); } TEST(TestMemoryAccountant, reportAllocationsWithSizeZero) { accountant.dealloc(0); accountant.dealloc(4); accountant.dealloc(4); accountant.alloc(4); STRCMP_EQUAL("CppUTest Memory Accountant report:\n" "Allocation size # allocations # deallocations max # allocations at one time\n" "other 0 1 0\n" " 4 1 2 1\n" " Thank you for your business\n" , accountant.report().asCharString()); } static void _failUseCacheSizesAfterAllocation(MemoryAccountant* accountant) { size_t cacheSizes[] = {0}; accountant->alloc(4); accountant->useCacheSizes(cacheSizes, 1); } TEST(TestMemoryAccountant, withCacheSizesFailsWhenAlreadyAllocatedMemory) { testFunction.testFunction_ = _failUseCacheSizesAfterAllocation; fixture.runAllTests(); fixture.assertPrintContains("MemoryAccountant: Cannot set cache sizes as allocations already occured!"); } TEST(TestMemoryAccountant, reportWithCacheSizesEmpty) { size_t cacheSizes[] = {0}; accountant.useCacheSizes(cacheSizes, 0); accountant.alloc(4); STRCMP_EQUAL("CppUTest Memory Accountant report (with cache sizes):\n" "Cache size # allocations # deallocations max # allocations at one time\n" "other 1 0 1\n" " Thank you for your business\n" , accountant.report().asCharString()); } TEST(TestMemoryAccountant, reportWithCacheSizes) { size_t cacheSizes[] = {4}; accountant.useCacheSizes(cacheSizes, 1); accountant.dealloc(8); accountant.dealloc(12); accountant.dealloc(20); accountant.alloc(4); accountant.dealloc(4); accountant.alloc(4); STRCMP_EQUAL("CppUTest Memory Accountant report (with cache sizes):\n" "Cache size # allocations # deallocations max # allocations at one time\n" " 4 2 1 1\n" "other 0 3 0\n" " Thank you for your business\n" , accountant.report().asCharString()); } TEST(TestMemoryAccountant, reportWithCacheSizesMultipleCaches) { size_t cacheSizes[] = {4, 10, 20}; accountant.useCacheSizes(cacheSizes, 3); accountant.alloc(8); accountant.alloc(12); accountant.alloc(20); accountant.alloc(4); accountant.dealloc(4); accountant.alloc(4); STRCMP_EQUAL("CppUTest Memory Accountant report (with cache sizes):\n" "Cache size # allocations # deallocations max # allocations at one time\n" " 4 2 1 1\n" " 10 1 0 1\n" " 20 2 0 2\n" "other 0 0 0\n" " Thank you for your business\n" , accountant.report().asCharString()); } TEST_GROUP(AccountingTestMemoryAllocator) { MemoryAccountant accountant; AccountingTestMemoryAllocator *allocator; void setup() { allocator = new AccountingTestMemoryAllocator(accountant, getCurrentMallocAllocator()); } void teardown() { accountant.clear(); delete allocator; } }; TEST(AccountingTestMemoryAllocator, canAllocateAndAccountMemory) { char* memory = allocator->alloc_memory(10, __FILE__, __LINE__); allocator->free_memory(memory, 10, __FILE__, __LINE__); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(10)); LONGS_EQUAL(1, accountant.totalDeallocationsOfSize(10)); } TEST(AccountingTestMemoryAllocator, canAllocateAndAccountMemoryMultipleAllocations) { char* memory1 = allocator->alloc_memory(10, __FILE__, __LINE__); char* memory2 = allocator->alloc_memory(8, __FILE__, __LINE__); char* memory3 = allocator->alloc_memory(12, __FILE__, __LINE__); allocator->free_memory(memory1, 10, __FILE__, __LINE__); allocator->free_memory(memory3, 12, __FILE__, __LINE__); char* memory4 = allocator->alloc_memory(15, __FILE__, __LINE__); char* memory5 = allocator->alloc_memory(20, __FILE__, __LINE__); allocator->free_memory(memory2, 8, __FILE__, __LINE__); allocator->free_memory(memory4, 15, __FILE__, __LINE__); allocator->free_memory(memory5, 20, __FILE__, __LINE__); char* memory6 = allocator->alloc_memory(1, __FILE__, __LINE__); char* memory7 = allocator->alloc_memory(100, __FILE__, __LINE__); allocator->free_memory(memory6, 1, __FILE__, __LINE__); allocator->free_memory(memory7, 100, __FILE__, __LINE__); LONGS_EQUAL(7, accountant.totalAllocations()); LONGS_EQUAL(7, accountant.totalDeallocations()); } TEST(AccountingTestMemoryAllocator, useOriginalAllocatorWhenDeallocatingMemoryNotAllocatedByAllocator) { char* memory = getCurrentMallocAllocator()->alloc_memory(10, __FILE__, __LINE__); allocator->free_memory(memory, 10, __FILE__, __LINE__); LONGS_EQUAL(0, accountant.totalAllocations()); LONGS_EQUAL(1, accountant.totalDeallocations()); } TEST(AccountingTestMemoryAllocator, allocatorForwardsAllocAndFreeName) { STRCMP_EQUAL("malloc", allocator->alloc_name()); STRCMP_EQUAL("free", allocator->free_name()); } class GlobalMemoryAccountantExecFunction : public ExecFunction { public: void (*testFunction_)(GlobalMemoryAccountant*); GlobalMemoryAccountant* parameter_; virtual void exec() _override { testFunction_(parameter_); } }; TEST_GROUP(GlobalMemoryAccountant) { GlobalMemoryAccountant accountant; TestTestingFixture fixture; GlobalMemoryAccountantExecFunction testFunction; GlobalMemoryAllocatorStash stash; void setup() { testFunction.parameter_ = &accountant; fixture.setTestFunction(&testFunction); stash.save(); } void teardown() { stash.restore(); } }; TEST(GlobalMemoryAccountant, start) { accountant.start(); POINTERS_EQUAL(accountant.getMallocAllocator(), getCurrentMallocAllocator()); POINTERS_EQUAL(accountant.getNewAllocator(), getCurrentNewAllocator()); POINTERS_EQUAL(accountant.getNewArrayAllocator(), getCurrentNewArrayAllocator()); accountant.stop(); } TEST(GlobalMemoryAccountant, stop) { TestMemoryAllocator* originalMallocAllocator = getCurrentMallocAllocator(); TestMemoryAllocator* originalNewAllocator = getCurrentNewAllocator(); TestMemoryAllocator* originalNewArrayAllocator = getCurrentNewArrayAllocator(); accountant.start(); accountant.stop(); POINTERS_EQUAL(originalMallocAllocator, getCurrentMallocAllocator()); POINTERS_EQUAL(originalNewAllocator, getCurrentNewAllocator()); POINTERS_EQUAL(originalNewArrayAllocator, getCurrentNewArrayAllocator()); } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(GlobalMemoryAccountant, report) { accountant.start(); char* memory = new char[185]; delete [] memory; accountant.stop(); /* Allocation includes memory leak info */ STRCMP_CONTAINS("1 1 1", accountant.report().asCharString()); } TEST(GlobalMemoryAccountant, reportWithCacheSizes) { size_t cacheSizes[] = {512}; accountant.useCacheSizes(cacheSizes, 1); accountant.start(); char* memory = new char[185]; delete [] memory; accountant.stop(); /* Allocation includes memory leak info */ STRCMP_CONTAINS("512 1 1 1", accountant.report().asCharString()); } #endif static void _failStopWithoutStartingWillFail(GlobalMemoryAccountant* accountant) { accountant->stop(); } TEST(GlobalMemoryAccountant, StopCantBeCalledWithoutStarting) { testFunction.testFunction_ = _failStopWithoutStartingWillFail; fixture.runAllTests(); fixture.assertPrintContains("GlobalMemoryAccount: Stop called without starting"); } static void _failStartingTwiceWillFail(GlobalMemoryAccountant* accountant) { accountant->start(); accountant->start(); } TEST(GlobalMemoryAccountant, startTwiceWillFail) { testFunction.testFunction_ = _failStartingTwiceWillFail; fixture.runAllTests(); accountant.stop(); fixture.assertPrintContains("Global allocator start called twice!"); } static void _failChangeMallocMemoryAllocator(GlobalMemoryAccountant* accountant) { accountant->start(); setCurrentMallocAllocator(defaultMallocAllocator()); accountant->stop(); } TEST(GlobalMemoryAccountant, checkWhetherMallocAllocatorIsNotChanged) { testFunction.testFunction_ = _failChangeMallocMemoryAllocator; fixture.runAllTests(); fixture.assertPrintContains("GlobalMemoryAccountant: Malloc memory allocator has been changed while accounting for memory"); } static void _failChangeNewMemoryAllocator(GlobalMemoryAccountant* accountant) { accountant->start(); setCurrentNewAllocator(defaultNewAllocator()); accountant->stop(); } TEST(GlobalMemoryAccountant, checkWhetherNewAllocatorIsNotChanged) { testFunction.testFunction_ = _failChangeNewMemoryAllocator; fixture.runAllTests(); fixture.assertPrintContains("GlobalMemoryAccountant: New memory allocator has been changed while accounting for memory"); } static void _failChangeNewArrayMemoryAllocator(GlobalMemoryAccountant* accountant) { accountant->start(); setCurrentNewArrayAllocator(defaultNewArrayAllocator()); accountant->stop(); } TEST(GlobalMemoryAccountant, checkWhetherNewArrayAllocatorIsNotChanged) { testFunction.testFunction_ = _failChangeNewArrayMemoryAllocator; fixture.runAllTests(); fixture.assertPrintContains("GlobalMemoryAccountant: New Array memory allocator has been changed while accounting for memory"); } cpputest-4.0/tests/CppUTest/TeamCityOutputTest.cpp000644 000765 000024 00000014223 13663176127 023351 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TeamCityTestOutput.h" #include "CppUTest/PlatformSpecificFunctions.h" class TeamCityOutputToBuffer : public TeamCityTestOutput { public: explicit TeamCityOutputToBuffer() { } virtual ~TeamCityOutputToBuffer() _destructor_override { } void printBuffer(const char* s) _override { output += s; } void flush() _override { output = ""; } const SimpleString& getOutput() { return output; } private: SimpleString output; }; static long millisTime; extern "C" { static long MockGetPlatformSpecificTimeInMillis() { return millisTime; } } TEST_GROUP(TeamCityOutputTest) { TeamCityTestOutput* tcout; TeamCityOutputToBuffer* mock; UtestShell* tst; TestFailure *f, *f2, *f3; TestResult* result; void setup() { mock = new TeamCityOutputToBuffer(); tcout = mock; tst = new UtestShell("group", "test", "file", 10); f = new TestFailure(tst, "failfile", 20, "failure message"); f2 = new TestFailure(tst, "file", 20, "message"); f3 = new TestFailure(tst, "file", 30, "apos' pipe| [brackets]\r\nCRLF"); result = new TestResult(*mock); result->setTotalExecutionTime(10); millisTime = 0; UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); } void teardown() { delete tcout; delete tst; delete f; delete f2; delete f3; delete result; } }; TEST(TeamCityOutputTest, PrintGroupStarted) { result->currentGroupStarted(tst); STRCMP_EQUAL("##teamcity[testSuiteStarted name='group']\n", mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintGroupStartedAndEnded) { const char* expected = "##teamcity[testSuiteStarted name='group']\n" "##teamcity[testSuiteFinished name='group']\n"; result->currentGroupStarted(tst); result->currentGroupEnded(tst); STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintGroupEndedButNotStarted) { result->currentGroupEnded(tst); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintTestStarted) { tcout->printCurrentTestStarted(*tst); STRCMP_EQUAL("##teamcity[testStarted name='test']\n", mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintTestStartedAndEnded) { result->currentTestStarted(tst); millisTime = 42; result->currentTestEnded(tst); STRCMP_EQUAL("##teamcity[testStarted name='test']\n##teamcity[testFinished name='test' duration='42']\n", mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintTestEndedButNotStarted) { result->currentTestEnded(tst); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintTestIgnored) { const char* expected = "##teamcity[testStarted name='test']\n" "##teamcity[testIgnored name='test']\n" "##teamcity[testFinished name='test' duration='41']\n"; IgnoredUtestShell* itst = new IgnoredUtestShell("group", "test", "file", 10); result->currentTestStarted(itst); millisTime = 41; result->currentTestEnded(itst); STRCMP_EQUAL(expected, mock->getOutput().asCharString()); delete itst; } TEST(TeamCityOutputTest, PrintWithFailureInSameFile) { tcout->printFailure(*f2); const char* expected = "##teamcity[testFailed name='test' message='file:20' " "details='message']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintWithEscapedCharacters) { tcout->printFailure(*f3); const char* expected = "##teamcity[testFailed name='test' message='file:30' " "details='apos|' pipe|| |[brackets|]" "|r|nCRLF']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, PrintFailureWithFailInDifferentFile) { tcout->printFailure(*f); const char* expected = "##teamcity[testFailed name='test' message='TEST failed (file:10): failfile:20' " "details='failure message']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestGroupEscaped_Start) { tst->setGroupName("'[]\n\r"); result->currentGroupStarted(tst); const char* expected = "##teamcity[testSuiteStarted name='|'|[|]|n|r']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestGroupEscaped_End) { tst->setGroupName("'[]\n\r"); result->currentGroupStarted(tst); result->currentGroupEnded(tst); const char* expected = "##teamcity[testSuiteStarted name='|'|[|]|n|r']\n" "##teamcity[testSuiteFinished name='|'|[|]|n|r']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestNameEscaped_Start) { tst->setTestName("'[]\n\r"); result->currentTestStarted(tst); const char* expected = "##teamcity[testStarted name='|'|[|]|n|r']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestNameEscaped_End) { tst->setTestName("'[]\n\r"); result->currentTestStarted(tst); result->currentTestEnded(tst); const char* expected = "##teamcity[testStarted name='|'|[|]|n|r']\n" "##teamcity[testFinished name='|'|[|]|n|r' duration='0']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestNameEscaped_Ignore) { IgnoredUtestShell itst("group", "'[]\n\r", "file", 10); result->currentTestStarted(&itst); const char* expected = "##teamcity[testStarted name='|'|[|]|n|r']\n" "##teamcity[testIgnored name='|'|[|]|n|r']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TeamCityOutputTest, TestNameEscaped_Fail) { tst->setTestName("'[]\n\r"); TestFailure fail(tst, "failfile", 20, "failure message"); tcout->printFailure(fail); const char* expected = "##teamcity[testFailed name='|'|[|]|n|r' message='TEST failed (file:10): failfile:20' " "details='failure message']\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } /* Todo: * -Detect when running in TeamCity and switch output to -o teamcity automatically */ cpputest-4.0/tests/CppUTest/SimpleStringCacheTest.cpp000644 000765 000024 00000027516 13663176127 023766 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleStringInternalCache.h" #include "CppUTest/TestTestingFixture.h" class TestFunctionWithCache : public ExecFunction { public: void (*testFunction)(SimpleStringInternalCache*, size_t); SimpleStringInternalCache* parameter; size_t allocationSize; void exec() _override { testFunction(parameter, allocationSize); } }; TEST_GROUP(SimpleStringInternalCache) { SimpleStringInternalCache cache; MemoryAccountant accountant; MemoryLeakAllocator* defaultAllocator; AccountingTestMemoryAllocator* allocator; TestFunctionWithCache testFunction; TestTestingFixture fixture; void setup() { fixture.setTestFunction(&testFunction); testFunction.parameter = &cache; defaultAllocator = new MemoryLeakAllocator(defaultMallocAllocator()); allocator = new AccountingTestMemoryAllocator(accountant, defaultAllocator); cache.setAllocator(defaultAllocator); } void teardown() { cache.clearAllIncludingCurrentlyUsedMemory(); accountant.clear(); delete allocator; delete defaultAllocator; } void createCacheForSize(size_t size, size_t amount) { for (size_t i = 0; i < amount; i++) { char* memory = cache.alloc(size); cache.dealloc(memory, size); } } }; TEST(SimpleStringInternalCache, cacheHitWithOneEntry) { createCacheForSize(10, 1); cache.setAllocator(allocator); char* mem = cache.alloc(10); mem[0] = 'B'; mem[3] = 'A'; mem[9] = 'S'; cache.setAllocator(allocator->originalAllocator()); LONGS_EQUAL(0, accountant.totalAllocationsOfSize(10)); CHECK(!cache.hasFreeBlocksOfSize(10)); cache.setAllocator(allocator); } TEST(SimpleStringInternalCache, cacheHitWithTwoEntries) { createCacheForSize(10, 2); cache.setAllocator(allocator); cache.alloc(10); cache.alloc(10); cache.setAllocator(allocator->originalAllocator()); LONGS_EQUAL(0, accountant.totalAllocationsOfSize(10)); CHECK(!cache.hasFreeBlocksOfSize(10)); cache.setAllocator(allocator); } TEST(SimpleStringInternalCache, allocatingMoreThanCacheAvailable) { createCacheForSize(10, 1); cache.setAllocator(allocator); cache.alloc(10); cache.alloc(10); cache.setAllocator(allocator->originalAllocator()); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(32)); CHECK(!cache.hasFreeBlocksOfSize(10)); cache.setAllocator(allocator); } TEST(SimpleStringInternalCache, allocationWillReuseTheAllocatedBlocks) { cache.setAllocator(allocator); char* mem = cache.alloc(10); cache.dealloc(mem, 10); mem = cache.alloc(10); cache.dealloc(mem, 10); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(32)); } TEST(SimpleStringInternalCache, multipleDifferentSizeAllocationsAndDeallocations) { cache.setAllocator(allocator); char* mem10 = cache.alloc(10); char* mem11 = cache.alloc(11); char* mem100 = cache.alloc(100); cache.dealloc(mem100, 100); char* mem101 = cache.alloc(101); char* mem102 = cache.alloc(102); char* mem103 = cache.alloc(103); cache.dealloc(mem101, 102); cache.dealloc(mem102, 103); cache.dealloc(mem103, 104); cache.alloc(105); cache.alloc(106); cache.alloc(107); cache.dealloc(mem10, 10); cache.dealloc(mem11, 11); LONGS_EQUAL(2, accountant.totalAllocationsOfSize(32)); LONGS_EQUAL(3, accountant.totalAllocationsOfSize(128)); } TEST(SimpleStringInternalCache, deallocOfCachedMemoryWillNotDealloc) { cache.setAllocator(allocator); char* mem = cache.alloc(10); cache.dealloc(mem, 10); LONGS_EQUAL(0, accountant.totalDeallocationsOfSize(32)); } TEST(SimpleStringInternalCache, clearCacheWillRemoveAllCachedMemoryButNotAllUsedMemory) { cache.setAllocator(allocator); char* mem = cache.alloc(10); cache.dealloc(mem, 10); mem = cache.alloc(60); cache.clearCache(); LONGS_EQUAL(1, accountant.totalDeallocationsOfSize(32)); LONGS_EQUAL(0, accountant.totalDeallocationsOfSize(64)); } TEST(SimpleStringInternalCache, clearAllIncludingCurrentlyUsedMemory) { cache.setAllocator(allocator); cache.alloc(60); cache.clearAllIncludingCurrentlyUsedMemory(); LONGS_EQUAL(1, accountant.totalDeallocationsOfSize(64)); } TEST(SimpleStringInternalCache, allocatingLargerStringThanCached) { cache.setAllocator(allocator); char* mem = cache.alloc(1234); cache.dealloc(mem, 1234); LONGS_EQUAL(1, accountant.totalAllocationsOfSize(1234)); LONGS_EQUAL(1, accountant.totalDeallocationsOfSize(1234)); } TEST(SimpleStringInternalCache, allocatingMultipleLargerStringThanCached) { cache.setAllocator(allocator); char* mem = cache.alloc(1234); char* mem2 = cache.alloc(1234); char* mem3 = cache.alloc(1234); cache.dealloc(mem2, 1234); cache.dealloc(mem, 1234); cache.dealloc(mem3, 1234); LONGS_EQUAL(3, accountant.totalAllocationsOfSize(1234)); LONGS_EQUAL(3, accountant.totalDeallocationsOfSize(1234)); } TEST(SimpleStringInternalCache, clearAllIncludingCurrentlyUsedMemoryAlsoReleasesLargeNonCachesMemory) { cache.setAllocator(allocator); cache.alloc(1234); cache.alloc(1234); cache.alloc(1234); cache.clearAllIncludingCurrentlyUsedMemory(); LONGS_EQUAL(3, accountant.totalAllocationsOfSize(1234)); LONGS_EQUAL(3, accountant.totalDeallocationsOfSize(1234)); } static void _deallocatingStringMemoryThatWasntAllocatedWithCache(SimpleStringInternalCache* cache, size_t allocationSize) { char* mem = defaultMallocAllocator()->alloc_memory(allocationSize, __FILE__, __LINE__); mem[0] = 'B'; mem[1] = 'a'; mem[2] = 's'; mem[3] = '\0'; cache->dealloc(mem, allocationSize); defaultMallocAllocator()->free_memory(mem, allocationSize, __FILE__, __LINE__); } TEST(SimpleStringInternalCache, deallocatingMemoryThatWasntAllocatedWhileCacheWasInPlaceProducesWarning) { testFunction.testFunction = _deallocatingStringMemoryThatWasntAllocatedWithCache; testFunction.allocationSize = 123; cache.setAllocator(allocator); fixture.runAllTests(); fixture.assertPrintContains("\nWARNING: Attempting to deallocate a String buffer that was allocated while not caching. Ignoring it!\n" "This is likely due statics and will cause problems.\n" "Only warning once to avoid recursive warnings.\n" "String we are deallocating: \"Bas\"\n"); } static void _deallocatingStringMemoryTwiceThatWasntAllocatedWithCache(SimpleStringInternalCache* cache, size_t allocationSize) { char* mem = defaultMallocAllocator()->alloc_memory(allocationSize, __FILE__, __LINE__); mem[0] = '\0'; cache->dealloc(mem, allocationSize); cache->dealloc(mem, allocationSize); defaultMallocAllocator()->free_memory(mem, allocationSize, __FILE__, __LINE__); } TEST(SimpleStringInternalCache, deallocatingMemoryThatWasntAllocatedWhileCacheWasInPlaceProducesWarningButOnlyOnce) { testFunction.testFunction = _deallocatingStringMemoryTwiceThatWasntAllocatedWithCache; testFunction.allocationSize = 123; cache.setAllocator(allocator); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getOutput().count("WARNING")); } TEST(SimpleStringInternalCache, deallocatingLargeMemoryThatWasntAllocatedWhileCacheWasInPlaceProducesWarning) { testFunction.testFunction = _deallocatingStringMemoryThatWasntAllocatedWithCache; testFunction.allocationSize = 12345; cache.setAllocator(allocator); fixture.runAllTests(); fixture.assertPrintContains("\nWARNING: Attempting to deallocate a String buffer that was allocated while not caching. Ignoring it!\n" "This is likely due statics and will cause problems.\n" "Only warning once to avoid recursive warnings.\n" "String we are deallocating: \"Bas\"\n"); } TEST(SimpleStringInternalCache, deallocatingLargeMemoryThatWasntAllocatedWhileCacheWasInPlaceProducesWarningButOnlyOnce) { testFunction.testFunction = _deallocatingStringMemoryTwiceThatWasntAllocatedWithCache; testFunction.allocationSize = 12345; cache.setAllocator(allocator); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getOutput().count("WARNING")); } TEST_GROUP(SimpleStringCacheAllocator) { SimpleStringCacheAllocator* allocator; SimpleStringInternalCache cache; MemoryAccountant accountant; AccountingTestMemoryAllocator* accountingAllocator; void setup() { accountingAllocator = new AccountingTestMemoryAllocator(accountant, defaultMallocAllocator()); allocator = new SimpleStringCacheAllocator(cache, accountingAllocator); } void teardown() { cache.clearCache(); delete allocator; delete accountingAllocator; } }; TEST(SimpleStringCacheAllocator, allocationIsCached) { char* mem = allocator->alloc_memory(10, __FILE__, __LINE__); allocator->free_memory(mem, 10, __FILE__, __LINE__); size_t totalAllocations = accountant.totalAllocations(); size_t totalDeallocations = accountant.totalDeallocations(); mem = allocator->alloc_memory(10, __FILE__, __LINE__); allocator->free_memory(mem, 10, __FILE__, __LINE__); LONGS_EQUAL(totalAllocations, accountant.totalAllocations()); LONGS_EQUAL(totalDeallocations, accountant.totalDeallocations()); } TEST(SimpleStringCacheAllocator, originalAllocator) { POINTERS_EQUAL(defaultMallocAllocator(), allocator->actualAllocator()); STRCMP_EQUAL(defaultMallocAllocator()->alloc_name(), allocator->alloc_name()); STRCMP_EQUAL(defaultMallocAllocator()->free_name(), allocator->free_name()); } TEST(SimpleStringCacheAllocator, name) { STRCMP_EQUAL("SimpleStringCacheAllocator", allocator->name()); } TEST_GROUP(GlobalSimpleStringCache) { }; TEST(GlobalSimpleStringCache, installsAndRemovedCache) { TestMemoryAllocator* originalStringAllocator = SimpleString::getStringAllocator(); { GlobalSimpleStringCache cache; STRCMP_EQUAL("SimpleStringCacheAllocator", SimpleString::getStringAllocator()->name()); POINTERS_EQUAL(cache.getAllocator(), SimpleString::getStringAllocator()); } POINTERS_EQUAL(originalStringAllocator, SimpleString::getStringAllocator()); } cpputest-4.0/tests/CppUTest/PreprocessorTest.cpp000644 000765 000024 00000003212 13663176127 023073 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" TEST_GROUP(PreprocessorTest) { }; cpputest-4.0/tests/CppUTest/TestFilterTest.cpp000644 000765 000024 00000012133 13663176127 022474 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestFilter.h" TEST_GROUP(TestFilter) { }; TEST(TestFilter, emptyFilterMatchesEverything) { TestFilter filter; CHECK(filter.match("random_name")); CHECK(filter.match("")); CHECK(filter.match("*&%#^&%$(*&^@#(&*@#^(&*$^@#")); } TEST(TestFilter, defaultAbsoluteMismatches) { TestFilter filter("filtername"); CHECK(!filter.match("notevenclose")); CHECK(!filter.match("filterrname")); CHECK(!filter.match("")); } TEST(TestFilter, strictMatching) { TestFilter filter("filter"); filter.strictMatching(); CHECK(filter.match("filter")); CHECK(!filter.match("filterr")); CHECK(!filter.match(" filter")); } TEST(TestFilter, invertMatching) { TestFilter filter("filter"); filter.invertMatching(); CHECK(!filter.match("filter")); CHECK(!filter.match("filterr")); CHECK(filter.match("notevenclose")); CHECK(filter.match("")); } TEST(TestFilter, invertStrictMatching) { TestFilter filter("filter"); filter.invertMatching(); filter.strictMatching(); CHECK(!filter.match("filter")); CHECK(filter.match("filterr")); CHECK(filter.match(" filter")); } TEST(TestFilter, equality) { TestFilter filter1("filter"); TestFilter filter2("filter"); TestFilter filter3("filter3"); CHECK(filter1 == filter2); CHECK(! (filter1 == filter3)); } TEST(TestFilter, equalityWithStrictness) { TestFilter filter1("filter"); TestFilter filter2("filter"); filter2.strictMatching(); CHECK(! (filter1 == filter2)); } TEST(TestFilter, equalityWithInvertion) { TestFilter filter1("filter"); TestFilter filter2("filter"); filter2.invertMatching(); CHECK(! (filter1 == filter2)); } TEST(TestFilter, notEqual) { TestFilter filter1("filter"); TestFilter filter2("filter"); TestFilter filter3("filter3"); CHECK(filter1 != filter3); CHECK(! (filter1 != filter2)); } TEST(TestFilter, stringFrom) { TestFilter filter("filter"); STRCMP_EQUAL("TestFilter: \"filter\"", StringFrom(filter).asCharString()); } TEST(TestFilter, stringFromWithStrictMatching) { TestFilter filter("filter"); filter.strictMatching(); STRCMP_EQUAL("TestFilter: \"filter\" with strict matching", StringFrom(filter).asCharString()); } TEST(TestFilter, stringFromWithInvertMatching) { TestFilter filter("filter"); filter.invertMatching(); STRCMP_EQUAL("TestFilter: \"filter\" with invert matching", StringFrom(filter).asCharString()); } TEST(TestFilter, stringFromWithStrictInvertMatching) { TestFilter filter("filter"); filter.strictMatching(); filter.invertMatching(); STRCMP_EQUAL("TestFilter: \"filter\" with strict, invert matching", StringFrom(filter).asCharString()); } TEST(TestFilter, listOfFilters) { TestFilter *listOfFilters = NULLPTR; TestFilter first("foo"); TestFilter secnd("bar"); listOfFilters = first.add(listOfFilters); listOfFilters = secnd.add(listOfFilters); TestFilter *current = listOfFilters; STRCMP_EQUAL("TestFilter: \"bar\"", StringFrom(*current).asCharString()); current = current->getNext(); STRCMP_EQUAL("TestFilter: \"foo\"", StringFrom(*current).asCharString()); POINTERS_EQUAL(NULLPTR, current->getNext()); } TEST(TestFilter, constructors) { TestFilter filter1; TestFilter filter2(SimpleString("a")); TestFilter filter3("a"); CHECK(filter1.getNext() == NULLPTR); CHECK(filter2.getNext() == NULLPTR); CHECK(filter3.getNext() == NULLPTR); CHECK(filter2.match("ab")); CHECK(filter3.match("ab")); } cpputest-4.0/tests/CppUTest/MemoryLeakWarningTest.cpp000644 000765 000024 00000040767 13663176127 024020 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/MemoryLeakWarningPlugin.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/TestHarness_c.h" #include "CppUTest/SimpleMutex.h" #include "DummyMemoryLeakDetector.h" TEST_GROUP(MemoryLeakWarningLocalDetectorTest) { DummyMemoryLeakFailure dummy; }; TEST(MemoryLeakWarningLocalDetectorTest, localDetectorReturnsNewGlobalWhenNoneWasSet) { MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", NULLPTR); CHECK(NULLPTR != memoryLeakWarningPlugin.getMemoryLeakDetector()); } TEST(MemoryLeakWarningLocalDetectorTest, localDetectorIsTheOneSpecifiedInConstructor) { MemoryLeakDetector localDetector(&dummy); MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", &localDetector); POINTERS_EQUAL(&localDetector, memoryLeakWarningPlugin.getMemoryLeakDetector()); } TEST(MemoryLeakWarningLocalDetectorTest, localDetectorIsGlobalDetector) { MemoryLeakDetector* globalDetector = MemoryLeakWarningPlugin::getGlobalDetector(); MemoryLeakWarningPlugin memoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", NULLPTR); MemoryLeakDetector* localDetector = memoryLeakWarningPlugin.getMemoryLeakDetector(); POINTERS_EQUAL(globalDetector, localDetector); } static char* leak1; static long* leak2; static MemoryLeakDetector* detector; static MemoryLeakWarningPlugin* memPlugin; static TestMemoryAllocator* allocator; TEST_GROUP(MemoryLeakWarningTest) { DummyMemoryLeakFailure dummy; TestTestingFixture* fixture; void setup() { fixture = new TestTestingFixture(); detector = new MemoryLeakDetector(&dummy); allocator = new TestMemoryAllocator; memPlugin = new MemoryLeakWarningPlugin("TestMemoryLeakWarningPlugin", detector); fixture->installPlugin(memPlugin); memPlugin->enable(); leak1 = NULLPTR; leak2 = NULLPTR; } void teardown() { detector->deallocMemory(allocator, leak1); detector->deallocMemory(allocator, leak2); delete fixture; delete memPlugin; delete detector; delete allocator; } }; static void _testTwoLeaks() { leak1 = detector->allocMemory(allocator, 10); leak2 = (long*) (void*) detector->allocMemory(allocator, 4); } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(MemoryLeakWarningTest, TwoLeaks) { fixture->setTestFunction(_testTwoLeaks); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } #else TEST(MemoryLeakWarningTest, TwoLeaks) { fixture->setTestFunction(_testTwoLeaks); fixture->runAllTests(); LONGS_EQUAL(0, fixture->getFailureCount()); } #endif static void _testLeakWarningWithPluginDisabled() { memPlugin->expectLeaksInTest(1); leak1 = (char*) cpputest_malloc_location_with_leak_detection(10, __FILE__, __LINE__); } TEST(MemoryLeakWarningTest, LeakWarningWithPluginDisabled) { fixture->setTestFunction(_testLeakWarningWithPluginDisabled); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); fixture->runAllTests(); LONGS_EQUAL(0, fixture->getFailureCount()); fixture->assertPrintContains("Warning: Expected 1 leak(s), but leak detection was disabled"); cpputest_free_location_with_leak_detection(leak1, __FILE__, __LINE__); leak1 = NULLPTR; MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); } static void _testIgnore2() { memPlugin->expectLeaksInTest(2); leak1 = detector->allocMemory(allocator, 10); leak2 = (long*) (void*) detector->allocMemory(allocator, 4); } TEST(MemoryLeakWarningTest, Ignore2) { fixture->setTestFunction(_testIgnore2); fixture->runAllTests(); LONGS_EQUAL(0, fixture->getFailureCount()); } static void _failAndLeakMemory() { leak1 = detector->allocMemory(allocator, 10); FAIL(""); } TEST(MemoryLeakWarningTest, FailingTestDoesNotReportMemoryLeaks) { fixture->setTestFunction(_failAndLeakMemory); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); } static bool cpputestHasCrashed; TEST_GROUP(MemoryLeakWarningGlobalDetectorTest) { MemoryLeakDetector* detector; MemoryLeakFailure* failureReporter; DummyMemoryLeakDetector * dummyDetector; MemoryLeakFailure* dummyReporter; GlobalMemoryAllocatorStash memoryAllocatorStash; static void crashMethod() { cpputestHasCrashed = true; } void setup() { memoryAllocatorStash.save(); detector = MemoryLeakWarningPlugin::getGlobalDetector(); failureReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); dummyReporter = new DummyMemoryLeakFailure; dummyDetector = new DummyMemoryLeakDetector(dummyReporter); UtestShell::setCrashMethod(crashMethod); cpputestHasCrashed = false; } void teardown() { MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); if (!DummyMemoryLeakDetector::wasDeleted()) delete dummyDetector; if (!DummyMemoryLeakFailure::wasDeleted()) delete dummyReporter; MemoryLeakWarningPlugin::setGlobalDetector(detector, failureReporter); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); UtestShell::resetCrashMethod(); memoryAllocatorStash.restore(); } }; TEST(MemoryLeakWarningGlobalDetectorTest, turnOffNewOverloadsCausesNoAdditionalLeaks) { size_t storedAmountOfLeaks = detector->totalMemoryLeaks(mem_leak_period_all); char* arrayMemory = new char[100]; char* nonArrayMemory = new char; char* mallocMemory = (char*) cpputest_malloc_location_with_leak_detection(10, "file", 10); char* reallocMemory = (char*) cpputest_realloc_location_with_leak_detection(NULLPTR, 10, "file", 10); LONGS_EQUAL(storedAmountOfLeaks, detector->totalMemoryLeaks(mem_leak_period_all)); cpputest_free_location_with_leak_detection(mallocMemory, "file", 10); cpputest_free_location_with_leak_detection(reallocMemory, "file", 10); delete [] arrayMemory; delete nonArrayMemory; } TEST(MemoryLeakWarningGlobalDetectorTest, destroyGlobalDetector) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::destroyGlobalDetector(); CHECK(DummyMemoryLeakDetector::wasDeleted()); CHECK(DummyMemoryLeakFailure::wasDeleted()); } TEST(MemoryLeakWarningGlobalDetectorTest, MemoryWarningPluginCanBeSetToDestroyTheGlobalDetector) { MemoryLeakWarningPlugin* plugin = new MemoryLeakWarningPlugin("dummy"); plugin->destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(true); MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); delete plugin; CHECK(DummyMemoryLeakDetector::wasDeleted()); } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorNew) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = new char[100]; CHECK(cpputestHasCrashed); delete [] memory; MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorNewArray) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = new char; CHECK(cpputestHasCrashed); delete memory; MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, crashOnLeakWithOperatorMalloc) { MemoryLeakWarningPlugin::setGlobalDetector(dummyDetector, dummyReporter); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); crash_on_allocation_number(1); char* memory = (char*) cpputest_malloc(10); CHECK(cpputestHasCrashed); cpputest_free(memory); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, gettingTheGlobalDetectorDoesNotRestoreTheMemoryLeakOverloadsWhenTheyWereAlreadyOff) { MemoryLeakWarningPlugin::setGlobalDetector(NULLPTR, NULLPTR); MemoryLeakDetector* temporaryDetector = MemoryLeakWarningPlugin::getGlobalDetector(); MemoryLeakFailure* temporaryReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); bool areNewDeleteOverloaded = MemoryLeakWarningPlugin::areNewDeleteOverloaded(); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); CHECK(!areNewDeleteOverloaded); delete temporaryReporter; delete temporaryDetector; MemoryLeakWarningPlugin::setGlobalDetector(NULLPTR, NULLPTR); } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOn) { MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); CHECK(MemoryLeakWarningPlugin::areNewDeleteOverloaded()); MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOff) { MemoryLeakWarningPlugin::turnOffNewDeleteOverloads(); bool areNewDeleteOverloaded = MemoryLeakWarningPlugin::areNewDeleteOverloaded(); MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); CHECK(!areNewDeleteOverloaded); } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOnWithRestore) { MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); CHECK(MemoryLeakWarningPlugin::areNewDeleteOverloaded()); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, checkIfTheMemoryLeakOverloadsAreOffWithSaveDisable) { MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); CHECK(!MemoryLeakWarningPlugin::areNewDeleteOverloaded()); MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); } TEST(MemoryLeakWarningGlobalDetectorTest, threadSafeMemoryLeakDetectorOverloadsAreAlsoOverloaded) { MemoryLeakWarningPlugin::restoreNewDeleteOverloads(); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); CHECK(MemoryLeakWarningPlugin::areNewDeleteOverloaded()); MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); MemoryLeakWarningPlugin::saveAndDisableNewDeleteOverloads(); } #endif #if CPPUTEST_USE_STD_CPP_LIB TEST(MemoryLeakWarningGlobalDetectorTest, turnOffNewOverloadsNoThrowCausesNoAdditionalLeaks) { #undef new size_t storedAmountOfLeaks = detector->totalMemoryLeaks(mem_leak_period_all); char* nonMemoryNoThrow = new (std::nothrow) char; char* nonArrayMemoryNoThrow = new (std::nothrow) char[10]; char* nonArrayMemoryThrow = new char[10]; LONGS_EQUAL(storedAmountOfLeaks, detector->totalMemoryLeaks(mem_leak_period_all)); ::operator delete(nonMemoryNoThrow, std::nothrow); ::operator delete[](nonArrayMemoryNoThrow, std::nothrow); ::operator delete[](nonArrayMemoryThrow, std::nothrow); #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #if CPPUTEST_USE_MEM_LEAK_DETECTION static int mutexLockCount = 0; static int mutexUnlockCount = 0; static void StubMutexLock(PlatformSpecificMutex) { mutexLockCount++; } static void StubMutexUnlock(PlatformSpecificMutex) { mutexUnlockCount++; } TEST_GROUP(MemoryLeakWarningThreadSafe) { void setup() { UT_PTR_SET(PlatformSpecificMutexLock, StubMutexLock); UT_PTR_SET(PlatformSpecificMutexUnlock, StubMutexUnlock); mutexLockCount = 0; mutexUnlockCount = 0; } void teardown() { } }; TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeMallocFreeReallocOverloadsDebug) { size_t storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = (int*) cpputest_malloc(sizeof(int)); LONGS_EQUAL(storedAmountOfLeaks + 1, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(1, mutexLockCount); CHECK_EQUAL(1, mutexUnlockCount); n = (int*) cpputest_realloc(n, sizeof(int)*3); LONGS_EQUAL(storedAmountOfLeaks + 1, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(2, mutexLockCount); CHECK_EQUAL(2, mutexUnlockCount); cpputest_free(n); LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(3, mutexLockCount); CHECK_EQUAL(3, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); } TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloadsDebug) { size_t storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = new int; char *str = new char[20]; LONGS_EQUAL(storedAmountOfLeaks + 2, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(2, mutexLockCount); CHECK_EQUAL(2, mutexUnlockCount); delete [] str; delete n; LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(4, mutexLockCount); CHECK_EQUAL(4, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); } #ifdef __clang__ IGNORE_TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloads) { /* Clang misbehaves with -O2 - it will not overload operator new or * operator new[] no matter what. Therefore, this test is must be ignored. */ } #else TEST(MemoryLeakWarningThreadSafe, turnOnThreadSafeNewDeleteOverloads) { #undef new size_t storedAmountOfLeaks = MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all); MemoryLeakWarningPlugin::turnOnThreadSafeNewDeleteOverloads(); int *n = new int; int *n_nothrow = new (std::nothrow) int; char *str = new char[20]; char *str_nothrow = new (std::nothrow) char[20]; LONGS_EQUAL(storedAmountOfLeaks + 4, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(4, mutexLockCount); CHECK_EQUAL(4, mutexUnlockCount); delete [] str_nothrow; delete [] str; delete n; delete n_nothrow; LONGS_EQUAL(storedAmountOfLeaks, MemoryLeakWarningPlugin::getGlobalDetector()->totalMemoryLeaks(mem_leak_period_all)); CHECK_EQUAL(8, mutexLockCount); CHECK_EQUAL(8, mutexUnlockCount); MemoryLeakWarningPlugin::turnOnDefaultNotThreadSafeNewDeleteOverloads(); #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #endif #endif #endif cpputest-4.0/tests/CppUTest/TestFailureTest.cpp000644 000765 000024 00000041003 13663176127 022634 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" namespace { const int failLineNumber = 2; const char* failFileName = "fail.cpp"; } TEST_GROUP(TestFailure) { UtestShell* test; void setup() { test = new UtestShell("groupname", "testname", failFileName, failLineNumber-1); } void teardown() { delete test; } }; #define FAILURE_EQUAL(a, b) STRCMP_EQUAL_LOCATION(a, b.getMessage().asCharString(), "", __FILE__, __LINE__) TEST(TestFailure, CreateFailure) { TestFailure f1(test, failFileName, failLineNumber, "the failure message"); TestFailure f2(test, "the failure message"); TestFailure f3(test, failFileName, failLineNumber); } TEST(TestFailure, GetTestFileAndLineFromFailure) { TestFailure f1(test, failFileName, failLineNumber, "the failure message"); STRCMP_EQUAL(failFileName, f1.getTestFileName().asCharString()); LONGS_EQUAL(1, f1.getTestLineNumber()); } TEST(TestFailure, EqualsFailureWithText) { EqualsFailure f(test, failFileName, failLineNumber, "expected", "actual", "text"); FAILURE_EQUAL("Message: text\n" "\texpected \n\tbut was ", f); } TEST(TestFailure, EqualsFailure) { EqualsFailure f(test, failFileName, failLineNumber, "expected", "actual", ""); FAILURE_EQUAL("expected \n\tbut was ", f); } TEST(TestFailure, EqualsFailureWithNullAsActual) { EqualsFailure f(test, failFileName, failLineNumber, "expected", NULLPTR, ""); FAILURE_EQUAL("expected \n\tbut was <(null)>", f); } TEST(TestFailure, EqualsFailureWithNullAsExpected) { EqualsFailure f(test, failFileName, failLineNumber, NULLPTR, "actual", ""); FAILURE_EQUAL("expected <(null)>\n\tbut was ", f); } TEST(TestFailure, CheckEqualFailureWithText) { CheckEqualFailure f(test, failFileName, failLineNumber, "expected", "actual", "text"); FAILURE_EQUAL("Message: text\n" "\texpected \n" "\tbut was \n" "\tdifference starts at position 0 at: < actual >\n" "\t ^", f); } TEST(TestFailure, CheckEqualFailure) { CheckEqualFailure f(test, failFileName, failLineNumber, "expected", "actual", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 0 at: < actual >\n" "\t ^", f); } TEST(TestFailure, CheckFailure) { CheckFailure f(test, failFileName, failLineNumber, "CHECK", "chk"); FAILURE_EQUAL("CHECK(chk) failed", f); } TEST(TestFailure, CheckFailureWithText) { CheckFailure f(test, failFileName, failLineNumber, "CHECK", "chk", "text"); FAILURE_EQUAL("Message: text\n" "\tCHECK(chk) failed", f); } TEST(TestFailure, FailFailure) { FailFailure f(test, failFileName, failLineNumber, "chk"); FAILURE_EQUAL("chk", f); } TEST(TestFailure, LongsEqualFailureWithText) { LongsEqualFailure f(test, failFileName, failLineNumber, 1, 2, "text"); FAILURE_EQUAL("Message: text\n" "\texpected <1 (0x1)>\n\tbut was <2 (0x2)>", f); } TEST(TestFailure, LongsEqualFailure) { LongsEqualFailure f(test, failFileName, failLineNumber, 1, 2, ""); FAILURE_EQUAL("expected <1 (0x1)>\n\tbut was <2 (0x2)>", f); } TEST(TestFailure, LongLongsEqualFailure) { #ifdef CPPUTEST_USE_LONG_LONG LongLongsEqualFailure f(test, failFileName, failLineNumber, 1, 2, ""); FAILURE_EQUAL("expected <1 (0x1)>\n\tbut was <2 (0x2)>", f); #else cpputest_longlong dummy_longlong; LongLongsEqualFailure f(test, failFileName, failLineNumber, dummy_longlong, dummy_longlong, ""); FAILURE_EQUAL("expected < >\n\tbut was < >", f); #endif } TEST(TestFailure, UnsignedLongLongsEqualFailure) { #ifdef CPPUTEST_USE_LONG_LONG UnsignedLongLongsEqualFailure f(test, failFileName, failLineNumber, 1, 2, ""); FAILURE_EQUAL("expected <1 (0x1)>\n\tbut was <2 (0x2)>", f); #else cpputest_ulonglong dummy_ulonglong; UnsignedLongLongsEqualFailure f(test, failFileName, failLineNumber, dummy_ulonglong, dummy_ulonglong, ""); FAILURE_EQUAL("expected < >\n\tbut was < >", f); #endif } TEST(TestFailure, SignedBytesEqualFailure) { SignedBytesEqualFailure f(test, failFileName, failLineNumber, (signed char)-1, (signed char)2, ""); FAILURE_EQUAL("expected <-1 (0xff)>\n\tbut was < 2 (0x2)>", f); } TEST(TestFailure, StringsEqualFailureWithText) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", "abd", "text"); FAILURE_EQUAL("Message: text\n" "\texpected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailure) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", "abd", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureAtTheEnd) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", "ab", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < ab >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureNewVariantAtTheEnd) { StringEqualFailure f(test, failFileName, failLineNumber, "EndOfALongerString", "EndOfALongerStrinG", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 17 at: \n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureWithNewLinesAndTabs) { StringEqualFailure f(test, failFileName, failLineNumber, "StringWith\t\nDifferentString", "StringWith\t\ndifferentString", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 12 at: \n" "\t \t\n^", f); } TEST(TestFailure, StringsEqualFailureInTheMiddle) { StringEqualFailure f(test, failFileName, failLineNumber, "aa", "ab", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 1 at: < ab >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureAtTheBeginning) { StringEqualFailure f(test, failFileName, failLineNumber, "aaa", "bbb", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 0 at: < bbb >\n" "\t ^", f); } TEST(TestFailure, StringsEqualFailureWithNullAsActual) { StringEqualFailure f(test, failFileName, failLineNumber, "abc", NULLPTR, ""); FAILURE_EQUAL("expected \n" "\tbut was <(null)>", f); } TEST(TestFailure, StringsEqualFailureWithNullAsExpected) { StringEqualFailure f(test, failFileName, failLineNumber, NULLPTR, "abd", ""); FAILURE_EQUAL("expected <(null)>\n" "\tbut was ", f); } TEST(TestFailure, StringsEqualNoCaseFailureWithText) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ABC", "abd", "text"); FAILURE_EQUAL("Message: text\n" "\texpected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualNoCaseFailure) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ABC", "abd", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 2 at: < abd >\n" "\t ^", f); } TEST(TestFailure, StringsEqualNoCaseFailureWithActualAsNull) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ABC", NULLPTR, ""); FAILURE_EQUAL("expected \n" "\tbut was <(null)>", f); } TEST(TestFailure, StringsEqualNoCaseFailureWithExpectedAsNull) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, NULLPTR, "abd", ""); FAILURE_EQUAL("expected <(null)>\n" "\tbut was ", f); } TEST(TestFailure, StringsEqualNoCaseFailure2) { StringEqualNoCaseFailure f(test, failFileName, failLineNumber, "ac", "AB", ""); FAILURE_EQUAL("expected \n" "\tbut was \n" "\tdifference starts at position 1 at: < AB >\n" "\t ^", f); } TEST(TestFailure, DoublesEqualNormalWithText) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, 2.0, 3.0, "text"); FAILURE_EQUAL("Message: text\n" "\texpected <1>\n" "\tbut was <2> threshold used was <3>", f); } TEST(TestFailure, DoublesEqualNormal) { DoublesEqualFailure f(test, failFileName, failLineNumber, 1.0, 2.0, 3.0, ""); FAILURE_EQUAL("expected <1>\n" "\tbut was <2> threshold used was <3>", f); } TEST(TestFailure, BinaryEqualWithText) { const unsigned char expectedData[] = { 0x00 }; const unsigned char actualData[] = { 0x01 }; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), "text"); FAILURE_EQUAL("Message: text\n" "\texpected <00>\n" "\tbut was <01>\n" "\tdifference starts at position 0 at: < 01 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualOneByte) { const unsigned char expectedData[] = { 0x00 }; const unsigned char actualData[] = { 0x01 }; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00>\n" "\tbut was <01>\n" "\tdifference starts at position 0 at: < 01 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualTwoBytes) { const unsigned char expectedData[] = {0x00, 0x01}; const unsigned char actualData[] = {0x00, 0x02}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00 01>\n" "\tbut was <00 02>\n" "\tdifference starts at position 1 at: < 00 02 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualThreeBytes) { const unsigned char expectedData[] = {0x00, 0x01, 0x00}; const unsigned char actualData[] = {0x00, 0x02, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00 01 00>\n" "\tbut was <00 02 00>\n" "\tdifference starts at position 1 at: < 00 02 00 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualFullWidth) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00}; const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00 00 00 01 00 00 00>\n" "\tbut was <00 00 00 02 00 00 00>\n" "\tdifference starts at position 3 at: <00 00 00 02 00 00 00>\n" "\t ^", f); } TEST(TestFailure, BinaryEqualLast) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, actualData, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00 00 00 00 00 00 00>\n" "\tbut was <00 00 00 00 00 00 01>\n" "\tdifference starts at position 6 at: <00 00 00 01 >\n" "\t ^", f); } TEST(TestFailure, BinaryEqualActualNull) { const unsigned char expectedData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; BinaryEqualFailure f(test, failFileName, failLineNumber, expectedData, NULLPTR, sizeof(expectedData), ""); FAILURE_EQUAL("expected <00 00 00 00 00 00 00>\n\tbut was <(null)>", f); } TEST(TestFailure, BinaryEqualExpectedNull) { const unsigned char actualData[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}; BinaryEqualFailure f(test, failFileName, failLineNumber, NULLPTR, actualData, sizeof(actualData), ""); FAILURE_EQUAL("expected <(null)>\n\tbut was <00 00 00 00 00 00 01>", f); } TEST(TestFailure, BitsEqualWithText) { BitsEqualFailure f(test, failFileName, failLineNumber, 0x0001, 0x0003, 0x00FF, 2*8/CPPUTEST_CHAR_BIT, "text"); FAILURE_EQUAL("Message: text\n" "\texpected \n\tbut was ", f); } #if (CPPUTEST_CHAR_BIT == 16) TEST(TestFailure, BitsEqualChar) { BitsEqualFailure f(test, failFileName, failLineNumber, 0x01, 0x03, 0xFF, sizeof(char), ""); FAILURE_EQUAL("expected \n\tbut was ", f); } #else TEST(TestFailure, BitsEqualChar) { BitsEqualFailure f(test, failFileName, failLineNumber, 0x01, 0x03, 0xFF, sizeof(char), ""); FAILURE_EQUAL("expected <00000001>\n\tbut was <00000011>", f); } #endif TEST(TestFailure, BitsEqual16Bit) { BitsEqualFailure f(test, failFileName, failLineNumber, 0x0001, 0x0003, 0xFFFF, 2*8/CPPUTEST_CHAR_BIT, ""); FAILURE_EQUAL("expected <00000000 00000001>\n\tbut was <00000000 00000011>", f); } TEST(TestFailure, BitsEqual32Bit) { BitsEqualFailure f(test, failFileName, failLineNumber, 0x00000001, 0x00000003, 0xFFFFFFFF, 4*8/CPPUTEST_CHAR_BIT, ""); FAILURE_EQUAL("expected <00000000 00000000 00000000 00000001>\n\tbut was <00000000 00000000 00000000 00000011>", f); } TEST(TestFailure, FeatureUnsupported) { FeatureUnsupportedFailure f(test, failFileName, failLineNumber, "SOME_FEATURE", ""); FAILURE_EQUAL("The feature \"SOME_FEATURE\" is not supported in this environment or with the feature set selected when building the library.", f); } cpputest-4.0/tests/CppUTest/AllocLetTestFreeTest.cpp000644 000765 000024 00000001057 13663176127 023553 0ustar00basvoddestaff000000 000000 #include "CppUTest/StandardCLibrary.h" extern "C" { #include "AllocLetTestFree.h" } #include "CppUTest/TestHarness.h" #if CPPUTEST_USE_STD_C_LIB /* * This test makes sure that memory leak malloc macros are forced into .cpp and .c files */ TEST_GROUP(AllocLetTestFree) { AllocLetTestFree allocLetTestFree; void setup() { allocLetTestFree = AllocLetTestFree_Create(); } void teardown() { AllocLetTestFree_Destroy(allocLetTestFree); } }; TEST(AllocLetTestFree, Create) { free(allocLetTestFree); } #endif cpputest-4.0/tests/CppUTest/CommandLineArgumentsTest.cpp000644 000765 000024 00000037713 13663176127 024476 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/CommandLineArguments.h" #include "CppUTest/TestRegistry.h" class OptionsPlugin: public TestPlugin { public: OptionsPlugin(const SimpleString& name) : TestPlugin(name) { } ~OptionsPlugin() _destructor_override { } bool parseArguments(int /*ac*/, const char *const * /*av*/, int /*index*/) _override { return true; } }; TEST_GROUP(CommandLineArguments) { CommandLineArguments* args; OptionsPlugin* plugin; void setup() { plugin = new OptionsPlugin("options"); args = NULLPTR; } void teardown() { delete args; delete plugin; } bool newArgumentParser(int argc, const char *const *argv) { args = new CommandLineArguments(argc, argv); return args->parse(plugin); } }; TEST(CommandLineArguments, Create) { } TEST(CommandLineArguments, verboseSetMultipleParameters) { const char* argv[] = { "tests.exe", "-v" }; CHECK(newArgumentParser(2, argv)); CHECK(args->isVerbose()); } TEST(CommandLineArguments, veryVerbose) { const char* argv[] = { "tests.exe", "-vv" }; CHECK(newArgumentParser(2, argv)); CHECK(args->isVeryVerbose()); } TEST(CommandLineArguments, setColor) { const char* argv[] = { "tests.exe", "-c" }; CHECK(newArgumentParser(2, argv)); CHECK(args->isColor()); } TEST(CommandLineArguments, repeatSet) { int argc = 2; const char* argv[] = { "tests.exe", "-r3" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(3, args->getRepeatCount()); } TEST(CommandLineArguments, repeatSetDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-r", "4" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(4, args->getRepeatCount()); } TEST(CommandLineArguments, repeatSetDefaultsToTwoAndShuffleDisabled) { int argc = 2; const char* argv[] = { "tests.exe", "-r" }; CHECK(newArgumentParser(argc, argv)); LONGS_EQUAL(2, args->getRepeatCount()); } TEST(CommandLineArguments, reverseEnabled) { int argc = 2; const char* argv[] = { "tests.exe", "-b" }; CHECK(newArgumentParser(argc, argv)); CHECK_TRUE(args->isReversing()); } TEST(CommandLineArguments, shuffleDisabledByDefault) { int argc = 1; const char* argv[] = { "tests.exe" }; CHECK(newArgumentParser(argc, argv)); CHECK_FALSE(args->isShuffling()); } TEST(CommandLineArguments, shuffleEnabled) { int argc = 2; const char* argv[] = { "tests.exe", "-s" }; CHECK(newArgumentParser(argc, argv)); CHECK_TRUE(args->isShuffling()); } TEST(CommandLineArguments, shuffleWithSeedZeroIsOk) { int argc = 2; const char* argv[] = { "tests.exe", "-s0" }; CHECK_FALSE(newArgumentParser(argc, argv)); CHECK_EQUAL(0, args->getShuffleSeed()); } TEST(CommandLineArguments, shuffleEnabledSpecificSeedCase1) { int argc = 2; const char* argv[] = { "tests.exe", "-s999"}; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(999, args->getShuffleSeed()); } TEST(CommandLineArguments, shuffleEnabledSpecificSeedCase2) { int argc = 2; const char* argv[] = { "tests.exe", "-s 888"}; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(888, args->getShuffleSeed()); } TEST(CommandLineArguments, shuffleEnabledSpecificSeedCase3) { int argc = 3; const char* argv[] = { "tests.exe", "-s", "777"}; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(777, args->getShuffleSeed()); } TEST(CommandLineArguments, shuffleBeforeDoesNotDisturbOtherSwitch) { int argc = 4; const char* argv[] = { "tests.exe", "-s", "-sg", "group" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); CHECK_TRUE(args->isShuffling()); } TEST(CommandLineArguments, runningTestsInSeperateProcesses) { int argc = 2; const char* argv[] = { "tests.exe", "-p" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->runTestsInSeperateProcess()); } TEST(CommandLineArguments, setGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-g", "group" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("group"), *args->getGroupFilters()); } TEST(CommandLineArguments, setCompleteGroupDotNameFilterInvalidArgument) { int argc = 3; const char* argv[] = { "tests.exe", "-t", "groupname" }; CHECK_FALSE(newArgumentParser(argc, argv)); } TEST(CommandLineArguments, setCompleteGroupDotNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-t", "group.name" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("group"), *args->getGroupFilters()); CHECK_EQUAL(TestFilter("name"), *args->getNameFilters()); } TEST(CommandLineArguments, setGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-ggroup" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("group"), *args->getGroupFilters()); } TEST(CommandLineArguments, setStrictGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-sg", "group" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setStrictGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-sggroup" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setExcludeGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-xg", "group" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.invertMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setExcludeGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-xggroup" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.invertMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setExcludeStrictGroupFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-xsg", "group" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.invertMatching(); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setExcludeStrictGroupFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-xsggroup" }; CHECK(newArgumentParser(argc, argv)); TestFilter groupFilter("group"); groupFilter.invertMatching(); groupFilter.strictMatching(); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-n", "name" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("name"), *args->getNameFilters()); } TEST(CommandLineArguments, setNameFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-nname" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(TestFilter("name"), *args->getNameFilters()); } TEST(CommandLineArguments, setStrictNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-sn", "name" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setStrictNameFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-snname" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setExcludeNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-xn", "name" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.invertMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setExcludeNameFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-xnname" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.invertMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setExcludeStrictNameFilter) { int argc = 3; const char* argv[] = { "tests.exe", "-xsn", "name" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.invertMatching(); nameFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setExcludeStrictNameFilterSameParameter) { int argc = 2; const char* argv[] = { "tests.exe", "-xsnname" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("name"); nameFilter.invertMatching(); nameFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); } TEST(CommandLineArguments, setTestToRunUsingVerboseOutput) { int argc = 2; const char* argv[] = { "tests.exe", "TEST(testgroup, testname) - stuff" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("testname"); TestFilter groupFilter("testgroup"); nameFilter.strictMatching(); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setTestToRunUsingVerboseOutputOfIgnoreTest) { int argc = 2; const char* argv[] = { "tests.exe", "IGNORE_TEST(testgroup, testname) - stuff" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("testname"); TestFilter groupFilter("testgroup"); nameFilter.strictMatching(); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()); } TEST(CommandLineArguments, setNormalOutput) { int argc = 2; const char* argv[] = { "tests.exe", "-onormal" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setEclipseOutput) { int argc = 2; const char* argv[] = { "tests.exe", "-oeclipse" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setNormalOutputDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "normal" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isEclipseOutput()); } TEST(CommandLineArguments, setJUnitOutputDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "junit" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isJUnitOutput()); } TEST(CommandLineArguments, setTeamCityOutputDifferentParameter) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "teamcity" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isTeamCityOutput()); } TEST(CommandLineArguments, setOutputToGarbage) { int argc = 3; const char* argv[] = { "tests.exe", "-o", "garbage" }; CHECK(!newArgumentParser(argc, argv)); } TEST(CommandLineArguments, setPrintGroups) { int argc = 2; const char* argv[] = { "tests.exe", "-lg" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isListingTestGroupNames()); } TEST(CommandLineArguments, setPrintGroupsAndNames) { int argc = 2; const char* argv[] = { "tests.exe", "-ln" }; CHECK(newArgumentParser(argc, argv)); CHECK(args->isListingTestGroupAndCaseNames()); } TEST(CommandLineArguments, weirdParamatersReturnsFalse) { int argc = 2; const char* argv[] = { "tests.exe", "-SomethingWeird" }; CHECK(!newArgumentParser(argc, argv)); } TEST(CommandLineArguments, printUsage) { STRCMP_EQUAL("use -h for more extensive help\nusage [-h] [-v] [-vv] [-c] [-p] [-lg] [-ln] [-ri] [-r#]\n" " [-g|sg|xg|xsg groupName]... [-n|sn|xn|xsn testName]... [-t groupName.testName]...\n" " [-b] [-s [randomizerSeed>0]] [\"TEST(groupName, testName)\"]... [-o{normal, junit, teamcity}] [-k packageName]\n", args->usage()); } TEST(CommandLineArguments, helpPrintsTheHelp) { int argc = 2; const char* argv[] = { "tests.exe", "-h" }; CHECK(!newArgumentParser(argc, argv)); CHECK(args->needHelp()); } TEST(CommandLineArguments, pluginKnowsOption) { int argc = 2; const char* argv[] = { "tests.exe", "-pPluginOption" }; TestRegistry::getCurrentRegistry()->installPlugin(plugin); CHECK(newArgumentParser(argc, argv)); TestRegistry::getCurrentRegistry()->removePluginByName("options"); } TEST(CommandLineArguments, checkDefaultArguments) { int argc = 1; const char* argv[] = { "tests.exe" }; CHECK(newArgumentParser(argc, argv)); CHECK(!args->isVerbose()); LONGS_EQUAL(1, args->getRepeatCount()); CHECK(NULLPTR == args->getGroupFilters()); CHECK(NULLPTR == args->getNameFilters()); CHECK(args->isEclipseOutput()); CHECK(SimpleString("") == args->getPackageName()); } TEST(CommandLineArguments, setPackageName) { int argc = 3; const char* argv[] = { "tests.exe", "-k", "package" }; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(SimpleString("package"), args->getPackageName()); } TEST(CommandLineArguments, lotsOfGroupsAndTests) { int argc = 10; const char* argv[] = { "tests.exe", "-sggroup1", "-xntest1", "-sggroup2", "-sntest2", "-sntest3", "-sggroup3", "-sntest4", "-sggroup4", "-sntest5" }; CHECK(newArgumentParser(argc, argv)); TestFilter nameFilter("test1"); nameFilter.invertMatching(); TestFilter groupFilter("group1"); groupFilter.strictMatching(); CHECK_EQUAL(nameFilter, *args->getNameFilters()->getNext()->getNext()->getNext()->getNext()); CHECK_EQUAL(groupFilter, *args->getGroupFilters()->getNext()->getNext()->getNext()); } TEST(CommandLineArguments, lastParameterFieldMissing) { int argc = 2; const char* argv[] = { "tests.exe", "-k"}; CHECK(newArgumentParser(argc, argv)); CHECK_EQUAL(SimpleString(""), args->getPackageName()); } TEST(CommandLineArguments, setOptRun) { int argc = 2; const char* argv[] = { "tests.exe", "-ri"}; CHECK(newArgumentParser(argc, argv)); CHECK(args->isRunIgnored()); } cpputest-4.0/tests/CppUTest/AllocLetTestFree.c000644 000765 000024 00000001044 13663176127 022347 0ustar00basvoddestaff000000 000000 #include "CppUTest/StandardCLibrary.h" #if CPPUTEST_USE_STD_C_LIB #include "AllocLetTestFree.h" typedef struct AllocLetTestFreeStruct { int placeHolderForHiddenStructElements; } AllocLetTestFreeStruct; AllocLetTestFree AllocLetTestFree_Create(void) { size_t count = 1; AllocLetTestFree self = (AllocLetTestFree)calloc(count, sizeof(AllocLetTestFreeStruct)); return self; } void AllocLetTestFree_Destroy(AllocLetTestFree self) { AllocLetTestFree no_use = self; self = NULL; self = no_use; (void)self; } #endif cpputest-4.0/tests/CppUTest/AllocationInCFile.h000644 000765 000024 00000000526 13663176127 022476 0ustar00basvoddestaff000000 000000 #ifndef ALLOCATIONINCFILE_H #define ALLOCATIONINCFILE_H #ifdef __cplusplus extern "C" { #endif extern char* mallocAllocation(void); extern char* strdupAllocation(void); extern char* strndupAllocation(void); extern void freeAllocation(void* memory); extern void freeAllocationWithoutMacro(void* memory); #ifdef __cplusplus } #endif #endif cpputest-4.0/tests/CppUTest/PluginTest.cpp000644 000765 000024 00000014355 13663176127 021655 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #define GENERIC_PLUGIN "GenericPlugin" #define GENERIC_PLUGIN2 "GenericPlugin2" #define GENERIC_PLUGIN3 "GenericPlugin3" static int sequenceNumber; class DummyPlugin: public TestPlugin { public: DummyPlugin(const SimpleString& name) : TestPlugin(name), preAction(0), preActionSequence(0), postAction(0), postActionSequence(0) { } virtual void preTestAction(UtestShell&, TestResult&) { preAction++; preActionSequence = sequenceNumber++; } virtual void postTestAction(UtestShell&, TestResult&) { postAction++; postActionSequence = sequenceNumber++; } int preAction; int preActionSequence; int postAction; int postActionSequence; }; class DummyPluginWhichAcceptsParameters: public DummyPlugin { public: DummyPluginWhichAcceptsParameters(const SimpleString& name) : DummyPlugin(name) { } virtual bool parseArguments(int ac, const char *const *av, int index) { SimpleString argument (av[index]); if (argument == "-paccept") return true; return TestPlugin::parseArguments(ac, av, index); } }; TEST_GROUP(PluginTest) { DummyPlugin* firstPlugin; DummyPluginWhichAcceptsParameters* secondPlugin; DummyPlugin* thirdPlugin; TestTestingFixture *genFixture; TestRegistry* registry; void setup() { firstPlugin = new DummyPlugin(GENERIC_PLUGIN); secondPlugin = new DummyPluginWhichAcceptsParameters(GENERIC_PLUGIN2); thirdPlugin = new DummyPlugin(GENERIC_PLUGIN3); genFixture = new TestTestingFixture; registry = genFixture->getRegistry(); registry->installPlugin(firstPlugin); sequenceNumber = 1; } void teardown() { delete firstPlugin; delete secondPlugin; delete thirdPlugin; delete genFixture; } }; #define GENERIC_PLUGIN "GenericPlugin" TEST(PluginTest, PluginHasName) { STRCMP_EQUAL(GENERIC_PLUGIN, firstPlugin->getName().asCharString()); } TEST(PluginTest, InstallPlugin) { CHECK_EQUAL(firstPlugin, registry->getFirstPlugin()); CHECK_EQUAL(firstPlugin, registry->getPluginByName(GENERIC_PLUGIN)); LONGS_EQUAL(1, registry->countPlugins()); } TEST(PluginTest, InstallMultiplePlugins) { registry->installPlugin(thirdPlugin); CHECK_EQUAL(firstPlugin, registry->getPluginByName(GENERIC_PLUGIN)); CHECK_EQUAL(thirdPlugin, registry->getPluginByName(GENERIC_PLUGIN3)); POINTERS_EQUAL(NULLPTR, registry->getPluginByName("I do not exist")); } TEST(PluginTest, ActionsAllRun) { genFixture->runAllTests(); genFixture->runAllTests(); CHECK_EQUAL(2, firstPlugin->preAction); CHECK_EQUAL(2, firstPlugin->postAction); } TEST(PluginTest, Sequence) { registry->installPlugin(thirdPlugin); genFixture->runAllTests(); CHECK_EQUAL(1, thirdPlugin->preActionSequence); CHECK_EQUAL(2, firstPlugin->preActionSequence); CHECK_EQUAL(3, firstPlugin->postActionSequence); CHECK_EQUAL(4, thirdPlugin->postActionSequence); LONGS_EQUAL(2, registry->countPlugins()); } TEST(PluginTest, RemovePluginByName) { registry->installPlugin(secondPlugin); registry->installPlugin(thirdPlugin); LONGS_EQUAL(3, registry->countPlugins()); registry->removePluginByName(GENERIC_PLUGIN2); LONGS_EQUAL(2, registry->countPlugins()); } struct DefaultPlugin : public TestPlugin { DefaultPlugin() : TestPlugin("default") {} }; TEST(PluginTest, DefaultPostTestActionDoesntDoAnything) { DefaultPlugin defaultPlugin; registry->installPlugin(&defaultPlugin); genFixture->runAllTests(); } TEST(PluginTest, DisablesPluginsDontRun) { registry->installPlugin(thirdPlugin); thirdPlugin->disable(); genFixture->runAllTests(); CHECK(!thirdPlugin->isEnabled()); thirdPlugin->enable(); genFixture->runAllTests(); CHECK_EQUAL(2, firstPlugin->preAction); CHECK_EQUAL(1, thirdPlugin->preAction); CHECK(thirdPlugin->isEnabled()); } TEST(PluginTest, ParseArgumentsForUnknownArgumentsFails) { registry->installPlugin(secondPlugin); const char *cmd_line[] = {"nonsense", "andmorenonsense"}; CHECK(registry->getFirstPlugin()->parseAllArguments(2, const_cast(cmd_line), 0) == false); /* cover non-const wrapper, too */ } TEST(PluginTest, ParseArgumentsContinuesAndSucceedsWhenAPluginCanParse) { registry->installPlugin(secondPlugin); const char *cmd_line[] = {"-paccept", "andmorenonsense"}; CHECK(registry->getFirstPlugin()->parseAllArguments(2, const_cast(cmd_line), 0)); /* cover non-const wrapper, too */ } cpputest-4.0/tests/CppUTest/TestOutputTest.cpp000644 000765 000024 00000033525 13663176127 022557 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/PlatformSpecificFunctions.h" static long millisTime; extern "C" { static long MockGetPlatformSpecificTimeInMillis() { return millisTime; } } TEST_GROUP(TestOutput) { TestOutput* printer; StringBufferTestOutput* mock; UtestShell* tst; TestFailure *f; TestFailure *f2; TestFailure *f3; TestResult* result; void setup() { mock = new StringBufferTestOutput(); printer = mock; tst = new UtestShell("group", "test", "file", 10); f = new TestFailure(tst, "failfile", 20, "message"); f2 = new TestFailure(tst, "file", 20, "message"); f3 = new TestFailure(tst, "file", 2, "message"); result = new TestResult(*mock); result->setTotalExecutionTime(10); millisTime = 0; UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); TestOutput::setWorkingEnvironment(TestOutput::eclipse); } void teardown() { TestOutput::setWorkingEnvironment(TestOutput::detectEnvironment); delete printer; delete tst; delete f; delete f2; delete f3; delete result; } void runOneTest() { result->countTest(); result->countRun(); } }; TEST(TestOutput, PrintConstCharStar) { printer->print("hello"); printer->print("hello\n"); STRCMP_EQUAL("hellohello\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintLong) { long number = 1234; printer->print(number); STRCMP_EQUAL("1234", mock->getOutput().asCharString()); } TEST(TestOutput, PrintSize) { size_t ten = 10; printer->print(ten); STRCMP_EQUAL("10", mock->getOutput().asCharString()); } TEST(TestOutput, PrintDouble) { printer->printDouble(12.34); STRCMP_EQUAL("12.34", mock->getOutput().asCharString()); } TEST(TestOutput, StreamOperators) { *printer << "n=" << 1234; STRCMP_EQUAL("n=1234", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestEnded) { printer->printCurrentTestEnded(*result); STRCMP_EQUAL(".", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestALot) { for (int i = 0; i < 60; ++i) { printer->printCurrentTestEnded(*result); } STRCMP_EQUAL("..................................................\n..........", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestALotAndSimulateRepeatRun) { for (int i = 0; i < 60; ++i) { runOneTest(); printer->printCurrentTestEnded(*result); } printer->printTestsEnded(*result); for (int i = 0; i < 60; ++i) { runOneTest(); printer->printCurrentTestEnded(*result); } STRCMP_EQUAL("..................................................\n.........." \ "\nOK (60 tests, 60 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\n\n" \ "..................................................\n..........", mock->getOutput().asCharString()); } TEST(TestOutput, SetProgressIndicator) { printer->setProgressIndicator("."); printer->printCurrentTestEnded(*result); printer->setProgressIndicator("!"); printer->printCurrentTestEnded(*result); printer->setProgressIndicator("."); printer->printCurrentTestEnded(*result); STRCMP_EQUAL(".!.", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestVerboseStarted) { mock->verbose(TestOutput::level_verbose); printer->printCurrentTestStarted(*tst); STRCMP_EQUAL("TEST(group, test)", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestVerboseEnded) { mock->verbose(TestOutput::level_verbose); result->currentTestStarted(tst); millisTime = 5; result->currentTestEnded(tst); STRCMP_EQUAL("TEST(group, test) - 5 ms\n", mock->getOutput().asCharString()); } TEST(TestOutput, printColorWithSuccess) { mock->color(); runOneTest(); printer->printTestsEnded(*result); STRCMP_EQUAL("\n\033[32;1mOK (1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\033[m\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, printColorWithFailures) { mock->color(); runOneTest(); result->addFailure(*f); printer->flush(); printer->printTestsEnded(*result); STRCMP_EQUAL("\n\033[31;1mErrors (1 failures, 1 tests, 1 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)" "\033[m\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestRun) { printer->printTestRun(2, 3); STRCMP_EQUAL("Test run 2 of 3\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestRunOnlyOne) { printer->printTestRun(1, 1); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TestOutput, PrintWithFailureInSameFile) { printer->printFailure(*f2); STRCMP_EQUAL("\nfile:20: error: Failure in TEST(group, test)\n\tmessage\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, PrintFailureWithFailInDifferentFile) { printer->printFailure(*f); const char* expected = "\nfile:10: error: Failure in TEST(group, test)" "\nfailfile:20: error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintFailureWithFailInHelper) { printer->printFailure(*f3); const char* expected = "\nfile:10: error: Failure in TEST(group, test)" "\nfile:2: error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintInVisualStudioFormat) { TestOutput::setWorkingEnvironment(TestOutput::visualStudio); printer->printFailure(*f3); const char* expected = "\nfile(10): error: Failure in TEST(group, test)" "\nfile(2): error:\n\tmessage\n\n"; STRCMP_EQUAL(expected, mock->getOutput().asCharString()); } TEST(TestOutput, PrintTestStarts) { printer->printTestsStarted(); STRCMP_EQUAL("", mock->getOutput().asCharString()); } TEST(TestOutput, printTestsEnded) { result->countTest(); result->countCheck(); result->countIgnored(); result->countIgnored(); result->countRun(); result->countRun(); result->countRun(); printer->printTestsEnded(*result); STRCMP_EQUAL("\nOK (1 tests, 3 ran, 1 checks, 2 ignored, 0 filtered out, 10 ms)\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, printTestsEndedWithFailures) { result->addFailure(*f); printer->flush(); printer->printTestsEnded(*result); STRCMP_EQUAL("\nErrors (1 failures, 0 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\n\n", mock->getOutput().asCharString()); } TEST(TestOutput, printTestsEndedWithNoTestsRunOrIgnored) { result->countTest(); printer->flush(); printer->printTestsEnded(*result); STRCMP_EQUAL("\nErrors (ran nothing, 1 tests, 0 ran, 0 checks, 0 ignored, 0 filtered out, 10 ms)\n" "Note: test run failed because no tests were run or ignored. Assuming something went wrong. " "This often happens because of linking errors or typos in test filter.\n\n", mock->getOutput().asCharString()); } class CompositeTestOutputTestStringBufferTestOutput : public StringBufferTestOutput { public: virtual void printTestsStarted() { output += "Test Start\n"; } virtual void printTestsEnded(const TestResult& result) { output += StringFromFormat("Test End %d\n", (int) result.getTestCount()); } void printCurrentGroupStarted(const UtestShell& test) { output += StringFromFormat("Group %s Start\n", test.getGroup().asCharString()); } void printCurrentGroupEnded(const TestResult& res) { output += StringFromFormat("Group End %d\n", (int) res.getTestCount()); } virtual void printCurrentTestStarted(const UtestShell&) { output += "s"; } void flush() { output += "flush"; } virtual bool isVerbose() { return verbose_ == level_verbose || verbose_ == level_veryVerbose; } virtual bool isColor() { return color_; } virtual const char* getProgressIndicator() { return progressIndication_; } }; TEST_GROUP(CompositeTestOutput) { CompositeTestOutputTestStringBufferTestOutput* output1; CompositeTestOutputTestStringBufferTestOutput* output2; CompositeTestOutput compositeOutput; TestResult* result; UtestShell* test; void setup() { output1 = new CompositeTestOutputTestStringBufferTestOutput; output2 = new CompositeTestOutputTestStringBufferTestOutput; compositeOutput.setOutputOne(output1); compositeOutput.setOutputTwo(output2); result = new TestResult(compositeOutput); test = new UtestShell("Group", "Name", "file", 10); } void teardown() { delete test; delete result; } }; TEST(CompositeTestOutput, TestStartedAndEnded) { compositeOutput.printTestsStarted(); compositeOutput.printTestsEnded(*result); STRCMP_EQUAL("Test Start\nTest End 0\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Test Start\nTest End 0\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, CurrentTestStartedAndEnded) { compositeOutput.printCurrentTestStarted(*test); compositeOutput.printCurrentTestEnded(*result); STRCMP_EQUAL("s.", output1->getOutput().asCharString()); STRCMP_EQUAL("s.", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, CurrentGroupStartedAndEnded) { compositeOutput.printCurrentGroupStarted(*test); compositeOutput.printCurrentGroupEnded(*result); STRCMP_EQUAL("Group Group Start\nGroup End 0\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Group Group Start\nGroup End 0\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, PrintBuffer) { compositeOutput.printBuffer("Boo"); STRCMP_EQUAL("Boo", output1->getOutput().asCharString()); STRCMP_EQUAL("Boo", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printChar) { compositeOutput.print("Boo"); STRCMP_EQUAL("Boo", output1->getOutput().asCharString()); STRCMP_EQUAL("Boo", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printLong) { long ten = 10; compositeOutput.print(ten); STRCMP_EQUAL("10", output1->getOutput().asCharString()); STRCMP_EQUAL("10", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, PrintSize) { size_t ten = 10; compositeOutput.print(ten); STRCMP_EQUAL("10", output1->getOutput().asCharString()); STRCMP_EQUAL("10", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, printDouble) { compositeOutput.printDouble(1.01); STRCMP_EQUAL("1.01", output1->getOutput().asCharString()); STRCMP_EQUAL("1.01", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, verbose) { compositeOutput.verbose(TestOutput::level_verbose); CHECK(output1->isVerbose()); CHECK(output2->isVerbose()); } TEST(CompositeTestOutput, color) { compositeOutput.color(); CHECK(output1->isColor()); CHECK(output2->isColor()); } TEST(CompositeTestOutput, PrintTestFailure) { TestOutput::WorkingEnvironment previousEnvironment = TestOutput::getWorkingEnvironment(); TestOutput::setWorkingEnvironment(TestOutput::eclipse); TestFailure failure(test, "file", 10, "failed"); compositeOutput.printFailure(failure); STRCMP_EQUAL("\nfile:10: error: Failure in TEST(Group, Name)\n\tfailed\n\n", output1->getOutput().asCharString()); STRCMP_EQUAL("\nfile:10: error: Failure in TEST(Group, Name)\n\tfailed\n\n", output2->getOutput().asCharString()); TestOutput::setWorkingEnvironment(previousEnvironment); } TEST(CompositeTestOutput, PrintTestRun) { compositeOutput.printTestRun(1, 2); STRCMP_EQUAL("Test run 1 of 2\n", output1->getOutput().asCharString()); STRCMP_EQUAL("Test run 1 of 2\n", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, setProgressIndicator) { compositeOutput.setProgressIndicator("?"); STRCMP_EQUAL("?", output1->getProgressIndicator()); STRCMP_EQUAL("?", output2->getProgressIndicator()); } TEST(CompositeTestOutput, flush) { compositeOutput.flush(); STRCMP_EQUAL("flush", output1->getOutput().asCharString()); STRCMP_EQUAL("flush", output2->getOutput().asCharString()); } TEST(CompositeTestOutput, deletePreviousInstanceWhenSettingNew) { compositeOutput.setOutputOne(new CompositeTestOutput); compositeOutput.setOutputTwo(new CompositeTestOutput); // CHECK NO MEMORY LEAKS } cpputest-4.0/tests/CppUTest/TestHarness_cTestCFile.c000644 000765 000024 00000001503 13663176127 023516 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness_c.h" #include "CppUTest/PlatformSpecificFunctions_c.h" extern void functionWithUnusedParameter(void* PUNUSED(unlessParamater)); void functionWithUnusedParameter(void* PUNUSED(unlessParamater)) { } /* Declared in the cpp file */ extern int setup_teardown_was_called_in_test_group_in_C; extern int test_was_called_in_test_group_in_C; TEST_GROUP_C_SETUP(TestGroupInC) { setup_teardown_was_called_in_test_group_in_C++; } TEST_GROUP_C_TEARDOWN(TestGroupInC) { setup_teardown_was_called_in_test_group_in_C--; CHECK_C(test_was_called_in_test_group_in_C == 1); test_was_called_in_test_group_in_C--; } TEST_C(TestGroupInC, checkThatTheTestHasRun) { test_was_called_in_test_group_in_C++; } IGNORE_TEST_C(TestGroupInC, ignoreMacroForCFile) { test_was_called_in_test_group_in_C++; } cpputest-4.0/tests/CppUTest/AllocationInCppFile.h000644 000765 000024 00000000545 13663176127 023037 0ustar00basvoddestaff000000 000000 #ifndef ALLOCATIONINCPPFILE_H #define ALLOCATIONINCPPFILE_H char* newAllocation(); char* newArrayAllocation(); char* newAllocationWithoutMacro(); char* newArrayAllocationWithoutMacro(); #if CPPUTEST_USE_STD_CPP_LIB class ClassThatThrowsAnExceptionInTheConstructor { public: ClassThatThrowsAnExceptionInTheConstructor() _no_return_; }; #endif #endif cpputest-4.0/tests/CppUTest/SimpleMutexTest.cpp000644 000765 000024 00000006171 13663176127 022670 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/SimpleMutex.h" #include "CppUTest/PlatformSpecificFunctions.h" static int mutexCreateCount = 0; static int mutexLockCount = 0; static int mutexUnlockCount = 0; static int mutexDestroyCount = 0; static PlatformSpecificMutex StubMutexCreate(void) { mutexCreateCount++; return NULLPTR; } static void StubMutexLock(PlatformSpecificMutex) { mutexLockCount++; } static void StubMutexUnlock(PlatformSpecificMutex) { mutexUnlockCount++; } static void StubMutexDestroy(PlatformSpecificMutex) { mutexDestroyCount++; } TEST_GROUP(SimpleMutexTest) { void setup() { UT_PTR_SET(PlatformSpecificMutexCreate, StubMutexCreate); UT_PTR_SET(PlatformSpecificMutexLock, StubMutexLock); UT_PTR_SET(PlatformSpecificMutexUnlock, StubMutexUnlock); UT_PTR_SET(PlatformSpecificMutexDestroy, StubMutexDestroy); mutexCreateCount = 0; mutexDestroyCount = 0; mutexLockCount = 0; mutexUnlockCount = 0; } void teardown() { } }; TEST(SimpleMutexTest, CreateAndDestroy) { { SimpleMutex mtx; } CHECK_EQUAL(1, mutexCreateCount); CHECK_EQUAL(1, mutexDestroyCount); CHECK_EQUAL(0, mutexLockCount); CHECK_EQUAL(0, mutexUnlockCount); } TEST(SimpleMutexTest, LockUnlockTest) { { SimpleMutex mtx; mtx.Lock(); mtx.Unlock(); } CHECK_EQUAL(1, mutexCreateCount); CHECK_EQUAL(1, mutexLockCount); CHECK_EQUAL(1, mutexUnlockCount); CHECK_EQUAL(1, mutexDestroyCount); } cpputest-4.0/tests/CppUTest/DummyMemoryLeakDetector.h000644 000765 000024 00000004166 13663176127 023776 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ class DummyMemoryLeakDetector : public MemoryLeakDetector { public: DummyMemoryLeakDetector(MemoryLeakFailure* reporter); virtual ~DummyMemoryLeakDetector() _destructor_override; static bool wasDeleted(); private: static bool memoryLeakDetectorWasDeleted; }; class DummyMemoryLeakFailure : public MemoryLeakFailure { public: DummyMemoryLeakFailure(); virtual ~DummyMemoryLeakFailure() _destructor_override; static bool wasDeleted(); virtual void fail(char*) _override; private: static bool memoryLeakFailureWasDelete; }; cpputest-4.0/tests/CppUTest/MemoryOperatorOverloadTest.cpp000644 000765 000024 00000032246 13663176127 025076 0ustar00basvoddestaff000000 000000 #include "CppUTest/TestHarness.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestTestingFixture.h" #include "AllocationInCppFile.h" #include "CppUTest/TestHarness_c.h" #include "AllocationInCFile.h" TEST_GROUP(BasicBehavior) { }; TEST(BasicBehavior, CanDeleteNullPointers) { delete (char*) NULLPTR; delete [] (char*) NULLPTR; } #if CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_DO_NOT_SANITIZE_ADDRESS static void deleteArrayInvalidatesMemory() { unsigned char* memory = new unsigned char[10]; PlatformSpecificMemset(memory, 0xAB, 10); delete [] memory; CHECK(memory[5] != 0xCB); } TEST(BasicBehavior, deleteArrayInvalidatesMemory) { deleteArrayInvalidatesMemory(); } CPPUTEST_DO_NOT_SANITIZE_ADDRESS static void deleteInvalidatesMemory() { unsigned char* memory = new unsigned char; *memory = 0xAD; delete memory; CHECK(*memory != 0xAD); } TEST(BasicBehavior, deleteInvalidatesMemory) { deleteInvalidatesMemory(); } #if __cplusplus >= 201402L TEST(BasicBehavior, DeleteWithSizeParameterWorks) { char* charMemory = new char; char* charArrayMemory = new char[10]; ::operator delete(charMemory, sizeof(char)); ::operator delete[](charArrayMemory, sizeof(char)* 10); } #endif static void deleteUnallocatedMemory() { delete (char*) 0x1234678; FAIL("Should never come here"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(BasicBehavior, deleteWillNotThrowAnExceptionWhenDeletingUnallocatedMemoryButCanStillCauseTestFailures) { /* * Test failure might cause an exception. But according to C++ standard, you aren't allowed * to throw exceptions in the delete function. If you do that, it will call std::terminate. * Therefore, the delete will need to fail without exceptions. */ MemoryLeakFailure* defaultReporter = MemoryLeakWarningPlugin::getGlobalFailureReporter(); TestTestingFixture fixture; fixture.setTestFunction(deleteUnallocatedMemory); fixture.runAllTests(); LONGS_EQUAL(1, fixture.getFailureCount()); POINTERS_EQUAL(defaultReporter, MemoryLeakWarningPlugin::getGlobalFailureReporter()); } #endif #ifdef CPPUTEST_USE_MALLOC_MACROS /* This include is added because *sometimes* the cstdlib does an #undef. This should have been prevented */ #if CPPUTEST_USE_STD_CPP_LIB #include #endif TEST(BasicBehavior, bothMallocAndFreeAreOverloaded) { void* memory = cpputest_malloc_location(sizeof(char), "file", 10); free(memory); memory = malloc(sizeof(unsigned char)); cpputest_free_location(memory, "file", 10); } #endif #if CPPUTEST_USE_MEM_LEAK_DETECTION CPPUTEST_DO_NOT_SANITIZE_ADDRESS static void freeInvalidatesMemory() { unsigned char* memory = (unsigned char*) cpputest_malloc(sizeof(unsigned char)); *memory = 0xAD; cpputest_free(memory); CHECK(*memory != 0xAD); } TEST(BasicBehavior, freeInvalidatesMemory) { freeInvalidatesMemory(); } #endif TEST_GROUP(MemoryLeakOverridesToBeUsedInProductionCode) { MemoryLeakDetector* memLeakDetector; void setup() { memLeakDetector = MemoryLeakWarningPlugin::getGlobalDetector(); } }; #ifdef CPPUTEST_USE_MALLOC_MACROS TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocOverrideIsUsed) { size_t memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); void* memory = malloc(10); LONGS_EQUAL(memLeaks+1, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); } #ifdef CPPUTEST_USE_STRDUP_MACROS TEST(MemoryLeakOverridesToBeUsedInProductionCode, StrdupOverrideIsUsed) { size_t memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); char* memory = strdup("0123456789"); LONGS_EQUAL(memLeaks+1, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, StrndupOverrideIsUsed) { size_t memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); char* memory = strndup("0123456789", 10); LONGS_EQUAL(memLeaks+1, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); } #endif #endif TEST(MemoryLeakOverridesToBeUsedInProductionCode, UseNativeMallocByTemporarlySwitchingOffMalloc) { size_t memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); #ifdef CPPUTEST_USE_MALLOC_MACROS #undef malloc #undef free #endif #if CPPUTEST_USE_STD_C_LIB void* memory = malloc(10); LONGS_EQUAL(memLeaks, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); free (memory); #else void* memory = PlatformSpecificMalloc(10); LONGS_EQUAL(memLeaks, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); PlatformSpecificFree (memory); #endif #ifdef CPPUTEST_USE_MALLOC_MACROS #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #endif } /* TEST... allowing for a new overload in a class */ class NewDummyClass { public: static bool overloaded_new_called; #ifdef CPPUTEST_USE_NEW_MACROS #undef new #endif void* operator new (size_t size) #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif { overloaded_new_called = true; return malloc(size); } void dummyFunction() { char* memory = new char; delete memory; } }; bool NewDummyClass::overloaded_new_called = false; TEST(MemoryLeakOverridesToBeUsedInProductionCode, NoSideEffectsFromTurningOffNewMacros) { /* * Interesting effect of wrapping the operator new around the macro is * that the actual new that is called is a different one than expected. * * The overloaded operator new doesn't actually ever get called. * * This might come as a surprise, so it is important to realize! */ NewDummyClass dummy; dummy.dummyFunction(); // CHECK(dummy.overloaded_new_called); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, UseNativeNewByTemporarlySwitchingOffNew) { #ifdef CPPUTEST_USE_NEW_MACROS #undef new #undef delete #endif char* memory = new char[10]; delete [] memory; #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewMacroOverloadViaIncludeFileWorks) { char* leak = newAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCppFile.cpp", memLeakDetector->report(mem_leak_period_checking)); delete leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewArrayMacroOverloadViaIncludeFileWorks) { char* leak = newArrayAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCppFile.cpp", memLeakDetector->report(mem_leak_period_checking)); delete[] leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocOverrideWorks) { char* leak = mallocAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCFile.c", memLeakDetector->report(mem_leak_period_checking)); freeAllocation(leak); } #ifdef CPPUTEST_USE_STRDUP_MACROS TEST(MemoryLeakOverridesToBeUsedInProductionCode, StrdupOverrideWorks) { char* leak = strdupAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCFile.c", memLeakDetector->report(mem_leak_period_checking)); freeAllocation(leak); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, StrndupOverrideWorks) { char* leak = strndupAllocation(); STRCMP_NOCASE_CONTAINS("AllocationInCFile.c", memLeakDetector->report(mem_leak_period_checking)); freeAllocation(leak); } #endif TEST(MemoryLeakOverridesToBeUsedInProductionCode, MallocWithButFreeWithoutLeakDetectionDoesntCrash) { char* leak = mallocAllocation(); freeAllocationWithoutMacro(leak); LONGS_EQUAL(2, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); memLeakDetector->removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(getCurrentMallocAllocator(), leak, true); } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewOverloadingWithoutMacroWorks) { char* leak = newAllocationWithoutMacro(); STRCMP_CONTAINS("unknown", memLeakDetector->report(mem_leak_period_checking)); delete leak; } TEST(MemoryLeakOverridesToBeUsedInProductionCode, OperatorNewArrayOverloadingWithoutMacroWorks) { char* leak = newArrayAllocationWithoutMacro(); STRCMP_CONTAINS("unknown", memLeakDetector->report(mem_leak_period_checking)); delete[] leak; } #else TEST(MemoryLeakOverridesToBeUsedInProductionCode, MemoryOverridesAreDisabled) { char* leak = newAllocation(); STRCMP_EQUAL("No memory leaks were detected.", memLeakDetector->report(mem_leak_period_checking)); delete leak; } #endif TEST_GROUP(OutOfMemoryTestsForOperatorNew) { TestMemoryAllocator* no_memory_allocator; GlobalMemoryAllocatorStash memoryAllocatorStash; void setup() { memoryAllocatorStash.save(); no_memory_allocator = new NullUnknownAllocator; setCurrentNewAllocator(no_memory_allocator); setCurrentNewArrayAllocator(no_memory_allocator); } void teardown() { memoryAllocatorStash.restore(); delete no_memory_allocator; } }; #if CPPUTEST_USE_MEM_LEAK_DETECTION #if CPPUTEST_USE_STD_CPP_LIB TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorThrowsAnExceptionWhenUsingStdCppNew) { CHECK_THROWS(std::bad_alloc, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorThrowsAnExceptionWhenUsingStdCppNew) { CHECK_THROWS(std::bad_alloc, new char[10]); } TEST_GROUP(TestForExceptionsInConstructor) { }; TEST(TestForExceptionsInConstructor,ConstructorThrowsAnException) { CHECK_THROWS(int, new ClassThatThrowsAnExceptionInTheConstructor); } TEST(TestForExceptionsInConstructor,ConstructorThrowsAnExceptionAllocatedAsArray) { CHECK_THROWS(int, new ClassThatThrowsAnExceptionInTheConstructor[10]); } #else TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNull) { POINTERS_EQUAL(NULLPTR, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNull) { POINTERS_EQUAL(NULLPTR, new char[10]); } #endif #undef new #if CPPUTEST_USE_STD_CPP_LIB /* * CLang 4.2 and memory allocation. * * Clang 4.2 has done some optimizations to their memory management that actually causes slightly different behavior than what the C++ Standard defines. * Usually this is not a problem... but in this case, it is a problem. * * More information about the optimization can be found at: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3433.html * We've done a bug-report to clang to fix some of this non-standard behavior, which is open at: http://llvm.org/bugs/show_bug.cgi?id=15541 * * I very much hope that nobody would actually ever hit this bug/optimization as it is hard to figure out what is going on. * * The original test simply did "new char". Because the memory wasn't assigned to anything and is local in context, the optimization *doesn't* call * the operator new overload. Because it doesn't call the operator new (optimizing away a call to operator new), therefore the method wouldn't throw an exception * and therefore this test failed. * * The first attempt to fix this is to create a local variable and assigned the memory to that. Also this doesn't work as it still detects the allocation is * local and optimizes away the memory call. * * Now, we assign the memory on some static global which fools the optimizer to believe that it isn't local and it stops optimizing the operator new call. * * We (Bas Vodde and Terry Yin) suspect that in a real product, you wouldn't be able to detect the optimization and it's breaking of Standard C++. Therefore, * for now, we keep this hack in the test to fool the optimizer and hope nobody will ever notice this 'optimizer behavior' in a real product. * * Update 2020: The gcc compiler implemented the same optimization, but it seems to be slightly smarter and discovered that we assign to a static variable. * Thus it still optimized away the call to operator new. Did another bug report, but it is unlikely to get fixed. You can find it at: * https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94671 * * Changed the variable to be external so it would definitively be a mistake to optimize the call. * */ extern char* some_memory; char* some_memory; TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorThrowsAnExceptionWhenUsingStdCppNewWithoutOverride) { CHECK_THROWS(std::bad_alloc, some_memory = new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorThrowsAnExceptionWhenUsingStdCppNewWithoutOverride) { CHECK_THROWS(std::bad_alloc, some_memory = new char[10]); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULLPTR, new (std::nothrow) char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULLPTR, new (std::nothrow) char[10]); } #else TEST(OutOfMemoryTestsForOperatorNew, FailingNewOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULLPTR, new char); } TEST(OutOfMemoryTestsForOperatorNew, FailingNewArrayOperatorReturnsNullWithoutOverride) { POINTERS_EQUAL(NULLPTR, new char[10]); } #endif #endif cpputest-4.0/tests/CppUTest/TestHarness_cTest.cpp000644 000765 000024 00000060320 13663176127 023155 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness_c.h" #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #include "CppUTest/PlatformSpecificFunctions.h" extern "C" int setup_teardown_was_called_in_test_group_in_C; extern "C" int test_was_called_in_test_group_in_C; int setup_teardown_was_called_in_test_group_in_C = 0; int test_was_called_in_test_group_in_C = 0; TEST_GROUP_C_WRAPPER(TestGroupInC) { TEST_GROUP_C_SETUP_WRAPPER(TestGroupInC) TEST_GROUP_C_TEARDOWN_WRAPPER(TestGroupInC) }; TEST_C_WRAPPER(TestGroupInC, checkThatTheTestHasRun) IGNORE_TEST_C_WRAPPER(TestGroupInC, ignoreMacroForCFile) /* * This test is a bit strange. They use the fact that you can do -r2 for repeating the same run. * When you do so, the same statics will be shared and therefore we can test whether the setup/teardown is run * correctly. */ TEST(TestGroupInC, setupHasBeenCalled) { test_was_called_in_test_group_in_C++; /* Increased in setup, decreased in teardown. So at this point it must be 1 also on a multiple run */ LONGS_EQUAL(1, setup_teardown_was_called_in_test_group_in_C); } static bool hasDestructorOfTheDestructorCheckedBeenCalled; class HasTheDestructorBeenCalledChecker { public: HasTheDestructorBeenCalledChecker(){} ~HasTheDestructorBeenCalledChecker() { hasDestructorOfTheDestructorCheckedBeenCalled = true; } }; TEST_GROUP(TestHarness_c) { TestTestingFixture* fixture; TEST_SETUP() { hasDestructorOfTheDestructorCheckedBeenCalled = false; fixture = new TestTestingFixture(); } TEST_TEARDOWN() { delete fixture; } }; static void _failBoolMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_BOOL(1, 0); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkBool) { CHECK_EQUAL_C_BOOL(1, 1); CHECK_EQUAL_C_BOOL(1, 2); fixture->setTestFunction(_failBoolMethod); fixture->runAllTests(); fixture->assertPrintContains("expected \n but was "); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failBoolTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_BOOL_TEXT(1, 0, "BoolTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkBoolText) { CHECK_EQUAL_C_BOOL_TEXT(1, 1, "Text"); CHECK_EQUAL_C_BOOL_TEXT(1, 2, "Text"); fixture->setTestFunction(_failBoolTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected \n but was "); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: BoolTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_INT(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkInt) { CHECK_EQUAL_C_INT(2, 2); fixture->setTestFunction(_failIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_INT_TEXT(1, 2, "IntTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkIntText) { CHECK_EQUAL_C_INT_TEXT(2, 2, "Text"); fixture->setTestFunction(_failIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: IntTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_UINT(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedInt) { CHECK_EQUAL_C_UINT(2, 2); fixture->setTestFunction(_failUnsignedIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_UINT_TEXT(1, 2, "UnsignedIntTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedIntText) { CHECK_EQUAL_C_UINT_TEXT(2, 2, "Text"); fixture->setTestFunction(_failUnsignedIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: UnsignedIntTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failLongIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_LONG(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongInt) { CHECK_EQUAL_C_LONG(2, 2); fixture->setTestFunction(_failLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failLongIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_LONG_TEXT(1, 2, "LongIntTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongIntText) { CHECK_EQUAL_C_LONG_TEXT(2, 2, "Text"); fixture->setTestFunction(_failLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: LongIntTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedLongIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_ULONG(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongInt) { CHECK_EQUAL_C_ULONG(2, 2); fixture->setTestFunction(_failUnsignedLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedLongIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_ULONG_TEXT(1, 2, "UnsignedLongIntTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongIntText) { CHECK_EQUAL_C_ULONG_TEXT(2, 2, "Text"); fixture->setTestFunction(_failUnsignedLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: UnsignedLongIntTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } #ifdef CPPUTEST_USE_LONG_LONG static void _failLongLongIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_LONGLONG(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongLongInt) { CHECK_EQUAL_C_LONGLONG(2, 2); fixture->setTestFunction(_failLongLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failLongLongIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_LONGLONG_TEXT(1, 2, "LongLongTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongLongIntText) { CHECK_EQUAL_C_LONGLONG_TEXT(2, 2, "Text"); fixture->setTestFunction(_failLongLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: LongLongTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedLongLongIntMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_ULONGLONG(1, 2); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongLongInt) { CHECK_EQUAL_C_ULONGLONG(2, 2); fixture->setTestFunction(_failUnsignedLongLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedLongLongIntTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_ULONGLONG_TEXT(1, 2, "UnsignedLongLongTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongLongIntText) { CHECK_EQUAL_C_ULONGLONG_TEXT(2, 2, "Text"); fixture->setTestFunction(_failUnsignedLongLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1 (0x1)>\n but was <2 (0x2)>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: UnsignedLongLongTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } #else static void _failLongLongIntMethod() { cpputest_longlong dummy_longlong; CHECK_EQUAL_C_LONGLONG(dummy_longlong, dummy_longlong); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongLongInt) { fixture->setTestFunction(_failLongLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("is not supported"); fixture->assertPrintContains("arness_c"); } static void _failLongLongIntTextMethod() { cpputest_longlong dummy_longlong; CHECK_EQUAL_C_LONGLONG_TEXT(dummy_longlong, dummy_longlong, "Text"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkLongLongIntText) { fixture->setTestFunction(_failLongLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("is not supported"); fixture->assertPrintContains("arness_c"); } static void _failUnsignedLongLongIntMethod() { cpputest_ulonglong dummy_ulonglong; CHECK_EQUAL_C_ULONGLONG(dummy_ulonglong, dummy_ulonglong); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongLongInt) { fixture->setTestFunction(_failUnsignedLongLongIntMethod); fixture->runAllTests(); fixture->assertPrintContains("is not supported"); fixture->assertPrintContains("arness_c"); } static void _failUnsignedLongLongIntTextMethod() { cpputest_ulonglong dummy_ulonglong; CHECK_EQUAL_C_ULONGLONG_TEXT(dummy_ulonglong, dummy_ulonglong, "Text"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkUnsignedLongLongIntText) { fixture->setTestFunction(_failUnsignedLongLongIntTextMethod); fixture->runAllTests(); fixture->assertPrintContains("is not supported"); fixture->assertPrintContains("arness_c"); } #endif static void _failRealMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_REAL(1.0, 2.0, 0.5); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkReal) { CHECK_EQUAL_C_REAL(1.0, 1.1, 0.5); fixture->setTestFunction(_failRealMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1>\n but was <2>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failRealTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_REAL_TEXT(1.0, 2.0, 0.5, "RealTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkRealText) { CHECK_EQUAL_C_REAL_TEXT(1.0, 1.1, 0.5, "Text"); fixture->setTestFunction(_failRealTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <1>\n but was <2>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: RealTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failCharMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_CHAR('a', 'c'); } TEST(TestHarness_c, checkChar) { CHECK_EQUAL_C_CHAR('a', 'a'); fixture->setTestFunction(_failCharMethod); fixture->runAllTests(); fixture->assertPrintContains("expected \n but was "); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failCharTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_CHAR_TEXT('a', 'c', "CharTestText"); } TEST(TestHarness_c, checkCharText) { CHECK_EQUAL_C_CHAR_TEXT('a', 'a', "Text"); fixture->setTestFunction(_failCharTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected \n but was "); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: CharTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedByteMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_UBYTE(254, 253); } TEST(TestHarness_c, checkUnsignedByte) { CHECK_EQUAL_C_UBYTE(254, 254); fixture->setTestFunction(_failUnsignedByteMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <254>\n but was <253>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failUnsignedByteTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_UBYTE_TEXT(254, 253, "UnsignedByteTestText"); } TEST(TestHarness_c, checkUnsignedByteText) { CHECK_EQUAL_C_UBYTE_TEXT(254, 254, "Text"); fixture->setTestFunction(_failUnsignedByteTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <254>\n but was <253>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: UnsignedByteTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failSignedByteMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_SBYTE(-3, -5); } TEST(TestHarness_c, checkSignedByte) { CHECK_EQUAL_C_SBYTE(-3, -3); fixture->setTestFunction(_failSignedByteMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <-3>\n but was <-5>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failSignedByteTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_SBYTE_TEXT(-3, -5, "SignedByteTestText"); } TEST(TestHarness_c, checkSignedByteText) { CHECK_EQUAL_C_SBYTE_TEXT(-3, -3, "Text"); fixture->setTestFunction(_failSignedByteTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <-3>\n but was <-5>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: SignedByteTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failStringMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_STRING("Hello", "Hello World"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkString) { CHECK_EQUAL_C_STRING("Hello", "Hello"); fixture->setTestFunction(_failStringMethod); fixture->runAllTests(); StringEqualFailure failure(UtestShell::getCurrent(), "file", 1, "Hello", "Hello World", ""); fixture->assertPrintContains(failure.getMessage()); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failStringTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_STRING_TEXT("Hello", "Hello World", "StringTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkStringText) { CHECK_EQUAL_C_STRING_TEXT("Hello", "Hello", "Text"); fixture->setTestFunction(_failStringTextMethod); fixture->runAllTests(); StringEqualFailure failure(UtestShell::getCurrent(), "file", 1, "Hello", "Hello World", ""); fixture->assertPrintContains(failure.getMessage()); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: StringTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failPointerMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_POINTER(NULLPTR, (void *)0x1); } TEST(TestHarness_c, checkPointer) { CHECK_EQUAL_C_POINTER(NULLPTR, NULLPTR); fixture->setTestFunction(_failPointerMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <0x0>\n but was <0x1>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failPointerTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_POINTER_TEXT(NULLPTR, (void *)0x1, "PointerTestText"); } TEST(TestHarness_c, checkPointerText) { CHECK_EQUAL_C_POINTER_TEXT(NULLPTR, NULLPTR, "Text"); fixture->setTestFunction(_failPointerTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <0x0>\n but was <0x1>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: PointerTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failBitsMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_BITS(0x0001, (unsigned short)0x0003, 0xFFFF); } TEST(TestHarness_c, checkBits) { CHECK_EQUAL_C_BITS(0xABCD, (unsigned short)0xABCD, 0xFFFF); fixture->setTestFunction(_failBitsMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <00000000 00000001>\n\tbut was <00000000 00000011>"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failBitsTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_EQUAL_C_BITS_TEXT(0x0001, (unsigned short)0x0003, 0xFFFF, "BitsTestText"); } TEST(TestHarness_c, checkBitsText) { CHECK_EQUAL_C_BITS_TEXT(0xABCD, (unsigned short)0xABCD, 0xFFFF, "Text"); fixture->setTestFunction(_failBitsTextMethod); fixture->runAllTests(); fixture->assertPrintContains("expected <00000000 00000001>\n\tbut was <00000000 00000011>"); fixture->assertPrintContains("arness_c"); fixture->assertPrintContains("Message: BitsTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failTextMethod() { HasTheDestructorBeenCalledChecker checker; FAIL_TEXT_C("Booo"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkFailText) { fixture->setTestFunction(_failTextMethod); fixture->runAllTests(); fixture->assertPrintContains("Booo"); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _failMethod() { HasTheDestructorBeenCalledChecker checker; FAIL_C(); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkFail) { fixture->setTestFunction(_failMethod); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); fixture->assertPrintContains("arness_c"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _CheckMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_C(false); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkCheck) { CHECK_C(true); fixture->setTestFunction(_CheckMethod); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } static void _CheckTextMethod() { HasTheDestructorBeenCalledChecker checker; CHECK_C_TEXT(false, "CheckTestText"); } // LCOV_EXCL_LINE TEST(TestHarness_c, checkCheckText) { CHECK_C_TEXT(true, "Text"); fixture->setTestFunction(_CheckTextMethod); fixture->runAllTests(); LONGS_EQUAL(1, fixture->getFailureCount()); fixture->assertPrintContains("Message: CheckTestText"); CHECK(!hasDestructorOfTheDestructorCheckedBeenCalled); } #if CPPUTEST_USE_MEM_LEAK_DETECTION TEST(TestHarness_c, cpputest_malloc_out_of_memory) { cpputest_malloc_set_out_of_memory(); CHECK(NULLPTR == cpputest_malloc(100)); cpputest_malloc_set_not_out_of_memory(); void * mem = cpputest_malloc(100); CHECK(NULLPTR != mem); cpputest_free(mem); } TEST(TestHarness_c, cpputest_malloc_out_of_memory_after_n_mallocs) { cpputest_malloc_set_out_of_memory_countdown(3); void * m1 = cpputest_malloc(10); void * m2 = cpputest_malloc(11); void * m3 = cpputest_malloc(12); CHECK(m1 != NULLPTR); CHECK(m2 != NULLPTR); CHECK(m3 == NULLPTR); cpputest_malloc_set_not_out_of_memory(); cpputest_free(m1); cpputest_free(m2); } TEST(TestHarness_c, cpputest_malloc_out_of_memory_after_0_mallocs) { cpputest_malloc_set_out_of_memory_countdown(0); void * m1 = cpputest_malloc(10); CHECK(m1 == NULLPTR); cpputest_malloc_set_not_out_of_memory(); } TEST(TestHarness_c, count_mallocs) { cpputest_malloc_count_reset(); void * m1 = cpputest_malloc(10); void * m2 = cpputest_malloc(11); void * m3 = cpputest_malloc(12); cpputest_free(m1); cpputest_free(m2); cpputest_free(m3); LONGS_EQUAL(3, cpputest_malloc_get_count()); } #ifdef CPPUTEST_USE_STRDUP_MACROS TEST(TestHarness_c, cpputest_strdup) { char * mem = cpputest_strdup("0123456789"); CHECK(NULLPTR != mem); STRCMP_EQUAL("0123456789", mem); cpputest_free(mem); } TEST(TestHarness_c, cpputest_strndup) { char * mem = cpputest_strndup("0123456789", 3); CHECK(NULLPTR != mem); STRCMP_EQUAL("012", mem); cpputest_free(mem); } #endif TEST(TestHarness_c, cpputest_calloc) { void * mem = cpputest_calloc(10, 10); CHECK(NULLPTR != mem); cpputest_free(mem); } TEST(TestHarness_c, cpputest_realloc_larger) { const char* number_string = "123456789"; char* mem1 = (char*) cpputest_malloc(10); SimpleString::StrNCpy(mem1, number_string, 10); CHECK(mem1 != NULLPTR); char* mem2 = (char*) cpputest_realloc(mem1, 1000); CHECK(mem2 != NULLPTR); STRCMP_EQUAL(number_string, mem2); cpputest_free(mem2); } #include "CppUTest/MemoryLeakDetector.h" TEST(TestHarness_c, macros) { #if CPPUTEST_USE_MALLOC_MACROS MemoryLeakDetector* memLeakDetector = MemoryLeakWarningPlugin::getGlobalDetector(); size_t memLeaks = memLeakDetector->totalMemoryLeaks(mem_leak_period_checking); #endif void* mem1 = malloc(10); void* mem2 = calloc(10, 20); void* mem3 = realloc(mem2, 100); #if CPPUTEST_USE_MALLOC_MACROS LONGS_EQUAL(memLeaks + 2, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); #endif free(mem1); free(mem3); #if CPPUTEST_USE_MALLOC_MACROS LONGS_EQUAL(memLeaks, memLeakDetector->totalMemoryLeaks(mem_leak_period_checking)); #endif } TEST(TestHarness_c, callocInitializedToZero) { char* mem = (char*) calloc(20, sizeof(char)); for (int i = 0; i < 20; i++) CHECK(mem[i] == 0); free(mem); } TEST(TestHarness_c, callocShouldReturnNULLWhenOutOfMemory) { cpputest_malloc_set_out_of_memory_countdown(0); void * m = cpputest_calloc(1, 1); CHECK(m == NULLPTR); cpputest_malloc_set_not_out_of_memory(); } #endif cpputest-4.0/tests/CppUTest/MemoryLeakDetectorTest.cpp000644 000765 000024 00000062355 13663176127 024161 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/PlatformSpecificFunctions.h" class MemoryLeakFailureForTest: public MemoryLeakFailure { public: virtual ~MemoryLeakFailureForTest() _destructor_override { } virtual void fail(char* fail_string) _override { *message = fail_string; } SimpleString *message; }; class NewAllocatorForMemoryLeakDetectionTest: public TestMemoryAllocator { public: NewAllocatorForMemoryLeakDetectionTest() : TestMemoryAllocator("Standard New Allocator", "new", "delete"), alloc_called(0), free_called(0) { } int alloc_called; int free_called; char* alloc_memory(size_t size, const char*, size_t) { alloc_called++; return TestMemoryAllocator::alloc_memory(size, "file", 1); } void free_memory(char* memory, size_t size, const char* file, size_t line) { free_called++; TestMemoryAllocator::free_memory(memory, size, file, line); } }; class AllocatorForMemoryLeakDetectionTest: public TestMemoryAllocator { public: AllocatorForMemoryLeakDetectionTest() : alloc_called(0), free_called(0), allocMemoryLeakNodeCalled(0), freeMemoryLeakNodeCalled(0) { } int alloc_called; int free_called; int allocMemoryLeakNodeCalled; int freeMemoryLeakNodeCalled; char* alloc_memory(size_t size, const char* file, size_t line) { alloc_called++; return TestMemoryAllocator::alloc_memory(size, file, line); } void free_memory(char* memory, size_t size, const char* file, size_t line) { free_called++; TestMemoryAllocator::free_memory(memory, size, file, line); } char* allocMemoryLeakNode(size_t size) { allocMemoryLeakNodeCalled++; return TestMemoryAllocator::alloc_memory(size, __FILE__, __LINE__); } void freeMemoryLeakNode(char* memory) { freeMemoryLeakNodeCalled++; TestMemoryAllocator::free_memory(memory, 0, __FILE__, __LINE__); } }; TEST_GROUP(MemoryLeakDetectorTest) { MemoryLeakDetector* detector; MemoryLeakFailureForTest *reporter; AllocatorForMemoryLeakDetectionTest* testAllocator; void setup() { reporter = new MemoryLeakFailureForTest; detector = new MemoryLeakDetector(reporter); testAllocator = new AllocatorForMemoryLeakDetectionTest; detector->enable(); detector->startChecking(); reporter->message = new SimpleString(); } void teardown() { delete reporter->message; delete detector; delete reporter; delete testAllocator; } }; TEST(MemoryLeakDetectorTest, OneLeak) { char* mem = detector->allocMemory(testAllocator, 3); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak(s) found", output.asCharString()); STRCMP_CONTAINS("size: 3", output.asCharString()); STRCMP_CONTAINS("alloc", output.asCharString()); STRCMP_CONTAINS(StringFromFormat("%p", (void*) mem).asCharString(), output.asCharString()); STRCMP_CONTAINS("Total number of leaks", output.asCharString()); PlatformSpecificFree(mem); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(0, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, sequenceNumbersOfMemoryLeaks) { char* mem = detector->allocMemory(defaultNewAllocator(), 1); char* mem2 = detector->allocMemory(defaultNewAllocator(), 2); char* mem3 = detector->allocMemory(defaultNewAllocator(), 3); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Alloc num (1)", output.asCharString()); STRCMP_CONTAINS("Alloc num (2)", output.asCharString()); STRCMP_CONTAINS("Alloc num (3)", output.asCharString()); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); PlatformSpecificFree(mem3); } TEST(MemoryLeakDetectorTest, memoryDumpOutput) { char* mem = detector->allocMemory(defaultNewAllocator(), 6); SimpleString::StrNCpy(mem, "test1", 6); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Alloc num (1)", output.asCharString()); STRCMP_CONTAINS("Leak size: 6 Allocated at", output.asCharString()); STRCMP_CONTAINS("Content:", output.asCharString()); STRCMP_CONTAINS("0000: 74 65 73 74 31 00 |test1.|", output.asCharString()); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, OneHundredLeaks) { const int amount_alloc = 100; char *mem[amount_alloc]; for (int i = 0; i < amount_alloc; i++) mem[i] = detector->allocMemory(defaultMallocAllocator(), 3); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak(s) found", output.asCharString()); STRCMP_CONTAINS("Total number of leaks", output.asCharString()); STRCMP_CONTAINS("Memory leak reports about malloc and free", output.asCharString()); //don't reuse i for vc6 compatibility for (int j = 0; j < amount_alloc; j++) PlatformSpecificFree(mem[j]); } TEST(MemoryLeakDetectorTest, OneLeakOutsideCheckingPeriod) { detector->stopChecking(); char* mem = detector->allocMemory(defaultNewAllocator(), 4); SimpleString output = detector->report(mem_leak_period_all); CHECK(output.contains("Memory leak(s) found")); CHECK(output.contains("size: 4")); CHECK(output.contains("new")); CHECK(output.contains("Total number of leaks")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, NoLeaksWhatsoever) { detector->stopChecking(); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_checking)); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_all)); } TEST(MemoryLeakDetectorTest, TwoLeaksUsingOperatorNew) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); char* mem2 = detector->allocMemory(defaultNewAllocator(), 8); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(output.contains("size: 8")); CHECK(output.contains("size: 4")); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); } TEST(MemoryLeakDetectorTest, OneAllocButNoLeak) { char* mem = detector->allocMemory(testAllocator, 4); detector->deallocMemory(testAllocator, mem); detector->stopChecking(); STRCMP_CONTAINS("No memory leaks", detector->report(mem_leak_period_checking)); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, TwoAllocOneFreeOneLeak) { char* mem = detector->allocMemory(testAllocator, 4); char* mem2 = detector->allocMemory(testAllocator, 12); detector->deallocMemory(testAllocator, mem); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(output.contains("Leak size: 12")); CHECK(!output.contains("Leak size: 4")); PlatformSpecificFree(mem2); LONGS_EQUAL(2, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); } TEST(MemoryLeakDetectorTest, TwoAllocOneFreeOneLeakReverseOrder) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); char* mem2 = detector->allocMemory(defaultNewAllocator(), 12); detector->deallocMemory(defaultNewAllocator(), mem2); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); CHECK(!output.contains("size: 12")); CHECK(output.contains("size: 4")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, DeleteNonAlocatedMemory) { char a; char* pa = &a; detector->deallocMemory(defaultMallocAllocator(), pa, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Deallocating non-allocated memory")); CHECK(reporter->message->contains(" allocated at file: line: 0 size: 0 type: unknown")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, IgnoreMemoryAllocatedOutsideCheckingPeriod) { detector->stopChecking(); char* mem = detector->allocMemory(defaultNewAllocator(), 4); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->deallocMemory(defaultNewAllocator(), mem); } TEST(MemoryLeakDetectorTest, IgnoreMemoryAllocatedOutsideCheckingPeriodComplicatedCase) { char* mem = detector->allocMemory(defaultNewAllocator(), 4); detector->stopChecking(); char* mem2 = detector->allocMemory(defaultNewAllocator(), 8); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->clearAllAccounting(mem_leak_period_checking); PlatformSpecificFree(mem); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->startChecking(); char* mem3 = detector->allocMemory(defaultNewAllocator(), 4); detector->stopChecking(); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); detector->clearAllAccounting(mem_leak_period_checking); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->clearAllAccounting(mem_leak_period_all); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); PlatformSpecificFree(mem2); PlatformSpecificFree(mem3); } TEST(MemoryLeakDetectorTest, OneLeakUsingOperatorNewWithFileLine) { char* mem = detector->allocMemory(defaultNewAllocator(), 4, "file.cpp", 1234); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("file.cpp")); CHECK(output.contains("1234")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, OneAllocAndFreeUsingArrayNew) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 10, "file.cpp", 1234); char* mem2 = detector->allocMemory(defaultNewArrayAllocator(), 12); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("new []")); detector->deallocMemory(defaultNewArrayAllocator(), mem); detector->deallocMemory(defaultNewArrayAllocator(), mem2); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); } TEST(MemoryLeakDetectorTest, OneAllocAndFree) { char* mem = detector->allocMemory(defaultMallocAllocator(), 10, "file.cpp", 1234); char* mem2 = detector->allocMemory(defaultMallocAllocator(), 12); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("malloc")); detector->deallocMemory(defaultMallocAllocator(), mem); detector->deallocMemory(defaultMallocAllocator(), mem2, "file.c", 5678); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); } TEST(MemoryLeakDetectorTest, OneRealloc) { char* mem1 = detector->allocMemory(testAllocator, 10, "file.cpp", 1234, true); char* mem2 = detector->reallocMemory(testAllocator, mem1, 1000, "other.cpp", 5678, true); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); SimpleString output = detector->report(mem_leak_period_checking); CHECK(output.contains("other.cpp")); detector->deallocMemory(testAllocator, mem2, true); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); detector->stopChecking(); LONGS_EQUAL(1, testAllocator->alloc_called); LONGS_EQUAL(1, testAllocator->free_called); LONGS_EQUAL(2, testAllocator->allocMemoryLeakNodeCalled); LONGS_EQUAL(2, testAllocator->freeMemoryLeakNodeCalled); } TEST(MemoryLeakDetectorTest, ReallocNonAllocatedMemory) { char mem1; char* mem2 = detector->reallocMemory(testAllocator, &mem1, 5, "other.cpp", 13, true); detector->deallocMemory(testAllocator, mem2, true); detector->stopChecking(); CHECK(reporter->message->contains("Deallocating non-allocated memory\n")); CHECK(reporter->message->contains(" deallocated at file: other.cpp line: 13")); } TEST(MemoryLeakDetectorTest, AllocOneTypeFreeAnotherType) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100, "ALLOC.c", 10); detector->deallocMemory(defaultMallocAllocator(), mem, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Allocation/deallocation type mismatch")); CHECK(reporter->message->contains(" allocated at file: ALLOC.c line: 10 size: 100 type: new []")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, AllocOneTypeFreeAnotherTypeWithCheckingDisabled) { detector->disableAllocationTypeChecking(); char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100, "ALLOC.c", 10); detector->deallocMemory(defaultNewAllocator(), mem, "FREE.c", 100); detector->stopChecking(); STRCMP_EQUAL("", reporter->message->asCharString()); detector->enableAllocationTypeChecking(); } TEST(MemoryLeakDetectorTest, mallocLeakGivesAdditionalWarning) { char* mem = detector->allocMemory(defaultMallocAllocator(), 100, "ALLOC.c", 10); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); STRCMP_CONTAINS("Memory leak reports about malloc and free can be caused by allocating using the cpputest version of malloc", output.asCharString()); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, newLeakDoesNotGiveAdditionalWarning) { char* mem = detector->allocMemory(defaultNewAllocator(), 100, "ALLOC.c", 10); detector->stopChecking(); SimpleString output = detector->report(mem_leak_period_checking); CHECK(! output.contains("Memory leak reports about malloc and free")); PlatformSpecificFree(mem); } TEST(MemoryLeakDetectorTest, MarkCheckingPeriodLeaksAsNonCheckingPeriod) { char* mem = detector->allocMemory(defaultNewArrayAllocator(), 100); char* mem2 = detector->allocMemory(defaultNewArrayAllocator(), 100); detector->stopChecking(); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); detector->markCheckingPeriodLeaksAsNonCheckingPeriod(); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); LONGS_EQUAL(2, detector->totalMemoryLeaks(mem_leak_period_all)); PlatformSpecificFree(mem); PlatformSpecificFree(mem2); } TEST(MemoryLeakDetectorTest, memoryCorruption) { char* mem = detector->allocMemory(defaultMallocAllocator(), 10, "ALLOC.c", 10); mem[10] = 'O'; mem[11] = 'H'; detector->deallocMemory(defaultMallocAllocator(), mem, "FREE.c", 100); detector->stopChecking(); CHECK(reporter->message->contains("Memory corruption")); CHECK(reporter->message->contains(" allocated at file: ALLOC.c line: 10 size: 10 type: malloc")); CHECK(reporter->message->contains(" deallocated at file: FREE.c line: 100 type: free")); } TEST(MemoryLeakDetectorTest, safelyDeleteNULL) { detector->deallocMemory(defaultNewAllocator(), NULLPTR); STRCMP_EQUAL("", reporter->message->asCharString()); } TEST(MemoryLeakDetectorTest, periodDisabled) { detector->disable(); char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, periodEnabled) { detector->enable(); char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, periodChecking) { char* mem = detector->allocMemory(defaultMallocAllocator(), 2); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_disabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_enabled)); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_checking)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, defaultAllocationStageIsZero) { LONGS_EQUAL(0, detector->getCurrentAllocationStage()); } TEST(MemoryLeakDetectorTest, canFreeNoAllocations) { detector->deallocAllMemoryInCurrentAllocationStage(); LONGS_EQUAL(0, detector->getCurrentAllocationStage()); } TEST(MemoryLeakDetectorTest, increaseAllocationStage) { detector->increaseAllocationStage(); LONGS_EQUAL(1, detector->getCurrentAllocationStage()); } TEST(MemoryLeakDetectorTest, decreaseAllocationStage) { detector->increaseAllocationStage(); detector->decreaseAllocationStage(); LONGS_EQUAL(0, detector->getCurrentAllocationStage()); } TEST(MemoryLeakDetectorTest, freeAllMemoryInCurrentAllocationStage) { detector->increaseAllocationStage(); detector->allocMemory(defaultMallocAllocator(), 2); detector->allocMemory(defaultMallocAllocator(), 2); detector->deallocAllMemoryInCurrentAllocationStage(); LONGS_EQUAL(0, detector->totalMemoryLeaks(mem_leak_period_all)); } TEST(MemoryLeakDetectorTest, freeOnlyTheMemoryInTheAllocationStage) { char* mem = detector->allocMemory(defaultMallocAllocator(), 2); detector->increaseAllocationStage(); detector->allocMemory(defaultMallocAllocator(), 2); detector->deallocAllMemoryInCurrentAllocationStage(); LONGS_EQUAL(1, detector->totalMemoryLeaks(mem_leak_period_all)); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, allocateWithANullAllocatorCausesNoProblems) { char* mem = detector->allocMemory(NullUnknownAllocator::defaultAllocator(), 2); detector->deallocMemory(NullUnknownAllocator::defaultAllocator(), mem); } TEST(MemoryLeakDetectorTest, invalidateMemory) { unsigned char* mem = (unsigned char*)detector->allocMemory(defaultMallocAllocator(), 2); detector->invalidateMemory((char*)mem); CHECK(mem[0] == 0xCD); CHECK(mem[1] == 0xCD); detector->deallocMemory(defaultMallocAllocator(), mem); } TEST(MemoryLeakDetectorTest, invalidateMemoryNULLShouldWork) { detector->invalidateMemory(NULLPTR); } TEST_GROUP(MemoryLeakDetectorListTest) { }; TEST(MemoryLeakDetectorListTest, clearAllAccountingIsWorkingProperly) { MemoryLeakDetectorList listForTesting; MemoryLeakDetectorNode node1, node2, node3; node3.period_ = mem_leak_period_disabled; listForTesting.addNewNode(&node1); listForTesting.addNewNode(&node2); listForTesting.addNewNode(&node3); listForTesting.clearAllAccounting(mem_leak_period_enabled); POINTERS_EQUAL(NULLPTR, listForTesting.getFirstLeak(mem_leak_period_enabled)); CHECK(&node3 == listForTesting.getFirstLeak(mem_leak_period_disabled)); } TEST_GROUP(SimpleStringBuffer) { }; TEST(SimpleStringBuffer, initialStringIsEmpty) { SimpleStringBuffer buffer; STRCMP_EQUAL("", buffer.toString()); } TEST(SimpleStringBuffer, simpleTest) { SimpleStringBuffer buffer; buffer.add("Hello"); buffer.add(" World"); STRCMP_EQUAL("Hello World", buffer.toString()); } TEST(SimpleStringBuffer, writePastLimit) { SimpleStringBuffer buffer; for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN * 2; i++) buffer.add("h"); SimpleString str("h", SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN-1); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, setWriteLimit) { SimpleStringBuffer buffer; buffer.setWriteLimit(10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN ; i++) buffer.add("h"); SimpleString str("h", 10); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, setWriteLimitTooHighIsIgnored) { SimpleStringBuffer buffer; buffer.setWriteLimit(SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN+10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN+10; i++) buffer.add("h"); SimpleString str("h", SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN-1); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, resetWriteLimit) { SimpleStringBuffer buffer; buffer.setWriteLimit(10); for (int i = 0; i < SimpleStringBuffer::SIMPLE_STRING_BUFFER_LEN ; i++) buffer.add("h"); buffer.resetWriteLimit(); buffer.add("%s", SimpleString("h", 10).asCharString()); SimpleString str("h", 20); STRCMP_EQUAL(str.asCharString(), buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneLinePlusOnePartial) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeefdeadbeefhopsxx", 22); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 64 65 61 64 62 65 65 66 |deadbeefdeadbeef|\n" " 0010: 68 6f 70 73 78 78 |hopsxx|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpNonPrintable) { SimpleStringBuffer buffer; // Ensure we test edge cases - NUL, 0x1F, 0x7F, 0xFF buffer.addMemoryDump("\x15\x7f\xff\x00\x1ftdd", 8); STRCMP_EQUAL(" 0000: 15 7f ff 00 1f 74 64 64 |.....tdd|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneLine) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeefdeadbeef", 16); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 64 65 61 64 62 65 65 66 |deadbeefdeadbeef|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneHalfLine) { SimpleStringBuffer buffer; buffer.addMemoryDump("deadbeef", 8); STRCMP_EQUAL(" 0000: 64 65 61 64 62 65 65 66 |deadbeef|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpOneByte) { SimpleStringBuffer buffer; buffer.addMemoryDump("Z", 1); STRCMP_EQUAL(" 0000: 5a |Z|\n", buffer.toString()); } TEST(SimpleStringBuffer, addMemoryDumpZeroBytes) { SimpleStringBuffer buffer; buffer.addMemoryDump("", 0); STRCMP_EQUAL("", buffer.toString()); } TEST_GROUP(ReallocBugReported) { MemoryLeakFailureForTest reporter; }; TEST(ReallocBugReported, CanSafelyDoAReallocWithANewAllocator) { MemoryLeakDetector detector(&reporter); char* mem = detector.allocMemory(defaultNewAllocator(), 5, "file", 1); mem = detector.reallocMemory(defaultNewAllocator(), mem, 19, "file", 1); detector.deallocMemory(defaultNewAllocator(), mem); } TEST(ReallocBugReported, CanSafelyDoAReallocWithAMallocAllocator) { MemoryLeakDetector detector(&reporter); char* mem = detector.allocMemory(defaultMallocAllocator(), 5, "file", 1, true); mem = detector.reallocMemory(defaultMallocAllocator(), mem, 19, "file", 1, true); detector.deallocMemory(defaultMallocAllocator(), mem, true); } cpputest-4.0/tests/CppUTest/TestUTestMacro.cpp000644 000765 000024 00000126067 13663176127 022451 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #define CHECK_TEST_FAILS_PROPER_WITH_TEXT(text) fixture.checkTestFailsWithProperTestLocation(text, __FILE__, __LINE__) // Mainly this is for Visual C++, but we'll define it for any system that has the same behavior // of a 32-bit long on a 64-bit system #if defined(CPPUTEST_64BIT) && defined(CPPUTEST_64BIT_32BIT_LONGS) // Forcing the value to be unsigned long long means that there's no sign-extension to perform #define to_void_pointer(x) ((void *)x##ULL) #define to_func_pointer(x) ((void (*)())x##ULL) #else // Probably not needed, but let's guarantee that the value is an unsigned long #define to_void_pointer(x) ((void *)x##UL) #define to_func_pointer(x) ((void (*)())x##UL) #endif TEST_GROUP(UnitTestMacros) { TestTestingFixture fixture; }; static void _failingTestMethodWithFAIL() { FAIL("This test fails"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FAILMakesTheTestFailPrintsTheRightResultAndStopsExecuting) { fixture.runTestWithMethod(_failingTestMethodWithFAIL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("This test fails"); } TEST(UnitTestMacros, FAILWillPrintTheFileThatItFailed) { fixture.runTestWithMethod(_failingTestMethodWithFAIL); CHECK_TEST_FAILS_PROPER_WITH_TEXT(__FILE__); } TEST(UnitTestMacros, FAILBehavesAsAProperMacro) { if (false) FAIL(""); else CHECK(true); if (true) CHECK(true); else FAIL(""); } IGNORE_TEST(UnitTestMacros, FAILworksInAnIgnoredTest) { FAIL("die!"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _UNSIGNED_LONGS_EQUALTestMethod() { UNSIGNED_LONGS_EQUAL(1, 1); UNSIGNED_LONGS_EQUAL(1, 0); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestUNSIGNED_LONGS_EQUAL) { fixture.runTestWithMethod(_UNSIGNED_LONGS_EQUALTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); } TEST(UnitTestMacros, UNSIGNED_LONGS_EQUALBehavesAsProperMacro) { if (false) UNSIGNED_LONGS_EQUAL(1, 0); else UNSIGNED_LONGS_EQUAL(1, 1); } IGNORE_TEST(UnitTestMacros, UNSIGNED_LONGS_EQUALWorksInAnIgnoredTest) { UNSIGNED_LONGS_EQUAL(1, 0); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _UNSIGNED_LONGS_EQUAL_TEXTTestMethod() { UNSIGNED_LONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestUNSIGNED_LONGS_EQUAL_TEXT) { fixture.runTestWithMethod(_UNSIGNED_LONGS_EQUAL_TEXTTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, UNSIGNED_LONGS_EQUAL_TEXTBehavesAsProperMacro) { if (false) UNSIGNED_LONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); else UNSIGNED_LONGS_EQUAL_TEXT(1, 1, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, UNSIGNED_LONGS_EQUAL_TEXTWorksInAnIgnoredTest) { UNSIGNED_LONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE #ifdef CPPUTEST_USE_LONG_LONG static void _LONGLONGS_EQUALTestMethod() { LONGLONGS_EQUAL(1, 1); LONGLONGS_EQUAL(1, 0); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestLONGLONGS_EQUAL) { fixture.runTestWithMethod(_LONGLONGS_EQUALTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); } TEST(UnitTestMacros, LONGLONGS_EQUALBehavesAsProperMacro) { if (false) LONGLONGS_EQUAL(1, 0); else LONGLONGS_EQUAL(1, 1); } IGNORE_TEST(UnitTestMacros, LONGLONGS_EQUALWorksInAnIgnoredTest) { LONGLONGS_EQUAL(1, 0); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _LONGLONGS_EQUAL_TEXTTestMethod() { LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestLONGLONGS_EQUAL_TEXT) { fixture.runTestWithMethod(_LONGLONGS_EQUAL_TEXTTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, LONGLONGS_EQUAL_TEXTBehavesAsProperMacro) { if (false) LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); else LONGLONGS_EQUAL_TEXT(1, 1, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, LONGLONGS_EQUAL_TEXTWorksInAnIgnoredTest) { LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _UNSIGNED_LONGLONGS_EQUALTestMethod() { UNSIGNED_LONGLONGS_EQUAL(1, 1); UNSIGNED_LONGLONGS_EQUAL(1, 0); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestUNSIGNED_LONGLONGS_EQUAL) { fixture.runTestWithMethod(_UNSIGNED_LONGLONGS_EQUALTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); } TEST(UnitTestMacros, UNSIGNED_LONGLONGS_EQUALBehavesAsProperMacro) { if (false) UNSIGNED_LONGLONGS_EQUAL(1, 0); else UNSIGNED_LONGLONGS_EQUAL(1, 1); } IGNORE_TEST(UnitTestMacros, UNSIGNED_LONGLONGS_EQUALWorksInAnIgnoredTest) { UNSIGNED_LONGLONGS_EQUAL(1, 0); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _UNSIGNED_LONGLONGS_EQUAL_TEXTTestMethod() { UNSIGNED_LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestUNSIGNED_LONGLONGS_EQUAL_TEXT) { fixture.runTestWithMethod(_UNSIGNED_LONGLONGS_EQUAL_TEXTTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0 (0x0)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, UNSIGNED_LONGLONGS_EQUAL_TEXTBehavesAsProperMacro) { if (false) UNSIGNED_LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); else UNSIGNED_LONGLONGS_EQUAL_TEXT(1, 1, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, UNSIGNED_LONGLONGS_EQUAL_TEXTWorksInAnIgnoredTest) { UNSIGNED_LONGLONGS_EQUAL_TEXT(1, 0, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE #else static void _LONGLONGS_EQUALFailsWithUnsupportedFeatureTestMethod() { LONGLONGS_EQUAL(1, 1); } // LCOV_EXCL_LINE static void _UNSIGNED_LONGLONGS_EQUALFailsWithUnsupportedFeatureTestMethod() { UNSIGNED_LONGLONGS_EQUAL(1, 1); } // LCOV_EXCL_LINE TEST(UnitTestMacros, LONGLONGS_EQUALFailsWithUnsupportedFeature) { fixture.runTestWithMethod(_LONGLONGS_EQUALFailsWithUnsupportedFeatureTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("\"CPPUTEST_USE_LONG_LONG\" is not supported"); } TEST(UnitTestMacros, UNSIGNED_LONGLONGS_EQUALFailsWithUnsupportedFeature) { fixture.runTestWithMethod(_UNSIGNED_LONGLONGS_EQUALFailsWithUnsupportedFeatureTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("\"CPPUTEST_USE_LONG_LONG\" is not supported"); } #endif /* CPPUTEST_USE_LONG_LONG */ static void _failingTestMethodWithCHECK() { CHECK(false); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK) { fixture.runTestWithMethod(_failingTestMethodWithCHECK); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK(false) failed"); } TEST(UnitTestMacros, CHECKBehavesAsProperMacro) { if (false) CHECK(false); else CHECK(true); } IGNORE_TEST(UnitTestMacros, CHECKWorksInAnIgnoredTest) { CHECK(false); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_TEXT() { CHECK_TEXT(false, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK(false) failed"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_TEXTBehavesAsProperMacro) { if (false) CHECK_TEXT(false, "false"); else CHECK_TEXT(true, "true"); } IGNORE_TEST(UnitTestMacros, CHECK_TEXTWorksInAnIgnoredTest) { CHECK_TEXT(false, "false"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_TRUE() { CHECK_TRUE(false); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_TRUE) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_TRUE); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_TRUE(false) failed"); } TEST(UnitTestMacros, CHECK_TRUEBehavesAsProperMacro) { if (false) CHECK_TRUE(false); else CHECK_TRUE(true); } IGNORE_TEST(UnitTestMacros, CHECK_TRUEWorksInAnIgnoredTest) { CHECK_TRUE(false); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_TRUE_TEXT() { CHECK_TRUE_TEXT(false, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_TRUE_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_TRUE_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_TRUE(false) failed"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_TRUE_TEXTBehavesAsProperMacro) { if (false) CHECK_TRUE_TEXT(false, "Failed because it failed"); else CHECK_TRUE_TEXT(true, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, CHECK_TRUE_TEXTWorksInAnIgnoredTest) { CHECK_TRUE_TEXT(false, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_FALSE() { CHECK_FALSE(true); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_FALSE) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_FALSE); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_FALSE(true) failed"); } TEST(UnitTestMacros, CHECK_FALSEBehavesAsProperMacro) { if (false) CHECK_FALSE(true); else CHECK_FALSE(false); } IGNORE_TEST(UnitTestMacros, CHECK_FALSEWorksInAnIgnoredTest) { CHECK_FALSE(true); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_FALSE_TEXT() { CHECK_FALSE_TEXT(true, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_FALSE_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_FALSE_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_FALSE(true)"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_FALSE_TEXTBehavesAsProperMacro) { if (false) CHECK_FALSE_TEXT(true, "Failed because it failed"); else CHECK_FALSE_TEXT(false, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, CHECK_FALSE_TEXTWorksInAnIgnoredTest) { CHECK_FALSE_TEXT(true, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_EQUAL() { CHECK_EQUAL(1, 2); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <2>"); } static void _failingTestMethodWithCHECK_COMPARE() { double small = 0.5, big = 0.8; CHECK_COMPARE(small, >=, big); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_COMPARE) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_COMPARE); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_COMPARE(0.5 >= 0.8)"); } TEST(UnitTestMacros, CHECK_COMPAREBehavesAsProperMacro) { if (false) CHECK_COMPARE(1, >, 2); else CHECK_COMPARE(1, <, 2); } IGNORE_TEST(UnitTestMacros, CHECK_COMPAREWorksInAnIgnoredTest) { CHECK_COMPARE(1, >, 2); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_COMPARE_TEXT() { double small = 0.5, big = 0.8; CHECK_COMPARE_TEXT(small, >=, big, "small bigger than big"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_COMPARE_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_COMPARE_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("CHECK_COMPARE(0.5 >= 0.8)"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("small bigger than big"); } TEST(UnitTestMacros, CHECK_COMPARE_TEXTBehavesAsProperMacro) { if (false) CHECK_COMPARE_TEXT(1, >, 2, "1 bigger than 2"); else CHECK_COMPARE_TEXT(1, <, 2, "1 smaller than 2"); } IGNORE_TEST(UnitTestMacros, CHECK_COMPARE_TEXTWorksInAnIgnoredTest) { CHECK_COMPARE_TEXT(1, >, 2, "1 smaller than 2"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static int countInCountingMethod; static int _countingMethod() { return countInCountingMethod++; } TEST(UnitTestMacros, LONGS_EQUAL_macroExpressionSafety) { LONGS_EQUAL(1, 0.4 + 0.7); LONGS_EQUAL(0.4 + 0.7, 1); LONGS_EQUAL_TEXT(1, 0.4 + 0.7, "-Wconversion=great"); LONGS_EQUAL_TEXT(0.4 + 0.7, 1, "-Wconversion=great"); } TEST(UnitTestMacros, UNSIGNED_LONGS_EQUAL_macroExpressionSafety) { UNSIGNED_LONGS_EQUAL(1, 0.4 + 0.7); UNSIGNED_LONGS_EQUAL(0.4 + 0.7, 1); UNSIGNED_LONGS_EQUAL_TEXT(1, 0.4 + 0.7, "-Wconversion=great"); UNSIGNED_LONGS_EQUAL_TEXT(0.4 + 0.7, 1, "-Wconversion=great"); } TEST(UnitTestMacros, passingCheckEqualWillNotBeEvaluatedMultipleTimesWithCHECK_EQUAL) { countInCountingMethod = 0; CHECK_EQUAL(0, _countingMethod()); LONGS_EQUAL(1, countInCountingMethod); } static void _failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning() { CHECK_EQUAL(12345, _countingMethod()); } // LCOV_EXCL_LINE TEST(UnitTestMacros, failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning) { fixture.runTestWithMethod(_failing_CHECK_EQUAL_WithActualBeingEvaluatesMultipleTimesWillGiveAWarning); CHECK_TEST_FAILS_PROPER_WITH_TEXT("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect."); } static void _failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning() { CHECK_EQUAL(_countingMethod(), 12345); } // LCOV_EXCL_LINE TEST(UnitTestMacros, failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning) { fixture.runTestWithMethod(_failing_CHECK_EQUAL_WithExpectedBeingEvaluatesMultipleTimesWillGiveAWarning); CHECK_TEST_FAILS_PROPER_WITH_TEXT("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect."); } TEST(UnitTestMacros, failing_CHECK_EQUAL_withParamatersThatDontChangeWillNotGiveAnyWarning) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_EQUAL); fixture.assertPrintContainsNot("WARNING"); } TEST(UnitTestMacros, CHECK_EQUALBehavesAsProperMacro) { if (false) CHECK_EQUAL(1, 2); else CHECK_EQUAL(1, 1); } IGNORE_TEST(UnitTestMacros, CHECK_EQUALWorksInAnIgnoredTest) { CHECK_EQUAL(1, 2); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithCHECK_EQUAL_TEXT() { CHECK_EQUAL_TEXT(1, 2, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithCHECK_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <2>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHECK_EQUAL_TEXTBehavesAsProperMacro) { if (false) CHECK_EQUAL_TEXT(1, 2, "Failed because it failed"); else CHECK_EQUAL_TEXT(1, 1, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, CHECK_EQUAL_TEXTWorksInAnIgnoredTest) { CHECK_EQUAL_TEXT(1, 2, "Failed because it failed"); // LCOV_EXCL_LINE; } // LCOV_EXCL_LINE static void _failingTestMethodWithLONGS_EQUAL() { LONGS_EQUAL(1, 0xff); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithLONGS_EQUALS) { fixture.runTestWithMethod(_failingTestMethodWithLONGS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected < 1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <255 (0xff)>"); } static void _failingTestMethodWithLONGS_EQUALWithSymbolicParameters() { #define _MONDAY 1 int day_of_the_week = _MONDAY+1; LONGS_EQUAL(_MONDAY, day_of_the_week); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithLONGS_EQUALShowsSymbolicParameters) { fixture.runTestWithMethod(_failingTestMethodWithLONGS_EQUALWithSymbolicParameters); CHECK_TEST_FAILS_PROPER_WITH_TEXT("LONGS_EQUAL(_MONDAY, day_of_the_week) failed"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <2 (0x2)>"); CHECK_FALSE(fixture.getOutput().contains("Message: ")); } TEST(UnitTestMacros, LONGS_EQUALBehavesAsProperMacro) { if (false) LONGS_EQUAL(1, 2); else LONGS_EQUAL(10, 10); } IGNORE_TEST(UnitTestMacros, LONGS_EQUALWorksInAnIgnoredTest) { LONGS_EQUAL(11, 22); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithLONGS_EQUAL_TEXT() { LONGS_EQUAL_TEXT(1, 0xff, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithLONGS_EQUALS_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithLONGS_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected < 1 (0x1)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <255 (0xff)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, LONGS_EQUAL_TEXTBehavesAsProperMacro) { if (false) LONGS_EQUAL_TEXT(1, 2, "Failed because it failed"); else LONGS_EQUAL_TEXT(10, 10, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, LONGS_EQUAL_TEXTWorksInAnIgnoredTest) { LONGS_EQUAL_TEXT(11, 22, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithBYTES_EQUAL() { BYTES_EQUAL('a', 'b'); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestMacros, FailureWithBYTES_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithBYTES_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <97 (0x61)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <98 (0x62)>"); } TEST(UnitTestMacros, BYTES_EQUALBehavesAsProperMacro) { if (false) BYTES_EQUAL('a', 'b'); else BYTES_EQUAL('c', 'c'); } IGNORE_TEST(UnitTestMacros, BYTES_EQUALWorksInAnIgnoredTest) { BYTES_EQUAL('q', 'w'); // LCOV_EXCL_LINE; } // LCOV_EXCL_LINE static void _failingTestMethodWithBYTES_EQUAL_TEXT() { BYTES_EQUAL_TEXT('a', 'b', "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestMacros, FailureWithBYTES_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithBYTES_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <97 (0x61)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <98 (0x62)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, BYTES_EQUAL_TEXTBehavesAsProperMacro) { if (false) BYTES_EQUAL_TEXT('a', 'b', "Failed because it failed"); else BYTES_EQUAL_TEXT('c', 'c', "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, BYTES_EQUAL_TEXTWorksInAnIgnoredTest) { BYTES_EQUAL_TEXT('q', 'w', "Failed because it failed"); // LCOV_EXCL_LINE; } // LCOV_EXCL_LINE static void _failingTestMethodWithSIGNED_BYTES_EQUAL() { SIGNED_BYTES_EQUAL(-1, -2); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestMacros, FailureWithSIGNED_BYTES_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithSIGNED_BYTES_EQUAL); #if CPPUTEST_CHAR_BIT == 16 CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <-1 (0xffff)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <-2 (0xfffe)>"); #else CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <-1 (0xff)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <-2 (0xfe)>"); #endif } TEST(UnitTestMacros, CHARS_EQUALBehavesAsProperMacro) { if (false) SIGNED_BYTES_EQUAL(-1, -2); else SIGNED_BYTES_EQUAL(-3, -3); } IGNORE_TEST(UnitTestMacros, CHARS_EQUALWorksInAnIgnoredTest) { SIGNED_BYTES_EQUAL(-7, 19); // LCOV_EXCL_LINE; } // LCOV_EXCL_LINE static void _failingTestMethodWithSIGNED_BYTES_EQUAL_TEXT() { SIGNED_BYTES_EQUAL_TEXT(-127, -126, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestMacros, FailureWithSIGNED_BYTES_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSIGNED_BYTES_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <-127 (0x81)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <-126 (0x82)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, CHARS_EQUAL_TEXTBehavesAsProperMacro) { if (false) SIGNED_BYTES_EQUAL_TEXT(-1, -2, "Failed because it failed"); else SIGNED_BYTES_EQUAL_TEXT(-3, -3, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, SIGNED_BYTES_EQUAL_TEXTWorksInAnIgnoredTest) { SIGNED_BYTES_EQUAL_TEXT(-7, 19, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithPOINTERS_EQUAL() { POINTERS_EQUAL((void*)0xa5a5, (void*)0xf0f0); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithPOINTERS_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithPOINTERS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0xa5a5>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0xf0f0>"); } TEST(UnitTestMacros, POINTERS_EQUALBehavesAsProperMacro) { if (false) POINTERS_EQUAL(NULLPTR, to_void_pointer(0xbeefbeef)); else POINTERS_EQUAL(to_void_pointer(0xdeadbeef), to_void_pointer(0xdeadbeef)); } IGNORE_TEST(UnitTestMacros, POINTERS_EQUALWorksInAnIgnoredTest) { POINTERS_EQUAL((void*) 0xbeef, (void*) 0xdead); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithPOINTERS_EQUAL_TEXT() { POINTERS_EQUAL_TEXT((void*)0xa5a5, (void*)0xf0f0, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithPOINTERS_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithPOINTERS_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0xa5a5>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0xf0f0>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, POINTERS_EQUAL_TEXTBehavesAsProperMacro) { if (false) POINTERS_EQUAL_TEXT(NULLPTR, to_void_pointer(0xbeefbeef), "Failed because it failed"); else POINTERS_EQUAL_TEXT(to_void_pointer(0xdeadbeef), to_void_pointer(0xdeadbeef), "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, POINTERS_EQUAL_TEXTWorksInAnIgnoredTest) { POINTERS_EQUAL_TEXT((void*) 0xbeef, (void*) 0xdead, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithFUNCTIONPOINTERS_EQUAL() { FUNCTIONPOINTERS_EQUAL((void (*)())0xa5a5, (void (*)())0xf0f0); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithFUNCTIONPOINTERS_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithFUNCTIONPOINTERS_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0xa5a5>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0xf0f0>"); } TEST(UnitTestMacros, FUNCTIONPOINTERS_EQUALBehavesAsProperMacro) { if (false) FUNCTIONPOINTERS_EQUAL(NULLPTR, to_func_pointer(0xbeefbeef)); else FUNCTIONPOINTERS_EQUAL(to_func_pointer(0xdeadbeef), to_func_pointer(0xdeadbeef)); } IGNORE_TEST(UnitTestMacros, FUNCTIONPOINTERS_EQUALWorksInAnIgnoredTest) { FUNCTIONPOINTERS_EQUAL((void (*)())0xbeef, (void (*)())0xdead); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithFUNCTIONPOINTERS_EQUAL_TEXT() { FUNCTIONPOINTERS_EQUAL_TEXT((void (*)())0xa5a5, (void (*)())0xf0f0, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithFUNCTIONPOINTERS_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithFUNCTIONPOINTERS_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0xa5a5>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0xf0f0>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, FUNCTIONPOINTERS_EQUAL_TEXTBehavesAsProperMacro) { if (false) FUNCTIONPOINTERS_EQUAL_TEXT(NULLPTR, to_func_pointer(0xbeefbeef), "Failed because it failed"); else FUNCTIONPOINTERS_EQUAL_TEXT(to_func_pointer(0xdeadbeef), to_func_pointer(0xdeadbeef), "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, FUNCTIONPOINTERS_EQUAL_TEXTWorksInAnIgnoredTest) { FUNCTIONPOINTERS_EQUAL_TEXT((void (*)())0xbeef, (void (*)())0xdead, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithDOUBLES_EQUAL() { DOUBLES_EQUAL(0.12, 44.1, 0.3); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithDOUBLES_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithDOUBLES_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0.12>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <44.1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("threshold used was <0.3>"); } TEST(UnitTestMacros, DOUBLES_EQUALBehavesAsProperMacro) { if (false) DOUBLES_EQUAL(0.0, 1.1, 0.0005); else DOUBLES_EQUAL(0.1, 0.2, 0.2); } IGNORE_TEST(UnitTestMacros, DOUBLES_EQUALWorksInAnIgnoredTest) { DOUBLES_EQUAL(100.0, 0.0, 0.2); // LCOV_EXCL_LINE; } // LCOV_EXCL_LINE static void _failingTestMethodWithDOUBLES_EQUAL_TEXT() { DOUBLES_EQUAL_TEXT(0.12, 44.1, 0.3, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithDOUBLES_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithDOUBLES_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <0.12>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <44.1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("threshold used was <0.3>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, DOUBLES_EQUAL_TEXTBehavesAsProperMacro) { if (false) DOUBLES_EQUAL_TEXT(0.0, 1.1, 0.0005, "Failed because it failed"); else DOUBLES_EQUAL_TEXT(0.1, 0.2, 0.2, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, DOUBLES_EQUAL_TEXTWorksInAnIgnoredTest) { DOUBLES_EQUAL_TEXT(100.0, 0.0, 0.2, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static bool lineOfCodeExecutedAfterCheck = false; static void _passingTestMethod() { CHECK(true); lineOfCodeExecutedAfterCheck = true; } TEST(UnitTestMacros, SuccessPrintsNothing) { fixture.runTestWithMethod(_passingTestMethod); LONGS_EQUAL(0, fixture.getFailureCount()); fixture.assertPrintContains(".\nOK (1 tests"); CHECK(lineOfCodeExecutedAfterCheck); } static void _methodThatOnlyPrints() { UT_PRINT("Hello World!"); } TEST(UnitTestMacros, PrintPrintsWhateverPrintPrints) { fixture.runTestWithMethod(_methodThatOnlyPrints); LONGS_EQUAL(0, fixture.getFailureCount()); fixture.assertPrintContains("Hello World!"); fixture.assertPrintContains(__FILE__); } static void _methodThatOnlyPrintsUsingSimpleStringFromFormat() { UT_PRINT(StringFromFormat("Hello %s %d", "World!", 2009)); } TEST(UnitTestMacros, PrintPrintsSimpleStringsForExampleThoseReturnedByFromString) { fixture.runTestWithMethod(_methodThatOnlyPrintsUsingSimpleStringFromFormat); fixture.assertPrintContains("Hello World! 2009"); } static int functionThatReturnsAValue() { CHECK(0 == 0); CHECK_TEXT(0 == 0, "Shouldn't fail"); CHECK_TRUE(0 == 0); CHECK_TRUE_TEXT(0 == 0, "Shouldn't fail"); CHECK_FALSE(0 != 0); CHECK_FALSE_TEXT(0 != 0, "Shouldn't fail"); LONGS_EQUAL(1,1); LONGS_EQUAL_TEXT(1, 1, "Shouldn't fail"); BYTES_EQUAL(0xab,0xab); BYTES_EQUAL_TEXT(0xab, 0xab, "Shouldn't fail"); CHECK_EQUAL(100,100); CHECK_EQUAL_TEXT(100, 100, "Shouldn't fail"); STRCMP_EQUAL("THIS", "THIS"); STRCMP_EQUAL_TEXT("THIS", "THIS", "Shouldn't fail"); DOUBLES_EQUAL(1.0, 1.0, .01); DOUBLES_EQUAL_TEXT(1.0, 1.0, .01, "Shouldn't fail"); POINTERS_EQUAL(NULLPTR, NULLPTR); POINTERS_EQUAL_TEXT(NULLPTR, NULLPTR, "Shouldn't fail"); MEMCMP_EQUAL("THIS", "THIS", 5); MEMCMP_EQUAL_TEXT("THIS", "THIS", 5, "Shouldn't fail"); BITS_EQUAL(0x01, (unsigned char )0x01, 0xFF); BITS_EQUAL(0x0001, (unsigned short )0x0001, 0xFFFF); BITS_EQUAL(0x00000001, (unsigned long )0x00000001, 0xFFFFFFFF); BITS_EQUAL_TEXT(0x01, (unsigned char )0x01, 0xFF, "Shouldn't fail"); return 0; } TEST(UnitTestMacros, allMacrosFromFunctionThatReturnsAValue) { functionThatReturnsAValue(); } TEST(UnitTestMacros, MEMCMP_EQUALBehavesAsAProperMacro) { if (false) MEMCMP_EQUAL("TEST", "test", 5); else MEMCMP_EQUAL("TEST", "TEST", 5); } IGNORE_TEST(UnitTestMacros, MEMCMP_EQUALWorksInAnIgnoredTest) { MEMCMP_EQUAL("TEST", "test", 5); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _MEMCMP_EQUALFailingTestMethodWithUnequalInput() { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; unsigned char actualData[] = { 0x00, 0x01, 0x03, 0x03 }; MEMCMP_EQUAL(expectedData, actualData, sizeof(expectedData)); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithUnequalInput) { fixture.runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithUnequalInput); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <00 01 02 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <00 01 03 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 2"); } static void _MEMCMP_EQUALFailingTestMethodWithNullExpected() { unsigned char actualData[] = { 0x00, 0x01, 0x02, 0x03 }; MEMCMP_EQUAL(NULLPTR, actualData, sizeof(actualData)); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithNullExpected) { fixture.runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithNullExpected); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <00 01 02 03>"); } static void _MEMCMP_EQUALFailingTestMethodWithNullActual() { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; MEMCMP_EQUAL(expectedData, NULLPTR, sizeof(expectedData)); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, MEMCMP_EQUALFailureWithNullActual) { fixture.runTestWithMethod(_MEMCMP_EQUALFailingTestMethodWithNullActual); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <00 01 02 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } TEST(UnitTestMacros, MEMCMP_EQUALNullExpectedNullActual) { MEMCMP_EQUAL(NULLPTR, NULLPTR, 0); MEMCMP_EQUAL(NULLPTR, NULLPTR, 1024); } TEST(UnitTestMacros, MEMCMP_EQUALNullPointerIgnoredInExpectationWhenSize0) { unsigned char actualData[] = { 0x00, 0x01, 0x03, 0x03 }; MEMCMP_EQUAL(NULLPTR, actualData, 0); } TEST(UnitTestMacros, MEMCMP_EQUALNullPointerIgnoredInActualWhenSize0) { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; MEMCMP_EQUAL(expectedData, NULLPTR, 0); } static void _failingTestMethodWithMEMCMP_EQUAL_TEXT() { unsigned char expectedData[] = { 0x00, 0x01, 0x02, 0x03 }; unsigned char actualData[] = { 0x00, 0x01, 0x03, 0x03 }; MEMCMP_EQUAL_TEXT(expectedData, actualData, sizeof(expectedData), "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithMEMCMP_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithMEMCMP_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <00 01 02 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <00 01 03 03>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 2"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, MEMCMP_EQUAL_TEXTBehavesAsAProperMacro) { if (false) MEMCMP_EQUAL_TEXT("TEST", "test", 5, "Failed because it failed"); else MEMCMP_EQUAL_TEXT("TEST", "TEST", 5, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, MEMCMP_EQUAL_TEXTWorksInAnIgnoredTest) { MEMCMP_EQUAL_TEXT("TEST", "test", 5, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, BITS_EQUALBehavesAsAProperMacro) { if (false) BITS_EQUAL(0x00, 0xFF, 0xFF); else BITS_EQUAL(0x00, 0x00, 0xFF); } IGNORE_TEST(UnitTestMacros, BITS_EQUALWorksInAnIgnoredTest) { BITS_EQUAL(0x00, 0xFF, 0xFF); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _BITS_EQUALFailingTestMethodWithUnequalInput() { BITS_EQUAL(0x00, 0xFF, 0xFF); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, BITS_EQUALFailureWithUnequalInput) { fixture.runTestWithMethod(_BITS_EQUALFailingTestMethodWithUnequalInput); CHECK_TEST_FAILS_PROPER_WITH_TEXT("00000000>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("11111111>"); } TEST(UnitTestMacros, BITS_EQUALZeroMaskEqual) { BITS_EQUAL(0x00, 0xFF, 0x00); } static void _failingTestMethodWithBITS_EQUAL_TEXT() { BITS_EQUAL_TEXT(0x00, 0xFFFFFFFF, 0xFF, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithBITS_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithBITS_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, BITS_EQUAL_TEXTBehavesAsAProperMacro) { if (false) BITS_EQUAL_TEXT(0x00, 0xFF, 0xFF, "Failed because it failed"); else BITS_EQUAL_TEXT(0x00, 0x00, 0xFF, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, BITS_EQUAL_TEXTWorksInAnIgnoredTest) { BITS_EQUAL_TEXT(0x00, 0xFF, 0xFF, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE #if defined(__cplusplus) && __cplusplus >= 201103L enum class ScopedIntEnum { A, B }; static void _ENUMS_EQUAL_INTWithScopedIntEnumTestMethod() { ENUMS_EQUAL_INT(ScopedIntEnum::B, ScopedIntEnum::B); ENUMS_EQUAL_INT(ScopedIntEnum::B, ScopedIntEnum::A); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_INTWithScopedIntEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_INTWithScopedIntEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); } TEST(UnitTestMacros, ENUMS_EQUAL_INTWithScopedIntEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_INT(ScopedIntEnum::B, ScopedIntEnum::A); else ENUMS_EQUAL_INT(ScopedIntEnum::B, ScopedIntEnum::B); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_INTWithScopedIntEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_INT(ScopedIntEnum::B, ScopedIntEnum::A); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _ENUMS_EQUAL_INT_TEXTWithScopedIntEnumTestMethod() { ENUMS_EQUAL_INT_TEXT(ScopedIntEnum::B, ScopedIntEnum::A, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_INT_TEXTWithScopedIntEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_INT_TEXTWithScopedIntEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, ENUMS_EQUAL_INT_TEXTWithScopedIntEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_INT_TEXT(ScopedIntEnum::B, ScopedIntEnum::A, "Failed because it failed"); else ENUMS_EQUAL_INT_TEXT(ScopedIntEnum::B, ScopedIntEnum::B, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_EQUAL_INT_TEXTWithScopedIntEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_INT_TEXT(ScopedIntEnum::B, ScopedIntEnum::A, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE enum class ScopedLongEnum : long { A, B }; static void _ENUMS_EQUAL_TYPEWithScopedLongEnumTestMethod() { ENUMS_EQUAL_TYPE(long, ScopedLongEnum::B, ScopedLongEnum::B); ENUMS_EQUAL_TYPE(long, ScopedLongEnum::B, ScopedLongEnum::A); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_TYPEWithScopedLongEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_TYPEWithScopedLongEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); } TEST(UnitTestMacros, ENUMS_EQUAL_TYPEWithScopedLongEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_TYPE(long, ScopedLongEnum::B, ScopedLongEnum::A); else ENUMS_EQUAL_TYPE(long, ScopedLongEnum::B, ScopedLongEnum::B); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_TYPEWithScopedLongEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_TYPE(long, ScopedLongEnum::B, ScopedLongEnum::A); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _ENUMS_EQUAL_TYPE_TEXTWithScopedLongEnumTestMethod() { ENUMS_EQUAL_TYPE_TEXT(long, ScopedLongEnum::B, ScopedLongEnum::A, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_TYPE_TEXTWithScopedLongEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_TYPE_TEXTWithScopedLongEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, ENUMS_EQUAL_TYPE_TEXTWithScopedLongEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_TYPE_TEXT(long, ScopedLongEnum::B, ScopedLongEnum::A, "Failed because it failed"); else ENUMS_EQUAL_TYPE_TEXT(long, ScopedLongEnum::B, ScopedLongEnum::B, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_EQUAL_TYPE_TEXTWithScopedLongEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_TYPE_TEXT(long, ScopedLongEnum::B, ScopedLongEnum::A, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE #endif enum UnscopedEnum { UNSCOPED_ENUM_A, UNSCOPED_ENUM_B }; static void _ENUMS_EQUAL_INTWithUnscopedEnumTestMethod() { ENUMS_EQUAL_INT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_B); ENUMS_EQUAL_INT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_INTWithUnscopedEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_INTWithUnscopedEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); } TEST(UnitTestMacros, ENUMS_EQUAL_INTWithUnscopedEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_INT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A); else ENUMS_EQUAL_INT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_B); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_INTWithUnscopedEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_INT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _ENUMS_EQUAL_INT_TEXTWithUnscopedEnumTestMethod() { ENUMS_EQUAL_INT_TEXT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A, "Failed because it failed"); } // LCOV_EXCL_LINE TEST(UnitTestMacros, TestENUMS_EQUAL_INT_TEXTWithUnscopedEnum) { fixture.runTestWithMethod(_ENUMS_EQUAL_INT_TEXTWithUnscopedEnumTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <1>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <0>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestMacros, ENUMS_EQUAL_INT_TEXTWithUnscopedEnumBehavesAsProperMacro) { if (false) ENUMS_EQUAL_INT_TEXT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A, "Failed because it failed"); else ENUMS_EQUAL_INT_TEXT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_B, "Failed because it failed"); } IGNORE_TEST(UnitTestMacros, ENUMS_EQUAL_EQUAL_INT_TEXTWithUnscopedEnumWorksInAnIgnoredTest) { ENUMS_EQUAL_INT_TEXT(UNSCOPED_ENUM_B, UNSCOPED_ENUM_A, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE #if CPPUTEST_USE_STD_CPP_LIB static void _failingTestMethod_NoThrowWithCHECK_THROWS() { CHECK_THROWS(int, (void) (1+2)); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_THROWS_whenDoesntThrow) { fixture.runTestWithMethod(_failingTestMethod_NoThrowWithCHECK_THROWS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected to throw int"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but threw nothing"); LONGS_EQUAL(1, fixture.getCheckCount()); } static void _succeedingTestMethod_CorrectThrowWithCHECK_THROWS() { CHECK_THROWS(int, throw 4); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestMacros, SuccessWithCHECK_THROWS) { fixture.runTestWithMethod(_succeedingTestMethod_CorrectThrowWithCHECK_THROWS); LONGS_EQUAL(1, fixture.getCheckCount()); } static void _failingTestMethod_WrongThrowWithCHECK_THROWS() { CHECK_THROWS(int, throw 4.3); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestMacros, FailureWithCHECK_THROWS_whenWrongThrow) { fixture.runTestWithMethod(_failingTestMethod_WrongThrowWithCHECK_THROWS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected to throw int"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but threw a different type"); LONGS_EQUAL(1, fixture.getCheckCount()); } TEST(UnitTestMacros, MultipleCHECK_THROWS_inOneScope) { CHECK_THROWS(int, throw 4); CHECK_THROWS(int, throw 4); } #endif cpputest-4.0/tests/CppUTest/JUnitOutputTest.cpp000644 000765 000024 00000064171 13663176127 022672 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/JUnitTestOutput.h" #include "CppUTest/TestResult.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/SimpleString.h" class FileForJUnitOutputTests { SimpleString name_; bool isOpen_; SimpleString buffer_; FileForJUnitOutputTests* next_; SimpleStringCollection linesOfFile_; public: FileForJUnitOutputTests(const SimpleString& filename, FileForJUnitOutputTests* next) : name_(filename), isOpen_(true), next_(next) {} FileForJUnitOutputTests* nextFile() { return next_; } SimpleString name() { return name_; } void write(const SimpleString& buffer) { buffer_ += buffer; } void close() { isOpen_ = false; } const char* line(size_t lineNumber) { buffer_.split("\n", linesOfFile_); return linesOfFile_[lineNumber-1].asCharString(); } const char* lineFromTheBack(size_t lineNumberFromTheBack) { return line(amountOfLines() - (lineNumberFromTheBack - 1)); } size_t amountOfLines() { buffer_.split("\n", linesOfFile_); return linesOfFile_.size(); } SimpleString content() { return buffer_; } }; class FileSystemForJUnitTestOutputTests { FileForJUnitOutputTests* firstFile_; public: FileSystemForJUnitTestOutputTests() : firstFile_(NULLPTR) {} ~FileSystemForJUnitTestOutputTests() { clear(); } void clear(void) { while (firstFile_) { FileForJUnitOutputTests* fileToBeDeleted = firstFile_; firstFile_ = firstFile_->nextFile(); delete fileToBeDeleted; } } FileForJUnitOutputTests* openFile(const SimpleString& filename) { firstFile_ = new FileForJUnitOutputTests(filename, firstFile_); return firstFile_; } int amountOfFiles() { int totalAmountOfFiles = 0; for (FileForJUnitOutputTests* current = firstFile_; current != NULLPTR; current = current->nextFile()) totalAmountOfFiles++; return totalAmountOfFiles; } bool fileExists(const char* filename) { FileForJUnitOutputTests *searchedFile = file(filename); return (searchedFile != NULLPTR); } FileForJUnitOutputTests* file(const char* filename) { for (FileForJUnitOutputTests* current = firstFile_; current != NULLPTR; current = current->nextFile()) if (current->name() == filename) return current; return NULLPTR; } }; extern "C" { static long millisTime = 0; static const char* theTime = ""; static long MockGetPlatformSpecificTimeInMillis() { return millisTime; } static const char* MockGetPlatformSpecificTimeString() { return theTime; } } class JUnitTestOutputTestRunner { TestResult result_; const char* currentGroupName_; UtestShell* currentTest_; bool firstTestInGroup_; int timeTheTestTakes_; unsigned int numberOfChecksInTest_; TestFailure* testFailure_; public: explicit JUnitTestOutputTestRunner(const TestResult& result) : result_(result), currentGroupName_(NULLPTR), currentTest_(NULLPTR), firstTestInGroup_(true), timeTheTestTakes_(0), numberOfChecksInTest_(0), testFailure_(NULLPTR) { millisTime = 0; theTime = "1978-10-03T00:00:00"; UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); UT_PTR_SET(GetPlatformSpecificTimeString, MockGetPlatformSpecificTimeString); } JUnitTestOutputTestRunner& start() { result_.testsStarted(); return *this; } JUnitTestOutputTestRunner& end() { endOfPreviousTestGroup(); delete currentTest_; result_.testsEnded(); return *this; } JUnitTestOutputTestRunner& endGroupAndClearTest() { endOfPreviousTestGroup(); delete currentTest_; currentTest_ = NULLPTR; return *this; } void endOfPreviousTestGroup() { runPreviousTest(); if (currentTest_) { result_.currentGroupEnded(currentTest_); firstTestInGroup_ = true; } currentGroupName_ = NULLPTR; } JUnitTestOutputTestRunner& withGroup(const char* groupName) { runPreviousTest(); endOfPreviousTestGroup(); currentGroupName_ = groupName; return *this; } JUnitTestOutputTestRunner& withTest(const char* testName) { runPreviousTest(); delete currentTest_; currentTest_ = new UtestShell(currentGroupName_, testName, "file", 1); return *this; } JUnitTestOutputTestRunner& withIgnoredTest(const char* testName) { runPreviousTest(); delete currentTest_; currentTest_ = new IgnoredUtestShell(currentGroupName_, testName, "file", 1); return *this; } JUnitTestOutputTestRunner& inFile(const char* fileName) { if(currentTest_) { currentTest_->setFileName(fileName); } return *this; } JUnitTestOutputTestRunner& onLine(size_t lineNumber) { if(currentTest_) { currentTest_->setLineNumber(lineNumber); } return *this; } void runPreviousTest() { if (currentTest_ == NULLPTR) return; if (firstTestInGroup_) { result_.currentGroupStarted(currentTest_); firstTestInGroup_ = false; } result_.currentTestStarted(currentTest_); millisTime += timeTheTestTakes_; for(unsigned int i = 0; i < numberOfChecksInTest_; i++) { result_.countCheck(); } numberOfChecksInTest_ = 0; if (testFailure_) { result_.addFailure(*testFailure_); delete testFailure_; testFailure_ = NULLPTR; } result_.currentTestEnded(currentTest_); } JUnitTestOutputTestRunner& thatHasChecks(unsigned int numOfChecks) { numberOfChecksInTest_ = numOfChecks; return *this; } JUnitTestOutputTestRunner& thatTakes(int timeElapsed) { timeTheTestTakes_ = timeElapsed; return *this; } JUnitTestOutputTestRunner& seconds() { return *this; } JUnitTestOutputTestRunner& thatFails(const char* message, const char* file, size_t line) { testFailure_ = new TestFailure( currentTest_, file, line, message); return *this; } JUnitTestOutputTestRunner& atTime(const char* newTime) { theTime = newTime; return *this; } JUnitTestOutputTestRunner& thatPrints(const char* output) { runPreviousTest(); result_.print(output); return *this; } }; extern "C" { static FileSystemForJUnitTestOutputTests fileSystem; static PlatformSpecificFile mockFOpen(const char* filename, const char*) { return fileSystem.openFile(filename); } static void mockFPuts(const char* str, PlatformSpecificFile file) { ((FileForJUnitOutputTests*)file)->write(str); } static void mockFClose(PlatformSpecificFile file) { ((FileForJUnitOutputTests*)file)->close(); } } TEST_GROUP(JUnitOutputTest) { JUnitTestOutput *junitOutput; TestResult *result; JUnitTestOutputTestRunner *testCaseRunner; FileForJUnitOutputTests* outputFile; void setup() { UT_PTR_SET(PlatformSpecificFOpen, mockFOpen); UT_PTR_SET(PlatformSpecificFPuts, mockFPuts); UT_PTR_SET(PlatformSpecificFClose, mockFClose); junitOutput = new JUnitTestOutput(); result = new TestResult(*junitOutput); testCaseRunner = new JUnitTestOutputTestRunner(*result); } void teardown() { delete testCaseRunner; delete result; delete junitOutput; fileSystem.clear(); } }; TEST(JUnitOutputTest, withOneTestGroupAndOneTestOnlyWriteToOneFile) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); LONGS_EQUAL(1, fileSystem.amountOfFiles()); CHECK(fileSystem.fileExists("cpputest_groupname.xml")); } TEST(JUnitOutputTest, withReservedCharactersInPackageOrTestGroupUsesUnderscoresForFileName) { junitOutput->setPackageName("p/a\\c?k%a*g:e|n\"ae."); testCaseRunner->start() .withGroup("g/r\\o?u%p*n:a|m\"eere").withTest("testname") .end(); CHECK(fileSystem.fileExists("cpputest_p_a_c_k_a_g_e_n_a_m_e._g_r_o_u_p_n_a_m_e_h_ere.xml")); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestOutputsValidXMLFiles) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(1)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestOutputsTestSuiteStartAndEndBlocks) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->lineFromTheBack(1)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyPropertiesBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(3)); STRCMP_EQUAL("\n", outputFile->line(4)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyStdoutBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->lineFromTheBack(3)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainAnEmptyStderrBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->lineFromTheBack(2)); } TEST(JUnitOutputTest, withOneTestGroupAndOneTestFileShouldContainsATestCaseBlock) { testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, withOneTestGroupAndTwoTestCasesCreateCorrectTestgroupBlockAndCorrectTestCaseBlock) { testCaseRunner->start() .withGroup("twoTestsGroup").withTest("firstTestName").withTest("secondTestName") .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withOneTestGroupAndTimeHasElapsedAndTimestampChanged) { testCaseRunner->start().atTime("2013-07-04T22:28:00") .withGroup("timeGroup").withTest("Dummy").thatTakes(10).seconds() .end(); outputFile = fileSystem.file("cpputest_timeGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); } TEST(JUnitOutputTest, withOneTestGroupAndMultipleTestCasesWithElapsedTime) { testCaseRunner->start() .withGroup("twoTestsGroup") .withTest("firstTestName").thatTakes(10).seconds() .withTest("secondTestName").thatTakes(50).seconds() .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withOneTestGroupAndOneFailingTest) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test failed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, withTwoTestGroupAndOneFailingTest) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FirstTest") .withTest("FailingTestName").thatFails("Test failed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(2)); STRCMP_EQUAL("\n", outputFile->line(7)); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, testFailureWithLessThanAndGreaterThanInsideIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test ", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithQuotesInIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test \"failed\"", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithNewlineInIt) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test \nfailed", "thisfile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithDifferentFileAndLine) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("Test failed", "importantFile", 999) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithAmpersandsAndLessThan) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("&object1 < &object2", "importantFile", 999) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, testFailureWithAmpersands) { testCaseRunner->start() .withGroup("testGroupWithFailingTest") .withTest("FailingTestName").thatFails("&object1 != &object2", "importantFile", 999) .end(); outputFile = fileSystem.file("cpputest_testGroupWithFailingTest.xml"); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, aCoupleOfTestFailures) { testCaseRunner->start() .withGroup("testGroup") .withTest("passingOne") .withTest("FailingTest").thatFails("Failure", "file", 99) .withTest("passingTwo") .withTest("passingThree") .withTest("AnotherFailingTest").thatFails("otherFailure", "anotherFile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); STRCMP_EQUAL("\n", outputFile->line(16)); } TEST(JUnitOutputTest, testFailuresInSeparateGroups) { testCaseRunner->start() .withGroup("testGroup") .withTest("passingOne") .withTest("FailingTest").thatFails("Failure", "file", 99) .withGroup("AnotherGroup") .withTest("AnotherFailingTest").thatFails("otherFailure", "anotherFile", 10) .end(); outputFile = fileSystem.file("cpputest_testGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); outputFile = fileSystem.file("cpputest_AnotherGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(8)); } TEST(JUnitOutputTest, twoTestGroupsWriteToTwoDifferentFiles) { testCaseRunner->start() .withGroup("firstTestGroup") .withTest("testName") .withGroup("secondTestGroup") .withTest("testName") .end(); CHECK(fileSystem.file("cpputest_firstTestGroup.xml") != NULLPTR); CHECK(fileSystem.file("cpputest_secondTestGroup.xml") != NULLPTR); } TEST(JUnitOutputTest, testGroupWithWeirdName) { STRCMP_EQUAL("cpputest_group_weird_name.xml", junitOutput->createFileName("group/weird/name").asCharString()); } TEST(JUnitOutputTest, TestCaseBlockWithAPackageName) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname").withTest("testname") .end(); outputFile = fileSystem.file("cpputest_packagename_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); } TEST(JUnitOutputTest, TestCaseBlockForIgnoredTest) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname").withIgnoredTest("testname") .end(); outputFile = fileSystem.file("cpputest_packagename_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(6)); STRCMP_EQUAL("\n", outputFile->line(7)); } TEST(JUnitOutputTest, TestCaseWithTestLocation) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname") .withTest("testname").inFile("MySource.c").onLine(159) .end(); outputFile = fileSystem.file("cpputest_packagename_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); } TEST(JUnitOutputTest, MultipleTestCaseWithTestLocations) { testCaseRunner->start() .withGroup("twoTestsGroup") .withTest("firstTestName").inFile("MyFirstSource.c").onLine(846) .withTest("secondTestName").inFile("MySecondSource.c").onLine(513) .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(7)); } TEST(JUnitOutputTest, TestCaseBlockWithAssertions) { junitOutput->setPackageName("packagename"); testCaseRunner->start() .withGroup("groupname") .withTest("testname") .thatHasChecks(24) .end(); outputFile = fileSystem.file("cpputest_packagename_groupname.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); } TEST(JUnitOutputTest, MultipleTestCaseBlocksWithAssertions) { testCaseRunner->start() .withGroup("twoTestsGroup") .withTest("firstTestName").thatHasChecks(456) .withTest("secondTestName").thatHasChecks(567) .end(); outputFile = fileSystem.file("cpputest_twoTestsGroup.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); STRCMP_EQUAL("\n", outputFile->line(7)); } TEST(JUnitOutputTest, MultipleTestCasesInDifferentGroupsWithAssertions) { testCaseRunner->start() .withGroup("groupOne") .withTest("testA").thatHasChecks(456) .endGroupAndClearTest() .withGroup("groupTwo") .withTest("testB").thatHasChecks(678) .end(); outputFile = fileSystem.file("cpputest_groupOne.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); outputFile = fileSystem.file("cpputest_groupTwo.xml"); STRCMP_EQUAL("\n", outputFile->line(5)); } TEST(JUnitOutputTest, UTPRINTOutputInJUnitOutput) { testCaseRunner->start() .withGroup("groupname") .withTest("testname").thatPrints("someoutput") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("someoutput\n", outputFile->lineFromTheBack(3)); } TEST(JUnitOutputTest, UTPRINTOutputInJUnitOutputWithSpecials) { testCaseRunner->start() .withGroup("groupname") .withTest("testname").thatPrints("The in \"Spain\"\nGoes \\mainly\\ down the Dr&in\n") .end(); outputFile = fileSystem.file("cpputest_groupname.xml"); STRCMP_EQUAL("The <rain> in "Spain"{newline}Goes \\mainly\\ down the Dr&in{newline}\n", outputFile->lineFromTheBack(3)); } cpputest-4.0/tests/CppUTest/AllTests.cpp000644 000765 000024 00000004450 13663176127 021305 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestMemoryAllocator.h" #include "CppUTest/SimpleStringInternalCache.h" #define SHOW_MEMORY_REPORT 0 int main(int ac, char **av) { int returnValue = 0; GlobalSimpleStringCache stringCache; { /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); #if SHOW_MEMORY_REPORT GlobalMemoryAccountant accountant; accountant.start(); #endif CommandLineTestRunner::RunAllTests(ac, av); /* cover alternate method */ #if SHOW_MEMORY_REPORT accountant.stop(); printf("%s", accountant.report().asCharString()); #endif } return returnValue; } cpputest-4.0/tests/CppUTest/AllTests.h000644 000765 000024 00000004066 13663176127 020755 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //Include this in the test main to execute these tests IMPORT_TEST_GROUP( Utest); IMPORT_TEST_GROUP( Failure); IMPORT_TEST_GROUP( TestOutput); IMPORT_TEST_GROUP( SimpleString); IMPORT_TEST_GROUP( TestInstaller); IMPORT_TEST_GROUP( NullTest); IMPORT_TEST_GROUP( MemoryLeakWarningTest); IMPORT_TEST_GROUP( TestHarness_c); IMPORT_TEST_GROUP( CommandLineTestRunner); IMPORT_TEST_GROUP( JUnitOutputTest); IMPORT_TEST_GROUP( MemoryLeakDetectorTest); /* In allTest.cpp */ IMPORT_TEST_GROUP(CheatSheet); cpputest-4.0/tests/CppUTest/TestUTestStringMacro.cpp000644 000765 000024 00000040371 13663176127 023631 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestOutput.h" #include "CppUTest/TestTestingFixture.h" #define CHECK_TEST_FAILS_PROPER_WITH_TEXT(text) fixture.checkTestFailsWithProperTestLocation(text, __FILE__, __LINE__) TEST_GROUP(UnitTestStringMacros) { TestTestingFixture fixture; }; static void _STRCMP_EQUALWithActualIsNULLTestMethod() { STRCMP_EQUAL("ok", NULLPTR); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_EQUALAndActualIsNULL) { fixture.runTestWithMethod(_STRCMP_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRCMP_EQUALWithExpectedIsNULLTestMethod() { STRCMP_EQUAL(NULLPTR, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_EQUALAndExpectedIsNULL) { fixture.runTestWithMethod(_STRCMP_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_CONTAINSWithActualIsNULLTestMethod() { STRCMP_CONTAINS("ok", NULLPTR); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_CONTAINSAndActualIsNULL) { fixture.runTestWithMethod(_STRCMP_CONTAINSWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } static void _STRCMP_CONTAINSWithExpectedIsNULLTestMethod() { STRCMP_CONTAINS(NULLPTR, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_CONTAINSAndExpectedIsNULL) { fixture.runTestWithMethod(_STRCMP_CONTAINSWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain <>"); } static void _STRNCMP_EQUALWithActualIsNULLTestMethod() { STRNCMP_EQUAL("ok", NULLPTR, 2); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRNCMP_EQUALAndActualIsNULL) { fixture.runTestWithMethod(_STRNCMP_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRNCMP_EQUALWithExpectedIsNULLTestMethod() { STRNCMP_EQUAL(NULLPTR, "ok", 2); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRNCMP_EQUALAndExpectedIsNULL) { fixture.runTestWithMethod(_STRNCMP_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_NOCASE_EQUALWithActualIsNULLTestMethod() { STRCMP_NOCASE_EQUAL("ok", NULLPTR); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_EQUALAndActualIsNULL) { fixture.runTestWithMethod(_STRCMP_NOCASE_EQUALWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was <(null)>"); } static void _STRCMP_NOCASE_EQUALWithExpectedIsNULLTestMethod() { STRCMP_NOCASE_EQUAL(NULLPTR, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_EQUALAndExpectedIsNULL) { fixture.runTestWithMethod(_STRCMP_NOCASE_EQUALWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <(null)>"); } static void _STRCMP_NOCASE_EQUALWithUnequalInputTestMethod() { STRCMP_NOCASE_EQUAL("no", "ok"); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_EQUALAndUnequalInput) { fixture.runTestWithMethod(_STRCMP_NOCASE_EQUALWithUnequalInputTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); } static void _STRCMP_NOCASE_CONTAINSWithActualIsNULLTestMethod() { STRCMP_NOCASE_CONTAINS("ok", NULLPTR); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_CONTAINSAndActualIsNULL) { fixture.runTestWithMethod(_STRCMP_NOCASE_CONTAINSWithActualIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } static void _STRCMP_NOCASE_CONTAINSWithExpectedIsNULLTestMethod() { STRCMP_NOCASE_CONTAINS(NULLPTR, "ok"); } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_CONTAINSAndExpectedIsNULL) { fixture.runTestWithMethod(_STRCMP_NOCASE_CONTAINSWithExpectedIsNULLTestMethod); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain <>"); } static void _failingTestMethodWithSTRCMP_EQUAL() { STRCMP_EQUAL("hello", "hell"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); } TEST(UnitTestStringMacros, STRCMP_EQUALBehavesAsProperMacro) { if (false) STRCMP_EQUAL("1", "2"); else STRCMP_EQUAL("1", "1"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_EQUALWorksInAnIgnoredTest) { STRCMP_EQUAL("Hello", "World"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_EQUAL_TEXT() { STRCMP_EQUAL_TEXT("hello", "hell", "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestStringMacros, STRCMP_EQUAL_TEXTBehavesAsProperMacro) { if (false) STRCMP_EQUAL_TEXT("1", "2", "Failed because it failed"); else STRCMP_EQUAL_TEXT("1", "1", "Failed because it failed"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_EQUAL_TEXTWorksInAnIgnoredTest) { STRCMP_EQUAL_TEXT("Hello", "World", "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRNCMP_EQUAL() { STRNCMP_EQUAL("hello", "hallo", 5); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRNCMP_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithSTRNCMP_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); } TEST(UnitTestStringMacros, STRNCMP_EQUALBehavesAsProperMacro) { if (false) STRNCMP_EQUAL("1", "2", 1); else STRNCMP_EQUAL("1", "1", 1); } IGNORE_TEST(UnitTestStringMacros, STRNCMP_EQUALWorksInAnIgnoredTest) { STRNCMP_EQUAL("Hello", "World", 3); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRNCMP_EQUAL_TEXT() { STRNCMP_EQUAL_TEXT("hello", "hallo", 5, "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRNCMP_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSTRNCMP_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestStringMacros, STRNCMP_EQUAL_TEXTBehavesAsProperMacro) { if (false) STRNCMP_EQUAL_TEXT("1", "2", 1, "Failed because it failed"); else STRNCMP_EQUAL_TEXT("1", "1", 1, "Failed because it failed"); } IGNORE_TEST(UnitTestStringMacros, STRNCMP_EQUAL_TEXTWorksInAnIgnoredTest) { STRNCMP_EQUAL_TEXT("Hello", "World", 3, "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_NOCASE_EQUAL() { STRCMP_NOCASE_EQUAL("hello", "Hell"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_EQUAL) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_NOCASE_EQUAL); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); } TEST(UnitTestStringMacros, STRCMP_NOCASE_EQUALBehavesAsProperMacro) { if (false) STRCMP_NOCASE_EQUAL("1", "2"); else STRCMP_NOCASE_EQUAL("1", "1"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_NOCASE_EQUALWorksInAnIgnoredTest) { STRCMP_NOCASE_EQUAL("Hello", "World"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_NOCASE_EQUAL_TEXT() { STRCMP_NOCASE_EQUAL_TEXT("hello", "hell", "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_EQUAL_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_NOCASE_EQUAL_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestStringMacros, STRCMP_NOCASE_EQUAL_TEXTBehavesAsProperMacro) { if (false) STRCMP_NOCASE_EQUAL_TEXT("1", "2", "Failed because it failed"); else STRCMP_NOCASE_EQUAL_TEXT("1", "1", "Failed because it failed"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_NOCASE_EQUAL_TEXTWorksInAnIgnoredTest) { STRCMP_NOCASE_EQUAL_TEXT("Hello", "World", "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_CONTAINS() { STRCMP_CONTAINS("hello", "world"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_CONTAINS) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_CONTAINS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("actual "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } TEST(UnitTestStringMacros, STRCMP_CONTAINSBehavesAsProperMacro) { if (false) STRCMP_CONTAINS("1", "2"); else STRCMP_CONTAINS("1", "1"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_CONTAINSWorksInAnIgnoredTest) { STRCMP_CONTAINS("Hello", "World"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_CONTAINS_TEXT() { STRCMP_CONTAINS_TEXT("hello", "world", "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, FailureWithSTRCMP_CONTAINS_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_CONTAINS_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("actual "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestStringMacros, STRCMP_CONTAINS_TEXTBehavesAsProperMacro) { if (false) STRCMP_CONTAINS_TEXT("1", "2", "Failed because it failed"); else STRCMP_CONTAINS_TEXT("1", "1", "Failed because it failed"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_CONTAINS_TEXTWorksInAnIgnoredTest) { STRCMP_CONTAINS_TEXT("Hello", "World", "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_NOCASE_CONTAINS() { STRCMP_NOCASE_CONTAINS("hello", "WORLD"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_CONTAINS) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_NOCASE_CONTAINS); CHECK_TEST_FAILS_PROPER_WITH_TEXT("actual "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); } TEST(UnitTestStringMacros, STRCMP_NOCASE_CONTAINSBehavesAsProperMacro) { if (false) STRCMP_NOCASE_CONTAINS("never", "executed"); else STRCMP_NOCASE_CONTAINS("hello", "HELLO WORLD"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_NO_CASE_CONTAINSWorksInAnIgnoredTest) { STRCMP_NOCASE_CONTAINS("Hello", "World"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE static void _failingTestMethodWithSTRCMP_NOCASE_CONTAINS_TEXT() { STRCMP_NOCASE_CONTAINS_TEXT("hello", "WORLD", "Failed because it failed"); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } TEST(UnitTestStringMacros, FailureWithSTRCMP_NOCASE_CONTAINS_TEXT) { fixture.runTestWithMethod(_failingTestMethodWithSTRCMP_NOCASE_CONTAINS_TEXT); CHECK_TEST_FAILS_PROPER_WITH_TEXT("actual "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("did not contain "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("Failed because it failed"); } TEST(UnitTestStringMacros, STRCMP_NOCASE_CONTAINS_TEXTBehavesAsProperMacro) { if (false) STRCMP_NOCASE_CONTAINS_TEXT("never", "executed", "Failed because it failed"); else STRCMP_NOCASE_CONTAINS_TEXT("hello", "HELLO WORLD", "Failed because it failed"); } IGNORE_TEST(UnitTestStringMacros, STRCMP_NO_CASE_CONTAINS_TEXTWorksInAnIgnoredTest) { STRCMP_NOCASE_CONTAINS_TEXT("Hello", "World", "Failed because it failed"); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, NFirstCharsComparison) { STRNCMP_EQUAL("Hello World!", "Hello Peter!", 0); STRNCMP_EQUAL("Hello World!", "Hello Peter!", 1); STRNCMP_EQUAL("Hello World!", "Hello Peter!", 6); STRNCMP_EQUAL("Hello World!", "Hello", 5); } static void _compareNFirstCharsWithUpperAndLowercase() { STRNCMP_EQUAL("hello world!", "HELLO WORLD!", 12); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, CompareNFirstCharsWithUpperAndLowercase) { fixture.runTestWithMethod(_compareNFirstCharsWithUpperAndLowercase); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 0"); } static void _compareNFirstCharsWithDifferenceInTheMiddle() { STRNCMP_EQUAL("Hello World!", "Hello Peter!", 12); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, CompareNFirstCharsWithDifferenceInTheMiddle) { fixture.runTestWithMethod(_compareNFirstCharsWithDifferenceInTheMiddle); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 6"); } static void _compareNFirstCharsWithEmptyString() { STRNCMP_EQUAL("", "Not empty string", 5); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, CompareNFirstCharsWithEmptyString) { fixture.runTestWithMethod(_compareNFirstCharsWithEmptyString); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected <>"); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 0"); } static void _compareNFirstCharsWithLastCharDifferent() { STRNCMP_EQUAL("Not empty string?", "Not empty string!", 17); TestTestingFixture::lineExecutedAfterCheck(); // LCOV_EXCL_LINE } // LCOV_EXCL_LINE TEST(UnitTestStringMacros, CompareNFirstCharsWithLastCharDifferent) { fixture.runTestWithMethod(_compareNFirstCharsWithLastCharDifferent); CHECK_TEST_FAILS_PROPER_WITH_TEXT("expected "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("but was "); CHECK_TEST_FAILS_PROPER_WITH_TEXT("difference starts at position 16"); } cpputest-4.0/tests/CppUTest/AllocationInCFile.c000644 000765 000024 00000001202 13663176127 022461 0ustar00basvoddestaff000000 000000 #include "AllocationInCFile.h" #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #include "CppUTest/StandardCLibrary.h" /* This file is for simulating overloads of malloc */ char* mallocAllocation() { return (char*) malloc(10UL); } char* strdupAllocation() { #ifdef CPPUTEST_USE_STRDUP_MACROS return strdup("0123456789"); #else return NULL; #endif } char* strndupAllocation() { #ifdef CPPUTEST_USE_STRDUP_MACROS return strndup("0123456789", 10); #else return NULL; #endif } void freeAllocation(void* memory) { free(memory); } #undef free void freeAllocationWithoutMacro(void* memory) { free(memory); } cpputest-4.0/tests/CppUTest/TestResultTest.cpp000644 000765 000024 00000005755 13663176127 022541 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/PlatformSpecificFunctions.h" #include "CppUTest/TestOutput.h" extern "C" { static long MockGetPlatformSpecificTimeInMillis() { return 10; } } TEST_GROUP(TestResult) { TestOutput* printer; StringBufferTestOutput* mock; TestResult* res; void setup() { mock = new StringBufferTestOutput(); printer = mock; res = new TestResult(*printer); UT_PTR_SET(GetPlatformSpecificTimeInMillis, MockGetPlatformSpecificTimeInMillis); } void teardown() { delete printer; delete res; } }; TEST(TestResult, TestEndedWillPrintResultsAndExecutionTime) { res->testsEnded(); CHECK(mock->getOutput().contains("10 ms")); } TEST(TestResult, ResultIsOkIfTestIsRunWithNoFailures) { res->countTest(); res->countRun(); CHECK_FALSE(res->isFailure()); } TEST(TestResult, ResultIsOkIfTestIsIgnored) { res->countTest(); res->countIgnored(); CHECK_FALSE(res->isFailure()); } TEST(TestResult, ResultIsNotOkIfFailures) { res->countTest(); res->countRun(); res->addFailure(TestFailure(UtestShell::getCurrent(), StringFrom("dummy message"))); CHECK_TRUE(res->isFailure()); } TEST(TestResult, ResultIsNotOkIfNoTestsAtAll) { CHECK_TRUE(res->isFailure()); } TEST(TestResult, ResultIsNotOkIfNoTestsRunOrIgnored) { res->countTest(); CHECK_TRUE(res->isFailure()); } cpputest-4.0/tests/CppUTest/AllocationInCppFile.cpp000644 000765 000024 00000001171 13663176127 023366 0ustar00basvoddestaff000000 000000 /* This file is for emulating allocations in a C++ file. * It is used simulating the use of the memory leak detector on production code in C++ */ #undef new #include "CppUTest/MemoryLeakDetectorNewMacros.h" #include "AllocationInCppFile.h" char* newAllocation() { return new char; } char* newArrayAllocation() { return new char[100]; } #undef new char* newAllocationWithoutMacro() { return new char; } char* newArrayAllocationWithoutMacro() { return new char[100]; } #if CPPUTEST_USE_STD_CPP_LIB ClassThatThrowsAnExceptionInTheConstructor::ClassThatThrowsAnExceptionInTheConstructor() { throw 1; } #endif cpputest-4.0/tests/CppUTest/TestInstallerTest.cpp000644 000765 000024 00000004604 13663176127 023210 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/TestRegistry.h" class TestInstallerTestUtestShell : public UtestShell { }; // this is file scope because the test is installed // with all other tests, which also happen to be // created as static instances at file scope TEST_GROUP(TestInstaller) { TestInstaller* testInstaller; TestRegistry* myRegistry; TestInstallerTestUtestShell shell; void setup() { myRegistry = new TestRegistry(); myRegistry->setCurrentRegistry(myRegistry); testInstaller = new TestInstaller(shell, "TestInstaller", "test", __FILE__, __LINE__); } void teardown() { myRegistry->setCurrentRegistry(NULLPTR); testInstaller->unDo(); delete testInstaller; delete myRegistry; } }; TEST(TestInstaller, Create) { } cpputest-4.0/tests/CppUTest/AllocLetTestFree.h000644 000765 000024 00000000506 13663176127 022356 0ustar00basvoddestaff000000 000000 #ifndef D_AllocLetTestFree_H #define D_AllocLetTestFree_H #ifdef __cplusplus extern "C" { #endif typedef struct AllocLetTestFreeStruct * AllocLetTestFree; AllocLetTestFree AllocLetTestFree_Create(void); void AllocLetTestFree_Destroy(AllocLetTestFree); #ifdef __cplusplus } #endif #endif /* D_FakeAllocLetTestFree_H */ cpputest-4.0/tests/CppUTest/DummyMemoryLeakDetector.cpp000644 000765 000024 00000004757 13663176127 024337 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/TestHarness.h" #include "CppUTest/MemoryLeakDetector.h" #include "DummyMemoryLeakDetector.h" DummyMemoryLeakDetector::DummyMemoryLeakDetector(MemoryLeakFailure* reporter) : MemoryLeakDetector(reporter) { memoryLeakDetectorWasDeleted = false; } DummyMemoryLeakDetector::~DummyMemoryLeakDetector() { memoryLeakDetectorWasDeleted = true; } bool DummyMemoryLeakDetector::wasDeleted() { return memoryLeakDetectorWasDeleted; } bool DummyMemoryLeakDetector::memoryLeakDetectorWasDeleted = false; DummyMemoryLeakFailure::DummyMemoryLeakFailure() : MemoryLeakFailure() { memoryLeakFailureWasDelete = false; } DummyMemoryLeakFailure::~DummyMemoryLeakFailure() { memoryLeakFailureWasDelete = true; } bool DummyMemoryLeakFailure::wasDeleted() { return memoryLeakFailureWasDelete; } void DummyMemoryLeakFailure::fail(char*) { } bool DummyMemoryLeakFailure::memoryLeakFailureWasDelete = false; cpputest-4.0/include/Platforms/000755 000765 000024 00000000000 13663444566 017571 5ustar00basvoddestaff000000 000000 cpputest-4.0/include/CppUTest/000755 000765 000024 00000000000 13663444566 017331 5ustar00basvoddestaff000000 000000 cpputest-4.0/include/CppUTestExt/000755 000765 000024 00000000000 13663444566 020012 5ustar00basvoddestaff000000 000000 cpputest-4.0/include/CppUTestExt/MockCheckedExpectedCall.h000644 000765 000024 00000026465 13663176127 024611 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockCheckedExpectedCall_h #define D_MockCheckedExpectedCall_h #include "CppUTestExt/MockExpectedCall.h" #include "CppUTestExt/MockNamedValue.h" class MockCheckedExpectedCall : public MockExpectedCall { public: MockCheckedExpectedCall(); MockCheckedExpectedCall(unsigned int numCalls); virtual ~MockCheckedExpectedCall() _destructor_override; virtual MockExpectedCall& withName(const SimpleString& name) _override; virtual MockExpectedCall& withCallOrder(unsigned int callOrder) _override { return withCallOrder(callOrder, callOrder); } virtual MockExpectedCall& withCallOrder(unsigned int initialCallOrder, unsigned int finalCallOrder) _override; virtual MockExpectedCall& withBoolParameter(const SimpleString& name, bool value) _override; virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockExpectedCall& withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) _override; virtual MockExpectedCall& withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) _override; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value, double tolerance) _override; virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override; virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override; virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size) _override; virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockExpectedCall& withUnmodifiedOutputParameter(const SimpleString& name) _override; virtual MockExpectedCall& ignoreOtherParameters() _override; virtual MockExpectedCall& andReturnValue(bool value) _override; virtual MockExpectedCall& andReturnValue(int value) _override; virtual MockExpectedCall& andReturnValue(unsigned int value) _override; virtual MockExpectedCall& andReturnValue(long int value) _override; virtual MockExpectedCall& andReturnValue(unsigned long int value) _override; virtual MockExpectedCall& andReturnValue(cpputest_longlong value) _override; virtual MockExpectedCall& andReturnValue(cpputest_ulonglong value) _override; virtual MockExpectedCall& andReturnValue(double value) _override; virtual MockExpectedCall& andReturnValue(const char* value) _override; virtual MockExpectedCall& andReturnValue(void* value) _override; virtual MockExpectedCall& andReturnValue(const void* value) _override; virtual MockExpectedCall& andReturnValue(void (*value)()) _override; virtual MockNamedValue returnValue(); virtual MockExpectedCall& onObject(void* objectPtr) _override; virtual MockNamedValue getInputParameter(const SimpleString& name); virtual MockNamedValue getOutputParameter(const SimpleString& name); virtual SimpleString getInputParameterType(const SimpleString& name); virtual SimpleString getInputParameterValueString(const SimpleString& name); virtual bool hasInputParameterWithName(const SimpleString& name); virtual bool hasInputParameter(const MockNamedValue& parameter); virtual bool hasOutputParameterWithName(const SimpleString& name); virtual bool hasOutputParameter(const MockNamedValue& parameter); virtual bool relatesTo(const SimpleString& functionName); virtual bool relatesToObject(const void* objectPtr) const; virtual bool isFulfilled(); virtual bool canMatchActualCalls(); virtual bool isMatchingActualCallAndFinalized(); virtual bool isMatchingActualCall(); virtual bool areParametersMatchingActualCall(); virtual bool isOutOfOrder() const; virtual void callWasMade(unsigned int callOrder); virtual void inputParameterWasPassed(const SimpleString& name); virtual void outputParameterWasPassed(const SimpleString& name); virtual void finalizeActualCallMatch(); virtual void wasPassedToObject(); virtual void resetActualCallMatchingState(); virtual SimpleString callToString(); virtual SimpleString missingParametersToString(); enum { NO_EXPECTED_CALL_ORDER = 0 }; virtual unsigned int getActualCallsFulfilled() const; protected: void setName(const SimpleString& name); SimpleString getName() const; private: SimpleString functionName_; class MockExpectedFunctionParameter : public MockNamedValue { public: MockExpectedFunctionParameter(const SimpleString& name); void setMatchesActualCall(bool b); bool isMatchingActualCall() const; private: bool matchesActualCall_; }; MockExpectedFunctionParameter* item(MockNamedValueListNode* node); bool ignoreOtherParameters_; bool isActualCallMatchFinalized_; unsigned int initialExpectedCallOrder_; unsigned int finalExpectedCallOrder_; bool outOfOrder_; MockNamedValueList* inputParameters_; MockNamedValueList* outputParameters_; MockNamedValue returnValue_; void* objectPtr_; bool isSpecificObjectExpected_; bool wasPassedToObject_; unsigned int actualCalls_; unsigned int expectedCalls_; }; class MockIgnoredExpectedCall: public MockExpectedCall { public: virtual MockExpectedCall& withName(const SimpleString&) _override { return *this;} virtual MockExpectedCall& withCallOrder(unsigned int) _override { return *this; } virtual MockExpectedCall& withCallOrder(unsigned int, unsigned int) _override { return *this; } virtual MockExpectedCall& withBoolParameter(const SimpleString&, bool) _override { return *this; } virtual MockExpectedCall& withIntParameter(const SimpleString&, int) _override { return *this; } virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override{ return *this; } virtual MockExpectedCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; } virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; } virtual MockExpectedCall& withLongLongIntParameter(const SimpleString&, cpputest_longlong) _override { return *this; } virtual MockExpectedCall& withUnsignedLongLongIntParameter(const SimpleString&, cpputest_ulonglong) _override { return *this; } virtual MockExpectedCall& withDoubleParameter(const SimpleString&, double) _override { return *this; } virtual MockExpectedCall& withDoubleParameter(const SimpleString&, double, double) _override { return *this; } virtual MockExpectedCall& withStringParameter(const SimpleString&, const char*) _override { return *this; } virtual MockExpectedCall& withPointerParameter(const SimpleString& , void*) _override { return *this; } virtual MockExpectedCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; } virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& , void(*)()) _override { return *this; } virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; } virtual MockExpectedCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; } virtual MockExpectedCall& withOutputParameterReturning(const SimpleString&, const void*, size_t) _override { return *this; } virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString&, const SimpleString&, const void*) _override { return *this; } virtual MockExpectedCall& withUnmodifiedOutputParameter(const SimpleString&) _override { return *this; } virtual MockExpectedCall& ignoreOtherParameters() _override { return *this;} virtual MockExpectedCall& andReturnValue(bool) _override { return *this; } virtual MockExpectedCall& andReturnValue(int) _override { return *this; } virtual MockExpectedCall& andReturnValue(unsigned int) _override { return *this; } virtual MockExpectedCall& andReturnValue(long int) _override { return *this; } virtual MockExpectedCall& andReturnValue(unsigned long int) _override { return *this; } virtual MockExpectedCall& andReturnValue(cpputest_longlong) _override { return *this; } virtual MockExpectedCall& andReturnValue(cpputest_ulonglong) _override { return *this; } virtual MockExpectedCall& andReturnValue(double) _override { return *this;} virtual MockExpectedCall& andReturnValue(const char*) _override { return *this; } virtual MockExpectedCall& andReturnValue(void*) _override { return *this; } virtual MockExpectedCall& andReturnValue(const void*) _override { return *this; } virtual MockExpectedCall& andReturnValue(void (*)()) _override { return *this; } virtual MockExpectedCall& onObject(void*) _override { return *this; } static MockExpectedCall& instance(); }; #endif cpputest-4.0/include/CppUTestExt/MockExpectedCallsList.h000644 000765 000024 00000010650 13663176127 024346 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockExpectedCallsList_h #define D_MockExpectedCallsList_h class MockCheckedExpectedCall; class MockNamedValue; class MockExpectedCallsList { public: MockExpectedCallsList(); virtual ~MockExpectedCallsList(); virtual void deleteAllExpectationsAndClearList(); virtual unsigned int size() const; virtual unsigned int amountOfActualCallsFulfilledFor(const SimpleString& name) const; virtual unsigned int amountOfUnfulfilledExpectations() const; virtual bool hasUnfulfilledExpectations() const; virtual bool hasFinalizedMatchingExpectations() const; virtual bool hasUnmatchingExpectationsBecauseOfMissingParameters() const; virtual bool hasExpectationWithName(const SimpleString& name) const; virtual bool hasCallsOutOfOrder() const; virtual bool isEmpty() const; virtual void addExpectedCall(MockCheckedExpectedCall* call); virtual void addExpectations(const MockExpectedCallsList& list); virtual void addExpectationsRelatedTo(const SimpleString& name, const MockExpectedCallsList& list); virtual void onlyKeepOutOfOrderExpectations(); virtual void addPotentiallyMatchingExpectations(const MockExpectedCallsList& list); virtual void onlyKeepExpectationsRelatedTo(const SimpleString& name); virtual void onlyKeepExpectationsWithInputParameter(const MockNamedValue& parameter); virtual void onlyKeepExpectationsWithInputParameterName(const SimpleString& name); virtual void onlyKeepExpectationsWithOutputParameter(const MockNamedValue& parameter); virtual void onlyKeepExpectationsWithOutputParameterName(const SimpleString& name); virtual void onlyKeepExpectationsOnObject(const void* objectPtr); virtual void onlyKeepUnmatchingExpectations(); virtual MockCheckedExpectedCall* removeFirstFinalizedMatchingExpectation(); virtual MockCheckedExpectedCall* removeFirstMatchingExpectation(); virtual MockCheckedExpectedCall* getFirstMatchingExpectation(); virtual void resetActualCallMatchingState(); virtual void wasPassedToObject(); virtual void parameterWasPassed(const SimpleString& parameterName); virtual void outputParameterWasPassed(const SimpleString& parameterName); virtual SimpleString unfulfilledCallsToString(const SimpleString& linePrefix = "") const; virtual SimpleString fulfilledCallsToString(const SimpleString& linePrefix = "") const; virtual SimpleString missingParametersToString() const; protected: virtual void pruneEmptyNodeFromList(); class MockExpectedCallsListNode { public: MockCheckedExpectedCall* expectedCall_; MockExpectedCallsListNode* next_; MockExpectedCallsListNode(MockCheckedExpectedCall* expectedCall) : expectedCall_(expectedCall), next_(NULLPTR) {} }; private: MockExpectedCallsListNode* head_; MockExpectedCallsList(const MockExpectedCallsList&); }; #endif cpputest-4.0/include/CppUTestExt/MockSupport_c.h000644 000765 000024 00000027674 13663176127 022766 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupport_c_h #define D_MockSupport_c_h #ifdef __cplusplus extern "C" { #endif #include "CppUTest/CppUTestConfig.h" #include "CppUTest/StandardCLibrary.h" typedef enum { MOCKVALUETYPE_BOOL, MOCKVALUETYPE_UNSIGNED_INTEGER, MOCKVALUETYPE_INTEGER, MOCKVALUETYPE_LONG_INTEGER, MOCKVALUETYPE_UNSIGNED_LONG_INTEGER, MOCKVALUETYPE_LONG_LONG_INTEGER, MOCKVALUETYPE_UNSIGNED_LONG_LONG_INTEGER, MOCKVALUETYPE_DOUBLE, MOCKVALUETYPE_STRING, MOCKVALUETYPE_POINTER, MOCKVALUETYPE_CONST_POINTER, MOCKVALUETYPE_FUNCTIONPOINTER, MOCKVALUETYPE_MEMORYBUFFER, MOCKVALUETYPE_OBJECT } MockValueType_c; typedef struct SMockValue_c { MockValueType_c type; union { int boolValue; int intValue; unsigned int unsignedIntValue; long int longIntValue; unsigned long int unsignedLongIntValue; #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong longLongIntValue; cpputest_ulonglong unsignedLongLongIntValue; #else char longLongPlaceholder[CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE]; #endif double doubleValue; const char* stringValue; void* pointerValue; const void* constPointerValue; void (*functionPointerValue)(void); const unsigned char* memoryBufferValue; void* objectValue; const void* constObjectValue; } value; } MockValue_c; typedef struct SMockActualCall_c MockActualCall_c; struct SMockActualCall_c { MockActualCall_c* (*withBoolParameters)(const char* name, int value); MockActualCall_c* (*withIntParameters)(const char* name, int value); MockActualCall_c* (*withUnsignedIntParameters)(const char* name, unsigned int value); MockActualCall_c* (*withLongIntParameters)(const char* name, long int value); MockActualCall_c* (*withUnsignedLongIntParameters)(const char* name, unsigned long int value); MockActualCall_c* (*withLongLongIntParameters)(const char* name, cpputest_longlong value); MockActualCall_c* (*withUnsignedLongLongIntParameters)(const char* name, cpputest_ulonglong value); MockActualCall_c* (*withDoubleParameters)(const char* name, double value); MockActualCall_c* (*withStringParameters)(const char* name, const char* value); MockActualCall_c* (*withPointerParameters)(const char* name, void* value); MockActualCall_c* (*withConstPointerParameters)(const char* name, const void* value); MockActualCall_c* (*withFunctionPointerParameters)(const char* name, void (*value)(void)); MockActualCall_c* (*withMemoryBufferParameter)(const char* name, const unsigned char* value, size_t size); MockActualCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value); MockActualCall_c* (*withOutputParameter)(const char* name, void* value); MockActualCall_c* (*withOutputParameterOfType)(const char* type, const char* name, void* value); int (*hasReturnValue)(void); MockValue_c (*returnValue)(void); int (*boolReturnValue)(void); int (*returnBoolValueOrDefault)(int defaultValue); int (*intReturnValue)(void); int (*returnIntValueOrDefault)(int defaultValue); unsigned int (*unsignedIntReturnValue)(void); unsigned int (*returnUnsignedIntValueOrDefault)(unsigned int defaultValue); long int (*longIntReturnValue)(void); long int (*returnLongIntValueOrDefault)(long int defaultValue); unsigned long int (*unsignedLongIntReturnValue)(void); unsigned long int (*returnUnsignedLongIntValueOrDefault)(unsigned long int defaultValue); cpputest_longlong (*longLongIntReturnValue)(void); cpputest_longlong (*returnLongLongIntValueOrDefault)(cpputest_longlong defaultValue); cpputest_ulonglong (*unsignedLongLongIntReturnValue)(void); cpputest_ulonglong (*returnUnsignedLongLongIntValueOrDefault)(cpputest_ulonglong defaultValue); const char* (*stringReturnValue)(void); const char* (*returnStringValueOrDefault)(const char * defaultValue); double (*doubleReturnValue)(void); double (*returnDoubleValueOrDefault)(double defaultValue); void* (*pointerReturnValue)(void); void* (*returnPointerValueOrDefault)(void * defaultValue); const void* (*constPointerReturnValue)(void); const void* (*returnConstPointerValueOrDefault)(const void * defaultValue); void (*(*functionPointerReturnValue)(void))(void); void (*(*returnFunctionPointerValueOrDefault)(void(*defaultValue)(void)))(void); }; typedef struct SMockExpectedCall_c MockExpectedCall_c; struct SMockExpectedCall_c { MockExpectedCall_c* (*withBoolParameters)(const char* name, int value); MockExpectedCall_c* (*withIntParameters)(const char* name, int value); MockExpectedCall_c* (*withUnsignedIntParameters)(const char* name, unsigned int value); MockExpectedCall_c* (*withLongIntParameters)(const char* name, long int value); MockExpectedCall_c* (*withUnsignedLongIntParameters)(const char* name, unsigned long int value); MockExpectedCall_c* (*withLongLongIntParameters)(const char* name, cpputest_longlong value); MockExpectedCall_c* (*withUnsignedLongLongIntParameters)(const char* name, cpputest_ulonglong value); MockExpectedCall_c* (*withDoubleParameters)(const char* name, double value); MockExpectedCall_c* (*withDoubleParametersAndTolerance)(const char* name, double value, double tolerance); MockExpectedCall_c* (*withStringParameters)(const char* name, const char* value); MockExpectedCall_c* (*withPointerParameters)(const char* name, void* value); MockExpectedCall_c* (*withConstPointerParameters)(const char* name, const void* value); MockExpectedCall_c* (*withFunctionPointerParameters)(const char* name, void (*value)(void)); MockExpectedCall_c* (*withMemoryBufferParameter)(const char* name, const unsigned char* value, size_t size); MockExpectedCall_c* (*withParameterOfType)(const char* type, const char* name, const void* value); MockExpectedCall_c* (*withOutputParameterReturning)(const char* name, const void* value, size_t size); MockExpectedCall_c* (*withOutputParameterOfTypeReturning)(const char* type, const char* name, const void* value); MockExpectedCall_c* (*withUnmodifiedOutputParameter)(const char* name); MockExpectedCall_c* (*ignoreOtherParameters)(void); MockExpectedCall_c* (*andReturnBoolValue)(int value); MockExpectedCall_c* (*andReturnUnsignedIntValue)(unsigned int value); MockExpectedCall_c* (*andReturnIntValue)(int value); MockExpectedCall_c* (*andReturnLongIntValue)(long int value); MockExpectedCall_c* (*andReturnUnsignedLongIntValue)(unsigned long int value); MockExpectedCall_c* (*andReturnLongLongIntValue)(cpputest_longlong value); MockExpectedCall_c* (*andReturnUnsignedLongLongIntValue)(cpputest_ulonglong value); MockExpectedCall_c* (*andReturnDoubleValue)(double value); MockExpectedCall_c* (*andReturnStringValue)(const char* value); MockExpectedCall_c* (*andReturnPointerValue)(void* value); MockExpectedCall_c* (*andReturnConstPointerValue)(const void* value); MockExpectedCall_c* (*andReturnFunctionPointerValue)(void (*value)(void)); }; typedef int (*MockTypeEqualFunction_c)(const void* object1, const void* object2); typedef const char* (*MockTypeValueToStringFunction_c)(const void* object1); typedef void (*MockTypeCopyFunction_c)(void* dst, const void* src); typedef struct SMockSupport_c MockSupport_c; struct SMockSupport_c { void (*strictOrder)(void); MockExpectedCall_c* (*expectOneCall)(const char* name); void (*expectNoCall)(const char* name); MockExpectedCall_c* (*expectNCalls)(unsigned int number, const char* name); MockActualCall_c* (*actualCall)(const char* name); int (*hasReturnValue)(void); MockValue_c (*returnValue)(void); int (*boolReturnValue)(void); int (*returnBoolValueOrDefault)(int defaultValue); int (*intReturnValue)(void); int (*returnIntValueOrDefault)(int defaultValue); unsigned int (*unsignedIntReturnValue)(void); unsigned int (*returnUnsignedIntValueOrDefault)(unsigned int defaultValue); long int (*longIntReturnValue)(void); long int (*returnLongIntValueOrDefault)(long int defaultValue); unsigned long int (*unsignedLongIntReturnValue)(void); unsigned long int (*returnUnsignedLongIntValueOrDefault)(unsigned long int defaultValue); cpputest_longlong (*longLongIntReturnValue)(void); cpputest_longlong (*returnLongLongIntValueOrDefault)(cpputest_longlong defaultValue); cpputest_ulonglong (*unsignedLongLongIntReturnValue)(void); cpputest_ulonglong (*returnUnsignedLongLongIntValueOrDefault)(cpputest_ulonglong defaultValue); const char* (*stringReturnValue)(void); const char* (*returnStringValueOrDefault)(const char * defaultValue); double (*doubleReturnValue)(void); double (*returnDoubleValueOrDefault)(double defaultValue); void* (*pointerReturnValue)(void); void* (*returnPointerValueOrDefault)(void * defaultValue); const void* (*constPointerReturnValue)(void); const void* (*returnConstPointerValueOrDefault)(const void * defaultValue); void (*(*functionPointerReturnValue)(void))(void); void (*(*returnFunctionPointerValueOrDefault) (void(*defaultValue)(void)))(void); void (*setBoolData) (const char* name, int value); void (*setIntData) (const char* name, int value); void (*setUnsignedIntData) (const char* name, unsigned int value); void (*setStringData) (const char* name, const char* value); void (*setDoubleData) (const char* name, double value); void (*setPointerData) (const char* name, void* value); void (*setConstPointerData) (const char* name, const void* value); void (*setFunctionPointerData) (const char* name, void (*value)(void)); void (*setDataObject) (const char* name, const char* type, void* value); void (*setDataConstObject) (const char* name, const char* type, const void* value); MockValue_c (*getData)(const char* name); void (*disable)(void); void (*enable)(void); void (*ignoreOtherCalls)(void); void (*checkExpectations)(void); int (*expectedCallsLeft)(void); void (*clear)(void); void (*crashOnFailure)(unsigned shouldCrash); void (*installComparator) (const char* typeName, MockTypeEqualFunction_c isEqual, MockTypeValueToStringFunction_c valueToString); void (*installCopier) (const char* typeName, MockTypeCopyFunction_c copier); void (*removeAllComparatorsAndCopiers)(void); }; MockSupport_c* mock_c(void); MockSupport_c* mock_scope_c(const char* scope); #ifdef __cplusplus } #endif #endif cpputest-4.0/include/CppUTestExt/IEEE754ExceptionsPlugin.h000644 000765 000024 00000004636 13663176127 024357 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2015, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_IEEE754ExceptionsPlugin_h #define D_IEEE754ExceptionsPlugin_h #include "CppUTest/TestPlugin.h" class IEEE754ExceptionsPlugin: public TestPlugin { public: IEEE754ExceptionsPlugin(const SimpleString& name = "IEEE754ExceptionsPlugin"); virtual void preTestAction(UtestShell& test, TestResult& result) _override; virtual void postTestAction(UtestShell& test, TestResult& result) _override; static void disableInexact(void); static void enableInexact(void); static bool checkIeee754OverflowExceptionFlag(); static bool checkIeee754UnderflowExceptionFlag(); static bool checkIeee754InexactExceptionFlag(); static bool checkIeee754DivByZeroExceptionFlag(); private: void ieee754Check(UtestShell& test, TestResult& result, int flag, const char* text); static bool inexactDisabled_; }; #endif cpputest-4.0/include/CppUTestExt/MockNamedValue.h000644 000765 000024 00000021353 13663176127 023015 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockNamedValue_h #define D_MockNamedValue_h #include "CppUTest/CppUTestConfig.h" /* * MockNamedValueComparator is an interface that needs to be used when creating Comparators. * This is needed when comparing values of non-native type. */ class MockNamedValueComparator { public: MockNamedValueComparator() {} virtual ~MockNamedValueComparator() {} virtual bool isEqual(const void* object1, const void* object2)=0; virtual SimpleString valueToString(const void* object)=0; }; /* * MockNamedValueCopier is an interface that needs to be used when creating Copiers. * This is needed when copying values of non-native type. */ class MockNamedValueCopier { public: MockNamedValueCopier() {} virtual ~MockNamedValueCopier() {} virtual void copy(void* out, const void* in)=0; }; class MockFunctionComparator : public MockNamedValueComparator { public: typedef bool (*isEqualFunction)(const void*, const void*); typedef SimpleString (*valueToStringFunction)(const void*); MockFunctionComparator(isEqualFunction equal, valueToStringFunction valToString) : equal_(equal), valueToString_(valToString) {} virtual bool isEqual(const void* object1, const void* object2) _override { return equal_(object1, object2); } virtual SimpleString valueToString(const void* object) _override { return valueToString_(object); } private: isEqualFunction equal_; valueToStringFunction valueToString_; }; class MockFunctionCopier : public MockNamedValueCopier { public: typedef void (*copyFunction)(void*, const void*); MockFunctionCopier(copyFunction copier) : copier_(copier) {} virtual void copy(void* dst, const void* src) _override { copier_(dst, src); } private: copyFunction copier_; }; /* * MockNamedValue is the generic value class used. It encapsulates basic types and can use them "as if one" * Also it enables other types by putting object pointers. They can be compared with comparators. * * Basically this class ties together a Name, a Value, a Type, and a Comparator */ class MockNamedValueComparatorsAndCopiersRepository; class MockNamedValue { public: MockNamedValue(const SimpleString& name); DEFAULT_COPY_CONSTRUCTOR(MockNamedValue) virtual ~MockNamedValue(); virtual void setValue(bool value); virtual void setValue(int value); virtual void setValue(unsigned int value); virtual void setValue(long int value); virtual void setValue(unsigned long int value); virtual void setValue(cpputest_longlong value); virtual void setValue(cpputest_ulonglong value); virtual void setValue(double value); virtual void setValue(double value, double tolerance); virtual void setValue(void* value); virtual void setValue(const void* value); virtual void setValue(void (*value)()); virtual void setValue(const char* value); virtual void setMemoryBuffer(const unsigned char* value, size_t size); virtual void setConstObjectPointer(const SimpleString& type, const void* objectPtr); virtual void setObjectPointer(const SimpleString& type, void* objectPtr); virtual void setSize(size_t size); virtual void setName(const char* name); virtual bool equals(const MockNamedValue& p) const; virtual bool compatibleForCopying(const MockNamedValue& p) const; virtual SimpleString toString() const; virtual SimpleString getName() const; virtual SimpleString getType() const; virtual bool getBoolValue() const; virtual int getIntValue() const; virtual unsigned int getUnsignedIntValue() const; virtual long int getLongIntValue() const; virtual unsigned long int getUnsignedLongIntValue() const; virtual cpputest_longlong getLongLongIntValue() const; virtual cpputest_ulonglong getUnsignedLongLongIntValue() const; virtual double getDoubleValue() const; virtual double getDoubleTolerance() const; virtual const char* getStringValue() const; virtual void* getPointerValue() const; virtual const void* getConstPointerValue() const; virtual void (*getFunctionPointerValue() const)(); virtual const unsigned char* getMemoryBuffer() const; virtual const void* getConstObjectPointer() const; virtual void* getObjectPointer() const; virtual size_t getSize() const; virtual MockNamedValueComparator* getComparator() const; virtual MockNamedValueCopier* getCopier() const; static void setDefaultComparatorsAndCopiersRepository(MockNamedValueComparatorsAndCopiersRepository* repository); static MockNamedValueComparatorsAndCopiersRepository* getDefaultComparatorsAndCopiersRepository(); static const double defaultDoubleTolerance; private: SimpleString name_; SimpleString type_; union { bool boolValue_; int intValue_; unsigned int unsignedIntValue_; long int longIntValue_; unsigned long int unsignedLongIntValue_; #ifdef CPPUTEST_USE_LONG_LONG cpputest_longlong longLongIntValue_; cpputest_ulonglong unsignedLongLongIntValue_; #else char longLongPlaceholder_[CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE]; #endif struct { double value; double tolerance; } doubleValue_; const char* stringValue_; void* pointerValue_; const void* constPointerValue_; void (*functionPointerValue_)(); const unsigned char* memoryBufferValue_; const void* constObjectPointerValue_; void* objectPointerValue_; const void* outputPointerValue_; } value_; size_t size_; MockNamedValueComparator* comparator_; MockNamedValueCopier* copier_; static MockNamedValueComparatorsAndCopiersRepository* defaultRepository_; }; class MockNamedValueListNode { public: MockNamedValueListNode(MockNamedValue* newValue); SimpleString getName() const; SimpleString getType() const; MockNamedValueListNode* next(); MockNamedValue* item(); void destroy(); void setNext(MockNamedValueListNode* node); private: MockNamedValue* data_; MockNamedValueListNode* next_; }; class MockNamedValueList { public: MockNamedValueList(); MockNamedValueListNode* begin(); void add(MockNamedValue* newValue); void clear(); MockNamedValue* getValueByName(const SimpleString& name); private: MockNamedValueListNode* head_; }; /* * MockParameterComparatorRepository is a class which stores comparators and copiers which can be used for comparing non-native types * */ struct MockNamedValueComparatorsAndCopiersRepositoryNode; class MockNamedValueComparatorsAndCopiersRepository { MockNamedValueComparatorsAndCopiersRepositoryNode* head_; public: MockNamedValueComparatorsAndCopiersRepository(); virtual ~MockNamedValueComparatorsAndCopiersRepository(); virtual void installComparator(const SimpleString& name, MockNamedValueComparator& comparator); virtual void installCopier(const SimpleString& name, MockNamedValueCopier& copier); virtual void installComparatorsAndCopiers(const MockNamedValueComparatorsAndCopiersRepository& repository); virtual MockNamedValueComparator* getComparatorForType(const SimpleString& name); virtual MockNamedValueCopier* getCopierForType(const SimpleString& name); void clear(); }; #endif cpputest-4.0/include/CppUTestExt/MemoryReportAllocator.h000644 000765 000024 00000005157 13663176127 024473 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReportAllocator_h #define D_MemoryReportAllocator_h #include "CppUTest/TestMemoryAllocator.h" class MemoryReportFormatter; class MemoryReportAllocator : public TestMemoryAllocator { protected: TestResult* result_; TestMemoryAllocator* realAllocator_; MemoryReportFormatter* formatter_; public: MemoryReportAllocator(); virtual ~MemoryReportAllocator() _destructor_override; virtual void setFormatter(MemoryReportFormatter* formatter); virtual void setTestResult(TestResult* result); virtual void setRealAllocator(TestMemoryAllocator* allocator); virtual TestMemoryAllocator* getRealAllocator(); virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual void free_memory(char* memory, size_t size, const char* file, size_t line) _override; virtual const char* name() const _override; virtual const char* alloc_name() const _override; virtual const char* free_name() const _override; virtual TestMemoryAllocator* actualAllocator() _override; }; #endif cpputest-4.0/include/CppUTestExt/GTestConvertor.h000644 000765 000024 00000030611 13663176127 023107 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GTESTCONVERTOR_H_ #define GTESTCONVERTOR_H_ #include "CppUTest/Utest.h" #ifdef GTEST__H_ #error "Please include this file before you include any other GTest files" #endif /* * Usage: * * This file must only be included in the main. The whole implementation is inline so that this can * be compiled on usage and not on CppUTest compile-time. This avoids a hard dependency with CppUTest * and with GTest * * Add the following lines to your main: * * GTestConvertor convertor; * convertor.addAllGTestToTestRegistry(); * * */ class GTestResultReporter; class GTestFlagsThatAllocateMemory; namespace testing { class TestInfo; class TestCase; class Test; } class GTestShell : public UtestShell { ::testing::TestInfo* testinfo_; GTestShell* next_; GTestFlagsThatAllocateMemory* flags_; public: GTestShell(::testing::TestInfo* testinfo, GTestShell* next, GTestFlagsThatAllocateMemory* flags); virtual Utest* createTest() _override; GTestShell* nextGTest() { return next_; } }; /* Enormous hack! * * This sucks enormously. We need to do two things in GTest that seem to not be possible without * this hack. Hopefully there is *another way*. * * We need to access the factory in the TestInfo in order to be able to create tests. The factory * is private and there seems to be no way to access it... * * We need to be able to call the Test SetUp and TearDown methods, but they are protected for * some reason. We can't subclass either as the tests are created with the TEST macro. * * If anyone knows how to get the above things done *without* these ugly #defines, let me know! * */ #define private public #define protected public #include "CppUTestExt/GTest.h" #include "CppUTestExt/GMock.h" #include "gtest/gtest-spi.h" #include "gtest/gtest-death-test.h" /* * We really need some of its internals as they don't have a public interface. * */ #define GTEST_IMPLEMENTATION_ 1 #include "src/gtest-internal-inl.h" #include "CppUTest/TestRegistry.h" #include "CppUTest/TestFailure.h" #include "CppUTest/TestResult.h" #ifdef GTEST_VERSION_GTEST_1_7 #define GTEST_STRING std::string #define GTEST_NO_STRING_VALUE "" #else #define GTEST_STRING ::testing::internal::String #define GTEST_NO_STRING_VALUE NULL #endif /* Store some of the flags as we'll need to reset them each test to avoid leaking memory */ class GTestFlagsThatAllocateMemory { public: void storeValuesOfGTestFLags() { GTestFlagcolor = ::testing::GTEST_FLAG(color); GTestFlagfilter = ::testing::GTEST_FLAG(filter); GTestFlagoutput = ::testing::GTEST_FLAG(output); GTestFlagdeath_test_style = ::testing::GTEST_FLAG(death_test_style); GTestFlaginternal_run_death_test = ::testing::internal::GTEST_FLAG(internal_run_death_test); #ifndef GTEST_VERSION_GTEST_1_5 GTestFlagstream_result_to = ::testing::GTEST_FLAG(stream_result_to); #endif } void resetValuesOfGTestFlags() { ::testing::GTEST_FLAG(color) = GTestFlagcolor; ::testing::GTEST_FLAG(filter) = GTestFlagfilter; ::testing::GTEST_FLAG(output) = GTestFlagoutput; ::testing::GTEST_FLAG(death_test_style) = GTestFlagdeath_test_style; ::testing::internal::GTEST_FLAG(internal_run_death_test) = GTestFlaginternal_run_death_test; #ifndef GTEST_VERSION_GTEST_1_5 ::testing::GTEST_FLAG(stream_result_to) = GTestFlagstream_result_to; #endif } void setGTestFLagValuesToNULLToAvoidMemoryLeaks() { #ifndef GTEST_VERSION_GTEST_1_7 ::testing::GTEST_FLAG(color) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(filter) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(output) = GTEST_NO_STRING_VALUE; ::testing::GTEST_FLAG(death_test_style) = GTEST_NO_STRING_VALUE; ::testing::internal::GTEST_FLAG(internal_run_death_test) = GTEST_NO_STRING_VALUE; #ifndef GTEST_VERSION_GTEST_1_5 ::testing::GTEST_FLAG(stream_result_to) = GTEST_NO_STRING_VALUE; #endif #endif } private: GTEST_STRING GTestFlagcolor; GTEST_STRING GTestFlagfilter; GTEST_STRING GTestFlagoutput; GTEST_STRING GTestFlagdeath_test_style; GTEST_STRING GTestFlaginternal_run_death_test; #ifndef GTEST_VERSION_GTEST_1_5 GTEST_STRING GTestFlagstream_result_to; #endif }; class GTestConvertor { public: GTestConvertor(bool shouldSimulateFailureAtCreationToAllocateThreadLocalData = true); virtual ~GTestConvertor(); virtual void addAllGTestToTestRegistry(); protected: virtual void simulateGTestFailureToPreAllocateAllTheThreadLocalData(); virtual void addNewTestCaseForTestInfo(::testing::TestInfo* testinfo); virtual void addAllTestsFromTestCaseToTestRegistry(::testing::TestCase* testcase); virtual void createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock(); private: GTestResultReporter* reporter_; GTestShell* first_; GTestFlagsThatAllocateMemory flags_; }; class GTestDummyResultReporter : public ::testing::ScopedFakeTestPartResultReporter { public: GTestDummyResultReporter () : ::testing::ScopedFakeTestPartResultReporter(INTERCEPT_ALL_THREADS, NULL) {} virtual void ReportTestPartResult(const ::testing::TestPartResult& /*result*/) {} }; class GMockTestTerminator : public TestTerminator { public: GMockTestTerminator(const ::testing::TestPartResult& result) : result_(result) { } virtual void exitCurrentTest() const { /* * When using GMock, it throws an exception fromt he destructor leaving * the system in an unstable state. * Therefore, when the test fails because of failed gmock expectation * then don't throw the exception, but let it return. Usually this should * already be at the end of the test, so it doesn't matter much */ /* * TODO: We probably want this check here, however the tests fail when putting it there. Also, we'll need to * check how to get all the gTest tests to run within CppUTest. At the moment, the 'death tests' seem to fail * still. * * if (result_.type() == ::testing::TestPartResult::kFatalFailure) { */ if (!SimpleString(result_.message()).contains("Actual: never called") && !SimpleString(result_.message()).contains("Actual function call count doesn't match")) throw CppUTestFailedException(); } virtual ~GMockTestTerminator() { } private: const ::testing::TestPartResult& result_; }; class GTestResultReporter : public ::testing::ScopedFakeTestPartResultReporter { public: GTestResultReporter () : ::testing::ScopedFakeTestPartResultReporter(INTERCEPT_ALL_THREADS, NULL) {} virtual void ReportTestPartResult(const ::testing::TestPartResult& result) { FailFailure failure(UtestShell::getCurrent(), result.file_name(), result.line_number(), result.message()); UtestShell::getCurrent()->failWith(failure, GMockTestTerminator(result)); } }; inline GTestShell::GTestShell(::testing::TestInfo* testinfo, GTestShell* next, GTestFlagsThatAllocateMemory* flags) : testinfo_(testinfo), next_(next), flags_(flags) { setGroupName(testinfo->test_case_name()); setTestName(testinfo->name()); } class GTestUTest: public Utest { public: GTestUTest(::testing::TestInfo* testinfo, GTestFlagsThatAllocateMemory* flags) : testinfo_(testinfo), test_(NULL), flags_(flags) { } void testBody() { try { test_->TestBody(); } catch (CppUTestFailedException& ex) { } } void setup() { flags_->resetValuesOfGTestFlags(); #ifdef GTEST_VERSION_GTEST_1_5 test_ = testinfo_->impl()->factory_->CreateTest(); #else test_ = testinfo_->factory_->CreateTest(); #endif ::testing::UnitTest::GetInstance()->impl()->set_current_test_info(testinfo_); try { test_->SetUp(); } catch (CppUTestFailedException& ex) { } } void teardown() { try { test_->TearDown(); } catch (CppUTestFailedException& ex) { } ::testing::UnitTest::GetInstance()->impl()->set_current_test_info(NULL); delete test_; flags_->setGTestFLagValuesToNULLToAvoidMemoryLeaks(); ::testing::internal::DeathTest::set_last_death_test_message(GTEST_NO_STRING_VALUE); } private: ::testing::Test* test_; ::testing::TestInfo* testinfo_; GTestFlagsThatAllocateMemory* flags_; }; inline Utest* GTestShell::createTest() { return new GTestUTest(testinfo_, flags_); }; inline void GTestConvertor::simulateGTestFailureToPreAllocateAllTheThreadLocalData() { GTestDummyResultReporter *dummyReporter = new GTestDummyResultReporter(); ASSERT_TRUE(false); delete dummyReporter; } inline GTestConvertor::GTestConvertor(bool shouldSimulateFailureAtCreationToAllocateThreadLocalData) : first_(NULL) { if (shouldSimulateFailureAtCreationToAllocateThreadLocalData) simulateGTestFailureToPreAllocateAllTheThreadLocalData(); reporter_ = new GTestResultReporter(); } inline GTestConvertor::~GTestConvertor() { delete reporter_; while (first_) { GTestShell* next = first_->nextGTest(); delete first_; first_ = next; } } inline void GTestConvertor::addNewTestCaseForTestInfo(::testing::TestInfo* testinfo) { first_ = new GTestShell(testinfo, first_, &flags_); TestRegistry::getCurrentRegistry()->addTest(first_); } inline void GTestConvertor::addAllTestsFromTestCaseToTestRegistry(::testing::TestCase* testcase) { int currentTestCount = 0; ::testing::TestInfo* currentTest = (::testing::TestInfo*) testcase->GetTestInfo(currentTestCount); while (currentTest) { addNewTestCaseForTestInfo(currentTest); currentTestCount++; currentTest = (::testing::TestInfo*) testcase->GetTestInfo(currentTestCount); } } inline void GTestConvertor::createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock() { ::testing::InSequence seq; ::testing::internal::GetFailureReporter(); } inline void GTestConvertor::addAllGTestToTestRegistry() { createDummyInSequenceToAndFailureReporterAvoidMemoryLeakInGMock(); flags_.storeValuesOfGTestFLags(); int argc = 2; const char * argv[] = {"NameOfTheProgram", "--gmock_catch_leaked_mocks=0"}; ::testing::InitGoogleMock(&argc, (char**) argv); ::testing::UnitTest* unitTests = ::testing::UnitTest::GetInstance(); int currentUnitTestCount = 0; ::testing::TestCase* currentTestCase = (::testing::TestCase*) unitTests->GetTestCase(currentUnitTestCount); while (currentTestCase) { addAllTestsFromTestCaseToTestRegistry(currentTestCase); currentUnitTestCount++; currentTestCase = (::testing::TestCase*) unitTests->GetTestCase(currentUnitTestCount); } } #endif cpputest-4.0/include/CppUTestExt/MockSupportPlugin.h000644 000765 000024 00000004454 13663176127 023632 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupportPlugin_h #define D_MockSupportPlugin_h #include "CppUTest/TestPlugin.h" #include "CppUTestExt/MockNamedValue.h" class MockSupportPlugin : public TestPlugin { public: MockSupportPlugin(const SimpleString& name = "MockSupportPLugin"); virtual ~MockSupportPlugin() _destructor_override; virtual void preTestAction(UtestShell&, TestResult&) _override; virtual void postTestAction(UtestShell&, TestResult&) _override; virtual void installComparator(const SimpleString& name, MockNamedValueComparator& comparator); virtual void installCopier(const SimpleString& name, MockNamedValueCopier& copier); void clear(); private: MockNamedValueComparatorsAndCopiersRepository repository_; }; #endif cpputest-4.0/include/CppUTestExt/MockCheckedActualCall.h000644 000765 000024 00000040003 13663176127 024241 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockCheckedActualCall_h #define D_MockCheckedActualCall_h #include "CppUTestExt/MockActualCall.h" #include "CppUTestExt/MockExpectedCallsList.h" class MockCheckedActualCall : public MockActualCall { public: MockCheckedActualCall(unsigned int callOrder, MockFailureReporter* reporter, const MockExpectedCallsList& expectations); virtual ~MockCheckedActualCall() _destructor_override; virtual MockActualCall& withName(const SimpleString& name) _override; virtual MockActualCall& withCallOrder(unsigned int) _override; virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value) _override; virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockActualCall& withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) _override; virtual MockActualCall& withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) _override; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockActualCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override; virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override; virtual MockActualCall& withParameterOfType(const SimpleString& type, const SimpleString& name, const void* value) _override; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override; virtual MockActualCall& withOutputParameterOfType(const SimpleString& type, const SimpleString& name, void* output) _override; virtual bool hasReturnValue() _override; virtual MockNamedValue returnValue() _override; virtual bool returnBoolValueOrDefault(bool default_value) _override; virtual bool returnBoolValue() _override; virtual int returnIntValueOrDefault(int default_value) _override; virtual int returnIntValue() _override; virtual unsigned long int returnUnsignedLongIntValue() _override; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override; virtual long int returnLongIntValue() _override; virtual long int returnLongIntValueOrDefault(long int default_value) _override; virtual cpputest_ulonglong returnUnsignedLongLongIntValue() _override; virtual cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong default_value) _override; virtual cpputest_longlong returnLongLongIntValue() _override; virtual cpputest_longlong returnLongLongIntValueOrDefault(cpputest_longlong default_value) _override; virtual unsigned int returnUnsignedIntValue() _override; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override; virtual const char * returnStringValueOrDefault(const char * default_value) _override; virtual const char * returnStringValue() _override; virtual double returnDoubleValue() _override; virtual double returnDoubleValueOrDefault(double default_value) _override; virtual const void * returnConstPointerValue() _override; virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override; virtual void * returnPointerValue() _override; virtual void * returnPointerValueOrDefault(void *) _override; virtual void (*returnFunctionPointerValue())() _override; virtual void (*returnFunctionPointerValueOrDefault(void (*)()))() _override; virtual MockActualCall& onObject(const void* objectPtr) _override; virtual bool isFulfilled() const; virtual bool hasFailed() const; virtual void checkExpectations(); virtual void setMockFailureReporter(MockFailureReporter* reporter); protected: void setName(const SimpleString& name); SimpleString getName() const; virtual UtestShell* getTest() const; virtual void callHasSucceeded(); virtual void copyOutputParameters(MockCheckedExpectedCall* call); virtual void completeCallWhenMatchIsFound(); virtual void failTest(const MockFailure& failure); virtual void checkInputParameter(const MockNamedValue& actualParameter); virtual void checkOutputParameter(const MockNamedValue& outputParameter); virtual void discardCurrentlyMatchingExpectations(); enum ActualCallState { CALL_IN_PROGRESS, CALL_FAILED, CALL_SUCCEED }; virtual void setState(ActualCallState state); private: SimpleString functionName_; unsigned int callOrder_; MockFailureReporter* reporter_; ActualCallState state_; bool expectationsChecked_; MockCheckedExpectedCall* matchingExpectation_; MockExpectedCallsList potentiallyMatchingExpectations_; const MockExpectedCallsList& allExpectations_; class MockOutputParametersListNode { public: SimpleString name_; SimpleString type_; void* ptr_; MockOutputParametersListNode* next_; MockOutputParametersListNode(const SimpleString& name, const SimpleString& type, void* ptr) : name_(name), type_(type), ptr_(ptr), next_(NULLPTR) {} }; MockOutputParametersListNode* outputParameterExpectations_; virtual void addOutputParameter(const SimpleString& name, const SimpleString& type, void* ptr); virtual void cleanUpOutputParameterList(); }; class MockActualCallTrace : public MockActualCall { public: MockActualCallTrace(); virtual ~MockActualCallTrace() _destructor_override; virtual MockActualCall& withName(const SimpleString& name) _override; virtual MockActualCall& withCallOrder(unsigned int) _override; virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value) _override; virtual MockActualCall& withIntParameter(const SimpleString& name, int value) _override; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value) _override; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value) _override; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value) _override; virtual MockActualCall& withLongLongIntParameter(const SimpleString& name, cpputest_longlong value) _override; virtual MockActualCall& withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value) _override; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value) _override; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value) _override; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value) _override; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value) _override; virtual MockActualCall& withFunctionPointerParameter(const SimpleString& name, void (*value)()) _override; virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size) _override; virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value) _override; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output) _override; virtual MockActualCall& withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output) _override; virtual bool hasReturnValue() _override; virtual MockNamedValue returnValue() _override; virtual bool returnBoolValueOrDefault(bool default_value) _override; virtual bool returnBoolValue() _override; virtual int returnIntValueOrDefault(int default_value) _override; virtual int returnIntValue() _override; virtual unsigned long int returnUnsignedLongIntValue() _override; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int) _override; virtual long int returnLongIntValue() _override; virtual long int returnLongIntValueOrDefault(long int default_value) _override; virtual cpputest_ulonglong returnUnsignedLongLongIntValue() _override; virtual cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong default_value) _override; virtual cpputest_longlong returnLongLongIntValue() _override; virtual cpputest_longlong returnLongLongIntValueOrDefault(cpputest_longlong default_value) _override; virtual unsigned int returnUnsignedIntValue() _override; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value) _override; virtual const char * returnStringValueOrDefault(const char * default_value) _override; virtual const char * returnStringValue() _override; virtual double returnDoubleValue() _override; virtual double returnDoubleValueOrDefault(double default_value) _override; virtual void * returnPointerValue() _override; virtual void * returnPointerValueOrDefault(void *) _override; virtual const void * returnConstPointerValue() _override; virtual const void * returnConstPointerValueOrDefault(const void * default_value) _override; virtual void (*returnFunctionPointerValue())() _override; virtual void (*returnFunctionPointerValueOrDefault(void (*)()))() _override; virtual MockActualCall& onObject(const void* objectPtr) _override; const char* getTraceOutput(); void clear(); static MockActualCallTrace& instance(); static void clearInstance(); private: SimpleString traceBuffer_; static MockActualCallTrace* instance_; void addParameterName(const SimpleString& name); }; class MockIgnoredActualCall: public MockActualCall { public: virtual MockActualCall& withName(const SimpleString&) _override { return *this;} virtual MockActualCall& withCallOrder(unsigned int) _override { return *this; } virtual MockActualCall& withBoolParameter(const SimpleString&, bool) _override { return *this; } virtual MockActualCall& withIntParameter(const SimpleString&, int) _override { return *this; } virtual MockActualCall& withUnsignedIntParameter(const SimpleString&, unsigned int) _override { return *this; } virtual MockActualCall& withLongIntParameter(const SimpleString&, long int) _override { return *this; } virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString&, unsigned long int) _override { return *this; } virtual MockActualCall& withLongLongIntParameter(const SimpleString&, cpputest_longlong) _override { return *this; } virtual MockActualCall& withUnsignedLongLongIntParameter(const SimpleString&, cpputest_ulonglong) _override { return *this; } virtual MockActualCall& withDoubleParameter(const SimpleString&, double) _override { return *this; } virtual MockActualCall& withStringParameter(const SimpleString&, const char*) _override { return *this; } virtual MockActualCall& withPointerParameter(const SimpleString& , void*) _override { return *this; } virtual MockActualCall& withConstPointerParameter(const SimpleString& , const void*) _override { return *this; } virtual MockActualCall& withFunctionPointerParameter(const SimpleString& , void (*)()) _override { return *this; } virtual MockActualCall& withMemoryBufferParameter(const SimpleString&, const unsigned char*, size_t) _override { return *this; } virtual MockActualCall& withParameterOfType(const SimpleString&, const SimpleString&, const void*) _override { return *this; } virtual MockActualCall& withOutputParameter(const SimpleString&, void*) _override { return *this; } virtual MockActualCall& withOutputParameterOfType(const SimpleString&, const SimpleString&, void*) _override { return *this; } virtual bool hasReturnValue() _override { return false; } virtual MockNamedValue returnValue() _override { return MockNamedValue(""); } virtual bool returnBoolValueOrDefault(bool value) _override { return value; } virtual bool returnBoolValue() _override { return false; } virtual int returnIntValue() _override { return 0; } virtual int returnIntValueOrDefault(int value) _override { return value; } virtual unsigned long int returnUnsignedLongIntValue() _override { return 0; } virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int value) _override { return value; } virtual long int returnLongIntValue() _override { return 0; } virtual long int returnLongIntValueOrDefault(long int value) _override { return value; } virtual cpputest_ulonglong returnUnsignedLongLongIntValue() _override { return 0; } virtual cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong value) _override { return value; } virtual cpputest_longlong returnLongLongIntValue() _override { return 0; } virtual cpputest_longlong returnLongLongIntValueOrDefault(cpputest_longlong value) _override { return value; } virtual unsigned int returnUnsignedIntValue() _override { return 0; } virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int value) _override { return value; } virtual double returnDoubleValue() _override { return 0.0; } virtual double returnDoubleValueOrDefault(double value) _override { return value; } virtual const char * returnStringValue() _override { return ""; } virtual const char * returnStringValueOrDefault(const char * value) _override { return value; } virtual void * returnPointerValue() _override { return NULLPTR; } virtual void * returnPointerValueOrDefault(void * value) _override { return value; } virtual const void * returnConstPointerValue() _override { return NULLPTR; } virtual const void * returnConstPointerValueOrDefault(const void * value) _override { return value; } virtual void (*returnFunctionPointerValue())() _override { return NULLPTR; } virtual void (*returnFunctionPointerValueOrDefault(void (*value)()))() _override { return value; } virtual MockActualCall& onObject(const void* ) _override { return *this; } static MockIgnoredActualCall& instance(); }; #endif cpputest-4.0/include/CppUTestExt/MemoryReportFormatter.h000644 000765 000024 00000006273 13663176127 024516 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReportFormatter_h #define D_MemoryReportFormatter_h class TestOutput; class UtestShell; class MemoryReportFormatter { public: virtual ~MemoryReportFormatter(){} virtual void report_testgroup_start(TestResult* result, UtestShell& test)=0; virtual void report_testgroup_end(TestResult* result, UtestShell& test)=0; virtual void report_test_start(TestResult* result, UtestShell& test)=0; virtual void report_test_end(TestResult* result, UtestShell& test)=0; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, size_t line)=0; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, size_t line)=0; }; class NormalMemoryReportFormatter : public MemoryReportFormatter { public: NormalMemoryReportFormatter(); virtual ~NormalMemoryReportFormatter() _destructor_override; virtual void report_testgroup_start(TestResult* /*result*/, UtestShell& /*test*/) _override; virtual void report_testgroup_end(TestResult* /*result*/, UtestShell& /*test*/) _override {} // LCOV_EXCL_LINE virtual void report_test_start(TestResult* result, UtestShell& test) _override; virtual void report_test_end(TestResult* result, UtestShell& test) _override; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, size_t line) _override; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, size_t line) _override; }; #endif cpputest-4.0/include/CppUTestExt/CodeMemoryReportFormatter.h000644 000765 000024 00000006530 13663176127 025305 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CodeMemoryReportFormatter_h #define D_CodeMemoryReportFormatter_h #include "CppUTestExt/MemoryReportFormatter.h" struct CodeReportingAllocationNode; class CodeMemoryReportFormatter : public MemoryReportFormatter { private: CodeReportingAllocationNode* codeReportingList_; TestMemoryAllocator* internalAllocator_; public: CodeMemoryReportFormatter(TestMemoryAllocator* internalAllocator); virtual ~CodeMemoryReportFormatter() _destructor_override; virtual void report_testgroup_start(TestResult* result, UtestShell& test) _override; virtual void report_testgroup_end(TestResult* /*result*/, UtestShell& /*test*/) _override {} // LCOV_EXCL_LINE virtual void report_test_start(TestResult* result, UtestShell& test) _override; virtual void report_test_end(TestResult* result, UtestShell& test) _override; virtual void report_alloc_memory(TestResult* result, TestMemoryAllocator* allocator, size_t size, char* memory, const char* file, size_t line) _override; virtual void report_free_memory(TestResult* result, TestMemoryAllocator* allocator, char* memory, const char* file, size_t line) _override; private: void addNodeToList(const char* variableName, void* memory, CodeReportingAllocationNode* next); CodeReportingAllocationNode* findNode(void* memory); bool variableExists(const SimpleString& variableName); void clearReporting(); bool isNewAllocator(TestMemoryAllocator* allocator); SimpleString createVariableNameFromFileLineInfo(const char *file, size_t line); SimpleString getAllocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, size_t size); SimpleString getDeallocationString(TestMemoryAllocator* allocator, const SimpleString& variableName, const char* file, size_t line); }; #endif cpputest-4.0/include/CppUTestExt/MockExpectedCall.h000644 000765 000024 00000015204 13663176127 023327 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockExpectedCall_h #define D_MockExpectedCall_h #include "CppUTest/CppUTestConfig.h" class MockNamedValue; extern SimpleString StringFrom(const MockNamedValue& parameter); class MockExpectedCall { public: MockExpectedCall(); virtual ~MockExpectedCall(); virtual MockExpectedCall& withName(const SimpleString& name)=0; virtual MockExpectedCall& withCallOrder(unsigned int)=0; virtual MockExpectedCall& withCallOrder(unsigned int, unsigned int)=0; MockExpectedCall& withParameter(const SimpleString& name, bool value) { return withBoolParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, int value) { return withIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, unsigned int value) { return withUnsignedIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, long int value) { return withLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, unsigned long int value) { return withUnsignedLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, cpputest_longlong value) { return withLongLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, cpputest_ulonglong value) { return withUnsignedLongLongIntParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, double value) { return withDoubleParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, double value, double tolerance) { return withDoubleParameter(name, value, tolerance); } MockExpectedCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, void (*value)()) { return withFunctionPointerParameter(name, value); } MockExpectedCall& withParameter(const SimpleString& name, const unsigned char* value, size_t size) { return withMemoryBufferParameter(name, value, size); } virtual MockExpectedCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0; virtual MockExpectedCall& withOutputParameterReturning(const SimpleString& name, const void* value, size_t size)=0; virtual MockExpectedCall& withOutputParameterOfTypeReturning(const SimpleString& typeName, const SimpleString& name, const void* value)=0; virtual MockExpectedCall& withUnmodifiedOutputParameter(const SimpleString& name)=0; virtual MockExpectedCall& ignoreOtherParameters()=0; virtual MockExpectedCall& withBoolParameter(const SimpleString& name, bool value)=0; virtual MockExpectedCall& withIntParameter(const SimpleString& name, int value)=0; virtual MockExpectedCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value)=0; virtual MockExpectedCall& withLongIntParameter(const SimpleString& name, long int value)=0; virtual MockExpectedCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value)=0; virtual MockExpectedCall& withLongLongIntParameter(const SimpleString& name, cpputest_longlong value)=0; virtual MockExpectedCall& withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value)=0; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value)=0; virtual MockExpectedCall& withDoubleParameter(const SimpleString& name, double value, double tolerance)=0; virtual MockExpectedCall& withStringParameter(const SimpleString& name, const char* value)=0; virtual MockExpectedCall& withPointerParameter(const SimpleString& name, void* value)=0; virtual MockExpectedCall& withFunctionPointerParameter(const SimpleString& name, void (*value)())=0; virtual MockExpectedCall& withConstPointerParameter(const SimpleString& name, const void* value)=0; virtual MockExpectedCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)=0; virtual MockExpectedCall& andReturnValue(bool value)=0; virtual MockExpectedCall& andReturnValue(int value)=0; virtual MockExpectedCall& andReturnValue(unsigned int value)=0; virtual MockExpectedCall& andReturnValue(long int value)=0; virtual MockExpectedCall& andReturnValue(unsigned long int value)=0; virtual MockExpectedCall& andReturnValue(cpputest_longlong value)=0; virtual MockExpectedCall& andReturnValue(cpputest_ulonglong value)=0; virtual MockExpectedCall& andReturnValue(double value)=0; virtual MockExpectedCall& andReturnValue(const char* value)=0; virtual MockExpectedCall& andReturnValue(void* value)=0; virtual MockExpectedCall& andReturnValue(const void* value)=0; virtual MockExpectedCall& andReturnValue(void (*value)())=0; virtual MockExpectedCall& onObject(void* objectPtr)=0; }; #endif cpputest-4.0/include/CppUTestExt/GTest.h000644 000765 000024 00000004145 13663176127 021210 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GTEST__H_ #define GTEST__H_ #undef new #undef strdup #undef strndup #undef RUN_ALL_TESTS #include "gtest/gtest.h" #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif #ifdef CPPUTEST_USE_MALLOC_MACROS #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #endif #include "CppUTestExt/GTestSupport.h" #ifndef RUN_ALL_TESTS #define GTEST_VERSION_GTEST_1_7 #else #ifdef ADD_FAILURE_AT #define GTEST_VERSION_GTEST_1_6 #else #define GTEST_VERSION_GTEST_1_5 #endif #endif #undef RUN_ALL_TESTS #endif cpputest-4.0/include/CppUTestExt/GTestSupport.h000644 000765 000024 00000003255 13663176127 022606 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GTESTSUPPORT__H_ #define GTESTSUPPORT__H_ extern void CppuTestGTestIgnoreLeaksInTest(); #endif cpputest-4.0/include/CppUTestExt/MockFailure.h000644 000765 000024 00000010632 13663176127 022361 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockFailure_h #define D_MockFailure_h #include "CppUTest/TestFailure.h" class MockExpectedCallsList; class MockCheckedActualCall; class MockNamedValue; class MockFailure; class MockFailureReporter { protected: bool crashOnFailure_; public: MockFailureReporter() : crashOnFailure_(false){} virtual ~MockFailureReporter() {} virtual void failTest(const MockFailure& failure); virtual UtestShell* getTestToFail(); virtual void crashOnFailure(bool shouldCrash) { crashOnFailure_ = shouldCrash; } }; class MockFailure : public TestFailure { public: MockFailure(UtestShell* test); virtual ~MockFailure() _destructor_override {} protected: void addExpectationsAndCallHistory(const MockExpectedCallsList& expectations); void addExpectationsAndCallHistoryRelatedTo(const SimpleString& function, const MockExpectedCallsList& expectations); }; class MockExpectedCallsDidntHappenFailure : public MockFailure { public: MockExpectedCallsDidntHappenFailure(UtestShell* test, const MockExpectedCallsList& expectations); }; class MockUnexpectedCallHappenedFailure : public MockFailure { public: MockUnexpectedCallHappenedFailure(UtestShell* test, const SimpleString& name, const MockExpectedCallsList& expectations); }; class MockCallOrderFailure : public MockFailure { public: MockCallOrderFailure(UtestShell* test, const MockExpectedCallsList& expectations); }; class MockUnexpectedInputParameterFailure : public MockFailure { public: MockUnexpectedInputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations); }; class MockUnexpectedOutputParameterFailure : public MockFailure { public: MockUnexpectedOutputParameterFailure(UtestShell* test, const SimpleString& functionName, const MockNamedValue& parameter, const MockExpectedCallsList& expectations); }; class MockExpectedParameterDidntHappenFailure : public MockFailure { public: MockExpectedParameterDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations); }; class MockNoWayToCompareCustomTypeFailure : public MockFailure { public: MockNoWayToCompareCustomTypeFailure(UtestShell* test, const SimpleString& typeName); }; class MockNoWayToCopyCustomTypeFailure : public MockFailure { public: MockNoWayToCopyCustomTypeFailure(UtestShell* test, const SimpleString& typeName); }; class MockUnexpectedObjectFailure : public MockFailure { public: MockUnexpectedObjectFailure(UtestShell* test, const SimpleString& functionName, const void* expected, const MockExpectedCallsList& expectations); }; class MockExpectedObjectDidntHappenFailure : public MockFailure { public: MockExpectedObjectDidntHappenFailure(UtestShell* test, const SimpleString& functionName, const MockExpectedCallsList& expectations); }; #endif cpputest-4.0/include/CppUTestExt/MockActualCall.h000644 000765 000024 00000016023 13663176127 022777 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockActualCall_h #define D_MockActualCall_h #include "CppUTest/CppUTestConfig.h" #include "CppUTest/TestHarness.h" #include "CppUTestExt/MockNamedValue.h" #include "CppUTestExt/MockExpectedCallsList.h" class MockFailureReporter; class MockFailure; class MockActualCall { public: MockActualCall(); virtual ~MockActualCall(); virtual MockActualCall& withName(const SimpleString& name)=0; virtual MockActualCall& withCallOrder(unsigned int callOrder)=0; MockActualCall& withParameter(const SimpleString& name, bool value) { return withBoolParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, int value) { return withIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, unsigned int value) { return withUnsignedIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, long int value) { return withLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, unsigned long int value) { return withUnsignedLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, cpputest_longlong value) { return withLongLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, cpputest_ulonglong value) { return withUnsignedLongLongIntParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, double value) { return withDoubleParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, const char* value) { return withStringParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, void* value) { return withPointerParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, void (*value)()) { return withFunctionPointerParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, const void* value) { return withConstPointerParameter(name, value); } MockActualCall& withParameter(const SimpleString& name, const unsigned char* value, size_t size) { return withMemoryBufferParameter(name, value, size); } virtual MockActualCall& withParameterOfType(const SimpleString& typeName, const SimpleString& name, const void* value)=0; virtual MockActualCall& withOutputParameter(const SimpleString& name, void* output)=0; virtual MockActualCall& withOutputParameterOfType(const SimpleString& typeName, const SimpleString& name, void* output)=0; virtual MockActualCall& withBoolParameter(const SimpleString& name, bool value)=0; virtual MockActualCall& withIntParameter(const SimpleString& name, int value)=0; virtual MockActualCall& withUnsignedIntParameter(const SimpleString& name, unsigned int value)=0; virtual MockActualCall& withLongIntParameter(const SimpleString& name, long int value)=0; virtual MockActualCall& withUnsignedLongIntParameter(const SimpleString& name, unsigned long int value)=0; virtual MockActualCall& withLongLongIntParameter(const SimpleString& name, cpputest_longlong value)=0; virtual MockActualCall& withUnsignedLongLongIntParameter(const SimpleString& name, cpputest_ulonglong value)=0; virtual MockActualCall& withDoubleParameter(const SimpleString& name, double value)=0; virtual MockActualCall& withStringParameter(const SimpleString& name, const char* value)=0; virtual MockActualCall& withPointerParameter(const SimpleString& name, void* value)=0; virtual MockActualCall& withFunctionPointerParameter(const SimpleString& name, void (*value)())=0; virtual MockActualCall& withConstPointerParameter(const SimpleString& name, const void* value)=0; virtual MockActualCall& withMemoryBufferParameter(const SimpleString& name, const unsigned char* value, size_t size)=0; virtual bool hasReturnValue()=0; virtual MockNamedValue returnValue()=0; virtual bool returnBoolValueOrDefault(bool default_value)=0; virtual bool returnBoolValue()=0; virtual int returnIntValueOrDefault(int default_value)=0; virtual int returnIntValue()=0; virtual unsigned long int returnUnsignedLongIntValue()=0; virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int default_value)=0; virtual long int returnLongIntValue()=0; virtual long int returnLongIntValueOrDefault(long int default_value)=0; virtual cpputest_ulonglong returnUnsignedLongLongIntValue()=0; virtual cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong default_value)=0; virtual cpputest_longlong returnLongLongIntValue()=0; virtual cpputest_longlong returnLongLongIntValueOrDefault(cpputest_longlong default_value)=0; virtual unsigned int returnUnsignedIntValue()=0; virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int default_value)=0; virtual const char * returnStringValueOrDefault(const char * default_value)=0; virtual const char * returnStringValue()=0; virtual double returnDoubleValue()=0; virtual double returnDoubleValueOrDefault(double default_value)=0; virtual void * returnPointerValue()=0; virtual void * returnPointerValueOrDefault(void * default_value)=0; virtual const void * returnConstPointerValue()=0; virtual const void * returnConstPointerValueOrDefault(const void * default_value)=0; virtual void (*returnFunctionPointerValue())()=0; virtual void (*returnFunctionPointerValueOrDefault(void (*default_value)()))()=0; virtual MockActualCall& onObject(const void* objectPtr)=0; }; #endif cpputest-4.0/include/CppUTestExt/MockSupport.h000644 000765 000024 00000016405 13663176127 022452 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MockSupport_h #define D_MockSupport_h #include "CppUTestExt/MockFailure.h" #include "CppUTestExt/MockCheckedActualCall.h" #include "CppUTestExt/MockCheckedExpectedCall.h" #include "CppUTestExt/MockExpectedCallsList.h" class UtestShell; class MockSupport; /* This allows access to "the global" mocking support for easier testing */ MockSupport& mock(const SimpleString& mockName = "", MockFailureReporter* failureReporterForThisCall = NULLPTR); class MockSupport { public: MockSupport(const SimpleString& mockName = ""); virtual ~MockSupport(); virtual void strictOrder(); virtual MockExpectedCall& expectOneCall(const SimpleString& functionName); virtual void expectNoCall(const SimpleString& functionName); virtual MockExpectedCall& expectNCalls(unsigned int amount, const SimpleString& functionName); virtual MockActualCall& actualCall(const SimpleString& functionName); virtual bool hasReturnValue(); virtual MockNamedValue returnValue(); virtual bool boolReturnValue(); virtual bool returnBoolValueOrDefault(bool defaultValue); virtual int intReturnValue(); virtual int returnIntValueOrDefault(int defaultValue); virtual unsigned int unsignedIntReturnValue(); virtual long int longIntReturnValue(); virtual long int returnLongIntValueOrDefault(long int defaultValue); virtual unsigned long int unsignedLongIntReturnValue(); virtual unsigned long int returnUnsignedLongIntValueOrDefault(unsigned long int defaultValue); virtual cpputest_longlong longLongIntReturnValue(); virtual cpputest_longlong returnLongLongIntValueOrDefault(cpputest_longlong defaultValue); virtual cpputest_ulonglong unsignedLongLongIntReturnValue(); virtual cpputest_ulonglong returnUnsignedLongLongIntValueOrDefault(cpputest_ulonglong defaultValue); virtual unsigned int returnUnsignedIntValueOrDefault(unsigned int defaultValue); virtual const char* stringReturnValue(); virtual const char* returnStringValueOrDefault(const char * defaultValue); virtual double returnDoubleValueOrDefault(double defaultValue); virtual double doubleReturnValue(); virtual void* pointerReturnValue(); virtual void* returnPointerValueOrDefault(void * defaultValue); virtual const void* returnConstPointerValueOrDefault(const void * defaultValue); virtual const void* constPointerReturnValue(); virtual void (*returnFunctionPointerValueOrDefault(void (*defaultValue)()))(); virtual void (*functionPointerReturnValue())(); bool hasData(const SimpleString& name); void setData(const SimpleString& name, bool value); void setData(const SimpleString& name, int value); void setData(const SimpleString& name, unsigned int value); void setData(const SimpleString& name, const char* value); void setData(const SimpleString& name, double value); void setData(const SimpleString& name, void* value); void setData(const SimpleString& name, const void* value); void setData(const SimpleString& name, void (*value)()); void setDataObject(const SimpleString& name, const SimpleString& type, void* value); void setDataConstObject(const SimpleString& name, const SimpleString& type, const void* value); MockNamedValue getData(const SimpleString& name); MockSupport* getMockSupportScope(const SimpleString& name); const char* getTraceOutput(); /* * The following functions are recursively through the lower MockSupports scopes * This means, if you do mock().disable() it will disable *all* mocking scopes, including mock("myScope"). */ virtual void disable(); virtual void enable(); virtual void tracing(bool enabled); virtual void ignoreOtherCalls(); virtual void checkExpectations(); virtual bool expectedCallsLeft(); virtual void clear(); virtual void crashOnFailure(bool shouldFail = true); /* * Each mock() call will set the activeReporter to standard, unless a special reporter is passed for this call. */ virtual void setMockFailureStandardReporter(MockFailureReporter* reporter); virtual void setActiveReporter(MockFailureReporter* activeReporter); virtual void setDefaultComparatorsAndCopiersRepository(); virtual void installComparator(const SimpleString& typeName, MockNamedValueComparator& comparator); virtual void installCopier(const SimpleString& typeName, MockNamedValueCopier& copier); virtual void installComparatorsAndCopiers(const MockNamedValueComparatorsAndCopiersRepository& repository); virtual void removeAllComparatorsAndCopiers(); protected: MockSupport* clone(const SimpleString& mockName); virtual MockCheckedActualCall *createActualCall(); virtual void failTest(MockFailure& failure); void countCheck(); private: unsigned int actualCallOrder_; unsigned int expectedCallOrder_; bool strictOrdering_; MockFailureReporter *activeReporter_; MockFailureReporter *standardReporter_; MockFailureReporter defaultReporter_; MockExpectedCallsList expectations_; bool ignoreOtherCalls_; bool enabled_; MockCheckedActualCall *lastActualFunctionCall_; MockNamedValueComparatorsAndCopiersRepository comparatorsAndCopiersRepository_; MockNamedValueList data_; const SimpleString mockName_; bool tracing_; void checkExpectationsOfLastActualCall(); bool wasLastActualCallFulfilled(); void failTestWithExpectedCallsNotFulfilled(); void failTestWithOutOfOrderCalls(); MockNamedValue* retrieveDataFromStore(const SimpleString& name); MockSupport* getMockSupport(MockNamedValueListNode* node); bool callIsIgnored(const SimpleString& functionName); bool hasCallsOutOfOrder(); SimpleString appendScopeToName(const SimpleString& functionName); }; #endif cpputest-4.0/include/CppUTestExt/GMock.h000644 000765 000024 00000004010 13663176127 021151 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2011, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef GMOCK_H_ #define GMOCK_H_ #undef new #undef strdup #undef strndup #undef RUN_ALL_TESTS #define GTEST_DONT_DEFINE_TEST 1 #define GTEST_DONT_DEFINE_FAIL 1 #include "gmock/gmock.h" #undef RUN_ALL_TESTS using testing::Return; using testing::NiceMock; #ifdef CPPUTEST_USE_NEW_MACROS #include "CppUTest/MemoryLeakDetectorNewMacros.h" #endif #ifdef CPPUTEST_USE_MALLOC_MACROS #include "CppUTest/MemoryLeakDetectorMallocMacros.h" #endif #endif cpputest-4.0/include/CppUTestExt/OrderedTest.h000644 000765 000024 00000007370 13663176127 022411 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_OrderedTest_h #define D_OrderedTest_h class OrderedTestShell : public UtestShell { public: OrderedTestShell(); virtual ~OrderedTestShell() _destructor_override; virtual OrderedTestShell* addOrderedTest(OrderedTestShell* test); virtual OrderedTestShell* getNextOrderedTest(); int getLevel(); void setLevel(int level); static void addOrderedTestToHead(OrderedTestShell* test); static OrderedTestShell* getOrderedTestHead(); static bool firstOrderedTest(); static void setOrderedTestHead(OrderedTestShell* test); private: static OrderedTestShell* _orderedTestsHead; OrderedTestShell* _nextOrderedTest; int _level; }; class OrderedTestInstaller { public: explicit OrderedTestInstaller(OrderedTestShell& test, const char* groupName, const char* testName, const char* fileName, size_t lineNumber, int level); virtual ~OrderedTestInstaller(); private: void addOrderedTestInOrder(OrderedTestShell* test); void addOrderedTestInOrderNotAtHeadPosition(OrderedTestShell* test); }; #define TEST_ORDERED(testGroup, testName, testLevel) \ /* declarations for compilers */ \ class TEST_##testGroup##_##testName##_TestShell; \ extern TEST_##testGroup##_##testName##_TestShell TEST_##testGroup##_##testName##_Instance; \ class TEST_##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: TEST_##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ void testBody(); }; \ class TEST_##testGroup##_##testName##_TestShell : public OrderedTestShell { \ virtual Utest* createTest() _override { return new TEST_##testGroup##_##testName##_Test; } \ } TEST_##testGroup##_##testName##_Instance; \ static OrderedTestInstaller TEST_##testGroup##_##testName##_Installer(TEST_##testGroup##_##testName##_Instance, #testGroup, #testName, __FILE__,__LINE__, testLevel); \ void TEST_##testGroup##_##testName##_Test::testBody() #define TEST_ORDERED_C_WRAPPER(group_name, test_name, testLevel) \ extern "C" void test_##group_name##_##test_name##_wrapper_c(void); \ TEST_ORDERED(group_name, test_name, testLevel) { \ test_##group_name##_##test_name##_wrapper_c(); \ } #endif cpputest-4.0/include/CppUTestExt/MemoryReporterPlugin.h000644 000765 000024 00000005476 13663176127 024344 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryReporterPlugin_h #define D_MemoryReporterPlugin_h #include "CppUTest/TestPlugin.h" #include "CppUTestExt/MemoryReportAllocator.h" class MemoryReportFormatter; class MemoryReporterPlugin : public TestPlugin { MemoryReportFormatter* formatter_; MemoryReportAllocator mallocAllocator; MemoryReportAllocator newAllocator; MemoryReportAllocator newArrayAllocator; SimpleString currentTestGroup_; public: MemoryReporterPlugin(); virtual ~MemoryReporterPlugin() _destructor_override; virtual void preTestAction(UtestShell & test, TestResult & result) _override; virtual void postTestAction(UtestShell & test, TestResult & result) _override; virtual bool parseArguments(int, const char *const *, int) _override; MemoryReportAllocator* getMallocAllocator(); MemoryReportAllocator* getNewAllocator(); MemoryReportAllocator* getNewArrayAllocator(); protected: virtual MemoryReportFormatter* createMemoryFormatter(const SimpleString& type); private: void destroyMemoryFormatter(MemoryReportFormatter* formatter); void setGlobalMemoryReportAllocators(); void removeGlobalMemoryReportAllocators(); void initializeAllocator(MemoryReportAllocator* allocator, TestResult & result); }; #endif cpputest-4.0/include/CppUTest/JUnitTestOutput.h000644 000765 000024 00000006513 13663176127 022614 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_JUnitTestOutput_h #define D_JUnitTestOutput_h #include "TestOutput.h" #include "SimpleString.h" struct JUnitTestOutputImpl; struct JUnitTestCaseResultNode; class JUnitTestOutput: public TestOutput { public: JUnitTestOutput(); virtual ~JUnitTestOutput() _destructor_override; virtual void printTestsStarted() _override; virtual void printTestsEnded(const TestResult& result) _override; virtual void printCurrentTestStarted(const UtestShell& test) _override; virtual void printCurrentTestEnded(const TestResult& res) _override; virtual void printCurrentGroupStarted(const UtestShell& test) _override; virtual void printCurrentGroupEnded(const TestResult& res) _override; virtual void printBuffer(const char*) _override; virtual void print(const char*) _override; virtual void print(long) _override; virtual void print(size_t) _override; virtual void printFailure(const TestFailure& failure) _override; virtual void flush() _override; virtual SimpleString createFileName(const SimpleString& group); void setPackageName(const SimpleString &package); protected: JUnitTestOutputImpl* impl_; void resetTestGroupResult(); virtual void openFileForWrite(const SimpleString& fileName); virtual void writeTestGroupToFile(); virtual void writeToFile(const SimpleString& buffer); virtual void closeFile(); virtual void writeXmlHeader(); virtual void writeTestSuiteSummary(); virtual void writeProperties(); virtual void writeTestCases(); virtual SimpleString encodeXmlText(const SimpleString& textbody); virtual SimpleString encodeFileName(const SimpleString& fileName); virtual void writeFailure(JUnitTestCaseResultNode* node); virtual void writeFileEnding(); }; #endif cpputest-4.0/include/CppUTest/TestRegistry.h000644 000765 000024 00000007041 13663176127 022147 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // TestRegistry is a collection of tests that can be run // #ifndef D_TestRegistry_h #define D_TestRegistry_h #include "StandardCLibrary.h" #include "SimpleString.h" #include "TestFilter.h" class UtestShell; class TestResult; class TestPlugin; class TestRegistry { public: TestRegistry(); virtual ~TestRegistry(); virtual void addTest(UtestShell *test); virtual void unDoLastAddTest(); virtual size_t countTests(); virtual void runAllTests(TestResult& result); virtual void shuffleTests(size_t seed); virtual void reverseTests(); virtual void listTestGroupNames(TestResult& result); virtual void listTestGroupAndCaseNames(TestResult& result); virtual void setNameFilters(const TestFilter* filters); virtual void setGroupFilters(const TestFilter* filters); virtual void installPlugin(TestPlugin* plugin); virtual void resetPlugins(); virtual TestPlugin* getFirstPlugin(); virtual TestPlugin* getPluginByName(const SimpleString& name); virtual void removePluginByName(const SimpleString& name); virtual int countPlugins(); virtual UtestShell* getFirstTest(); virtual UtestShell* getTestWithNext(UtestShell* test); virtual UtestShell* findTestWithName(const SimpleString& name); virtual UtestShell* findTestWithGroup(const SimpleString& name); static TestRegistry* getCurrentRegistry(); virtual void setCurrentRegistry(TestRegistry* registry); virtual void setRunTestsInSeperateProcess(); int getCurrentRepetition(); void setRunIgnored(); private: bool testShouldRun(UtestShell* test, TestResult& result); bool endOfGroup(UtestShell* test); UtestShell * tests_; const TestFilter* nameFilters_; const TestFilter* groupFilters_; TestPlugin* firstPlugin_; static TestRegistry* currentRegistry_; bool runInSeperateProcess_; int currentRepetition_; bool runIgnored_; }; #endif cpputest-4.0/include/CppUTest/CommandLineTestRunner.h000644 000765 000024 00000005162 13663176127 023721 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CommandLineTestRunner_H #define D_CommandLineTestRunner_H #include "TestHarness.h" #include "TestOutput.h" #include "CommandLineArguments.h" #include "TestFilter.h" class TestRegistry; #define DEF_PLUGIN_MEM_LEAK "MemoryLeakPlugin" #define DEF_PLUGIN_SET_POINTER "SetPointerPlugin" class CommandLineTestRunner { public: static int RunAllTests(int ac, const char *const *av); static int RunAllTests(int ac, char** av); CommandLineTestRunner(int ac, const char *const *av, TestRegistry* registry); virtual ~CommandLineTestRunner(); int runAllTestsMain(); protected: virtual TestOutput* createTeamCityOutput(); virtual TestOutput* createJUnitOutput(const SimpleString& packageName); virtual TestOutput* createConsoleOutput(); virtual TestOutput* createCompositeOutput(TestOutput* outputOne, TestOutput* outputTwo); TestOutput* output_; private: CommandLineArguments* arguments_; TestRegistry* registry_; bool parseArguments(TestPlugin*); int runAllTests(); void initializeTestRun(); }; #endif cpputest-4.0/include/CppUTest/SimpleMutex.h000644 000765 000024 00000003747 13663176127 021764 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2014, Michael Feathers, James Grenning, Bas Vodde and Chen YewMing * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_SimpleMutex_h #define D_SimpleMutex_h #include "CppUTest/PlatformSpecificFunctions.h" class SimpleMutex { public: SimpleMutex(void); ~SimpleMutex(void); void Lock(void); void Unlock(void); private: PlatformSpecificMutex psMtx; }; class ScopedMutexLock { public: ScopedMutexLock(SimpleMutex *); ~ScopedMutexLock(void); private: SimpleMutex * mutex; }; #endif cpputest-4.0/include/CppUTest/MemoryLeakWarningPlugin.h000644 000765 000024 00000007646 13663176127 024264 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryLeakWarningPlugin_h #define D_MemoryLeakWarningPlugin_h #include "TestPlugin.h" #include "MemoryLeakDetectorNewMacros.h" #define IGNORE_ALL_LEAKS_IN_TEST() if (MemoryLeakWarningPlugin::getFirstPlugin()) MemoryLeakWarningPlugin::getFirstPlugin()->ignoreAllLeaksInTest() #define EXPECT_N_LEAKS(n) if (MemoryLeakWarningPlugin::getFirstPlugin()) MemoryLeakWarningPlugin::getFirstPlugin()->expectLeaksInTest(n) extern void crash_on_allocation_number(unsigned alloc_number); class MemoryLeakDetector; class MemoryLeakFailure; class MemoryLeakWarningPlugin: public TestPlugin { public: MemoryLeakWarningPlugin(const SimpleString& name, MemoryLeakDetector* localDetector = NULLPTR); virtual ~MemoryLeakWarningPlugin() _destructor_override; virtual void preTestAction(UtestShell& test, TestResult& result) _override; virtual void postTestAction(UtestShell& test, TestResult& result) _override; virtual const char* FinalReport(size_t toBeDeletedLeaks = 0); void ignoreAllLeaksInTest(); void expectLeaksInTest(size_t n); void destroyGlobalDetectorAndTurnOffMemoryLeakDetectionInDestructor(bool des); MemoryLeakDetector* getMemoryLeakDetector(); static MemoryLeakWarningPlugin* getFirstPlugin(); static MemoryLeakDetector* getGlobalDetector(); static MemoryLeakFailure* getGlobalFailureReporter(); static void setGlobalDetector(MemoryLeakDetector* detector, MemoryLeakFailure* reporter); static void destroyGlobalDetector(); static void turnOffNewDeleteOverloads(); static void turnOnDefaultNotThreadSafeNewDeleteOverloads(); static void turnOnThreadSafeNewDeleteOverloads(); static bool areNewDeleteOverloaded(); static void saveAndDisableNewDeleteOverloads(); static void restoreNewDeleteOverloads(); private: MemoryLeakDetector* memLeakDetector_; bool ignoreAllWarnings_; bool destroyGlobalDetectorAndTurnOfMemoryLeakDetectionInDestructor_; size_t expectedLeaks_; size_t failureCount_; static MemoryLeakWarningPlugin* firstPlugin_; }; extern void* cpputest_malloc_location_with_leak_detection(size_t size, const char* file, size_t line); extern void* cpputest_realloc_location_with_leak_detection(void* memory, size_t size, const char* file, size_t line); extern void cpputest_free_location_with_leak_detection(void* buffer, const char* file, size_t line); #endif cpputest-4.0/include/CppUTest/TestHarness_c.h000644 000765 000024 00000026404 13663176127 022250 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /****************************************************************************** * * Provides an interface for when working with pure C * *******************************************************************************/ #ifndef D_TestHarness_c_h #define D_TestHarness_c_h #include "CppUTestConfig.h" #define CHECK_EQUAL_C_BOOL(expected,actual) \ CHECK_EQUAL_C_BOOL_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_BOOL_TEXT(expected,actual,text) \ CHECK_EQUAL_C_BOOL_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_INT(expected,actual) \ CHECK_EQUAL_C_INT_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_INT_TEXT(expected,actual,text) \ CHECK_EQUAL_C_INT_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_UINT(expected,actual) \ CHECK_EQUAL_C_UINT_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_UINT_TEXT(expected,actual,text) \ CHECK_EQUAL_C_UINT_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_LONG(expected,actual) \ CHECK_EQUAL_C_LONG_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_LONG_TEXT(expected,actual,text) \ CHECK_EQUAL_C_LONG_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_ULONG(expected,actual) \ CHECK_EQUAL_C_ULONG_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_ULONG_TEXT(expected,actual,text) \ CHECK_EQUAL_C_ULONG_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_LONGLONG(expected,actual) \ CHECK_EQUAL_C_LONGLONG_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_LONGLONG_TEXT(expected,actual,text) \ CHECK_EQUAL_C_LONGLONG_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_ULONGLONG(expected,actual) \ CHECK_EQUAL_C_ULONGLONG_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_ULONGLONG_TEXT(expected,actual,text) \ CHECK_EQUAL_C_ULONGLONG_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_REAL(expected,actual,threshold) \ CHECK_EQUAL_C_REAL_LOCATION(expected,actual,threshold,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_REAL_TEXT(expected,actual,threshold,text) \ CHECK_EQUAL_C_REAL_LOCATION(expected,actual,threshold,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_CHAR(expected,actual) \ CHECK_EQUAL_C_CHAR_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_CHAR_TEXT(expected,actual,text) \ CHECK_EQUAL_C_CHAR_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_UBYTE(expected,actual) \ CHECK_EQUAL_C_UBYTE_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_UBYTE_TEXT(expected,actual,text) \ CHECK_EQUAL_C_UBYTE_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_SBYTE(expected,actual) \ CHECK_EQUAL_C_SBYTE_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_SBYTE_TEXT(expected,actual,text) \ CHECK_EQUAL_C_SBYTE_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_STRING(expected,actual) \ CHECK_EQUAL_C_STRING_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_STRING_TEXT(expected,actual,text) \ CHECK_EQUAL_C_STRING_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_POINTER(expected,actual) \ CHECK_EQUAL_C_POINTER_LOCATION(expected,actual,NULLPTR,__FILE__,__LINE__) #define CHECK_EQUAL_C_POINTER_TEXT(expected,actual,text) \ CHECK_EQUAL_C_POINTER_LOCATION(expected,actual,text,__FILE__,__LINE__) #define CHECK_EQUAL_C_BITS(expected, actual, mask) \ CHECK_EQUAL_C_BITS_LOCATION(expected, actual, mask, sizeof(actual), NULLPTR, __FILE__, __LINE__) #define CHECK_EQUAL_C_BITS_TEXT(expected, actual, mask, text) \ CHECK_EQUAL_C_BITS_LOCATION(expected, actual, mask, sizeof(actual), text, __FILE__, __LINE__) #define FAIL_TEXT_C(text) \ FAIL_TEXT_C_LOCATION(text,__FILE__,__LINE__) #define FAIL_C() \ FAIL_C_LOCATION(__FILE__,__LINE__) #define CHECK_C(condition) \ CHECK_C_LOCATION(condition, #condition, NULLPTR, __FILE__,__LINE__) #define CHECK_C_TEXT(condition, text) \ CHECK_C_LOCATION(condition, #condition, text, __FILE__, __LINE__) /****************************************************************************** * * TEST macros for in C. * *******************************************************************************/ /* For use in C file */ #define TEST_GROUP_C_SETUP(group_name) \ extern void group_##group_name##_setup_wrapper_c(void); \ void group_##group_name##_setup_wrapper_c() #define TEST_GROUP_C_TEARDOWN(group_name) \ extern void group_##group_name##_teardown_wrapper_c(void); \ void group_##group_name##_teardown_wrapper_c() #define TEST_C(group_name, test_name) \ extern void test_##group_name##_##test_name##_wrapper_c(void);\ void test_##group_name##_##test_name##_wrapper_c() #define IGNORE_TEST_C(group_name, test_name) \ extern void ignore_##group_name##_##test_name##_wrapper_c(void);\ void ignore_##group_name##_##test_name##_wrapper_c() /* For use in C++ file */ #define TEST_GROUP_C_WRAPPER(group_name) \ extern "C" void group_##group_name##_setup_wrapper_c(void); \ extern "C" void group_##group_name##_teardown_wrapper_c(void); \ TEST_GROUP(group_name) #define TEST_GROUP_C_SETUP_WRAPPER(group_name) \ void setup() { \ group_##group_name##_setup_wrapper_c(); \ } #define TEST_GROUP_C_TEARDOWN_WRAPPER(group_name) \ void teardown() { \ group_##group_name##_teardown_wrapper_c(); \ } #define TEST_C_WRAPPER(group_name, test_name) \ extern "C" void test_##group_name##_##test_name##_wrapper_c(); \ TEST(group_name, test_name) { \ test_##group_name##_##test_name##_wrapper_c(); \ } #define IGNORE_TEST_C_WRAPPER(group_name, test_name) \ extern "C" void ignore_##group_name##_##test_name##_wrapper_c(); \ IGNORE_TEST(group_name, test_name) { \ ignore_##group_name##_##test_name##_wrapper_c(); \ } #ifdef __cplusplus extern "C" { #endif /* CHECKS that can be used from C code */ extern void CHECK_EQUAL_C_BOOL_LOCATION(int expected, int actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_INT_LOCATION(int expected, int actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_UINT_LOCATION(unsigned int expected, unsigned int actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_LONG_LOCATION(long expected, long actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_ULONG_LOCATION(unsigned long expected, unsigned long actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_LONGLONG_LOCATION(cpputest_longlong expected, cpputest_longlong actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_ULONGLONG_LOCATION(cpputest_ulonglong expected, cpputest_ulonglong actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_REAL_LOCATION(double expected, double actual, double threshold, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_CHAR_LOCATION(char expected, char actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_UBYTE_LOCATION(unsigned char expected, unsigned char actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_SBYTE_LOCATION(signed char expected, signed char actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_STRING_LOCATION(const char* expected, const char* actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_POINTER_LOCATION(const void* expected, const void* actual, const char* text, const char* fileName, size_t lineNumber); extern void CHECK_EQUAL_C_BITS_LOCATION(unsigned int expected, unsigned int actual, unsigned int mask, size_t size, const char* text, const char* fileName, size_t lineNumber); extern void FAIL_TEXT_C_LOCATION(const char* text, const char* fileName, size_t lineNumber); extern void FAIL_C_LOCATION(const char* fileName, size_t lineNumber); extern void CHECK_C_LOCATION(int condition, const char* conditionString, const char* text, const char* fileName, size_t lineNumber); extern void* cpputest_malloc(size_t size); extern char* cpputest_strdup(const char* str); extern char* cpputest_strndup(const char* str, size_t n); extern void* cpputest_calloc(size_t num, size_t size); extern void* cpputest_realloc(void* ptr, size_t size); extern void cpputest_free(void* buffer); extern void* cpputest_malloc_location(size_t size, const char* file, size_t line); extern char* cpputest_strdup_location(const char* str, const char* file, size_t line); extern char* cpputest_strndup_location(const char* str, size_t n, const char* file, size_t line); extern void* cpputest_calloc_location(size_t num, size_t size, const char* file, size_t line); extern void* cpputest_realloc_location(void* memory, size_t size, const char* file, size_t line); extern void cpputest_free_location(void* buffer, const char* file, size_t line); void cpputest_malloc_set_out_of_memory(void); void cpputest_malloc_set_not_out_of_memory(void); void cpputest_malloc_set_out_of_memory_countdown(int); void cpputest_malloc_count_reset(void); int cpputest_malloc_get_count(void); #ifdef __cplusplus } #endif /* * Small additional macro for unused arguments. This is common when stubbing, but in C you cannot remove the * name of the parameter (as in C++). */ #ifndef PUNUSED #if defined(__GNUC__) || defined(__clang__) # define PUNUSED(x) PUNUSED_ ##x __attribute__((unused)) #else # define PUNUSED(x) x #endif #endif #endif cpputest-4.0/include/CppUTest/TeamCityTestOutput.h000644 000765 000024 00000001401 13663176127 023271 0ustar00basvoddestaff000000 000000 #ifndef D_TeamCityTestOutput_h #define D_TeamCityTestOutput_h #include "TestOutput.h" #include "SimpleString.h" class TeamCityTestOutput: public ConsoleTestOutput { public: TeamCityTestOutput(void); virtual ~TeamCityTestOutput(void) _destructor_override; virtual void printCurrentTestStarted(const UtestShell& test) _override; virtual void printCurrentTestEnded(const TestResult& res) _override; virtual void printCurrentGroupStarted(const UtestShell& test) _override; virtual void printCurrentGroupEnded(const TestResult& res) _override; virtual void printFailure(const TestFailure& failure) _override; protected: private: void printEscaped(const char* s); const UtestShell *currtest_; SimpleString currGroup_; }; #endif cpputest-4.0/include/CppUTest/TestFailure.h000644 000765 000024 00000016204 13663176127 021727 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // Failure is a class which holds information for a specific // test failure. It can be overriden for more complex failure messages // /////////////////////////////////////////////////////////////////////////////// #ifndef D_TestFailure_H #define D_TestFailure_H #include "SimpleString.h" class UtestShell; class TestOutput; class TestFailure { public: TestFailure(UtestShell*, const char* fileName, size_t lineNumber, const SimpleString& theMessage); TestFailure(UtestShell*, const SimpleString& theMessage); TestFailure(UtestShell*, const char* fileName, size_t lineNumber); TestFailure(const TestFailure&); virtual ~TestFailure(); virtual SimpleString getFileName() const; virtual SimpleString getTestName() const; virtual SimpleString getTestNameOnly() const; virtual size_t getFailureLineNumber() const; virtual SimpleString getMessage() const; virtual SimpleString getTestFileName() const; virtual size_t getTestLineNumber() const; bool isOutsideTestFile() const; bool isInHelperFunction() const; protected: enum DifferenceFormat { DIFFERENCE_STRING, DIFFERENCE_BINARY }; SimpleString createButWasString(const SimpleString& expected, const SimpleString& actual); SimpleString createDifferenceAtPosString(const SimpleString& actual, size_t position, DifferenceFormat format = DIFFERENCE_STRING); SimpleString createUserText(const SimpleString& text); SimpleString testName_; SimpleString testNameOnly_; SimpleString fileName_; size_t lineNumber_; SimpleString testFileName_; size_t testLineNumber_; SimpleString message_; TestFailure& operator=(const TestFailure&); }; class EqualsFailure: public TestFailure { public: EqualsFailure(UtestShell*, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text); EqualsFailure(UtestShell*, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text); }; class DoublesEqualFailure: public TestFailure { public: DoublesEqualFailure(UtestShell*, const char* fileName, size_t lineNumber, double expected, double actual, double threshold, const SimpleString& text); }; class CheckEqualFailure : public TestFailure { public: CheckEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text); }; class ComparisonFailure : public TestFailure { public: ComparisonFailure(UtestShell* test, const char *fileName, size_t lineNumber, const SimpleString& checkString, const SimpleString& comparisonString, const SimpleString& text); }; class ContainsFailure: public TestFailure { public: ContainsFailure(UtestShell*, const char* fileName, size_t lineNumber, const SimpleString& expected, const SimpleString& actual, const SimpleString& text); }; class CheckFailure : public TestFailure { public: CheckFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& checkString, const SimpleString& conditionString, const SimpleString& textString = ""); }; class FailFailure : public TestFailure { public: FailFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& message); }; class LongsEqualFailure : public TestFailure { public: LongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, long expected, long actual, const SimpleString& text); }; class UnsignedLongsEqualFailure : public TestFailure { public: UnsignedLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, unsigned long expected, unsigned long actual, const SimpleString& text); }; class LongLongsEqualFailure : public TestFailure { public: LongLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, cpputest_longlong expected, cpputest_longlong actual, const SimpleString& text); }; class UnsignedLongLongsEqualFailure : public TestFailure { public: UnsignedLongLongsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, cpputest_ulonglong expected, cpputest_ulonglong actual, const SimpleString& text); }; class SignedBytesEqualFailure : public TestFailure { public: SignedBytesEqualFailure (UtestShell* test, const char* fileName, size_t lineNumber, signed char expected, signed char actual, const SimpleString& text); }; class StringEqualFailure : public TestFailure { public: StringEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text); }; class StringEqualNoCaseFailure : public TestFailure { public: StringEqualNoCaseFailure(UtestShell* test, const char* fileName, size_t lineNumber, const char* expected, const char* actual, const SimpleString& text); }; class BinaryEqualFailure : public TestFailure { public: BinaryEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, const unsigned char* expected, const unsigned char* actual, size_t size, const SimpleString& text); }; class BitsEqualFailure : public TestFailure { public: BitsEqualFailure(UtestShell* test, const char* fileName, size_t lineNumber, unsigned long expected, unsigned long actual, unsigned long mask, size_t byteCount, const SimpleString& text); }; class FeatureUnsupportedFailure : public TestFailure { public: FeatureUnsupportedFailure(UtestShell* test, const char* fileName, size_t lineNumber, const SimpleString& featureName, const SimpleString& text); }; #endif cpputest-4.0/include/CppUTest/TestFilter.h000644 000765 000024 00000004372 13663176127 021570 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef TESTFILTER_H_ #define TESTFILTER_H_ #include "SimpleString.h" class TestFilter { public: TestFilter(); TestFilter(const char* filter); TestFilter(const SimpleString& filter); TestFilter* add(TestFilter* filter); TestFilter* getNext() const; bool match(const SimpleString& name) const; void strictMatching(); void invertMatching(); bool operator==(const TestFilter& filter) const; bool operator!=(const TestFilter& filter) const; SimpleString asString() const; private: SimpleString filter_; bool strictMatching_; bool invertMatching_; TestFilter* next_; }; SimpleString StringFrom(const TestFilter& filter); #endif cpputest-4.0/include/CppUTest/TestHarness.h000644 000765 000024 00000004103 13663176127 021736 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestHarness_h #define D_TestHarness_h #include "CppUTestConfig.h" /* original value was 9973 which works well with large programs. Now set to smaller since it takes * a lot of memory in embedded apps. Change it if you experience the memory leak detector to be slow. */ #define MEMORY_LEAK_HASH_TABLE_SIZE 73 #include "Utest.h" #include "UtestMacros.h" #include "SimpleString.h" #include "TestResult.h" #include "TestFailure.h" #include "TestPlugin.h" #include "MemoryLeakWarningPlugin.h" #endif cpputest-4.0/include/CppUTest/CppUTestConfig.h000644 000765 000024 00000024330 13663176127 022334 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef CPPUTESTCONFIG_H_ #define CPPUTESTCONFIG_H_ #ifndef CPPUTEST_USE_OWN_CONFIGURATION #include "CppUTestGeneratedConfig.h" #endif /* * This file is added for some specific CppUTest configurations that earlier were spread out into multiple files. * * The goal of this file is to stay really small and not to include other things, but mainly to remove duplication * from other files and resolve dependencies in #includes. * */ #ifdef __clang__ #pragma clang diagnostic push #if (__clang_major__ == 3 && __clang_minor__ >= 6) || __clang_major__ >= 4 #pragma clang diagnostic ignored "-Wreserved-id-macro" #endif #endif /* * Lib C dependencies that are currently still left: * * stdarg.h -> We use formatting functions and va_list requires to include stdarg.h in SimpleString * stdlib.h -> The TestHarness_c.h includes this to try to avoid conflicts in its malloc #define. This dependency can * easily be removed by not enabling the MALLOC overrides. * * Lib C++ dependencies are all under the CPPUTEST_USE_STD_CPP_LIB. * The only dependency is to which has the bad_alloc struct * */ /* Do we use Standard C or not? When doing Kernel development, standard C usage is out. */ #ifndef CPPUTEST_USE_STD_C_LIB #ifdef CPPUTEST_STD_C_LIB_DISABLED #define CPPUTEST_USE_STD_C_LIB 0 #else #define CPPUTEST_USE_STD_C_LIB 1 #endif #endif /* Do we use Standard C++ or not? */ #ifndef CPPUTEST_USE_STD_CPP_LIB #ifdef CPPUTEST_STD_CPP_LIB_DISABLED #define CPPUTEST_USE_STD_CPP_LIB 0 #else #define CPPUTEST_USE_STD_CPP_LIB 1 #endif #endif /* Is memory leak detection enabled? * Controls the override of the global operator new/deleted and malloc/free. * Without this, there will be no memory leak detection in C/C++. */ #ifndef CPPUTEST_USE_MEM_LEAK_DETECTION #ifdef CPPUTEST_MEM_LEAK_DETECTION_DISABLED #define CPPUTEST_USE_MEM_LEAK_DETECTION 0 #else #define CPPUTEST_USE_MEM_LEAK_DETECTION 1 #endif #endif /* Should be the only #include here. Standard C library wrappers */ #include "StandardCLibrary.h" /* Create a _no_return_ macro, which is used to flag a function as not returning. * Used for functions that always throws for instance. * * This is needed for compiling with clang, without breaking other compilers. */ #ifndef __has_attribute #define __has_attribute(x) 0 #endif #if __has_attribute(noreturn) #define _no_return_ __attribute__((noreturn)) #else #define _no_return_ #endif #if __has_attribute(format) #define _check_format_(type, format_parameter, other_parameters) __attribute__ ((format (type, format_parameter, other_parameters))) #else #define _check_format_(type, format_parameter, other_parameters) /* type, format_parameter, other_parameters */ #endif /* * When we don't link Standard C++, then we won't throw exceptions as we assume the compiler might not support that! */ #if CPPUTEST_USE_STD_CPP_LIB #if defined(__cplusplus) && __cplusplus >= 201103L #define UT_THROW(exception) #define UT_NOTHROW noexcept #else #define UT_THROW(exception) throw (exception) #define UT_NOTHROW throw() #endif #else #define UT_THROW(exception) #ifdef __clang__ #define UT_NOTHROW throw() #else #define UT_NOTHROW #endif #endif /* * Visual C++ doesn't define __cplusplus as C++11 yet (201103), however it doesn't want the throw(exception) either, but * it does want throw(). */ #ifdef _MSC_VER #undef UT_THROW #define UT_THROW(exception) #endif #if defined(__cplusplus) && __cplusplus >= 201103L #define DEFAULT_COPY_CONSTRUCTOR(classname) classname(const classname &) = default; #else #define DEFAULT_COPY_CONSTRUCTOR(classname) #endif /* * g++-4.7 with stdc++11 enabled On MacOSX! will have a different exception specifier for operator new (and thank you!) * I assume they'll fix this in the future, but for now, we'll change that here. * (This should perhaps also be done in the configure.ac) */ #ifdef __GXX_EXPERIMENTAL_CXX0X__ #ifdef __APPLE__ #ifdef _GLIBCXX_THROW #undef UT_THROW #define UT_THROW(exception) _GLIBCXX_THROW(exception) #endif #endif #endif /* * Address sanitizer is a good thing... and it causes some conflicts with the CppUTest tests * To check whether it is on or off, we create a CppUTest define here. */ #if defined(__has_feature) #if __has_feature(address_sanitizer) #define CPPUTEST_SANITIZE_ADDRESS 1 #endif #endif #ifdef __SANITIZE_ADDRESS__ #define CPPUTEST_SANITIZE_ADDRESS 1 #endif #ifndef CPPUTEST_SANITIZE_ADDRESS #define CPPUTEST_SANITIZE_ADDRESS 0 #endif #if CPPUTEST_SANITIZE_ADDRESS #define CPPUTEST_SANITIZE_ADDRESS 1 #define CPPUTEST_DO_NOT_SANITIZE_ADDRESS __attribute__((no_sanitize_address)) #if defined(__linux__) && defined(__clang__) #if CPPUTEST_USE_MEM_LEAK_DETECTION #warning Compiling with Address Sanitizer with clang on linux will cause duplicate symbols for operator new. Turning off memory leak detection. Compile with -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED to get rid of this warning. #undef CPPUTEST_USE_MEM_LEAK_DETECTION #define CPPUTEST_USE_MEM_LEAK_DETECTION 0 #endif #endif #else #define CPPUTEST_SANITIZER_ADDRESS 0 #define CPPUTEST_DO_NOT_SANITIZE_ADDRESS #endif /* * Handling of IEEE754 floating point exceptions via fenv.h * Predominantly works on non-Visual C++ compilers and Visual C++ 2008 and newer */ #if CPPUTEST_USE_STD_C_LIB && \ (!defined(_MSC_VER) || (_MSC_VER >= 1800)) && \ (!defined(__APPLE__)) && \ (!defined(__ghs__) || !defined(__ColdFire__)) #define CPPUTEST_HAVE_FENV #if defined(__WATCOMC__) || defined(__ARMEL__) || defined(__m68k__) #define CPPUTEST_FENV_IS_WORKING_PROPERLY 0 #else #define CPPUTEST_FENV_IS_WORKING_PROPERLY 1 #endif #endif /* * Detection of different 64 bit environments */ #if defined(__LP64__) || defined(_LP64) || (defined(__WORDSIZE) && (__WORDSIZE == 64 )) || defined(__x86_64) || defined(_WIN64) #define CPPUTEST_64BIT #if defined(_WIN64) #define CPPUTEST_64BIT_32BIT_LONGS #endif #endif /* Handling of systems with a different byte-width (e.g. 16 bit). * Since CHAR_BIT is defined in limits.h (ANSI C), use default of 8 when building without Std C library. */ #if CPPUTEST_USE_STD_C_LIB #define CPPUTEST_CHAR_BIT CHAR_BIT #else #define CPPUTEST_CHAR_BIT 8 #endif /* Handling of systems with a different int-width (e.g. 16 bit). */ #if CPPUTEST_USE_STD_C_LIB && (INT_MAX == 0x7fff) #define CPPUTEST_16BIT_INTS #endif /* * Support for "long long" type. * * Not supported when CPPUTEST_LONG_LONG_DISABLED is set. * Can be overridden by using CPPUTEST_USE_LONG_LONG * * CPPUTEST_HAVE_LONG_LONG_INT is set by configure * LLONG_MAX is set in limits.h. This is a crude attempt to detect long long support when no configure is used * */ #if !defined(CPPUTEST_LONG_LONG_DISABLED) && !defined(CPPUTEST_USE_LONG_LONG) #if defined(CPPUTEST_HAVE_LONG_LONG_INT) || defined(LLONG_MAX) #define CPPUTEST_USE_LONG_LONG 1 #endif #endif #ifdef CPPUTEST_USE_LONG_LONG typedef long long cpputest_longlong; typedef unsigned long long cpputest_ulonglong; #else /* Define some placeholders to disable the overloaded methods. * It's not required to have these match the size of the "real" type, but it's occasionally convenient. */ #if defined(CPPUTEST_64BIT) && !defined(CPPUTEST_64BIT_32BIT_LONGS) #define CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE 16 #else #define CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE 8 #endif struct cpputest_longlong { #if defined(__cplusplus) cpputest_longlong() {} cpputest_longlong(int) {} #endif char dummy[CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE]; }; struct cpputest_ulonglong { #if defined(__cplusplus) cpputest_ulonglong() {} cpputest_ulonglong(int) {} #endif char dummy[CPPUTEST_SIZE_OF_FAKE_LONG_LONG_TYPE]; }; #if !defined(__cplusplus) typedef struct cpputest_longlong cpputest_longlong; typedef struct cpputest_ulonglong cpputest_ulonglong; #endif #endif /* Visual C++ 10.0+ (2010+) supports the override keyword, but doesn't define the C++ version as C++11 */ #if defined(__cplusplus) && ((__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1600))) #if !defined(__ghs__) #define CPPUTEST_COMPILER_FULLY_SUPPORTS_CXX11 #define _override override #else /* GreenHills is not compatible with other compilers with regards to where * it expects the override specifier to be on methods that return function * pointers. Given this, it is easiest to not use the override specifier. */ #define _override #endif #define NULLPTR nullptr #else #define _override #define NULLPTR NULL #endif /* Visual C++ 11.0+ (2012+) supports the override keyword on destructors */ #if defined(__cplusplus) && ((__cplusplus >= 201103L) || (defined(_MSC_VER) && (_MSC_VER >= 1700))) #define _destructor_override override #else #define _destructor_override #endif #ifdef __clang__ #pragma clang diagnostic pop #endif #endif cpputest-4.0/include/CppUTest/PlatformSpecificFunctions_c.h000644 000765 000024 00000007566 13663176127 025140 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /****************************************************************************** * * PlatformSpecificFunctions_c.H * * Provides an interface for when working with pure C * *******************************************************************************/ #ifndef PLATFORMSPECIFICFUNCTIONS_C_H_ #define PLATFORMSPECIFICFUNCTIONS_C_H_ #ifdef __cplusplus extern "C" { #endif /* Jumping operations. They manage their own jump buffers */ extern int (*PlatformSpecificSetJmp)(void (*function) (void*), void* data); extern void (*PlatformSpecificLongJmp)(void); extern void (*PlatformSpecificRestoreJumpBuffer)(void); /* Time operations */ extern long (*GetPlatformSpecificTimeInMillis)(void); extern const char* (*GetPlatformSpecificTimeString)(void); /* String operations */ extern int (*PlatformSpecificVSNprintf)(char *str, size_t size, const char* format, va_list va_args_list); /* Misc */ extern double (*PlatformSpecificFabs)(double d); extern int (*PlatformSpecificIsNan)(double d); extern int (*PlatformSpecificIsInf)(double d); extern int (*PlatformSpecificAtExit)(void(*func)(void)); /* IO operations */ typedef void* PlatformSpecificFile; extern PlatformSpecificFile (*PlatformSpecificFOpen)(const char* filename, const char* flag); extern void (*PlatformSpecificFPuts)(const char* str, PlatformSpecificFile file); extern void (*PlatformSpecificFClose)(PlatformSpecificFile file); extern int (*PlatformSpecificPutchar)(int c); extern void (*PlatformSpecificFlush)(void); /* Random operations */ extern void (*PlatformSpecificSrand)(unsigned int); extern int (*PlatformSpecificRand)(void); /* Dynamic Memory operations */ extern void* (*PlatformSpecificMalloc)(size_t size); extern void* (*PlatformSpecificRealloc)(void* memory, size_t size); extern void (*PlatformSpecificFree)(void* memory); extern void* (*PlatformSpecificMemCpy)(void* s1, const void* s2, size_t size); extern void* (*PlatformSpecificMemset)(void* mem, int c, size_t size); typedef void* PlatformSpecificMutex; extern PlatformSpecificMutex (*PlatformSpecificMutexCreate)(void); extern void (*PlatformSpecificMutexLock)(PlatformSpecificMutex mtx); extern void (*PlatformSpecificMutexUnlock)(PlatformSpecificMutex mtx); extern void (*PlatformSpecificMutexDestroy)(PlatformSpecificMutex mtx); #ifdef __cplusplus } #endif #endif /* PLATFORMSPECIFICFUNCTIONS_C_H_ */ cpputest-4.0/include/CppUTest/Utest.h000644 000765 000024 00000027031 13663176127 020604 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ // This file contains the Test class along with the macros which make effective // in the harness. #ifndef D_UTest_h #define D_UTest_h #include "SimpleString.h" class TestResult; class TestPlugin; class TestFailure; class TestFilter; class TestTerminator; extern bool doubles_equal(double d1, double d2, double threshold); //////////////////// Utest class UtestShell; class Utest { public: Utest(); virtual ~Utest(); virtual void run(); virtual void setup(); virtual void teardown(); virtual void testBody(); }; //////////////////// TestTerminator class TestTerminator { public: virtual void exitCurrentTest() const=0; virtual ~TestTerminator(); }; class NormalTestTerminator : public TestTerminator { public: virtual void exitCurrentTest() const _override; virtual ~NormalTestTerminator() _destructor_override; }; class TestTerminatorWithoutExceptions : public TestTerminator { public: virtual void exitCurrentTest() const _override; virtual ~TestTerminatorWithoutExceptions() _destructor_override; }; //////////////////// UtestShell class UtestShell { public: static UtestShell *getCurrent(); public: UtestShell(const char* groupName, const char* testName, const char* fileName, size_t lineNumber); virtual ~UtestShell(); virtual UtestShell* addTest(UtestShell* test); virtual UtestShell *getNext() const; virtual size_t countTests(); bool shouldRun(const TestFilter* groupFilters, const TestFilter* nameFilters) const; const SimpleString getName() const; const SimpleString getGroup() const; virtual SimpleString getFormattedName() const; const SimpleString getFile() const; size_t getLineNumber() const; virtual bool willRun() const; virtual bool hasFailed() const; void countCheck(); virtual void assertTrue(bool condition, const char *checkString, const char *conditionString, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrEqual(const char *expected, const char *actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrNEqual(const char *expected, const char *actual, size_t length, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCstrNoCaseEqual(const char *expected, const char *actual, const char* text, const char *fileName, size_t lineNumber); virtual void assertCstrContains(const char *expected, const char *actual, const char* text, const char *fileName, size_t lineNumber); virtual void assertCstrNoCaseContains(const char *expected, const char *actual, const char* text, const char *fileName, size_t lineNumber); virtual void assertLongsEqual(long expected, long actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertUnsignedLongsEqual(unsigned long expected, unsigned long actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertLongLongsEqual(cpputest_longlong expected, cpputest_longlong actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertUnsignedLongLongsEqual(cpputest_ulonglong expected, cpputest_ulonglong actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertSignedBytesEqual(signed char expected, signed char actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertPointersEqual(const void *expected, const void *actual, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertFunctionPointersEqual(void (*expected)(), void (*actual)(), const char* text, const char* fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertDoublesEqual(double expected, double actual, double threshold, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertEquals(bool failed, const char* expected, const char* actual, const char* text, const char* file, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertBinaryEqual(const void *expected, const void *actual, size_t length, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertBitsEqual(unsigned long expected, unsigned long actual, unsigned long mask, size_t byteCount, const char* text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void assertCompare(bool comparison, const char *checkString, const char *comparisonString, const char *text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void fail(const char *text, const char *fileName, size_t lineNumber, const TestTerminator& testTerminator = NormalTestTerminator()); virtual void exitTest(const TestTerminator& testTerminator = NormalTestTerminator()); virtual void print(const char *text, const char *fileName, size_t lineNumber); virtual void print(const SimpleString & text, const char *fileName, size_t lineNumber); virtual void printVeryVerbose(const char* text); void setFileName(const char *fileName); void setLineNumber(size_t lineNumber); void setGroupName(const char *groupName); void setTestName(const char *testName); static void crash(); static void setCrashMethod(void (*crashme)()); static void resetCrashMethod(); virtual bool isRunInSeperateProcess() const; virtual void setRunInSeperateProcess(); virtual void setRunIgnored(); virtual Utest* createTest(); virtual void destroyTest(Utest* test); virtual void runOneTest(TestPlugin* plugin, TestResult& result); virtual void runOneTestInCurrentProcess(TestPlugin *plugin, TestResult & result); virtual void failWith(const TestFailure& failure); virtual void failWith(const TestFailure& failure, const TestTerminator& terminator); protected: UtestShell(); UtestShell(const char *groupName, const char *testName, const char *fileName, size_t lineNumber, UtestShell *nextTest); virtual SimpleString getMacroName() const; TestResult *getTestResult(); private: const char *group_; const char *name_; const char *file_; size_t lineNumber_; UtestShell *next_; bool isRunAsSeperateProcess_; bool hasFailed_; void setTestResult(TestResult* result); void setCurrentTest(UtestShell* test); bool match(const char* target, const TestFilter* filters) const; static UtestShell* currentTest_; static TestResult* testResult_; }; //////////////////// ExecFunctionTest class ExecFunctionTestShell; class ExecFunctionTest : public Utest { public: ExecFunctionTest(ExecFunctionTestShell* shell); void testBody() _override; virtual void setup() _override; virtual void teardown() _override; private: ExecFunctionTestShell* shell_; }; //////////////////// ExecFunction class ExecFunction { public: ExecFunction(); virtual ~ExecFunction(); virtual void exec()=0; }; class ExecFunctionWithoutParameters : public ExecFunction { public: void (*testFunction_)(); ExecFunctionWithoutParameters(void(*testFunction)()); virtual ~ExecFunctionWithoutParameters() _destructor_override; virtual void exec() _override; }; //////////////////// ExecFunctionTestShell class ExecFunctionTestShell : public UtestShell { public: void (*setup_)(); void (*teardown_)(); ExecFunction* testFunction_; ExecFunctionTestShell(void(*set)() = NULLPTR, void(*tear)() = NULLPTR) : UtestShell("ExecFunction", "ExecFunction", "ExecFunction", 1), setup_(set), teardown_(tear), testFunction_(NULLPTR) { } Utest* createTest() _override { return new ExecFunctionTest(this); } virtual ~ExecFunctionTestShell() _destructor_override; }; //////////////////// CppUTestFailedException class CppUTestFailedException { public: int dummy_; }; //////////////////// IgnoredTest class IgnoredUtestShell : public UtestShell { public: IgnoredUtestShell(); virtual ~IgnoredUtestShell() _destructor_override; explicit IgnoredUtestShell(const char* groupName, const char* testName, const char* fileName, size_t lineNumber); virtual bool willRun() const _override; virtual void setRunIgnored() _override; protected: virtual SimpleString getMacroName() const _override; virtual void runOneTest(TestPlugin* plugin, TestResult& result) _override; private: IgnoredUtestShell(const IgnoredUtestShell&); IgnoredUtestShell& operator=(const IgnoredUtestShell&); bool runIgnored_; }; //////////////////// UtestShellPointerArray class UtestShellPointerArray { public: UtestShellPointerArray(UtestShell* firstTest); ~UtestShellPointerArray(); void shuffle(size_t seed); void reverse(); void relinkTestsInOrder(); UtestShell* getFirstTest() const; UtestShell* get(size_t index) const; private: void swap(size_t index1, size_t index2); UtestShell** arrayOfTests_; size_t count_; }; //////////////////// TestInstaller class TestInstaller { public: explicit TestInstaller(UtestShell& shell, const char* groupName, const char* testName, const char* fileName, size_t lineNumber); virtual ~TestInstaller(); void unDo(); private: TestInstaller(const TestInstaller&); TestInstaller& operator=(const TestInstaller&); }; #endif cpputest-4.0/include/CppUTest/SimpleStringInternalCache.h000644 000765 000024 00000010626 13663176127 024543 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_SimpleStringInternalCache_h #define D_SimpleStringInternalCache_h #include "CppUTest/TestMemoryAllocator.h" struct SimpleStringMemoryBlock; struct SimpleStringInternalCacheNode; class SimpleStringInternalCache { public: SimpleStringInternalCache(); ~SimpleStringInternalCache(); void setAllocator(TestMemoryAllocator* allocator); char* alloc(size_t size); void dealloc(char* memory, size_t size); bool hasFreeBlocksOfSize(size_t size); void clearCache(); void clearAllIncludingCurrentlyUsedMemory(); private: void printDeallocatingUnknownMemory(char* memory); enum { amountOfInternalCacheNodes = 5}; bool isCached(size_t size); size_t getIndexForCache(size_t size); SimpleStringInternalCacheNode* getCacheNodeFromSize(size_t size); SimpleStringInternalCacheNode* createInternalCacheNodes(); void destroyInternalCacheNode(SimpleStringInternalCacheNode * node); SimpleStringMemoryBlock* createSimpleStringMemoryBlock(size_t sizeOfString, SimpleStringMemoryBlock* next); void destroySimpleStringMemoryBlock(SimpleStringMemoryBlock * block, size_t size); void destroySimpleStringMemoryBlockList(SimpleStringMemoryBlock * block, size_t size); SimpleStringMemoryBlock* reserveCachedBlockFrom(SimpleStringInternalCacheNode* node); void releaseCachedBlockFrom(char* memory, SimpleStringInternalCacheNode* node); void releaseNonCachedMemory(char* memory, size_t size); SimpleStringMemoryBlock* allocateNewCacheBlockFrom(SimpleStringInternalCacheNode* node); SimpleStringMemoryBlock* addToSimpleStringMemoryBlockList(SimpleStringMemoryBlock* newBlock, SimpleStringMemoryBlock* previousHead); TestMemoryAllocator* allocator_; SimpleStringInternalCacheNode* cache_; SimpleStringMemoryBlock* nonCachedAllocations_; bool hasWarnedAboutDeallocations; }; class SimpleStringCacheAllocator : public TestMemoryAllocator { public: SimpleStringCacheAllocator(SimpleStringInternalCache& cache, TestMemoryAllocator* previousAllocator); virtual ~SimpleStringCacheAllocator() _destructor_override; virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual void free_memory(char* memory, size_t size, const char* file, size_t line) _override; virtual const char* name() const _override; virtual const char* alloc_name() const _override; virtual const char* free_name() const _override; virtual TestMemoryAllocator* actualAllocator() _override; TestMemoryAllocator* originalAllocator(); private: SimpleStringInternalCache& cache_; TestMemoryAllocator* originalAllocator_; }; class GlobalSimpleStringCache { SimpleStringCacheAllocator* allocator_; SimpleStringInternalCache cache_; public: GlobalSimpleStringCache(); ~GlobalSimpleStringCache(); TestMemoryAllocator* getAllocator(); }; #endif cpputest-4.0/include/CppUTest/TestTestingFixture.h000644 000765 000024 00000006316 13663176127 023327 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestTestingFixture_H #define D_TestTestingFixture_H #include "TestRegistry.h" #include "TestOutput.h" class TestTestingFixture { public: TestTestingFixture(); virtual ~TestTestingFixture(); void flushOutputAndResetResult(); void addTest(UtestShell * test); void installPlugin(TestPlugin* plugin); void setTestFunction(void(*testFunction)()); void setTestFunction(ExecFunction* testFunction); void setSetup(void(*setupFunction)()); void setTeardown(void(*teardownFunction)()); void setOutputVerbose(); void setRunTestsInSeperateProcess(); void runTestWithMethod(void(*method)()); void runAllTests(); size_t getFailureCount(); size_t getCheckCount(); size_t getIgnoreCount(); size_t getRunCount(); size_t getTestCount(); const SimpleString& getOutput(); TestRegistry* getRegistry(); bool hasTestFailed(); void assertPrintContains(const SimpleString& contains); void assertPrintContainsNot(const SimpleString& contains); void checkTestFailsWithProperTestLocation(const char* text, const char* file, size_t line); static void lineExecutedAfterCheck(); private: void clearExecFunction(); static bool lineOfCodeExecutedAfterCheck; TestRegistry* registry_; ExecFunctionTestShell* genTest_; bool ownsExecFunction_; StringBufferTestOutput* output_; TestResult * result_; }; class SetBooleanOnDestructorCall { bool& booleanToSet_; public: SetBooleanOnDestructorCall(bool& booleanToSet) : booleanToSet_(booleanToSet) { } virtual ~SetBooleanOnDestructorCall() { booleanToSet_ = true; } }; #endif cpputest-4.0/include/CppUTest/CppUTestGeneratedConfig.h000644 000765 000024 00000004630 13663176127 024154 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * This file is confusing, sorry for that :) Please never edit this file. * * It serves 3 purposes * * 1) When you installed CppUTest on your system (make install), then this file should be overwritten by one that * actually contains some configuration of your system. Mostly info such as availability of types, headers, etc. * 2) When you build CppUTest using autotools, this file will be included and it will include the generated file. * That should be the same file as will be installed if you run make install * 3) When you use CppUTest on another platform that doesn't require configuration, then this file does nothing and * should be harmless. * * If you have done make install and you still found this text, then please report a bug :) * */ #ifdef HAVE_CONFIG_H #include "generated/CppUTestGeneratedConfig.h" #endif cpputest-4.0/include/CppUTest/StandardCLibrary.h000644 000765 000024 00000003737 13663176127 022677 0ustar00basvoddestaff000000 000000 /* Must include this first to ensure the StandardC include in CppUTestConfig still happens at the right moment */ #include "CppUTestConfig.h" #ifndef STANDARDCLIBRARY_H_ #define STANDARDCLIBRARY_H_ #if CPPUTEST_USE_STD_C_LIB /* Needed for size_t */ #include /* Sometimes the C++ library does an #undef in stdlib of malloc and free. We want to prevent that */ #ifdef __cplusplus #if CPPUTEST_USE_STD_CPP_LIB #include #endif #endif /* Needed for malloc */ #include /* Needed for std::nullptr */ #ifdef __cplusplus #if CPPUTEST_USE_STD_CPP_LIB #include #endif #endif /* Needed for ... */ #include /* Kludge to get a va_copy in VC++ V6 and in GCC 98 */ #ifndef va_copy #ifdef __GNUC__ #define va_copy __va_copy #else #define va_copy(copy, original) copy = original; #endif #endif /* Needed for some detection of long long and 64 bit */ #include /* Needed to ensure that string.h is included prior to strdup redefinition */ #ifdef CPPUTEST_HAVE_STRING_H #include #endif #else #ifdef __KERNEL__ /* Unfinished and not working! Hacking hacking hacking. Why bother make the header files C++ safe! */ #define false kernel_false #define true kernel_true #define bool kernel_bool #define new kernel_new #define _Bool int #include #include #undef false #undef true #undef bool #undef new #else /* * #warning "These definitions in StandardCLibrary.h are pure (educated, from linux kernel) guesses at the moment. Replace with your platform includes." * Not on as warning are as errors :P */ #ifdef __SIZE_TYPE__ typedef __SIZE_TYPE__ size_t; #else typedef long unsigned int size_t; #endif #define NULL (0) extern void* malloc(size_t); extern void free(void *); #define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_list __builtin_va_list #define va_copy __builtin_va_copy #define va_start __builtin_va_start #define va_end __builtin_va_end #endif #endif #endif cpputest-4.0/include/CppUTest/TestOutput.h000644 000765 000024 00000015513 13663176127 021642 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestOutput_h #define D_TestOutput_h /////////////////////////////////////////////////////////////////////////////// // // This is a minimal printer interface. // We kept streams out to keep footprint small, and so the test // harness could be used with less capable compilers so more // platforms could use this test harness // /////////////////////////////////////////////////////////////////////////////// #include "SimpleString.h" class UtestShell; class TestFailure; class TestResult; class TestOutput { public: enum WorkingEnvironment {visualStudio, eclipse, detectEnvironment}; enum VerbosityLevel {level_quiet, level_verbose, level_veryVerbose}; explicit TestOutput(); virtual ~TestOutput(); virtual void printTestsStarted(); virtual void printTestsEnded(const TestResult& result); virtual void printCurrentTestStarted(const UtestShell& test); virtual void printCurrentTestEnded(const TestResult& res); virtual void printCurrentGroupStarted(const UtestShell& test); virtual void printCurrentGroupEnded(const TestResult& res); virtual void verbose(VerbosityLevel level); virtual void color(); virtual void printBuffer(const char*)=0; virtual void print(const char*); virtual void print(long); virtual void print(size_t); virtual void printDouble(double); virtual void printFailure(const TestFailure& failure); virtual void printTestRun(size_t number, size_t total); virtual void setProgressIndicator(const char*); virtual void printVeryVerbose(const char*); virtual void flush()=0; static void setWorkingEnvironment(WorkingEnvironment workEnvironment); static WorkingEnvironment getWorkingEnvironment(); protected: virtual void printEclipseErrorInFileOnLine(SimpleString file, size_t lineNumber); virtual void printVisualStudioErrorInFileOnLine(SimpleString file, size_t lineNumber); virtual void printProgressIndicator(); void printFileAndLineForTestAndFailure(const TestFailure& failure); void printFileAndLineForFailure(const TestFailure& failure); void printFailureInTest(SimpleString testName); void printFailureMessage(SimpleString reason); void printErrorInFileOnLineFormattedForWorkingEnvironment(SimpleString testFile, size_t lineNumber); TestOutput(const TestOutput&); TestOutput& operator=(const TestOutput&); int dotCount_; VerbosityLevel verbose_; bool color_; const char* progressIndication_; static WorkingEnvironment workingEnvironment_; }; TestOutput& operator<<(TestOutput&, const char*); TestOutput& operator<<(TestOutput&, long); /////////////////////////////////////////////////////////////////////////////// // // ConsoleTestOutput.h // // Printf Based Solution // /////////////////////////////////////////////////////////////////////////////// class ConsoleTestOutput: public TestOutput { public: explicit ConsoleTestOutput() { } virtual ~ConsoleTestOutput() _destructor_override { } virtual void printBuffer(const char* s) _override; virtual void flush() _override; private: ConsoleTestOutput(const ConsoleTestOutput&); ConsoleTestOutput& operator=(const ConsoleTestOutput&); }; /////////////////////////////////////////////////////////////////////////////// // // StringBufferTestOutput.h // // TestOutput for test purposes // /////////////////////////////////////////////////////////////////////////////// class StringBufferTestOutput: public TestOutput { public: explicit StringBufferTestOutput() { } virtual ~StringBufferTestOutput() _destructor_override; void printBuffer(const char* s) _override { output += s; } void flush() _override { output = ""; } const SimpleString& getOutput() { return output; } protected: SimpleString output; private: StringBufferTestOutput(const StringBufferTestOutput&); StringBufferTestOutput& operator=(const StringBufferTestOutput&); }; class CompositeTestOutput : public TestOutput { public: virtual void setOutputOne(TestOutput* output); virtual void setOutputTwo(TestOutput* output); CompositeTestOutput(); virtual ~CompositeTestOutput() _destructor_override; virtual void printTestsStarted() _override; virtual void printTestsEnded(const TestResult& result) _override; virtual void printCurrentTestStarted(const UtestShell& test) _override; virtual void printCurrentTestEnded(const TestResult& res) _override; virtual void printCurrentGroupStarted(const UtestShell& test) _override; virtual void printCurrentGroupEnded(const TestResult& res) _override; virtual void verbose(VerbosityLevel level) _override; virtual void color() _override; virtual void printBuffer(const char*) _override; virtual void print(const char*) _override; virtual void print(long) _override; virtual void print(size_t) _override; virtual void printDouble(double) _override; virtual void printFailure(const TestFailure& failure) _override; virtual void setProgressIndicator(const char*) _override; virtual void flush() _override; protected: CompositeTestOutput(const TestOutput&); CompositeTestOutput& operator=(const TestOutput&); private: TestOutput* outputOne_; TestOutput* outputTwo_; }; #endif cpputest-4.0/include/CppUTest/MemoryLeakDetectorNewMacros.h000644 000765 000024 00000006635 13663176127 025065 0ustar00basvoddestaff000000 000000 /* * This file can be used to get extra debugging information about memory leaks in your production code. * It defines a preprocessor macro for operator new. This will pass additional information to the * operator new and this will give the line/file information of the memory leaks in your code. * * You can use this by including this file to all your production code. When using gcc, you can use * the -include file to do this for you. * * Warning: Using the new macro can cause a conflict with newly declared operator news. This can be * resolved by: * 1. #undef operator new before including this file * 2. Including the files that override operator new before this file. * This can be done by creating your own NewMacros.h file that includes your operator new overrides * and THEN this file. * * STL (or StdC++ lib) also does overrides for operator new. Therefore, you'd need to include the STL * files *before* this file too. * */ #include "CppUTestConfig.h" /* Make sure that mem leak detection is on and that this is being included from a C++ file */ #if CPPUTEST_USE_MEM_LEAK_DETECTION && defined(__cplusplus) /* This #ifndef prevents from being included twice and enables the file to be included anywhere */ #ifndef CPPUTEST_USE_NEW_MACROS #if CPPUTEST_USE_STD_CPP_LIB #ifdef CPPUTEST_USE_STRDUP_MACROS #if CPPUTEST_USE_STRDUP_MACROS == 1 /* * Some platforms (OSx, i.e.) will get or included when using header, * in order to avoid conflicts with strdup and strndup macros defined by MemoryLeakDetectorMallocMacros.h * we will undefined those macros, include the C++ headers and then reinclude MemoryLeakDetectorMallocMacros.h. * The check `#if CPPUTEST_USE_STRDUP_MACROS` will ensure we only include MemoryLeakDetectorMallocMacros.h if * it has already been includeded earlier. */ #undef strdup #undef strndup #undef CPPUTEST_USE_STRDUP_MACROS #define __CPPUTEST_REINCLUDE_MALLOC_MEMORY_LEAK_DETECTOR #endif #endif #include #include #include #ifdef __CPPUTEST_REINCLUDE_MALLOC_MEMORY_LEAK_DETECTOR #include "MemoryLeakDetectorMallocMacros.h" #endif #endif void* operator new(size_t size, const char* file, size_t line) UT_THROW (std::bad_alloc); void* operator new[](size_t size, const char* file, size_t line) UT_THROW (std::bad_alloc); void* operator new(size_t size) UT_THROW(std::bad_alloc); void* operator new[](size_t size) UT_THROW(std::bad_alloc); void operator delete(void* mem, const char* file, size_t line) UT_NOTHROW; void operator delete[](void* mem, const char* file, size_t line) UT_NOTHROW; void operator delete(void* mem) UT_NOTHROW; void operator delete[](void* mem) UT_NOTHROW; #if __cplusplus >= 201402L void operator delete (void* mem, size_t size) UT_NOTHROW; void operator delete[] (void* mem, size_t size) UT_NOTHROW; #endif #endif #ifdef __clang__ #pragma clang diagnostic push #if (__clang_major__ == 3 && __clang_minor__ >= 6) || __clang_major__ >= 4 #pragma clang diagnostic ignored "-Wkeyword-macro" #endif #endif #define new new(__FILE__, __LINE__) #ifdef __clang__ #pragma clang diagnostic pop #endif #define CPPUTEST_USE_NEW_MACROS 1 #endif cpputest-4.0/include/CppUTest/TestResult.h000644 000765 000024 00000007410 13663176127 021615 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // A TestResult is a collection of the history of some test runs. Right now // it just collects failures. Really it just prints the failures. // #ifndef D_TestResult_h #define D_TestResult_h class TestFailure; class TestOutput; class UtestShell; class TestResult { public: TestResult(TestOutput&); DEFAULT_COPY_CONSTRUCTOR(TestResult) virtual ~TestResult(); virtual void testsStarted(); virtual void testsEnded(); virtual void currentGroupStarted(UtestShell* test); virtual void currentGroupEnded(UtestShell* test); virtual void currentTestStarted(UtestShell* test); virtual void currentTestEnded(UtestShell* test); virtual void countTest(); virtual void countRun(); virtual void countCheck(); virtual void countFilteredOut(); virtual void countIgnored(); virtual void addFailure(const TestFailure& failure); virtual void print(const char* text); virtual void printVeryVerbose(const char* text); size_t getTestCount() const { return testCount_; } size_t getRunCount() const { return runCount_; } size_t getCheckCount() const { return checkCount_; } size_t getFilteredOutCount() const { return filteredOutCount_; } size_t getIgnoredCount() const { return ignoredCount_; } size_t getFailureCount() const { return failureCount_; } bool isFailure() const { return (getFailureCount() != 0) || (getRunCount() + getIgnoredCount() == 0); } size_t getTotalExecutionTime() const; void setTotalExecutionTime(size_t exTime); size_t getCurrentTestTotalExecutionTime() const; size_t getCurrentGroupTotalExecutionTime() const; private: TestOutput& output_; size_t testCount_; size_t runCount_; size_t checkCount_; size_t failureCount_; size_t filteredOutCount_; size_t ignoredCount_; size_t totalExecutionTime_; size_t timeStarted_; size_t currentTestTimeStarted_; size_t currentTestTotalExecutionTime_; size_t currentGroupTimeStarted_; size_t currentGroupTotalExecutionTime_; }; #endif cpputest-4.0/include/CppUTest/TestMemoryAllocator.h000644 000765 000024 00000021266 13663176127 023455 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestMemoryAllocator_h #define D_TestMemoryAllocator_h struct MemoryLeakNode; class TestMemoryAllocator; extern void setCurrentNewAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentNewAllocator(); extern void setCurrentNewAllocatorToDefault(); extern TestMemoryAllocator* defaultNewAllocator(); extern void setCurrentNewArrayAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentNewArrayAllocator(); extern void setCurrentNewArrayAllocatorToDefault(); extern TestMemoryAllocator* defaultNewArrayAllocator(); extern void setCurrentMallocAllocator(TestMemoryAllocator* allocator); extern TestMemoryAllocator* getCurrentMallocAllocator(); extern void setCurrentMallocAllocatorToDefault(); extern TestMemoryAllocator* defaultMallocAllocator(); class GlobalMemoryAllocatorStash { public: GlobalMemoryAllocatorStash(); void save(); void restore(); private: TestMemoryAllocator* originalMallocAllocator; TestMemoryAllocator* originalNewAllocator; TestMemoryAllocator* originalNewArrayAllocator; }; class TestMemoryAllocator { public: TestMemoryAllocator(const char* name_str = "generic", const char* alloc_name_str = "alloc", const char* free_name_str = "free"); virtual ~TestMemoryAllocator(); bool hasBeenDestroyed(); virtual char* alloc_memory(size_t size, const char* file, size_t line); virtual void free_memory(char* memory, size_t size, const char* file, size_t line); virtual const char* name() const; virtual const char* alloc_name() const; virtual const char* free_name() const; virtual bool isOfEqualType(TestMemoryAllocator* allocator); virtual char* allocMemoryLeakNode(size_t size); virtual void freeMemoryLeakNode(char* memory); virtual TestMemoryAllocator* actualAllocator(); protected: const char* name_; const char* alloc_name_; const char* free_name_; bool hasBeenDestroyed_; }; class MemoryLeakAllocator : public TestMemoryAllocator { public: MemoryLeakAllocator(TestMemoryAllocator* originalAllocator); virtual ~MemoryLeakAllocator() _destructor_override; virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual void free_memory(char* memory, size_t size, const char* file, size_t line) _override; virtual const char* name() const _override; virtual const char* alloc_name() const _override; virtual const char* free_name() const _override; virtual TestMemoryAllocator* actualAllocator() _override; private: TestMemoryAllocator* originalAllocator_; }; class CrashOnAllocationAllocator : public TestMemoryAllocator { unsigned allocationToCrashOn_; public: CrashOnAllocationAllocator(); virtual ~CrashOnAllocationAllocator() _destructor_override; virtual void setNumberToCrashOn(unsigned allocationToCrashOn); virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; }; class NullUnknownAllocator: public TestMemoryAllocator { public: NullUnknownAllocator(); virtual ~NullUnknownAllocator() _destructor_override; virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual void free_memory(char* memory, size_t size, const char* file, size_t line) _override; static TestMemoryAllocator* defaultAllocator(); }; class LocationToFailAllocNode; class FailableMemoryAllocator: public TestMemoryAllocator { public: FailableMemoryAllocator(const char* name_str = "failable alloc", const char* alloc_name_str = "alloc", const char* free_name_str = "free"); virtual ~FailableMemoryAllocator() _destructor_override; virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual char* allocMemoryLeakNode(size_t size) _override; virtual void failAllocNumber(int number); virtual void failNthAllocAt(int allocationNumber, const char* file, size_t line); virtual void checkAllFailedAllocsWereDone(); virtual void clearFailedAllocs(); protected: LocationToFailAllocNode* head_; int currentAllocNumber_; }; struct MemoryAccountantAllocationNode; class MemoryAccountant { public: MemoryAccountant(); ~MemoryAccountant(); void useCacheSizes(size_t sizes[], size_t length); void clear(); void alloc(size_t size); void dealloc(size_t size); size_t totalAllocationsOfSize(size_t size) const; size_t totalDeallocationsOfSize(size_t size) const; size_t maximumAllocationAtATimeOfSize(size_t size) const; size_t totalAllocations() const; size_t totalDeallocations() const; SimpleString report() const; void setAllocator(TestMemoryAllocator* allocator); private: MemoryAccountantAllocationNode* findOrCreateNodeOfSize(size_t size); MemoryAccountantAllocationNode* findNodeOfSize(size_t size) const; MemoryAccountantAllocationNode* createNewAccountantAllocationNode(size_t size, MemoryAccountantAllocationNode* next) const; void destroyAccountantAllocationNode(MemoryAccountantAllocationNode* node) const; void createCacheSizeNodes(size_t sizes[], size_t length); MemoryAccountantAllocationNode* head_; TestMemoryAllocator* allocator_; bool useCacheSizes_; SimpleString reportNoAllocations() const; SimpleString reportTitle() const; SimpleString reportHeader() const; SimpleString reportFooter() const; SimpleString stringSize(size_t size) const; }; struct AccountingTestMemoryAllocatorMemoryNode; class AccountingTestMemoryAllocator : public TestMemoryAllocator { public: AccountingTestMemoryAllocator(MemoryAccountant& accountant, TestMemoryAllocator* originalAllocator); virtual ~AccountingTestMemoryAllocator() _destructor_override; virtual char* alloc_memory(size_t size, const char* file, size_t line) _override; virtual void free_memory(char* memory, size_t size, const char* file, size_t line) _override; virtual TestMemoryAllocator* actualAllocator() _override; TestMemoryAllocator* originalAllocator(); virtual const char* alloc_name() const _override; virtual const char* free_name() const _override; private: void addMemoryToMemoryTrackingToKeepTrackOfSize(char* memory, size_t size); size_t removeMemoryFromTrackingAndReturnAllocatedSize(char* memory); size_t removeNextNodeAndReturnSize(AccountingTestMemoryAllocatorMemoryNode* node); size_t removeHeadAndReturnSize(); MemoryAccountant& accountant_; TestMemoryAllocator* originalAllocator_; AccountingTestMemoryAllocatorMemoryNode* head_; }; class GlobalMemoryAccountant { public: GlobalMemoryAccountant(); ~GlobalMemoryAccountant(); void useCacheSizes(size_t sizes[], size_t length); void start(); void stop(); SimpleString report(); SimpleString reportWithCacheSizes(size_t sizes[], size_t length); TestMemoryAllocator* getMallocAllocator(); TestMemoryAllocator* getNewAllocator(); TestMemoryAllocator* getNewArrayAllocator(); private: void restoreMemoryAllocators(); MemoryAccountant accountant_; AccountingTestMemoryAllocator* mallocAllocator_; AccountingTestMemoryAllocator* newAllocator_; AccountingTestMemoryAllocator* newArrayAllocator_; }; #endif cpputest-4.0/include/CppUTest/MemoryLeakDetectorMallocMacros.h000644 000765 000024 00000004475 13663176127 025543 0ustar00basvoddestaff000000 000000 /* * This file can be used to get extra debugging information about memory leaks in your production code. * It defines a preprocessor macro for malloc. This will pass additional information to the * malloc and this will give the line/file information of the memory leaks in your code. * * You can use this by including this file to all your production code. When using gcc, you can use * the -include file to do this for you. * */ #include "CppUTestConfig.h" #if CPPUTEST_USE_MEM_LEAK_DETECTION /* This prevents the declaration from done twice and makes sure the file only #defines malloc, so it can be included anywhere */ #ifndef CPPUTEST_USE_MALLOC_MACROS #ifdef __cplusplus extern "C" { #endif extern void* cpputest_malloc_location(size_t size, const char* file, size_t line); extern void* cpputest_calloc_location(size_t count, size_t size, const char* file, size_t line); extern void* cpputest_realloc_location(void *, size_t, const char* file, size_t line); extern void cpputest_free_location(void* buffer, const char* file, size_t line); #ifdef __cplusplus } #endif extern void crash_on_allocation_number(unsigned number); #define malloc(a) cpputest_malloc_location(a, __FILE__, __LINE__) #define calloc(a, b) cpputest_calloc_location(a, b, __FILE__, __LINE__) #define realloc(a, b) cpputest_realloc_location(a, b, __FILE__, __LINE__) #define free(a) cpputest_free_location(a, __FILE__, __LINE__) #define CPPUTEST_USE_MALLOC_MACROS 1 #endif /* CPPUTEST_USE_MALLOC_MACROS */ /* This prevents strdup macros to get defined, unless it has been enabled by the user or generated config */ #ifdef CPPUTEST_HAVE_STRDUP /* This prevents the declaration from done twice and makes sure the file only #defines strdup, so it can be included anywhere */ #ifndef CPPUTEST_USE_STRDUP_MACROS #ifdef __cplusplus extern "C" { #endif extern char* cpputest_strdup_location(const char* str, const char* file, size_t line); extern char* cpputest_strndup_location(const char* str, size_t n, const char* file, size_t line); #ifdef __cplusplus } #endif #define strdup(str) cpputest_strdup_location(str, __FILE__, __LINE__) #define strndup(str, n) cpputest_strndup_location(str, n, __FILE__, __LINE__) #define CPPUTEST_USE_STRDUP_MACROS 1 #endif /* CPPUTEST_USE_STRDUP_MACROS */ #endif /* CPPUTEST_HAVE_STRDUP */ #endif /* CPPUTEST_USE_MEM_LEAK_DETECTION */ cpputest-4.0/include/CppUTest/SimpleString.h000644 000765 000024 00000021500 13663176127 022113 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /////////////////////////////////////////////////////////////////////////////// // // SIMPLESTRING.H // // One of the design goals of CppUnitLite is to compilation with very old C++ // compilers. For that reason, the simple string class that provides // only the operations needed in CppUnitLite. // /////////////////////////////////////////////////////////////////////////////// #ifndef D_SimpleString_h #define D_SimpleString_h #include "StandardCLibrary.h" class SimpleStringCollection; class TestMemoryAllocator; class SimpleString { friend bool operator==(const SimpleString& left, const SimpleString& right); friend bool operator!=(const SimpleString& left, const SimpleString& right); public: SimpleString(const char *value = ""); SimpleString(const char *value, size_t repeatCount); SimpleString(const SimpleString& other); ~SimpleString(); SimpleString& operator=(const SimpleString& other); SimpleString operator+(const SimpleString&) const; SimpleString& operator+=(const SimpleString&); SimpleString& operator+=(const char*); static const size_t npos = (size_t) -1; char at(size_t pos) const; size_t find(char ch) const; size_t findFrom(size_t starting_position, char ch) const; bool contains(const SimpleString& other) const; bool containsNoCase(const SimpleString& other) const; bool startsWith(const SimpleString& other) const; bool endsWith(const SimpleString& other) const; void split(const SimpleString& split, SimpleStringCollection& outCollection) const; bool equalsNoCase(const SimpleString& str) const; size_t count(const SimpleString& str) const; void replace(char to, char with); void replace(const char* to, const char* with); SimpleString lowerCase() const; SimpleString subString(size_t beginPos) const; SimpleString subString(size_t beginPos, size_t amount) const; SimpleString subStringFromTill(char startChar, char lastExcludedChar) const; void copyToBuffer(char* buffer, size_t bufferSize) const; const char *asCharString() const; size_t size() const; bool isEmpty() const; static void padStringsToSameLength(SimpleString& str1, SimpleString& str2, char ch); static TestMemoryAllocator* getStringAllocator(); static void setStringAllocator(TestMemoryAllocator* allocator); static int AtoI(const char*str); static unsigned AtoU(const char*str); static int StrCmp(const char* s1, const char* s2); static size_t StrLen(const char*); static int StrNCmp(const char* s1, const char* s2, size_t n); static char* StrNCpy(char* s1, const char* s2, size_t n); static const char* StrStr(const char* s1, const char* s2); static char ToLower(char ch); static int MemCmp(const void* s1, const void *s2, size_t n); static char* allocStringBuffer(size_t size, const char* file, size_t line); static void deallocStringBuffer(char* str, size_t size, const char* file, size_t line); private: const char* getBuffer() const; void deallocateInternalBuffer(); void setInternalBufferAsEmptyString(); void setInternalBufferToNewBuffer(size_t bufferSize); void setInternalBufferTo(char* buffer, size_t bufferSize); void copyBufferToNewInternalBuffer(const char* otherBuffer); void copyBufferToNewInternalBuffer(const char* otherBuffer, size_t bufferSize); void copyBufferToNewInternalBuffer(const SimpleString& otherBuffer); char *buffer_; size_t bufferSize_; static TestMemoryAllocator* stringAllocator_; char* getEmptyString() const; static char* copyToNewBuffer(const char* bufferToCopy, size_t bufferSize); static bool isDigit(char ch); static bool isSpace(char ch); static bool isUpper(char ch); }; class SimpleStringCollection { public: SimpleStringCollection(); ~SimpleStringCollection(); void allocate(size_t size); size_t size() const; SimpleString& operator[](size_t index); private: SimpleString* collection_; SimpleString empty_; size_t size_; void operator =(SimpleStringCollection&); SimpleStringCollection(SimpleStringCollection&); }; class GlobalSimpleStringAllocatorStash { public: GlobalSimpleStringAllocatorStash(); void save(); void restore(); private: TestMemoryAllocator* originalAllocator_; }; class MemoryAccountant; class AccountingTestMemoryAllocator; class GlobalSimpleStringMemoryAccountant { public: GlobalSimpleStringMemoryAccountant(); ~GlobalSimpleStringMemoryAccountant(); void useCacheSizes(size_t cacheSizes[], size_t length); void start(); void stop(); SimpleString report(); AccountingTestMemoryAllocator* getAllocator(); private: void restoreAllocator(); AccountingTestMemoryAllocator* allocator_; MemoryAccountant* accountant_; }; SimpleString StringFrom(bool value); SimpleString StringFrom(const void* value); SimpleString StringFrom(void (*value)()); SimpleString StringFrom(char value); SimpleString StringFrom(const char *value); SimpleString StringFromOrNull(const char * value); SimpleString StringFrom(int value); SimpleString StringFrom(unsigned int value); SimpleString StringFrom(long value); SimpleString StringFrom(unsigned long value); SimpleString StringFrom(cpputest_longlong value); SimpleString StringFrom(cpputest_ulonglong value); SimpleString HexStringFrom(unsigned int value); SimpleString HexStringFrom(int value); SimpleString HexStringFrom(signed char value); SimpleString HexStringFrom(long value); SimpleString HexStringFrom(unsigned long value); SimpleString HexStringFrom(cpputest_longlong value); SimpleString HexStringFrom(cpputest_ulonglong value); SimpleString HexStringFrom(const void* value); SimpleString HexStringFrom(void (*value)()); SimpleString StringFrom(double value, int precision = 6); SimpleString StringFrom(const SimpleString& other); SimpleString StringFromFormat(const char* format, ...) _check_format_(printf, 1, 2); SimpleString VStringFromFormat(const char* format, va_list args); SimpleString StringFromBinary(const unsigned char* value, size_t size); SimpleString StringFromBinaryOrNull(const unsigned char* value, size_t size); SimpleString StringFromBinaryWithSize(const unsigned char* value, size_t size); SimpleString StringFromBinaryWithSizeOrNull(const unsigned char* value, size_t size); SimpleString StringFromMaskedBits(unsigned long value, unsigned long mask, size_t byteCount); SimpleString StringFromOrdinalNumber(unsigned int number); SimpleString BracketsFormattedHexStringFrom(int value); SimpleString BracketsFormattedHexStringFrom(unsigned int value); SimpleString BracketsFormattedHexStringFrom(long value); SimpleString BracketsFormattedHexStringFrom(unsigned long value); SimpleString BracketsFormattedHexStringFrom(cpputest_longlong value); SimpleString BracketsFormattedHexStringFrom(cpputest_ulonglong value); SimpleString BracketsFormattedHexStringFrom(signed char value); SimpleString BracketsFormattedHexString(SimpleString hexString); /* * ARM compiler has only partial support for C++11. * Specifically nullptr_t is not officially supported */ #if __cplusplus > 199711L && !defined __arm__ && CPPUTEST_USE_STD_CPP_LIB SimpleString StringFrom(const std::nullptr_t value); #endif #if CPPUTEST_USE_STD_CPP_LIB #include SimpleString StringFrom(const std::string& other); #endif #endif cpputest-4.0/include/CppUTest/CommandLineArguments.h000644 000765 000024 00000010661 13663176127 023555 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_CommandLineArguments_H #define D_CommandLineArguments_H #include "SimpleString.h" #include "TestOutput.h" #include "TestFilter.h" class TestPlugin; class CommandLineArguments { public: explicit CommandLineArguments(int ac, const char *const *av); virtual ~CommandLineArguments(); bool parse(TestPlugin* plugin); bool needHelp() const; bool isVerbose() const; bool isVeryVerbose() const; bool isColor() const; bool isListingTestGroupNames() const; bool isListingTestGroupAndCaseNames() const; bool isRunIgnored() const; size_t getRepeatCount() const; bool isShuffling() const; bool isReversing() const; size_t getShuffleSeed() const; const TestFilter* getGroupFilters() const; const TestFilter* getNameFilters() const; bool isJUnitOutput() const; bool isEclipseOutput() const; bool isTeamCityOutput() const; bool runTestsInSeperateProcess() const; const SimpleString& getPackageName() const; const char* usage() const; const char* help() const; private: enum OutputType { OUTPUT_ECLIPSE, OUTPUT_JUNIT, OUTPUT_TEAMCITY }; int ac_; const char *const *av_; bool needHelp_; bool verbose_; bool veryVerbose_; bool color_; bool runTestsAsSeperateProcess_; bool listTestGroupNames_; bool listTestGroupAndCaseNames_; bool runIgnored_; bool reversing_; bool shuffling_; bool shufflingPreSeeded_; size_t repeat_; size_t shuffleSeed_; TestFilter* groupFilters_; TestFilter* nameFilters_; OutputType outputType_; SimpleString packageName_; SimpleString getParameterField(int ac, const char *const *av, int& i, const SimpleString& parameterName); void setRepeatCount(int ac, const char *const *av, int& index); bool setShuffle(int ac, const char *const *av, int& index); void addGroupFilter(int ac, const char *const *av, int& index); bool addGroupDotNameFilter(int ac, const char *const *av, int& index); void addStrictGroupFilter(int ac, const char *const *av, int& index); void addExcludeGroupFilter(int ac, const char *const *av, int& index); void addExcludeStrictGroupFilter(int ac, const char *const *av, int& index); void addNameFilter(int ac, const char *const *av, int& index); void addStrictNameFilter(int ac, const char *const *av, int& index); void addExcludeNameFilter(int ac, const char *const *av, int& index); void addExcludeStrictNameFilter(int ac, const char *const *av, int& index); void addTestToRunBasedOnVerboseOutput(int ac, const char *const *av, int& index, const char* parameterName); bool setOutputType(int ac, const char *const *av, int& index); void setPackageName(int ac, const char *const *av, int& index); CommandLineArguments(const CommandLineArguments&); CommandLineArguments& operator=(const CommandLineArguments&); }; #endif cpputest-4.0/include/CppUTest/UtestMacros.h000644 000765 000024 00000042560 13663176127 021755 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_UTestMacros_h #define D_UTestMacros_h /*! \brief Define a group of tests * * All tests in a TEST_GROUP share the same setup() * and teardown(). setup() is run before the opening * curly brace of each TEST and teardown() is * called after the closing curly brace of TEST. * */ #define TEST_GROUP_BASE(testGroup, baseclass) \ extern int externTestGroup##testGroup; \ int externTestGroup##testGroup = 0; \ struct TEST_GROUP_##CppUTestGroup##testGroup : public baseclass #define TEST_BASE(testBaseClass) \ struct testBaseClass : public Utest #define TEST_GROUP(testGroup) \ TEST_GROUP_BASE(testGroup, Utest) #define TEST_SETUP() \ virtual void setup() #define TEST_TEARDOWN() \ virtual void teardown() #define TEST(testGroup, testName) \ /* External declarations for strict compilers */ \ class TEST_##testGroup##_##testName##_TestShell; \ extern TEST_##testGroup##_##testName##_TestShell TEST_##testGroup##_##testName##_TestShell_instance; \ \ class TEST_##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: TEST_##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ void testBody() _override; }; \ class TEST_##testGroup##_##testName##_TestShell : public UtestShell { \ virtual Utest* createTest() _override { return new TEST_##testGroup##_##testName##_Test; } \ } TEST_##testGroup##_##testName##_TestShell_instance; \ static TestInstaller TEST_##testGroup##_##testName##_Installer(TEST_##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \ void TEST_##testGroup##_##testName##_Test::testBody() #define IGNORE_TEST(testGroup, testName)\ /* External declarations for strict compilers */ \ class IGNORE##testGroup##_##testName##_TestShell; \ extern IGNORE##testGroup##_##testName##_TestShell IGNORE##testGroup##_##testName##_TestShell_instance; \ \ class IGNORE##testGroup##_##testName##_Test : public TEST_GROUP_##CppUTestGroup##testGroup \ { public: IGNORE##testGroup##_##testName##_Test () : TEST_GROUP_##CppUTestGroup##testGroup () {} \ public: void testBody() _override; }; \ class IGNORE##testGroup##_##testName##_TestShell : public IgnoredUtestShell { \ virtual Utest* createTest() _override { return new IGNORE##testGroup##_##testName##_Test; } \ } IGNORE##testGroup##_##testName##_TestShell_instance; \ static TestInstaller TEST_##testGroup##testName##_Installer(IGNORE##testGroup##_##testName##_TestShell_instance, #testGroup, #testName, __FILE__,__LINE__); \ void IGNORE##testGroup##_##testName##_Test::testBody () #define IMPORT_TEST_GROUP(testGroup) \ extern int externTestGroup##testGroup;\ extern int* p##testGroup; \ int* p##testGroup = &externTestGroup##testGroup #define CPPUTEST_DEFAULT_MAIN \ /*#include */ \ int main(int argc, char** argv) \ { \ return CommandLineTestRunner::RunAllTests(argc, argv); \ } // Different checking macros #define CHECK(condition)\ CHECK_TRUE_LOCATION(condition, "CHECK", #condition, NULLPTR, __FILE__, __LINE__) #define CHECK_TEXT(condition, text) \ CHECK_TRUE_LOCATION((bool)(condition), "CHECK", #condition, text, __FILE__, __LINE__) #define CHECK_TRUE(condition)\ CHECK_TRUE_LOCATION((bool) (condition), "CHECK_TRUE", #condition, NULLPTR, __FILE__, __LINE__) #define CHECK_TRUE_TEXT(condition, text)\ CHECK_TRUE_LOCATION(condition, "CHECK_TRUE", #condition, text, __FILE__, __LINE__) #define CHECK_FALSE(condition)\ CHECK_FALSE_LOCATION(condition, "CHECK_FALSE", #condition, NULLPTR, __FILE__, __LINE__) #define CHECK_FALSE_TEXT(condition, text)\ CHECK_FALSE_LOCATION(condition, "CHECK_FALSE", #condition, text, __FILE__, __LINE__) #define CHECK_TRUE_LOCATION(condition, checkString, conditionString, text, file, line)\ do { UtestShell::getCurrent()->assertTrue((condition), checkString, conditionString, text, file, line); } while(0) #define CHECK_FALSE_LOCATION(condition, checkString, conditionString, text, file, line)\ do { UtestShell::getCurrent()->assertTrue(!(condition), checkString, conditionString, text, file, line); } while(0) //This check needs the operator!=(), and a StringFrom(YourType) function #define CHECK_EQUAL(expected, actual)\ CHECK_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define CHECK_EQUAL_TEXT(expected, actual, text)\ CHECK_EQUAL_LOCATION(expected, actual, text, __FILE__, __LINE__) #define CHECK_EQUAL_LOCATION(expected, actual, text, file, line)\ do { if ((expected) != (actual)) { \ if ((actual) != (actual)) \ UtestShell::getCurrent()->print("WARNING:\n\tThe \"Actual Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \ if ((expected) != (expected)) \ UtestShell::getCurrent()->print("WARNING:\n\tThe \"Expected Parameter\" parameter is evaluated multiple times resulting in different values.\n\tThus the value in the error message is probably incorrect.", file, line); \ UtestShell::getCurrent()->assertEquals(true, StringFrom(expected).asCharString(), StringFrom(actual).asCharString(), text, file, line); \ } \ else \ { \ UtestShell::getCurrent()->assertLongsEqual((long)0, (long)0, NULLPTR, file, line); \ } } while(0) #define CHECK_COMPARE(first, relop, second)\ CHECK_COMPARE_TEXT(first, relop, second, NULLPTR) #define CHECK_COMPARE_TEXT(first, relop, second, text)\ CHECK_COMPARE_LOCATION(first, relop, second, text, __FILE__, __LINE__) #define CHECK_COMPARE_LOCATION(first, relop, second, text, file, line)\ do { SimpleString conditionString;\ conditionString += StringFrom(first); conditionString += " ";\ conditionString += #relop; conditionString += " ";\ conditionString += StringFrom(second);\ UtestShell::getCurrent()->assertCompare((first) relop (second), "CHECK_COMPARE", conditionString.asCharString(), text, __FILE__, __LINE__);\ } while(0) //This check checks for char* string equality using strcmp. //This makes up for the fact that CHECK_EQUAL only compares the pointers to char*'s #define STRCMP_EQUAL(expected, actual)\ STRCMP_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define STRCMP_EQUAL_TEXT(expected, actual, text)\ STRCMP_EQUAL_LOCATION(expected, actual, text, __FILE__, __LINE__) #define STRCMP_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertCstrEqual(expected, actual, text, file, line); } while(0) #define STRNCMP_EQUAL(expected, actual, length)\ STRNCMP_EQUAL_LOCATION(expected, actual, length, NULLPTR, __FILE__, __LINE__) #define STRNCMP_EQUAL_TEXT(expected, actual, length, text)\ STRNCMP_EQUAL_LOCATION(expected, actual, length, text, __FILE__, __LINE__) #define STRNCMP_EQUAL_LOCATION(expected, actual, length, text, file, line)\ do { UtestShell::getCurrent()->assertCstrNEqual(expected, actual, length, text, file, line); } while(0) #define STRCMP_NOCASE_EQUAL(expected, actual)\ STRCMP_NOCASE_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define STRCMP_NOCASE_EQUAL_TEXT(expected, actual, text)\ STRCMP_NOCASE_EQUAL_LOCATION(expected, actual, text, __FILE__, __LINE__) #define STRCMP_NOCASE_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertCstrNoCaseEqual(expected, actual, text, file, line); } while(0) #define STRCMP_CONTAINS(expected, actual)\ STRCMP_CONTAINS_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define STRCMP_CONTAINS_TEXT(expected, actual, text)\ STRCMP_CONTAINS_LOCATION(expected, actual, text, __FILE__, __LINE__) #define STRCMP_CONTAINS_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertCstrContains(expected, actual, text, file, line); } while(0) #define STRCMP_NOCASE_CONTAINS(expected, actual)\ STRCMP_NOCASE_CONTAINS_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define STRCMP_NOCASE_CONTAINS_TEXT(expected, actual, text)\ STRCMP_NOCASE_CONTAINS_LOCATION(expected, actual, text, __FILE__, __LINE__) #define STRCMP_NOCASE_CONTAINS_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertCstrNoCaseContains(expected, actual, text, file, line); } while(0) //Check two long integers for equality #define LONGS_EQUAL(expected, actual)\ LONGS_EQUAL_LOCATION((expected), (actual), "LONGS_EQUAL(" #expected ", " #actual ") failed", __FILE__, __LINE__) #define LONGS_EQUAL_TEXT(expected, actual, text)\ LONGS_EQUAL_LOCATION((expected), (actual), text, __FILE__, __LINE__) #define UNSIGNED_LONGS_EQUAL(expected, actual)\ UNSIGNED_LONGS_EQUAL_LOCATION((expected), (actual), NULLPTR, __FILE__, __LINE__) #define UNSIGNED_LONGS_EQUAL_TEXT(expected, actual, text)\ UNSIGNED_LONGS_EQUAL_LOCATION((expected), (actual), text, __FILE__, __LINE__) #define LONGS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertLongsEqual((long)expected, (long)actual, text, file, line); } while(0) #define UNSIGNED_LONGS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertUnsignedLongsEqual((unsigned long)expected, (unsigned long)actual, text, file, line); } while(0) #define LONGLONGS_EQUAL(expected, actual)\ LONGLONGS_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define LONGLONGS_EQUAL_TEXT(expected, actual, text)\ LONGLONGS_EQUAL_LOCATION(expected, actual, text, __FILE__, __LINE__) #define UNSIGNED_LONGLONGS_EQUAL(expected, actual)\ UNSIGNED_LONGLONGS_EQUAL_LOCATION(expected, actual, NULLPTR, __FILE__, __LINE__) #define UNSIGNED_LONGLONGS_EQUAL_TEXT(expected, actual, text)\ UNSIGNED_LONGLONGS_EQUAL_LOCATION(expected, actual, text, __FILE__, __LINE__) #define LONGLONGS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertLongLongsEqual((long long)expected, (long long)actual, text, file, line); } while(0) #define UNSIGNED_LONGLONGS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertUnsignedLongLongsEqual((unsigned long long)expected, (unsigned long long)actual, text, file, line); } while(0) #define BYTES_EQUAL(expected, actual)\ LONGS_EQUAL((expected) & 0xff,(actual) & 0xff) #define BYTES_EQUAL_TEXT(expected, actual, text)\ LONGS_EQUAL_TEXT((expected) & 0xff, (actual) & 0xff, text) #define SIGNED_BYTES_EQUAL(expected, actual)\ SIGNED_BYTES_EQUAL_LOCATION(expected, actual, __FILE__, __LINE__) #define SIGNED_BYTES_EQUAL_LOCATION(expected, actual, file, line) \ do { UtestShell::getCurrent()->assertSignedBytesEqual(expected, actual, NULLPTR, file, line); } while(0) #define SIGNED_BYTES_EQUAL_TEXT(expected, actual, text)\ SIGNED_BYTES_EQUAL_TEXT_LOCATION(expected, actual, text, __FILE__, __LINE__) #define SIGNED_BYTES_EQUAL_TEXT_LOCATION(expected, actual, text, file, line) \ do { UtestShell::getCurrent()->assertSignedBytesEqual(expected, actual, text, file, line); } while(0) #define POINTERS_EQUAL(expected, actual)\ POINTERS_EQUAL_LOCATION((expected), (actual), NULLPTR, __FILE__, __LINE__) #define POINTERS_EQUAL_TEXT(expected, actual, text)\ POINTERS_EQUAL_LOCATION((expected), (actual), text, __FILE__, __LINE__) #define POINTERS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertPointersEqual((const void *)expected, (const void *)actual, text, file, line); } while(0) #define FUNCTIONPOINTERS_EQUAL(expected, actual)\ FUNCTIONPOINTERS_EQUAL_LOCATION((expected), (actual), NULLPTR, __FILE__, __LINE__) #define FUNCTIONPOINTERS_EQUAL_TEXT(expected, actual, text)\ FUNCTIONPOINTERS_EQUAL_LOCATION((expected), (actual), text, __FILE__, __LINE__) #define FUNCTIONPOINTERS_EQUAL_LOCATION(expected, actual, text, file, line)\ do { UtestShell::getCurrent()->assertFunctionPointersEqual((void (*)())expected, (void (*)())actual, text, file, line); } while(0) //Check two doubles for equality within a tolerance threshold #define DOUBLES_EQUAL(expected, actual, threshold)\ DOUBLES_EQUAL_LOCATION(expected, actual, threshold, NULLPTR, __FILE__, __LINE__) #define DOUBLES_EQUAL_TEXT(expected, actual, threshold, text)\ DOUBLES_EQUAL_LOCATION(expected, actual, threshold, text, __FILE__, __LINE__) #define DOUBLES_EQUAL_LOCATION(expected, actual, threshold, text, file, line)\ do { UtestShell::getCurrent()->assertDoublesEqual(expected, actual, threshold, text, file, line); } while(0) #define MEMCMP_EQUAL(expected, actual, size)\ MEMCMP_EQUAL_LOCATION(expected, actual, size, NULLPTR, __FILE__, __LINE__) #define MEMCMP_EQUAL_TEXT(expected, actual, size, text)\ MEMCMP_EQUAL_LOCATION(expected, actual, size, text, __FILE__, __LINE__) #define MEMCMP_EQUAL_LOCATION(expected, actual, size, text, file, line)\ do { UtestShell::getCurrent()->assertBinaryEqual(expected, actual, size, text, file, line); } while(0) #define BITS_EQUAL(expected, actual, mask)\ BITS_LOCATION(expected, actual, mask, NULLPTR, __FILE__, __LINE__) #define BITS_EQUAL_TEXT(expected, actual, mask, text)\ BITS_LOCATION(expected, actual, mask, text, __FILE__, __LINE__) #define BITS_LOCATION(expected, actual, mask, text, file, line)\ do { UtestShell::getCurrent()->assertBitsEqual(expected, actual, mask, sizeof(actual), text, file, line); } while(0) #define ENUMS_EQUAL_INT(expected, actual)\ ENUMS_EQUAL_TYPE(int, expected, actual) #define ENUMS_EQUAL_INT_TEXT(expected, actual, text)\ ENUMS_EQUAL_TYPE_TEXT(int, expected, actual, text) #define ENUMS_EQUAL_TYPE(underlying_type, expected, actual)\ ENUMS_EQUAL_TYPE_LOCATION(underlying_type, expected, actual, NULLPTR, __FILE__, __LINE__) #define ENUMS_EQUAL_TYPE_TEXT(underlying_type, expected, actual, text)\ ENUMS_EQUAL_TYPE_LOCATION(underlying_type, expected, actual, text, __FILE__, __LINE__) #define ENUMS_EQUAL_TYPE_LOCATION(underlying_type, expected, actual, text, file, line)\ do { underlying_type expected_underlying_value = (underlying_type)(expected); \ underlying_type actual_underlying_value = (underlying_type)(actual); \ if (expected_underlying_value != actual_underlying_value) { \ UtestShell::getCurrent()->assertEquals(true, StringFrom(expected_underlying_value).asCharString(), StringFrom(actual_underlying_value).asCharString(), text, file, line); \ } \ else \ { \ UtestShell::getCurrent()->assertLongsEqual((long)0, long(0), NULLPTR, file, line); \ } \ } while(0) //Fail if you get to this macro //The macro FAIL may already be taken, so allow FAIL_TEST too #ifndef FAIL #define FAIL(text)\ FAIL_LOCATION(text, __FILE__,__LINE__) #define FAIL_LOCATION(text, file, line)\ do { UtestShell::getCurrent()->fail(text, file, line); } while(0) #endif #define FAIL_TEST(text)\ FAIL_TEST_LOCATION(text, __FILE__,__LINE__) #define FAIL_TEST_LOCATION(text, file,line)\ do { UtestShell::getCurrent()->fail(text, file, line); } while(0) #define TEST_EXIT\ do { UtestShell::getCurrent()->exitTest(); } while(0) #define UT_PRINT_LOCATION(text, file, line) \ do { UtestShell::getCurrent()->print(text, file, line); } while(0) #define UT_PRINT(text) \ UT_PRINT_LOCATION(text, __FILE__, __LINE__) #if CPPUTEST_USE_STD_CPP_LIB #define CHECK_THROWS(expected, expression) \ do { \ SimpleString failure_msg("expected to throw "#expected "\nbut threw nothing"); \ bool caught_expected = false; \ try { \ (expression); \ } catch(const expected &) { \ caught_expected = true; \ } catch(...) { \ failure_msg = "expected to throw " #expected "\nbut threw a different type"; \ } \ if (!caught_expected) { \ UtestShell::getCurrent()->fail(failure_msg.asCharString(), __FILE__, __LINE__); \ } \ else { \ UtestShell::getCurrent()->countCheck(); \ } \ } while(0) #endif /* CPPUTEST_USE_STD_CPP_LIB */ #define UT_CRASH() do { UtestShell::crash(); } while(0) #define RUN_ALL_TESTS(ac, av) CommandLineTestRunner::RunAllTests(ac, av) #endif /*D_UTestMacros_h*/ cpputest-4.0/include/CppUTest/PlatformSpecificFunctions.h000644 000765 000024 00000004303 13663176127 024620 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef PLATFORMSPECIFICFUNCTIONS_H_ #define PLATFORMSPECIFICFUNCTIONS_H_ #include "CppUTest/TestOutput.h" TestOutput::WorkingEnvironment PlatformSpecificGetWorkingEnvironment(); class TestPlugin; extern void (*PlatformSpecificRunTestInASeperateProcess)(UtestShell* shell, TestPlugin* plugin, TestResult* result); extern int (*PlatformSpecificFork)(void); extern int (*PlatformSpecificWaitPid)(int pid, int* status, int options); /* Platform specific interface we use in order to minimize dependencies with LibC. * This enables porting to different embedded platforms. * */ #include "CppUTest/PlatformSpecificFunctions_c.h" #endif cpputest-4.0/include/CppUTest/TestPlugin.h000644 000765 000024 00000007214 13663176127 021577 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_TestPlugin_h #define D_TestPlugin_h class UtestShell; class TestResult; class TestPlugin { public: TestPlugin(const SimpleString& name); virtual ~TestPlugin(); virtual void preTestAction(UtestShell&, TestResult&) { } virtual void postTestAction(UtestShell&, TestResult&) { } virtual bool parseArguments(int /* ac */, const char *const * /* av */, int /* index */ ) { return false; } virtual void runAllPreTestAction(UtestShell&, TestResult&); virtual void runAllPostTestAction(UtestShell&, TestResult&); virtual bool parseAllArguments(int ac, const char *const *av, int index); virtual bool parseAllArguments(int ac, char** av, int index); virtual TestPlugin* addPlugin(TestPlugin*); virtual TestPlugin* removePluginByName(const SimpleString& name); virtual TestPlugin* getNext(); virtual void disable(); virtual void enable(); virtual bool isEnabled(); const SimpleString& getName(); TestPlugin* getPluginByName(const SimpleString& name); protected: TestPlugin(TestPlugin* next_); private: TestPlugin* next_; SimpleString name_; bool enabled_; }; /////////////////////////////////////////////////////////////////////////////// // // SetPointerPlugin // // This is a very small plugin_ that resets pointers to their original value. // /////////////////////////////////////////////////////////////////////////////// extern void CppUTestStore(void **location); class SetPointerPlugin: public TestPlugin { public: SetPointerPlugin(const SimpleString& name); virtual void postTestAction(UtestShell&, TestResult&) _override; enum { MAX_SET = 32 }; }; #define UT_PTR_SET(a, b) do { CppUTestStore( (void**)&a ); a = b; } while(0) ///////////// Null Plugin class NullTestPlugin: public TestPlugin { public: NullTestPlugin(); virtual void runAllPreTestAction(UtestShell& test, TestResult& result) _override; virtual void runAllPostTestAction(UtestShell& test, TestResult& result) _override; static NullTestPlugin* instance(); }; #endif cpputest-4.0/include/CppUTest/MemoryLeakDetector.h000644 000765 000024 00000024212 13663176127 023235 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef D_MemoryLeakDetector_h #define D_MemoryLeakDetector_h enum MemLeakPeriod { mem_leak_period_all, mem_leak_period_disabled, mem_leak_period_enabled, mem_leak_period_checking }; class TestMemoryAllocator; class SimpleMutex; class MemoryLeakFailure { public: virtual ~MemoryLeakFailure() { } virtual void fail(char* fail_string)=0; }; struct SimpleStringBuffer { enum { SIMPLE_STRING_BUFFER_LEN = 4096 }; SimpleStringBuffer(); void clear(); void add(const char* format, ...) _check_format_(printf, 2, 3); void addMemoryDump(const void* memory, size_t memorySize); char* toString(); void setWriteLimit(size_t write_limit); void resetWriteLimit(); bool reachedItsCapacity(); private: char buffer_[SIMPLE_STRING_BUFFER_LEN]; size_t positions_filled_; size_t write_limit_; }; struct MemoryLeakDetectorNode; class MemoryLeakOutputStringBuffer { public: MemoryLeakOutputStringBuffer(); void clear(); void startMemoryLeakReporting(); void stopMemoryLeakReporting(); void reportMemoryLeak(MemoryLeakDetectorNode* leak); void reportDeallocateNonAllocatedMemoryFailure(const char* freeFile, size_t freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); void reportMemoryCorruptionFailure(MemoryLeakDetectorNode* node, const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); void reportAllocationDeallocationMismatchFailure(MemoryLeakDetectorNode* node, const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); char* toString(); private: void addAllocationLocation(const char* allocationFile, size_t allocationLineNumber, size_t allocationSize, TestMemoryAllocator* allocator); void addDeallocationLocation(const char* freeFile, size_t freeLineNumber, TestMemoryAllocator* allocator); void addMemoryLeakHeader(); void addMemoryLeakFooter(size_t totalAmountOfLeaks); void addWarningForUsingMalloc(); void addNoMemoryLeaksMessage(); void addErrorMessageForTooMuchLeaks(); private: size_t total_leaks_; bool giveWarningOnUsingMalloc_; void reportFailure(const char* message, const char* allocFile, size_t allocLine, size_t allocSize, TestMemoryAllocator* allocAllocator, const char* freeFile, size_t freeLine, TestMemoryAllocator* freeAllocator, MemoryLeakFailure* reporter); SimpleStringBuffer outputBuffer_; }; struct MemoryLeakDetectorNode { MemoryLeakDetectorNode() : size_(0), number_(0), memory_(NULLPTR), file_(NULLPTR), line_(0), allocator_(NULLPTR), period_(mem_leak_period_enabled), allocation_stage_(0), next_(NULLPTR) { } void init(char* memory, unsigned number, size_t size, TestMemoryAllocator* allocator, MemLeakPeriod period, unsigned char allocation_stage, const char* file, size_t line); size_t size_; unsigned number_; char* memory_; const char* file_; size_t line_; TestMemoryAllocator* allocator_; MemLeakPeriod period_; unsigned char allocation_stage_; private: friend struct MemoryLeakDetectorList; MemoryLeakDetectorNode* next_; }; struct MemoryLeakDetectorList { MemoryLeakDetectorList() : head_(NULLPTR) {} void addNewNode(MemoryLeakDetectorNode* node); MemoryLeakDetectorNode* retrieveNode(char* memory); MemoryLeakDetectorNode* removeNode(char* memory); MemoryLeakDetectorNode* getFirstLeak(MemLeakPeriod period); MemoryLeakDetectorNode* getFirstLeakForAllocationStage(unsigned char allocation_stage); MemoryLeakDetectorNode* getNextLeak(MemoryLeakDetectorNode* node, MemLeakPeriod period); MemoryLeakDetectorNode* getNextLeakForAllocationStage(MemoryLeakDetectorNode* node, unsigned char allocation_stage); MemoryLeakDetectorNode* getLeakFrom(MemoryLeakDetectorNode* node, MemLeakPeriod period); MemoryLeakDetectorNode* getLeakForAllocationStageFrom(MemoryLeakDetectorNode* node, unsigned char allocation_stage); size_t getTotalLeaks(MemLeakPeriod period); void clearAllAccounting(MemLeakPeriod period); bool isInPeriod(MemoryLeakDetectorNode* node, MemLeakPeriod period); bool isInAllocationStage(MemoryLeakDetectorNode* node, unsigned char allocation_stage); private: MemoryLeakDetectorNode* head_; }; struct MemoryLeakDetectorTable { void clearAllAccounting(MemLeakPeriod period); void addNewNode(MemoryLeakDetectorNode* node); MemoryLeakDetectorNode* retrieveNode(char* memory); MemoryLeakDetectorNode* removeNode(char* memory); size_t getTotalLeaks(MemLeakPeriod period); MemoryLeakDetectorNode* getFirstLeak(MemLeakPeriod period); MemoryLeakDetectorNode* getFirstLeakForAllocationStage(unsigned char allocation_stage); MemoryLeakDetectorNode* getNextLeak(MemoryLeakDetectorNode* leak, MemLeakPeriod period); MemoryLeakDetectorNode* getNextLeakForAllocationStage(MemoryLeakDetectorNode* leak, unsigned char allocation_stage); private: unsigned long hash(char* memory); enum { hash_prime = MEMORY_LEAK_HASH_TABLE_SIZE }; MemoryLeakDetectorList table_[hash_prime]; }; class MemoryLeakDetector { public: MemoryLeakDetector(MemoryLeakFailure* reporter); virtual ~MemoryLeakDetector(); void enable(); void disable(); void disableAllocationTypeChecking(); void enableAllocationTypeChecking(); void startChecking(); void stopChecking(); unsigned char getCurrentAllocationStage() const; void increaseAllocationStage(); void decreaseAllocationStage(); const char* report(MemLeakPeriod period); void markCheckingPeriodLeaksAsNonCheckingPeriod(); size_t totalMemoryLeaks(MemLeakPeriod period); void clearAllAccounting(MemLeakPeriod period); char* allocMemory(TestMemoryAllocator* allocator, size_t size, bool allocatNodesSeperately = false); char* allocMemory(TestMemoryAllocator* allocator, size_t size, const char* file, size_t line, bool allocatNodesSeperately = false); void deallocMemory(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately = false); void deallocMemory(TestMemoryAllocator* allocator, void* memory, const char* file, size_t line, bool allocatNodesSeperately = false); void deallocAllMemoryInCurrentAllocationStage(); char* reallocMemory(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, size_t line, bool allocatNodesSeperately = false); void invalidateMemory(char* memory); void removeMemoryLeakInformationWithoutCheckingOrDeallocatingTheMemoryButDeallocatingTheAccountInformation(TestMemoryAllocator* allocator, void* memory, bool allocatNodesSeperately); enum { #ifdef CPPUTEST_DISABLE_MEM_CORRUPTION_CHECK memory_corruption_buffer_size = 0 #else memory_corruption_buffer_size = 3 #endif }; unsigned getCurrentAllocationNumber(); SimpleMutex* getMutex(void); private: MemoryLeakFailure* reporter_; MemLeakPeriod current_period_; MemoryLeakOutputStringBuffer outputBuffer_; MemoryLeakDetectorTable memoryTable_; bool doAllocationTypeChecking_; unsigned allocationSequenceNumber_; unsigned char current_allocation_stage_; SimpleMutex* mutex_; char* allocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, size_t size, const char* file, size_t line, bool allocatNodesSeperately); char* reallocateMemoryWithAccountingInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, size_t line, bool allocatNodesSeperately); MemoryLeakDetectorNode* createMemoryLeakAccountingInformation(TestMemoryAllocator* allocator, size_t size, char* memory, bool allocatNodesSeperately); bool validMemoryCorruptionInformation(char* memory); bool matchingAllocation(TestMemoryAllocator *alloc_allocator, TestMemoryAllocator *free_allocator); void storeLeakInformation(MemoryLeakDetectorNode * node, char *new_memory, size_t size, TestMemoryAllocator *allocator, const char *file, size_t line); void ConstructMemoryLeakReport(MemLeakPeriod period); size_t sizeOfMemoryWithCorruptionInfo(size_t size); MemoryLeakDetectorNode* getNodeFromMemoryPointer(char* memory, size_t size); char* reallocateMemoryAndLeakInformation(TestMemoryAllocator* allocator, char* memory, size_t size, const char* file, size_t line, bool allocatNodesSeperately); void addMemoryCorruptionInformation(char* memory); void checkForCorruption(MemoryLeakDetectorNode* node, const char* file, size_t line, TestMemoryAllocator* allocator, bool allocateNodesSeperately); }; #endif cpputest-4.0/include/Platforms/c2000/000755 000765 000024 00000000000 13663444566 020315 5ustar00basvoddestaff000000 000000 cpputest-4.0/include/Platforms/c2000/stdint.h000644 000765 000024 00000003454 13663176127 021774 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning, Bas Vodde * and Arnd R. Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifndef stdint_wrapper_h #define stdint_wrapper_h #include typedef unsigned char uint8_t; /* This will still compile to 16 bit */ #endif /* stdint_wrapper_h */cpputest-4.0/cmake/clang+mingw-win32.toolchain.cmake000644 000765 000024 00000000477 13663176127 023404 0ustar00basvoddestaff000000 000000 # Toolchain to use Clang compiler with MinGW binutils (e.g. linker) in Windows to generate 32-bits executables set(CMAKE_C_COMPILER clang) set(CMAKE_C_FLAGS "-target i686-w64-mingw32 -m32" CACHE STRING "" FORCE) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_FLAGS "-target i686-w64-mingw32 -m32" CACHE STRING "" FORCE)cpputest-4.0/cmake/clang+mingw-win64.toolchain.cmake000644 000765 000024 00000000471 13663176127 023403 0ustar00basvoddestaff000000 000000 # Toolchain to use Clang compiler with MinGW binutils (e.g. linker) in Windows to generate 64-bits executables set(CMAKE_C_COMPILER clang) set(CMAKE_C_FLAGS "-target x86_64-w64-mingw32" CACHE STRING "" FORCE) set(CMAKE_CXX_COMPILER clang++) set(CMAKE_CXX_FLAGS "-target x86_64-w64-mingw32" CACHE STRING "" FORCE)cpputest-4.0/cmake/Scripts/000755 000765 000024 00000000000 13663444566 016706 5ustar00basvoddestaff000000 000000 cpputest-4.0/cmake/Modules/000755 000765 000024 00000000000 13663444566 016667 5ustar00basvoddestaff000000 000000 cpputest-4.0/cmake/Modules/CppUTestBuildTimeDiscoverTests.cmake000644 000765 000024 00000001774 13663176127 025725 0ustar00basvoddestaff000000 000000 # Create target to discover tests function (cpputest_buildtime_discover_tests EXECUTABLE) # The path to the discover script depends on execution mode: # - internal (building CppUTest it self). # - imported (installed, imported, and executed by a client of the CppUTest lib) if (PROJECT_NAME STREQUAL "CppUTest") # internal - (path is relative to source dir) SET(DISCOVER_SCRIPT ${PROJECT_SOURCE_DIR}/cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake) else (PROJECT_NAME STREQUAL "CppUTest") # Installed (path is relative to install directory) SET(DISCOVER_SCRIPT ${CppUTest_DIR}/Scripts/CppUTestBuildTimeDiscoverTests.cmake) endif (PROJECT_NAME STREQUAL "CppUTest") add_custom_command (TARGET ${EXECUTABLE} POST_BUILD COMMAND ${CMAKE_COMMAND} -DTESTS_DETAILED:BOOL=${TESTS_DETAILED} -DEXECUTABLE=$ -P ${DISCOVER_SCRIPT} VERBATIM WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Discovering Tests in ${EXECUTABLE}" VERBATIM) endfunction () cpputest-4.0/cmake/Modules/CppUTestConfigurationOptions.cmake000644 000765 000024 00000007162 13663176127 025505 0ustar00basvoddestaff000000 000000 if (MSVC) set(CPP_PLATFORM VisualCpp) include_directories(${CppUTestRootDirectory}/include/Platforms/${CPP_PLATFORM}) option(STDC_WANT_SECURE_LIB "Use MSVC safe functions" ON) if(STDC_WANT_SECURE_LIB) ADD_DEFINITIONS(-DSTDC_WANT_SECURE_LIB) endif(STDC_WANT_SECURE_LIB) elseif (STD_C) if(NOT CPP_PLATFORM) set(CPP_PLATFORM Gcc) endif(NOT CPP_PLATFORM) else (MSVC) set(STD_CPP False) set(MEMORY_LEAK_DETECTION False) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -nostdinc") set(CPPUTEST_LD_FLAGS "${CPPUTEST_LD_FLAGS} -nostdinc") set(CPPUTEST_STD_C_LIB_DISABLED 1) set(CPP_PLATFORM GccNoStdC) endif (MSVC) include("${CppUTestRootDirectory}/cmake/Modules/CppUTestWarningFlags.cmake") if (NOT STD_CPP) set(CPPUTEST_STD_CPP_LIB_DISABLED 1) if (STD_C AND NOT MSVC) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -nostdinc++") endif (STD_C AND NOT MSVC) endif (NOT STD_CPP) if (MEMORY_LEAK_DETECTION) if (MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} /FI \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} /FI \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") else (MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorNewMacros.h\"") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} -include \"${CppUTestRootDirectory}/include/CppUTest/MemoryLeakDetectorMallocMacros.h\"") endif (MSVC) else (MEMORY_LEAK_DETECTION) set(CPPUTEST_MEM_LEAK_DETECTION_DISABLED 1) endif (MEMORY_LEAK_DETECTION) if (LONGLONG) set(CPPUTEST_USE_LONG_LONG 1) endif (LONGLONG) if (MAP_FILE AND NOT MSVC) set(CPPUTEST_LD_FLAGS "${CPPUTEST_LD_FLAGS} -Wl,-Map,$<.map.txt") endif (MAP_FILE AND NOT MSVC) if (COVERAGE AND NOT MSVC) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} --coverage") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} --coverage") set(CMAKE_BUILD_TYPE "Debug") find_program(GCOVR gcovr DOC "gcovr executable") if (NOT GCOVR) message(SEND_ERROR "gcovr not found") endif() add_custom_target(coverage ${GCOVR} --root ${PROJECT_SOURCE_DIR} --output "${CMAKE_BINARY_DIR}/coverage/coverage.html" WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} COMMENT "Generate coverage data" VERBATIM ) endif() if (CMAKE_CXX_STANDARD) set(CMAKE_CXX_EXTENSIONS OFF) elseif (C++11) find_package(CXX11 REQUIRED) set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} ${CXX11_FLAGS}") else() # No standard specified endif () set(GMOCK_HOME $ENV{GMOCK_HOME}) if (DEFINED ENV{GMOCK_HOME}) # GMock pulls in gtest. set(CPPUTEST_INCLUDE_GTEST_TESTS 1) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DGTEST_USE_OWN_TR1_TUPLE=1") include_directories(${GMOCK_HOME}/include ${GMOCK_HOME}/gtest ${GMOCK_HOME}/gtest/include) add_subdirectory(${GMOCK_HOME} "${CMAKE_CURRENT_BINARY_DIR}/gmock") set(CPPUTEST_C_WARNING_FLAGS "") set(CPPUTEST_CXX_WARNING_FLAGS "") endif (DEFINED ENV{GMOCK_HOME}) set(CPPUTEST_C_FLAGS "${CPPUTEST_C_FLAGS} ${CPPUTEST_C_WARNING_FLAGS}") set(CPPUTEST_CXX_FLAGS "${CPPUTEST_CXX_FLAGS} ${CPPUTEST_CXX_WARNING_FLAGS}") if (CPPUTEST_FLAGS) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CPPUTEST_C_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPPUTEST_CXX_FLAGS}") set(CMAKE_LD_FLAGS "${CMAKE_LD_FLAGS} ${CPPUTEST_LD_FLAGS}") endif (CPPUTEST_FLAGS) cpputest-4.0/cmake/Modules/CppUTestNormalizeTestOutputLocation.cmake000644 000765 000024 00000001057 13663176127 027031 0ustar00basvoddestaff000000 000000 # Override output properties to put test executable at specificied location function (cpputest_normalize_test_output_location TEST_TARGET) set_target_properties(${TEST_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) foreach(OUTPUT_CONFIG ${CMAKE_CONFIGURATION_TYPES}) string(TOUPPER ${OUTPUT_CONFIG} OUTPUT_CONFIG) set_target_properties(${TEST_TARGET} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUT_CONFIG} ${CMAKE_CURRENT_BINARY_DIR}) endforeach(OUTPUT_CONFIG) endfunction () cpputest-4.0/cmake/Modules/CppUTestWarningFlags.cmake000644 000765 000024 00000004465 13663176127 023707 0ustar00basvoddestaff000000 000000 if (MSVC) set(CPPUTEST_C_WARNING_FLAGS "/WX") set(CPPUTEST_CXX_WARNING_FLAGS "/WX /wd4290") else (MSVC) include(CheckCCompilerFlag) include(CheckCXXCompilerFlag) macro(check_and_append_c_warning_flags) foreach (flag ${ARGN}) check_c_compiler_flag("-${flag}" WARNING_C_FLAG_${flag}) if (WARNING_C_FLAG_${flag}) set(CPPUTEST_C_WARNING_FLAGS "${CPPUTEST_C_WARNING_FLAGS} -${flag}") endif (WARNING_C_FLAG_${flag}) endforeach (flag) endmacro(check_and_append_c_warning_flags) macro(check_and_append_cxx_warning_flags) foreach (flag ${ARGN}) string(REPLACE "++" "xx" WARNING_CXX_FLAG_VAR "WARNING_CXX_FLAG_${flag}") check_cxx_compiler_flag("-${flag}" ${WARNING_CXX_FLAG_VAR}) if (${WARNING_CXX_FLAG_VAR}) set(CPPUTEST_CXX_WARNING_FLAGS "${CPPUTEST_CXX_WARNING_FLAGS} -${flag}") endif (${WARNING_CXX_FLAG_VAR}) endforeach (flag) endmacro(check_and_append_cxx_warning_flags) if (NOT GMOCK AND NOT REAL_GTEST) list(APPEND WARNING_C_FLAGS Werror pedantic-errors) endif (NOT GMOCK AND NOT REAL_GTEST) set(WARNING_C_FLAGS Weverything Wall Wextra pedantic Wshadow Wswitch-default Wswitch-enum Wconversion Wsign-conversion Wno-padded Wno-disabled-macro-expansion Wno-reserved-id-macro Wno-keyword-macro Wno-long-long ) if (WERROR) list(APPEND WARNING_C_FLAGS Werror) endif (WERROR) set(WARNING_C_ONLY_FLAGS Wstrict-prototypes ) set(WARNING_CXX_FLAGS ${WARNING_C_FLAGS} Woverloaded-virtual Wno-global-constructors Wno-exit-time-destructors Wno-weak-vtables Wno-old-style-cast ) if (C++11 OR (DEFINED CMAKE_CXX_STANDARD AND NOT CMAKE_CXX_STANDARD EQUAL 98)) set(WARNING_CXX_FLAGS ${WARNING_CXX_FLAGS} Wno-c++98-compat Wno-c++98-compat-pedantic Wno-c++14-compat Wno-inconsistent-missing-destructor-override ) endif () check_and_append_c_warning_flags(${WARNING_C_FLAGS}) check_and_append_c_warning_flags(${WARNING_C_ONLY_FLAGS}) check_and_append_cxx_warning_flags(${WARNING_CXX_FLAGS}) endif (MSVC) cpputest-4.0/cmake/Modules/FindCXX11.cmake000644 000765 000024 00000003010 13663176127 021263 0ustar00basvoddestaff000000 000000 # - Finds if the compiler has C++11 support # This module can be used to detect compiler flags for using C++11, and checks # a small subset of the language. # # The following variables are set: # CXX11_FLAGS - flags to add to the CXX compiler for C++11 support # CXX11_FOUND - true if the compiler supports C++11 # # TODO: When compilers starts implementing the whole C++11, check the full set include(CheckCXXSourceCompiles) include(FindPackageHandleStandardArgs) set(CXX11_FLAG_CANDIDATES # Eveerything that automatically accepts C++11 " " # gcc, clang and Intel Linux "-std=c++11" # Intel windows "/Qstd=c++0x" "/Qstd=c++11" ) set(CXX11_TEST_SOURCE " #if defined(_MSC_VER) #if _MSC_VER < 1800 #error \"Can not compile with C++11\" #endif #elif __cplusplus < 201103L #error \"Can not compile with C++11\" #endif int main() {} ") foreach(FLAG ${CXX11_FLAG_CANDIDATES}) set(SAFE_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") set(CMAKE_REQUIRED_FLAGS "${FLAG}") unset(CXX11_FLAG_DETECTED CACHE) message(STATUS "Try C++11 flag = [${FLAG}]") check_cxx_source_compiles("${CXX11_TEST_SOURCE}" CXX11_FLAG_DETECTED) set(CMAKE_REQUIRED_FLAGS "${SAFE_CMAKE_REQUIRED_FLAGS}") if(CXX11_FLAG_DETECTED) set(CXX11_FLAGS_INTERNAL "${FLAG}") break() endif(CXX11_FLAG_DETECTED) endforeach(FLAG ${CXX11_FLAG_CANDIDATES}) set(CXX11_FLAGS "${CXX11_FLAGS_INTERNAL}") find_package_handle_standard_args(CXX11 DEFAULT_MSG CXX11_FLAGS) mark_as_advanced(CXX11_FLAGS) cpputest-4.0/cmake/Scripts/CppUTestBuildTimeDiscoverTests.cmake000644 000765 000024 00000007024 13663176127 025736 0ustar00basvoddestaff000000 000000 # Create CTest entries for EXECUTABLE in CTestTestfile.cmake # Overwrite CTestTestfile.cmake with update version. # Usage: # # This script is to be called from ../Modules/CppUTestBuildTimeDiscoverTests.cmake # # Notes on invocation and used variables: # ${CMAKE_COMMAND} -DTESTS_DETAILED:BOOL= -DEXECUTABLE= -P # # TESTS_DETAILED c.f. top-level CMakeLists.txt # FULLPATH-TO-EXECUTABLE - use $ or explicit # The overwritten CTestTestfile.cmake is located in ${CMAKE_CURRENT_BINARY_DIR} # # Steps to generate ADD_TEST() commands build time # - Read CTestTestfile.cmake # - Create update entries # - Remove duplicate entries # - Write new CTestTestfile.cmake ###################################################################### # helpers ###################################################################### function (buildtime_add_test) # Create ADD_TEST() command string # - Extract and remove testname from ARGV # - Add inner quotes to test arguments # - Add "ADD_TEST()", and first and last quote # Append result to CTESTTESTS list(GET ARGV 0 testname) list(REMOVE_AT ARGV 0) string (REPLACE ";" "\" \"" TEST_ARGS "${ARGV}") set(test_to_add "ADD_TEST(${testname} \"${TEST_ARGS}\")") list(APPEND CTESTTESTS ${test_to_add}) SET(CTESTTESTS ${CTESTTESTS} PARENT_SCOPE) endfunction() function (JOIN VALUES GLUE OUTPUT) string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}") set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE) endfunction() function (buildtime_discover_tests EXECUTABLE DISCOVER_ARG OUTPUT) execute_process(COMMAND ${EXECUTABLE} ${DISCOVER_ARG} OUTPUT_VARIABLE _TMP_OUTPUT ERROR_VARIABLE DISCOVER_ERR RESULT_VARIABLE DISCOVER_ERR) if(NOT ${DISCOVER_ERR} EQUAL 0) message(SEND_ERROR "Executable \"${EXECUTABLE} ${DISCOVER_ARG}\" failed with output:\n" "${DISCOVER_ERR}\n" "Please check that the excutable was added.") endif(NOT ${DISCOVER_ERR} EQUAL 0) separate_arguments(_TMP_OUTPUT) set(${OUTPUT} "${_TMP_OUTPUT}" PARENT_SCOPE) endfunction() ###################################################################### # Implementation ###################################################################### set(CTESTFNAME "${CMAKE_CURRENT_BINARY_DIR}/CTestTestfile.cmake") file(STRINGS ${CTESTFNAME} CTESTTESTS) get_filename_component(EXECUTABLE_SHORT_NAME ${EXECUTABLE} NAME_WE) if (TESTS_DETAILED) set(DISCOVER_ARG "-ln") buildtime_discover_tests("${EXECUTABLE}" "${DISCOVER_ARG}" TestList_GroupsAndNames) set(lastgroup "") foreach(testfullname ${TestList_GroupsAndNames}) string(REGEX MATCH "^([^/.]+)" groupname ${testfullname}) string(REGEX MATCH "([^/.]+)$" testname ${testfullname}) if (NOT ("${groupname}" STREQUAL "${lastgroup}")) message("TestGroup: ${groupname}:") set(lastgroup "${groupname}") endif (NOT ("${groupname}" STREQUAL "${lastgroup}")) message("... ${testname}") buildtime_add_test(${EXECUTABLE_SHORT_NAME}.${testfullname} ${EXECUTABLE} -sg ${groupname} -sn ${testname}) endforeach() else (TESTS_DETAILED) set(DISCOVER_ARG "-lg") buildtime_discover_tests("${EXECUTABLE}" "${DISCOVER_ARG}" TestList_Groups) foreach(group ${TestList_Groups}) message("TestGroup: ${group}") buildtime_add_test(${EXECUTABLE_SHORT_NAME}.${group} "${EXECUTABLE}" -sg ${group}) endforeach() endif (TESTS_DETAILED) # create separate CTest test for each CppUTestTests test list(REMOVE_DUPLICATES CTESTTESTS) JOIN("${CTESTTESTS}" "\n" CTESTTESTS) file(WRITE ${CTESTFNAME} "${CTESTTESTS}\n") cpputest-4.0/docker/Dockerfile.dos000644 000765 000024 00000000320 13663176127 020212 0ustar00basvoddestaff000000 000000 FROM ubuntu RUN apt-get -qq update && apt-get -qq install -y --no-install-recommends dosbox make openssl ca-certificates git WORKDIR /cpputest_build CMD BUILD=make_dos /cpputest/scripts/travis_ci_build.sh cpputest-4.0/docker/Dockerfile.ubuntu000644 000765 000024 00000000344 13663176127 020755 0ustar00basvoddestaff000000 000000 FROM ubuntu RUN apt-get update && \ apt-get install -y -q --no-install-recommends file git gcc g++ make automake autoconf libtool WORKDIR /cpputest_build CMD autoreconf -i ../cpputest && ../cpputest/configure && make tdd cpputest-4.0/platforms/iar/000755 000765 000024 00000000000 13663444566 016761 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/Dos/000755 000765 000024 00000000000 13663444566 016733 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/IAR-STR912.zip000644 000765 000024 00002475166 13663176127 020267 0ustar00basvoddestaff000000 000000 PK xºZ< IAR-STR912/UT ”LjKʈKux êëPKxºZ6}ÔxóLwÈ>M=æûàzÀ'STB{&j3ßîXölÈK³7›Ox€bk(‹šBkUÁ¡ž5Ưæ€Û<¸QvGN®ùíén«²˜ˆ•ÄNìú·8¢¢\©K…ž°\Ü8Ūqz¥å3}A"þ‚/=‡%ì>6³ œààæZøay®2‡f5ZPèAœ[!’kšÂ10x«áDVŠ“u~otµúÛ|*Ïñúââu­ ÃxÕ%ýÓ@z{¥ìî, ¡Úx¤E ¬’°+Ýœ’¸:;Ћ[½øP¯íq³n8Vƒþ“,Ÿ/?œê¯þ¾¦·6æ[´ÒrÚIê3uê ÇŒ&ú^™~!þ½èÈÆ;²y½2à$½ÆûžÞ^WÅcz­‘ÐèÌëÅbS(Ån*§±_„m>ëÞ~Ð?…ÝðÑ‚ës]λð ä(þ.oûØšÀ§àž*¼ƒêEýãWu&èŒåD’óþqîéøi¬M–í}šJ¾nt»¬‹­-·Ý;i¸)EbKå"Ô·Ý#ÚŠæò!ñÖÊPK vºZ<IAR-STR912/startup/UT LjKʈKux êëPK yºZ<IAR-STR912/startup/.svn/UT •LjKʈKux êëPKvºZ< 9Á8IAR-STR912/startup/.svn/entriesUT LjKLjKux êë­ŽËNÃ0E÷¿’xü;ÎŽ%ÛÒU7ÈN&%¥u"Û©ø| THìpVW£«;Gc㜘–’=—²æžóa]·B¹´ùÛ¼li iIGj#^oiYÊW‰—´Å¾ž}©¥Kæ÷»æq¿sBò\|*Ûú»aV‘®ÝHµ²Gè…i-Zs`J";ù åc¢çxdß±S4”ª#ïi”ÐtÆ“u¨»cN¼>]i¨NlšÏÄ>ßÖ2ÈFÚ=Ø^¸^ë>8°N'«Hº µWh¼²H4‚ÔÁ¸áOÎ7U7·9Î?vÍ0c'½³:ÒèHe@­ÿÃÍ¡Uí PK vºZ<"IAR-STR912/startup/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/startup/.svn/text-base/UT LjKʈKux êëPKvºZ<:ùè TØ5IAR-STR912/startup/.svn/text-base/91x_vect.s.svn-baseUT LjKLjKux êëímsÚ¸€?ofòt§_Ú%@zw{ÓÙÆ6Á3¼Õ6¡™N/ã€ÓxJ +›6{ïí¿’ŒßdÉ€ b;°ŽŽuŽt½Ø²?¾e|Àkù ûƒk]»l› Q«ý ³ëLàÜžÙÎ]gâVÖÓ“oA˙٠gÝÛ ú\€ÕÆ?PæªGd¤¥7‡ ù¹]YÒb1s&–ïÌ]`ÚÖ=‘V,ßFj¡çÍó–öKƒÚ?ÏêÎHñ.À• =œ§^­YloÑÀ¼s¼ xK)ñçÀqß±fÎlàßÙÀ~˜ØAËMÿDt1?ؘ9ô*Di²]߆gÐö—ÐE¿Ïnáü>ÖçñÝ!3Tú*Ùîçôä-h;*çßø{­~†œ†<ö!å±s’†8íTZ#L{Ÿõt}•Æ­…m[ó˜m tÕP{&0ú-s$é*µ5¹ 4´ú:¸jŠÔ“UÐïu®¤u ™(OÿJS´Þ%‡†Ù諸FšÙÆ:å>IÐz({W2µ~èꥤ“£è„šŽ³+CÙ4è늪“S¡´.0ûÀ®T`j]µ $k”cØ1+8n4Yï«U6õ~O“ `´¥Nôú&hª ­vÐѤfG%*¥Þ5P4IWй‚oX#J’û=Cý4D–kR(RWºT#ðÙH—+;Ùºf`Zz¿K‡4˜(;Ñׯ9-ò¡ÔSΓÀÐPAWRTмNx åtÐÎ \Ø3%­§*È ]ENBÿб*v')dÚ“Ûoíg§'§'8 ŒÕY«Žë£(½@EV/ô~ß|ÝxóÛo >vÞÀ9NO®H$KÓ)´=/ŽKäkü§öПÚy €àJ“A ¬UhC!fGª”FÅr¼¿)r }ArŽÞÓmÜtü,8"ujHÏÏ;Û¸A’ržíW0¿ð÷©ãY73{zzÒ*Pô>RÔJ)ji”"üßs„wê£Ý/æƒyIÑá{ºr[õ—Ť^½«=ÜÞÖ¾>Sµ¾­¥;!õ, ^à±{Ô+gWêV«t·a.ô}bÍЬs51ESÑxÖƒɺ›=%ë @sËÄ÷¸s×&)ý¥ŸLŠS¶mqÒºÕÉŒaÿ™Á ú÷ê}\KÃůlâ îÌq¿GSþjœÕì¶¼Å?*ÿ…µwð¤âÎjX?lä)üœÃïÞšØ`1[zD×d !r #ãºç´•p=ƒã[ç/à¸þœ¨Á®F3ÛÉ÷¸8³)°Vù“5ýÂiȾdÚØv§QúÍÊš=}Zî䯠&2V‰“j.â í(Ä'I§,&¿þýjñ•ßq=.ƒFt;ŸÍæ?÷[µZ-ðrJ/;¸Áå¯îhé#A½ëa5¼?cà¥Pd…üe®v¤é GÇ£204.”DÇ#™ 2áq‚ÁH:†bZ£bùVZ’®ÝP’n‰ dî´›‹?]IÖûÏÃâík]kçñÕž &yŽæÁÏÁû=Ɇ¾„b<Ì3¯ /¸±oçÐðŽ—í:ËÍ.qzÌJ„šo6˜ßF õÈ©QmÛÕÝö((b?UŽ U¯ ÿ5âV›Â?J~‡“I°Å Ý€ûùÔŽ;ª]ÝÀ`½â-<k0ÂúÇDZX¯rÌ©ÿJgƲjOé>Û˜$ÓjQðãVð„† ƒœ©¶K“¾¯M?¾é’k‰X‰ã.+æ"Q{²Ä¢k·îUùvÞ¾Óå7ñto5ŠÈ‘g1¦¹m«k["3yðn+°žÖå®òÎEØ6Ç…#Š´xnÑâqFûY/ ìjn‘|¬=ÃX†*’5Îöa©'"‰Zf4”ì|ÐxÖA;(ÎïSŠ;“ú’} ò)a Aô#;£à_Q ç‰ÇÌ.@<½È䯦|DM6B ÆVÎÚú\ƒÙ誻‹›äP|íˆA™S:«R…BÒ¾}÷cú‘ha°.š†í?‘¶fËO䬮œ±ßÖN5˜¶sötríª Vç²s`{"<3{Éê1+V»+ëÆ£ ý¨&VsðâÞnÆ-°f€ÑÙ«Io?ÔPŠå?6Þî,|³]¢z›®æ«Ækݤî!Ùaf×iÖA¬â€Ã¿R•½Q]–/ô#öVâaä±oã Ã.•ºfÌ¥ò’¦›Ñv‘¼°³¿x›â–º¿XËÞæ°v¬“\b,uLÑvƬå\‰«Z±f`%4l!ÂbeÙHsà_q ¡‘®ÕªÇ„,zT^Õê-ª`?5 ¼6‚µ=¬ÈvÉEbr‡{hcbqŽ\d¢‹ÙÈÁÏêÒ"{ÎxÍÎç@‚gyÞø<‰«Úɳ3¹lÄ)iÆkJüD·Ù&½†ËymulÊm±ÕàO½•ø#A·­À¤´:8™ÙÄI‰zÖ+_`í+ÃI(ë©q~Øñ2ú¶â:àZ³8%ÒË ÇqáJ&¶& I0¸»Yé¦ä2Fåe¥àÖþ¸Å¾3X`K`‹¼,l±î ]›\DIùᕵUðküân]ã…0a™›ÖŸ‚0ó0f „•aì½Uaa¼f!Œ±§fm‚aåXÆRÁ¯ýñ‹·óSàKà‹À|Ñ»ž‚¯úAà«.ðU|1wð | |ñ˜ƒ/zæSðÕ8|5¾Êƒ/æÓ¾¾xÌÁ½Cü)ø:?| |•_Ì'Ÿ| |ñ˜¹ †ñ —µùE””`Y[ÁöG0îCÇÂÂx!ÌAXæSOAXç0Ö+ÂØOEã…0óöÕÌðÖ¿U–_´^{¼ƒ•ýÀV..^ø²ÐÅx4çÚìÂ:ʯŒ¥‚^û£ïqÒ__¼fî/Î<6xýýÅ]©üð¢íìÚ»8Oºèèâ…/ ]Ù癯.¤¢üè¢íèÚº8/áèèâ…/ ]™-¬M®®\~pQV ní[ì— l lñ‚—¹×1óú—õw:*.ÚNA®ý‘‹óÞ2..^ø2o’`¼—jý›$°’òã+këQ, Ÿz&|È›cYr_`ýkt\RÈ /dSåUãCÙÉHWs àÜìÜ#; Zi^Aƒ –¶.H¿ñ~P¢ä0H„;B‘ôuAzÚ/‚ô‚ôo%JƒôG¸yöIߤ§ý²eÒ×é‹ôŒ7}¯ z¬£üœÏX*0ÿ1OÕr_P^P~{¥=LÊo¼pƒuåŲÍ1P^¬ÚdÜ"(Ü”7ŒÁÆcy¬£ü”ÏX*(ÿ)OÕòJÀ¼ÀüöJ{˜˜ßx0uæÅ`þ0Oæææó+eSÊ#凸QÌ I½8M`¹ Ñ%ší[ {Î5z iÑ(£ ±"WÊ« ‚a/CÇøã ñnglÌÿ¹W¼$iß‹9EÿhµÈ?ÞWü£U<<ÙvžfþðAÏúR»]¶îè¦ ŽÕqod[‡›®¡vÁp cÙp544ÙTu°ÌÞg¾²‹<Öµ¡æ¨CǵúºíÀáv9¨jñ'†‰ü}Ù5,lýJ¶ù]Ѱ‰_ª®ƒD`Ùšnó±ðY\ ùZ×èë‡ ;bÍ"‚3ì¹ Š†j[zOW]Û2 Õ§+÷z`Z.(:tõž=CVz:Ç”ÍÏ 6R7p0ñ‰Câ3Õ2ýÓ•7ähr_¾Ò…4Ü)IBP{BsÛpH‰Žmõ¹íÁEvØgˆ†+ì(›Ú‘Ð †Ž}YÓAù\²rM{ef4]Ù0u u²u4þÃ{&ŠE&åbV­ùó}ûèÍkÄ9Å ²Â²\ˆ5ª†0fo9Kyˆ—!D"DD‰Ìf.ðg‘ÿµI„1qÁÂqÞQ”€h÷Ñ2.Ühbòé!ÿDh“h6‹VĨ±I2’àí˜ôz#•FÁõ߆aÂèx çÍb ËØgðO¸8ƒ~÷Š‹1‹‡ B¬¿Ú xáWKú.ñXÂo4ùs /Ò§$íª¹@B¼±Kž vËÙ`Ç»Ù]\búxjÇ^<>T@6Oh"x2¸ pI;ž8âå"…=þ}˜Ì¼»„bëÀ±‚ë#ÃhèØ¥Qp ñwé{SÊ(äÖ43ŠÍµ­Œƒ|=ÁqF +n=Áû\HS«'Pò!>;õ´¾÷Í fÂ#Eb‘cÌw'ÜLèÞ,&c#%H«&_ÜK³š² ²0`À“©ŽŸóŒôæugÊIÒ© …+(â/›m×¾øuÉ‚ùÁ$ðËóNtøl¤ÈŽ>’ÇcL¾IuÐSU’0 ÑТxèŠ9¡àU{UÓµGVÇq«¼Rv!¯pe5 ±p›aŽ¿Ã$‰QÄšLPƒëƒZçaœÄ¡E(“àn‹b¦ çÓqewèdh[Xç¤Ï=òÍi=¤ËìZÕ– jd:>YãTÅ*र:%¾ñà”à³]SrR˜•@ÊS’±*޽KjΪDQ*b˜ü`…¼ÁÜ€¨ 3 nw¡(ЬíDQ+rT|kKž Ô&RSÚ’gšZ±N yGî«kVœ¿ƒ¿w‘ü¶ˆ£»Ø›xQû303-ú˜ú±ÔÙ {\|pDÙ@µ2ÆŸ®õã¥&»ò¥iÙ–åîï×Ñb”y2-ÆÛ'Óbð®¥}õªŽsÁ“‘Õ§Âaàc¸ÄÒKÏ©ZkªÁPé*ŒFê «ÿîê¶ ¢=*îÞq *¹P Òå:w÷4‘M~>˜ì{j„I*Âyõ[Î`Z  }gþûÓ$ÂŽ7@²xé‹ÌŽ5™çû´¨TË£%&ù E§•÷•m£a£5‰£9ú>O0Øàaò[y °ü¢î‘Š”ý6È{Ê ÆÏþ"B§2ìt°üÕF”±³Xú/B¬4ì—P.?•ådÂblú©L:ÅZõú×2I­9nsެ¤ËªbÚƒð1UN dš¦‹Ë££ÕjuèÅóC?š-Æ“äHÓ ©yv".ÎÎô‘sˆ7áW輎¶(²ÍÓH ˆñå7ñ…ïw ›ycô¡æé:å6©LÄš_*`,[8pœA¼Åâgm¢vnÑ›8Hs›òªª«¬%QíG$Ü›¢”Ù:×Úlî- 3ó’i^Á{)xYZØ(å+OxM߀|¦yÝŧU ¢çù†nñn(,Ï¿EWíõmŸáúÞÌòk²†÷È@5à–Û »*5½²ùQäápÚl}\Û”jŽçým¥Pø’ãìµþs²ïCW†Ok#Ðb™`·D;®¢Ö‹fnÈÆEk‘hçD9 nÊ#=j¦¼2Ô*/?¾ì¶Åk«ÇÌP:ëµE1¼ Æ\y‹eZ {Ë|o‰5Õ„uƒÛ"Þb L ñÖéeë õƒ”.ðîv±¥vó¼3[ìªCÈ·6Ø´R’ÇÔU+>I@[^@; û›öUÑnÙ2=‡Ut>a”f ”°ÀË#H¦ÄÅÙG°å~ƒh57@sÕ>öÇÀx‚<à›ŽåflËhé°ÝtÕP63gn^4klÖ$›Qˆ­4*_x¼ùÉ‘Œ‘µ:bãÁ/7†¿ª …iBt“v÷´@.ÎúÓuy¼bÆòSáM¥ Göõ¢hñÀÌ–ne‡‰°ÚÜøË0 f\8¬{8Áå ›š“ E¯·ÜK#)ºØ -‰±!â£w^ ,…©6ü-kÿ³Ù£6Ûp½6ê5ãzñÒ™Ê ¤ø`ãgæâö ç¢1¾*J«£O,nò5Q ÷Ø·rª&Ì‹.—Ðy¢ojâÈY¶¹ÖÖVKsº™ñ,~Žâó]ÁAÉÞÅoVļbñz Ô!+8j J¯QôÌ®úÒo~VÁl¶#—QÿýÇ/RúEÏÊ»¯ô®e_U«4ÝÔêOåŸóS'¡ tŒž.~º‘ÿýPKvºZ<@ö‹j#IAR-STR912/startup/.svn/all-wcpropsUT LjKLjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03åÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ô‹K‹JJ ¸\ý\¸, +âËR“Kôй¼ YjnF¹¥úHÂìÏÌˤ¯ýP AöPK vºZ<IAR-STR912/startup/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/startup/.svn/tmp/UT LjKʈKux êëPK vºZ<&IAR-STR912/startup/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/startup/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/startup/.svn/tmp/props/UT LjKʈKux êëPKvºZ<:ùè TØIAR-STR912/startup/91x_vect.sUT LjKLjKux êëímsÚ¸€?ofòt§_Ú%@zw{ÓÙÆ6Á3¼Õ6¡™N/ã€ÓxJ +›6{ïí¿’ŒßdÉ€ b;°ŽŽuŽt½Ø²?¾e|Àkù ûƒk]»l› Q«ý ³ëLàÜžÙÎ]gâVÖÓ“oA˙٠gÝÛ ú\€ÕÆ?PæªGd¤¥7‡ ù¹]YÒb1s&–ïÌ]`ÚÖ=‘V,ßFj¡çÍó–öKƒÚ?ÏêÎHñ.À• =œ§^­YloÑÀ¼s¼ xK)ñçÀqß±fÎlàßÙÀ~˜ØAËMÿDt1?ؘ9ô*Di²]߆gÐö—ÐE¿Ïnáü>ÖçñÝ!3Tú*Ùîçôä-h;*çßø{­~†œ†<ö!å±s’†8íTZ#L{Ÿõt}•Æ­…m[ó˜m tÕP{&0ú-s$é*µ5¹ 4´ú:¸jŠÔ“UÐïu®¤u ™(OÿJS´Þ%‡†Ù諸FšÙÆ:å>IÐz({W2µ~èꥤ“£è„šŽ³+CÙ4è늪“S¡´.0ûÀ®T`j]µ $k”cØ1+8n4Yï«U6õ~O“ `´¥Nôú&hª ­vÐѤfG%*¥Þ5P4IWй‚oX#J’û=Cý4D–kR(RWºT#ðÙH—+;Ùºf`Zz¿K‡4˜(;Ñׯ9-ò¡ÔSΓÀÐPAWRTмNx åtÐÎ \Ø3%­§*È ]ENBÿб*v')dÚ“Ûoíg§'§'8 ŒÕY«Žë£(½@EV/ô~ß|ÝxóÛo >vÞÀ9NO®H$KÓ)´=/ŽKäkü§öПÚy €àJ“A ¬UhC!fGª”FÅr¼¿)r }ArŽÞÓmÜtü,8"ujHÏÏ;Û¸A’ržíW0¿ð÷©ãY73{zzÒ*Pô>RÔJ)ji”"üßs„wê£Ý/æƒyIÑá{ºr[õ—Ť^½«=ÜÞÖ¾>Sµ¾­¥;!õ, ^à±{Ô+gWêV«t·a.ô}bÍЬs51ESÑxÖƒɺ›=%ë @sËÄ÷¸s×&)ý¥ŸLŠS¶mqÒºÕÉŒaÿ™Á ú÷ê}\KÃůlâ îÌq¿GSþjœÕì¶¼Å?*ÿ…µwð¤âÎjX?lä)üœÃïÞšØ`1[zD×d !r #ãºç´•p=ƒã[ç/à¸þœ¨Á®F3ÛÉ÷¸8³)°Vù“5ýÂiȾdÚØv§QúÍÊš=}Zî䯠&2V‰“j.â í(Ä'I§,&¿þýjñ•ßq=.ƒFt;ŸÍæ?÷[µZ-ðrJ/;¸Áå¯îhé#A½ëa5¼?cà¥Pd…üe®v¤é GÇ£204.”DÇ#™ 2áq‚ÁH:†bZ£bùVZ’®ÝP’n‰ dî´›‹?]IÖûÏÃâík]kçñÕž &yŽæÁÏÁû=Ɇ¾„b<Ì3¯ /¸±oçÐðŽ—í:ËÍ.qzÌJ„šo6˜ßF õÈ©QmÛÕÝö((b?UŽ U¯ ÿ5âV›Â?J~‡“I°Å Ý€ûùÔŽ;ª]ÝÀ`½â-<k0ÂúÇDZX¯rÌ©ÿJgƲjOé>Û˜$ÓjQðãVð„† ƒœ©¶K“¾¯M?¾é’k‰X‰ã.+æ"Q{²Ä¢k·îUùvÞ¾Óå7ñto5ŠÈ‘g1¦¹m«k["3yðn+°žÖå®òÎEØ6Ç…#Š´xnÑâqFûY/ ìjn‘|¬=ÃX†*’5Îöa©'"‰Zf4”ì|ÐxÖA;(ÎïSŠ;“ú’} ò)a Aô#;£à_Q ç‰ÇÌ.@<½È䯦|DM6B ÆVÎÚú\ƒÙ誻‹›äP|íˆA™S:«R…BÒ¾}÷cú‘ha°.š†í?‘¶fËO䬮œ±ßÖN5˜¶sötríª Vç²s`{"<3{Éê1+V»+ëÆ£ ý¨&VsðâÞnÆ-°f€ÑÙ«Io?ÔPŠå?6Þî,|³]¢z›®æ«Ækݤî!Ùaf×iÖA¬â€Ã¿R•½Q]–/ô#öVâaä±oã Ã.•ºfÌ¥ò’¦›Ñv‘¼°³¿x›â–º¿XËÞæ°v¬“\b,uLÑvƬå\‰«Z±f`%4l!ÂbeÙHsà_q ¡‘®ÕªÇ„,zT^Õê-ª`?5 ¼6‚µ=¬ÈvÉEbr‡{hcbqŽ\d¢‹ÙÈÁÏêÒ"{ÎxÍÎç@‚gyÞø<‰«Úɳ3¹lÄ)iÆkJüD·Ù&½†ËymulÊm±ÕàO½•ø#A·­À¤´:8™ÙÄI‰zÖ+_`í+ÃI(ë©q~Øñ2ú¶â:àZ³8%ÒË ÇqáJ&¶& I0¸»Yé¦ä2Fåe¥àÖþ¸Å¾3X`K`‹¼,l±î ]›\DIùᕵUðküân]ã…0a™›ÖŸ‚0ó0f „•aì½Uaa¼f!Œ±§fm‚aåXÆRÁ¯ýñ‹·óSàKà‹À|Ñ»ž‚¯úAà«.ðU|1wð | |ñ˜ƒ/zæSðÕ8|5¾Êƒ/æÓ¾¾xÌÁ½Cü)ø:?| |•_Ì'Ÿ| |ñ˜¹ †ñ —µùE””`Y[ÁöG0îCÇÂÂx!ÌAXæSOAXç0Ö+ÂØOEã…0óöÕÌðÖ¿U–_´^{¼ƒ•ýÀV..^ø²ÐÅx4çÚìÂ:ʯŒ¥‚^û£ïqÒ__¼fî/Î<6xýýÅ]©üð¢íìÚ»8Oºèèâ…/ ]Ù癯.¤¢üè¢íèÚº8/áèèâ…/ ]™-¬M®®\~pQV ní[ì— l lñ‚—¹×1óú—õw:*.ÚNA®ý‘‹óÞ2..^ø2o’`¼—jý›$°’òã+këQ, Ÿz&|È›cYr_`ýkt\RÈ /dSåUãCÙÉHWs àÜìÜ#; Zi^Aƒ –¶.H¿ñ~P¢ä0H„;B‘ôuAzÚ/‚ô‚ôo%JƒôG¸yöIߤ§ý²eÒ×é‹ôŒ7}¯ z¬£üœÏX*0ÿ1OÕr_P^P~{¥=LÊo¼pƒuåŲÍ1P^¬ÚdÜ"(Ü”7ŒÁÆcy¬£ü”ÏX*(ÿ)OÕòJÀ¼ÀüöJ{˜˜ßx0uæÅ`þ0Oæææó+eSÊ#凸QÌ I½8M`¹ Ñ%ší[ {Î5z iÑ(£ ±"WÊ« ‚a/CÇøã ñnglÌÿ¹W¼$iß‹9EÿhµÈ?ÞWü£U<<ÙvžfþðAÏúR»]¶îè¦ ŽÕqod[‡›®¡vÁp cÙp544ÙTu°ÌÞg¾²‹<Öµ¡æ¨CǵúºíÀáv9¨jñ'†‰ü}Ù5,lýJ¶ù]Ѱ‰_ª®ƒD`Ùšnó±ðY\ ùZ×èë‡ ;bÍ"‚3ì¹ Š†j[zOW]Û2 Õ§+÷z`Z.(:tõž=CVz:Ç”ÍÏ 6R7p0ñ‰Câ3Õ2ýÓ•7ähr_¾Ò…4Ü)IBP{BsÛpH‰Žmõ¹íÁEvØgˆ†+ì(›Ú‘Ð †Ž}YÓAù\²rM{ef4]Ù0u u²u4þÃ{&ŠE&åbV­ùó}ûèÍkÄ9Å ²Â²\ˆ5ª†0fo9Kyˆ—!D"DD‰Ìf.ðg‘ÿµI„1qÁÂqÞQ”€h÷Ñ2.Ühbòé!ÿDh“h6‹VĨ±I2’àí˜ôz#•FÁõ߆aÂèx çÍb ËØgðO¸8ƒ~÷Š‹1‹‡ B¬¿Ú xáWKú.ñXÂo4ùs /Ò§$íª¹@B¼±Kž vËÙ`Ç»Ù]\búxjÇ^<>T@6Oh"x2¸ pI;ž8âå"…=þ}˜Ì¼»„bëÀ±‚ë#ÃhèØ¥Qp ñwé{SÊ(äÖ43ŠÍµ­Œƒ|=ÁqF +n=Áû\HS«'Pò!>;õ´¾÷Í fÂ#Eb‘cÌw'ÜLèÞ,&c#%H«&_ÜK³š² ²0`À“©ŽŸóŒôæugÊIÒ© …+(â/›m×¾øuÉ‚ùÁ$ðËóNtøl¤ÈŽ>’ÇcL¾IuÐSU’0 ÑТxèŠ9¡àU{UÓµGVÇq«¼Rv!¯pe5 ±p›aŽ¿Ã$‰QÄšLPƒëƒZçaœÄ¡E(“àn‹b¦ çÓqewèdh[Xç¤Ï=òÍi=¤ËìZÕ– jd:>YãTÅ*र:%¾ñà”à³]SrR˜•@ÊS’±*޽KjΪDQ*b˜ü`…¼ÁÜ€¨ 3 nw¡(ЬíDQ+rT|kKž Ô&RSÚ’gšZ±N yGî«kVœ¿ƒ¿w‘ü¶ˆ£»Ø›xQû303-ú˜ú±ÔÙ {\|pDÙ@µ2ÆŸ®õã¥&»ò¥iÙ–åîï×Ñb”y2-ÆÛ'Óbð®¥}õªŽsÁ“‘Õ§Âaàc¸ÄÒKÏ©ZkªÁPé*ŒFê «ÿîê¶ ¢=*îÞq *¹P Òå:w÷4‘M~>˜ì{j„I*Âyõ[Î`Z  }gþûÓ$ÂŽ7@²xé‹ÌŽ5™çû´¨TË£%&ù E§•÷•m£a£5‰£9ú>O0Øàaò[y °ü¢î‘Š”ý6È{Ê ÆÏþ"B§2ìt°üÕF”±³Xú/B¬4ì—P.?•ådÂblú©L:ÅZõú×2I­9nsެ¤ËªbÚƒð1UN dš¦‹Ë££ÕjuèÅóC?š-Æ“äHÓ ©yv".ÎÎô‘sˆ7áW輎¶(²ÍÓH ˆñå7ñ…ïw ›ycô¡æé:å6©LÄš_*`,[8pœA¼Åâgm¢vnÑ›8Hs›òªª«¬%QíG$Ü›¢”Ù:×Úlî- 3ó’i^Á{)xYZØ(å+OxM߀|¦yÝŧU ¢çù†nñn(,Ï¿EWíõmŸáúÞÌòk²†÷È@5à–Û »*5½²ùQäápÚl}\Û”jŽçým¥Pø’ãìµþs²ïCW†Ok#Ðb™`·D;®¢Ö‹fnÈÆEk‘hçD9 nÊ#=j¦¼2Ô*/?¾ì¶Åk«ÇÌP:ëµE1¼ Æ\y‹eZ {Ë|o‰5Õ„uƒÛ"Þb L ñÖéeë õƒ”.ðîv±¥vó¼3[ìªCÈ·6Ø´R’ÇÔU+>I@[^@; û›öUÑnÙ2=‡Ut>a”f ”°ÀË#H¦ÄÅÙG°å~ƒh57@sÕ>öÇÀx‚<à›ŽåflËhé°ÝtÕP63gn^4klÖ$›Qˆ­4*_x¼ùÉ‘Œ‘µ:bãÁ/7†¿ª …iBt“v÷´@.ÎúÓuy¼bÆòSáM¥ Göõ¢hñÀÌ–ne‡‰°ÚÜøË0 f\8¬{8Áå ›š“ E¯·ÜK#)ºØ -‰±!â£w^ ,…©6ü-kÿ³Ù£6Ûp½6ê5ãzñÒ™Ê ¤ø`ãgæâö ç¢1¾*J«£O,nò5Q ÷Ø·rª&Ì‹.—Ðy¢ojâÈY¶¹ÖÖVKsº™ñ,~Žâó]ÁAÉÞÅoVļbñz Ô!+8j J¯QôÌ®úÒo~VÁl¶#—QÿýÇ/RúEÏÊ»¯ô®e_U«4ÝÔêOåŸóS'¡ tŒž.~º‘ÿýPKxºZ<–ß‚SY¯E#IAR-STR912/CppUTest-STR912-Main.ewdUT ”LjK”LjKux êëí\ío›8ÿ>iÿCÕ݇;iMÒöz뤬»’ŽŽ”n“"M8Ä+ØÈ˜¶¹¿þÌK^×°\ˆÍV5•ǿ籟wC›ïÿàÒüîð¸Ö8<€Ø!.ÂÞ»C‘£óó³·GLJï/^¾xù¢Rò :Œ7šcäÛì§'Íúr3½ïuÇçÍúÝZg~û`vM°Nà'®´—ú=ÊBz‡„luÌ9#c¶ÆIÆ9 &ƒe'KƒÕ¿­`üvÀú”80Їa(7€r. æ©Q¢ƒ¯:¹ÛÑQVmR‰µ•¾V` µÑhTs‡'XnID•¤¬ëÄ*iiÎr”ä–}Ó¸ÊK' §_šO¼òÁØžLùnvèRm[ó¦c> [´¿é,B‘¬Â "ÙW”+xm ÁmHf&pQÁª•.<¤p*„\\á¶ ±Èÿ¸e-g7]×Z¦iˆ‰‚å& r±]¯Z u\ÄÚÒµ„ãoòìƒÕêå®7¿¸c^›öž±JWÖ+á[+„° NyzRÞÖ&0ÜeŽT×LÐ?|2!ú`*´ú+!žJÒ0bøâÅD%W>ÇëÅ>C6 ¸·§(–°’l6s]j™½¬ð&6äÐåq—­œ©C챉p Ä+ˆ$©~Ž™J~Ê^QÅ´<ƒ«½¹ü+ÉÅ+¦ª)€9“Ôˆ‰äv4À.˲>i2`TîÝeàô)C~”¥™ÿÈ€éjBaRe–™ÕfaÜ´6ÁÜ^»³Á Ò1p ày52¸l‹Tð~_ÎZj 7mAog˜Ïö<ÉJàòvÉXz·Hïi][՞ʦŒ8ZИ¹è!ôY£¼þçHR’­K`ºµ›€öZŠÙÒ. 1¥óSÙ"úG7]åD„ þØ>íW!**?¨„/•”ìrkœ¿y^ýÆV{ZyÀ¼ª"òéÇ ._ÜüsOTT[èM,ΣÞP¼Ÿ<ÀqÝ–ë<öÖxh4Îɧ´³ì‡äº]}ðyo+HÙ™Î|ee;AVû›O%îOj™•Q‹ž›~õêÕ£¬Žþ….o—ÞDS5Yû£s¤dTþvÇï¶Ÿ –eaž –;Ã.Xr˜A;vOHÕ»é–-l;ý~Æm·¹´?h¦Úo™ö—§1ŸŠ=AÔíʦոê¾$ý`%6I“ãÙ  }?ö^ç0½°ÙìËÃ%/Yu}à%K6?_P½†¿;=6ÂÓŸ†&Œ +ûÎ ªÃê îÜÂùWOOŸÜsAÎüÄ´ «J‚ì ÏjÝϳãO#E±bXGš6;}l)V8ORçSn鸕#xN”B’7“¸¹\il;QÇ"¨2(Cé—œåÚ@EŸ~Ÿ›ÜÅY¥³b1àÜfßÕÒ1 ’íÜÙq´äñÍšSkÖ×ÿc ÿÙü®$ÿPKxºZ<âU|×IAR-STR912/main.cppUT ”LjK”LjKux êëmQÁjÃ0 ½ò»8¥ëØŽ ;Œ°Ã £ct§u “8‹!Q‚cg…’Ÿì.Ť½È¼'=éñ|£0¯m!e]÷±“½¹ËÚ¦XlJ‡ß-¢Ô«ŠÅQ)40 ¾ …<‰£c¸†ÈáRóJhX€>¿ˆ;2Có+yl ìvðõÇÕ­55lô"-ÕWï¯×ô>Õµcz.ò%íNH5:Wò`$ YÆ7Vhó‚Êð$ ©ç¼jÿ©¡U…çÞ¬áÎñ"àI7²èÃYÂß;²¸-KNû®upÖ(kÑWç=ã”afwá4¸<õE¶×{¤Î?Ѓ¯Žf'ío¥j ü>qÀ/‡Ù¥'rÌŒŒÞíPKxºZ< eÿèMIAR-STR912/CppUTest-IAR.ewwUT ”LjK”LjKux êë­RÁŠÂ0¼ þC)^k¶Â‚B¬ìÚ‹à^ªâE4>ë[mÒtÝÏ·†¶´Rz’œfÞcfÞºøOoÎè ¥˜»þøÃu@pyB‘Ì]̤7~Î<ß]ÃÁp@ïR_3Å8Ðq¨Òò¸±à ™¹£ý殢Ña©Ôn ™ñ6ÛhæO¼†b wE‰Ý³¤©Ð/·úŠ*¥5ÆýB13üòãíTiY&„3 4Å©%] K!¨¢Rba=L!A׸±¦m_®r)ΘäšYÃâ<¡¤MÖFäũǹ«Ö7ûSÒUWÉVµRÒü Ï÷PK vºZ<IAR-STR912/linker/UT LjKʈKux êëPKvºZ­`ᣩèœVx챤Ç'%h!K*V­ýS†œ€ðŒ>‚(é²d§ÏB¿R É©ú€g&W -·ó%Œä¨AG,ýª•âÓo/Á©$Kq$®þ·±Ï¶±OÚØ†Mf´ð~€þtf÷oõ.ÆëF>[ò€r©<»ÖÛ6Žé^{âôWßM çï!Ž&?J˜ï!:£òD£ ö~”&m²‡hž•&m´‡øuh¦Ñh³„X­0Τºt¹º­°XoÕTHy™¤‰­u3Q©JÒ&„z"¥­}„) ˆFQõƒ7Lb$¸¿ÍqIÉ;+ôéNÝa$ßòÔ„îr=V?_­œ¬I9Ç~ÇÉÖiU+p`˜e»Â*†Ú*fò$9ËšUŒŠež´^Æ?PKvºZ/‚Ö‰*¬™12M[#Íè ÒÍt„ºÏª¶^ô`¢Wââë¤â¼r5ƒÈÉͯۅè‡QÎ’¯‘7*>ÿqéÏ2`Éìß÷6æÙ6æI3c“M<é­`ᣩèœVx챤Ç'%h!K*V­ýS†œ€ðŒ>‚(é²d§ÏB¿R É©ú€g&W -·ó%Œä¨AG,ýª•âÓo/Á©$Kq$®þ·±Ï¶±OÚØ†Mf´ð~€þtf÷oõ.ÆëF>[ò€r©<»ÖÛ6Žé^{âôWßM çï!Ž&?J˜ï!:£òD£ ö~”&m²‡hž•&m´‡øuh¦Ñh³„X­0Τºt¹º­°XoÕTHy™¤‰­u3Q©JÒ&„z"¥­}„) ˆFQõƒ7Lb$¸¿ÍqIÉ;+ôéNÝa$ßòÔ„îr=V?_­œ¬I9Ç~ÇÉÖiU+p`˜e»Â*†Ú*fò$9ËšUŒŠež´^Æ?PKvºZ/‚Ö‰*¬™12M[#Íè ÒÍt„ºÏª¶^ô`¢Wââë¤â¼r5ƒÈÉͯۅè‡QÎ’¯‘7*>ÿqéÏ2`Éìß÷6æÙ6æI3c“M<é­ðØSIgNJ*Ð\–T,)Zí·Ž›0à„g4DºÅêu]ü,âWêèªxar ±…â¶¿äËÐO‥_cg¥øôÛ Ep*ÆR ëŸÿmì³mì“6¶a“Í}¡7™Ú½»ø“}#Ÿ-x@¹TžëýÇt oÝqò«çjèùD#Æ{ˆÎøGi¢ó=Ä¡Sžh´ÁâÏoýÒD£MöíÏÓÒD£ö¿ìïIÔ m¦‰• Æ™T×B\®®*,V5RD^B&©¶ ®%0*UIÚ„Pç"žHi+a H"$¤Q”Dýàõ¢÷79N—ìàX¡O·êr #ùž§ž t›ë±úùfå䘔sìN¶O«r†ÙYV±+¬b¨­b&O’³¬YŨX擎·ñPKvºZ<6%Ì«"IAR-STR912/linker/.svn/all-wcpropsUT LjKLjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03áÒÊåç—è'”–¤—è+Eôêô-ŒôKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôs2ó²S‹¸\ý\¸À"ñn>ŽÁz™Éi\Þ„l¶0Äk³‘)a›õ1lErJ£/q1·¤šC`v¢‡H¼sAAhÐ\â\di@q¤èã¶ä8PK vºZ<IAR-STR912/linker/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/linker/.svn/tmp/UT LjKʈKux êëPK vºZ<%IAR-STR912/linker/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<%IAR-STR912/linker/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<!IAR-STR912/linker/.svn/tmp/props/UT LjKʈKux êëPKvºZ­ðØSIgNJ*Ð\–T,)Zí·Ž›0à„g4DºÅêu]ü,âWêèªxar ±…â¶¿äËÐO‥_cg¥øôÛ Ep*ÆR ëŸÿmì³mì“6¶a“Í}¡7™Ú½»ø“}#Ÿ-x@¹TžëýÇt oÝqò«çjèùD#Æ{ˆÎøGi¢ó=Ä¡Sžh´ÁâÏoýÒD£MöíÏÓÒD£ö¿ìïIÔ m¦‰• Æ™T×B\®®*,V5RD^B&©¶ ®%0*UIÚ„Pç"žHi+a H"$¤Q”Dýàõ¢÷79N—ìàX¡O·êr #ùž§ž t›ë±úùfå䘔sìN¶O«r†ÙYV±+¬b¨­b&O’³¬YŨX擎·ñPK xºZ<IAR-STR912/examples/UT ”LjKʈKux êëPK xºZ<IAR-STR912/examples/GPIO/UT ”LjKʈKux êëPKxºZ<ûd³1*Ý#IAR-STR912/examples/GPIO/Readme.txtUT ”LjK”LjKux êëµUÛnÛ8} ˜Ç¶HäØ{ik`‰¶‰Õ%KÒ ò´PmÚ&*‹ZJÎåïwFrãdë}X K†Ì™9sÎhf<úpæÀ»ø=ÄÅͽó…†ÉÕÕ¯ tfWޙʬ:ïj»já\h|€™­ äåÞÀË™‚4åzo¢î©#vèvÎÃë3…,N€5MeWeg] Ú”{rNÊÎ ¨o;m{0kr¾úe4þ4ê©MáÖø–"ÆÑU`Ú•·Mò‚þúÒm Û˜ßˆøS¹o*aà>DeaÛÎùç)=#åÉ„(|CyòÍöó÷rÆGÛ¿Iýë‡ÉÏ5¨b¦ï˜äp·ñ„‚Y!a¾ ËcEžÞ™¦1¦¸‰Èç/•.2.ÁÝ ½À^ê "ÇðŒiQä ùœÉþ IáÉ2Ö   —}*´e  Pì–ƒúîÁ„ –©¾ Æ±,xÊc-‹\Ä Ô‚¥)ä…†k ž& vò’å÷‰Þ„%òá&Eš¹â,Q¹`)$,cs®˜í†¼ Äé [ Ef²Èˆ+"ˆ¦Ú3PK,ÚK YžŒI°T2–p¸¾?U‹"È8kàvªÁ2‘óIŽEý]ޤÈÜ“|[ÉßÑ£0ƒã¼Àú4OaðÛ÷' ôζ`Žîwc „G¿{Oó¸sÐ98´æ4šA‡ñee½ƒ­}èV®ÞØíÁk¢5L½2„«*¨Ìº%D‚ø J€n»Å[°5âà÷ÆÖWJå\‘¤0H¬Ç½†ƒJØ©»öœ¦0ø<~ú“²G;€Ô~ñ%FÄoØlpù ~¶‹V´zzh:Ø¡Š ç7 ö¥­+@†ÏTž­§uGŸEé×DÜÔ—í ­12‚K"P#{(Q|cëWâá7mƒ6,\õ i2Ž¢OHSiùy<¹T¿_ &á‹ÃŒï±=!$pzöŸ™Ã@à ókãÉe_~^ØQ<:ÿõžÝö\Øk×[7®ªÜ£­·0%— uo8¶Ç ûLËý—¿"ž'4C3‘òa™ý PKxºZiÿ!ªöái¹µ«ÖIÙv$)9@ºMŠ49à¯`3cÒæß¹¯¥YÁ°Sµ•ÀÆÏûÚïÝÎÇ[ß«Í! ÁïÚÖQ b›8»ïPHêgg§ïêí£^¾xù¢PòÚŒŸÔj)òàUzë‡v§¹}š´ÛO‘QÀV—øE |øA“Èí4“ãåuFˆgÏZu\u•ŒÁnÇæ~ÏŽS,¯†1ÎE¸7ž\7‡ßvFä-€Ú34_SÜiî]Y÷të3~>_ñÚiÎ÷:óæ€Ù%Á±S¸s¾ÕïN’°Ý1׌¨8ˆØ')ç 0–l Öüe´Œñ{ØA RbÃ0$T†._ʹȘ§VNˆ°u¾ò9P(HŸ«×ýyLJ~ L@?›‰W–®kŸU뻢¯Æ²~ÙWÏljF¸ŽMkŒHÈè»öñ´á8ӜԶHƒIEyå/¹äG÷CøÜ’åVÕ[Fž4‡ò Ú×âqK˜<Êý *Å<(J_¢näCÌ8žÙ0.?¹ÁŽå¼­ÎÅ-ד»24]Hž',C¶t›÷#½iœ´¥ü¬-°B¹—¦ 3,ü…¦^~þ®*¹ñ42Ì¡Ó]Êèi£ÍƒªÆiëô¤¸¥”öÌ"œ—_Ü‚ö=Î4ŽÈÙ¼å5ÿûËSyìï×9!G!ÜB}häFƒs˜¡ù­K·wfz\`òað¨puòþ»í}.œMuˆ}áÁnÙ±®.›ÈOU]ÅS"rÉ8P Í¡HKÉq†a° ºä$U—âä%)‘—ç=Mˆ@¶JO¾d »ÐûeD¦a L|?ÂÈNRé2Àº º3*Éœñ5'…Ñ1$ôÎÉ=ŒŽ¼j“H¬%Õ ShL&“†mÛ<+qr"*$a]#î4SIss¶Dù„̃…Íפá7,S5œ):WºfϸêOÃ7Y(%+‚p¨NüeùÂn—Bp„™”±p¹söN!£€K,ÜÀfÄôÅ@þàeÇ©»*†.&.?ô0ˆ¿”\Ñ¥ž RÏA¬[…¢pŒ}Šà¶úˆcEE¾øëíÿÜ=o*6E«ëYÙêz¡!|mfùÚ­Vö6*Ák.‘*už1Ÿ¾‹=°Z?-!²JR1bxÈÊÉqîéSÈ…Çñ‘Ǩ îŽÉ²i,ÇÛµ\¡$c À9²aF ;‡MÅã î ÂR b—Í2ÊÀÅÅžA|¬#•ë/1}~€½üÒ¿Š΄?…Ïe¢Ñ _WÇ"ÁFf7Õ® ÃÙPT0{–̰HnW@#ìÀi@æµ …G.eà )œBþ]–jü[L_ “(óÁI{A¾¥ì¬=Æ,>m?ĉbéØP°ƒÓS¸tµ²Ý9m ö-E}*ÛseÉš¦ÌAÄǧ¤RK¤R’©%–Øtêq2:dCRÏu1Eòã²¥ôwî°–õüè¡*Àsy~¢º ƒBøj•’ŒóOßZÊ@͸,œˆ|DÐò×0ßDEµõÜØèÜéË/Ç3pBGrœŒçµZ·­ÖY«UD¥sl Kèa%À罺ƒ ÿ”½:ã©DÅqZšjŸ’õÐm—’›Ö©-HDkü¦š“Ü•{'IQËÚ'\#Åû„•l pÄûµçâV^˜çâÖ£a·8Ì(„=k ¤ê]eë“j(Cɰ¾=‘'A¬¢ÎP¶ø}?Ãâ{ëA|sAþfCMInçÀªžR)M°Wï ½ÈExK¾ƒäÂöÈqn¾ÇqÚ)SF±<ø:–ý[‰úé` x“¶§/òn¿rÒ÷€¯ØúxCñöãi±^üô@¢›égõÄèfo¬sË„È#¸zz†ä† °×†¥›UdÍxÎâ|]}ÿɺYWÕÕwý³T—Í`!ž¤Þ—¥uã–à5Q2‰ß1á& ¸pç¤Ñ»BU[U:e(ù8” !s3¤„·s3»9ªtVLìëô³@:–Åžóè4÷¤ß¶þ‡øÿ?PKxºZú„$oM}I“s6€›BÖz5¾Áöns€´DËLdR¥(Çî¯?CÊòm-ÙYŠÚ—ã8 ](~œ!9œù8rëÕ"´–˜Ç„Ñß_4k¦ó ~AböëÕÕ»÷¿6_üñáçŸ~þ©qö{N,«5#!¾KýÐlÕ÷OÕ}Ñ ŽDv .R´À®ñ4 Zuu¼¹. ½9"YÁ¬¨=꬗lù²6Ù‚ô`s5ÆB€ñQ}1Å…uÂ=Ľ9YnÛÿ[«~te[ÒGmÏà|™ižY†Ûß}F»ÌC¡lãÁù^¹“B¨;,‡uf¢tVxˆÄüH”TxÄFÍ÷P¬UO/ìÕZTm>Ð`úõ (¦ Ô%±¸I–Ó„ºCœ@WœBÊzñ?§:tÛÙßZ-øØ¡>4¡Ç|œ/oCÄ¥Q"¬åya›…Â–Ó Ç'ªL¾Ä7IZ3ÆHÍßšîØMÄ…hÕÀ¦Ï¡‚)v›PÄ׿†ÚÍðöÕûÑa¸3'Q¾ˆM]MŽ*ÈwÉtŒCXŸ.péM‡hyÒTÓžÑäú’¡}cḴEåè­Áb3uÏ©;¿übñT>+$Sã¶fõ™ÊU[„ ÌgÈï-gsí5ÔhId;÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙkuÅæxeÍB†„* .˜¯;ÿFG‰Y¼²½š ÝÏîäáÚ½ºwûÎý5ôíCúèC_é«6מ&CÎüÄ·&¿9ok¿5mm´.ŠÅÆ¥ß^_ ü®Ö7´ö®ñîí¿uçHêëõHÌÑ( q¬1=FS~ò«þÀÿíŸÍu"¿Fzº}bWlSxw©ÑØ{8çSŽ":MC¬ÔanØW:tö”ÅÝ0û`ðSØñ‰èašä£'£÷Í77ÿO¬Í¡¾¬]ö½‹—8t3›dpõÙ9ŒíŽžN!ÌØ…1Pþ0VÊ‹\Ç9LJNož:½¯:trœk<#ô´EHµ§ÙYŽ3äÂeï%s` ã°ÅSQ PiP]PœIÝ9¦Õ¦@z/%žQ­¥H8ŽQP4Þʲ㸠Í̘%¼ÈÚé¥ËÕ/ÿfTq×cð9t’Aƒ aRi ƒü…8óm¥Ã9ã1$ëÄÁJ¯Ì­¨°ž…!,àŠNz27’~ôu*W/—Θ9yÝK('mðô=˜IEƒC_•àh nÇÎ{SJ›»ÚÇ28Þ»ˆ2Ú“‘5kYÇ$ Ø†ˆPgŽ ö“ãŒðß áÆ„`b™]{Y?N#Ó‹†4´6Ç` M"kÁšÎ7ŒO±‰Ðí7QRÁN)ÉbWåÕÛí<´ûv¯óªÆJ™_ù¬]yÞÑ4¥l>aäcƒ„µÑ¥^˜™r]i6ïÿÊ& &'&wmgÓµ’2|S0C†£ÁŸ)aX«É/ÉFÄ1ü‰GôWáC3 ¯¾L¦!PK°¼>ƒÁ($,k¯tw#]E}gü[Aok›ö­]— A ðÝ#¡X1“ž`ŒÁ188¹©U;ÓNÔÜý—Ëå}+gáäNn~›¤äì â=; 8(‹Ac"È’ˆ‚ÝV]¤ò8“λƚ¬;øméÿ¦,9c¢@þš#ƒ^›‚‘šeŒÀÿÄÍ 0 ,».ÆãÄ­ƒêµ§O(F8 1¬…}87+Ú¦ù;T*©ý²zÓ!†)$µyœÔ±3ØÑ`'¡«ÍtVQ@ –¾³ÂžÁMT®í8ƾA%IbÆì¾Ñ¸‹i æ†#’P>Æ•.ÈMÇò 'ß•îôþ2Â3ƒ&JVÖÌ–‚¢¢'ú(«·ta£Ðnv5ìž]9½gWGýª¸ Bí~™Þz؇’é-=¦½e»eïØƒbí@ ,Cé|Ž}c~W;Æ<Þšº3Hµ £í?Áð¿gˆÆ²‚ªf gc·TêõóeËgí0O4ïD.4Õú(2= Q_º€i"¨É¸EJ5ýê°h]9ñ´iáÜŽ'ƒs¼Ü¼f„WBÒJ0Ë¡7öNöŠx ?ýÂýìHO„¶ë zC½‰]ÿaÐ[·{m;wÐ?ƒÜ¼\y#@BT³=Ü¿Íb±½¿=ÖSžÛuûŸË7Šo«6Š. ¤o]2u鶦¹YûŒÃ7µÁö ,EXd ´wB¤Pê$i÷Î0÷¥€]beƒˆ°K´÷’$Þ6™èœÔfp$ÚgŒ£ñz1e¡9¿JÐ÷ô5&£ëÕ!T*XU`8i¼¡Ù! vCʈfyV’š¦J z(*{¥L¨. ̦ñf(.%‚ ü£ÞÀ2×߯ ¹ÎîÚ—t‡)6¿Ty³ó±@)ΰ6Ç)'ò)ÌïÕ 5«‡›®=þT#Þ¬ÄÆœYŸË@ª(Õ\ae™æ2а±špŒ„ƒ\•àÈÈJ€ .ËÀÙdÐÇir';½É^☸ñeYÆ¥ U’м1GoÇ•%sÔNƒˆ¥Ï×ö}"ï£ +3[†œ-:TðuM‹²¬J.ðLgÑžFÍÇ{x ˆ?Dép—Cõ¿ »CGQ¸qR`AuŽf°ÊìDY;æíµ(ò»V7º/æ0ãTûù8åHÓ¡E»ÕÚ ÷ÆäŸgü9hÀ™à¬„ÀàËF0daÑެšÍÆ›`dvöÉùSQ(÷ÚD xN.NeØÄrw(L gº¾½0Ãֿݹz¶„Z×9ŸÜ»ãWìK`oO£ìí¦…Šë4èžl`ÌoXm‘ŸšóòåËÛŒÚÀ>œ-í˜þœ]’VýñOèµÎ’(+¯@ãÇob«ßæ;jè£È=}î^†íŠz>œÓéú=±¾Lˬ.ö’üêZõJNiG:$Iôõ¤ªKµXW ½ —à@çWx Ò>ÌqŪmâ@7ûÕ=º@„ž~Pn’e?ó(ÿýPK yºZ<IAR-STR912/examples/GPIO/.svn/UT •LjKʈKux êëPKxºZ<œ©­:%IAR-STR912/examples/GPIO/.svn/entriesUT ”LjK”LjKux êë­“?oÜ0 Åw¡_Å6©ÿº-S)Åõ¦.%Q·w¶aûšûøUÛ A7£õƒAx ~x$„Èý,´”âe]§åÐuišn+/k»|Úe¼Í‰Ë8Ÿ¹xíêÛ<ŽëS·Î·á[7]h­¦ëÒ==›O§c@Ùñ®Ó…—îñãÓó¿•U 4 ©N(h[gœûY(iÄWºòržyúá,þ–+>2 4JÕ"?oYBã-± ‰³ÑQ|ç©[~}¥¿°øýiµ‚l¤;;`8hßÂ/ÕOv rO&[il)dÉ ÿñ›ÐøÊu¥~hÓ6*Sa2‹Áɬ±É“s^‹i•®d?PK xºZ<(IAR-STR912/examples/GPIO/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/GPIO/.svn/text-base/UT ”LjKʈKux êëPKxºZ<êõ¡7ä%R9IAR-STR912/examples/GPIO/.svn/text-base/gpio.ewp.svn-baseUT ”LjK”LjKux êëí\[Û¶~>ú„$oM}I“s6€›BÖz5¾Áöns€´DËLdR¥(Çî¯?CÊòm-ÙYŠÚ—ã8 ](~œ!9œù8rëÕ"´–˜Ç„Ñß_4k¦ó ~AböëÕÕ»÷¿6_üñáçŸ~þ©qö{N,«5#!¾KýÐlÕ÷OÕ}Ñ ŽDv .R´À®ñ4 Zuu¼¹. ½9"YÁ¬¨=꬗lù²6Ù‚ô`s5ÆB€ñQ}1Å…uÂ=Ľ9YnÛÿ[«~te[ÒGmÏà|™ižY†Ûß}F»ÌC¡lãÁù^¹“B¨;,‡uf¢tVxˆÄüH”TxÄFÍ÷P¬UO/ìÕZTm>Ð`úõ (¦ Ô%±¸I–Ó„ºCœ@WœBÊzñ?§:tÛÙßZ-øØ¡>4¡Ç|œ/oCÄ¥Q"¬åya›…Â–Ó Ç'ªL¾Ä7IZ3ÆHÍßšîØMÄ…hÕÀ¦Ï¡‚)v›PÄ׿†ÚÍðöÕûÑa¸3'Q¾ˆM]MŽ*ÈwÉtŒCXŸ.péM‡hyÒTÓžÑäú’¡}cḴEåè­Áb3uÏ©;¿übñT>+$Sã¶fõ™ÊU[„ ÌgÈï-gsí5ÔhId;÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙkuÅæxeÍB†„* .˜¯;ÿFG‰Y¼²½š ÝÏîäáÚ½ºwûÎý5ôíCúèC_é«6מ&CÎüÄ·&¿9ok¿5mm´.ŠÅÆ¥ß^_ ü®Ö7´ö®ñîí¿uçHêëõHÌÑ( q¬1=FS~ò«þÀÿíŸÍu"¿Fzº}bWlSxw©ÑØ{8çSŽ":MC¬ÔanØW:tö”ÅÝ0û`ðSØñ‰èašä£'£÷Í77ÿO¬Í¡¾¬]ö½‹—8t3›dpõÙ9ŒíŽžN!ÌØ…1Pþ0VÊ‹\Ç9LJNož:½¯:trœk<#ô´EHµ§ÙYŽ3äÂeï%s` ã°ÅSQ PiP]PœIÝ9¦Õ¦@z/%žQ­¥H8ŽQP4Þʲ㸠Í̘%¼ÈÚé¥ËÕ/ÿfTq×cð9t’Aƒ aRi ƒü…8óm¥Ã9ã1$ëÄÁJ¯Ì­¨°ž…!,àŠNz27’~ôu*W/—Θ9yÝK('mðô=˜IEƒC_•àh nÇÎ{SJ›»ÚÇ28Þ»ˆ2Ú“‘5kYÇ$ Ø†ˆPgŽ ö“ãŒðß áÆ„`b™]{Y?N#Ó‹†4´6Ç` M"kÁšÎ7ŒO±‰Ðí7QRÁN)ÉbWåÕÛí<´ûv¯óªÆJ™_ù¬]yÞÑ4¥l>aäcƒ„µÑ¥^˜™r]i6ïÿÊ& &'&wmgÓµ’2|S0C†£ÁŸ)aX«É/ÉFÄ1ü‰GôWáC3 ¯¾L¦!PK°¼>ƒÁ($,k¯tw#]E}gü[Aok›ö­]— A ðÝ#¡X1“ž`ŒÁ188¹©U;ÓNÔÜý—Ëå}+gáäNn~›¤äì â=; 8(‹Ac"È’ˆ‚ÝV]¤ò8“λƚ¬;øméÿ¦,9c¢@þš#ƒ^›‚‘šeŒÀÿÄÍ 0 ,».ÆãÄ­ƒêµ§O(F8 1¬…}87+Ú¦ù;T*©ý²zÓ!†)$µyœÔ±3ØÑ`'¡«ÍtVQ@ –¾³ÂžÁMT®í8ƾA%IbÆì¾Ñ¸‹i æ†#’P>Æ•.ÈMÇò 'ß•îôþ2Â3ƒ&JVÖÌ–‚¢¢'ú(«·ta£Ðnv5ìž]9½gWGýª¸ Bí~™Þz؇’é-=¦½e»eïØƒbí@ ,Cé|Ž}c~W;Æ<Þšº3Hµ £í?Áð¿gˆÆ²‚ªf gc·TêõóeËgí0O4ïD.4Õú(2= Q_º€i"¨É¸EJ5ýê°h]9ñ´iáÜŽ'ƒs¼Ü¼f„WBÒJ0Ë¡7öNöŠx ?ýÂýìHO„¶ë zC½‰]ÿaÐ[·{m;wÐ?ƒÜ¼\y#@BT³=Ü¿Íb±½¿=ÖSžÛuûŸË7Šo«6Š. ¤o]2u鶦¹YûŒÃ7µÁö ,EXd ´wB¤Pê$i÷Î0÷¥€]beƒˆ°K´÷’$Þ6™èœÔfp$ÚgŒ£ñz1e¡9¿JÐ÷ô5&£ëÕ!T*XU`8i¼¡Ù! vCʈfyV’š¦J z(*{¥L¨. ̦ñf(.%‚ ü£ÞÀ2×߯ ¹ÎîÚ—t‡)6¿Ty³ó±@)ΰ6Ç)'ò)ÌïÕ 5«‡›®=þT#Þ¬ÄÆœYŸË@ª(Õ\ae™æ2а±špŒ„ƒ\•àÈÈJ€ .ËÀÙdÐÇir';½É^☸ñeYÆ¥ U’м1GoÇ•%sÔNƒˆ¥Ï×ö}"ï£ +3[†œ-:TðuM‹²¬J.ðLgÑžFÍÇ{x ˆ?Dép—Cõ¿ »CGQ¸qR`AuŽf°ÊìDY;æíµ(ò»V7º/æ0ãTûù8åHÓ¡E»ÕÚ ÷ÆäŸgü9hÀ™à¬„ÀàËF0daÑެšÍÆ›`dvöÉùSQ(÷ÚD xN.NeØÄrw(L gº¾½0Ãֿݹz¶„Z×9ŸÜ»ãWìK`oO£ìí¦…Šë4èžl`ÌoXm‘ŸšóòåËÛŒÚÀ>œ-í˜þœ]’VýñOèµÎ’(+¯@ãÇob«ßæ;jè£È=}î^†íŠz>œÓéú=±¾Lˬ.ö’üêZõJNiG:$Iôõ¤ªKµXW ½ —à@çWx Ò>ÌqŪmâ@7ûÕ=º@„ž~Pn’e?ó(ÿýPKxºZiÿ!ªöái¹µ«ÖIÙv$)9@ºMŠ49à¯`3cÒæß¹¯¥YÁ°Sµ•ÀÆÏûÚïÝÎÇ[ß«Í! ÁïÚÖQ b›8»ïPHêgg§ïêí£^¾xù¢PòÚŒŸÔj)òàUzë‡v§¹}š´ÛO‘QÀV—øE |øA“Èí4“ãåuFˆgÏZu\u•ŒÁnÇæ~ÏŽS,¯†1ÎE¸7ž\7‡ßvFä-€Ú34_SÜiî]Y÷të3~>_ñÚiÎ÷:óæ€Ù%Á±S¸s¾ÕïN’°Ý1׌¨8ˆØ')ç 0–l Öüe´Œñ{ØA RbÃ0$T†._ʹȘ§VNˆ°u¾ò9P(HŸ«×ýyLJ~ L@?›‰W–®kŸU뻢¯Æ²~ÙWÏljF¸ŽMkŒHÈè»öñ´á8ӜԶHƒIEyå/¹äG÷CøÜ’åVÕ[Fž4‡ò Ú×âqK˜<Êý *Å<(J_¢näCÌ8žÙ0.?¹ÁŽå¼­ÎÅ-ד»24]Hž',C¶t›÷#½iœ´¥ü¬-°B¹—¦ 3,ü…¦^~þ®*¹ñ42Ì¡Ó]Êèi£ÍƒªÆiëô¤¸¥”öÌ"œ—_Ü‚ö=Î4ŽÈÙ¼å5ÿûËSyìï×9!G!ÜB}häFƒs˜¡ù­K·wfz\`òað¨puòþ»í}.œMuˆ}áÁnÙ±®.›ÈOU]ÅS"rÉ8P Í¡HKÉq†a° ºä$U—âä%)‘—ç=Mˆ@¶JO¾d »ÐûeD¦a L|?ÂÈNRé2Àº º3*Éœñ5'…Ñ1$ôÎÉ=ŒŽ¼j“H¬%Õ ShL&“†mÛ<+qr"*$a]#î4SIss¶Dù„̃…Íפá7,S5œ):WºfϸêOÃ7Y(%+‚p¨NüeùÂn—Bp„™”±p¹söN!£€K,ÜÀfÄôÅ@þàeÇ©»*†.&.?ô0ˆ¿”\Ñ¥ž RÏA¬[…¢pŒ}Šà¶úˆcEE¾øëíÿÜ=o*6E«ëYÙêz¡!|mfùÚ­Vö6*Ák.‘*už1Ÿ¾‹=°Z?-!²JR1bxÈÊÉqîéSÈ…Çñ‘Ǩ îŽÉ²i,ÇÛµ\¡$c À9²aF ;‡MÅã î ÂR b—Í2ÊÀÅÅžA|¬#•ë/1}~€½üÒ¿Š΄?…Ïe¢Ñ _WÇ"ÁFf7Õ® ÃÙPT0{–̰HnW@#ìÀi@æµ …G.eà )œBþ]–jü[L_ “(óÁI{A¾¥ì¬=Æ,>m?ĉbéØP°ƒÓS¸tµ²Ý9m ö-E}*ÛseÉš¦ÌAÄǧ¤RK¤R’©%–Øtêq2:dCRÏu1Eòã²¥ôwî°–õüè¡*Àsy~¢º ƒBøj•’ŒóOßZÊ@͸,œˆ|DÐò×0ßDEµõÜØèÜéË/Ç3pBGrœŒçµZ·­ÖY«UD¥sl Kèa%À罺ƒ ÿ”½:ã©DÅqZšjŸ’õÐm—’›Ö©-HDkü¦š“Ü•{'IQËÚ'\#Åû„•l pÄûµçâV^˜çâÖ£a·8Ì(„=k ¤ê]eë“j(Cɰ¾=‘'A¬¢ÎP¶ø}?Ãâ{ëA|sAþfCMInçÀªžR)M°Wï ½ÈExK¾ƒäÂöÈqn¾ÇqÚ)SF±<ø:–ý[‰úé` x“¶§/òn¿rÒ÷€¯ØúxCñöãi±^üô@¢›égõÄèfo¬sË„È#¸zz†ä† °×†¥›UdÍxÎâ|]}ÿɺYWÕÕwý³T—Í`!ž¤Þ—¥uã–à5Q2‰ß1á& ¸pç¤Ñ»BU[U:e(ù8” !s3¤„·s3»9ªtVLìëô³@:–Åžóè4÷¤ß¶þ‡øÿ?PKxºZ<ûd³1*Ý;IAR-STR912/examples/GPIO/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUÛnÛ8} ˜Ç¶HäØ{ik`‰¶‰Õ%KÒ ò´PmÚ&*‹ZJÎåïwFrãdë}X K†Ì™9sÎhf<úpæÀ»ø=ÄÅͽó…†ÉÕÕ¯ tfWޙʬ:ïj»já\h|€™­ äåÞÀË™‚4åzo¢î©#vèvÎÃë3…,N€5MeWeg] Ú”{rNÊÎ ¨o;m{0kr¾úe4þ4ê©MáÖø–"ÆÑU`Ú•·Mò‚þúÒm Û˜ßˆøS¹o*aà>DeaÛÎùç)=#åÉ„(|CyòÍöó÷rÆGÛ¿Iýë‡ÉÏ5¨b¦ï˜äp·ñ„‚Y!a¾ ËcEžÞ™¦1¦¸‰Èç/•.2.ÁÝ ½À^ê "ÇðŒiQä ùœÉþ IáÉ2Ö   —}*´e  Pì–ƒúîÁ„ –©¾ Æ±,xÊc-‹\Ä Ô‚¥)ä…†k ž& vò’å÷‰Þ„%òá&Eš¹â,Q¹`)$,cs®˜í†¼ Äé [ Ef²Èˆ+"ˆ¦Ú3PK,ÚK YžŒI°T2–p¸¾?U‹"È8kàvªÁ2‘óIŽEý]ޤÈÜ“|[ÉßÑ£0ƒã¼Àú4OaðÛ÷' ôζ`Žîwc „G¿{Oó¸sÐ98´æ4šA‡ñee½ƒ­}èV®ÞØíÁk¢5L½2„«*¨Ìº%D‚ø J€n»Å[°5âà÷ÆÖWJå\‘¤0H¬Ç½†ƒJØ©»öœ¦0ø<~ú“²G;€Ô~ñ%FÄoØlpù ~¶‹V´zzh:Ø¡Š ç7 ö¥­+@†ÏTž­§uGŸEé×DÜÔ—í ­12‚K"P#{(Q|cëWâá7mƒ6,\õ i2Ž¢OHSiùy<¹T¿_ &á‹ÃŒï±=!$pzöŸ™Ã@à ókãÉe_~^ØQ<:ÿõžÝö\Øk×[7®ªÜ£­·0%— uo8¶Ç ûLËý—¿"ž'4C3‘òa™ý PKxºZŽœ&1 •Iq*@ø$ Š%Œø,ð àd°†’DwàñѱVûK3bˆÆ‘`¤¸sNðHH&¬Ý„®6E Ö¢ hÐn;áBoaœÄaÓ8d˜ÞðA¤Ø´]IäYí–  Bâ1Ýíu 3Z³Ym #IxÄ<ÜP°IøE_„¢t;‘¯;ùëO´u|¤?ïòe±PK˜Íô«Œ"Æ3|ÊïЕÊðYx¤JøVV_!/à~»\ª _Üu¹Pðçßä…š—ëµ*j¨,ËÕªü–_`¥ÙÚš–õÂ>zÎf¦{™ þ^a6Ô%dE¡VvWÀé ¸]³®ÀyWà¢+pÙ¸úÁ£g!Ú„šöl”_íƒ^ç ×=è=ë•8.qÜH즺åéP*„öRáÈJ…PÓ¶M‡c:\ÓÑߤɔÇz¬½¦†i¶cØ®aŸö¹a_ö¥a_ö'ÃþÜ»ÓDží¥´ÿ8ìˆØKöH24…ý’R’Ⱦç¸Ç¤¡oöóÆãö7EL‡ö¡¦m›Žþ™LI4´BûÿˆyƒÏBûÇ„7<&¼I/w«B¨iÛ¦ÃéçÀ"Ö}zÌqŽØöÖcüÖ³ðÈfy1£ÕÓ¦ÎV°¬Ô_[UÌŸàïlµUðþwÿßûøö^³»Ií'ï½Q¯8Ý ÛÖCH‹|ù#=?¿v·»†ðrµ“{¹ˆêçOüÈ"O_sÇ<`ϽþPKxºZ< $8,=9IAR-STR912/examples/GPIO/.svn/text-base/91x_it.c.svn-baseUT ”LjK”LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó¥|òë`øÇ@'v \TJ1<>Ñ^e"ßè ÏÑÓ¼ZH.D½‘pq—gâ²–yÁ«c¾ó¥RÁ‹­ò n‘,-àšC]¡YÂR§‰ éz rÅÿȸꂪ¾Û̶aä*•p›>@™eµ€û\®ÐÆ>C;ÞŽ^¬x8]þdx…£xQ陪òFÞ§‚cœûZ¤E¶‚´–å-FÉ0Ÿ‡ÇYK=>+…àÕ¦,–yñ¶™Aša»nÙ{žíI)¶AÖeºD˘®4sAðïy…CŸq¸)×ëò~'|*AņßnäÃQãU1¼¹T9-•êq’x«´X®qI €%l8.…麟?çø³>ò)Z+Åéz«t4R«ô÷Ö*=ö}}¹‚‡Û¾ÿZÝ?!c6%0‹IBBI4f '&°˜Rw 4qÃdN='t D¡  pj¢ êÑpî;RňºqD|â²8 ©›@2u|ˆÁ)ñ=ð©sæÓ /Á£1Ž>ÂÉšw*"v¹Q˜ó9š§Žž8²õ³Íp JFpýÆyLåaGf‡Êu¼1$säö„Ñ ½Aã æ Àñœ]îCEcŸVÃ0d ‰‡†b‚”ð…m!&¥xê$Û(ßQ~É‹l]ã×íöˆ¯> Þy&½uÔE¦ w³}œÂ¼Xò,Ë«ióµ~¥ÂŸn‹ì£öIƒßöJŠºi}ªºìÐbSËÝí', ®?ÂZîöÙNû/PKxºZç0dÚŒ‰m”j–å°yÎÁ1-0‹DÆ‘’Y ¡ˆæ$lEJ `^(àEQŠ ·nu~mUnÃµÈ Òè4Û•‚(â\.*t4‹<»Ï£9Üe“'”|çC¶²PYþtNÏèc·K>~Úò±»âý´ëgÉû»ØþÃ¡Ïæ†x½ðÆðÜ ¸9@Ïó¡?â–áš <×¾ƒ;!êx×ÜânÌQzó‚»áá§bpÕ#äž >ë~EEƒÜ'ukd† ç[̯L!ÏЃÀ¸fr‡5«vAƒŒì𔺛¾Çlf†¾çr3€``Ø6¸^W ̶ÀæÆ•Í*Hý‹û(}JXÜÕ/hÝtöÇ#ç† –á}èÐÚ¤Ð0m¶Ï ¡ç{ùJ€Rî¼#LÚ:‡†kµtH0 8†Åàêö%[¤AL,íÛK¾Öà.³0 Ÿa’xEsÑ)bWNng²ùîýѪ×êµú•ÆI9œ|óHj<øð[çqœÈ»æìÃÒÒ0—4îêi!&bzˆA²´ˆh2Eð â<ÂexXJ¾A|ˆrÝ%‡$šúCîy*Uˆy´0kB ò2Ve..¶,OË4®ö%nH•Qöß샶üÉ æhlféTÞ—yµËD>¾ B!%Ör–H¢§Fù± ©™•©"‰½n˜Ö;ÏEuí2¦o9}»í¹}¶ožjÊÓE©6/>7K1¼Rmr^¾ÀŠ¥»Œ÷=˜(™ª*ŽÆq½ö•ªu$§4†»õépŽîÊû†®å‘H'rªéôŸêî˜öïAVæ±ÐÐXÇ^`_hëdTÀWˆ P³j6£2Q'YüŠJ[·)QÙ’²Èò H¢Ž‘ÜALìÃw`(0ï3‘G Ü•¡}™h=¸„ޤ?_u§¨ìO…sm¿iÖ–·{xÝ4L°Åû×í¹1®– ùlÐóGÞÝ¡mjI™ Ý{—Zf(SÝ;¯ª¡Ô†ÂØH’WÅiu¬äéy<,‹Ù°LxUÍH”ÈSÞËêUû…Äζè@OáÇ] h€?gøÙèÓóWÝe˜ýFÁëõ “U±–À7¹Tb Ü~l·«v[+ò´¹ÂfÃ¥³ÖÓ+¨ýø©‡gexÃŽûfHíÍVžëµgÝOï{öî¦fÞ»¨ÖCQìNEó;ß\¯Ý;Ë]†Åa)]¯UtãqUÀi7†Wzƒ˜ñrÕ¬ÄN™K_”ºCþ¿ÂU³·XºÏ ˆ–­¦ä\ì/’¾[Ï¡XˆXN¥XíÜ•vxz¯fÍ~,+I”ϸ›ÚËyfyƒÞµÔò~ &|>;£‚=ï/Ö[~â2×¢Ïõ·ÙÒÏzí/PKxºZ<îâxÒÎ)IAR-STR912/examples/GPIO/.svn/all-wcpropsUT ”LjK”LjKux êëÅ’M ‚@†ïû+ìè¤!~Ü‚"D¨°è*‹®%éî²»~üü4B¼éAò:3ð<3e#YS¿I|ã×~M„ÌÕ+Q ‡æ˜º¾`LAÂy¥ˆT°é*ÐÍÁβA‰Š¾XeL”‚}¤ßî‘gZ@Z\ò‚H8]ƒ :žèÉsf¦AáØÝ.†Ú”8§F2ÍwÜÅø?äh¾Æþükœ–ÄP­šá`-æ0ÂöžÙÆ £™ñú«Å;J#]#t¸C®æüã‚´7øPK xºZ<$IAR-STR912/examples/GPIO/.svn/props/UT ”LjKʈKux êëPK xºZ<"IAR-STR912/examples/GPIO/.svn/tmp/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/GPIO/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/GPIO/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/GPIO/.svn/tmp/props/UT ”LjKʈKux êëPKxºZç0dÚŒ‰m”j–å°yÎÁ1-0‹DÆ‘’Y ¡ˆæ$lEJ `^(àEQŠ ·nu~mUnÃµÈ Òè4Û•‚(â\.*t4‹<»Ï£9Üe“'”|çC¶²PYþtNÏèc·K>~Úò±»âý´ëgÉû»ØþÃ¡Ïæ†x½ðÆðÜ ¸9@Ïó¡?â–áš <×¾ƒ;!êx×ÜânÌQzó‚»áá§bpÕ#äž >ë~EEƒÜ'ukd† ç[̯L!ÏЃÀ¸fr‡5«vAƒŒì𔺛¾Çlf†¾çr3€``Ø6¸^W ̶ÀæÆ•Í*Hý‹û(}JXÜÕ/hÝtöÇ#ç† –á}èÐÚ¤Ð0m¶Ï ¡ç{ùJ€Rî¼#LÚ:‡†kµtH0 8†Åàêö%[¤AL,íÛK¾Öà.³0 Ÿa’xEsÑ)bWNng²ùîýѪ×êµú•ÆI9œ|óHj<øð[çqœÈ»æìÃÒÒ0—4îêi!&bzˆA²´ˆh2Eð â<ÂexXJ¾A|ˆrÝ%‡$šúCîy*Uˆy´0kB ò2Ve..¶,OË4®ö%nH•Qöß샶üÉ æhlféTÞ—yµËD>¾ B!%Ör–H¢§Fù± ©™•©"‰½n˜Ö;ÏEuí2¦o9}»í¹}¶ožjÊÓE©6/>7K1¼Rmr^¾ÀŠ¥»Œ÷=˜(™ª*ŽÆq½ö•ªu$§4†»õépŽîÊû†®å‘H'rªéôŸêî˜öïAVæ±ÐÐXÇ^`_hëdTÀWˆ P³j6£2Q'YüŠJ[·)QÙ’²Èò H¢Ž‘ÜALìÃw`(0ï3‘G Ü•¡}™h=¸„ޤ?_u§¨ìO…sm¿iÖ–·{xÝ4L°Åû×í¹1®– ùlÐóGÞÝ¡mjI™ Ý{—Zf(SÝ;¯ª¡Ô†ÂØH’WÅiu¬äéy<,‹Ù°LxUÍH”ÈSÞËêUû…Äζè@OáÇ] h€?gøÙèÓóWÝe˜ýFÁëõ “U±–À7¹Tb Ü~l·«v[+ò´¹ÂfÃ¥³ÖÓ+¨ýø©‡gexÃŽûfHíÍVžëµgÝOï{öî¦fÞ»¨ÖCQìNEó;ß\¯Ý;Ë]†Åa)]¯UtãqUÀi7†Wzƒ˜ñrÕ¬ÄN™K_”ºCþ¿ÂU³·XºÏ ˆ–­¦ä\ì/’¾[Ï¡XˆXN¥XíÜ•vxz¯fÍ~,+I”ϸ›ÚËyfyƒÞµÔò~ &|>;£‚=ï/Ö[~â2×¢Ïõ·ÙÒÏzí/PKxºZŽœ&1 •Iq*@ø$ Š%Œø,ð àd°†’DwàñѱVûK3bˆÆ‘`¤¸sNðHH&¬Ý„®6E Ö¢ hÐn;áBoaœÄaÓ8d˜ÞðA¤Ø´]IäYí–  Bâ1Ýíu 3Z³Ym #IxÄ<ÜP°IøE_„¢t;‘¯;ùëO´u|¤?ïòe±PK˜Íô«Œ"Æ3|ÊïЕÊðYx¤JøVV_!/à~»\ª _Üu¹Pðçßä…š—ëµ*j¨,ËÕªü–_`¥ÙÚš–õÂ>zÎf¦{™ þ^a6Ô%dE¡VvWÀé ¸]³®ÀyWà¢+pÙ¸úÁ£g!Ú„šöl”_íƒ^ç ×=è=ë•8.qÜH즺åéP*„öRáÈJ…PÓ¶M‡c:\ÓÑߤɔÇz¬½¦†i¶cØ®aŸö¹a_ö¥a_ö'ÃþÜ»ÓDží¥´ÿ8ìˆØKöH24…ý’R’Ⱦç¸Ç¤¡oöóÆãö7EL‡ö¡¦m›Žþ™LI4´BûÿˆyƒÏBûÇ„7<&¼I/w«B¨iÛ¦ÃéçÀ"Ö}zÌqŽØöÖcüÖ³ðÈfy1£ÕÓ¦ÎV°¬Ô_[UÌŸàïlµUðþwÿßûøö^³»Ií'ï½Q¯8Ý ÛÖCH‹|ù#=?¿v·»†ðrµ“{¹ˆêçOüÈ"O_sÇ<`ϽþPKxºZ< $8,=!IAR-STR912/examples/GPIO/91x_it.cUT ”LjK”LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó¥|òë`øÇ@'v \TJ1<>Ñ^e"ßè ÏÑÓ¼ZH.D½‘pq—gâ²–yÁ«c¾ó¥RÁ‹­ò n‘,-àšC]¡YÂR§‰ éz rÅÿȸꂪ¾Û̶aä*•p›>@™eµ€û\®ÐÆ>C;ÞŽ^¬x8]þdx…£xQ陪òFÞ§‚cœûZ¤E¶‚´–å-FÉ0Ÿ‡ÇYK=>+…àÕ¦,–yñ¶™Aša»nÙ{žíI)¶AÖeºD˘®4sAðïy…CŸq¸)×ëò~'|*AņßnäÃQãU1¼¹T9-•êq’x«´X®qI €%l8.…麟?çø³>ò)Z+Åéz«t4R«ô÷Ö*=ö}}¹‚‡Û¾ÿZÝ?!c6%0‹IBBI4f '&°˜Rw 4qÃdN='t D¡  pj¢ êÑpî;RňºqD|â²8 ©›@2u|ˆÁ)ñ=ð©sæÓ /Á£1Ž>ÂÉšw*"v¹Q˜ó9š§Žž8²õ³Íp JFpýÆyLåaGf‡Êu¼1$säö„Ñ ½Aã æ Àñœ]îCEcŸVÃ0d ‰‡†b‚”ð…m!&¥xê$Û(ßQ~É‹l]ã×íöˆ¯> Þy&½uÔE¦ w³}œÂ¼Xò,Ë«ióµ~¥ÂŸn‹ì£öIƒßöJŠºi}ªºìÐbSËÝí', ®?ÂZîöÙNû/PKxºZª‹x¹PK xºZ<IAR-STR912/examples/RTC/UT “LjKʈKux êëPKxºZ<3ÈjÜ<IAR-STR912/examples/RTC/rtc.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKxºZ<1d¢V'LIAR-STR912/examples/RTC/rtc.ewpUT “LjK“LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×gíFë™…©Ç|Bƒ_Ÿ‘˜ýôæÍë·?µŸýöî‡ïø¾qö {n,«3'!¾K‹¾kwš»·*ÝctN‚„#‘?‚‡-ñ»+ž$ñsCízxû ÕûÞa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑä꜡}cK,°Eåè­=Ábs•æ4´x*Ÿ’‡qÛ°n˜ÊU[„ ÌçÈÃ/-'{öj´¤²™aŒ[qEŒ •¶LBAfÇPÜŠ8Ô1·õ­ØCtþR]B¶^[ó!¡²Å‚ æëοÑÄQb–¯l/&ƒAï£;™^¹£÷îs};M‹No”¾ íi2äÌO<‘¹5ÅÍù¹ñªmk£õP,Æ0.ýˇs_7Ú­F«qq¡=CRO¯ObŽFIˆcÉÑjµÚòÓ’_õþoþd)êF~[­ôvSb›-˼}Ôjí.øT£ˆ.E³+u˜[v•]=c±AçŒ>˜ûÔüu}"ú˜&ÅhãÉèmûâú»ñÄÊ.õeí±/=¼Â¡›[$½µ¼ÿmtù÷C˜¢ÆuœÃ(éqDsñ„ˆæmÝã\á9¡Ç§jª=Í>sœ!ÇÅz×°V˜™‡-—˜Š*ƒêâLÂÈ Ë1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ Ç¡“  “JcäÄ)˜oÃ(]Î7ˆ!É Vzm.Ì‚õ, aeU,Ï“)‹ô£¯S¹z¹tÎÌÉëžÃiƒ€îÁL*ú‚¬G•; ì•L)mJiËàxï!È L`Ô¬e“€b"B2ØOŽ3Â'„c‚‰‡Èì ØÏcïq›^4¤¡µ9Kh \»Ötž1å&B{´_GI 8e Ë]•×n¯;½¼±ûÝ VÉü*&ÓªóŽf)“ò#Ô ¬.õ¤̔ëJ“ ¼ÿ™=M @LNLn¦8NÖµ’É»(™!ÃÑà÷”Çk4ä—ä#âþHýUDøÐLëo“kãkxÍ ,¯Ç`0JyĆÀkÝMBWñ:_ÿ\ÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽî5Õ³´µp[Ä4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"J6Au‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºÏSíU¯=}B1‰a-¼{ƒ±¢mšÿ·‹H¥ŠÚ/«7b(R"Q›ÇI;ƒ vºÚ,@w•T`é»kìÜݤáƒÇØ7¨$I̘Ý7¢÷0 ÄÂpD²*Æx£ 2A³q„¼ÒÉ÷Fwzÿ9Âsƒ&JVÒÌV‚¢¢'úè°måÂ$F!j ÝìzØ=»vzÏ®ú…UqI„Úý2½õ° %Ï”ô˜ö”í”q¼e[ е)± •ó9ömŒùi\íópkêÎ Õ²‡VdŒ~\þî †` ZO8T718™ÝR'¢¿áã¬æ‰æ­È¥¦ZEOBÔ—.`z>ÓdÜ"¥š}rXôP9ñ´iáÜŽ'ƒS¼ÜW¼ýƒ×BÒJ0Ë¡7vnv²xK?ýBz~¥'Â¥ë úC½‰ÝüjÐ[·we;wps¹}¾ò"F€„>¨fs¹›Ìb±Iß\ë)Ïí¹7ÿFÑ…ô¹Gfî ÝÖ47kÿãðYm°}K–í)”zUHÚ½Ì}%`çXY.¼K´·’$Üæ,Ñ)¨MàH´Gã‡åŒ…æÜ*4B_Ò—‹Œ.WûP©`uá@žâ­ ÍIP²RÍ@4K³*Ô2ÕÕG‘Ù󵩽eA=(.%‚ ü£Þ‹2×ׯ¹NnÚWt‡)6¿RyóÓ¡@%–N6‡'Nd)ÌïÕ‹.ëéuÏho^acN,ÏU ÕtÒ\aåÍåùAÃÆjÂ1v rÕ‚#7 k*=oYNv€>NÏv²ã{ìމÛŸwȸ´ZÎ3gòà­µ ÉœµÁ `©Åóµ}ŸÈt¢aeæKÀ³€£e— þÐC³²CV• —Gx¦ÑG-Æ›N âÓ(-0…güœê‰a½=r>¸wÝê#û£”¢ÑÈ>k¡Šƒ ŽÝ Æ<™¹AR±v1ÎóçÏos¿ûpgl´\VÀ0hæã_=êœ%Qž_ÆßÒS?§tÐÐGn]Zî^útADXcÿøAúLO¬/$³*«“¬I…ÕÅ^R\]§¹Õð1eKÓ“DOÐvZP5€ÀÐlĺíT¸c]\ážH»0‡«¶‰=ÝìVSVt‰=^Pò±ù}ÉÿPK yºZ<IAR-STR912/examples/RTC/.svn/UT •LjKʈKux êëPKxºZ<¼$,Â¥6$IAR-STR912/examples/RTC/.svn/entriesUT “LjK“LjKux êë­Ó=Û0 à]è_±MQßÙŠN]ÓL·EårMÃVzùùUzE€nFëw B~@R„ȧYhDñZë´ì†¦éVy©ýòsì—ëm&.×ùÈýÈuhßæëµ>‹†:߯Ãt޵]–áëç}÷í°¾ÇËtæeؾüÛí¢BºCu¸3°“¶wư/B¡oñÂËqæq‰r:³øøg«ìÐÀídØi×Ãï¼')+R†<+…:PQ%TP%ùð_à?‘AÓ`—x{Zç*FÖÈ$‹””vì£#Ë!)•¶pi©ä³_y+&ÌЄÖôP¤âP;ã±$£Kئ_Fyû„½¯ƒiº ³v–r”Èû`‘´ÛÀ܃Å1_¸¯÷ºR­jKæ² *IôQðQšlm2~™•ÐhAÞ¿Óu,ýë:šA¯1›³ÊÚÓâT{ è-x2e š²m+>h§ºvý&Ã.ªì"±*m½¨Ø²D¢m¦iÕãYþPK xºZ<'IAR-STR912/examples/RTC/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/RTC/.svn/text-base/UT “LjKʈKux êëPKxºZ<(ø™3{7IAR-STR912/examples/RTC/.svn/text-base/rtc.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¨$Y/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKxºZ<1d¢V'L7IAR-STR912/examples/RTC/.svn/text-base/rtc.ewp.svn-baseUT “LjK“LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×gíFë™…©Ç|Bƒ_Ÿ‘˜ýôæÍë·?µŸýöî‡ïø¾qö {n,«3'!¾K‹¾kwš»·*ÝctN‚„#‘?‚‡-ñ»+ž$ñsCízxû ÕûÞa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑä꜡}cK,°Eåè­=Ábs•æ4´x*Ÿ’‡qÛ°n˜ÊU[„ ÌçÈÃ/-'{öj´¤²™aŒ[qEŒ •¶LBAfÇPÜŠ8Ô1·õ­ØCtþR]B¶^[ó!¡²Å‚ æëοÑÄQb–¯l/&ƒAï£;™^¹£÷îs};M‹No”¾ íi2äÌO<‘¹5ÅÍù¹ñªmk£õP,Æ0.ýˇs_7Ú­F«qq¡=CRO¯ObŽFIˆcÉÑjµÚòÓ’_õþoþd)êF~[­ôvSb›-˼}Ôjí.øT£ˆ.E³+u˜[v•]=c±AçŒ>˜ûÔüu}"ú˜&ÅhãÉèmûâú»ñÄÊ.õeí±/=¼Â¡›[$½µ¼ÿmtù÷C˜¢ÆuœÃ(éqDsñ„ˆæmÝã\á9¡Ç§jª=Í>sœ!ÇÅz×°V˜™‡-—˜Š*ƒêâLÂÈ Ë1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ Ç¡“  “JcäÄ)˜oÃ(]Î7ˆ!É Vzm.Ì‚õ, aeU,Ï“)‹ô£¯S¹z¹tÎÌÉëžÃiƒ€îÁL*ú‚¬G•; ì•L)mJiËàxï!È L`Ô¬e“€b"B2ØOŽ3Â'„c‚‰‡Èì ØÏcïq›^4¤¡µ9Kh \»Ötž1å&B{´_GI 8e Ë]•×n¯;½¼±ûÝ VÉü*&ÓªóŽf)“ò#Ô ¬.õ¤̔ëJ“ ¼ÿ™=M @LNLn¦8NÖµ’É»(™!ÃÑà÷”Çk4ä—ä#âþHýUDøÐLëo“kãkxÍ ,¯Ç`0JyĆÀkÝMBWñ:_ÿ\ÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽî5Õ³´µp[Ä4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"J6Au‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºÏSíU¯=}B1‰a-¼{ƒ±¢mšÿ·‹H¥ŠÚ/«7b(R"Q›ÇI;ƒ vºÚ,@w•T`é»kìÜݤáƒÇØ7¨$I̘Ý7¢÷0 ÄÂpD²*Æx£ 2A³q„¼ÒÉ÷Fwzÿ9Âsƒ&JVÒÌV‚¢¢'úè°måÂ$F!j ÝìzØ=»vzÏ®ú…UqI„Úý2½õ° %Ï”ô˜ö”í”q¼e[ е)± •ó9ömŒùi\íópkêÎ Õ²‡VdŒ~\þî †` ZO8T718™ÝR'¢¿áã¬æ‰æ­È¥¦ZEOBÔ—.`z>ÓdÜ"¥š}rXôP9ñ´iáÜŽ'ƒS¼ÜW¼ýƒ×BÒJ0Ë¡7vnv²xK?ýBz~¥'Â¥ë úC½‰ÝüjÐ[·we;wps¹}¾ò"F€„>¨fs¹›Ìb±Iß\ë)Ïí¹7ÿFÑ…ô¹Gfî ÝÖ47kÿãðYm°}K–í)”zUHÚ½Ì}%`çXY.¼K´·’$Üæ,Ñ)¨MàH´Gã‡åŒ…æÜ*4B_Ò—‹Œ.WûP©`uá@žâ­ ÍIP²RÍ@4K³*Ô2ÕÕG‘Ù󵩽eA=(.%‚ ü£Þ‹2×ׯ¹NnÚWt‡)6¿RyóÓ¡@%–N6‡'Nd)ÌïÕ‹.ëéuÏho^acN,ÏU ÕtÒ\aåÍåùAÃÆjÂ1v rÕ‚#7 k*=oYNv€>NÏv²ã{ìމÛŸwȸ´ZÎ3gòà­µ ÉœµÁ `©Åóµ}ŸÈt¢aeæKÀ³€£e— þÐC³²CV• —Gx¦ÑG-Æ›N âÓ(-0…güœê‰a½=r>¸wÝê#û£”¢ÑÈ>k¡Šƒ ŽÝ Æ<™¹AR±v1ÎóçÏos¿ûpgl´\VÀ0hæã_=êœ%Qž_ÆßÒS?§tÐÐGn]Zî^útADXcÿøAúLO¬/$³*«“¬I…ÕÅ^R\]§¹Õð1eKÓ“DOÐvZP5€ÀÐlĺíT¸c]\ážH»0‡«¶‰=ÝìVSVt‰=^Pò±ù}ÉÿPKxºZ<3ÈjÜ<7IAR-STR912/examples/RTC/.svn/text-base/rtc.ewd.svn-baseUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKxºZ<5íÁÐJ:IAR-STR912/examples/RTC/.svn/text-base/readme.txt.svn-baseUT “LjK“LjKux êëµTMoÛ8½ðxÇ6ðú#ûm F¢-úÈRt‚œ U¢m¢’eP’þûJ©›¶ÙÓ¶„gÞ›7ÏžY\½rð&x‹ »}b)\/— W‰)m«k]:ÛžLÙá5èÕÕtr…©5ҢѸœ5¤.ªFÏÝ“ó)¬wÇÖâåY# B°ó¹6eáL{‚ÒEã“ÃÂi"µƒèº^W>yùûbõ×b·Æ¶G¬æË »Òšó@raùØîáŽRÐOEs®5Á~øñR"Ó¹Ö~Zû;I¾¾ö’ÿüJòõçØoß·³zŽýW«?^2TÄq+yÎS…<Û¨{&9î#D96™Äv'B–Y?€‰$S„ÉîD(Ò-‚]®²„Ë÷BEDdûH 0%²’o™^©žî•S2r9T¢X•!gwJ$|NlŒÊ>ßÅjæÿ˜"y d–Š G±8Fš)ÜpD< vó‘¥…¤ì•oÄI‘ KsþÏŽÚ,Fȶåc¾Ø-åy%ÄcÏRä¾Ì’Á5bP÷tä;2ìâKÃÅØv9GÂBŽ›‡Nb¤øÖ©Á¾T1‘òº‘œ ¢ÞR’ä­$~íâüçü§>N ª/Ã4¼ûþø\u4ÝçñBÙžöæÐ[Ý]&Ï™FÏ*?ÛÅ©BQ¶™{ÜýQŸ†¤á mYö¶Ã›Õ&šªÃÞ¶ÍÆj`z;CMWšŒí­È~¯ðhê+¬ƒké;j=¥5FSé9œ>¹îµ¦“¿WOï}•ù±ù` ÏEǵ7~q4…9ÍËqÍ$tÇÙ¶ëW—'0nŒ ªdmv8R»5M±—µ^\ßi÷ŠéDЦ²•¶>¥)>êÁ•gv<¶öã ŸÚMO›±j‡è¾­ëöÑœX{þ_ ûÑÌËž›N¯ýºÿsëÿ PKxºZ±š¹žUùCC²cò»*«A‰È?oª¦Æ ÂÿòRü|]—Õã•úŒBG ½|&ÔÙÆÎ^nÂ~ŠumðP,| “„r àñHÜ„ÂÏ\‡QœÀ8e‰\ qÜa!"0'¾f‹Æà¦\Ä!M8Ü0á+N7n,ÂôGÐ1I/d‰J÷RWpAœx4iJa,'× é Þ$ài Þ©ãÈÜ$¦uEGÌåÀ}ņ|x02 hCI¢[ðX‚èwX«ý¤1䯧ŸRÜ9#x$$cÚnBU› PiQnÐn;a\ma”ÄaÓ8d˜Þð€§Ø´]Iä Ú-AÊ)„Ä£0¼Ýëf´z³ÚF‚°ˆz¸¡„b“ð}ŠRílD>ïäß?уã#õ÷*_s¹€éT½Ê(b4ŧü ]y!5ïñÑT ßÊê äÜm Yá‹»*çþÝà›<—³rµ’E õ½„E¹\–ßòâ3,[[s0زŸòŸ˜Ý½Ì'1ê6[oû²cí GV¶–miEü‹Ö£ÃtÜrv- þL†gݶ;¿§-ú€Ë:à³…¯™Û·*BuÛÒæb^HúC¨nOÝû¬(äÒê Ø]§+pÚ8ë œw.º—¿yô4d}›‚PÝž³â‹uÐkô:½§F‰£þGÄnª–ö¥B¨‘ Gv_*„ê¶¥;lÝáès“ÆwêìÍ0ÔLK³mÍv4ûT³Ï4û\³/4ûR³ßköãNaž;*‰¸k> ;"‰Bƒ í(„fI)I„é)î1)è ‡õÂc¿ð8æ¦ðIßcPݶt‡y"»$ê[ ¡æ¯0¯÷7 BÍCÂ÷ÞØHŜުªÛ–î°ÃhD»O>ÌÛ²ýcXx`³¼˜ºÕãºÎ–°¨äYÌák¶ÜHxýÑÿñfßÞiv·¨ýä½÷é§snYjÉbž/~§çÏ×îf×ð^¬öoqÛKØ¡nþÁïCyêŠ;b}êôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZøcͶÁq˜06mlKئ¤Ôœ[0,½Ï‰ËrÔ Š2ßüs†+·4 m¢L_­£MÉ µn«e{–OKzî„´!’”;wþ “VçPsŒŽZÌ|&šaÂàv›-BФJ–Ò¶ÍÑj–c¸ ÏÄ$YÒæ (š–"w3ÙþáõÑyýêõ«êJ¢¸X°~>zç®øàã‡Þ—yÌïÚ«ßËHÓŒ?ÐAO¶`ËcR¤#²ñ„µ‚gŒë¯ÁãRòŒñ!Ìxx“hb¤[nN‡_³~i0´À„†© š­yã0[“i4µÜ¹•p`î Ì= iôEVD‚|ŠË àýÑË"‰ä%»ÉR‘ÒÆ}·ügi¨LCõ<²ë@ë!å‹S´üÿð†/©Ä s0Ñï»+î[§}9Ç’_Òýûúl>Ñí?ü´È"¦§É’ß·*ãÜõõÓ>%«s6ËàOs+Ysa ˆâ4ú ¹DË ’ŒSüçiÖ $ëÍ=äÄœÐMö±ËÂØ>/®¡§›Rµé@AtŠ[rÏç¸çç¦C÷¢¤f •šìˆRßVX÷XÎD‰4,¿„‚Z+ÓB@º¤ËÒ ¸y*ñ8ɰ²€`ƒ¹Ÿ^¶{°DÉyºa†g<½yr¿'î®n¢¸¬•©Üj™UBdŒ »%]ÔÔvNUw[>Oyr ÕÓ¼×ßëdðŒÉú¼®<ÝBl ±ß›NÓuý4ŸùjZÄñ~g-,K0 ¡xÑØP²]ÈùIO«’™¯S_`Šé¸Ã‰¼p{È­ø¾&SN“íEø„Eôúpp`b†<ÀGÆ>+ðå!l ¬<àušˆÕ· 5Xy6 O,¤²÷²`éÙ@F,Áå“â‹ît‰¬<˜²×^ááÍé¸}8¸+ÏtÍ“B0 [/¶ôl€s†»¹ø/àÊs'róo3Ô‘žåÆ9š’Ås"S¨¨©wøLÐ y‹¬§ßN¦¬A¼è¾Ø!¸Eì/H%AÆîñ›e[‘²UeürQH÷F-+øË»»on±"xywv7ZQl÷©w€c‡bÿfɹ,kdiI»º#ÔŒãéÆá}‹~ mm4×”ÏN¼ˆÜʈKôÞRKo}½hÕ-e¯à²Ë(…~\Ñgaë'b1A"|lEþ\Šê€‹6iL°{Pì“3*ëi ç'Šªs¶{ºÀ¯É;ì¯{«HKfòªÒ*ŶzôÒ Þ€šX‹_wûüc¯K£Ïß¾-›Šº¢o2.Ø ¾¦ åÐ<ÇfYùÍ%[¯B|%Å_뷞Ξúïùž7ƒ¾P†–m–ßÿPKxºZ<ÒÔ¦%Èô(IAR-STR912/examples/RTC/.svn/all-wcpropsUT “LjK“LjKux êë½Ò½‚0Àñ½O¡ '‚°u0$H\MSJ$BÛ´åñ?¢› ëµÉïÉ¥³ $¦‰e‰¦—‚vIǵ©¤X´º&çY´$0¼k)˜R-rƒ0&0üƒUêVÜ@ÕK©‡M¶8åYìÀ{Ú¨šÈò-ÙwD#ó¸U$ýÉ®±ð&G¾¡•ðØzäJ‰ŸÝ‹éw/¾x;=oŸ<§EÃ=ìñwÁÚwVðQLjØï/LŠÒ»Nñ¥¾#*üë c— s ¸PK xºZ<#IAR-STR912/examples/RTC/.svn/props/UT “LjKʈKux êëPK xºZ<!IAR-STR912/examples/RTC/.svn/tmp/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/RTC/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/RTC/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/RTC/.svn/tmp/props/UT “LjKʈKux êëPKxºZøcͶÁq˜06mlKئ¤Ôœ[0,½Ï‰ËrÔ Š2ßüs†+·4 m¢L_­£MÉ µn«e{–OKzî„´!’”;wþ “VçPsŒŽZÌ|&šaÂàv›-BФJ–Ò¶ÍÑj–c¸ ÏÄ$YÒæ (š–"w3ÙþáõÑyýêõ«êJ¢¸X°~>zç®øàã‡Þ—yÌïÚ«ßËHÓŒ?ÐAO¶`ËcR¤#²ñ„µ‚gŒë¯ÁãRòŒñ!Ìxx“hb¤[nN‡_³~i0´À„†© š­yã0[“i4µÜ¹•p`î Ì= iôEVD‚|ŠË àýÑË"‰ä%»ÉR‘ÒÆ}·ügi¨LCõ<²ë@ë!å‹S´üÿð†/©Ä s0Ñï»+î[§}9Ç’_Òýûúl>Ñí?ü´È"¦§É’ß·*ãÜõõÓ>%«s6ËàOs+Ysa ˆâ4ú ¹DË ’ŒSüçiÖ $ëÍ=äÄœÐMö±ËÂØ>/®¡§›Rµé@AtŠ[rÏç¸çç¦C÷¢¤f •šìˆRßVX÷XÎD‰4,¿„‚Z+ÓB@º¤ËÒ ¸y*ñ8ɰ²€`ƒ¹Ÿ^¶{°DÉyºa†g<½yr¿'î®n¢¸¬•©Üj™UBdŒ »%]ÔÔvNUw[>Oyr ÕÓ¼×ßëdðŒÉú¼®<ÝBl ±ß›NÓuý4ŸùjZÄñ~g-,K0 ¡xÑØP²]ÈùIO«’™¯S_`Šé¸Ã‰¼p{È­ø¾&SN“íEø„Eôúpp`b†<ÀGÆ>+ðå!l ¬<àušˆÕ· 5Xy6 O,¤²÷²`éÙ@F,Áå“â‹ît‰¬<˜²×^ááÍé¸}8¸+ÏtÍ“B0 [/¶ôl€s†»¹ø/àÊs'róo3Ô‘žåÆ9š’Ås"S¨¨©wøLÐ y‹¬§ßN¦¬A¼è¾Ø!¸Eì/H%AÆîñ›e[‘²UeürQH÷F-+øË»»on±"xywv7ZQl÷©w€c‡bÿfɹ,kdiI»º#ÔŒãéÆá}‹~ mm4×”ÏN¼ˆÜʈKôÞRKo}½hÕ-e¯à²Ë(…~\Ñgaë'b1A"|lEþ\Šê€‹6iL°{Pì“3*ëi ç'Šªs¶{ºÀ¯É;ì¯{«HKfòªÒ*ŶzôÒ Þ€šX‹_wûüc¯K£Ïß¾-›Šº¢o2.Ø ¾¦ åÐ<ÇfYùÍ%[¯B|%Å_뷞Ξúïùž7ƒ¾P†–m–ßÿPKxºZ±š¹žUùCC²cò»*«A‰È?oª¦Æ ÂÿòRü|]—Õã•úŒBG ½|&ÔÙÆÎ^nÂ~ŠumðP,| “„r àñHÜ„ÂÏ\‡QœÀ8e‰\ qÜa!"0'¾f‹Æà¦\Ä!M8Ü0á+N7n,ÂôGÐ1I/d‰J÷RWpAœx4iJa,'× é Þ$ài Þ©ãÈÜ$¦uEGÌåÀ}ņ|x02 hCI¢[ðX‚èwX«ý¤1䯧ŸRÜ9#x$$cÚnBU› PiQnÐn;a\ma”ÄaÓ8d˜Þð€§Ø´]Iä Ú-AÊ)„Ä£0¼Ýëf´z³ÚF‚°ˆz¸¡„b“ð}ŠRílD>ïäß?уã#õ÷*_s¹€éT½Ê(b4ŧü ]y!5ïñÑT ßÊê äÜm Yá‹»*çþÝà›<—³rµ’E õ½„E¹\–ßòâ3,[[s0زŸòŸ˜Ý½Ì'1ê6[oû²cí GV¶–miEü‹Ö£ÃtÜrv- þL†gݶ;¿§-ú€Ë:à³…¯™Û·*BuÛÒæb^HúC¨nOÝû¬(äÒê Ø]§+pÚ8ë œw.º—¿yô4d}›‚PÝž³â‹uÐkô:½§F‰£þGÄnª–ö¥B¨‘ Gv_*„ê¶¥;lÝáès“ÆwêìÍ0ÔLK³mÍv4ûT³Ï4û\³/4ûR³ßköãNaž;*‰¸k> ;"‰Bƒ í(„fI)I„é)î1)è ‡õÂc¿ð8æ¦ðIßcPݶt‡y"»$ê[ ¡æ¯0¯÷7 BÍCÂ÷ÞØHŜުªÛ–î°ÃhD»O>ÌÛ²ýcXx`³¼˜ºÕãºÎ–°¨äYÌák¶ÜHxýÑÿñfßÞiv·¨ýä½÷é§snYjÉbž/~§çÏ×îf×ð^¬öoqÛKØ¡nþÁïCyêŠ;b}êôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<5íÁÐJ"IAR-STR912/examples/RTC/readme.txtUT “LjK“LjKux êëµTMoÛ8½ðxÇ6ðú#ûm F¢-úÈRt‚œ U¢m¢’eP’þûJ©›¶ÙÓ¶„gÞ›7ÏžY\½rð&x‹ »}b)\/— W‰)m«k]:ÛžLÙá5èÕÕtr…©5ҢѸœ5¤.ªFÏÝ“ó)¬wÇÖâåY# B°ó¹6eáL{‚ÒEã“ÃÂi"µƒèº^W>yùûbõ×b·Æ¶G¬æË »Òšó@raùØîáŽRÐOEs®5Á~øñR"Ó¹Ö~Zû;I¾¾ö’ÿüJòõçØoß·³zŽýW«?^2TÄq+yÎS…<Û¨{&9î#D96™Äv'B–Y?€‰$S„ÉîD(Ò-‚]®²„Ë÷BEDdûH 0%²’o™^©žî•S2r9T¢X•!gwJ$|NlŒÊ>ßÅjæÿ˜"y d–Š G±8Fš)ÜpD< vó‘¥…¤ì•oÄI‘ KsþÏŽÚ,Fȶåc¾Ø-åy%ÄcÏRä¾Ì’Á5bP÷tä;2ìâKÃÅØv9GÂBŽ›‡Nb¤øÖ©Á¾T1‘òº‘œ ¢ÞR’ä­$~íâüçü§>N ª/Ã4¼ûþø\u4ÝçñBÙžöæÐ[Ý]&Ï™FÏ*?ÛÅ©BQ¶™{ÜýQŸ†¤á mYö¶Ã›Õ&šªÃÞ¶ÍÆj`z;CMWšŒí­È~¯ðhê+¬ƒké;j=¥5FSé9œ>¹îµ¦“¿WOï}•ù±ù` ÏEǵ7~q4…9ÍËqÍ$tÇÙ¶ëW—'0nŒ ªdmv8R»5M±—µ^\ßi÷ŠéDЦ²•¶>¥)>êÁ•gv<¶öã ŸÚMO›±j‡è¾­ëöÑœX{þ_ ûÑÌËž›N¯ýºÿsëÿ PKxºZ<(ø™3{IAR-STR912/examples/RTC/rtc.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¨$Y/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK wºZ<IAR-STR912/examples/CAN/UT ‘LjKʈKux êëPKwºZuG ÜÓÐ3LêÛòúÑï¹^—-EÓêE¨ëGlmU™ú¶§~•å5åJܘŒÇ¸3•ýWä÷Ưw‚ ù k2WÚ§bCžaQ)¬oÞú–ÃÁÇÉÃßAöÑH̵+ ½ø 7&LÉàgühfª BçÚ­ŠIÜ›ÒÔ½Hé=‹[æøó@¦îäôŒóçsaüwÉ ôÉ­[i\6å]v¾qâÞº»C<Ú›–.‡•í¬7¤µ½'µ1 á¼õávC'.¥þ‚­{*Û˜®¼ÉÑÏïl]=ÜÑÄ‘''GÅŸLâÔ’þï“l{ÔîÒ¿7Úè¿\¡<‹Ãd˜‰„÷øPKwºZ<$IGOqLIAR-STR912/examples/CAN/can.ewpUT ‘LjK‘LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×§íFë©…©Ç|Bƒ_Ÿ’˜½zûöçw¯ÚO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿ¦Ó²iõH,ÎA’ù4¡n'ÐÇò^üùX‡nZÒ~£Ù‚]êCúÌÇÅò¶4A\%ÂZ¶]*l5Íðqìq¢òK|•„¡5g|‰ÔümèŽÝDœ©–Q díø*øb_Šø½¹¡v5¼ùŽêýà0ŽÜY¨XĶ®&G d‰{d6Æ!,„¸ò¦ŒC´:jHêiÏhryÎ%Ø¢rt‡Öž‹`±¹JsšÎ‹Oå³B2ã0nÖ5³B¹jb‹Pùyø¥ådÏ^B–ô@63Œq+N¢ˆq¡Ò–I(Èì^àŠ[‡:梾{ˆÎ_ªKȶÀkk2$T¶XpÁ|Ýù7š8JÌò•íùd0è}r'ÓKwôüνvî.¡o§iÑéµÒWc¡=M†œù‰'2·¦¸9?5Þ´mm´ŠÅÆ¥q_'pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ__ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^?"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^—Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬¬‡hƒ%Ú[Ins–è”Ô&p$Ú'Œ£ñýrÆBsn•¡¯é{EF—«}¨T°ºÀp OñÖ„f‡$(Ù ©f š¥YHj™jê£ÈìùÚÔÞ² —APHþQ¯D™ÇëƒëW‡\'7í«ºÅ›_©¼ùéP KH'H›Ã'²æwêE—õôªg?6ˆ7¯°1'–ç*j:i®°òƒæòü ac5á ;¹jÁ‘µ•ž·¬';@§g;Ùñ=ö ÇÄMŒÏ;d\ Z-ç™3yðÖZ‡dN‚Ú‰`°ÔâùÚ¾Od: Ѱ2ó%`ÈYÀѲK¿ï¡YÙ!«J†Ë<Ó‡h£ãM§ñi”˜Â3~N õȰÞ9ÝÛnõ‘ýQJÑhdŸµPÅÁÇncžÌÜ ©X»çÙ³g7¹ß‹}¸36Z.*` ´NóáuÎ’(ϯ@ã‡oé©_R:hè·.-w'}:IKìŸ>H}é‘ÕaUÖ’Y•ÕÅ^Reu+âW×in;ìXßIK–Dè¼´ j‘ÞˆuÚ©p¶¿¸Â=‘va+Vm{ºÙ­¦¬èz¼ ¤wóŸ “ÿþPKwºZ<2Wñ±{IAR-STR912/examples/CAN/can.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&91O/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK yºZ<IAR-STR912/examples/CAN/.svn/UT •LjKʈKux êëPKwºZ‰ëÙG2©7Er©ó,D÷_À„Vó{[ &Ä'6•/Û ‰Š ‹Öb³¤mÀ|ź¤ÓÐò:ªB%B’@Ò'Šá”J u!…tá-¨"W±ö’òEÚ徬 jBƧš‘Áh ¦š` ȘJa›À¢ÁÇ"Çu\ÂV×f§²Ç,˜É:@£=c½ —u±‚E¼çëPÚ—ul%›ÌBÐ5:'„N{Û;1P6i¿¶õ7ú@;-k{Ö;¦‘3™hc‰ÅEʶ7†u‚°IhΙ÷¢ýPK wºZ<'IAR-STR912/examples/CAN/.svn/prop-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/CAN/.svn/text-base/UT ‘LjKʈKux êëPKwºZ<$IGOqL7IAR-STR912/examples/CAN/.svn/text-base/can.ewp.svn-baseUT ‘LjK‘LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-–솢 sÝ@_Þ‘<Þ=¤Üùm½ ­æ1aô×§íFë©…©Ç|Bƒ_Ÿ’˜½zûöçw¯ÚO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿ¦Ó²iõH,ÎA’ù4¡n'ÐÇò^üùX‡nZÒ~£Ù‚]êCúÌÇÅò¶4A\%ÂZ¶]*l5Íðqìq¢òK|•„¡5g|‰ÔümèŽÝDœ©–Q díø*øb_Šø½¹¡v5¼ùŽêýà0ŽÜY¨XĶ®&G d‰{d6Æ!,„¸ò¦ŒC´:jHêiÏhryÎ%Ø¢rt‡Öž‹`±¹JsšÎ‹Oå³B2ã0nÖ5³B¹jb‹Pùyø¥ådÏ^B–ô@63Œq+N¢ˆq¡Ò–I(Èì^àŠ[‡:梾{ˆÎ_ªKȶÀkk2$T¶XpÁ|Ýù7š8JÌò•íùd0è}r'ÓKwôüνvî.¡o§iÑéµÒWc¡=M†œù‰'2·¦¸9?5Þ´mm´ŠÅÆ¥q_'pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ__ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^?"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^—Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬¬‡hƒ%Ú[Ins–è”Ô&p$Ú'Œ£ñýrÆBsn•¡¯é{EF—«}¨T°ºÀp OñÖ„f‡$(Ù ©f š¥YHj™jê£ÈìùÚÔÞ² —APHþQ¯D™ÇëƒëW‡\'7í«ºÅ›_©¼ùéP KH'H›Ã'²æwêE—õôªg?6ˆ7¯°1'–ç*j:i®°òƒæòü ac5á ;¹jÁ‘µ•ž·¬';@§g;Ùñ=ö ÇÄMŒÏ;d\ Z-ç™3yðÖZ‡dN‚Ú‰`°ÔâùÚ¾Od: Ѱ2ó%`ÈYÀѲK¿ï¡YÙ!«J†Ë<Ó‡h£ãM§ñi”˜Â3~N õȰÞ9ÝÛnõ‘ýQJÑhdŸµPÅÁÇncžÌÜ ©X»çÙ³g7¹ß‹}¸36Z.*` ´NóáuÎ’(ϯ@ã‡oé©_R:hè·.-w'}:IKìŸ>H}é‘ÕaUÖ’Y•ÕÅ^Reu+âW×in;ìXßIK–Dè¼´ j‘ÞˆuÚ©p¶¿¸Â=‘va+Vm{ºÙ­¦¬èz¼ ¤wóŸ “ÿþPKwºZuG ÜÓÐ3LêÛòúÑï¹^—-EÓêE¨ëGlmU™ú¶§~•å5åJܘŒÇ¸3•ýWä÷Ưw‚ ù k2WÚ§bCžaQ)¬oÞú–ÃÁÇÉÃßAöÑH̵+ ½ø 7&LÉàgühfª BçÚ­ŠIÜ›ÒÔ½Hé=‹[æøó@¦îäôŒóçsaüwÉ ôÉ­[i\6å]v¾qâÞº»C<Ú›–.‡•í¬7¤µ½'µ1 á¼õávC'.¥þ‚­{*Û˜®¼ÉÑÏïl]=ÜÑÄ‘''GÅŸLâÔ’þï“l{ÔîÒ¿7Úè¿\¡<‹Ãd˜‰„÷øPKwºZ<Ô¾õ1Ø<7IAR-STR912/examples/CAN/.svn/text-base/can.ewd.svn-baseUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<1î¯Ûà:IAR-STR912/examples/CAN/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµWMoÛ8½È —¶èÆ’òÕæFS´M¬>\‘J“¡Øt£Ö–RYÞ6ýõJ±+ie® t™üFoÞ¼S 3xÛ³à5}4œÞG|<‘àXÖé§ó"W+5/‹Øßgó<[ž=j Ù–yÍu>u<=­ÒyR¦yR%kMv“R¡h±)o6[µÐdër`¿TÖnàVaŸYU‚ÚÌ‹ô©Ù«{éC‘Ï M¤Ÿ¶EUã éxi“tSæÅóþŒFG½nuvÏ.þÝ„ýòìPƒÿƒc9a0˜`Žä‰ÜM80 #ÇÜ%eÞ=î sÂ[îò` 42ôY$àŽË‰Ö¤aõ€˜îÉÃ"6&QÅ‚<ÒénL¥@„‘Ë¢ª>óA† È-É}vDTÛDìÉwz;r…ÌcTFaÀ©1!žA(aÈ`Â<¢a ØÇ;çÄ—ødÌê&tµ)µ-@½ºíˆ ÝÂ( ýjp¨ 1½Òˆqhû’ÀÔ-A,øÄe0¼oL 3jî°ê’ð€¹ØPÄpHø‹±MéqV&Û“üó;zpz¢^¥Ël¡–0›éWMŒfø-¿ÂPš©Nôôd€[*‡oyñÒ ¶Ë¥*ðÅ]ç Ÿ·ø&/Ô<_¯UVBù¨`™¯Vù·4û+­V× vê×üeÚȬø ³¡Ìái»‹Ö/;Ö.ðÈJ6ª.­…ɺlµâ¡·œös»ÁìÛGbYmh˸>1–ùey†Ô†2¢}L²L­¬þ°ÝvúÃçýá‹þðeøª?|]{‡À|~ìÚ¨h6L²/VOÌî‰9=±s£µÑñÖFÚšAêŽÇÇJ!Õ(…'ã±RHm4ÈjC» 64g<åáAÍwD;Ðê`»ƒ>ïà‹¾ì૾îà÷üÁØi$ͧAcàH5J jÞ{!$…|ƒ¥Ž'ßl)&‘4} %MmxÔÐê`»ƒó8ÄôØÉ"µ91µÚÐ|ÒR7w$…ˆ{ô^@ªùHpÇG ®ùïwŽv…ÔF»ˆ¬64ÍXÀï•îaÜúèÿ˰p{&i6£Åó¦LV°,Ô×­ÊæÏðO²Ú*xý÷äÇ›&¿¾"ì/%ÍäF-MçÒ²t“*[¤ËÿòóûkQªôï)ÍKÑîNÓ7Íßøw‹®¾1ޏÇ^&ýPKwºZ<2Wñ±{7IAR-STR912/examples/CAN/.svn/text-base/can.eww.svn-baseUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&91O/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<5†p×dA8IAR-STR912/examples/CAN/.svn/text-base/91x_it.c.svn-baseUT ‘LjK‘LjKux êëÕœkOãF†?/ÿáh+­`ÅBh»Í–•Œí©|Ûå2Î@Ü&vêsQµÿ½gÆIˆ[uc–ÑXEžyÏ9ï“ñø6°÷þ™ ¶Ìm0ý“‹€÷#è´Z¿@¹iRätL^äYš0xNº¹ñz阂O(,¶.üÖ¾¿Lùn":%å,o]pM Œétœ&1Oó "ODg+æCŒa¬¤CÑZ?ïµ?îÉʺpF &$íÝ–TP–éTFy §ŒÓ¢(§BZܦ … /yšQ¶‹ÂÞD)¸E£”Áµ@’Ä\Q(zà9 e™¸#(Ðû„ʪ°òª˜U6 ÃG1‡Iüy’”Ü¥|„†0Vñ#µÝYïóÍÓ¥ Ã#ìE3¶#3±üšßÅÅ0˜ûªˆ³dqÉó FI°ž‡yÖ\öOò¢ lšgÃ4»Ye'¸_î™u{Ìv‹£$/fAÆyz»¹±¹Aïñ8ÊÄñ8a7Ü›qæ²›O¢iï…‹ç”2Kä„^Wº0Ȇô§‰áe¿:ÜŸ™ù»³Éw®]hp`¼(«½‹™CNG$›–|ù¼äå•ßnÉ—[ÊË"{Úð²~·y:|ê{KìÞÞÜøgsãë+±ÏÉwP¯¦c†*ÍP/ÙTù¤ ×”'£5HOQÊ…⫼àša_5®€½!°­~óXKæ5à €÷Èé¸Q¥ç%Ÿ (Ÿ[Ç—x üý Åu;Š—.ð úwI×yݵ’ÓåúÔñ¤©%ôšg3xà_ÖÇ.åz’_u®~Ô ~¤/üH1|¼gn­ÏÞîE-=ѯøVC¾Ýˆ|[[òíçÉ¿*ûN#ömÙw”úýFä÷µ%¿¯–ü <꟬^Êõd¿ê\ |§|G_øŽbø¡9hpKeô_w­»íÙQƒ©Õz‚_ñ­€¼åëƒG±žÜ뮕\Wš†·>xë ¾îz <@¹ß »É¯þ„ChÉ÷}éõJ>|&V‡¸ûþc«ÕÚ~³÷yÉ–(ˆ2@YJÃà“è_ÐxX-Q¨„ó¥b‰A2¦qQ鿊_tÌh-õçChûw°Øñû!ìw¶—b†Êe‚ e,¾¡€NhÂ!+'W"Xf‘ÄÕÚ’, ZzQUÀîRžŒ¶0Y?@{»ê2Ë K…–È/ØF_.ÝðØ?úƒuç}@6]2Ý»U}³øÛHúÍÒùk†|µ=üWЄ¦·´rz†Ú;ðnþöV&Y*"ø?E éu\Žy·.}*œ×3׋Ï_gßåkÍ®¹þÁìšzË5Ï*Z  £XOêu×*îOŒ jðPÊõD¿ê\ü¥\_øßxøšð< ”r}á+~H:fƒYG¨õD¿â[ ùSŽPkK^ñ„†' Æ|xB4ó+¾Õo0摼¦c~Å·òΙµ>xëɽîZö jp3…b=±×]«X8G¼o@±žØë®U¼oø‘&7±•^OøO¼«âßdI‹ÔkÌ_ñIVÖÐdY‹ÔkÌ_ñͬ¬¡Éâ©×˜¿â.²†ƒ†ü4æ øIZxtÞàÂGÊõ¤¿ê\ÅßõN\ìK¹žðW×á?ÿ{þeíYâ/o{ıgiÿPKwºZ<„AÝŒ÷ â#6IAR-STR912/examples/CAN/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëíZëoâHÿ¼#ÍÿP·+ÍA†!òºäøà€ ¾›µyh5BÆ4Ác#?òØÙüïWÕmóÊcÂ꾜#YMuUuu¹ê×]ÝÙßÛð@©U†–>øj¨] êµÚ˜Vßu€ỷÃÀw6‰¾}³×c Ù3ùs 3Ûõ«uËI< B(>§ÐoµAžÏ=×±c7ðÁböŒ˜ÛvÌPaÅ FQÂÆÄ\;Ü—Nö¹Y§ð‰…IHÕ`‘ºs®$×nMÝ&d–ø1ZA÷’MN™Ñ=AèÆ÷Ci•P_%4è÷Ã'µ5ÌH©ièåQ2™`ÔÓê2‡¹7ø YÙWèorÀºãRÑ$•7e†`t›@KG”,B43üòõeØ7/ôóÿ@j•”hˆ7s¡ßCûžs²"RLJ¶ÍÜx‹•Vjåo¨‘†þÁ?Œiµ‡j»"–êÚToTà ?°]“*ô®ó÷ŸÀùˆ-Nͼ5$ÑtxÞ#²‡›QEˆ‰(="£0ä|´›«´:¢¥»(^ß}‹#Ň9¬ÖÀÎlÁ­Zø‘Ä‚s‹“úο΋œ¯ú»öý£~TüU7>þå¸y«®$éQÏ7ªGÏ‹<€ºp½%\t´k×ý¯ã~§¾Ï³¦ñ’°_`UOiu­”œP+[€£[7v¦P$ÈvƒŽ1ÚTžfÕϸ»cçùp°ï yHe·U>…Ìþ~¶¤¥þ´éi-§µÔŸÖrð´–Æ#Zp·h'^|Ê>¬y·Óù›Ü» çîµ»pì‹Ü:fž}_Juøb¹3–ùõ†(×éökŒÒu³vvýoÎsvýþýò*M Ó fÃ^ÌÏmçûÒÑÉÅ´qmÏý“ñ“::q³c°!ÊÎ F.–1«ˆê=Læqc±Ó:a­J«ŠQi×4°C{ÆP2jbp¶ý\ŒÓämÕ2dKJý%Ò»5Ñl†3Iã Í €f;ÂÙ¾7]ù1@0(EÌ›|ˆY— †+4- ‰}ä)qLVLËöÎåÖGø Sí)šUÑá3D+¸ë–«¶hÉ77èá1ÎNö<,¤ôÑu©œÏ +ë.¥.Õt•B¡´ÄnÙMìX߈Ÿ=Ù´rše\*óM†{3²¼X b%x‹µëÂxâê‹©­š÷.¯ ¥o½·6–’‰»ÐXl¦fÄÏ@ª?#£âõ‰uWZ•ÏŠgqÀŒ:l@Ú0¡pJuÜN餹ôîQh--x¦#÷L Î îr‘ö÷äñ(}B¡÷Aœ˜qc(2 U>MÇv'¥R¦­ªŽiU„f³øÅÞ½+2P'/s—èmÏ¡Žƒ²°d© gûGí[³IEpy­Gâ=‡‡ë=õ­2L¦œÏ|ifúG17ÈÖK„XxÀ<„ºÍbõ5±´Þ,:2d#¸|¬‚èP5~Hs´ä7!aàyyVÑ¡QZRrt°z˜yNF½•Â)Ta?…ÓÌÿ ˜æDc¨*/ëZíãÿáZM=®ó“¬\g´¸®¼`ÄϳøZ•jÑÉN1¦–Ï*¶a~SŸ ùõ]Bþéé¼ ƒ ºõ>%ÓJNM‘-K¨Tß-“`~;eB¤°„8N’¢Š­Uíî¸Ó)XñXŸ~îMXŸMnü“Ç_ªm|IÚøR}àKm£ˆþƒuÉCѳay9=Gë=Ç¢çøËKcgËË+p^„ØÒÑSdšwÿh†­íïøöŽßó§ÇÑé]¿¸ãßp }ìÀÔ®Bq«ÏÏ,Š×ÿ¦uˆ‚zC‡Á§ýõŽÝ>èP—pÍ-¬£âcüæN膦­œ_^d%Ò(¹J!ø7ÄwB­gž¡çSÙß»ÄCØâ¿ÒÊ :ã…ˆ«Ÿúé3w)SŒ¡#}‡¦,Ĉ%©ü>Ât “ðâ½t+P>Ûß#ÅÍ“~÷Ï Ò²3Ž,F³"Kgቡ¾Jh¬ ‘N[ZU‹KÞR…Hæ@D8.ÀXÜ`EÆÞêJ±¶)zJ¶’ÑèèÞØ«NÇéêrˆ¦Aâᾆþó#[åèryB7§E×O]ÿêŸ܆•ªú%q\Ëòrsf¾äp­M—ýÜV¤!¼ü÷_PKwºZ<1%bÈô(IAR-STR912/examples/CAN/.svn/all-wcpropsUT ‘LjK‘LjKux êë½Ò» ƒ0€á=Oa@Oµˆ—­´Šà`KW 1¥RMB/_•Šn:ˆkø~rNd8.R5 Jœf¸k*UΙYɽ »—œk BTš* ‡îºwpr\вb_Öo.K÷sb>žI`;@[\Š‚*¸œct‹¯ˆ`fÑ&CÑ"ëoÄÂHN|³?ß |‰sf‘º·•þ{<¡8+©¥[½àÛ[ÌÔibÿˆì6%œ½­Ïž0SLj\¯Úƒ`Ë„Áì~PK wºZ<#IAR-STR912/examples/CAN/.svn/props/UT ‘LjKʈKux êëPK wºZ<!IAR-STR912/examples/CAN/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/CAN/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/CAN/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/CAN/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/CAN/can.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<„AÝŒ÷ â#IAR-STR912/examples/CAN/main.cUT ‘LjK‘LjKux êëíZëoâHÿ¼#ÍÿP·+ÍA†!òºäøà€ ¾›µyh5BÆ4Ác#?òØÙüïWÕmóÊcÂ꾜#YMuUuu¹ê×]ÝÙßÛð@©U†–>øj¨] êµÚ˜Vßu€ỷÃÀw6‰¾}³×c Ù3ùs 3Ûõ«uËI< B(>§ÐoµAžÏ=×±c7ðÁböŒ˜ÛvÌPaÅ FQÂÆÄ\;Ü—Nö¹Y§ð‰…IHÕ`‘ºs®$×nMÝ&d–ø1ZA÷’MN™Ñ=AèÆ÷Ci•P_%4è÷Ã'µ5ÌH©ièåQ2™`ÔÓê2‡¹7ø YÙWèorÀºãRÑ$•7e†`t›@KG”,B43üòõeØ7/ôóÿ@j•”hˆ7s¡ßCûžs²"RLJ¶ÍÜx‹•Vjåo¨‘†þÁ?Œiµ‡j»"–êÚToTà ?°]“*ô®ó÷ŸÀùˆ-Nͼ5$ÑtxÞ#²‡›QEˆ‰(="£0ä|´›«´:¢¥»(^ß}‹#Ň9¬ÖÀÎlÁ­Zø‘Ä‚s‹“úο΋œ¯ú»öý£~TüU7>þå¸y«®$éQÏ7ªGÏ‹<€ºp½%\t´k×ý¯ã~§¾Ï³¦ñ’°_`UOiu­”œP+[€£[7v¦P$ÈvƒŽ1ÚTžfÕϸ»cçùp°ï yHe·U>…Ìþ~¶¤¥þ´éi-§µÔŸÖrð´–Æ#Zp·h'^|Ê>¬y·Óù›Ü» çîµ»pì‹Ü:fž}_Juøb¹3–ùõ†(×éökŒÒu³vvýoÎsvýþýò*M Ó fÃ^ÌÏmçûÒÑÉÅ´qmÏý“ñ“::q³c°!ÊÎ F.–1«ˆê=Læqc±Ó:a­J«ŠQi×4°C{ÆP2jbp¶ý\ŒÓämÕ2dKJý%Ò»5Ñl†3Iã Í €f;ÂÙ¾7]ù1@0(EÌ›|ˆY— †+4- ‰}ä)qLVLËöÎåÖGø Sí)šUÑá3D+¸ë–«¶hÉ77èá1ÎNö<,¤ôÑu©œÏ +ë.¥.Õt•B¡´ÄnÙMìX߈Ÿ=Ù´rše\*óM†{3²¼X b%x‹µëÂxâê‹©­š÷.¯ ¥o½·6–’‰»ÐXl¦fÄÏ@ª?#£âõ‰uWZ•ÏŠgqÀŒ:l@Ú0¡pJuÜN餹ôîQh--x¦#÷L Î îr‘ö÷äñ(}B¡÷Aœ˜qc(2 U>MÇv'¥R¦­ªŽiU„f³øÅÞ½+2P'/s—èmÏ¡Žƒ²°d© gûGí[³IEpy­Gâ=‡‡ë=õ­2L¦œÏ|ifúG17ÈÖK„XxÀ<„ºÍbõ5±´Þ,:2d#¸|¬‚èP5~Hs´ä7!aàyyVÑ¡QZRrt°z˜yNF½•Â)Ta?…ÓÌÿ ˜æDc¨*/ëZíãÿáZM=®ó“¬\g´¸®¼`ÄϳøZ•jÑÉN1¦–Ï*¶a~SŸ ùõ]Bþéé¼ ƒ ºõ>%ÓJNM‘-K¨Tß-“`~;eB¤°„8N’¢Š­Uíî¸Ó)XñXŸ~îMXŸMnü“Ç_ªm|IÚøR}àKm£ˆþƒuÉCѳay9=Gë=Ç¢çøËKcgËË+p^„ØÒÑSdšwÿh†­íïøöŽßó§ÇÑé]¿¸ãßp }ìÀÔ®Bq«ÏÏ,Š×ÿ¦uˆ‚zC‡Á§ýõŽÝ>èP—pÍ-¬£âcüæN膦­œ_^d%Ò(¹J!ø7ÄwB­gž¡çSÙß»ÄCØâ¿ÒÊ :ã…ˆ«Ÿúé3w)SŒ¡#}‡¦,Ĉ%©ü>Ât “ðâ½t+P>Ûß#ÅÍ“~÷Ï Ò²3Ž,F³"Kgቡ¾Jh¬ ‘N[ZU‹KÞR…Hæ@D8.ÀXÜ`EÆÞêJ±¶)zJ¶’ÑèèÞØ«NÇéêrˆ¦Aâᾆþó#[åèryB7§E×O]ÿêŸ܆•ªú%q\Ëòrsf¾äp­M—ýÜV¤!¼ü÷_PKwºZ<1î¯Ûà"IAR-STR912/examples/CAN/91x_conf.hUT ‘LjK‘LjKux êëµWMoÛ8½È —¶èÆ’òÕæFS´M¬>\‘J“¡Øt£Ö–RYÞ6ýõJ±+ie® t™üFoÞ¼S 3xÛ³à5}4œÞG|<‘àXÖé§ó"W+5/‹Øßgó<[ž=j Ù–yÍu>u<=­ÒyR¦yR%kMv“R¡h±)o6[µÐdër`¿TÖnàVaŸYU‚ÚÌ‹ô©Ù«{éC‘Ï M¤Ÿ¶EUã éxi“tSæÅóþŒFG½nuvÏ.þÝ„ýòìPƒÿƒc9a0˜`Žä‰ÜM80 #ÇÜ%eÞ=î sÂ[îò` 42ôY$àŽË‰Ö¤aõ€˜îÉÃ"6&QÅ‚<ÒénL¥@„‘Ë¢ª>óA† È-É}vDTÛDìÉwz;r…ÌcTFaÀ©1!žA(aÈ`Â<¢a ØÇ;çÄ—ødÌê&tµ)µ-@½ºíˆ ÝÂ( ýjp¨ 1½Òˆqhû’ÀÔ-A,øÄe0¼oL 3jî°ê’ð€¹ØPÄpHø‹±MéqV&Û“üó;zpz¢^¥Ël¡–0›éWMŒfø-¿ÂPš©Nôôd€[*‡oyñÒ ¶Ë¥*ðÅ]ç Ÿ·ø&/Ô<_¯UVBù¨`™¯Vù·4û+­V× vê×üeÚȬø ³¡Ìái»‹Ö/;Ö.ðÈJ6ª.­…ɺlµâ¡·œös»ÁìÛGbYmh˸>1–ùey†Ô†2¢}L²L­¬þ°ÝvúÃçýá‹þðeøª?|]{‡À|~ìÚ¨h6L²/VOÌî‰9=±s£µÑñÖFÚšAêŽÇÇJ!Õ(…'ã±RHm4ÈjC» 64g<åáAÍwD;Ðê`»ƒ>ïà‹¾ì૾îà÷üÁØi$ͧAcàH5J jÞ{!$…|ƒ¥Ž'ßl)&‘4} %MmxÔÐê`»ƒó8ÄôØÉ"µ91µÚÐ|ÒR7w$…ˆ{ô^@ªùHpÇG ®ùïwŽv…ÔF»ˆ¬64ÍXÀï•îaÜúèÿ˰p{&i6£Åó¦LV°,Ô×­ÊæÏðO²Ú*xý÷äÇ›&¿¾"ì/%ÍäF-MçÒ²t“*[¤ËÿòóûkQªôï)ÍKÑîNÓ7Íßøw‹®¾1ޏÇ^&ýPKwºZ<5†p×dA IAR-STR912/examples/CAN/91x_it.cUT ‘LjK‘LjKux êëÕœkOãF†?/ÿáh+­`ÅBh»Í–•Œí©|Ûå2Î@Ü&vêsQµÿ½gÆIˆ[uc–ÑXEžyÏ9ï“ñø6°÷þ™ ¶Ìm0ý“‹€÷#è´Z¿@¹iRätL^äYš0xNº¹ñz阂O(,¶.üÖ¾¿Lùn":%å,o]pM Œétœ&1Oó "ODg+æCŒa¬¤CÑZ?ïµ?îÉʺpF &$íÝ–TP–éTFy §ŒÓ¢(§BZܦ … /yšQ¶‹ÂÞD)¸E£”Áµ@’Ä\Q(zà9 e™¸#(Ðû„ʪ°òª˜U6 ÃG1‡Iüy’”Ü¥|„†0Vñ#µÝYïóÍÓ¥ Ã#ìE3¶#3±üšßÅÅ0˜ûªˆ³dqÉó FI°ž‡yÖ\öOò¢ lšgÃ4»Ye'¸_î™u{Ìv‹£$/fAÆyz»¹±¹Aïñ8ÊÄñ8a7Ü›qæ²›O¢iï…‹ç”2Kä„^Wº0Ȇô§‰áe¿:ÜŸ™ù»³Éw®]hp`¼(«½‹™CNG$›–|ù¼äå•ßnÉ—[ÊË"{Úð²~·y:|ê{KìÞÞÜøgsãë+±ÏÉwP¯¦c†*ÍP/ÙTù¤ ×”'£5HOQÊ…⫼àša_5®€½!°­~óXKæ5à €÷Èé¸Q¥ç%Ÿ (Ÿ[Ç—x üý Åu;Š—.ð úwI×yݵ’ÓåúÔñ¤©%ôšg3xà_ÖÇ.åz’_u®~Ô ~¤/üH1|¼gn­ÏÞîE-=ѯøVC¾Ýˆ|[[òíçÉ¿*ûN#ömÙw”úýFä÷µ%¿¯–ü <꟬^Êõd¿ê\ |§|G_øŽbø¡9hpKeô_w­»íÙQƒ©Õz‚_ñ­€¼åëƒG±žÜ뮕\Wš†·>xë ¾îz <@¹ß »É¯þ„ChÉ÷}éõJ>|&V‡¸ûþc«ÕÚ~³÷yÉ–(ˆ2@YJÃà“è_ÐxX-Q¨„ó¥b‰A2¦qQ鿊_tÌh-õçChûw°Øñû!ìw¶—b†Êe‚ e,¾¡€NhÂ!+'W"Xf‘ÄÕÚ’, ZzQUÀîRžŒ¶0Y?@{»ê2Ë K…–È/ØF_.ÝðØ?úƒuç}@6]2Ý»U}³øÛHúÍÒùk†|µ=üWЄ¦·´rz†Ú;ðnþöV&Y*"ø?E éu\Žy·.}*œ×3׋Ï_gßåkÍ®¹þÁìšzË5Ï*Z  £XOêu×*îOŒ jðPÊõD¿ê\ü¥\_øßxøšð< ”r}á+~H:fƒYG¨õD¿â[ ùSŽPkK^ñ„†' Æ|xB4ó+¾Õo0摼¦c~Å·òΙµ>xëɽîZö jp3…b=±×]«X8G¼o@±žØë®U¼oø‘&7±•^OøO¼«âßdI‹ÔkÌ_ñIVÖÐdY‹ÔkÌ_ñͬ¬¡Éâ©×˜¿â.²†ƒ†ü4æ øIZxtÞàÂGÊõ¤¿ê\ÅßõN\ìK¹žðW×á?ÿ{þeíYâ/o{ıgiÿPK wºZ<IAR-STR912/examples/WDG/UT ’LjKʈKux êëPK wºZ<"IAR-STR912/examples/WDG/interrupt/UT ’LjKʈKux êëPKwºZ<üóT^N,IAR-STR912/examples/WDG/interrupt/Readme.txtUT ’LjK’LjKux êëµUMoÛ8½ ÐôÔ©b;Ûvk F¢m¢úðRt‚œ F¢m!’hP’ì¯ß¡äõ&möP %|8ï=Î~s¶{ˆ«;#‘]çççð«lP¸)xv€••5ßkdÕŽQ€Ÿá`ôθÉë{+ýVÙWö»,|á 5%~;„4ò~¬ðȆmîÏáI÷Ðô8¸K=D·º®õCÕî`îôßC¬eyâà÷a‹ZvûÀÅyß;Ç{äH¯ÞìŸùÓ¢iäºmÁb:ÞêPKwºZ<ÿ‰Gñ¡-IAR-STR912/examples/WDG/interrupt/wdg_int.ewwUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZȯ¦X "Ýëï#¦˜£x§O¸‡x0#‹õøß´ê{WÖ-C$Ðú Î+\´ê‹½ÆpûQqÃh‡(–cÜ9ßjwu‡%b·Ï)í%î#1Û#E/ÈÙ|ÍZu}a«×ú“nõ&_Ï‚f†@’Šsd;C¨;Ä LÅ!¤Õ,¾=4¡ë‘4ߎàc›†0„. ñqz† >M2á,NÛ,$¶œa„8 8QmŽS|ű3e|ŽÔú­™Ên&Îä@Ã*òqü|ÔØ—„"þhOÔ®û·?½=Æq{3’'±iÊÉAF™ã™ q †ðù—>”aŒI5㌮ÎíÛ;b†*¥;vv\‡MÕ=¯îýò‹Ã5}NL&ä¶æÜ0'–V;„ ̧(À¯/¿özt¤²^aŒ;i–$Œ uožÅ‚LNáq'áÐÇÔA4tÒÑékuÍfxéLc†„j– .Xhºþ#O‘YlÙ^z½Îg4¾ò¯îýïþ æv¬ß(~ÕfÆË¤ÏY˜"wkŽçßµ7M×­ƒR1¹ /Ï~[k6jÚÅ…ñ Ñž^—¤ ²§‹£Ñh4åOC~Ôø]ÿÉï¨ùi4ôéú‰M³¼ñæR£±õð‘ŸrѦhcÅ{F`›é0Õ–Ztn@郺×ê¯ÑÅ4;Ž6 Þ7/®ÿ59ù¡9­öÐÁ û+df{ÀûßDÐ~7„9Òøž·%=h.žѼ¯:¢ñ¼+<%ôðRÕÜ3œ3Ïës Qlp ¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÍ*ã®ІàÂq˜$‹ AÂhj,ƒ|Aœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°éǽM1?kcîïNÝYLµì YK?ô.ÿôzýÿœÈ@4žQTu¢×ór½¥Š¢`™q>û¹æ É…ªÚEV(!JP—hÚŒ[$U“¯KËHNa±=×J Ѓ~ÇȪÉÚ…Ò„U†#YÌ[š“¨`C¤A´›jU Z;UÕE‰Ý2[­sYT ŠO‰ (&ÿU¯GÙÇë‚ûW]'7î˺ÃÛ·VÁôt8PŠ&¤‰›…'òAÌïÕ+/ËñuÇ~ª‘`ZâxNXé2*ª9WX«’sYIhY_8FÂM®Jpä>d%@…•—eàä¥ô©®òd‡·ÚK”‰ÛŸWn\ Z%•͹ŽÜ{­„Z™“ n&Ä-•8¿nyÅ€h™™++Ðç,âhÞ¦‚?vФ¨Öªqy‚g»œö0êq¼ñ˜ >Nôc¸ÆÏ £žÝ»ï“×.?À?˜Y´àç#Tá°EÙÍaìç4×H*ä>ŽóòåËÛ•ë‹C8³&-—%$ƒŽ$ÒZõ§ßÔŠ8Ë’U{š>}_O}±ÒÞ@_µ¿h¿ÎtïñÍ“§àÔå~]þ_þ] ÷ºÓ{éðE aµÝýUM6ÀàReXiU†µ AeXat«UßHÐ!a’ª5KÊ–&Ý«uYK­²b mfì8Ú3¶Ç Q7±¸Øáêv7EΡ‡” ëÕ—¡ÉÿPKwºZ<·¢ÅGØ<-IAR-STR912/examples/WDG/interrupt/wdg_int.ewdUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<'IAR-STR912/examples/WDG/interrupt/.svn/UT •LjKʈKux êëPKwºZ<6àR²³L.IAR-STR912/examples/WDG/interrupt/.svn/entriesUT ’LjK’LjKux êë­“M‹Û0†ï¢Åöhô5Ê­P(½¦Â^}Œ²nÇØJ“Ÿ_m»öfÚ¼'!^4Þ™‘ D¡ÅK­óº†4Ï×ÊkíןS¿^®KârYŽÜO\‡v·\.õ¯i¨Ëuú1̧P›é¼_>‡½—8ð=œç¯Ã·OŸ‡qª¼,×¹þ[Ñ„¾Ý¡:HÜØIÛ;ã Ø'¡ÐˆïáÌëqái§£x/W(2Hè(Õy=e„Žl`çg££ø Îaœú$Êxbñ§d3vèàvÒï´íá·ž„ñdÔ‰— 3fǨ¬CðÎ6ªü_¼oRÞRúåãs °çÛ¼ÍËPTIdS"]P4)ÏÅ(b ü6é¹wpygEm>¢wºh©áˆœ&Ë&÷¸öQÝàöò™ûz¯ÛØtVÊ1i¥]P–¡PVÉXÒ2`‚Âæ¼oh^ÞŸÓe*ýËÖžFÐQ9é Æ(­O†(µŽrôú1óf½y×ÒÛ66gÙ{vȲЦlŠÉ\=$6+ßRëÖ-L ÛŠ³´Y& j [<æè²}̨‘y íPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/text-base/UT ’LjKʈKux êëPKwºZȯ¦X "Ýëï#¦˜£x§O¸‡x0#‹õøß´ê{WÖ-C$Ðú Î+\´ê‹½ÆpûQqÃh‡(–cÜ9ßjwu‡%b·Ï)í%î#1Û#E/ÈÙ|ÍZu}a«×ú“nõ&_Ï‚f†@’Šsd;C¨;Ä LÅ!¤Õ,¾=4¡ë‘4ߎàc›†0„. ñqz† >M2á,NÛ,$¶œa„8 8QmŽS|ű3e|ŽÔú­™Ên&Îä@Ã*òqü|ÔØ—„"þhOÔ®û·?½=Æq{3’'±iÊÉAF™ã™ q †ðù—>”aŒI5㌮ÎíÛ;b†*¥;vv\‡MÕ=¯îýò‹Ã5}NL&ä¶æÜ0'–V;„ ̧(À¯/¿özt¤²^aŒ;i–$Œ uožÅ‚LNáq'áÐÇÔA4tÒÑékuÍfxéLc†„j– .Xhºþ#O‘YlÙ^z½Îg4¾ò¯îýïþ æv¬ß(~ÕfÆË¤ÏY˜"wkŽçßµ7M×­ƒR1¹ /Ï~[k6jÚÅ…ñ Ñž^—¤ ²§‹£Ñh4åOC~Ôø]ÿÉï¨ùi4ôéú‰M³¼ñæR£±õð‘ŸrѦhcÅ{F`›é0Õ–Ztn@郺×ê¯ÑÅ4;Ž6 Þ7/®ÿ59ù¡9­öÐÁ û+df{ÀûßDÐ~7„9Òøž·%=h.žѼ¯:¢ñ¼+<%ôðRÕÜ3œ3Ïës Qlp ¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÍ*ã®ІàÂq˜$‹ AÂhj,ƒ|Aœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°éǽM1?kcîïNÝYLµì YK?ô.ÿôzýÿœÈ@4žQTu¢×ór½¥Š¢`™q>û¹æ É…ªÚEV(!JP—hÚŒ[$U“¯KËHNa±=×J Ѓ~ÇȪÉÚ…Ò„U†#YÌ[š“¨`C¤A´›jU Z;UÕE‰Ý2[­sYT ŠO‰ (&ÿU¯GÙÇë‚ûW]'7î˺ÃÛ·VÁôt8PŠ&¤‰›…'òAÌïÕ+/ËñuÇ~ª‘`ZâxNXé2*ª9WX«’sYIhY_8FÂM®Jpä>d%@…•—eàä¥ô©®òd‡·ÚK”‰ÛŸWn\ Z%•͹ŽÜ{­„Z™“ n&Ä-•8¿nyÅ€h™™++Ðç,âhÞ¦‚?vФ¨Öªqy‚g»œö0êq¼ñ˜ >Nôc¸ÆÏ £žÝ»ï“×.?À?˜Y´àç#Tá°EÙÍaìç4×H*ä>ŽóòåËÛ•ë‹C8³&-—%$ƒŽ$ÒZõ§ßÔŠ8Ë’U{š>}_O}±ÒÞ@_µ¿h¿ÎtïñÍ“§àÔå~]þ_þ] ÷ºÓ{éðE aµÝýUM6ÀàReXiU†µ AeXat«UßHÐ!a’ª5KÊ–&Ý«uYK­²b mfì8Ú3¶Ç Q7±¸Øáêv7EΡ‡” ëÕ—¡ÉÿPKwºZ<üóT^NDIAR-STR912/examples/WDG/interrupt/.svn/text-base/Readme.txt.svn-baseUT ’LjK’LjKux êëµUMoÛ8½ ÐôÔ©b;Ûvk F¢m¢úðRt‚œ F¢m!’hP’ì¯ß¡äõ&möP %|8ï=Î~s¶{ˆ«;#‘]çççð«lP¸)xv€••5ßkdÕŽQ€Ÿá`ôθÉë{+ýVÙWö»,|á 5%~;„4ò~¬ðȆmîÏáI÷Ðô8¸K=D·º®õCÕî`îôßC¬eyâà÷a‹ZvûÀÅyß;Ç{äH¯ÞìŸùÓ¢iäºmÁb:ÞêPKwºZ<ÿ‰Gñ¡EIAR-STR912/examples/WDG/interrupt/.svn/text-base/wdg_int.eww.svn-baseUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZ<·¢ÅGØ<EIAR-STR912/examples/WDG/interrupt/.svn/text-base/wdg_int.ewd.svn-baseUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKwºZ<7JõèÌoDIAR-STR912/examples/WDG/interrupt/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZ<H:²ï=BIAR-STR912/examples/WDG/interrupt/.svn/text-base/91x_it.c.svn-baseUT ’LjK’LjKux êëÕ›]Oã8†ï‘øGì 1--û5ÌU𤭵ù(‰K‡+RC#•¤ë8àÕþ÷=v 4…½˜†ËÅö{|Þ'Žc[mïÃÛ°ÃéUDÆ ƒÓÓß!¦~–ò‚­X*x‘gi oI>À([1’{Ï×9|ê»ÎD7• ¬J, Û×9ø¶Öz½ÊÒDdE”%÷²±“†!y)€”eŲñéo½þŸ=•Ø9\2^JE¿{ª¬Ly¶VA^¢'Y$Œój- fük–2ˆŠJd9+»(|çK¦‚]f%ÜJ"i’à ƒªD ¢€…J ’Õ Ä’û–2•u euÃ7™mˆe"à>y„"M+™X¢!ŒÅ!yÖÝ´ž/YØ]ölx‰­X^ž¨žÊâV<$œaìû†'yº„¤Å=FI1ŸÇ§^ Õ>-8gåºÈY~›Ì I±\•lš½ôöIÁ7AVE²@˘®l4µ³»¬Ä¦ÝgD n‹ÕªxØ _‚LP²a÷kñxR{• x&dN ©zêd Þ2É+`k†CaÉx²*D/9þ¨[>Ak<—Ÿq”r”þÑ¥ƒ§º__àþ¦îÿF÷ȘN\˜FnìâpDçVäÂ|Bì Faãq¬Àv! ¼+°ˆƒEQ^‡c°g1 }7ŠaNèDÆ´CUA”û%a‘;¶"UŠ’HÊ™Mcla丑ê ë| !ÄÖ¥ ”øn¬XÍ žyôDÎDÄŽB×sm…±cˆ'–çARº0q=kG›|ytxpxÐ{çžÔ{£ÊS5k×ïŽs˜å v‹sÁâzR?ÓoLïç›öIû¬ÁG½¼ªKŸ§5ç|]‰íwOPäLÝÂJl×¼TDLT<]ñ¾âþZd‹×¾eqçðàŸÃƒûxN¾ƒz=ç–¨2 õ–M §œÝ2‘.÷ ½F©ZHn . þk\{KbÛü"‰‘̆5‘‹=p£Ê0Î[>5Pž;ãk\è~?h¹8GñÖ*ž³¿+V ˜7]oaèáþ€ww¸Sû³îÖòé=WgPÔ“˜FŸúƒñ_0,¾8`<%áõ\n9†™8–ÿÔ…Ó,¿œÀ1–[ eŽûUUÄ’Å›Í;ÎgUæk¯X 2µ­’Í;Ÿe¶©,W)¹¡·ƒ=ÝuÝn2!sû™ký‡®ŒQ Ï:^O‘}Ù»’›I~×¹ø´|j.|ª>îúO÷g/Õf¢ßñ­‡|¿ù¾±äûÚÉZ‘K~ üY+ògÆ’?ÓK~'ÓýÑ+¹™ìwëïµƒï™ ßÓ ?¶g-6TöÌLðM×°»K÷çîH¹™äwŒk@ïøV ò¾e&÷¦k Øm+Ø;ŠÍÄÞt­»oïOÝ·Í„Þð¬ãÈÆiÅfRoºÖ±Ž´"Úâ´FÉÍD¿ë\ü6Jn.|ÍG62…g6Jn.|ͧ6d`·˜u¤ÚLô;¾õo1åHµ±ä5O8q­ç~}¼ž^5wh­ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒcÜKnqgæÔÜ1ó|‚»âÁ…¤&¸ƒác#ஞ²bBîQ¸55Àõ,æ©T87†À߸dð1k+ù`Bð§vÐ"UrÓs™ÍÌÀsnúà ÛÇ à‚ÁˆÙØÜ¸°™‚4œk°¸‡Þ-ÂâŽ~Á¤HÓñÙ—)®œ6XÆØ2_¯³MÈ ¹€iëe{ܧ% â]˜Éð&~M)µ²®¬áŒ'²°²~÷‹¬ŒŠ2}òN¸»ã¦,·<û•xjŠ‹2‰è:x5ÅΟ(uWVäªûR_UOÜcxCnÝaª?$ë²Ø¾B44á–ÅöÌfÂXÅäñÄÛ,OµŽFóý»¿©rÇrAGÃbÓ!m" ¶oÊÛF÷êX$s¹ÐðÍéllÚúi™EÂL“…¼mÔÆ™ë›Í¾æÞ9™æÐaØ謄e\@§ÑWÈUH“èëJJ4Ê0–é­¸—ÅR)w2%É,qxTC<¨³æÕj^T6¼nàpè =aý T Oí²‘Òùü°zôÎïè‡pŠnE‚¹°† 0×ÔWpV® a´„nûÓç6Lvw›,ãtNÛV?ιYÿ°ÿ$qÎ1¤ûm€ãyׯu‘UÎϸªŠëör¾÷>3Ö7ýÝ«¨ñáJSŸªÊO*á@/¹ ›ŽeŒž”:µ¶r+ï¶åÛ„•Üði£JG ~X©Â&KÅN•*°ñ“¥EVî}iu›ýÚ‰æj¾í³QúžÔ7…ÐÞüƒ¡7¢Öâ–Š÷|6ˆÄ£«—x¿Ä߬ž6¨“úOý¹ûxüÈÏcæXôi?à6«.ÇÝ¿PKwºZ…}€|iDé-("„u”áfIºíéüøiDØ©†×½ÁÿÇ‹AL-B›†š&ŒÖa͵ɥ˜Vº gg5#Ðε”©Rrƒ0iO ½s¨+qUP̤. ì×ñôxŠÏÞÐRÜÀe³ƒ\ ׺RH¶‡ )i.Ü”D_ûËÁûðjw Ë®I;p¹Uß-?¼¥ø±±Aì Š9e%w±Á<Þðž^¿ã^“¤RdîmN¯ÿù\vìç²ïýäøÓÏ þ³g½£<PK wºZ<-IAR-STR912/examples/WDG/interrupt/.svn/props/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/interrupt/.svn/tmp/UT ’LjKʈKux êëPK wºZ<5IAR-STR912/examples/WDG/interrupt/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<5IAR-STR912/examples/WDG/interrupt/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ<1IAR-STR912/examples/WDG/interrupt/.svn/tmp/props/UT ’LjKʈKux êëPKwºZ<ɬâ$€(IAR-STR912/examples/WDG/interrupt/main.cUT ’LjK’LjKux êëµWÛnÛF}Ø@ ª.N›´ü@“+iQŠTHʆŸšZY‹P¤À‹´è¿wf—´.¶ì&v×~ ggΜ=;KuNžÐ0›`º“kGœv»ŸÀÆ2ÊR‹¨ÈÒDF9<úþÝ d,À WƬB™´#š6Êb™f°=Î`lZ`¬×±ŒÂB¦ "\‘³³¼žç¥˜“s÷·Nï÷Ž¢u—"Ë)¢×G™\+ä°ÎÒÛ,\Á“ßÏoA| WëXôÚ†ÿo<ˆËHæEš}?£gä|zJœ?ïp>­ç~}¼ž^5wh­ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒcÜKnqgæÔÜ1ó|‚»âÁ…¤&¸ƒác#ஞ²bBîQ¸55Àõ,æ©T87†À߸dð1k+ù`Bð§vÐ"UrÓs™ÍÌÀsnúà ÛÇ à‚ÁˆÙØÜ¸°™‚4œk°¸‡Þ-ÂâŽ~Á¤HÓñÙ—)®œ6XÆØ2_¯³MÈ ¹€iëe{ܧ% â]˜Éð&~M)µ²®¬áŒ'²°²~÷‹¬ŒŠ2}òN¸»ã¦,·<û•xjŠ‹2‰è:x5ÅΟ(uWVäªûR_UOÜcxCnÝaª?$ë²Ø¾B44á–ÅöÌfÂXÅäñÄÛ,OµŽFóý»¿©rÇrAGÃbÓ!m" ¶oÊÛF÷êX$s¹ÐðÍéllÚúi™EÂL“…¼mÔÆ™ë›Í¾æÞ9™æÐaØ謄e\@§ÑWÈUH“èëJJ4Ê0–é­¸—ÅR)w2%É,qxTC<¨³æÕj^T6¼nàpè =aý T Oí²‘Òùü°zôÎïè‡pŠnE‚¹°† 0×ÔWpV® a´„nûÓç6Lvw›,ãtNÛV?ιYÿ°ÿ$qÎ1¤ûm€ãyׯu‘UÎϸªŠëör¾÷>3Ö7ýÝ«¨ñáJSŸªÊO*á@/¹ ›ŽeŒž”:µ¶r+ï¶åÛ„•Üði£JG ~X©Â&KÅN•*°ñ“¥EVî}iu›ýÚ‰æj¾í³QúžÔ7…ÐÞüƒ¡7¢Öâ–Š÷|6ˆÄ£«—x¿Ä߬ž6¨“úOý¹ûxüÈÏcæXôi?à6«.ÇÝ¿PKwºZ<7JõèÌo,IAR-STR912/examples/WDG/interrupt/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZ<H:²ï=*IAR-STR912/examples/WDG/interrupt/91x_it.cUT ’LjK’LjKux êëÕ›]Oã8†ï‘øGì 1--û5ÌU𤭵ù(‰K‡+RC#•¤ë8àÕþ÷=v 4…½˜†ËÅö{|Þ'Žc[mïÃÛ°ÃéUDÆ ƒÓÓß!¦~–ò‚­X*x‘gi oI>À([1’{Ï×9|ê»ÎD7• ¬J, Û×9ø¶Öz½ÊÒDdE”%÷²±“†!y)€”eŲñéo½þŸ=•Ø9\2^JE¿{ª¬Ly¶VA^¢'Y$Œój- fük–2ˆŠJd9+»(|çK¦‚]f%ÜJ"i’à ƒªD ¢€…J ’Õ Ä’û–2•u euÃ7™mˆe"à>y„"M+™X¢!ŒÅ!yÖÝ´ž/YØ]ölx‰­X^ž¨žÊâV<$œaìû†'yº„¤Å=FI1ŸÇ§^ Õ>-8gåºÈY~›Ì I±\•lš½ôöIÁ7AVE²@˘®l4µ³»¬Ä¦ÝgD n‹ÕªxØ _‚LP²a÷kñxR{• x&dN ©zêd Þ2É+`k†CaÉx²*D/9þ¨[>Ak<—Ÿq”r”þÑ¥ƒ§º__àþ¦îÿF÷ȘN\˜FnìâpDçVäÂ|Bì Faãq¬Àv! ¼+°ˆƒEQ^‡c°g1 }7ŠaNèDÆ´CUA”û%a‘;¶"UŠ’HÊ™Mcla丑ê ë| !ÄÖ¥ ”øn¬XÍ žyôDÎDÄŽB×sm…±cˆ'–çARº0q=kG›|ytxpxÐ{çžÔ{£ÊS5k×ïŽs˜å v‹sÁâzR?ÓoLïç›öIû¬ÁG½¼ªKŸ§5ç|]‰íwOPäLÝÂJl×¼TDLT<]ñ¾âþZd‹×¾eqçðàŸÃƒûxN¾ƒz=ç–¨2 õ–M §œÝ2‘.÷ ½F©ZHn . þk\{KbÛü"‰‘̆5‘‹=p£Ê0Î[>5Pž;ãk\è~?h¹8GñÖ*ž³¿+V ˜7]oaèáþ€ww¸Sû³îÖòé=WgPÔ“˜FŸúƒñ_0,¾8`<%áõ\n9†™8–ÿÔ…Ó,¿œÀ1–[ eŽûUUÄ’Å›Í;ÎgUæk¯X 2µ­’Í;Ÿe¶©,W)¹¡·ƒ=ÝuÝn2!sû™ký‡®ŒQ Ï:^O‘}Ù»’›I~×¹ø´|j.|ª>îúO÷g/Õf¢ßñ­‡|¿ù¾±äûÚÉZ‘K~ üY+ògÆ’?ÓK~'ÓýÑ+¹™ìwëïµƒï™ ßÓ ?¶g-6TöÌLðM×°»K÷çîH¹™äwŒk@ïøV ò¾e&÷¦k Øm+Ø;ŠÍÄÞt­»oïOÝ·Í„Þð¬ãÈÆiÅfRoºÖ±Ž´"Úâ´FÉÍD¿ë\ü6Jn.|ÍG62…g6Jn.|ͧ6d`·˜u¤ÚLô;¾õo1åHµ±ä5O8qkµMBò*~¾-, {Ý9Í 3s…Ý¡ÐîÌ!5R¶!ÌL‰³ôrYòsléæcO™#–‹½çßä8»§ £å%4%yÜÄùrª•–ô¶S)ɯýáë°@#Ö ¡ó‹ÒÁF•Ye*ƒå7äÚÀÃN”úHÎ ®‡¿¨nÛ+¡Ba1Ï—‘•uŶ´TÕ-u¦¸Â‚ǵ¼>±Á1Å8þÑPK wºZ<'IAR-STR912/examples/WDG/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WDG/.svn/text-base/UT ’LjKʈKux êëPKwºZ<Þh»mo(IAR-STR912/examples/WDG/.svn/all-wcpropsUT ’LjK’LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S07àÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôS+s rR‹õÃ]ܹ\ý\¸PK wºZ<#IAR-STR912/examples/WDG/.svn/props/UT ’LjKʈKux êëPK wºZ<!IAR-STR912/examples/WDG/.svn/tmp/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<+IAR-STR912/examples/WDG/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WDG/.svn/tmp/props/UT ’LjKʈKux êëPK wºZ< IAR-STR912/examples/WDG/polling/UT ’LjKʈKux êëPKwºZ<0}¸*?ô*IAR-STR912/examples/WDG/polling/Readme.txtUT ’LjK’LjKux êëµUMoÛ8½ðôÔ©;mwk`ŒD[Dõá¥è9-X‰¶„È¢ARH²¿~‡’×›¶ÞÃ]Âz>Þ¼y振.Îx¾ƒ0_?p¶Š̯¯?A!Ò¦4ZµªtFwMiá\êÅÅtr˦Uɽ‚ÓYW²Ú«À=;BzWk¯ÏÒ0r8´M)]£;Jî}p$BPc0k{UùàëW³_¯r ¸SÆúŒYp=$([šæ0€œÐ_õ\­à>ZÁA·mÓí0í§O%n¬ÓæeáïHy>÷”ù†òüo߇Û™}ÿÖêϧ "¦°æ´ ™€"_Š{Â)ÜÇ,Œ°Ì9¬6,"YH!Ï’ ,-€ÌÉïXIJ„›Bä)åÜ3#d˜v–avJË3àtEø`ÅzŒûìhŠƒ çåC%ô¥ r(ÈÁR Ár˜_lqé& yN žg,, ˆI’@– ¸¥Ó$‚„‘Û„ˆ${€ˆqŒ¾ÄRã 1ÑæYAß`ÛŒ$‘”¬èØ/¶Æ8ÏÄç‡ÉØ3g…o`ÉótP ¦{¸%ì¤É¢«±ØRQ¸}x¥fŒß+5È— Â2a7œ¢@øA[†”¼”ÅoU þŸç<Ðg¹?àtWÿ ÓtòÛg:ucAÃKÝm›]o”æîIº²®ôˆQ+#[À}²îu¥ Á)5•2à4ìT‡A¸¦ öÅ:µÇ}b•%Ëfû%[‡Áòh÷UŽe-»Ý±°u§µfù ξq Xßó¡ßž”ÐâÂy“Ðèæ 2ë;‡_‘m!øçÙü}ñ¾jiªw—GøæªôV (\„p3ÿRÿ e«ËGöx±º7¥r¢ÆàRÅáUrªsöœ¢ÓÉçÙó^Ç †¤ùj$&„GYÇu¹Åµ;ìeÓå¸ôR¼£Æzgü"õ} +Ó`ÏU‹;ÅS‰õ“—Û³oÜw,¦öêÙËDZÃ#:â¿PKwºZ<3•¢¡+IAR-STR912/examples/WDG/polling/wdg_pol.ewwUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<%=¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKwºZ<ä™JhÚL+IAR-STR912/examples/WDG/polling/wdg_pol.ewpUT ’LjK’LjKux êëí\koÛ¶þ¼ûB›oë|i7œð:(ŠÓjµcÃvÒ €AK´ÌV&5Šrœýúó’’|‹%»¡¨KTŠß—ä{yH¹óÇzZ+ÌcÂèï/ÚÖ Sù„¿¿ 1ûåíÛßÞýÒ~ñÇûŸ~üéÇNÄÙì 8±¬Îœ„ø.}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Â³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿ¦Ó<¸²)é#6gp¾Ê5ðºÓ\†ÛˆŠF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ{(Öi¦vjm>©¶h0ûrÓê‘Xœƒ$ËiBÝ!N +Ž!å½øÛ±Ý´¤ýF³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø: CkÎø©ùÛл‰8S-£ÈÚñ=Tð!ž$ñGsCízxûÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCp„ϸò¦ŒC´:jHêiÏhruÎо±%Ø¢rt‡Ö^ˆ`±¹ºç4Ÿ¶x*Ÿ’‡qÛ°n˜J¯‰-BæsäáW–“]{5Z2ÙÌ0Æ­8‰"Æ…º·LBAfÇð¸q¨cn!ê[±‡èü•:„b ¼¶æ!CB‹Ì×£‰£Ä,÷l“Á ÷ÉL¯ÜÑŽ{ãÜ_AßNÓG§7J_…ö4ræ'žÈšâæüÚxÓ¶µÑz(c—þåcÀY×'1G£$ıƼhµZmùÓ’õ~7²;êD~Z­ôtóĶXVx{©ÕÚy¸à§Et)š…X©ÃœýßU:ôòŒÅã°÷`éSË×õ‰ècš£'£wí××?Œ'Vv¨/k=ôð ‡nnŒôÜþÛÄÊïg/EÙŒë8‡ ÒÓdæõ3’™wu'3Žs…焟ª©ö4ûÌq†Cë]ƒ›07270[.1%UÕÅ™„‘ù–cZm ¤Oñ’QâÕZŠ„ãeã­ ;ŽëÐÀŒYÂËÌ>PêGFx‰øW£Š»"(CôÆ¡“  “Jcä3âÌ·a”.çŒÄ<+½6—a? Cð¬Šày6[‘þèëTz/—Ι9yÝsH mˆ½=˜IeƒC_µàh nÇÎ{%SJ›MÚÅ28Þ{ˆ2ÿ’¹5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â12ëûyÚ=NsqÓNCZ›c°„&‘ ´‹À§óŒƒ)7Ú£ý:Jj˜À)IXª\\»½îôòÆîw/¬’ùUÌ£UÍRå#F>6¨Að.õ¤̔ëJ“ ¼™=M @LNL®£8NÖµ’Ä{]2C†£ÁŸ)…×hd’ŠÃyJß‘ZjØç0¹B¾…Õ¬Àøúx 6£”El¼Ö]"tµóÀø×’×¶îÓ.c@ƒ@¾GB1V†1Æ› ]iªg1h+já¢Èù@Ï#æl#´ÜêfåìR>;M 8(‹Ac"ÈŠˆ’%P]¤>ò8“ñ»†[Öü¶ S¢ÆÜDW ŸÈ`ঠe¼f#Aq»ŒË®‹ñt7Õ^õÚÓ'#|á œLmÓKv¯TQûeõ¦³ RÊ%jS9i`g°£ÁNBW›讣€ ,}w=ƒ œ4|´ãû•$¹³KGCà¦XÎH¶@ÅouA&h6ŽW:ùÞêNï¿FxnÐDÉêOšÙJPTöDŸlµ­\˜Ä(D Ì›]Ág×ÎðÙõ±¿à—D¨0Ó«»PrëIIi¯AÙn@Ç[¶Å X[ËP9Ÿc߯˜ŸÆÕÎ1W§î R-{he@Æè‡ÁåŸÎ`øß Dëƒêf '³[j?ôwÜaœµÃ<×¼¹ÔTë£ÈJˆú2LwgšÌ[¤T³/‹« 'ž7-œÛñdpŠ—û†wðZHZ f9ôÆÎÉNo釠_¸Ÿé‰pé:ƒþPob7¿ôÖí]ÙÎÄÜœ@nŸ¯¼ˆƒ ¡ªÙîÞf±ØÜßë)Ïí¹7ŸþŒ¢ ékÌÜAº²inÖþÆá«Zcû–",3Ú+!R(õ¢´{0÷'Áα²~0XØ`‰ör’„Ül):eµI‰ö ãhü¸œ±Ð\h¥€Fè!}½È¨ËÚ‡J« r3oMhvH‚’‘j¢YªU¤Ö©¨>ŠÌn³Mm. êAq)…äõf”y¼>„uÈurá¾* ;L±yoåÍO§•Xr@:AÜÙx"Äü^½ò²ž^÷ìñÇñæ¶ç„—®©¦=ç +ßr.w¶WŽ‘°c«¹Y PéÎË*p²­ôqºË“_j¯pLÜÆø¼íÆ• Õ²³9³‘ﯘ˕˜1; ò–Z‚_Û÷‰¼B@4¬ÌÜ 9 8Zv©à=43¹×Já>Á3½ö8j1ÞtJŸFéS¸ÆÏI£ž™ÝÛ#ç£{×­>Á?Ê,Mð³ªtØàØÍ`Ìsš$•rã¼|ùò6}±gÆFËedP‘Öi>ýê£NÀYååhüô}=õJ ½è~Nã:{Ô¿Çk´ŒBCP—ÅuÙÙ×$ܧ•ÞË€/ˆkìoQH¿¥É\ª +ö’Ú°ü «ÓÜöê±–æ.‰ªîá´VÕ:s¥UÅÚ \K1Úž2vÛ¢nóÕp±§ÕÝjÊ]"B?(Iäü»Éä¿ÿPK yºZ<%IAR-STR912/examples/WDG/polling/.svn/UT •LjKʈKux êëPKwºZ<¢‰C±J,IAR-STR912/examples/WDG/polling/.svn/entriesUT ’LjK’LjKux êë­ÓM‹Û0à»è_±=úI¹ ¥×4PØË"FÙ´‰ml§ÉϯÒ.…ÜLë9 3xF¯$‘O“0J‰·eç]×Ñ8^ž—vþÙ·ópˆË0¹íyéê·i–¿MÝ2]ûÝxŽKmºÌÝ—ûæëa¤êø/ã™çîÛ§ÏÝ8œÏ§þøoSD-0Ò©vv[g|ZYñ=^x>NÜ÷1ÏåŠO šZןˆK<õ-‰r:³ø3²6‚j”;€Ûɰ3ØÂïzF[2„L6™ ï=€ö2¡$…ῼï¥=êʺåãk]_Ë·qÍåÈÖ¥‚•“É[Ã"›#&Œ·°É€Î<áò:œD©\6Z&4ÆCI:֣Ѫش ÎjÿÀí9æ ·Ë}YgS’3Õ’•ŠQ9ÞJË€*–hMÜÄæ©¶h0ûrÓê‘Xœƒ$ËiBÝ!N +Ž!å½øÛ±Ý´¤ýF³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø: CkÎø©ùÛл‰8S-£ÈÚñ=Tð!ž$ñGsCízxûÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCp„ϸò¦ŒC´:jHêiÏhruÎо±%Ø¢rt‡Ö^ˆ`±¹ºç4Ÿ¶x*Ÿ’‡qÛ°n˜J¯‰-BæsäáW–“]{5Z2ÙÌ0Æ­8‰"Æ…º·LBAfÇð¸q¨cn!ê[±‡èü•:„b ¼¶æ!CB‹Ì×£‰£Ä,÷l“Á ÷ÉL¯ÜÑŽ{ãÜ_AßNÓG§7J_…ö4ræ'žÈšâæüÚxÓ¶µÑz(c—þåcÀY×'1G£$ıƼhµZmùÓ’õ~7²;êD~Z­ôtóĶXVx{©ÕÚy¸à§Et)š…X©ÃœýßU:ôòŒÅã°÷`éSË×õ‰ècš£'£wí××?Œ'Vv¨/k=ôð ‡nnŒôÜþÛÄÊïg/EÙŒë8‡ ÒÓdæõ3’™wu'3Žs…焟ª©ö4ûÌq†Cë]ƒ›07270[.1%UÕÅ™„‘ù–cZm ¤Oñ’QâÕZŠ„ãeã­ ;ŽëÐÀŒYÂËÌ>PêGFx‰øW£Š»"(CôÆ¡“  “Jcä3âÌ·a”.çŒÄ<+½6—a? Cð¬Šày6[‘þèëTz/—Ι9yÝsH mˆ½=˜IeƒC_µàh nÇÎ{%SJ›MÚÅ28Þ{ˆ2ÿ’¹5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â12ëûyÚ=NsqÓNCZ›c°„&‘ ´‹À§óŒƒ)7Ú£ý:Jj˜À)IXª\\»½îôòÆîw/¬’ùUÌ£UÍRå#F>6¨Að.õ¤̔ëJ“ ¼™=M @LNL®£8NÖµ’Ä{]2C†£ÁŸ)…×hd’ŠÃyJß‘ZjØç0¹B¾…Õ¬Àøúx 6£”El¼Ö]"tµóÀø×’×¶îÓ.c@ƒ@¾GB1V†1Æ› ]iªg1h+já¢Èù@Ï#æl#´ÜêfåìR>;M 8(‹Ac"ÈŠˆ’%P]¤>ò8“ñ»†[Öü¶ S¢ÆÜDW ŸÈ`ঠe¼f#Aq»ŒË®‹ñt7Õ^õÚÓ'#|á œLmÓKv¯TQûeõ¦³ RÊ%jS9i`g°£ÁNBW›讣€ ,}w=ƒ œ4|´ãû•$¹³KGCà¦XÎH¶@ÅouA&h6ŽW:ùÞêNï¿FxnÐDÉêOšÙJPTöDŸlµ­\˜Ä(D Ì›]Ág×ÎðÙõ±¿à—D¨0Ó«»PrëIIi¯AÙn@Ç[¶Å X[ËP9Ÿc߯˜ŸÆÕÎ1W§î R-{he@Æè‡ÁåŸÎ`øß Dëƒêf '³[j?ôwÜaœµÃ<×¼¹ÔTë£ÈJˆú2LwgšÌ[¤T³/‹« 'ž7-œÛñdpŠ—û†wðZHZ f9ôÆÎÉNo釠_¸Ÿé‰pé:ƒþPob7¿ôÖí]ÙÎÄÜœ@nŸ¯¼ˆƒ ¡ªÙîÞf±ØÜßë)Ïí¹7ŸþŒ¢ ékÌÜAº²inÖþÆá«Zcû–",3Ú+!R(õ¢´{0÷'Áα²~0XØ`‰ör’„Ül):eµI‰ö ãhü¸œ±Ð\h¥€Fè!}½È¨ËÚ‡J« r3oMhvH‚’‘j¢YªU¤Ö©¨>ŠÌn³Mm. êAq)…äõf”y¼>„uÈurá¾* ;L±yoåÍO§•Xr@:AÜÙx"Äü^½ò²ž^÷ìñÇñæ¶ç„—®©¦=ç +ßr.w¶WŽ‘°c«¹Y PéÎË*p²­ôqºË“_j¯pLÜÆø¼íÆ• Õ²³9³‘ﯘ˕˜1; ò–Z‚_Û÷‰¼B@4¬ÌÜ 9 8Zv©à=43¹×Já>Á3½ö8j1ÞtJŸFéS¸ÆÏI£ž™ÝÛ#ç£{×­>Á?Ê,Mð³ªtØàØÍ`Ìsš$•rã¼|ùò6}±gÆFËedP‘Öi>ýê£NÀYååhüô}=õJ ½è~Nã:{Ô¿Çk´ŒBCP—ÅuÙÙ×$ܧ•ÞË€/ˆkìoQH¿¥É\ª +ö’Ú°ü «ÓÜöê±–æ.‰ªîá´VÕ:s¥UÅÚ \K1Úž2vÛ¢nóÕp±§ÕÝjÊ]"B?(Iäü»Éä¿ÿPKwºZ<0}¸*?ôBIAR-STR912/examples/WDG/polling/.svn/text-base/Readme.txt.svn-baseUT ’LjK’LjKux êëµUMoÛ8½ðôÔ©;mwk`ŒD[Dõá¥è9-X‰¶„È¢ARH²¿~‡’×›¶ÞÃ]Âz>Þ¼y振.Îx¾ƒ0_?p¶Š̯¯?A!Ò¦4ZµªtFwMiá\êÅÅtr˦Uɽ‚ÓYW²Ú«À=;BzWk¯ÏÒ0r8´M)]£;Jî}p$BPc0k{UùàëW³_¯r ¸SÆúŒYp=$([šæ0€œÐ_õ\­à>ZÁA·mÓí0í§O%n¬ÓæeáïHy>÷”ù†òüo߇Û™}ÿÖêϧ "¦°æ´ ™€"_Š{Â)ÜÇ,Œ°Ì9¬6,"YH!Ï’ ,-€ÌÉïXIJ„›Bä)åÜ3#d˜v–avJË3àtEø`ÅzŒûìhŠƒ çåC%ô¥ r(ÈÁR Ár˜_lqé& yN žg,, ˆI’@– ¸¥Ó$‚„‘Û„ˆ${€ˆqŒ¾ÄRã 1ÑæYAß`ÛŒ$‘”¬èØ/¶Æ8ÏÄç‡ÉØ3g…o`ÉótP ¦{¸%ì¤É¢«±ØRQ¸}x¥fŒß+5È— Â2a7œ¢@øA[†”¼”ÅoU þŸç<Ðg¹?àtWÿ ÓtòÛg:ucAÃKÝm›]o”æîIº²®ôˆQ+#[À}²îu¥ Á)5•2à4ìT‡A¸¦ öÅ:µÇ}b•%Ëfû%[‡Áòh÷UŽe-»Ý±°u§µfù ξq Xßó¡ßž”ÐâÂy“Ðèæ 2ë;‡_‘m!øçÙü}ñ¾jiªw—GøæªôV (\„p3ÿRÿ e«ËGöx±º7¥r¢ÆàRÅáUrªsöœ¢ÓÉçÙó^Ç †¤ùj$&„GYÇu¹Åµ;ìeÓå¸ôR¼£Æzgü"õ} +Ó`ÏU‹;ÅS‰õ“—Û³oÜw,¦öêÙËDZÃ#:â¿PKwºZ'€øâA@EÖüq¦ÈèY–)Ç9ª·E ‹™”2múbgGœ”„aÜß­¨3ȯþçúºÉ|ªV׿T«ëÅák;‚°$Y>íˆJ–ÁèDº#)ŽçJ >|² `)uBA’1d`ÄäKŠN.Ž7âi/rõ¡Ä5fM³]€µtÓƒ«OQuxƒ\X’•W$ŸŠ¸ËgÎBì³…t Ô/XÀC%¢X’Ò¸ÀÌôùö*²“Tªp6üWúXfñõ±#“³‰}–k׃ÍÒ 0w‘°Ì¡]M°ç*€ìO† Ç-*pÆÎ!ÿWeXÿ¨€Ra2e>£\Gá‡,•ðÒÌ*¢›D<”…\ù¾óÜ|\0G7~¬]M$9 Ñœyè òeK\R ¤Cœ¶¸*`JÒ›ë˜ NAÂÁ¶¦2¦[›õg±7£žfõŒsÓ’bq:ª-ÎWîÜaR öÃä+$j¯ÓK7=dz8:á³¥$c>çïž5zåè#C°X)’y²(LÄ—l_TDÅq—¯S£s§§R¯&Êšà$†^ÏóJz´¾µZ¯[éGØMŽ€Kò =lÍS< p€¯0öHáT§9òg‰:,IŽòC;ižkŸ^vVÛÖ©-IBkü¡š—=%¼q¦ª¶E×Hé¶èQRN‚|¿ö{5Oæ÷jÞ£a$¯æq˜I ûÎHȱ7ц¥{–óù×XBÓœ¢ÞP¶üq?ÃÒgëQúpEþfC"·óà±å(ìÕ+4ã ñÞ’ï(»±Ýsš›ïqœ7Ч”‘x Ùiç¿yo x›7È_Üî+=¬>€ŸNÙúzCòø#ˆ1íþÔäÖ'ŠQ@ðñéI4Ó®Æê¿~Ù«kv´”ORÿS!œ\0 ^¥‘ôˆ4—0àÃB£59„ª¶ ªLÊPös(RÆfL ¯çZ²¹:ê¨Ø ¸×ùo…t~aO÷»ÍýWsùcë7{ÓïPKwºZ<7JõèÌoBIAR-STR912/examples/WDG/polling/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ<2jê >IAR-STR912/examples/WDG/polling/.svn/text-base/main.c.svn-baseUT ’LjK’LjKux êëµW[oÚJ~¯Ôÿ0¢R¢=çô4(Æ^`UcslÓ(OȱXÕØÈ—¤õ¿Ÿ™]s MÚÓälò`Ïå›ofgwLûô NÌ&˜îäÚãÃQÝóó¿ÀÆ2Ê3‘ˆ¨Ì³TFüÈõå‹SÈD€®l׬B™¶"RU¹ÌrØ_06-0ÖëDFa)³®ÈØ K€yQ/ŠJÄd|þg»ów[Ѻ€"/È£Ó:W¢ˆr¹V Áag‹<\ÁƒßÅ ŸÃÕ:ݺáÿ3/â2’E™å_.è9w»ÄùÝçîF÷Çq>Z÷P®ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒ}ÜÜâÎÌ©¸cæùwŃ6’RpÝÇFÀ]<64<%Å€Ü#wkj>ëYÌS¡P7†ÀßøÈ àcÖRíƒÀŸÚÁu%7=—ÙÌ <×á¦þȰmpÜú F̶ÀæFßf Òp®ÁâZŸwô EšŽÏþ™bæÜ°Á2ÆÆù:Œ6!+äB¦­Óö¸O) ƒ±a1è_ïªE¤ÔÅÒÜvõ"Xƒ;Ì„<†EâJæ )R+’‡•l={´_¾ ¿ö)øe˜ÆaƒL£¤Š¼ùíE¨¯60÷ϳDÞ´–:¯5Ù²r)rXeq…—‹LK‘ÏÃHÀR„1ŠŸS HˆhgQ˜lˆÿ‚ÛÏ'¹¼¥Kªü²±˜?ò"¢Éô)Õ=B\…x…? ð>âm˜Ëð&yJ) àÊÎx*ËËha7ï~™WQYå¢GVà wÌ”äíže¯n Áy•F4 žH0Ÿw©IY“«§¥T?˜b8÷&˜ºÒuUîP'K)ܪÜ×ìžÀ*¦ÇŠç]X*<œ*“æËߨr¯äœ†ÅúÓ!m"`gßT‹“&îÕ+‘ÆrNV¾9MûƒŸUy$Ì,ËÅÉF8s}³ÙÓÜÛ§ÓB ,ï:)a•”%Yô å¯ÛŠÜ'ènÉ[Ydù(Ig(î(TìÃÃD`Õñ¢Á;â¦*ïS¬=á:òÙ»U³4&}ݤ$j¢³™ò8æÐ kö'KéÀ©¼u¾ôA£Ì4?ÕäD‰•—zÚJÁW¹þغÀæ(Ä=©îz]³Vè¨ vÑö3j©ð™^ÂæiÖíi”e–bÝ ÉÛVÖY^6òd.Ô)¹ÜêïÝÄ-l] ‘)ÛFë±´=Pó¥çÙ¤*–“*I ÷°“‘à JñŠÑ´4'v·^oÁÙëû M¢¯+)Q(ÃD~Õ»q'Ë¥.R.neFm¸Äñø‡xøF-Z›ÍQa®rYŠþ6Ô^ÝÏÅ3úž šzê&ø]¹€aýÀ{ßé¾ñ?¼á†ý üØÌB~雘4+ƒ]«ÂC½Joh ëíaÛ€ºoUË’Ío4ìQ¿N™ÁB¤ GBÅ—¢+ÈH!)žwFKèp8޶ºE’qS£lgWñ¢÷°õ$IÆèpþù]ü¸aŸ%"W¦ƒÁ#¦ªÞú‚¼¼÷>óÊH½*dºP™¿í~Z~/0ëê‡ÅѹêäõQкm¨„¿Ý¦*ÈÝžtšê固X~©yUë¢ùwó}óz¼þ˯VæXôÅ=à6«§Öáß¿PKwºZ<94OÕÖL0IAR-STR912/examples/WDG/polling/.svn/all-wcpropsUT ’LjK’LjKux êëÅ“Á ‚@†ïûö:iHé-("„u”Å]KZw—ÝÕõñÓˆ°S ¯3ßÇÿ3‰„H7<¶y¬pFp7TéRp·V å A·WBÈ¥¬ Õfݺ;X!Uó;H†M!T¥a¿NÝã)üh‹+ɨ†ËfR0Vò+Ú6¨Â%÷r”|£¯Â‘éð"÷–\³nìQ+¿›Dó±M†øO2­yꤓŠz¦5?Ôm3 ÷2‘ßf¹à…w›Bf@ÿ,ÊN[”}gSšŸ¾iùdžì^äPK wºZ<+IAR-STR912/examples/WDG/polling/.svn/props/UT ’LjKʈKux êëPK wºZ<)IAR-STR912/examples/WDG/polling/.svn/tmp/UT ’LjKʈKux êëPK wºZ<3IAR-STR912/examples/WDG/polling/.svn/tmp/prop-base/UT ’LjKʈKux êëPK wºZ<3IAR-STR912/examples/WDG/polling/.svn/tmp/text-base/UT ’LjKʈKux êëPK wºZ</IAR-STR912/examples/WDG/polling/.svn/tmp/props/UT ’LjKʈKux êëPKwºZ<2jê &IAR-STR912/examples/WDG/polling/main.cUT ’LjK’LjKux êëµW[oÚJ~¯Ôÿ0¢R¢=çô4(Æ^`UcslÓ(OȱXÕØÈ—¤õ¿Ÿ™]s MÚÓälò`Ïå›ofgwLûô NÌ&˜îäÚãÃQÝóó¿ÀÆ2Ê3‘ˆ¨Ì³TFüÈõå‹SÈD€®l׬B™¶"RU¹ÌrØ_06-0ÖëDFa)³®ÈØ K€yQ/ŠJÄd|þg»ów[Ѻ€"/È£Ó:W¢ˆr¹V Áag‹<\ÁƒßÅ ŸÃÕ:ݺáÿ3/â2’E™å_.è9w»ÄùÝçîF÷Çq>Z÷P®ÿã`Ä`â1Ÿ9øî ¸2<W#nŽ€û0p=N¹e8&×±¯ÁàcŒ}ÜÜâÎÌ©¸cæùwŃ6’RpÝÇFÀ]<64<%Å€Ü#wkj>ëYÌS¡P7†ÀßøÈ àcÖRíƒÀŸÚÁu%7=—ÙÌ <×á¦þȰmpÜú F̶ÀæFßf Òp®ÁâZŸwô EšŽÏþ™bæÜ°Á2ÆÆù:Œ6!+äB¦­Óö¸O) ƒ±a1è_ïªE¤ÔÅÒÜvõ"Xƒ;Ì„<†EâJæ )R+’‡•l={´_¾ ¿ö)øe˜ÆaƒL£¤Š¼ùíE¨¯60÷ϳDÞ´–:¯5Ù²r)rXeq…—‹LK‘ÏÃHÀR„1ŠŸS HˆhgQ˜lˆÿ‚ÛÏ'¹¼¥Kªü²±˜?ò"¢Éô)Õ=B\…x…? ð>âm˜Ëð&yJ) àÊÎx*ËËha7ï~™WQYå¢GVà wÌ”äíže¯n Áy•F4 žH0Ÿw©IY“«§¥T?˜b8÷&˜ºÒuUîP'K)ܪÜ×ìžÀ*¦ÇŠç]X*<œ*“æËߨr¯äœ†ÅúÓ!m"`gßT‹“&îÕ+‘ÆrNV¾9MûƒŸUy$Ì,ËÅÉF8s}³ÙÓÜÛ§ÓB ,ï:)a•”%Yô å¯ÛŠÜ'ènÉ[Ydù(Ig(î(TìÃÃD`Õñ¢Á;â¦*ïS¬=á:òÙ»U³4&}ݤ$j¢³™ò8æÐ kö'KéÀ©¼u¾ôA£Ì4?ÕäD‰•—zÚJÁW¹þغÀæ(Ä=©îz]³Vè¨ vÑö3j©ð™^ÂæiÖíi”e–bÝ ÉÛVÖY^6òd.Ô)¹ÜêïÝÄ-l] ‘)ÛFë±´=Pó¥çÙ¤*–“*I ÷°“‘à JñŠÑ´4'v·^oÁÙëû M¢¯+)Q(ÃD~Õ»q'Ë¥.R.neFm¸Äñø‡xøF-Z›ÍQa®rYŠþ6Ô^ÝÏÅ3úž šzê&ø]¹€aýÀ{ßé¾ñ?¼á†ý üØÌB~雘4+ƒ]«ÂC½Joh ëíaÛ€ºoUË’Ío4ìQ¿N™ÁB¤ GBÅ—¢+ÈH!)žwFKèp8޶ºE’qS£lgWñ¢÷°õ$IÆèpþù]ü¸aŸ%"W¦ƒÁ#¦ªÞú‚¼¼÷>óÊH½*dºP™¿í~Z~/0ëê‡ÅѹêäõQкm¨„¿Ý¦*ÈÝžtšê固X~©yUë¢ùwó}óz¼þ˯VæXôÅ=à6«§Öáß¿PKwºZ<7JõèÌo*IAR-STR912/examples/WDG/polling/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳd(BµTxX¥B¨jªÃT–êÐi:ca¯žî;$Ši(¶©Ø–b_(ö¥b_)öµbß(ö'Åþ¬í4âúÓ¢35„j©b[¿öDÔùIŠ&_/)!×=Ç“„¾qo<æ¥J<:_„ª¶¡:ôg²M‚¡Åªÿóå ÞÕÎtؾ@ –ˆYƒ5!Tµ Õajs íß;êaŽØö¶3:ûM³pæY>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ¹pZW†! ‘/³ÕôüüÚßê~ÀKU÷·»€›çOüoHG^o'Ì£¯³þPKwºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ'€øâA@EÖüq¦ÈèY–)Ç9ª·E ‹™”2múbgGœ”„aÜß­¨3ȯþçúºÉ|ªV׿T«ëÅák;‚°$Y>íˆJ–ÁèDº#)ŽçJ >|² `)uBA’1d`ÄäKŠN.Ž7âi/rõ¡Ä5fM³]€µtÓƒ«OQuxƒ\X’•W$ŸŠ¸ËgÎBì³…t Ô/XÀC%¢X’Ò¸ÀÌôùö*²“Tªp6üWúXfñõ±#“³‰}–k׃ÍÒ 0w‘°Ì¡]M°ç*€ìO† Ç-*pÆÎ!ÿWeXÿ¨€Ra2e>£\Gá‡,•ðÒÌ*¢›D<”…\ù¾óÜ|\0G7~¬]M$9 Ñœyè òeK\R ¤Cœ¶¸*`JÒ›ë˜ NAÂÁ¶¦2¦[›õg±7£žfõŒsÓ’bq:ª-ÎWîÜaR öÃä+$j¯ÓK7=dz8:á³¥$c>çïž5zåè#C°X)’y²(LÄ—l_TDÅq—¯S£s§§R¯&Êšà$†^ÏóJz´¾µZ¯[éGØMŽ€Kò =lÍS< p€¯0öHáT§9òg‰:,IŽòC;ižkŸ^vVÛÖ©-IBkü¡š—=%¼q¦ª¶E×Hé¶èQRN‚|¿ö{5Oæ÷jÞ£a$¯æq˜I ûÎHȱ7ц¥{–óù×XBÓœ¢ÞP¶üq?ÃÒgëQúpEþfC"·óà±å(ìÕ+4ã ñÞ’ï(»±Ýsš›ïqœ7Ч”‘x Ùiç¿yo x›7È_Üî+=¬>€ŸNÙúzCòø#ˆ1íþÔäÖ'ŠQ@ðñéI4Ó®Æê¿~Ù«kv´”ORÿS!œ\0 ^¥‘ôˆ4—0àÃB£59„ª¶ ªLÊPös(RÆfL ¯çZ²¹:ê¨Ø ¸×ùo…t~aO÷»ÍýWsùcë7{ÓïPK xºZ<IAR-STR912/examples/I2C/UT ”LjKʈKux êëPKxºZ<"0bÈš "IAR-STR912/examples/I2C/Readme.txtUT ”LjK”LjKux êë½VKoÛ8¾ ÐôÔ©c{»¯{P$%&Ö–²’Ü §€±èš¨^KR±³¿~gHÙΫ[,Ð]é"q^ß|Ãòôý+¼ ßA˜^ÝdìrVÀt<þ òb!Wª•XÕ6r¥á5Sß{²ðZÀá9ƒLð²#³3¤ôfÓ*xüœÁ"Œ èºJ®¸‘m…à5)GÜtª´¦u/JRÿx:ùåÔB;ƒOBi²˜ŒÆÖ@è•’urðþx±]ƒÙ`Ó⯻JŒÐî;?„d&µiÕÃ}#âé”ÿüñt/ûø2›É ûZ¦ÿâbÃUçqR@ž^×AÃõŒ…3`9\¤\.Y$a i2¿€-r ´I?±ˆ%—.ó"]ÄYNî®Y1íd,AóEP°4,¾ 2»ŠYFæÑ2,rT‚4‹â̆BÙŠòàS [Ä#»y0 :È—óâ„ö% ³4žÇa‘¥ sÈgÁ|IZÀy ³xÁœçóØº ’ˆX†Ú'ä‹%îƒ"Ì$ÿXbæ,˜C,‚Ë8w`´+ÒB,ä œ»´3–S Yº ¬äÄ]zùI;p$Ñ©K –y ‹ ŠáüæÈYБå°ù"·KâÊb$‰ÙµA‘Ø‚|Êä÷ßѧ¾ç{C¿@yl'ßûíåã{ÅFjƒz§Ú{‰6À[R#nÚ-˜´0([µuÝ7ûp'ÌVˆÆöªÙ¶¾‡ ‹š:¡Ö­ªÉQ¼Ñk¡`­Ú\üF‡yÅï…U¶÷‹ëƒ†lÀ÷dƒŸªï ÔmI3 pSa}Õ6kù¹W8oPyÕÒÐwÙ+Ù|Þ/i݆ۗkõhã{J¬„¼?š ÿN{³v+PzB¡ÇÏBs=@îÃ÷¾-´Kö%Ö§]¾é¶qyY*¡5(ÅZ6ùï‚ñHQw‚¸Ð¶V(¡²Ô|'ë¾FŽÅŸ½hV¾‡5ý8™ýX"¸k͆ÜkŒÆ\)×v”w\™û?Ф‚Æòäö¼_cQo‹Eº;¤_Â݃U²¤¸ (¹á¨ÁR›nÙm„â•å…&±«å^c$Û9ÒkÄ$JßÛJÄLJb×áq‡F÷¼êqóÒ¹q ƒYsG2×WÆ,gRceðÏ÷žS ›67Üôzò(Éïì94°¤î‚r ©Øgü„¥ñ7YrÔþK“o²4y%øÿiš>¢ tšF‘Č鄥–1¢1úµaä{¿Nv·ÔT£ À\Þ)ŽáÐdnÖ¬ñÒâô¤­èÊÀÃaƒÄTxðú^Íe㤀Ü"LœkŸ]SèqUn‘ͽÄKR€^Žˆ£7ýÐc˾«ˆl4uñº­ªv‹m‹×ø{ [øpþ{º,Þ^MGãwT{[¨ãâôÝè¥M4'G‹ýÒÏô9t}U}è;*˜½ÃØ FX]‹–¬¡ÂA¡mön÷8†äó´í®nUéFsÍ¿[à=ضêË <´=Ô=ކÒÍ–CþpFþ?@Ö7Ã~³‡Š#ý•ƒêßÜ_ã$¢“÷‚ÍcwúPKxºZ<·¢ÅGØ<#IAR-STR912/examples/I2C/i2c_int.ewdUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<IAR-STR912/examples/I2C/.svn/UT •LjKʈKux êëPKxºZ<®Ñ6ú¨B$IAR-STR912/examples/I2C/.svn/entriesUT ”LjK”LjKux êë­“?Û0 Åw¡_Å6Iý÷Vtêšfºå KTÎmâ¶ÒËǯÒ d3Zsâé§÷(!Ò¸E$ÞJ™×¾ëâ<ß ¯¥]Níz½-‘óu9q;qéjo¹^Ëß¡®,·éG7ŸC©C—µûúùÐ|;3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZá@Àã´¦$Æwºè»f«¾}«ÒF§$Ê8«Gð¢9~w…'YÔª«ëü¹`,fˆ¬2®²ºƒînÆú~ÎV(k“-ÐùÓ R¤{õ½ÇsïÔ iˆ3²X·ÿU«¾÷d3D­ïà~±ÒÀE«¾ØË É_7ŒvX€bÙÆû­|…P),»u®Di/q‰Ùž(ZxD®æ{ÈÖªë[µÖU{¨7ùtd3êTœƒ$óBÝ!N +!­zñõ¡]·¤ùʰïÛ4„&tYˆËÛ0ñi’ gqZØf¡°å4#ÄiÀ‰Ês\âë,Ž)ãs¤æoÍtìfâL 4¬j oÇ·PÁ{}I(âö†Úuÿöª÷½Ç8îqoF’ã"6M59Ȩ sÜ!“!Ža!|ºÀ¥7e£ÅACRM{£«s†ömŠ1Õ£;vv\‡MUšW÷~üÑáZ>'&ã¶æÜ0'–«&v˜OQ€_:^þì%ÔèHd=ÃwÒ,I*mžÅ‚LN¡¸“p¨cê :i€èô¥º„l3¼t¦1CBeK,4ƒ‘§Ä,^Ù^Œz½ÎG4¾ò/îýïþ úv¬‹Žo”¾j3ãiÒç,Ì‘»5Ç›ósíUÓ5Fë T a\†—ç¿®5µFíâÂx†hO¯KRŽYŒSƒÉÑh4šòÓ_õþ¯ÿä)êF~ }».±É–gÞ˜{mþÚ!]L³ãhÃÑàmóâú»áÈÉ/Íeí°/¼À±¿²Hfkxÿ›èòï†0ÇBßóö£¤ÇÍÅ"š·UG4žw…§„žªZ{†}æy}Ž!Š ®a­°72×0›Ï1•ÕÅÙ„‘A—g[m ¤KñœQXÕšFÂiŠ¢¢ñV›¦Uh`†,ãEfÈH¯#:l[º0™Uˆ h7·vÏ­œÞs«£~aUœ¡v¿lo=lCÉs'=f¼åúeoØ‹bm@ ,Cé|Ž{›b~×8ÆÜßšº³Hµì Y£z—¿{½þ_'ˆÆNUÍ@ôz^n·Ô‰èoxÆ8o‡}¢y#r¡©6G‘Ç“ ¥ ¨ÏgÚŒ[¤T“OKÊ 'ž6-¼Ûá¨wŠ—ûŠ·ðRHZ f9ôÆÖÍV–`Æ _H_]™‰pé{½nßlb׿ôÖï\¹ÞÈïÝœ@nž¯¼„ƒ qªY_n'³T¬Ó××fÊó;þÍÇÿ€Qôa }î‰ßÓÛšöfíŸ`>« ¶`)â"a¼"…R¯ I»w‚¹/ì+K.‚1¡¢Æ2ãí$ ¹>OtÊ“8í#ÆÉða>a±=×J Ðý‚‘Õ%kJ VŽäIÞŠÐܘD"å D»T«ÑÖ©¨.Jìž±Õ6—EÕ ø”‚bòz7Ê>^Ü¿*ä:¹q_ЦØþjLO‡¥Xr@:AÜìŸ:‘¥0¿W/»,Ç×wø¡F‚i‰9±D—TÑis…µ:l.ÏZ6V#Ž‘pS«¹ Y Pá™Ë2pòCô©>ßÉï³—8&nS|ÞAãRÐ*9ÓœȽ7×J8(sÔ̓ ¥Ï× C"ÓQ ˆ–•¹ZúœEÍÛTð‡š´*e¸<³}ö0êq¼ñ˜ >Nt1<ãçÄPO íÝ÷Á¿k—ݤ­F÷y U,lqìæ0ö Í5’Š·ã<þüvå÷â˘ #,Z«þø—ZgY²Ê¯@ÓÇo꩟TÚkè#·N—»—>]”VÛ=‚ ‡é‰õ‘‹ Ìêb2)³º4ÈʬnA „mÕ7v¨ï¤%Ë’'tž.¨µ #½–š ´Uálÿñ wDÚ†Ù¯XµMìèf»š¢¢sDèá‚’â]ýv˜ü÷/PKxºZ<·¢ÅGØ<;IAR-STR912/examples/I2C/.svn/text-base/i2c_int.ewd.svn-baseUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<"0bÈš :IAR-STR912/examples/I2C/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êë½VKoÛ8¾ ÐôÔ©c{»¯{P$%&Ö–²’Ü §€±èš¨^KR±³¿~gHÙΫ[,Ð]é"q^ß|Ãòôý+¼ ßA˜^ÝdìrVÀt<þ òb!Wª•XÕ6r¥á5Sß{²ðZÀá9ƒLð²#³3¤ôfÓ*xüœÁ"Œ èºJ®¸‘m…à5)GÜtª´¦u/JRÿx:ùåÔB;ƒOBi²˜ŒÆÖ@è•’urðþx±]ƒÙ`Ó⯻JŒÐî;?„d&µiÕÃ}#âé”ÿüñt/ûø2›É ûZ¦ÿâbÃUçqR@ž^×AÃõŒ…3`9\¤\.Y$a i2¿€-r ´I?±ˆ%—.ó"]ÄYNî®Y1íd,AóEP°4,¾ 2»ŠYFæÑ2,rT‚4‹â̆BÙŠòàS [Ä#»y0 :È—óâ„ö% ³4žÇa‘¥ sÈgÁ|IZÀy ³xÁœçóØº ’ˆX†Ú'ä‹%îƒ"Ì$ÿXbæ,˜C,‚Ë8w`´+ÒB,ä œ»´3–S Yº ¬äÄ]zùI;p$Ñ©K –y ‹ ŠáüæÈYБå°ù"·KâÊb$‰ÙµA‘Ø‚|Êä÷ßѧ¾ç{C¿@yl'ßûíåã{ÅFjƒz§Ú{‰6À[R#nÚ-˜´0([µuÝ7ûp'ÌVˆÆöªÙ¶¾‡ ‹š:¡Ö­ªÉQ¼Ñk¡`­Ú\üF‡yÅï…U¶÷‹ëƒ†lÀ÷dƒŸªï ÔmI3 pSa}Õ6kù¹W8oPyÕÒÐwÙ+Ù|Þ/i݆ۗkõhã{J¬„¼?š ÿN{³v+PzB¡ÇÏBs=@îÃ÷¾-´Kö%Ö§]¾é¶qyY*¡5(ÅZ6ùï‚ñHQw‚¸Ð¶V(¡²Ô|'ë¾FŽÅŸ½hV¾‡5ý8™ýX"¸k͆ÜkŒÆ\)×v”w\™û?Ф‚Æòäö¼_cQo‹Eº;¤_Â݃U²¤¸ (¹á¨ÁR›nÙm„â•å…&±«å^c$Û9ÒkÄ$JßÛJÄLJb×áq‡F÷¼êqóÒ¹q ƒYsG2×WÆ,gRceðÏ÷žS ›67Üôzò(Éïì94°¤î‚r ©Øgü„¥ñ7YrÔþK“o²4y%øÿiš>¢ tšF‘Č鄥–1¢1úµaä{¿Nv·ÔT£ À\Þ)ŽáÐdnÖ¬ñÒâô¤­èÊÀÃaƒÄTxðú^Íe㤀Ü"LœkŸ]SèqUn‘ͽÄKR€^Žˆ£7ýÐc˾«ˆl4uñº­ªv‹m‹×ø{ [øpþ{º,Þ^MGãwT{[¨ãâôÝè¥M4'G‹ýÒÏô9t}U}è;*˜½ÃØ FX]‹–¬¡ÂA¡mön÷8†äó´í®nUéFsÍ¿[à=ضêË <´=Ô=ކÒÍ–CþpFþ?@Ö7Ã~³‡Š#ý•ƒêßÜ_ã$¢“÷‚ÍcwúPKxºZ<Œ»°Ík:IAR-STR912/examples/I2C/.svn/text-base/91x_conf.h.svn-baseUT ”LjK”LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeÇ>¨»_¿~Ý £ÑèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+?£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õ~’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Qþ£/@QrœÈÃIþú=:=‘ï²U¾+˜Ï嫌"&s|ÊïЕåBñžžŒpKð­(¿B–Ããvµ%¾¸›b)àÏ-¾ÉK±(6‘×P? Xëuñ-Ë¿ÀZ²µ5G£ûø5ÿ•Ùîd6øGÙPð¼ÝyÛ—k—xd¥•hKKâï´'Ó–³oqÇd6>zÖí¦ópÞ¢¸Œ#>S[øŽÙÚª{2ZÆ¡©/ãødhsUí¹ý”æ¹X}³/`õ.ú—}«¾Àu_àæúlèPªÚóqš5ŽzÍ£^ë¨÷B+q2\⤑ØOuÏ’¡TÕRáa=” ¡ªm¨SuXªC?¤éŒ…½zºï*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëO‹ÎÔª¥ŠmývØ!PKäk$)š|½¤„D\÷;LúÆa¼ñ˜o<–~(ñlè|ªÚ†êПÉ6 †C¨þë˼/ª?&œéàc™j©˜5ð» ‡–qhšÚƒh@û÷z#¶½éŒÎ~Ó,ܬi–Ïíò¥ªÓ5¬Jñ×V䋸;]o¼ÿÝý÷CßÞeö·§nr§—NëÊ0d£"_f«éùùµ¿Ñ5ü€ªîímwù:6ÏŸø]HG^m'Ì£¯³þPKxºZ<ÍÞ&˜F8IAR-STR912/examples/I2C/.svn/text-base/91x_it.c.svn-baseUT ”LjK”LjKux êëÕœms›ÆÇ_73ùgÚ7V¢ZBN›\{Ü+‹¹)°’ëv2ŒV º<øaÒ|÷ž]XòMD&c”eÏÙóÿ±œtìÖ«) P†£+S»èSè´Û¿‚Eu× |¶dNøžë„°Ëôå‹WÐs— û–Áf;…ÿHS7:vx9Ž~ÙítEyµZºŽ¹¾”Ù·¼³jG ]aZÆlÆ;·iIïZ"°S˜° äÒq[°Ð Ü•p²õn»h^Ä‚ ^E`±àÎu˜~¹ Ñðo<Üè aΉ8¶× â%D>ÌD˜Ø`/—-°‡‰¨Cãë ,u-ìníGð'àÞ(}`o¡§½/ÌÎÝ^`/æ…M1RèÏ£{;`èǾlÏY€Gþ-zq0žÇõ¨¾èïøAÀ•ïÍ\ïÒÈÀv°]´¤Ý¶£Ýá$ñƒÔÉÒ·g(ÃåF ìÆ ±ëñƒ¹¿\ú÷÷!ð9v»Š›‰VÎð>p#ÓŒ[­ÉÀ[ØÞl‰SÌ`Åp*,X`/CÐÌ÷Ûÿ­SÞGi~ðxÊ?ã,ítø,}››¥õ±7Og°”Û7»ÿ…ˆiŸÀÈ$1(Xý”M—}MéƒfAohÂÅXSeC!04W kº2E›áDS5ã”±E‡:1-¸ÔhŸûT†â€f ¹.Smh€I.dS´â€šÉÍÕ±B-ìCS%¦ é@‡`ÉTÓÉ1È–ÈèÀh“g"M1‡d@j M±Àê˃C ]}2Pa ÉÝ.eã TÍÄÞM+ùÄ=â!ehXäý•kòTY—/H"‚6ÂŽ<î@$²MÍâzæPàÐEsá¯Ö¡mʆÚJ$ÁØ" Ë*îU†Z$>а„•5ƒ¨(È$ ÿa›Aqœ"È<Éo?£[/_üäzÎ2ÆkíÇ4ƒ/~,6.ÝkÑŠí36ç©¡;îõˆ9µ´?¼Ù6kej ðÌNeUEÀÖ[€öƒÜæ¦ì/LÌhï€>LµÙCÌt¯º¦¼β½Ð—4íÆó9 ¦ôáÏ̈š¹ƒfþ`ÑIû9'íýNîü%&KLëè†LN$ǽè¼}ÀÕ´¾ñ‰Ëjì éÒz c/á:›ö“”·cõ;M µíÆ3aqҺɞ"%kÞ*޲K³á{LÌð8ÊÙ0YÞÓßvkqêîì©î#ÞÜxùâÓËŸ¿{ëRû êÉ’¢UÍPgdVy°9‹œÅ¤Whq[°¯ý ªö¢ð ØËÛàgvd×’yNpÀ{Úûp£UÍ8gtV@ùR½˜âsÀ׃æÏ.hœyÈ ØÿbFu`žW]Éry8u\4k =§¹Š nêæï‡cæõ$_T^ |Z>­/|Z1|ªéíÃÙsëz¢/讆¼TмT[òRåä;¥ÈwjK¾S9ù“RäOjKþ¤Zòc«ÛŽ^˜×“}Qy5ðåàê P1|K—x RÆõŸW]vbz8w•›×“|Axý÷ƒ¯êr öº\OòyÕÌyE6ÇŽÆõÄžW]v]9œº®ÔzNs/mÔÐѸžÔ󪫸“”MZâ}0¯'ú¢òŠà—xe#Ìë ¿â—6<„om„y}áWüÞFÔ÷Ìž[×}Aw†<@xïòš‰#^©uÁ¢FäŽyoh7¼Ë'€ø^üpì0)ì"bÐ|y×T—©Ò'êé–´Z@&Rb{0ûã†Øë©{EÉÔ$ Ñ&y?©§Nb[¨ÕJJÇ^¿þç£ÉæÞ1ÕŽìDÉÙ×@MÙ°tÒ¢ß[>B—öîŽ6µ`p~.5àù­Õº÷ƒv€ýg‰‹OÉ.)•cÞlrÚ½^ãlŸ«Äîs²cËåýírX¨~Kêî>¬Ù@Zˆ¯_Ÿåœ4Yùï´'kƒ±IòçlÃLîÁÑV{#ñµ­£“r'h­n½ÏŒy"؉‡ãÕÀx¦ðJsA$‡<l.âÍTÚCþ‹å[t8šª„…o rq–¶SÁ4¹;'èŒÍíxæá‰ùá»fÍ· ܺ¶YsÏÍÂóYSJ³æÎé¢Ë%æTª8iDAóŽÙòKñ~{íFòl°0#4wÖfÊf·ô³S÷i,;÷¯kWø?eÉ쀷Áõ#„,ûÆ^ùÀ3qK?ÿ¦˜ð÷9¯÷í´7ñ„¹‰¦GD°Í¸fcÝûéµ)5‹uÀëëÓX«E&ïà¯8ÄÈæ8ã²á ‰ý™_ x—±Î•(![û¼ ýS^ÃóX`GŒ' H…ƒW¬oOÖçõ‡m2âçKXdú“ô’e›Mø¶Þ?Cf×¢,À¼]cMј»ÐüÜÙ §õ ¸&`þ 'bfð«0«[v>zþý’Ínvš»7kˆªf(fÄ<œîÿGñ,î9‰…Bôdð=w%’XÜ×–fñLí>Q¹Cùõ!·Bðßñë kTâÖš[×s‘(è®â‹!kTbyæÖµ%_ñ³ü`¢ëÉ=¯ºì&-ñÎë‰=¯ºŠ:j­ÄÐh\OìyÕU|ý;Õʼ+Oìë ÿ‰öªø—X`ûó¯x‘1”xcžØ×˜ÅïÌE %ªûó¯¾âñ²ÄÂ+ÌëI¿¨¼Š_Gí½ï–¸Ùæõ„_Tž‡¿ÿ×üb¨ü!ô´I‡ýPKxºZ<”çþw¿+"6IAR-STR912/examples/I2C/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êëÝZ{oÛFÿ߀¿Ã´RÙ–-QM{=û|MÒ6q’¨’”Ó´(ZZYL(RàÃäòÝofwù’hŸ?ЖHrç±³³¿™Y§³Ûð@KÛͽ·Í³szÝîOà¸G,`Ó4ŽBš@“èöÖ.œúƒ¡·dP<‡°ôüð`Jd5KQ ÕçšêjøS/õ£\æ-‰Y÷R† ã$3I26#æîåç7ë.Xœ„rÐå,™ÆþŠ+)µãä°Š£«Ø[Âe4»CÎg~hîs?I£øîÞÑÆ^lüGÍÆ^N{»i¿"i÷­í,vÏ Ù†c ]p¬S÷jðîÜÔÎÁtàÔ²állêêP3Àö߃jP]”±.LÝž6v\k`Ø©{gºçN0‡(>P]Ó‚mœ©6Å M›Äõ±æ:È–­6Ÿ ip-pÔ \s`p¸à„¨À÷Ý6¡ÐÔlËèšk[CSsÀ9Wû}Z.œpnôuè›êIßà*Õá{ÐM¹Û¤ËŠœÍ:Æ/c\¹©öAWê™áˆàl#âB[HÖ˶M‡–pj[²•¢—|g‚3F§>T‡zG, ÆŽU7àä}é-’ ¢p–°­ô©UÍ¡¡ã‚ldò±!EdndݓώÎöÖöVí §A6c ì?ù!ßùB|ûOåvø—‹oåL£Ø¿¦pOïVlÆæO™fÊÕ°0[Â'8UÍ>:ôºm©ŽÃß¿£Ÿ1ß$©“zi–ëöSpÒ8›¦YÌ5ù8BÑHÊÁìibqqg>"øQœL«ÎÀGJ†Ú’¹vö$sçJ='ãÓSÞ8æo¼-‡Ñ®uª³¥ßî­Ú­Ñ”uZÅÀ¥‡Éÿi +¯½Ø÷.ƒ§‹4f?ƒ{;1g·Ç¸¯vñ¦û1T¸[Gœ…V>9ÉæsOÜÛß+þù£]#Úuâñ'Ô%ÿ|.T)©R©ªD¸±&(">•öÚ@ïh-@æYÈ×FGZο؉äºëÈŸ TjQ8÷¯²˜Ÿ½-ß9’tG?D¾0µ‡È: ¼»VöC~Mý%+ƱD¤ŸZèÓ]ñÚ|ÇßÛ©ûGP§Ëòîªd.>Ðg™ò“dì³ð*]ìH¯=ïÃë›Üý¢ÆµMCíQ¯;xŽWYZ-{†QȈ`ei•Rl†Ù'Ü$<ïƒ`ðÔ¯CìßöÖ'LQ@ézN9T7NÆg4˜ª.³«y÷;Îü9y8LZÿ?N”ÅS&ÑÊ'–£í‘pgwœ0ÀOðH<ñyYÂ4ˆ¦!áÒ<¿r#Öýk?‰âŠJà°B:1,T{#†Ž_°Ø àƒê>΄ fyEh¤¿ÈŽ*`Z…,”Ö¡L‹ä"$°òäQ°!„ IŒF™Í¸"BŒ2¼áÙb–°TJÑ£3:UZÄ"DꃊÌk„”cyŠÙ©¢I[ÎZ‚` ©b*ÕIŠR§ ºÜdÆÝ¹¼pVÕM‡' k ë.Éz=c!í™æîÓÚîqBÖ5ªˆ!€o±Ê&>‚äŠaÛp o»ô41És%‰Ð™’oáñ6¼)eE†É׫4®i7 >2¶âpO(cׄx  r¦ÅŒ_WËq[yÉ—,½a,Ì-Kxœ$NØuɯSÔ( ÏeH?avaâhá%ìñ’_?§8$¦Q¦˜1$jE(˪˜:Ÿû£»bühén=¤ü3eo=(•µ ì¾DPv#Ê3åLXÊb7ZÜïŸ_¢2.êâÖy•@•õùP··DY¼òèv®¬qeM,‡_®òmlTdLdNÀsºõᘓàÿ»øc_:ó•J`6öDÇú—èpã§ 4É*ÂB=¼‚‘‡`ŠÃÆNd_†Ï¡”Çò<Â, sTÉfü&nãÙçÍí#ýSÑþèvæÅös­ÁÜì0ó Æ†>œ±[w¹*«¹ÚŽÛU]z…?yð^{AÆÃˆBš§×ò«–ëÊñ½=Ø!ÑO"h…Q¿çÔ?à˜lÛÛã9éók"«È¸Ò¢%†!.<½‰r|Ü£¢=Ï[óuDM…²FL•8M|.û}ø²fY¤ðÃÜðg˜ý)n*š’Û×m‘‹KI‘M‘ˆ+’ÏûtžáÚC[$û*“Uzþ¼µ›/î›cÈß•A–\€g ÷©ð‡h- ™ [LÈM‘ -¾•ÅôT#6äˆd9á•н١ß󼻥“4Kð„5;ØøGqšðöÿO~‡óà…žÄÅÿ»—FyáÑ“þ¨ÞrÈ{N•SEú€¿|*,ó×Iþ[~(Õ^õã€fudf®Þ'ÖŠ…ZÐï!£¸YÆ¡å!2ð¾}¨z[°!ªt†aI{Ì?Åžâ`ï¨æ¼–¼þxSQðº¥ÀÆmÕ#]–„É]’²¥¸uûK úžkh êή¸?dâ¶‹nTxô®Š[Á$/‚I‘::÷…IÉk‡É„_¥ä3Ýün6g«¡§Æ¢4°ÜÓÞ}Éÿë0†:ýŽú}é¹ÿPKxºZ<\“–§Í (IAR-STR912/examples/I2C/.svn/all-wcpropsUT ”LjK”LjKux êëÅÒÏ ‚0ÀñûþŠúòå"LoQ"è`ÑUÆœ4ÒmÌç??•=éAêúÞàûá±Ë‚nI^ª âeQÌÊ 6—Z­ ›’ÇÂ[höVknL"GX6hÞÁ†nm¡^`R†‰¶Yç}¸ºÝCߥ j–™T43z §ë‘HÊ#©Ð•!—±ôŽÎ”†~vȈÿÈ;FƤrø¸Àóæ|ŠÃTÿ¹AÕ1BÁâL8Xã…;—¢Wm¾[G\«ÄyþÑ«~'ýNB×loPK xºZ<#IAR-STR912/examples/I2C/.svn/props/UT ”LjKʈKux êëPK xºZ<!IAR-STR912/examples/I2C/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/I2C/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/I2C/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/I2C/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<†¦3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZá@Àã´¦$Æwºè»f«¾}«ÒF§$Ê8«Gð¢9~w…'YÔª«ëü¹`,fˆ¬2®²ºƒînÆú~ÎV(k“-ÐùÓ R¤{õ½ÇsïÔ iˆ3²X·ÿU«¾÷d3D­ïà~±ÒÀE«¾ØË É_7ŒvX€bÙÆû­|…P),»u®Di/q‰Ùž(ZxD®æ{ÈÖªë[µÖU{¨7ùtd3êTœƒ$óBÝ!N +!­zñõ¡]·¤ùʰïÛ4„&tYˆËÛ0ñi’ gqZØf¡°å4#ÄiÀ‰Ês\âë,Ž)ãs¤æoÍtìfâL 4¬j oÇ·PÁ{}I(âö†Úuÿöª÷½Ç8îqoF’ã"6M59Ȩ sÜ!“!Ža!|ºÀ¥7e£ÅACRM{£«s†ömŠ1Õ£;vv\‡MUšW÷~üÑáZ>'&ã¶æÜ0'–«&v˜OQ€_:^þì%ÔèHd=ÃwÒ,I*mžÅ‚LN¡¸“p¨cê :i€èô¥º„l3¼t¦1CBeK,4ƒ‘§Ä,^Ù^Œz½ÎG4¾ò/îýïþ úv¬‹Žo”¾j3ãiÒç,Ì‘»5Ç›ósíUÓ5Fë T a\†—ç¿®5µFíâÂx†hO¯KRŽYŒSƒÉÑh4šòÓ_õþ¯ÿä)êF~ }».±É–gÞ˜{mþÚ!]L³ãhÃÑàmóâú»áÈÉ/Íeí°/¼À±¿²Hfkxÿ›èòï†0ÇBßóö£¤ÇÍÅ"š·UG4žw…§„žªZ{†}æy}Ž!Š ®a­°72×0›Ï1•ÕÅÙ„‘A—g[m ¤KñœQXÕšFÂiŠ¢¢ñV›¦Uh`†,ãEfÈH¯#:l[º0™Uˆ h7·vÏ­œÞs«£~aUœ¡v¿lo=lCÉs'=f¼åúeoØ‹bm@ ,Cé|Ž{›b~×8ÆÜßšº³Hµì Y£z—¿{½þ_'ˆÆNUÍ@ôz^n·Ô‰èoxÆ8o‡}¢y#r¡©6G‘Ç“ ¥ ¨ÏgÚŒ[¤T“OKÊ 'ž6-¼Ûá¨wŠ—ûŠ·ðRHZ f9ôÆÖÍV–`Æ _H_]™‰pé{½nßlb׿ôÖï\¹ÞÈïÝœ@nž¯¼„ƒ qªY_n'³T¬Ó××fÊó;þÍÇÿ€Qôa }î‰ßÓÛšöfíŸ`>« ¶`)â"a¼"…R¯ I»w‚¹/ì+K.‚1¡¢Æ2ãí$ ¹>OtÊ“8í#ÆÉða>a±=×J Ðý‚‘Õ%kJ VŽäIÞŠÐܘD"å D»T«ÑÖ©¨.Jìž±Õ6—EÕ ø”‚bòz7Ê>^Ü¿*ä:¹q_ЦØþjLO‡¥Xr@:AÜìŸ:‘¥0¿W/»,Ç×wø¡F‚i‰9±D—TÑis…µ:l.ÏZ6V#Ž‘pS«¹ Y Pá™Ë2pòCô©>ßÉï³—8&nS|ÞAãRÐ*9ÓœȽ7×J8(sÔ̓ ¥Ï× C"ÓQ ˆ–•¹ZúœEÍÛTð‡š´*e¸<³}ö0êq¼ñ˜ >Nt1<ãçÄPO íÝ÷Á¿k—ݤ­F÷y U,lqìæ0ö Í5’Š·ã<þüvå÷â˘ #,Z«þø—ZgY²Ê¯@ÓÇo꩟TÚkè#·N—»—>]”VÛ=‚ ‡é‰õ‘‹ Ìêb2)³º4ÈʬnA „mÕ7v¨ï¤%Ë’'tž.¨µ #½–š ´Uálÿñ wDÚ†Ù¯XµMìèf»š¢¢sDèá‚’â]ýv˜ü÷/PKxºZ<”çþw¿+"IAR-STR912/examples/I2C/main.cUT ”LjK”LjKux êëÝZ{oÛFÿ߀¿Ã´RÙ–-QM{=û|MÒ6q’¨’”Ó´(ZZYL(RàÃäòÝofwù’hŸ?ЖHrç±³³¿™Y§³Ûð@KÛͽ·Í³szÝîOà¸G,`Ó4ŽBš@“èöÖ.œúƒ¡·dP<‡°ôüð`Jd5KQ ÕçšêjøS/õ£\æ-‰Y÷R† ã$3I26#æîåç7ë.Xœ„rÐå,™ÆþŠ+)µãä°Š£«Ø[Âe4»CÎg~hîs?I£øîÞÑÆ^lüGÍÆ^N{»i¿"i÷­í,vÏ Ù†c ]p¬S÷jðîÜÔÎÁtàÔ²állêêP3Àö߃jP]”±.LÝž6v\k`Ø©{gºçN0‡(>P]Ó‚mœ©6Å M›Äõ±æ:È–­6Ÿ ip-pÔ \s`p¸à„¨À÷Ý6¡ÐÔlËèšk[CSsÀ9Wû}Z.œpnôuè›êIßà*Õá{ÐM¹Û¤ËŠœÍ:Æ/c\¹©öAWê™áˆàl#âB[HÖ˶M‡–pj[²•¢—|g‚3F§>T‡zG, ÆŽU7àä}é-’ ¢p–°­ô©UÍ¡¡ã‚ldò±!EdndݓώÎöÖöVí §A6c ì?ù!ßùB|ûOåvø—‹oåL£Ø¿¦pOïVlÆæO™fÊÕ°0[Â'8UÍ>:ôºm©ŽÃß¿£Ÿ1ß$©“zi–ëöSpÒ8›¦YÌ5ù8BÑHÊÁìibqqg>"øQœL«ÎÀGJ†Ú’¹vö$sçJ='ãÓSÞ8æo¼-‡Ñ®uª³¥ßî­Ú­Ñ”uZÅÀ¥‡Éÿi +¯½Ø÷.ƒ§‹4f?ƒ{;1g·Ç¸¯vñ¦û1T¸[Gœ…V>9ÉæsOÜÛß+þù£]#Úuâñ'Ô%ÿ|.T)©R©ªD¸±&(">•öÚ@ïh-@æYÈ×FGZο؉äºëÈŸ TjQ8÷¯²˜Ÿ½-ß9’tG?D¾0µ‡È: ¼»VöC~Mý%+ƱD¤ŸZèÓ]ñÚ|ÇßÛ©ûGP§Ëòîªd.>Ðg™ò“dì³ð*]ìH¯=ïÃë›Üý¢ÆµMCíQ¯;xŽWYZ-{†QȈ`ei•Rl†Ù'Ü$<ïƒ`ðÔ¯CìßöÖ'LQ@ézN9T7NÆg4˜ª.³«y÷;Îü9y8LZÿ?N”ÅS&ÑÊ'–£í‘pgwœ0ÀOðH<ñyYÂ4ˆ¦!áÒ<¿r#Öýk?‰âŠJà°B:1,T{#†Ž_°Ø àƒê>΄ fyEh¤¿ÈŽ*`Z…,”Ö¡L‹ä"$°òäQ°!„ IŒF™Í¸"BŒ2¼áÙb–°TJÑ£3:UZÄ"DꃊÌk„”cyŠÙ©¢I[ÎZ‚` ©b*ÕIŠR§ ºÜdÆÝ¹¼pVÕM‡' k ë.Éz=c!í™æîÓÚîqBÖ5ªˆ!€o±Ê&>‚äŠaÛp o»ô41És%‰Ð™’oáñ6¼)eE†É׫4®i7 >2¶âpO(cׄx  r¦ÅŒ_WËq[yÉ—,½a,Ì-Kxœ$NØuɯSÔ( ÏeH?avaâhá%ìñ’_?§8$¦Q¦˜1$jE(˪˜:Ÿû£»bühén=¤ü3eo=(•µ ì¾DPv#Ê3åLXÊb7ZÜïŸ_¢2.êâÖy•@•õùP··DY¼òèv®¬qeM,‡_®òmlTdLdNÀsºõᘓàÿ»øc_:ó•J`6öDÇú—èpã§ 4É*ÂB=¼‚‘‡`ŠÃÆNd_†Ï¡”Çò<Â, sTÉfü&nãÙçÍí#ýSÑþèvæÅös­ÁÜì0ó Æ†>œ±[w¹*«¹ÚŽÛU]z…?yð^{AÆÃˆBš§×ò«–ëÊñ½=Ø!ÑO"h…Q¿çÔ?à˜lÛÛã9éók"«È¸Ò¢%†!.<½‰r|Ü£¢=Ï[óuDM…²FL•8M|.û}ø²fY¤ðÃÜðg˜ý)n*š’Û×m‘‹KI‘M‘ˆ+’ÏûtžáÚC[$û*“Uzþ¼µ›/î›cÈß•A–\€g ÷©ð‡h- ™ [LÈM‘ -¾•ÅôT#6äˆd9á•н١ß󼻥“4Kð„5;ØøGqšðöÿO~‡óà…žÄÅÿ»—FyáÑ“þ¨ÞrÈ{N•SEú€¿|*,ó×Iþ[~(Õ^õã€fudf®Þ'ÖŠ…ZÐï!£¸YÆ¡å!2ð¾}¨z[°!ªt†aI{Ì?Åžâ`ï¨æ¼–¼þxSQðº¥ÀÆmÕ#]–„É]’²¥¸uûK úžkh êή¸?dâ¶‹nTxô®Š[Á$/‚I‘::÷…IÉk‡É„_¥ä3Ýün6g«¡§Æ¢4°ÜÓÞ}Éÿë0†:ýŽú}é¹ÿPKxºZ<Œ»°Ík"IAR-STR912/examples/I2C/91x_conf.hUT ”LjK”LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeÇ>¨»_¿~Ý £ÑèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+?£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õ~’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Qþ£/@QrœÈÃIþú=:=‘ï²U¾+˜Ï嫌"&s|ÊïЕåBñžžŒpKð­(¿B–Ããvµ%¾¸›b)àÏ-¾ÉK±(6‘×P? Xëuñ-Ë¿ÀZ²µ5G£ûø5ÿ•Ùîd6øGÙPð¼ÝyÛ—k—xd¥•hKKâï´'Ó–³oqÇd6>zÖí¦ópÞ¢¸Œ#>S[øŽÙÚª{2ZÆ¡©/ãødhsUí¹ý”æ¹X}³/`õ.ú—}«¾Àu_àæúlèPªÚóqš5ŽzÍ£^ë¨÷B+q2\⤑ØOuÏ’¡TÕRáa=” ¡ªm¨SuXªC?¤éŒ…½zºï*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëO‹ÎÔª¥ŠmývØ!PKäk$)š|½¤„D\÷;LúÆa¼ñ˜o<–~(ñlè|ªÚ†êПÉ6 †C¨þë˼/ª?&œéàc™j©˜5ð» ‡–qhšÚƒh@û÷z#¶½éŒÎ~Ó,ܬi–Ïíò¥ªÓ5¬Jñ×V䋸;]o¼ÿÝý÷CßÞeö·§nr§—NëÊ0d£"_f«éùùµ¿Ñ5ü€ªîímwù:6ÏŸø]HG^m'Ì£¯³þPKxºZ<ÍÞ&˜F IAR-STR912/examples/I2C/91x_it.cUT ”LjK”LjKux êëÕœms›ÆÇ_73ùgÚ7V¢ZBN›\{Ü+‹¹)°’ëv2ŒV º<øaÒ|÷ž]XòMD&c”eÏÙóÿ±œtìÖ«) P†£+S»èSè´Û¿‚Eu× |¶dNøžë„°Ëôå‹WÐs— û–Áf;…ÿHS7:vx9Ž~ÙítEyµZºŽ¹¾”Ù·¼³jG ]aZÆlÆ;·iIïZ"°S˜° äÒq[°Ð Ü•p²õn»h^Ä‚ ^E`±àÎu˜~¹ Ñðo<Üè aΉ8¶× â%D>ÌD˜Ø`/—-°‡‰¨Cãë ,u-ìníGð'àÞ(}`o¡§½/ÌÎÝ^`/æ…M1RèÏ£{;`èǾlÏY€Gþ-zq0žÇõ¨¾èïøAÀ•ïÍ\ïÒÈÀv°]´¤Ý¶£Ýá$ñƒÔÉÒ·g(ÃåF ìÆ ±ëñƒ¹¿\ú÷÷!ð9v»Š›‰VÎð>p#ÓŒ[­ÉÀ[ØÞl‰SÌ`Åp*,X`/CÐÌ÷Ûÿ­SÞGi~ðxÊ?ã,ítø,}››¥õ±7Og°”Û7»ÿ…ˆiŸÀÈ$1(Xý”M—}MéƒfAohÂÅXSeC!04W kº2E›áDS5ã”±E‡:1-¸ÔhŸûT†â€f ¹.Smh€I.dS´â€šÉÍÕ±B-ìCS%¦ é@‡`ÉTÓÉ1È–ÈèÀh“g"M1‡d@j M±Àê˃C ]}2Pa ÉÝ.eã TÍÄÞM+ùÄ=â!ehXäý•kòTY—/H"‚6ÂŽ<î@$²MÍâzæPàÐEsá¯Ö¡mʆÚJ$ÁØ" Ë*îU†Z$>а„•5ƒ¨(È$ ÿa›Aqœ"È<Éo?£[/_üäzÎ2ÆkíÇ4ƒ/~,6.ÝkÑŠí36ç©¡;îõˆ9µ´?¼Ù6kej ðÌNeUEÀÖ[€öƒÜæ¦ì/LÌhï€>LµÙCÌt¯º¦¼β½Ð—4íÆó9 ¦ôáÏ̈š¹ƒfþ`ÑIû9'íýNîü%&KLëè†LN$ǽè¼}ÀÕ´¾ñ‰Ëjì éÒz c/á:›ö“”·cõ;M µíÆ3aqҺɞ"%kÞ*޲K³á{LÌð8ÊÙ0YÞÓßvkqêîì©î#ÞÜxùâÓËŸ¿{ëRû êÉ’¢UÍPgdVy°9‹œÅ¤Whq[°¯ý ªö¢ð ØËÛàgvd×’yNpÀ{Úûp£UÍ8gtV@ùR½˜âsÀ׃æÏ.hœyÈ ØÿbFu`žW]Éry8u\4k =§¹Š nêæï‡cæõ$_T^ |Z>­/|Z1|ªéíÃÙsëz¢/讆¼TмT[òRåä;¥ÈwjK¾S9ù“RäOjKþ¤Zòc«ÛŽ^˜×“}Qy5ðåàê P1|K—x RÆõŸW]vbz8w•›×“|Axý÷ƒ¯êr öº\OòyÕÌyE6ÇŽÆõÄžW]v]9œº®ÔzNs/mÔÐѸžÔ󪫸“”MZâ}0¯'ú¢òŠà—xe#Ìë ¿â—6<„om„y}áWüÞFÔ÷Ìž[×}Aw†<@xïòš‰#^©uÁ¢FäŽyoh7¼Ë'€ø^üpì0)ì"bÐ|y×T—©Ò'êé–´Z@&Rb{0ûã†Øë©{EÉÔ$ Ñ&y?©§Nb[¨ÕJJÇ^¿þç£ÉæÞ1ÕŽìDÉÙ×@MÙ°tÒ¢ß[>B—öîŽ6µ`p~.5àù­Õº÷ƒv€ýg‰‹OÉ.)•cÞlrÚ½^ãlŸ«Äîs²cËåýírX¨~Kêî>¬Ù@Zˆ¯_Ÿåœ4Yùï´'kƒ±IòçlÃLîÁÑV{#ñµ­£“r'h­n½ÏŒy"؉‡ãÕÀx¦ðJsA$‡<l.âÍTÚCþ‹å[t8šª„…o rq–¶SÁ4¹;'èŒÍíxæá‰ùá»fÍ· ܺ¶YsÏÍÂóYSJ³æÎé¢Ë%æTª8iDAóŽÙòKñ~{íFòl°0#4wÖfÊf·ô³S÷i,;÷¯kWø?eÉ쀷Áõ#„,ûÆ^ùÀ3qK?ÿ¦˜ð÷9¯÷í´7ñ„¹‰¦GD°Í¸fcÝûéµ)5‹uÀëëÓX«E&ïà¯8ÄÈæ8ã²á ‰ý™_ x—±Î•(![û¼ ýS^ÃóX`GŒ' H…ƒW¬oOÖçõ‡m2âçKXdú“ô’e›Mø¶Þ?Cf×¢,À¼]cMј»ÐüÜÙ §õ ¸&`þ 'bfð«0«[v>zþý’Ínvš»7kˆªf(fÄ<œîÿGñ,î9‰…Bôdð=w%’XÜ×–fñLí>Q¹Cùõ!·Bðßñë kTâÖš[×s‘(è®â‹!kTbyæÖµ%_ñ³ü`¢ëÉ=¯ºì&-ñÎë‰=¯ºŠ:j­ÄÐh\OìyÕU|ý;Õʼ+Oìë ÿ‰öªø—X`ûó¯x‘1”xcžØ×˜ÅïÌE %ªûó¯¾âñ²ÄÂ+ÌëI¿¨¼Š_Gí½ï–¸Ùæõ„_Tž‡¿ÿ×üb¨ü!ô´I‡ýPK xºZ<IAR-STR912/examples/TIM/UT “LjKʈKux êëPK xºZ<IAR-STR912/examples/TIM/PWM/UT “LjKʈKux êëPKxºZ<×:_¯¡'IAR-STR912/examples/TIM/PWM/tim_pwm.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦$37¾ —bšh8>ƒÒ™]¸ÆlÌ»¦¶‹^ƒ†ÁLìÆ@^Vg Ò”ËÊ ü½§¶óëÆÁÓ3†,Šm·»(½mjЦ¬(9.½AR×zm»3KJ}ž|vÒÆpa\Kˆ“Á¨˜váì¶#9°?}Ù\ƒ_Ð"~_VÛ î)Ilë÷0¦gT|zJŠ¿)ïwÎ/PKxºZ<·¢ÅGØ<'IAR-STR912/examples/TIM/PWM/tim_pwm.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<!IAR-STR912/examples/TIM/PWM/.svn/UT •LjKʈKux êëPKxºZ<4„ ¯F(IAR-STR912/examples/TIM/PWM/.svn/entriesUT “LjK“LjKux êë­ÓKoÛ0 à»°¿b›õÌ­Ç i€½zP©·Ø1leÉÏŸÚr36ó$ù¢80–ú™I!Ø{)Ó²ëº8M—BKi—_c»œ/s¤|žÔŽTºz7ŸÏåoRWæËø³›N¾Ô¤aéöÍËaï¸èèæ‡éDKwx|êž¿?ý[VC¸d#ðÀÅNÁŽëÖ(£@¿2Šýð-ǙƱì>L¶€Cã±ù8%ÕžŒ‹”” ì|?¶‘åþDìOËš¢æfÇÝNš>ã•9B’2d§t­í$¦ÀH%¹2ÿ/ïW åPY¥Þ¦ëÐÒuZg“ä­K9°Ú ¬MæÈ}Bå6î´‘w¸´G mÝŒàŒÌ’K¥(]'g5©” m‚Sh?p{òi ¶ÜÊJ[“}Ne\‹ÏÍÉu„ÎJ‘7±im*ÍñÛ[<¹}_G3<‡äá9Üùc…Öó„0úû‹v£õÂÂÔc>¡Áï/HÂ~yûö·w¿´_üñþ§ú±sö{N,«3'!¾Ë}ßî4·OÕ}Ñ9 RŽDq .Rá÷Wx–¦:ί ÆBoHQ°(jú»›û%;¾¬M¶ ;ȯ&X"٫輦£p§N¸‡¸· Ëuûßtš{WÖ%}$Ðú Η…^wšË½ÂpûQqÃhy(”mÜ9ß*wPu‡Åb·ÎB”î ‘X쉒 /ÈÕ|Å:ÍìÂV­Í'Õ̾œÅ4z$ç ÉršPwˆèŠCHE/þv¨C×-i¿ÑlÁ‡.õ¡ }æããò¶4A\§ÂZž¶]*l5Íðqâq¢Ê—ø: CkÎx„ÔümèŽÝTœ©–Q äíø*øa_Šø£¹¡v=¼ýŽêýà0ŽÜYø¸ˆm]MŽR*H„{d6Æ!,„ϸò¦ŒC´sœ!ÇÀz×°L˜™k‡E¦¢D Ê z 8“02ÞrL«Mô)Ž%žQ­eH8IPP6Þª²“¤Í̘¥¼Ì éeëÈGˆ5ª¸+‚‚1xo:É A0™4†A>#NÁ|FérθA Éq°Ò+s¬ga+«"xžÍVd?ú:•«—KçÌœ¼î9$6øÞ̤²Á¡/ÈJp4P·g½’)¥Í&mcï=DÉØ‹šµ¬cPìCD¨³@ûÉqFøï”p cB0ñ›]ûEØ=ÎbqÓ‹†4´6Ç` M"kÚÎs¦ÜDhöë8­ag$a¹«rqíöºÓ˻߽h°Jæ×q­:ïh–‘(1ò±A ÂÚèR/LËL¹®4ùÀû—ÙØÑÄÄäÄä>Šãä]+I¼×%3d8ü™QxFþ!Å ØoÁ§ôáCK /ÀL¡oa5+0¾>ƒÍ(e¯t·]Eí<0þµ¤Ãµ­ûÚ´KÐ ¸ï±PŒ•Iç0Æà› Üiªg3h#êÑMÓÄœm„–ûOݬœ]CÈgg!A%`1hBYQ²ª‹ÔGgÒ×X–u¿-]àŒ¨1gLÈç2è¸)ˆA¯YÀ\PÜ®£Ä²ëb<ͦک^{ú„b„’ÀZxçÃEÛô€}ŒWª¨ý²zÓQ†)嵩œÌ±3ØÑ`'¡«ÍtWq @–¾»ÂžÁ N>ÚI‚}ƒJ’܌٭£! pÓ@, G$ ãouA&h6Ž‘W:ùÞêNï¿FxnÐDÉêOšÙJPTôDŸ¤ÚV.Lj¢æÍ®‡à³kgøìúØ_X#"Ô˜é݇m(™zRÒcÚ{P¶PÆñ†m1(Ö¤Ä2TÎçØ· æ§qµcÌýÝ©;ƒTËZ1úapù§3þ÷ÑzFbPÝ Ä`àävKåCÇ ã¼æ¹æÈ¥¦ZEf(!êK0ËÎ4·H©f_?VANd-@¥™—Uàä©ôI–åÉoµW8&n|^ºq%hµd6ç6rïýµ reN‚Ú©`·ÔâüÚ¾Oä}¢ae«À³€£¨Kì¡YY®U%Ãå žétÚèÇñ¦S‚ø4ΘÂ5~NõÌèÞ9Ý»nõþAfÑh€Ÿ·P…ÃÇncžÓ\#©û8ÎË—/o ×ûpfl´\V@!Ò:ͧ_}Ô 8K㢼Mž¾¯§¾Si¯¡ÝÏ™_gú÷x…¢8Ä 8u¹_—ÿ—MÂ}Vé½tø‚˜°ÆnŠBö-M&ÀàRmX‰—Ö†%Ht«ÓÜôê¡–æ.«îá¬VÕ:s¥‘UÅÚ––ãh;ÊØnC†º‰OTÃÅŽV·«){4B„~P’ÈÅw“ÉÿPKxºZ<~‚¹ýìƒ>IAR-STR912/examples/TIM/PWM/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµUËnÛ0¼ Ð?ì± RÛ ú4Ð#Ñ=R’NàS¡ØŒMÄ’ ŠÎãï»+¹NÒ¤‡)O²vgvvÌ] ^9ð.zQq>—bšh8>ƒÒ™]¸ÆlÌ»¦¶‹^ƒ†ÁLìÆ@^Vg Ò”ËÊ ü½§¶óëÆÁÓ3†,Šm·»(½mjЦ¬(9.½AR×zm»3KJ}ž|vÒÆpa\Kˆ“Á¨˜váì¶#9°?}Ù\ƒ_Ð"~_VÛ î)Ilë÷0¦gT|zJŠ¿)ïwÎ/PKxºZIAR-STR912/examples/TIM/PWM/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWMsÛ6½{ÆÿagrI<©EÒ_‰o‰˜òC%A{|Òг‘H—¢šº¿¾ ÒR$XD˜™ÒA»ûöíÃ\ó# ÞÓ@£ÉCÌǞDz®!A>«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<·¢ÅGØ<?IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.ewd.svn-baseUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<Þ‡ íâ:IAR-STR912/examples/TIM/PWM/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êëµWYOãH~Gâ?”f¤Q@,Iöñ`ìNÒZ_k; ž,ãtHk;òÁ0»Úÿ¾UÝvH8²3‚m ѩ㫣«ºÚýÃôÌ0=ÿ&àãI'ƒÁ/FŽLËBd"­Ë"—i/©îïÂHfÜd)`½Î`™Èü8%¶ÑÔ‹¢„ÍuŽi±Ze2MjYä‰dIÂVR ,«xU5bFƒŸûÃßúÊ­3¸eEÃãRUZÊ•Y£‡h°ö,W™8¿,îÊd M%ó;¨"îÀJ ÞB”IvL@/®eWM¹**ÅUe« ·ui‘Ïå]SŠ5®ÌáU<ÿÚe1dñٜȪ.Êog´Ç¤œPÒ~ÝJÚIÇ;}žÐaË{-ÙÿƒÇÑ„°¹„Þ(º6×nN€‡0òO¹e¸&ϵoÀàNF„:Þ·¸;sFžÃ‚à®y4ÁJV cDÜs!`c#PT4ÈR·¦f¢xÅe yD„Æ££dª0 4ˆáÔŽŽ¨-¸xÌffx.7C'†mƒëEpÉ`Âl ln\ÚLAî X<@é#Ââ®þFÑM7dN1rnØ`Ž1f¡Ž­ù$…¾€ië°R£ÀsÈWDˆrç œbÒÖ94\«¯C‚iÈÀ1,—7Ù" bêdißóE°w™… “ÄÍE§ˆ­œÜÎäûWt¯^åiÖÌD?½yâG©ñàÃïÇ8“·Ç‹û{Ê’_Ê{º}êo+1ó·l}ïMæâM÷¶ÅÖ”M±-çMžª{oຠcúagŸÝ!¾1èþ;W¾ª]°z°êúÂÀÃQŠŒn(©>ÎWM½9kÝ"Äðšz“óȦ;Îxß…‰’y­âèÝrv°¿÷70ÀG9§†³ØåtL¿;æ¶¹ëœ+®ÈgrN;ú Íiì˜öaÑ”©0ÕôíuÄØ ̓óu ýÃ)Îm¤AR©ñŒV’&«!ÍŠô T ‚üÒ°>"Xò^VE¹KÔÉÃëÇð×ϸm*‚ü2ÓÊpCÚ!þ¥7Ép ÇØƒá0—ÆÂ#2Ë© •³ÚÉ9â‘$ùŒ6CÐÐÔT– ~é{#êg a‚%$ŠË$“éG—nØ.RWž~‡‹J®uMur뛢¿îÂiÍ}Sù[‹t/-ÍïÑS ÿû§ÇXa|>Ø4¿u‘+’BÐmãÁù.aK–B÷ߣŠîŸjt›u´ý¦ZøM–íÔâ>æ;G{øÜm•7H±NøN#«E™Ó•Öêk_‘|²­§äèÓs ƒs] ]µ¬À_8UZDÁ~zvÉ?Å3·ŽÏ‚ÐÁ·ðàvdDQЉòªŽ^V¥뛡U¢æÅÒî ðu]¿Ä{5Éuïàa4ú&«Dl‹{‘ÅÃÖÜ? Îwka“3­Ö*ÙÞõÖ™Êïê…²5xø¬\|]e„E×k#muá¦&¨+ävbX'øM¥º¾hr,7ú R'ûx~¦æ˜ËY‹¨ª$2‚¨úºÀÅÞ~þ£Çûóõ#Ÿ£Ìµè%;â6kgÌ¿PKxºZ<ßÈ¡KÓ,,IAR-STR912/examples/TIM/PWM/.svn/all-wcpropsUT “LjK“LjKux êëÅÓË ‚@€áý÷¶ÅÖ”M±-çMžª{oຠcúagŸÝ!¾1èþ;W¾ª]°z°êúÂÀÃQŠŒn(©>ÎWM½9kÝ"Äðšz“óȦ;Îxß…‰’y­âèÝrv°¿÷70ÀG9§†³ØåtL¿;æ¶¹ëœ+®ÈgrN;ú Íiì˜öaÑ”©0ÕôíuÄØ ̓óu ýÃ)Îm¤AR©ñŒV’&«!ÍŠô T ‚üÒ°>"Xò^VE¹KÔÉÃëÇð×ϸm*‚ü2ÓÊpCÚ!þ¥7Ép ÇØƒá0—ÆÂ#2Ë© •³ÚÉ9â‘$ùŒ6CÐÐÔT– ~é{#êg a‚%$ŠË$“éG—nØ.RWž~‡‹J®uMur뛢¿îÂiÍ}Sù[‹t/-ÍïÑS ÿû§ÇXa|>Ø4¿u‘+’BÐmãÁù.aK–B÷ߣŠîŸjt›u´ý¦ZøM–íÔâ>æ;G{øÜm•7H±NøN#«E™Ó•Öêk_‘|²­§äèÓs ƒs] ]µ¬À_8UZDÁ~zvÉ?Å3·ŽÏ‚ÐÁ·ðàvdDQЉòªŽ^V¥뛡U¢æÅÒî ðu]¿Ä{5Éuïàa4ú&«Dl‹{‘ÅÃÖÜ? Îwka“3­Ö*ÙÞõÖ™Êïê…²5xø¬\|]e„E×k#muá¦&¨+ävbX'øM¥º¾hr,7ú R'ûx~¦æ˜ËY‹¨ª$2‚¨úºÀÅÞ~þ£Çûóõ#Ÿ£Ìµè%;â6kgÌ¿PKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<Õ§qiÚL'IAR-STR912/examples/TIM/PWM/tim_pwm.ewpUT “LjK“LjKux êëí\moÛ¶þ¼ûB›oëüÒn¸-àuP§ÕjÇ†í¤»@ƒ–h™­Djå8ûõ÷’ü[vCQ.–:©^(><‡äá9Üùc…Öó„0úû‹v£õÂÂÔc>¡Áï/HÂ~yûö·w¿´_üñþ§ú±sö{N,«3'!¾Ë}ßî4·OÕ}Ñ9 RŽDq .Rá÷Wx–¦:ί ÆBoHQ°(jú»›û%;¾¬M¶ ;ȯ&X"٫輦£p§N¸‡¸· Ëuûßtš{WÖ%}$Ðú Η…^wšË½ÂpûQqÃhy(”mÜ9ß*wPu‡Åb·ÎB”î ‘X쉒 /ÈÕ|Å:ÍìÂV­Í'Õ̾œÅ4z$ç ÉršPwˆèŠCHE/þv¨C×-i¿ÑlÁ‡.õ¡ }æããò¶4A\§ÂZž¶]*l5Íðqâq¢Ê—ø: CkÎx„ÔümèŽÝTœ©–Q äíø*øa_Šø£¹¡v=¼ýŽêýà0ŽÜYø¸ˆm]MŽR*H„{d6Æ!,„ϸò¦ŒC´sœ!ÇÀz×°L˜™k‡E¦¢D Ê z 8“02ÞrL«Mô)Ž%žQ­eH8IPP6Þª²“¤Í̘¥¼Ì éeëÈGˆ5ª¸+‚‚1xo:É A0™4†A>#NÁ|FérθA Éq°Ò+s¬ga+«"xžÍVd?ú:•«—KçÌœ¼î9$6øÞ̤²Á¡/ÈJp4P·g½’)¥Í&mcï=DÉØ‹šµ¬cPìCD¨³@ûÉqFøï”p cB0ñ›]ûEØ=ÎbqÓ‹†4´6Ç` M"kÚÎs¦ÜDhöë8­ag$a¹«rqíöºÓ˻߽h°Jæ×q­:ïh–‘(1ò±A ÂÚèR/LËL¹®4ùÀû—ÙØÑÄÄäÄä>Šãä]+I¼×%3d8ü™QxFþ!Å ØoÁ§ôáCK /ÀL¡oa5+0¾>ƒÍ(e¯t·]Eí<0þµ¤Ãµ­ûÚ´KÐ ¸ï±PŒ•Iç0Æà› Üiªg3h#êÑMÓÄœm„–ûOݬœ]CÈgg!A%`1hBYQ²ª‹ÔGgÒ×X–u¿-]àŒ¨1gLÈç2è¸)ˆA¯YÀ\PÜ®£Ä²ëb<ͦک^{ú„b„’ÀZxçÃEÛô€}ŒWª¨ý²zÓQ†)嵩œÌ±3ØÑ`'¡«ÍtWq @–¾»ÂžÁ N>ÚI‚}ƒJ’܌٭£! pÓ@, G$ ãouA&h6Ž‘W:ùÞêNï¿FxnÐDÉêOšÙJPTôDŸ¤ÚV.Lj¢æÍ®‡à³kgøìúØ_X#"Ô˜é݇m(™zRÒcÚ{P¶PÆñ†m1(Ö¤Ä2TÎçØ· æ§qµcÌýÝ©;ƒTËZ1úapù§3þ÷ÑzFbPÝ Ä`àävKåCÇ ã¼æ¹æÈ¥¦ZEf(!êK0ËÎ4·H©f_?VANd-@¥™—Uàä©ôI–åÉoµW8&n|^ºq%hµd6ç6rïýµ reN‚Ú©`·ÔâüÚ¾Oä}¢ae«À³€£¨Kì¡YY®U%Ãå žétÚèÇñ¦S‚ø4ΘÂ5~NõÌèÞ9Ý»nõþAfÑh€Ÿ·P…ÃÇncžÓ\#©û8ÎË—/o ×ûpfl´\V@!Ò:ͧ_}Ô 8K㢼Mž¾¯§¾Si¯¡ÝÏ™_gú÷x…¢8Ä 8u¹_—ÿ—MÂ}Vé½tø‚˜°ÆnŠBö-M&ÀàRmX‰—Ö†%Ht«ÓÜôê¡–æ.«îá¬VÕ:s¥‘UÅÚ––ãh;ÊØnC†º‰OTÃÅŽV·«){4B„~P’ÈÅw“ÉÿPK xºZ< IAR-STR912/examples/TIM/OPM-PWM/UT ”LjKʈKux êëPKxºZ<*’Â÷8*IAR-STR912/examples/TIM/OPM-PWM/Readme.txtUT ”LjK”LjKux êëµUMoÛ8½ ИcS¤¶c¤Û®=(mЇKÑ |Z¨cÕ(*ÿ~g$ÕN[ïa.OgÞ›7äxúþ‚wþøÉf'øj-a>›ý©ŒôÞÔªP{kêJï[¸u÷°Ô…‚8+œÖ„ÊòRMì‹¥¯³ÇÚÀÛµ€ÈÀkšBï3«ë ¤ÊJJ2«Ô´xÛv*§äÙÇéÍçi/m÷Ê´„¸™Ìz€j÷F7=ɉýífýö¨@òØKV6…š î7/R²Ö­­Íë‚~£âùœúAñü{ìö×nnÆØ¿uú?(–kÁRKH“¥|ðƒ‡5÷×ÀSX&V[x±Ï ‰Ãxt愜®`óŒ¾çôl"(뜺ëìêŽÙ“áδ3¸îlÓYÜ/› I¿ÛÜNfW”=feŸ”5–*»Îöi2¿¢œ ^±ÄŶjÐÕtövP6dq„aú‰ëBEסš·W ž”y£[]@åõ}xQƒ­>TYÑ·ä:6ØNjɪʶ—Æuþ¼yù›<›BýÕdˆðG‡ÁûˆÜuÊLW“ý0>#üMgx04’‰AÛ!Ʊ”1]cÑÐ*/p<‘–õù8µýI†ëp,IAR-STR912/examples/TIM/OPM-PWM/.svn/entriesUT ”LjK”LjKux êë­“OoÛ0 ÅïB¿ŠmêE)·{Vdô2È•z‹ÃVÖ|ü©[Q`7cË; !þôø(Aˆ4,Â(%^J™×]×Åy¾^K»þœÚõr]"çËrâvâÒÕ»år)E]Y®Ón>‡R‹Æµ{üth¾^ªŽoaœÏ¼vÇÇ}÷ùiß<}Ýÿ[Q¥|¦Qú(Õa'mKHöYh…â{y=-ÞÅ4m½~GÊÖøSM?SЉê"FÖ9÷ xËREˆñ>Ó´+Ù/PK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/prop-base/UT “LjKʈKux êëPK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/UT ”LjKʈKux êëPKxºZ<·¢ÅGØ<?IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/tim.ewd.svn-baseUT ”LjK”LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ<*’Â÷8BIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUMoÛ8½ ИcS¤¶c¤Û®=(mЇKÑ |Z¨cÕ(*ÿ~g$ÕN[ïa.OgÞ›7äxúþ‚wþøÉf'øj-a>›ý©ŒôÞÔªP{kêJï[¸u÷°Ô…‚8+œÖ„ÊòRMì‹¥¯³ÇÚÀÛµ€ÈÀkšBï3«ë ¤ÊJJ2«Ô´xÛv*§äÙÇéÍçi/m÷Ê´„¸™Ìz€j÷F7=ɉýífýö¨@òØKV6…š î7/R²Ö­­Íë‚~£âùœúAñü{ìö×nnÆØ¿uú?(–kÁRKH“¥|ðƒ‡5÷×ÀSX&V[x±Ï ‰Ãxt愜®`óŒ¾çôl"(뜺ëìêŽÙ“áδ3¸îlÓYÜ/› I¿ÛÜNfW”=feŸ”5–*»Îöi2¿¢œ ^±ÄŶjÐÕtövP6dq„aú‰ëBEסš·W ž”y£[]@åõ}xQƒ­>TYÑ·ä:6ØNjɪʶ—Æuþ¼yù›<›BýÕdˆðG‡ÁûˆÜuÊLW“ý0>#üMgx04’‰AÛ!Ʊ”1]cÑÐ*/p<‘–õù8µýI†ëp]àÊ›2Ñê¨!©§=£ÉÕ9Cû6Æ–X`‹ÊÑZ{.‚ÅæêžÓt~üÑâ©|VHfÆmúaV(WMl*0Ÿ#¿°œìÚ ¨Ñ’Èf†1nÅI1.Ô½e 2{8†Ç­ˆCs Qߊ=Dç/Ô![àµ5ªX,¸`¾îüM%fùÊv1 zÜÉôÊ]Ü»7Îýôí4}tz£ôÕXhO“!g~â‰Ì­)nÎÏWm[­‡b1†qé_>Ô œ9y}s4JBkÌ‹V«Õ–?-ùQàwó'»£Nä§ÕJO7Ol‹e…·—Z­‡ ~ªQD—¢Yˆ•:ÌÙÿ]¥C/ÏXlЯ{–>µ|]Ÿˆ>¦I1Úx2zÓ~yýÝxbe‡ú²öØ—^áÐ͑޲Žÿ6°€òûÑKQ4ã:Îa€ô8˜yù„`æMÝÁŒã\á9¡Ç§jª=Í>sœ!ÇÀz×°L˜™‡-—˜Š*ƒêâLÂÈxË1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ÷Æ¡“  “Jcä#âÌ·a”.çŒÄ<+½6aÁz†°²*‚çÉlEú£¯S¹z¹tÎÌÉëžCiƒ€ïíÁL*ú‚¬Gu;vØ+™RÚlÒ.–ÁñÞC4ñ—Œ½¨YË:&Åþ0D„: d°Ÿg„ÿNÇ0&‘Ù°Ÿ‡Ýã47½hHCks –Ð$¸v¬é<ã`ÊM„öh¿Ž’&pJ–»*×n¯;½¼±ûÝ‹«d~óhÕyG³”Dy‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½,™!ÃÑà”Âk4²ÉÅa Ž<¥¿ZjxÎar…| «YñõñlF)‹Øx­»Eè*jç ãŸK:\ÛºoL»ô û ÅX™t.c ¾™ÀÁѦz6ƒ¶¢nŠ˜&æl#´Ü¯u³rv !Ÿ†@ƒÅ 1dEDɨ.RyœIÿ]cYÖü¶tS¢Æœ1Q Ƞ㦠e¼f#pAq»ŒË®‹ñ8›j¯zíéŠH ká œ mÓ[v¯TQûeõ¦£ RÊ%jS9©cg°£ÁNBW›讣€ ,}w=ƒœ4|°ãû•$¹³[GCà¦XŽH¶@ůuA&h6ŽW:ù^ëNï?GxnÐDÉêOšÙJPTôD¥ÚV.Lb¢æÍ®‡à³kgøìúØ_X—D¨ 0Ó»»P2õ¤¤Ç´÷ l7 Œã-ÛbP¬-H‰e¨œÏ±ocÌOãjǘ‡»Sw©–=´2 côÃàòg0üëÑzBbPÝ Ä`àdvKåCà ã¬æ¹æ­È¥¦ZEf(!êK0ÍÎ4·H©fŸ=TAN_y#@BT³9ܽÍb±¹¿9ÖSžÛso>üŒ¢ ésÌÜAº³inÖþ Æá³Úc{–",3Ú;!R(õ¢´{'˜ûJÀᲂ,,ÑÞJ’p›t¢SP›À‘h0ŽÆË ͹U h„¾¤¯]®ö¡RÁêÃLä­ ÍIP²RÍ@4K³*Ô2ÕÕG‘ÙÛÔÞ² —APHþQoE™ÇëƒëW‡\'7í«ºÃ›_©¼ùéP KH'H›#I'òAÌïÕë.ëéuÏ¿oo^a{N¬ÐU Õ”o®°òts™EhØ^M8FÂŽA®Zpäd-@¥Y—UàdiôqšáÉŽo³W8&nc|^ªq%hµd5g6òàݵ òdN‚Ú‰`³ÔâüÚ¾Oä}¢aeæ«À³€£e— þÐC³²<«J†Ë#<Ó©´ÇQ‹ñ¦S‚ø4J˜Â5~NõÄÈÞ9ïÝ»nõÁýQVÑhpŸµP…ÂÇncžÏÜ ©p»çùóç·¹ë‹}836Z.+ ‚ H´Nóñ×uÎ’(/¯@ãÇïê©ïS:hèE÷cê×Ù£þ=^£e✺̯Ëþ˾"á>­ô^:|ADXc?=!ý†&`p©6¬ØKjÃ’ÜO!V§¹íÕc,Í]UÝÃi­ªuæJ#6ªŠ´,-Åh{ÊØmCŠºOTÃÅžVw«){t‰=þ $óï%“ÿþPKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êëåXYoÛH ~ÿ@´À")²±åv7» ò Hc[X]+É ò$(ö8T– iºÇ_rFòQMšôi É9©IçÝ–GÆ1žXƒa½n÷W#GŒ‹œ§|\y&Æ%l3=‡¢¬òâË9=cÒz=JÚÙZÒz­ìÃfBµF¶+Ù?€q4dà,dn¡×®õ€ÁõÐ2†`…Ð÷Œ,Sw žk߀n9!èÚx-Ór`ŒÂÈsXܵ ±’¥ÀrÑÜÑ#Ës!`=»èÐ ÈÜQˆJà& ¤+”9yê%“…¡£CGvtB¯…e³™žk!„CݶÁõ"¸b0d¶ ¶¥_ÙLBêî ˜V€Ú'„e¹ê:EšnÈþaä–nƒ©;ú€…*ôæ“r!ÃVaVH!ôÏ!®ˆ åÎëC8¤-r¨»fG…££› ®n–Ù" ªd)nË|¬n¹ÌÄ€†I²äž‹¤H,I®gòõ+ºsxÐAVÙ8­'¼„Ÿ_¼ñ­Pxðæwí1NÅíéý›ÃéÉ/ÄuŸêËœOøô%î-"¢‰Œ¿(‚¯g öæ—¥ä+ć¤Émú’Dâá¾7±•‰*Â4š˜F€v'¬Šz\a«¼8<ø–·®¶ØYU[£8­³±ìóØ«œŽéÙd¿ ºE|aÐW®|9TÛ`Õ`UuËÀÃQŠ‚v(É÷8›×Õê¬uóŒ“À««UÉRpLw¶)xÝ…‰Y%ã8zÈÅäøðào:a€·bJ/œÉ®Fú øÆÜÖwGÇRʳ‰˜Òý…Æ(v û0¯‹17äô=j7c/4Ž/Ú8:ïF8¶q ’RNgt’Ôiã4‚R"-…ê#€)D™+°´ã¶Öâbùèþâënë’ ?M”1\‚¦Pe­aõwñÐV¶HRñ—úÞYºÕý+…e«Æs“™vÌ¥Q‚¾‰eô‚ÊHTSt&á“lBZK/œÉé]:"ññ…J³"Óû>2½÷O#ÓkɼßJ¦·<žÍµ— ŠaIj ž@Rê5ädÓiØÉýÝôNYî`÷MngOäv¶ƒÛÙ7¹íæÖhÀ¢¹‚µ­¤O¥#ýþ´Ù•—Õ¤ÒÑ~oÀ¬YÊ-;ÕeûwáŸÅó‡‹}v¦(¸ê†—К¨n¶×ŒfKkAϱ_—÷~¦{­ô´âEFã¡1Užp»·n§*ædoŽšsyv’aƽggF€ËÇzÎÐÞÊã•­XôóR+©â®¶%³g»3»ìfÝoU4µŸÕ‚ÞøYïŽ]0ÖŽ Ï¿vÀÁ;Û àzh´#.¥õ/v+ʾ«éÕЄÁ¾±ÇÈ/pè')§ÙÒ}ì÷÷©ÖiÉc›?ð4ÖC¼Öï3Á†•O”Mca{×Oð‘ÝU÷ÒI÷ñj/©>–V㦉`]äœ:½§V ^êe¿Ìë ‰näòÈ–c(‰1›4ˆòø#=ˆÖY{å²Ñ6ˆ®úÏ)Ôß“A”Ɩ뢘MîVLbfX¬.†ÿ¿ª{¿­ŽzßYGÚÎ:êmÔé}¾)?Òhã_uSÙ\ÏùÏsMº”÷-›5ŸËÿPKxºZE=€Vz êa…IcÑ$÷ƒÝñãñS)ò–ÃëìÂÿÇ0û‰ãS¿Œ}Mo -ü‚i“Jaå:#—ÉrE ~×R"ÄJåÈ Â´ž@ýæŽ ¨sñ•Q¼KÍ ìÖ¡uŽBoæ«(W3í8žët Èö°!˜r›•ŠìåW‹óðI7 NSaÇ=îЊwù»‹d¼]$F9£l!£ g6VØCâ -éÔŒ7«n±wû1¦Sÿ`Rìu®ËPÚvyPK xºZ<+IAR-STR912/examples/TIM/OPM-PWM/.svn/props/UT “LjKʈKux êëPK xºZ<)IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/UT ”LjKʈKux êëPK xºZ<3IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<3IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ</IAR-STR912/examples/TIM/OPM-PWM/.svn/tmp/props/UT “LjKʈKux êëPKxºZʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKxºZ]àÊ›2Ñê¨!©§=£ÉÕ9Cû6Æ–X`‹ÊÑZ{.‚ÅæêžÓt~üÑâ©|VHfÆmúaV(WMl*0Ÿ#¿°œìÚ ¨Ñ’Èf†1nÅI1.Ô½e 2{8†Ç­ˆCs Qߊ=Dç/Ô![àµ5ªX,¸`¾îüM%fùÊv1 zÜÉôÊ]Ü»7Îýôí4}tz£ôÕXhO“!g~â‰Ì­)nÎÏWm[­‡b1†qé_>Ô œ9y}s4JBkÌ‹V«Õ–?-ùQàwó'»£Nä§ÕJO7Ol‹e…·—Z­‡ ~ªQD—¢Yˆ•:ÌÙÿ]¥C/ÏXlЯ{–>µ|]Ÿˆ>¦I1Úx2zÓ~yýÝxbe‡ú²öØ—^áÐ͑޲Žÿ6°€òûÑKQ4ã:Îa€ô8˜yù„`æMÝÁŒã\á9¡Ç§jª=Í>sœ!ÇÀz×°L˜™‡-—˜Š*ƒêâLÂÈxË1­6Ò§xÉ(ñŒj-EÂqŒ‚²ñV Çuh`Æ,áefH(]GFx‰øg£Š»"(ƒ÷Æ¡“  “Jcä#âÌ·a”.çŒÄ<+½6aÁz†°²*‚çÉlEú£¯S¹z¹tÎÌÉëžCiƒ€ïíÁL*ú‚¬Gu;vØ+™RÚlÒ.–ÁñÞC4ñ—Œ½¨YË:&Åþ0D„: d°Ÿg„ÿNÇ0&‘Ù°Ÿ‡Ýã47½hHCks –Ð$¸v¬é<ã`ÊM„öh¿Ž’&pJ–»*×n¯;½¼±ûÝ‹«d~óhÕyG³”Dy‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½,™!ÃÑà”Âk4²ÉÅa Ž<¥¿ZjxÎar…| «YñõñlF)‹Øx­»Eè*jç ãŸK:\ÛºoL»ô û ÅX™t.c ¾™ÀÁѦz6ƒ¶¢nŠ˜&æl#´Ü¯u³rv !Ÿ†@ƒÅ 1dEDɨ.RyœIÿ]cYÖü¶tS¢Æœ1Q Ƞ㦠e¼f#pAq»ŒË®‹ñ8›j¯zíéŠH ká œ mÓ[v¯TQûeõ¦£ RÊ%jS9©cg°£ÁNBW›讣€ ,}w=ƒœ4|°ãû•$¹³[GCà¦XŽH¶@ůuA&h6ŽW:ù^ëNï?GxnÐDÉêOšÙJPTôD¥ÚV.Lb¢æÍ®‡à³kgøìúØ_X—D¨ 0Ó»»P2õ¤¤Ç´÷ l7 Œã-ÛbP¬-H‰e¨œÏ±ocÌOãjǘ‡»Sw©–=´2 côÃàòg0üëÑzBbPÝ Ä`àdvKåCà ã¬æ¹æ­È¥¦ZEf(!êK0ÍÎ4·H©fŸ=TAN_y#@BT³9ܽÍb±¹¿9ÖSžÛso>üŒ¢ ésÌÜAº³inÖþ Æá³Úc{–",3Ú;!R(õ¢´{'˜ûJÀᲂ,,ÑÞJ’p›t¢SP›À‘h0ŽÆË ͹U h„¾¤¯]®ö¡RÁêÃLä­ ÍIP²RÍ@4K³*Ô2ÕÕG‘ÙÛÔÞ² —APHþQoE™ÇëƒëW‡\'7í«ºÃ›_©¼ùéP KH'H›#I'òAÌïÕë.ëéuÏ¿oo^a{N¬ÐU Õ”o®°òts™EhØ^M8FÂŽA®Zpäd-@¥Y—UàdiôqšáÉŽo³W8&nc|^ªq%hµd5g6òàݵ òdN‚Ú‰`³ÔâüÚ¾Oä}¢aeæ«À³€£e— þÐC³²<«J†Ë#<Ó©´ÇQ‹ñ¦S‚ø4J˜Â5~NõÄÈÞ9ïÝ»nõÁýQVÑhpŸµP…ÂÇncžÏÜ ©p»çùóç·¹ë‹}836Z.+ ‚ H´Nóñ×uÎ’(/¯@ãÇïê©ïS:hèE÷cê×Ù£þ=^£e✺̯Ëþ˾"á>­ô^:|ADXc?=!ý†&`p©6¬ØKjÃ’ÜO!V§¹íÕc,Í]UÝÃi­ªuæJ#6ªŠ´,-Åh{ÊØmCŠºOTÃÅžVw«){t‰=þ $óï%“ÿþPKxºZ‡¢¬òâË9=cÒz=JÚÙZÒz­ìÃfBµF¶+Ù?€q4dà,dn¡×®õ€ÁõÐ2†`…Ð÷Œ,Sw žk߀n9!èÚx-Ór`ŒÂÈsXܵ ±’¥ÀrÑÜÑ#Ës!`=»èÐ ÈÜQˆJà& ¤+”9yê%“…¡£CGvtB¯…e³™žk!„CݶÁõ"¸b0d¶ ¶¥_ÙLBêî ˜V€Ú'„e¹ê:EšnÈþaä–nƒ©;ú€…*ôæ“r!ÃVaVH!ôÏ!®ˆ åÎëC8¤-r¨»fG…££› ®n–Ù" ªd)nË|¬n¹ÌÄ€†I²äž‹¤H,I®gòõ+ºsxÐAVÙ8­'¼„Ÿ_¼ñ­Pxðæwí1NÅíéý›ÃéÉ/ÄuŸêËœOøô%î-"¢‰Œ¿(‚¯g öæ—¥ä+ć¤Émú’Dâá¾7±•‰*Â4š˜F€v'¬Šz\a«¼8<ø–·®¶ØYU[£8­³±ìóØ«œŽéÙd¿ ºE|aÐW®|9TÛ`Õ`UuËÀÃQŠ‚v(É÷8›×Õê¬uóŒ“À««UÉRpLw¶)xÝ…‰Y%ã8zÈÅäøðào:a€·bJ/œÉ®Fú øÆÜÖwGÇRʳ‰˜Òý…Æ(v û0¯‹17äô=j7c/4Ž/Ú8:ïF8¶q ’RNgt’Ôiã4‚R"-…ê#€)D™+°´ã¶Öâbùèþâënë’ ?M”1\‚¦Pe­aõwñÐV¶HRñ—úÞYºÕý+…e«Æs“™vÌ¥Q‚¾‰eô‚ÊHTSt&á“lBZK/œÉé]:"ññ…J³"Óû>2½÷O#ÓkɼßJ¦·<žÍµ— ŠaIj ž@Rê5ädÓiØÉýÝôNYî`÷MngOäv¶ƒÛÙ7¹íæÖhÀ¢¹‚µ­¤O¥#ýþ´Ù•—Õ¤ÒÑ~oÀ¬YÊ-;ÕeûwáŸÅó‡‹}v¦(¸ê†—К¨n¶×ŒfKkAϱ_—÷~¦{­ô´âEFã¡1Užp»·n§*ædoŽšsyv’aƽggF€ËÇzÎÐÞÊã•­XôóR+©â®¶%³g»3»ìfÝoU4µŸÕ‚ÞøYïŽ]0ÖŽ Ï¿vÀÁ;Û àzh´#.¥õ/v+ʾ«éÕЄÁ¾±ÇÈ/pè')§ÙÒ}ì÷÷©ÖiÉc›?ð4ÖC¼Öï3Á†•O”Mca{×Oð‘ÝU÷ÒI÷ñj/©>–V㦉`]äœ:½§V ^êe¿Ìë ‰näòÈ–c(‰1›4ˆòø#=ˆÖY{å²Ñ6ˆ®úÏ)Ôß“A”Ɩ뢘MîVLbfX¬.†ÿ¿ª{¿­ŽzßYGÚÎ:êmÔé}¾)?Òhã_uSÙ\ÏùÏsMº”÷-›5ŸËÿPKxºZ«J¹”³º*‹|¶†c©§'g0Ê—Âl%a·ná³ýÏtV‹ó'!›ú©¬`ÝB@] ÏÏË|–ÕyY€ÙJݬ–HZ­kàëõFÎغØŸ´[¸“ÕZeØçV“ ׳*nHvì~þXeÕ (ù—MÕÔ8Gø/^J€—¯ë²z¹U¿Q¨ã(¡7Bmìòí&ì×X×ÿÅÂc0‰YÂBI4÷$fpïqêO`Å0N¹KBÊ ý £"ŽBNH<âûF† <æ»às2ôYCIÂpyŒèX«ý¥1D£0a¤¸sN|pI@Ƭ݄ª6A Ò¢¨ßn;æ‰ÚÂ(Ž‚¦qÈ 0½áA’bÓv=$¡;h·i .ƒáÃ^·0£åЛն0„‡ÌÅ Å ›„_ô…(Jµ³yØÉ_¢§'êó._s¹€éT½Ê(b4ŧü]y!5ïéÉT ßÊê+äO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK yºZ<IAR-STR912/examples/TIM/.svn/UT •LjKʈKux êëPKxºZ< ½Yeµ$IAR-STR912/examples/TIM/.svn/entriesUT ”LjK”LjKux êë?‚0Ä÷¿Jék¡ lŽD‚$&nžøÒ´ÅøñE«7Ý].¿átg‰”p Áú‚óÖÚ)‘¿›È“ké8ºž"CÏÇðñà&såö¦Ã<<_¯j¶mê\HN=ØyÞ¬Ëÿè0K"æ &ãFÈBa!Ò(S™Ât±TpÑùÞ‘1gÓï²ãò@(iŒãòrD¶L5eyKJ°€jW¾_XÀ¦*Ù7=PK xºZ<'IAR-STR912/examples/TIM/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/TIM/.svn/text-base/UT “LjKʈKux êëPKxºZ<›-Ðõmo(IAR-STR912/examples/TIM/.svn/all-wcpropsUT ”LjK”LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S07àÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôS+s rR‹õC<}¹\ý\¸PK xºZ<#IAR-STR912/examples/TIM/.svn/props/UT “LjKʈKux êëPK xºZ<!IAR-STR912/examples/TIM/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/TIM/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/TIM/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/TIM/.svn/tmp/props/UT “LjKʈKux êëPK xºZ<IAR-STR912/examples/UART/UT ”LjKʈKux êëPKxºZ<ßîœY)L!IAR-STR912/examples/UART/uart.ewpUT ”LjK”LjKux êëí\moÛ6þ¼ûBÛoëü’®X xÅiµÊ±a;Ù0h‰–ÙʤFQ®³_¿#%ù-¶ì†¢ sÝ@_Þ‘<Þ=¤Üùmµˆ¬%æ aô×gíFë™…©ÏBÃ_Ÿ‘„ýôæÍë·?µŸýöî‡ïø¾sö ûn,«3#¾ËоkwšÛ·*ÝgtF”#Q<‚‡-ð»+ªö8Púé Ȧ ä‘Dœƒ$óiBÝ!N +!½øúP‡®[Ò~¥Ù‚÷]@z,ÀÇåmi‚¸4N…µ<-l»TØjšàÄçDå9.ñuEÖŒñRó·¡;vSq¦ZF5·ã[¨à}†}I(âæ†Úõàöª÷½Ã8îsgNâã"¶u59L© ì‘éG°>]àÊ›2ŠÐò !©§=ÃñÕ9Cû6Á–˜c‹ÊÑY;.‚Åf*Íi:?þhñL>+"Sã¶aÝ0+’«&¶˜Ï_ZNþì%ÔhId=÷’4Ž*m‘F‚LN ¸s¨cf!X‰è쥺„ls¼²fCBeK,Ðñ£Ä,_Ù^Œû}ï£;ž\¹Ã÷îs};ÉŠNn”¾síi2à,H}‘»5Ç›ósãUÛÖFóP"F0.ƒË‡s_7Ú­F«qq¡=C2O¯Gކi„ÉÑjµÚòÓ’_õþ¯ÿä)êF~[­ìv]b“-ϼyÔjm>ò©F]ЦVê0·l+ºzʃΠ}0÷™ùëDô0M£ÆÃ·í‹ëïFc+¿Ô—Õc_<¼Ä‘[X$½µ¼ÿMtùwC˜c!ë8ûQÒãˆæâ ÍÛº#ǹÂ3BOÕL{š}æ8Ž!Šõ¯a­072×0[,0%UåâLÂÈ Ë1­6Ò£xÁ(ñj-CÂI‚²ñV $uh`F,åefH([G†xøg£Š»"( Ç¡“  “IcäÄ)˜oÃ(]Î7ˆ!É Vze.Ì‚õ,Š`eU,Ï“)‹ì£¯S¹z¹tÆÌÉëžÃiƒ€îÃL*ú‚¬G}•œ8sì—L)mJiËàx÷ e&0jÖ²ŽHHq0ˆ¡Îì'Çâ¿SÂ1Œ ÁÄClvì±÷( ÈM/ÒÐÚƒ%4‰®] k:ω˜r¡=گ㴆 œ1…å®Ê‹k×ëN.oì^÷EƒU2¿Ž“iÕyGÓŒIù€Q€ jÖF—úQZfÊu¥ÉÞÿÌÆŽ&ú &'&7S'ïZÉä]”ÌÁ°ÿ{Æã5òKб ˆþ*"h¦áÕ·€)´ñ5¼f–7À#0¥Š<ž„h ]Àì|¦É¸EJ5ýä°ø¡ râiÓ¹û§x¹¯xû¯„¤•`–ColÝleñAú…ôâJO„K×é÷z»ùÕ ·®we;c·s¹}¾òbF€D¨f}¹Ì±N__ë)ÏõÜ›ÿ£èÂ@úì‘©Û϶5ÍÍÚ?Á8|VlÀRDeB{'D ¥^’vïs_ Ø9V6E\4Xª½—$ñÖ‡‰NY@mG¢}Ä8=,¦,2çW) !ú’½]dt½Ú…Ê« ‡òoMhvDÂ’Ýj¢YžUd¦©¨ŠËÇ^%Êc¡Ùc¼ŠK‰ ("ÿ¨£ÌãõÀ÷«C®“»öUÝaŠÍ/Uþìt,PÉÀ¤¬Íþ‘Y ó{õ¦ËjríÙ£ âÏ*l̉õ¹ ¤šŽš+¬â¤¹<@hØX9FÂN@®Zpäd-@¥.«ÀÉOÐ'ÙáNvx“½Â1q›àóNW‚VËæÜ@î½¶VÁ)™“ v*D,µx¾v™Ž"@4¬Ìb pr´èRÁ<4-;eUÉpy„gúíaÔãx“ A|g&ðŒŸC=1®·‡Î÷®[}hS4Úç-T°Á±›Ã˜g3×H*Ø>ŽóüùóÛÂïÅÜ-—Ð@G(´NóñÏuBÎҸȯ@“ǯé©ßSÚkè#·.+w/}º0&¬±{þ û¦'Ö‘i•Õ%~ZeuŠ…9Z_§¹Qñ!mKÛ“ÆOPwVPµ€ÀØl$ºmU¸k}¼Â‘¶aö+VmÛÕÍv5eEˆÐÃ%#[üÔ—ü÷/PKxºZ¤ó0;£Îdã$Â`œ%qÄÆ)¤S/ !Š30 BBæÂÀºô¢GðY‚Úgä‹Eîƒ"Ì( ~›cæÌ Á÷fÞmº 0Úi!r0]Ú K)…IÏ+9D'qO #i½Èï»”`ž0óüF¯l‘ YÛ+_äÖcQàcBI€$1{!([ï™üñÝïvºÝÀ@þ:PÝÎÍ·O·“­eb§^kõ,Ñø[KŵÚm#^Çr#ÍÖ\箬 µév–ªÂÝS¯rXª²l+ZÂé’åt[ m„.eÅ Lß.³ƒÓ hD•7ö={µ«•ИÞ×oMm„ÆÈ¢€ —FVO°RºÛáx¨í›Vå3³æ¶ª…²Åe%*Àf-—ëýA‹-|øCÀd09¾$“¯b[ó°i°ë­1ª:í}bïàxÍŸ…sŒkÙ¥åBß*‹&Ù'ŵæÛ-–B>‹ngáDÖ?¨¦ò/  ¦’¿È²-{TçìÀÆAêWò©¥X¨¶RwÀ9<(C(ª', |†‘4“d©Q5¹“HA͵4[÷:âmžPo`0¸Ä !ýÍ©³L\ÆVj4¯šR÷Öî;6‰‘-Þëf{9)ï n!žEÑ8F¿ìHÌE<ÝŽ/‘|Úþ>V­96(ÝÎÕàåO"¸·åBs´ïwWá ¯T§'MoI£Ðmm0|•x)t;%—•“Ìð;ÍÜ“¦K”þ„ŠêYâ^" £ƒ{CÚ˜9B¨?6KÕÅy©rQb‡¢¿ôI:ü4„%‘ a6B¸6ôGW”qe“¢Ñ’w7ÆùÓç¤VÚôvqÞMí¡Ólâ¶Å¾×dÇÚì›Fû~«‘ôm]£q%,l÷?EÙn=É2Öí0Üa:w‹¤ä_Ý Û¥¿ž½n„Üí7>4טß9ܵÆÿÒ–HDó‹ì÷~x ʱY«FÚ&ž:I³äj0ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[Âf£eHŸI Òñæ’B€Ÿ,È­G‡XJ]†PP†d 1‚Lå´#|ûtrpވ׽ÈÔ‡™5ÍvÖÒ§ÜŸxªÃäÂ’²¼"ûT¤]>rÖbŸ-¤ƒÒ‰Á*1ÅŠHJ“à‚™ùóê‰[ÿ•:œ ÿ•~/3ÎôúØ‘ ›Øg¹w1{Ñ,ÝÐsÙ–©í 4Áœ«ÙŸ '.*8c ç«`Ö?*0C*&sæ3 ÁuD~(R ¯Í¬2ºIÄsY¸áÊŸ;€xàCÀÇUÑ1ptã×(ÛÕd’ÃÍ™‡H"_VPo¤C&mqW(`JÊ›‚u̧áàXS™ÒŠ£MAýYâͨ§Y=ãÜ´¤DœŽêˆó•;1©IûaòЪ‡ AñB½ôÐs¼ˆ£>ZJ*æƒ9÷¬Ñ+GâÀb¥Hæ«Ea"¾fû¢")Ž»~;g*5x5YÖ'1ôzžWò¦Gë[«õº•þ O“#àR€|B[ó/à+Ì=Rœê2‡#–¬Ã’Tá(k'­ÃsïÓË^Ö;£ä6†5FjK’п¨æeW ?9Ó UÏEפô¹èQJ.‚üyí÷jž(æ÷jÞ£1’Wó8fþ3’9öStçƒaéãžå|þ5–Ð4g¨7”-|žaéµõ(½¸¢ùf#¢iç;à±ÞÊQfØ«ßÐŒƒÄGx˾£ìÀvÏim¾§qÞ(žRFâ) g¦æ½5àmÞ ÿàv_éÛêƒøé­·7"ïÁ!Œi÷§&>QŒ‚/O¢™vÝ0VßõË^]³£¥|‘úŸ ãä†IðZ(¤ïHs >ÜÙiô¯&‡HÕ–!•IÊ>•BʽSÂÏs/Ùlõ®Ø ¸×ùg…róžïw›û¿Íå—­Ú›þÿPK yºZ<IAR-STR912/examples/UART/.svn/UT •LjKʈKux êëPKxºZ›˜Ñq‰„VÁB{`i)Õo½èu£^!€6 +N•¦D!GB@äöãN:óF–¶‘¥hIžDÎÕ@™¸«fpQÖŽ‘»U'WÍäÓÚò(ÛØ¤4š»tÖ&-%…> µjXÑ|ŽãÛó644QƒÓ¶Î’SjÛ)“b„Àƒµ~4¡-óóu÷Â@í+Ë…ñ)J鵜käAC°;ùiIv)[GÓ`Pd¼H&‚k³e•x-îòcÔé«™ßPK xºZ<(IAR-STR912/examples/UART/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/UART/.svn/text-base/UT ”LjKʈKux êëPKxºZʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[Âf£eHŸI Òñæ’B€Ÿ,È­G‡XJ]†PP†d 1‚Lå´#|ûtrpވ׽ÈÔ‡™5ÍvÖÒ§ÜŸxªÃäÂ’²¼"ûT¤]>rÖbŸ-¤ƒÒ‰Á*1ÅŠHJ“à‚™ùóê‰[ÿ•:œ ÿ•~/3ÎôúØ‘ ›Øg¹w1{Ñ,ÝÐsÙ–©í 4Áœ«ÙŸ '.*8c ç«`Ö?*0C*&sæ3 ÁuD~(R ¯Í¬2ºIÄsY¸áÊŸ;€xàCÀÇUÑ1ptã×(ÛÕd’ÃÍ™‡H"_VPo¤C&mqW(`JÊ›‚u̧áàXS™ÒŠ£MAýYâͨ§Y=ãÜ´¤DœŽêˆó•;1©IûaòЪ‡ AñB½ôÐs¼ˆ£>ZJ*æƒ9÷¬Ñ+GâÀb¥Hæ«Ea"¾fû¢")Ž»~;g*5x5YÖ'1ôzžWò¦Gë[«õº•þ O“#àR€|B[ó/à+Ì=Rœê2‡#–¬Ã’Tá(k'­ÃsïÓË^Ö;£ä6†5FjK’п¨æeW ?9Ó UÏEפô¹èQJ.‚üyí÷jž(æ÷jÞ£1’Wó8fþ3’9öStçƒaéãžå|þ5–Ð4g¨7”-|žaéµõ(½¸¢ùf#¢iç;à±ÞÊQfØ«ßÐŒƒÄGx˾£ìÀvÏim¾§qÞ(žRFâ) g¦æ½5àmÞ ÿàv_éÛêƒøé­·7"ïÁ!Œi÷§&>QŒ‚/O¢™vÝ0VßõË^]³£¥|‘úŸ ãä†IðZ(¤ïHs >ÜÙiô¯&‡HÕ–!•IÊ>•BʽSÂÏs/Ùlõ®Ø ¸×ùg…róžïw›û¿Íå—­Ú›þÿPKxºZ<`ö–¬¢9IAR-STR912/examples/UART/.svn/text-base/uart.dep.svn-baseUT ”LjK”LjKux êëÅXÛn¢@¾oÒw˜˜Þ:PJÓÕ^¸«¥1îÞ¬ƒHít‘!À4öíwQ9¨Ãà¢Ñ gœoþÃ÷Ÿ@\-]ðé!ÂÞCJw àx6ž#oñÐ@!¾Õ´fç6ë«ë+Ýð‡cGt€þ†\ç×j(ºœ^nÿï¾;öß, ¥¥´Zmí¾Ó\ŸÜþÁŽÚØ{C XÑM7=ké=gFºÌ~'û˜D>‰Âd™2n^Gæ÷i¯?º™HRü 1 lgÒ«éÂGX²×‚ب‰9û˜,-äI¸üù­ A òP$Š!V Œ m" qѬ’üôA$†aÜ”F<¯œÉÚc$â!bmâ@”Þy'׆<Û%óT„UÀ--¿ ,úò*¸8*À>‘]IZXÚ¸T²Æ‘'«L?Z“„s¯¢ [ì?®n À²°ˆ&þ®<„â8æ..qW/–p„0kýÙ\¼Þ׎˜aP¢UŒgê­ Y[VÆÔÌât9Ûúôì¬G–iƒ©fº§Ò­c7µÞÜÝïvŸFÃ~§PrVÆç®:tõ·~×¾¾ºÍ»:ﺃ¼’vñ„C@@à=€M¾&ÁYKja]„µê#LÑ.ɘšf¬TÈ8l•n–%1Ls<}1{ÏN jÐùq$ïDÝyRÜ%}®®¸ãæÐ q×¹h¥hnãîœeb3`ÔÅט2U8°ÿkPÏ[Ù÷ wU9{:ʘz†r±gâ¬Ç(œÓ"ÖìæàÚæ"nŒWà˶Y˜ï´5¶Ù=$uëãë¢íé¬cçá0Ë€‰Ç¥6ÐèìIÇÚYÊ8û˜M˜ö×y@uGîªö8Púé Ȧ ä‘Dœƒ$óiBÝ!N +!½øúP‡®[Ò~¥Ù‚÷]@z,ÀÇåmi‚¸4N…µ<-l»TØjšàÄçDå9.ñuEÖŒñRó·¡;vSq¦ZF5·ã[¨à}†}I(âæ†Úõàöª÷½Ã8îsgNâã"¶u59L© ì‘éG°>]àÊ›2ŠÐò !©§=ÃñÕ9Cû6Á–˜c‹ÊÑY;.‚Åf*Íi:?þhñL>+"Sã¶aÝ0+’«&¶˜Ï_ZNþì%ÔhId=÷’4Ž*m‘F‚LN ¸s¨cf!X‰è쥺„ls¼²fCBeK,Ðñ£Ä,_Ù^Œû}ï£;ž\¹Ã÷îs};ÉŠNn”¾síi2à,H}‘»5Ç›ósãUÛÖFóP"F0.ƒË‡s_7Ú­F«qq¡=C2O¯Gކi„ÉÑjµÚòÓ’_õþ¯ÿä)êF~[­ìv]b“-ϼyÔjm>ò©F]ЦVê0·l+ºzʃΠ}0÷™ùëDô0M£ÆÃ·í‹ëïFc+¿Ô—Õc_<¼Ä‘[X$½µ¼ÿMtùwC˜c!ë8ûQÒãˆæâ ÍÛº#ǹÂ3BOÕL{š}æ8Ž!Šõ¯a­072×0[,0%UåâLÂÈ Ë1­6Ò£xÁ(ñj-CÂI‚²ñV $uh`F,åefH([G†xøg£Š»"( Ç¡“  “IcäÄ)˜oÃ(]Î7ˆ!É Vze.Ì‚õ,Š`eU,Ï“)‹ì£¯S¹z¹tÆÌÉëžÃiƒ€îÃL*ú‚¬G}•œ8sì—L)mJiËàx÷ e&0jÖ²ŽHHq0ˆ¡Îì'Çâ¿SÂ1Œ ÁÄClvì±÷( ÈM/ÒÐÚƒ%4‰®] k:ω˜r¡=گ㴆 œ1…å®Ê‹k×ëN.oì^÷EƒU2¿Ž“iÕyGÓŒIù€Q€ jÖF—úQZfÊu¥ÉÞÿÌÆŽ&ú &'&7S'ïZÉä]”ÌÁ°ÿ{Æã5òKб ˆþ*"h¦áÕ·€)´ñ5¼f–7À#0¥Š<ž„h ]Àì|¦É¸EJ5ýä°ø¡ râiÓ¹û§x¹¯xû¯„¤•`–ColÝleñAú…ôâJO„K×é÷z»ùÕ ·®we;c·s¹}¾òbF€D¨f}¹Ì±N__ë)ÏõÜ›ÿ£èÂ@úì‘©Û϶5ÍÍÚ?Á8|VlÀRDeB{'D ¥^’vïs_ Ø9V6E\4Xª½—$ñÖ‡‰NY@mG¢}Ä8=,¦,2çW) !ú’½]dt½Ú…Ê« ‡òoMhvDÂ’Ýj¢YžUd¦©¨ŠËÇ^%Êc¡Ùc¼ŠK‰ ("ÿ¨£ÌãõÀ÷«C®“»öUÝaŠÍ/Uþìt,PÉÀ¤¬Íþ‘Y ó{õ¦ËjríÙ£ âÏ*l̉õ¹ ¤šŽš+¬â¤¹<@hØX9FÂN@®Zpäd-@¥.«ÀÉOÐ'ÙáNvx“½Â1q›àóNW‚VËæÜ@î½¶VÁ)™“ v*D,µx¾v™Ž"@4¬Ìb pr´èRÁ<4-;eUÉpy„gúíaÔãx“ A|g&ðŒŸC=1®·‡Î÷®[}hS4Úç-T°Á±›Ã˜g3×H*Ø>ŽóüùóÛÂïÅÜ-—Ð@G(´NóñÏuBÎҸȯ@“ǯé©ßSÚkè#·.+w/}º0&¬±{þ û¦'Ö‘i•Õ%~ZeuŠ…9Z_§¹Qñ!mKÛ“ÆOPwVPµ€ÀØl$ºmU¸k}¼Â‘¶aö+VmÛÕÍv5eEˆÐÃ%#[üÔ—ü÷/PKxºZ<–ÉÆ- ;IAR-STR912/examples/UART/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµVmoâFþŽÄ˜o—œ\Ó»DʃMØÖØ©m’FªT-x «³½ÖzB}gv$=zR¥«£¼óöÌ3/Kÿã‘NƧ0Žïv;Í`xqñ3¤ÙL.µ…X­*¹là˜i·ó&²ñRÀṆDð¼=óbHÅkÍZixû\ÃlìƒW×…\r#U™à%)ûÜtª¬iZ‘“òÅeð¥o¡]ýРY zÖ@4K-këäàýí¡ZY ˜{IÁ /ëB zhùƒÂ2•Qz{MßópH˜?¿Ã<ÜË~ú6ŸÁNöo¹þˆ³iwIQi<ɼ$€‡)O¥0‰¸3ß‹ÆÄQø›¥àehß3ŸE·0ž§Y< ’”Ü=°lŠÍd,Bó™—±8‚$¸õ{ŠYBæþ|œ¥¨q≠…²d1¤Þ}›=Û>¤ó0;£Îdã$Â`œ%qÄÆ)¤S/ !Š30 BBæÂÀºô¢GðY‚Úgä‹Eîƒ"Ì( ~›cæÌ Á÷fÞmº 0Úi!r0]Ú K)…IÏ+9D'qO #i½Èï»”`ž0óüF¯l‘ YÛ+_äÖcQàcBI€$1{!([ï™üñÝïvºÝÀ@þ:PÝÎÍ·O·“­eb§^kõ,Ñø[KŵÚm#^Çr#ÍÖ\箬 µév–ªÂÝS¯rXª²l+ZÂé’åt[ m„.eÅ Lß.³ƒÓ hD•7ö={µ«•ИÞ×oMm„ÆÈ¢€ —FVO°RºÛáx¨í›Vå3³æ¶ª…²Åe%*Àf-—ëýA‹-|øCÀd09¾$“¯b[ó°i°ë­1ª:í}bïàxÍŸ…sŒkÙ¥åBß*‹&Ù'ŵæÛ-–B>‹ngáDÖ?¨¦ò/  ¦’¿È²-{TçìÀÆAêWò©¥X¨¶RwÀ9<(C(ª', |†‘4“d©Q5¹“HA͵4[÷:âmžPo`0¸Ä !ýÍ©³L\ÆVj4¯šR÷Öî;6‰‘-Þëf{9)ï n!žEÑ8F¿ìHÌE<ÝŽ/‘|Úþ>V­96(ÝÎÕàåO"¸·åBs´ïwWá ¯T§'MoI£Ðmm0|•x)t;%—•“Ìð;ÍÜ“¦K”þ„ŠêYâ^" £ƒ{CÚ˜9B¨?6KÕÅy©rQb‡¢¿ôI:ü4„%‘ a6B¸6ôGW”qe“¢Ñ’w7ÆùÓç¤VÚôvqÞMí¡Ólâ¶Å¾×dÇÚì›Fû~«‘ôm]£q%,l÷?EÙn=É2Öí0Üa:w‹¤ä_Ý Û¥¿ž½n„Üí7>4טß9ܵÆÿÒ–HDó‹ì÷~x ʱY«FÚ&ž:I³äj0«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZÀ­ªm„°=ŽQ1X0¤ñUýßï½À`;Þf“]Ý!U2oÞ·ù¼7o>¤í£=4Ô&¨Öè³môú.œžœ¼ÇÓ$f!›ò$Ž‚i ûLŸ>9‚n20ý%ƒò9‡¥D­)-+_Ä TŸsª(«UL}ĸÌ_’²æs†“”ƒ‘¦›‘òÉY»ó¾-Ò:‡,IÉ¢Ó:,&ÁJ8ÙxÇà°JâëÄ_Â$ž­Qó‘ŠÝR'ësú9žžRŽïj9žkovóïäkwíí/ÈØíë0²uG7]p¬®ûI±uøÔ7Ô>t-zcCSLUË|Å: ¸hc}44Ãì:v\k¨Û¹ûd¸}l±`˜h>T\Ã2ÁÖ{Š-¤аÉ\«®ƒJ`Ùšn‹P¸6×Gù¨ƒk õ–h ˆœñÀ}E]h¨¶¥tÕµ-ÓPpúÊ`¦åÂ¥}} ÁÀP.ºp©˜ŸA3lÔ~E¾ S¾`PLÓtôqç†2M*=Ý‘;Àh#ÒÂ\È:Û¶ ‡¶Ðµ­!åJщKØY]pÆZ‰¡bjm¹%;: M‡ËÏ´È‚%X2· ^äV1L]à Ù:‚d™‰IѲH²ŽdëÑû£ýôÉÓ'mÌ+š†ÙŒ¥püà‡|>¤?xö[çÖ ƒIkñ,4J‚:î|½b36H@ŠTñˆÞ‚ˆ=h"÷Ü{{™Íç,q‚ÿÐŒkLã,âñ¼QÈ›p æFß®ëŸÜv»[[^ú8[†p5Á"!¿Ié¥V¾´!ÿ}„oÍæV7~ø“ð!¥¦$ÆŠízFp+©a%KÓlʳ„]^ö¾„ò÷+øÏ¾D_ÒýÖ_®BÖ9¦g=%œ%Ë òCÜßr™EÅ]‘¥At ?™}óó0þ†^S!9|VÄ*Êð{µWŪ9I¬9^7¾»‰¥¸Ž)UK½ÉY%|ÅúÉÆy]XCvžES‘*ÞA<¦þ¾7ÆÙ›8˜£Ž=5ŽæÁu–$n^” ½‘aÝ¡±7­¼ýÈ“Gpˆ1É#$Øs¿×ïv1G£UÆ«ÔÂŒ#F VÆ«+››aGF» ûˆyD\ì¤gï;Õëy0§Q§é—ã½ΪIvÝÕ|΢Y0§_ôê>Tÿrâ,™2YßF!ô,Gm^ˆ ´Æ)|?¾ãÏÏBÓ0ž~…T˜‹~"ãkÁMÆIÅ%I=wÈ'¶ŒbaÄøKðN²”¼}ICìùŽlPÑ_Eë1=]§œ-ep$íb+õ•Í)bÕÍ©™a'¼°ÝÓÝcš'tü7˶»e¸ŸÈA×yâœ9—5£ç>ÅÉ ,ºæ ä\<­®»ßbpx¼¢…ªÜŒa…£—¯«ÂK?›ÙtHÚÎòA˜ ¤ªÑß7ð`¤4Ãkš6›²à†Í€Ól[Xôsz]£k¥@qöX¸…™æÒ"d7,Lq,£ä=LÖgÞŒ­ø‚ì·î‰òZh Yâ¸%ñÞi‡l `¾°,Þ½Óƒf#Q€ÂH¾yX˜ƒF;5:¨]Ô«‹åRójåñö,y4„úÆ3V8 ßž{ëÙ·M¨2… ýötQÒƒ6î-i¨šUS!ð:+ᘸtÞÊZ¿’2Ñeý—Ý~äHe,Q´†8ÆÍúf¥ð¼ØMª2T$LbÉYPÙˆºœNt“><¤]9˪LUs,}IúB¾÷R(ǃ·ø8{‰À<‰—’ñ¸î7·ø¶ÀïðÆZs|ܤõïò ËS‚®I©ØIIËJ®óë¯WºÂ±°ë1Þ ýk‡ûî³—ÔíЀ½ ¯äé.ŸhýS¾C„]PÀ»&Œ*¸Ú†-)£KÉ¿ÄBÎÔþÎêþþ¾öÚeŠ?Ó_ȸñt0dêêùÑfw}öåŸb¹úU^ ê_åP*ç÷¦è 9|ÚG½’œ‹ÖÃ+ü:­7†^¿à¥¿ a²B¤Î(ˆ$v‡ÌP«bà½9¨L›+´é·7ÊÒÅo 8h¦„8#Éå„@æ…â×°e ü¼Øu&QÚàÙ]ÚÏZû(ºò>øuþüDZ(íl÷ehŒ°c#ÜÞá…éFT%¨[8»³w˜ûü¿†njô7Ú®1Ðó3öôÉPK xºZ‚j´W$‚½õoØ C‡¶9M…• û;o2ÿKv÷çÕ ÷oÑ^›£€} "NYÎ-¬qDƒ3YCm+|»Ž)Öó¯=¶7jŽiTÝ;¤8æGLXСmÁPK xºZ<$IAR-STR912/examples/UART/.svn/props/UT ”LjKʈKux êëPK xºZ<"IAR-STR912/examples/UART/.svn/tmp/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/UART/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<,IAR-STR912/examples/UART/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<(IAR-STR912/examples/UART/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<`ö–¬¢!IAR-STR912/examples/UART/uart.depUT ”LjK”LjKux êëÅXÛn¢@¾oÒw˜˜Þ:PJÓÕ^¸«¥1îÞ¬ƒHít‘!À4öíwQ9¨Ãà¢Ñ gœoþÃ÷Ÿ@\-]ðé!ÂÞCJw àx6ž#oñÐ@!¾Õ´fç6ë«ë+Ýð‡cGt€þ†\ç×j(ºœ^nÿï¾;öß, ¥¥´Zmí¾Ó\ŸÜþÁŽÚØ{C XÑM7=ké=gFºÌ~'û˜D>‰Âd™2n^Gæ÷i¯?º™HRü 1 lgÒ«éÂGX²×‚ب‰9û˜,-äI¸üù­ A òP$Š!V Œ m" qѬ’üôA$†aÜ”F<¯œÉÚc$â!bmâ@”Þy'׆<Û%óT„UÀ--¿ ,úò*¸8*À>‘]IZXÚ¸T²Æ‘'«L?Z“„s¯¢ [ì?®n À²°ˆ&þ®<„â8æ..qW/–p„0kýÙ\¼Þ׎˜aP¢UŒgê­ Y[VÆÔÌât9Ûúôì¬G–iƒ©fº§Ò­c7µÞÜÝïvŸFÃ~§PrVÆç®:tõ·~×¾¾ºÍ»:ﺃ¼’vñ„C@@à=€M¾&ÁYKja]„µê#LÑ.ɘšf¬TÈ8l•n–%1Ls<}1{ÏN jÐùq$ïDÝyRÜ%}®®¸ãæÐ q×¹h¥hnãîœeb3`ÔÅט2U8°ÿkPÏ[Ù÷ wU9{:ʘz†r±gâ¬Ç(œÓ"ÖìæàÚæ"nŒWà˶Y˜ï´5¶Ù=$uëãë¢íé¬cçá0Ë€‰Ç¥6ÐèìIÇÚYÊ8û˜M˜ö×y@uGîÀ­ªm„°=ŽQ1X0¤ñUýßï½À`;Þf“]Ý!U2oÞ·ù¼7o>¤í£=4Ô&¨Öè³môú.œžœ¼ÇÓ$f!›ò$Ž‚i ûLŸ>9‚n20ý%ƒò9‡¥D­)-+_Ä TŸsª(«UL}ĸÌ_’²æs†“”ƒ‘¦›‘òÉY»ó¾-Ò:‡,IÉ¢Ó:,&ÁJ8ÙxÇà°JâëÄ_Â$ž­Qó‘ŠÝR'ësú9žžRŽïj9žkovóïäkwíí/ÈØíë0²uG7]p¬®ûI±uøÔ7Ô>t-zcCSLUË|Å: ¸hc}44Ãì:v\k¨Û¹ûd¸}l±`˜h>T\Ã2ÁÖ{Š-¤аÉ\«®ƒJ`Ùšn‹P¸6×Gù¨ƒk õ–h ˆœñÀ}E]h¨¶¥tÕµ-ÓPpúÊ`¦åÂ¥}} ÁÀP.ºp©˜ŸA3lÔ~E¾ S¾`PLÓtôqç†2M*=Ý‘;Àh#ÒÂ\È:Û¶ ‡¶Ðµ­!åJщKØY]pÆZ‰¡bjm¹%;: M‡ËÏ´È‚%X2· ^äV1L]à Ù:‚d™‰IѲH²ŽdëÑû£ýôÉÓ'mÌ+š†ÙŒ¥püà‡|>¤?xö[çÖ ƒIkñ,4J‚:î|½b36H@ŠTñˆÞ‚ˆ=h"÷Ü{{™Íç,q‚ÿÐŒkLã,âñ¼QÈ›p æFß®ëŸÜv»[[^ú8[†p5Á"!¿Ié¥V¾´!ÿ}„oÍæV7~ø“ð!¥¦$ÆŠízFp+©a%KÓlʳ„]^ö¾„ò÷+øÏ¾D_ÒýÖ_®BÖ9¦g=%œ%Ë òCÜßr™EÅ]‘¥At ?™}óó0þ†^S!9|VÄ*Êð{µWŪ9I¬9^7¾»‰¥¸Ž)UK½ÉY%|ÅúÉÆy]XCvžES‘*ÞA<¦þ¾7ÆÙ›8˜£Ž=5ŽæÁu–$n^” ½‘aÝ¡±7­¼ýÈ“Gpˆ1É#$Øs¿×ïv1G£UÆ«ÔÂŒ#F VÆ«+››aGF» ûˆyD\ì¤gï;Õëy0§Q§é—ã½ΪIvÝÕ|΢Y0§_ôê>Tÿrâ,™2YßF!ô,Gm^ˆ ´Æ)|?¾ãÏÏBÓ0ž~…T˜‹~"ãkÁMÆIÅ%I=wÈ'¶ŒbaÄøKðN²”¼}ICìùŽlPÑ_Eë1=]§œ-ep$íb+õ•Í)bÕÍ©™a'¼°ÝÓÝcš'tü7˶»e¸ŸÈA×yâœ9—5£ç>ÅÉ ,ºæ ä\<­®»ßbpx¼¢…ªÜŒa…£—¯«ÂK?›ÙtHÚÎòA˜ ¤ªÑß7ð`¤4Ãkš6›²à†Í€Ól[Xôsz]£k¥@qöX¸…™æÒ"d7,Lq,£ä=LÖgÞŒ­ø‚ì·î‰òZh Yâ¸%ñÞi‡l `¾°,Þ½Óƒf#Q€ÂH¾yX˜ƒF;5:¨]Ô«‹åRójåñö,y4„úÆ3V8 ßž{ëÙ·M¨2… ýötQÒƒ6î-i¨šUS!ð:+ᘸtÞÊZ¿’2Ñeý—Ý~äHe,Q´†8ÆÍúf¥ð¼ØMª2T$LbÉYPÙˆºœNt“><¤]9˪LUs,}IúB¾÷R(ǃ·ø8{‰À<‰—’ñ¸î7·ø¶ÀïðÆZs|ܤõïò ËS‚®I©ØIIËJ®óë¯WºÂ±°ë1Þ ýk‡ûî³—ÔíЀ½ ¯äé.ŸhýS¾C„]PÀ»&Œ*¸Ú†-)£KÉ¿ÄBÎÔþÎêþþ¾öÚeŠ?Ó_ȸñt0dêêùÑfw}öåŸb¹úU^ ê_åP*ç÷¦è 9|ÚG½’œ‹ÖÃ+ü:­7†^¿à¥¿ a²B¤Î(ˆ$v‡ÌP«bà½9¨L›+´é·7ÊÒÅo 8h¦„8#Éå„@æ…â×°e ü¼Øu&QÚàÙ]ÚÏZû(ºò>øuþüDZ(íl÷ehŒ°c#ÜÞá…éFT%¨[8»³w˜ûü¿†njô7Ú®1Ðó3öôÉPKxºZ<×ß:uÇa#IAR-STR912/examples/UART/91x_conf.hUT ”LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK xºZ<"IAR-STR912/examples/UART/settings/UT ”LjKʈKux êëPKxºZ<þ›I»ÝÆ /IAR-STR912/examples/UART/settings/uart.cspy.batUT ”LjK”LjKux êë­UaoÛ6ý>`ÿá`th ØžÓmÌCS/)Œ¥qa{X0(ñd±¦H¤âz¿~w×Á>ͱË"OïÞ½{G½_^‚u¥<ä"@©4B%èÑÀ :PB~€P!̯–p]ç(¥¤Å¿¬ÛåhŠêûïÞ3Êl´úü7(è¡"¨‰y»Ý¢¢0 ”„`¡qا̶®…‘ A+ƒPZ®5†8iá›sK¡]P”Vá{*ŽJ¢iœmœ"Òà1Âðãn/E\•Dj±cxok!¿´>Ôh‚gvµ`†p°-Ä[‹–ªì‰$ –äÐô$ $[Ÿ¦2´¶û£vLj¤K‰Á¯Zß ­¬R›; ãå×c¸³TI¨¨ü#2];“@ð¥Q\ÜwHï•5ü„2*(¡Õ?(‡Tw¬­$ 0„mNm©k¬?FºÌ5¦Ì‘º‚½lE%ÌŸËL/;EO:%ܶíÄ%) „Ü$tTîÓ:¢VÄ– â>†Uƒ…*UÁâ #ŸF·[e`_)j …:ô5^åº7ˆ#×èje„†ù 2Š‘v¯˜—¥]3vY”¬¤öÒI°¥^'*Y6Ô3 Â!‘£œœ ™a xÚßG‹$ªRk&ʵïŒÝ3÷ãpuJ­Ãg:äØK¶Éy°iÇlf%ÎèåãÄOnž==OSM=þ{ö>¿»ßgÇ^ê[:¯úk‡ÿ/PK yºZ<'IAR-STR912/examples/UART/settings/.svn/UT •LjKʈKux êëPKxºZ<Ѩƒ+ß.IAR-STR912/examples/UART/settings/.svn/entriesUT ”LjK”LjKux êë­»NÄ0E{‹_I<{üH·%íšíìØY»I;þžðZ‰nœj4ºò=cŒÅaa ‘=”2ç†ónž×’r©óóXçi]ºÔOË1Õc*|Û-ÓT.!^–u|âóÉ—-tÎüv·¯îÚ½ÈÓ‹?ϧ”ùýnßòœJÆcþ]Û@WªP¶‚FèÚ!Ð&‘Ø£?§|\Ò8n=ì'¦·!€Êƒ”Û#ïSD¨¬öɸ.ERݰÕ/¥ŽãÀúá”Øgé¬Ð´`áekøàÀDôÂKÛ‘ŠHô4…Þ{PÙÞÉ?!È~{uy~­ƒ/WÊ¡ÖÊ™íÞäd'U;­Œ–2&CÚÂÈ!^~-ã•j!‘1@K‘œÔ:šHÁQD©‚×ÿ¡¦å&öPK xºZ<1IAR-STR912/examples/UART/settings/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<1IAR-STR912/examples/UART/settings/.svn/text-base/UT ”LjKʈKux êëPKxºZ<þ›I»ÝÆ GIAR-STR912/examples/UART/settings/.svn/text-base/uart.cspy.bat.svn-baseUT ”LjK”LjKux êë­UaoÛ6ý>`ÿá`th ØžÓmÌCS/)Œ¥qa{X0(ñd±¦H¤âz¿~w×Á>ͱË"OïÞ½{G½_^‚u¥<ä"@©4B%èÑÀ :PB~€P!̯–p]ç(¥¤Å¿¬ÛåhŠêûïÞ3Êl´úü7(è¡"¨‰y»Ý¢¢0 ”„`¡qا̶®…‘ A+ƒPZ®5†8iá›sK¡]P”Vá{*ŽJ¢iœmœ"Òà1Âðãn/E\•Dj±cxok!¿´>Ôh‚gvµ`†p°-Ä[‹–ªì‰$ –äÐô$ $[Ÿ¦2´¶û£vLj¤K‰Á¯Zß ­¬R›; ãå×c¸³TI¨¨ü#2];“@ð¥Q\ÜwHï•5ü„2*(¡Õ?(‡Tw¬­$ 0„mNm©k¬?FºÌ5¦Ì‘º‚½lE%ÌŸËL/;EO:%ܶíÄ%) „Ü$tTîÓ:¢VÄ– â>†Uƒ…*UÁâ #ŸF·[e`_)j …:ô5^åº7ˆ#×èje„†ù 2Š‘v¯˜—¥]3vY”¬¤öÒI°¥^'*Y6Ô3 Â!‘£œœ ™a xÚßG‹$ªRk&ʵïŒÝ3÷ãpuJ­Ãg:äØK¶Éy°iÇlf%ÎèåãÄOnž==OSM=þ{ö>¿»ßgÇ^ê[:¯úk‡ÿ/PKxºZ<=‡ZžBIAR-STR912/examples/UART/settings/.svn/text-base/uart.dni.svn-baseUT ”LjK”LjKux êë‹vÉ,N,.NÍMÊIUÈÍOIååQ¶¼\ÑNE©‰Ùù™y%Å@açüÒ¼°¸—Of^¶KQfYjP<<±$9Ã9?/Å6^ÁÊ5±””0 0„ª2$¤ PKxºZÉÜcžE~âÁ;Ý „S’倂¨‘5²ÝaË,7äU²aé¤ ú»Æö‘R¢~z§iO´žÉ3¾ûuõ‹ÈŸk¡Oÿ›óPK xºZ<-IAR-STR912/examples/UART/settings/.svn/props/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/UART/settings/.svn/tmp/UT ”LjKʈKux êëPK xºZ<5IAR-STR912/examples/UART/settings/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<5IAR-STR912/examples/UART/settings/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<1IAR-STR912/examples/UART/settings/.svn/tmp/props/UT ”LjKʈKux êëPKxºZ<=‡Zž*IAR-STR912/examples/UART/settings/uart.dniUT ”LjK”LjKux êë‹vÉ,N,.NÍMÊIUÈÍOIååQ¶¼\ÑNE©‰Ùù™y%Å@açüÒ¼°¸—Of^¶KQfYjP<<±$9Ã9?/Å6^ÁÊ5±””0 0„ª2$¤ PKxºZ‹í®•#Äýà唤ª·Ú¼ÌÜ7*žNâÏoO_c¿~ÛÍäû^§ÿƒâ:¥pÍiE‹ªr^ßNá6eq ¬‚yÉa±d )b e‘Ýay¤FLyÃV, ^Vu™S^9º[V§x•|€ÏIÍÊ8]îw± ãž,ãºÂ$(yB¹/…±ê*rC¡f9ù˃‘ Zfõ…»—,æ%Íh\ó²`qUJ² в†+ )Íȹʨ§$Å$Œcö…ãbÅðE™EEÿ\bçŒdœ,h5t€Õ®]jqq6´ÍYåZ˜ó2wZ!’ÔλrÕM;zHŠd<´ËŠBN Ww'·Â³m'¿-aM°!NÑ$æ÷ åÂ^ä['ü‡AÞ 4§ç¿»Â Þ¨ä!}gôß 1  Ç—oÏñî9nôX û^_æNb|#hñù\ĺ[«‡½‘p/ºÇzõt˜“éW ºÆïOŽû¿¼n Ä„…Þ T"ð¯iŒì{ˆž£3¢7/®‘sàÕ‹ûvPzk”õíYŒ®™5ε¿µ‰\cžê€£FúûNÂ@†óNŒÎG£ &ÊxÌ ¬tgegû÷lƒß&ÏaÆz´ÈÔ½ˆx5`«kÏa°ª­þ¿] Æ \Ç ìcXʘýÎÂ}iqø„Ái’c‚?ä1 ÒÓ!*û•¼0`xЦ‘Æ¥lÅã`Ä¡*'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ›o§£ÕñÝó…×îË×§{]ÔRRºFb£ô ÔÁÈØ– iŸ…VF¼ú‘×óÂÓ4LgñwQîK—Z×GÞOIɦ·žÉENƒø$ò8´ü6‹<\Xüù³vJÕ(:I:€;`ßÊßõ,R4–"&mlNàë¥×>*L„ÿ üQà*µÂF?LmÜæÒ¡GŸ5)¢ô³W $’ì..D­óJÛ\‘¬ŒŠuðlC$§ÐÌœr¿‘Îî2/£{¬°#û4r[îe›Í)Ô6*×;)fírÐÑR–z[o]¥9¸×)·/ÛhÞãÙ³€±®6KèɃIX7lö Õ°ÀcoÛ\&Zeëƒ`“åY;‡!¶}Ì»¸ÀÐÇò5þ¤‚aò:QM5åLÄš/eŒû¸¬6Uö PK xºZ<'IAR-STR912/examples/FMI/.svn/prop-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/FMI/.svn/text-base/UT ”LjKʈKux êëPKxºZ<Û­”CM:IAR-STR912/examples/FMI/.svn/text-base/Readme.txt.svn-baseUT ”LjK”LjKux êëµUMoã6½ Иc»HlÙí~Ô@ŒD[Dõ‘Rr‚œ Æ¢c"²hPt“ô×wH9¶³›=Ø9(œyoÞ<’ãñ‡wüÿ qy}ÇÙ"­aEŸ ªsµ2Z¶reîÔª‡÷ að檕Pˆ­„ãš—¢ÙÊ‘}¶.…ìíF8_3ÈãÈnת•°JwPK±uɉ°IMoõý^6.9ú8ž|{i3¸‘¦wˆÉ(òÙ¯ŒÚy’#ûù¦^ƒÝ g΀>‹í®•#Äýà唤ª·Ú¼ÌÜ7*žNâÏoO_c¿~ÛÍäû^§ÿƒâ:¥pÍiE‹ªr^ßNá6eq ¬‚yÉa±d )b e‘Ýay¤FLyÃV, ^Vu™S^9º[V§x•|€ÏIÍÊ8]îw± ãž,ãºÂ$(yB¹/…±ê*rC¡f9ù˃‘ Zfõ…»—,æ%Íh\ó²`qUJ² в†+ )Íȹʨ§$Å$Œcö…ãbÅðE™EEÿ\bçŒdœ,h5t€Õ®]jqq6´ÍYåZ˜ó2wZ!’ÔλrÕM;zHŠd<´ËŠBN Ww'·Â³m'¿-aM°!NÑ$æ÷ åÂ^ä['ü‡AÞ 4§ç¿»Â Þ¨ä!}gôß 1  Ç—oÏñî9nôX û^_æNb|#hñù\ĺ[«‡½‘p/ºÇzõt˜“éW ºÆïOŽû¿¼n Ä„…Þ T"ð¯iŒì{ˆž£3¢7/®‘sàÕ‹ûvPzk”õíYŒ®™5ε¿µ‰\cžê€£FúûNÂ@†óNŒÎG£ &ÊxÌ ¬tgegû÷lƒß&ÏaÆz´ÈÔ½ˆx5`«kÏa°ª­þ¿] Æ \Ç ìcXʘýÎÂ}iqø„Ái’c‚?ä1 ÒÓ!*û•¼0`xЦ‘Æ¥lÅã`Ä¡*'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZRîü¶^†Ö ó˜0úëÓv£õÔÂÔc>¡Á¯OIÌ~~ûöÍ»ŸÛO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿªÓ²iõH,ÎA’ù4¡n'ÐÇò^|s¬C7-i¿ÒlÁ‡.õ¡ }æãby[š .a­N Û.¶šfø8ö8QyŠ%¾JÂК3¾Djþ6tÇn"ÎÔ@˨²v||H±/EüÞÜP»Þ|Gõ~pÇî,HT,b[W“£„ ²Ä=2ãÂÇ \ySÆ!Z5$õ´g4¹ðë–.pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ_^ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^>"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^–Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬ì|I,ÑÞJ’p›³D§  6#Ñ>aï—3šs«Ð}Mß+2º\íC¥‚Õ†yŠ·&4;$AÉfH5Ñ,ͪ@RËT TEfÏצö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚž8‘¥0¿S/º¬§W={ü±A¼y…9±D{µo:%ˆO£´Àžñsb¨G†õöÈùèÞv«ìRŠF#û¬…*68v3ódæIÅÚÅ8Ïž=»Éý^ìñÑrQ TÀ ušð¨p–Dy~?|KOý’ÒAC¸ui¹;éÓIZbÿôAúëK¬.$³*«‹½¤¸ºNs«‘cÊ‘¦"‰¡´ j¡ÔˆuÚ©pƵ¸Â=‘va+Vm{ºÙ­¦¬èz¼ äOóßä’ÿþPKxºZÒŸ“d‘ÎÕ¦Sý*£‰ÑŸò BIªjèñÑ·T?²ü$)Üo •ã‹»Êæ þÙà›6Oëeïs©R‚vo’;…¼K5O^·¥ˆ„²çÓÕÔ`4³XÝM“¾ýEj}nÔîsš¿o1¤vÿa³{ï ¤vö¸÷áa;¥¸ÕÛRës£˜G<0ŸµïžúÜJíCÇÀ '锿Oë"^Â"WÿnT:{‚ïñr£àÍgçÿ·ûü꦳»[í'ï½O/4­ ÃÀ…ž¨tž,^óóûcwß+õ¯[ûw»íÕìP7ã¿FæÛúâ;â.{îôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<¶‰¨œ“P6IAR-STR912/examples/FMI/.svn/text-base/main.c.svn-baseUT ”LjK”LjKux êë½XmoâH þŽÄ°v¿ÐŠ+íîõZ݇ 0j^¸LhÕO(%C;*$(/Ý®V÷ßÏž@ ¥½ÓK d<~l?ñØÖñ ë,xðþ „Ža|ºj’¥r&'E–&j’Ã[¦õÚ1ôÔL‚Í%<Ë9Ì#•œLHm–Å}šÁºœƒkÙ`.35‰ •&ÊhN›í¨˜åðUèmH»0°œ*í€ J¡ø.ÅJ€w~ÄI{æÐôìV•Œ×´to^Ø" RVdU±½ðE°&÷˜  IâzÍàH­ƒÜdrÿݪ×ZU2™•±Ìá·…?« >ýÑ~ÏÔíÉý§zM{fê‘:Qñc!c9ÝÅá2ö"¢)ì»Æ¾†8°OïFÉ+ÄÇ(SÑíl¢ ±^+ϨӎC5—iYŒEe~ñŠãi™LtûÆ[¤Äø/û}ÿ qÇø[{.b=+WÉV󲚓oÌ1œ¨X}$“EY¬Pç)ü²X×¼(Y”Y²­Ø¯´pø©¤Ð‰4SÕk?é|VS:<6ëŽútXý·å]ãèBke«)]ÑGX£±k9—"-³‰´Òdªî«Å±/¬£ hpòâ-D¹žäè *gLféäg,YÓë‡hl«G•§Ù$­Žq¹˜X6fàÂP"ù÷8×gp[æ„öWvð'´+À¨9èVÛ-ò¹Ä±Ò›Àc$ç ÛÎþNù®|©CˆØï®TŠߦ ñ¥~ÑNˆö½ƒÒþõ c—Í!ÀPK xºZ<#IAR-STR912/examples/FMI/.svn/props/UT ”LjKʈKux êëPK xºZ<!IAR-STR912/examples/FMI/.svn/tmp/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/FMI/.svn/tmp/prop-base/UT ”LjKʈKux êëPK xºZ<+IAR-STR912/examples/FMI/.svn/tmp/text-base/UT ”LjKʈKux êëPK xºZ<'IAR-STR912/examples/FMI/.svn/tmp/props/UT ”LjKʈKux êëPKxºZRîü¶^†Ö ó˜0úëÓv£õÔÂÔc>¡Á¯OIÌ~~ûöÍ»ŸÛO{ÿ㓟t"Î>cOÀeuæ$Ä·iÑ÷íNs÷V¥{ŒÎIp$òGð¢%~‰gIÐiªëì¹`,ôˆäó¬ö¨¿Ÿ±y˜³ãËÚd Ò‹ìiŒ…)âƒú>`Š9 ÷ê„4ĽYmÚÿªÓ²iõH,ÎA’ù4¡n'ÐÇò^|s¬C7-i¿ÒlÁ‡.õ¡ }æãby[š .a­N Û.¶šfø8ö8QyŠ%¾JÂК3¾Djþ6tÇn"ÎÔ@˨²v||H±/EüÞÜP»Þ|Gõ~pÇî,HT,b[W“£„ ²Ä=2ãÂÇ \ySÆ!Z5$õ´g4¹ðë–.pæäõIÌÑ( q¬1/Z­V[~Zò«þÀÿÍŸ,EÝÈo«•ÞnJl³e™·Z­ÂŸjÑ¥hb¥söWéÐË3ôkÀÞƒ¥O-_×'¢iRŒ6žŒÞµ_^ý0žXÙ¥¾¬=öµ‡W8tsc¤·ì€ã¿ , ÿ~ôR͸Žs = f^>"˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁóh¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@%ÇÎ{%SJ›MÚÅ28Þ{ˆ2þ’±5kYÇ$ Ø†ˆPg ö“ãŒðß áÆ„`â>2»öó°{œÆâ¦ ihmŽÁšD×.‚5gL¹‰ÐíWQRÃNIÂrWåù•ÛëN/®í~÷yƒU2¿Šy´ê¼£YJ¢|ÄÈÇ5k£K½0)3åºÒdïfcO““û(Ž“u­$ñ^–Ìáhð{Já5òKòq¤ˆþ*"|h¦áÕ7‡Éµñ-”f–×Çc0¥bCàµîþ «x¯Œ)émmÓ¾±ëÒ4¾{$]eÒ³Œ18fG·™êÙ ÚŠZ¸#bš•³pr¿ÔMÉÙ5Ä{vÿpP ƒÆD%ûŸºH}äq&w5YwðÛÒÿMYsÆDü±@½61(#5«ÿ‰Û5`”Xv]Œ‡G©öª×ž>¡á€Ä°^ýÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÞŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}pζra£5Ðnv=ìž];½g×Gýª¸$Bí~™ÞzØ…’çNJzL{ÊvÊ8Þ²-ÅÚ‚”X†Êùû&Æü4®vŒy¸5ukjÙC+2F? .~wÿN0­Gœ ª› œÌn©ÃÐßñxqÖóDóVäRS­"'!êK0=ši2n‘RÍ>;,º¯‚œxÜ´pnÆ“Á)^î^üÁk!i%˜åÐ;7;Y¼¥‚~!=¿ÒáÂuý¡ÞÄn~3èÛ»´‰;¸>Ü>_y#@BT³¹ÜMf±Ø¤o®õ”çöÜëOÿ£èÂ@úÒ#3wnk𛵂qø¢6Ø>‚¥Ë „öNˆJ½%$íÞ æ¾°s¬ì|I,ÑÞJ’p›³D§  6#Ñ>aï—3šs«Ð}Mß+2º\íC¥‚Õ†yŠ·&4;$AÉfH5Ñ,ͪ@RËT TEfÏצö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚž8‘¥0¿S/º¬§W={ü±A¼y…9±D{µo:%ˆO£´Àžñsb¨G†õöÈùèÞv«ìRŠF#û¬…*68v3ódæIÅÚÅ8Ïž=»Éý^ìñÑrQ TÀ ušð¨p–Dy~?|KOý’ÒAC¸ui¹;éÓIZbÿôAúëK¬.$³*«‹½¤¸ºNs«‘cÊ‘¦"‰¡´ j¡ÔˆuÚ©pƵ¸Â=‘va+Vm{ºÙ­¦¬èz¼ äOóßä’ÿþPKxºZ<¶‰¨œ“PIAR-STR912/examples/FMI/main.cUT ”LjK”LjKux êë½XmoâH þŽÄ°v¿ÐŠ+íîõZ݇ 0j^¸LhÕO(%C;*$(/Ý®V÷ßÏž@ ¥½ÓK d<~l?ñØÖñ ë,xðþ „Ža|ºj’¥r&'E–&j’Ã[¦õÚ1ôÔL‚Í%<Ë9Ì#•œLHm–Å}šÁºœƒkÙ`.35‰ •&ÊhN›í¨˜åðUèmH»0°œ*í€ J¡ø.ÅJ€w~ÄI{æÐôìV•Œ×´to^Ø" RVdU±½ðE°&÷˜  IâzÍàH­ƒÜdrÿݪ×ZU2™•±Ìá·…?« >ýÑ~ÏÔíÉý§zM{fê‘:Qñc!c9ÝÅá2ö"¢)ì»Æ¾†8°OïFÉ+ÄÇ(SÑíl¢ ±^+ϨӎC5—iYŒEe~ñŠãi™LtûÆ[¤Äø/û}ÿ qÇø[{.b=+WÉV󲚓oÌ1œ¨X}$“EY¬Pç)ü²X×¼(Y”Y²­Ø¯´pø©¤Ð‰4SÕk?é|VS:<6ëŽútXý·å]ãèBke«)]ÑGX£±k9—"-³‰´Òdªî«Å±/¬£ hpòâ-D¹žäè *gLféäg,YÓë‡hl«G•§Ù$­Žq¹˜X6fàÂP"ù÷8×gp[æ„öWvð'´+À¨9èVÛ-ò¹Ä±Ò›ÀÒŸ“d‘ÎÕ¦Sý*£‰ÑŸò BIªjèñÑ·T?²ü$)Üo •ã‹»Êæ þÙà›6Oëeïs©R‚vo’;…¼K5O^·¥ˆ„²çÓÕÔ`4³XÝM“¾ýEj}nÔîsš¿o1¤vÿa³{ï ¤vö¸÷áa;¥¸ÕÛRës£˜G<0ŸµïžúÜJíCÇÀ '锿Oë"^Â"WÿnT:{‚ïñr£àÍgçÿ·ûü꦳»[í'ï½O/4­ ÃÀ…ž¨tž,^óóûcwß+õ¯[ûw»íÕìP7ã¿FæÛúâ;â.{îôOPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPK xºZ<IAR-STR912/examples/ADC/UT “LjKʈKux êëPK xºZ<"IAR-STR912/examples/ADC/interrupt/UT “LjKʈKux êëPKxºZ<Ækþáf,IAR-STR912/examples/ADC/interrupt/Readme.txtUT “LjK“LjKux êëµVMoÛ8½ ИcR$Žímºm€=(«¯$'È©PdÚ"*‰E9É¿ßʱÝ6=,ÐåIæÌ¼yófHúêÃ; Îüsð“ÅcÊïæ9LÇãOå‘,µµ(V­,;x/Ôu>ÀLÖâ¢pX7ŠbÕˆ‘y1äâõ¦RN× D~Þv[˲0Rµ‹¢!ç 0Aug€w]/Vä<¾¾š|¾²Ônà^èŽ"&£± ]©åÖ‚ÐO7ÕL%À |`/E³­ÅoкߚóBüæE¤æ²3J¿ÞÐ7’ŸN‰üŸß‘Ÿ¾Ù>þ\ØdoûUÑÿã|Î`‘²ŒÅ9dÉ,ðRsîÏg0KR¸[òÀ‹}I>‚Ç£ ¼c’{ðøüe–'K3‚{àù§ÊxŒá‘—ó$†”Ýy©ÝÅ„<¥ð`éç:A’,µ©ÐAž@æÝ3ÈyÄFvŽ0!dË0¿ å~š°ùyšÄÜÏ ›{aq’Ã-ƒ9 ¹w2 éÅð½/‹ÇÃLŠ4ãŒý³ÄʹBàEÞˆ 0Û‚¼ øáPvÊ3*a–&q%@ÉI»dÙE;hèÅÁÕP,3‘0¸}<ªEdĸõ"XÇ,À‚R†"q»#)2[’ß+ùû'úÊu\gt`u¤}çÄÿ—ÿ,è ›ñ oÉ¿PKxºZ<Ýèb¡-IAR-STR912/examples/ADC/interrupt/adc_int.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPK yºZ<'IAR-STR912/examples/ADC/interrupt/.svn/UT •LjKʈKux êëPKxºZ<,æuë°L.IAR-STR912/examples/ADC/interrupt/.svn/entriesUT “LjK“LjKux êë­ÓÍŽÛ à;ê«Ø†ÿÜVí¥×4§½¬`²nDzI7_¶]UÊÍj3'„ø BäqQ¼Ö:¯»a y¾V^k¿þœúõr]ˆËe9r?qÚÜr¹Ô¿IC]®Óa>ÅÚ’Îëðõiß};ìƒÄoñ<Ÿxž¾|Æ©ò²\çúoçˆ:ЪƒÄ´½3΀} øϼž¦q:ŠûpÅ' ]¥Ú&ÐyÙâltŸDÌôÒ¤=¿eQÆ‹?ç¶lÀÝÜN†v=üŽgAÎ!«Ù&ruLºp.mOÁþú#¤Q^ßáÞ¶áÀ+}ÊÙ;&9ÙàƒÉeÒè<ge£ã8õ´M….{²)¦ìÇ8;©P|„Ê ÃÆÚsÌgîë­n£Å CŠà&cl‘ÖE´ª g*ð‚¡4p÷˜ó6[ÐíRÁc`jk™±Hi‰”¦Ö<Ʀj¸ o/t™JÿºÑ¹•ª 3 9² ¬öZ·ÆUÊAJ°)Ìm¬[{M;P¡´Ó9»ÜÞ–XGëcJMÔC`Òxóþ=PK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/prop-base/UT “LjKʈKux êëPK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/text-base/UT “LjKʈKux êëPKxºZ<¼DŽ ÍSEIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.ewp.svn-baseUT “LjK“LjKux êëí\[oÛ8~Þæ?mÞ¦ãKf›ždÅi5µcÃvÒ.À %Zf+“ZŠríùõ{HI¾Å–ÝPT_¶MS](~<‡ä¹|¤Ôúkµ­%æ1aôÏWÍZã•…©Ç|Bƒ?_‘˜ýzsóÇÛ_›¯þz÷óO?ÿÔŠ8û‚='–Õš‘?¦¾k¶ê»§ê¾ÇèŒ G"¿)Zàw·xš­º:ή ÆBoŽH^0/j{ûë‡%[¾¬M¶ =È®ÆX">¨ï=¦˜£p¯N¸‡¸7'ËMûkÕ®lJúH Íœ/s À3˃Âpû¢âžÑ.óP(Û¸w¾Sî¨ê‹Ä~¹( 1?%^ ‘©ù еêé…ZëϪ= ÔŸ~¹ŠiuI,.A’å4¡'ÐÇò^ü÷±Ý´Dö·V Þw¨Mè1Ÿ–·¡ âÒ(Öò¼°ÍBaËi†cUæ´ÄwIZ3ÆHÍßšîØMÄ…hÕ@ÖŽ¡‚÷)v›PÄ׿†ÚÝàáª÷½Ã8îsgN¢Ó"6u59L¨ Ü%ÓÁ¾\àÒ›2 Ñò¨!©¦=Ãñí%Cû!Æ–˜c‹ÊÑZ{!‚ÅfêžSw~ùÅâ©|VH¦ÆmͺgV(½&¶˜Ï‡ßXNví ÔhÉd3÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙuÅæxeÍB†„* .˜¯;ÿ†cG‰YìÙ®Æý~÷£;žÜºÃ«'÷Þyº…¾¤Njsíi2àÌO<‘…5§›ó{í·¦­ÖE±Á¸ôÛëKÿ¨5µFíZß¿¦‘^Ä “Ç“£Ñh4埆üQ¿àßæWvGÈŸF#=Ý<±-–Þ^j4v>ñ§Et(š†X©ÃœØU:tõ”Ń0ú`îSó×ñ‰èašœF‡o›×wÿ­ìP_Ö.ûÖÅKº¹E2è{¶áb»£§SH2¶I ”ßÏ”NeN®ã&cϧë$No«NœçÏ=nRíiv–ã 8†dÙ»—dnl`¶X`* * ª Š3 #s;Ç´ÚHâ£Ä3ªµ Ç1 ŠÆ[9@vW¡9€±„Y;} Ô] ññ¯FwKP0‚H‘C'4&•Æ0È'Ä)˜oÃ(Î7ˆ!9'VzeΣ‚? CpàŠLz)3RNˆ&=x/—Θ9yÝK'mˆó=˜IEƒC_•ਯnÇÎ{SJ›¹ÚÅ28Þ»ˆ2דy5kYG$ Ø„ˆPgŽ ö“ã ñÂ1Œ ÁÄ:2ë{yŠ?Jó~ÓNCZ›c°„&‘ ´‹À§óŒï)6Ú£ý.J*˜À)!Yª\ݹÝΤ}o÷:W5VÊü:ÍÙ•MSÂæF>6¨Að.õ¤ȔëJ“ ¼ÿ({šèƒ˜œ˜\³qœ¬k%ax]0CÃþß)]X«e?$‡-8ò”¾#>´Ô°Îar…|ƒZ‚ñõñlF!cYx¥»é*éã_ :\ÛºoL»Œ Aø EŒÆÐ¥wÆb3ƒ£«ZÕ¬{lE=¹s¹¼/#æl#´ÜÑÕo“¬œ]AÊg§)AÅ`1hLYQ°Üª‹ÔCg2~×p˺óÜ–!pJÔ˜3& äÓ ÜD¿ˆ×,`!(nV€Q`Ùu1žïÜÚ«^{ú„bˆƒ/¼‡sƒé¢mz À>Å+•Ô~Y½é,Cr‰ÚTNØìh°“ÐÕf:«¨ KßYaÏà:* ×vcß ’$7cvéh€ÜÅ4sÃÉè4Æ.ÈMGò 'ßîôþ<Ä3ƒ&JVÖÌ–‚¢²'úl[oéÂ$F!*`Þìj>»r†Ï®Žý¯¸ B-€™^}Ø…’;\ z¬¡å”q¼e[ е)° ¥ó9öCŒùy\íópuêÑ Õ²‡VdŒ~è·ÿvúƒÿœa /ØT5Ñï;™ÝR{¯Üvù¼æ¹æ­È…¦ZEîPBÔ—!`ºÔdÞ"¥š~qX´.ƒœxÙ´pFãþ9^î;Þ3Â+!i%˜åÐ;';E¼…‚~á~~¤'BÛuú½ÞÄ®7èƒÛ½µ±Û¿?ƒÜ¼\y#@BT³9ܽÍb±¹¿9ÖSžÛuï?–o¯Ú(º0¾vÉÔí§+›æfíg0_ÕÛ°a‘Ð^ ‘B©—’¤Ý;ÃÜ—v‰•E¾7!TÔX¢½œ$!7[ŠÎAmG¢}Ä8­Sš ­Ð}K_e2ê²ö¡RÁªÃÜÌ[š’ `A¤œh–jU ©uªª‡¢â±WÊ„ê²ÀìfÞÅ¥D’Ô[XæñzþU!×Ù…û²€1Åæ½•7;Ÿ”2ðé qsdã‰|ó'õfÍjr×µGjÄ›•Øž3^º ¤Šöœ+¬|˹ÜIhØ^9FÂŽA®Jpä:d%@…;/ËÀɶÒÇé.Ov|©½Ä1ñã˶—‚VÉÎæÌF¼&wf.—bÆìD0È[* ~mß'ò> Ѱ2s/0à,àhÑ¡‚¯»hZ´×ª”áò ÏôvÚ㨧ñ&‚ø$J˜À5^JuÿyÐ8ŠÈ“ ª+î-/g°e혷ע(ôZÝ龛ŒRíŸÆ)Gš-Z³Öq¸7"ÿüÀ¯*@Îäg¥ ß:€ ‹¾;²j6×%ÀÈmÚGçO5›á m"úüÄŽœÊ‘¥s(L gº¾½0Ãֿݹ)!Tx!kîãá»ö%p¸G‡€Q7k¡b< †'Œùe« ’bUOã¼~ýú!g7°gÆFK»¾ÿÄZI«þüKz­€³$ÊË+Ðøù+Ùê} ½ê|JSw{Ø{Â+6Ç·g©{ö_öÕ§´Ò'™Ó#ß«íÏ÷ô›&°‚ˆ°ÊÀàReX±—T†%È¢2¬%)­úv´¸2VL¢ó#÷í”=«Ú@`¦×âïøLKÈpN×¹'Ø.ÒaݪybOC»Õ=º@„P®eæŸã”ÿPKxºZ<Ô¾õ1Ø<EIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.ewd.svn-baseUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ<Ýèb¡EIAR-STR912/examples/ADC/interrupt/.svn/text-base/adc_int.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9>3¯D/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<ÆkþáfDIAR-STR912/examples/ADC/interrupt/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµVMoÛ8½ ИcR$Žímºm€=(«¯$'È©PdÚ"*‰E9É¿ßʱÝ6=,ÐåIæÌ¼yófHúêÃ; Îüsð“ÅcÊïæ9LÇãOå‘,µµ(V­,;x/Ôu>ÀLÖâ¢pX7ŠbÕˆ‘y1äâõ¦RN× D~Þv[˲0Rµ‹¢!ç 0Aug€w]/Vä<¾¾š|¾²Ônà^èŽ"&£± ]©åÖ‚ÐO7ÕL%À |`/E³­ÅoкߚóBüæE¤æ²3J¿ÞÐ7’ŸN‰üŸß‘Ÿ¾Ù>þ\ØdoûUÑÿã|Î`‘²ŒÅ9dÉ,ðRsîÏg0KR¸[òÀ‹}I>‚Ç£ ¼c’{ðøüe–'K3‚{àù§ÊxŒá‘—ó$†”Ýy©ÝÅ„<¥ð`éç:A’,µ©ÐAž@æÝ3ÈyÄFvŽ0!dË0¿ å~š°ùyšÄÜÏ ›{aq’Ã-ƒ9 ¹w2 éÅð½/‹ÇÃLŠ4ãŒý³ÄʹBàEÞˆ 0Û‚¼ øáPvÊ3*a–&q%@ÉI»dÙE;hèÅÁÕP,3‘0¸}<ªEdĸõ"XÇ,À‚R†"q»#)2[’ß+ùû'úÊu\gt`u¤}çÄÿ—ÿ,è ›ñ oÉ¿PKxºZ<³A¦Š{ DIAR-STR912/examples/ADC/interrupt/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWÛnÛ8} /mÐF²Úô’7Z¤%buñŠT‚<ŠM7Úµ¥¬$o›~ý¥Ø•”„p.íÍðÌ™3#^lë왯Ý7àÆó›„{¾Ƕ?‚a¾¬JµQ˦*‹|YÃs¡§'g0Ë7 ¢l«à0.áËäûbYëó; !»æ®¬ ?.!t)ûûM¾Ìš¼,@ªl«Á4k’Vu¼®wj¥Áö…5ùlµÒ.áJUµŽ˜œÛm€ª—U~ß’؃ü¶ÊªÐ"ò¯»ªÍqŽðß<´?¯›²z¸ÔÏ(Ôq´ÐO¡Î~îÃÓ"&s/ø?(–>ƒy‹$ˆx&¯IÂàÚç®\À,NÀK9%‘Ë Ž‚ <@$ÆÄWœòÈ72Y"àšK_sºq;Á# ‰äq óHÒz1!Ot8M])qBYҦ¹d ‚\1¾»Ùwi?¸×ü§saÛúðQÅ*_w·•Iѯà ßf¼`û·ùþ2~®›¿ð?ETÿÔ™ñ€=vú?PKxºZ< [íÇ®î=BIAR-STR912/examples/ADC/interrupt/.svn/text-base/91x_it.c.svn-baseUT “LjK“LjKux êëÕ›]o£8†ï+õ?ÍÞ´£ªi2;ûѽ¢@K|¤@šéUDÁ™ QÈÓNµÚÿ¾Ç†¦!í^LèŒeÔ‹Äö{|Þ'Ž]2øøÆ'æ)˜þì6 “i£‹‹ß ŒÜ,a%ÍiÂYYdIoI>Â8Ë)xñ=…íu ¿-3~žˆFÍ×%ƒÝë\Óc³É³$æYY@Dã{ÑØŠ9Ŭâ@ªª¦©h|ñy0üc »„Ê*¡ž_H­–md—èqV)8e¬Þp){È AYó¬ Õ9 ßù©à­³ V‚HpG¡®Ð/!•ibAœçÀ×跄ʬ+¨ê;ÖfÖ†áë˜Ã}üe’Ô 3¾FC‹Aüí¼m½XÓ°»lkx­hQÉžªrÅcF1 ö}Çâ"YC\óò£$˜ÏÓs¯¥lŸ”ŒÑjSiV|…63ˆ,—%m³—Þp”¬ ’—qŠ–1]Ñhf£_³ ›žoQX•y^>@$(ØÐû :k¼ †,ã"§T¨ž;Ù·Ž‹4Ç!RØP kÊâ¼\¿äø£>ò)Z+ÙÓ¥x£t4£ô÷Î(=×ýúzÛºÿÝ? ãhjÃ,°CÛ‹ ôÇÑÂlXL‰9ÂØ`2'–á™6øžs qC0"Ôø7Ä"ÞÌyù®„° ÑTÄ4}YA<”»FD|{b²;$[s3 ±øe²+¬s!ò!4nlˆˆkŸƒÊ9„s':31ßvl3 |˜!„SÃqÀó#¸²aj;8ĸrlÒðnÁ"¶>þšW""V™¾Ú×stN ,Ã5&vcBô6Æ"ÀtÛ ……qà»FˆP.ã!œ#´-Có%˜‡6¸†eÃÕí-T41öa5½È žm¡¡ÀFHø‡e&%pÊ$»$ßDŽ~ÉŠ$¯ñ»ö¡Á׎ŽïÜ“\7ê"‘³v³v\¼Hé ç‚t9m¾ÓoLï—í û¬Ýjð«^qV7¥ÛéAÎ9¤ØÔ|wíñʂʰæ»5/å5+^W¼ï…¸Ê,}íûDŸýs|ôïOb.ÈwPoæÜ Uš¡Þ±©òŒÑåÉúÒ”r¡…ø®d\3ìûư7¶À§1µdÞ1¬ø˜\€UšqÞñ©€òš,ñF÷ûA‹›sïÜÅ3úwM+®ó®k%ËåáÔqÑÔzdzŠnŒ/g/Ôz¢ßó­†ü°ù¡¶ä‡ÊÉz‘iK~¤œü§^ä?iKþ“Zòóðj:;½”ëÉ~ß¹øN?øŽ¾ðÅðCsÞcCeÎõßu­»íÙÑáÜ…ZOð{¾·\ãpð(Ö“{×µì¦áŽÅzbïºV€Ý5§îšzBïxVqbcõ€Žb=©w]ï`|3§1kž¾)R(W”ÅCûÀÅ*¿‚ˆ2ˆl:Ʋñnì“¥mÞœþ%þ.c…”ËH}„MWTÄÛž·ˆ'vÚ‡iDœ¦ðç5m{À6K 0º!8“E³…»ôÍáÒÄÏ¢ ù™ÌdB¹¹MóF‘)µm–ŸOER?í.Ù¢gQR®çÈÚw®b‹‚)ô8Ž’r}á+>)ô8‘’r}á+>“"#³Ç¬#Ôz¢ßó­†|)G¨µ%¯x ÃY1/Ôz’ßó­†|1/ÔÚ’W<æëpð(Ö“{×µìAÔc¯ˆb=±w]«xx‹ô8õF±žØ»®Uœz‰HŸMl£×þ+ïªø÷X`½Æü/²2‡[ÙF¯1Å›Y™CG,½ÆüÕ?f±è±ðJ¹žô÷«ø ÌøúªÇͦ”ë ßyþÛø¿ç§Ù¶g‰Ÿމc·ÝþPKxºZ<ÁïÊ;˜@IAR-STR912/examples/ADC/interrupt/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êëµXmo›Hþ)ÿaÔJUùb;/½»Dý@Çè0PÀ‰ò ¼‰W‡Áâ%—ÞéþûÍì‚ ±M›&‡Zvgžyffwf×ý£-¨‡ ÚÎk\}8 >ƒçOx”¥,fQ‘¥ rئº¿w#3°ÂƒÕs‹'ÇM+e1O3h>0Q5P–˘GaÁÓ|.HX †€Y^€‘ç%›‘ðà¼?ü­/h]À ËrÒ„Ë£Œ/È ÝCƒèÏáb³8Yú˜… (sž *ÏaY¡ák‘B”&O … þ ãôx²,‹ˆma2Ã&¾3–—qA˜‹tƾ‰Áe Ó;ñBpn'óÇDúñÎÙó¼H³oôŽ©89¡TüÚJÅI=w¶™¦a5·+…ÿc¬ƒãêžnùàÙ#ÿVqu¸ê F¶ ×SCS,UÛ2ï@1&(>êØ7†fX× N=ßžè®Gp·†?Æý!& Õ'ŠoظúµâŠQ4h¸¤®MUßC!°]Mw…)œ›€oƒ§Üèà],7 "€75ým6CumÝÔUßµ-CõÀ+¦ –íÕcÝÔÀ4”+SŠušá¢t° K~ Q¤iyú×)zn(&hÊD¹Ö=éZsH ¹€jJ·]Ã#F®=!®ˆ >ÅÎ7Å ­b¨XZ_ºSO‡‰¢épu·ŽiФ –ä¶ŽÁ*†¥kè«c 1f!)š$Û‘|ÿÝßßë#«$ŠËËá—7?„ø‘K<øðûð9ˆùýñüÃþž°ädü‰jZñmÉfìá-+î5"¢ñ„½Éƒˆ‹+þÛBòñ)Ìxx¿%Є¸¿‡û&0^øF ÃPxEVFE™±Ëý=,©/¤ê‘¦ÔµcØm±ÕHS¬åÈC™D¢Ç`õ/RJæ«]zšñ¡é¿óþ ½vV6uÙÌ·4[lã8Q7D±Û©÷5û¼•&Œ&ì²hά'\†áN6'Þ÷kˆ'…ðäà)å³Ãý½ö÷>òÚ–š~5½¦oÀ}u_>^ŠY–`+&eúï©Ó`¢šxi™ELM“þxP¶§^®\éM±uㄹèåh'¤Åiô'䂘IX4þÄó4kàÒh€ÃÃWâNÀY^à¾Ì òÏ™T†/0<êƒô¥WÆWRC%Û~Üjt‹úŠÄGt=¡ +K¢ˆI_( ’.¾£ýrÐðwûƒˆ¤¨1Žâ<ŒùßòÀ'SR±s¶²Ã½ûãìè4%ÙÑ–;RüvXÃ&¿]ìHPôðeXq¤âUq¤éNžˆ+ ~†$¶³!I_B¸"(*bÅPŒwPDL©ú³ O_ÃðtÃÓï3<ÝÍ%$%¬ý`,±¼Óþmží›KqxRyS¨ó0IX|¾vke„D>Ó¥A˜’èÓãAOšU愺oâý¬'† ÷kòL)¾}r¨)µáœ\$¸P³rYl:ˆMS®Þliî‡-‹kšN#_B·ÆúkÎcv0¤Ï·_:^ó#¢niôKÁÈ0õêtþPKxºZ<2;BCÕ\2IAR-STR912/examples/ADC/interrupt/.svn/all-wcpropsUT “LjK“LjKux êëÅÒÍ ‚@ðû>…=€NQz“ìA‹®²¬+Iº»ìŽŸIžì`xøÿ˜™³åm‰©Eа@Ó$¥uPsmr)ìJäní׺¾–)U!7«®Ýl¼- ®ÄTA1“º4p cûz‹}×ÞÒRÜ@ ȵ®’ã%"4eIWqx“’óÂ÷fGÀ05KƒšTÒ\8lÚ²ßÍoùd¿1§iÉlñ‡µ¸óSùã3©¥Ï¤zï¶ “"sËìgÿåäøÓßøÿÁôéoÊ PK xºZ<-IAR-STR912/examples/ADC/interrupt/.svn/props/UT “LjKʈKux êëPK xºZ<+IAR-STR912/examples/ADC/interrupt/.svn/tmp/UT “LjKʈKux êëPK xºZ<5IAR-STR912/examples/ADC/interrupt/.svn/tmp/prop-base/UT “LjKʈKux êëPK xºZ<5IAR-STR912/examples/ADC/interrupt/.svn/tmp/text-base/UT “LjKʈKux êëPK xºZ<1IAR-STR912/examples/ADC/interrupt/.svn/tmp/props/UT “LjKʈKux êëPKxºZ<Ô¾õ1Ø<-IAR-STR912/examples/ADC/interrupt/adc_int.ewdUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ<¼DŽ ÍS-IAR-STR912/examples/ADC/interrupt/adc_int.ewpUT “LjK“LjKux êëí\[oÛ8~Þæ?mÞ¦ãKf›ždÅi5µcÃvÒ.À %Zf+“ZŠríùõ{HI¾Å–ÝPT_¶MS](~<‡ä¹|¤Ôúkµ­%æ1aôÏWÍZã•…©Ç|Bƒ?_‘˜ýzsóÇÛ_›¯þz÷óO?ÿÔŠ8û‚='–Õš‘?¦¾k¶ê»§ê¾ÇèŒ G"¿)Zàw·xš­º:ή ÆBoŽH^0/j{ûë‡%[¾¬M¶ =È®ÆX">¨ï=¦˜£p¯N¸‡¸7'ËMûkÕ®lJúH Íœ/s À3˃Âpû¢âžÑ.óP(Û¸w¾Sî¨ê‹Ä~¹( 1?%^ ‘©ù еêé…ZëϪ= ÔŸ~¹ŠiuI,.A’å4¡'ÐÇò^ü÷±Ý´Dö·V Þw¨Mè1Ÿ–·¡ âÒ(Öò¼°ÍBaËi†cUæ´ÄwIZ3ÆHÍßšîØMÄ…hÕ@ÖŽ¡‚÷)v›PÄ׿†ÚÝàáª÷½Ã8îsgN¢Ó"6u59L¨ Ü%ÓÁ¾\àÒ›2 Ñò¨!©¦=Ãñí%Cû!Æ–˜c‹ÊÑZ{!‚ÅfêžSw~ùÅâ©|VH¦ÆmͺgV(½&¶˜Ï‡ßXNví ÔhÉd3÷â$ŠêÞ" ™®Žáq+âPÇÌBÔ·bÑÙuÅæxeÍB†„* .˜¯;ÿ†cG‰YìÙ®Æý~÷£;žÜºÃ«'÷Þyº…¾¤Njsíi2àÌO<‘…5§›ó{í·¦­ÖE±Á¸ôÛëKÿ¨5µFíZß¿¦‘^Ä “Ç“£Ñh4埆üQ¿àßæWvGÈŸF#=Ý<±-–Þ^j4v>ñ§Et(š†X©ÃœØU:tõ”Ń0ú`îSó×ñ‰èašœF‡o›×wÿ­ìP_Ö.ûÖÅKº¹E2è{¶áb»£§SH2¶I ”ßÏ”NeN®ã&cϧë$No«NœçÏ=nRíiv–ã 8†dÙ»—dnl`¶X`* * ª Š3 #s;Ç´ÚHâ£Ä3ªµ Ç1 ŠÆ[9@vW¡9€±„Y;} Ô] ññ¯FwKP0‚H‘C'4&•Æ0È'Ä)˜oÃ(Î7ˆ!9'VzeΣ‚? CpàŠLz)3RNˆ&=x/—Θ9yÝK'mˆó=˜IEƒC_•ਯnÇÎ{SJ›¹ÚÅ28Þ»ˆ2דy5kYG$ Ø„ˆPgŽ ö“ã ñÂ1Œ ÁÄ:2ë{yŠ?Jó~ÓNCZ›c°„&‘ ´‹À§óŒï)6Ú£ý.J*˜À)!Yª\ݹÝΤ}o÷:W5VÊü:ÍÙ•MSÂæF>6¨Að.õ¤ȔëJ“ ¼ÿ({šèƒ˜œ˜\³qœ¬k%ax]0CÃþß)]X«e?$‡-8ò”¾#>´Ô°Îar…|ƒZ‚ñõñlF!cYx¥»é*éã_ :\ÛºoL»Œ Aø EŒÆÐ¥wÆb3ƒ£«ZÕ¬{lE=¹s¹¼/#æl#´ÜÑÕo“¬œ]AÊg§)AÅ`1hLYQ°Üª‹ÔCg2~×p˺óÜ–!pJÔ˜3& äÓ ÜD¿ˆ×,`!(nV€Q`Ùu1žïÜÚ«^{ú„bˆƒ/¼‡sƒé¢mz À>Å+•Ô~Y½é,Cr‰ÚTNØìh°“ÐÕf:«¨ KßYaÏà:* ×vcß ’$7cvéh€ÜÅ4sÃÉè4Æ.ÈMGò 'ßîôþ<Ä3ƒ&JVÖÌ–‚¢²'úl[oéÂ$F!*`Þìj>»r†Ï®Žý¯¸ B-€™^}Ø…’;\ z¬¡å”q¼e[ е)° ¥ó9öCŒùy\íópuêÑ Õ²‡VdŒ~è·ÿvúƒÿœa /ØT5Ñï;™ÝR{¯Üvù¼æ¹æ­È…¦ZEîPBÔ—!`ºÔdÞ"¥š~qX´.ƒœxÙ´pFãþ9^î;Þ3Â+!i%˜åÐ;';E¼…‚~á~~¤'BÛuú½ÞÄ®7èƒÛ½µ±Û¿?ƒÜ¼\y#@BT³9ܽÍb±¹¿9ÖSžÛuï?–o¯Ú(º0¾vÉÔí§+›æfíg0_ÕÛ°a‘Ð^ ‘B©—’¤Ý;ÃÜ—v‰•E¾7!TÔX¢½œ$!7[ŠÎAmG¢}Ä8­Sš ­Ð}K_e2ê²ö¡RÁªÃÜÌ[š’ `A¤œh–jU ©uªª‡¢â±WÊ„ê²ÀìfÞÅ¥D’Ô[XæñzþU!×Ù…û²€1Åæ½•7;Ÿ”2ðé qsdã‰|ó'õfÍjr×µGjÄ›•Øž3^º ¤Šöœ+¬|˹ÜIhØ^9FÂŽA®Jpä:d%@…;/ËÀɶÒÇé.Ov|©½Ä1ñã˶—‚VÉÎæÌF¼&wf.—bÆìD0È[* ~mß'ò> Ѱ2s/0à,àhÑ¡‚¯»hZ´×ª”áò ÏôvÚ㨧ñ&‚ø$J˜À5^JuÿyÐ8ŠÈ“ ª+î-/g°e혷ע(ôZÝ龛ŒRíŸÆ)Gš-Z³Öq¸7"ÿüÀ¯*@Îäg¥ ß:€ ‹¾;²j6×%ÀÈmÚGçO5›á m"úüÄŽœÊ‘¥s(L gº¾½0Ãֿݹ)!Tx!kîãá»ö%p¸G‡€Q7k¡b< †'Œùe« ’bUOã¼~ýú!g7°gÆFK»¾ÿÄZI«þüKz­€³$ÊË+Ðøù+Ùê} ½ê|JSw{Ø{Â+6Ç·g©{ö_öÕ§´Ò'™Ó#ß«íÏ÷ô›&°‚ˆ°ÊÀàReX±—T†%È¢2¬%)­úv´¸2VL¢ó#÷í”=«Ú@`¦×âïøLKÈpN×¹'Ø.ÒaݪybOC»Õ=º@„P®eæŸã”ÿPKxºZ<ÁïÊ;˜(IAR-STR912/examples/ADC/interrupt/main.cUT “LjK“LjKux êëµXmo›Hþ)ÿaÔJUùb;/½»Dý@Çè0PÀ‰ò ¼‰W‡Áâ%—ÞéþûÍì‚ ±M›&‡Zvgžyffwf×ý£-¨‡ ÚÎk\}8 >ƒçOx”¥,fQ‘¥ rئº¿w#3°ÂƒÕs‹'ÇM+e1O3h>0Q5P–˘GaÁÓ|.HX †€Y^€‘ç%›‘ðà¼?ü­/h]À ËrÒ„Ë£Œ/È ÝCƒèÏáb³8Yú˜… (sž *ÏaY¡ák‘B”&O … þ ãôx²,‹ˆma2Ã&¾3–—qA˜‹tƾ‰Áe Ó;ñBpn'óÇDúñÎÙó¼H³oôŽ©89¡TüÚJÅI=w¶™¦a5·+…ÿc¬ƒãêžnùàÙ#ÿVqu¸ê F¶ ×SCS,UÛ2ï@1&(>êØ7†fX× N=ßžè®Gp·†?Æý!& Õ'ŠoظúµâŠQ4h¸¤®MUßC!°]Mw…)œ›€oƒ§Üèà],7 "€75ým6CumÝÔUßµ-CõÀ+¦ –íÕcÝÔÀ4”+SŠušá¢t° K~ Q¤iyú×)zn(&hÊD¹Ö=éZsH ¹€jJ·]Ã#F®=!®ˆ >ÅÎ7Å ­b¨XZ_ºSO‡‰¢épu·ŽiФ –ä¶ŽÁ*†¥kè«c 1f!)š$Û‘|ÿÝßßë#«$ŠËËá—7?„ø‘K<øðûð9ˆùýñüÃþž°ädü‰jZñmÉfìá-+î5"¢ñ„½Éƒˆ‹+þÛBòñ)Ìxx¿%Є¸¿‡û&0^øF ÃPxEVFE™±Ëý=,©/¤ê‘¦ÔµcØm±ÕHS¬åÈC™D¢Ç`õ/RJæ«]zšñ¡é¿óþ ½vV6uÙÌ·4[lã8Q7D±Û©÷5û¼•&Œ&ì²hά'\†áN6'Þ÷kˆ'…ðäà)å³Ãý½ö÷>òÚ–š~5½¦oÀ}u_>^ŠY–`+&eúï©Ó`¢šxi™ELM“þxP¶§^®\éM±uㄹèåh'¤Åiô'䂘IX4þÄó4kàÒh€ÃÃWâNÀY^à¾Ì òÏ™T†/0<êƒô¥WÆWRC%Û~Üjt‹úŠÄGt=¡ +K¢ˆI_( ’.¾£ýrÐðwûƒˆ¤¨1Žâ<ŒùßòÀ'SR±s¶²Ã½ûãìè4%ÙÑ–;RüvXÃ&¿]ìHPôðeXq¤âUq¤éNžˆ+ ~†$¶³!I_B¸"(*bÅPŒwPDL©ú³ O_ÃðtÃÓï3<ÝÍ%$%¬ý`,±¼Óþmží›KqxRyS¨ó0IX|¾vke„D>Ó¥A˜’èÓãAOšU愺oâý¬'† ÷kòL)¾}r¨)µáœ\$¸P³rYl:ˆMS®Þliî‡-‹kšN#_B·ÆúkÎcv0¤Ï·_:^ó#¢niôKÁÈ0õêtþPKxºZ<³A¦Š{ ,IAR-STR912/examples/ADC/interrupt/91x_conf.hUT “LjK“LjKux êëµWÛnÛ8} /mÐF²Úô’7Z¤%buñŠT‚<ŠM7Úµ¥¬$o›~ý¥Ø•”„p.íÍðÌ™3#^lë왯Ý7àÆó›„{¾Ƕ?‚a¾¬JµQ˦*‹|YÃs¡§'g0Ë7 ¢l«à0.áËäûbYëó; !»æ®¬ ?.!t)ûûM¾Ìš¼,@ªl«Á4k’Vu¼®wj¥Áö…5ùlµÒ.áJUµŽ˜œÛm€ª—U~ß’؃ü¶ÊªÐ"ò¯»ªÍqŽðß<´?¯›²z¸ÔÏ(Ôq´ÐO¡Î~îÃÓ"&s/ø?(–>ƒy‹$ˆx&¯IÂàÚç®\À,NÀK9%‘Ë Ž‚ <@$ÆÄWœòÈ72Y"àšK_sºq;Á# ‰äq óHÒz1!Ot8M])qBYҦ¹d ‚\1¾»Ùwi?¸×ü§saÛúðQÅ*_w·•Iѯà ßf¼`û·ùþ2~®›¿ð?ETÿÔ™ñ€=vú?PKxºZ< [íÇ®î=*IAR-STR912/examples/ADC/interrupt/91x_it.cUT “LjK“LjKux êëÕ›]o£8†ï+õ?ÍÞ´£ªi2;ûѽ¢@K|¤@šéUDÁ™ QÈÓNµÚÿ¾Ç†¦!í^LèŒeÔ‹Äö{|Þ'Ž]2øøÆ'æ)˜þì6 “i£‹‹ß ŒÜ,a%ÍiÂYYdIoI>Â8Ë)xñ=…íu ¿-3~žˆFÍ×%ƒÝë\Óc³É³$æYY@Dã{ÑØŠ9Ŭâ@ªª¦©h|ñy0üc »„Ê*¡ž_H­–md—èqV)8e¬Þp){È AYó¬ Õ9 ßù©à­³ V‚HpG¡®Ð/!•ibAœçÀ×跄ʬ+¨ê;ÖfÖ†áë˜Ã}üe’Ô 3¾FC‹Aüí¼m½XÓ°»lkx­hQÉžªrÅcF1 ö}Çâ"YC\óò£$˜ÏÓs¯¥lŸ”ŒÑjSiV|…63ˆ,—%m³—Þp”¬ ’—qŠ–1]Ñhf£_³ ›žoQX•y^>@$(ØÐû :k¼ †,ã"§T¨ž;Ù·Ž‹4Ç!RØP kÊâ¼\¿äø£>ò)Z+ÙÓ¥x£t4£ô÷Î(=×ýúzÛºÿÝ? ãhjÃ,°CÛ‹ ôÇÑÂlXL‰9ÂØ`2'–á™6øžs qC0"Ôø7Ä"ÞÌyù®„° ÑTÄ4}YA<”»FD|{b²;$[s3 ±øe²+¬s!ò!4nlˆˆkŸƒÊ9„s':31ßvl3 |˜!„SÃqÀó#¸²aj;8ĸrlÒðnÁ"¶>þšW""V™¾Ú×stN ,Ã5&vcBô6Æ"ÀtÛ ……qà»FˆP.ã!œ#´-Có%˜‡6¸†eÃÕí-T41öa5½È žm¡¡ÀFHø‡e&%pÊ$»$ßDŽ~ÉŠ$¯ñ»ö¡Á׎ŽïÜ“\7ê"‘³v³v\¼Hé ç‚t9m¾ÓoLï—í û¬Ýjð«^qV7¥ÛéAÎ9¤ØÔ|wíñʂʰæ»5/å5+^W¼ï…¸Ê,}íûDŸýs|ôïOb.ÈwPoæÜ Uš¡Þ±©òŒÑåÉúÒ”r¡…ø®d\3ìûư7¶À§1µdÞ1¬ø˜\€UšqÞñ©€òš,ñF÷ûA‹›sïÜÅ3úwM+®ó®k%ËåáÔqÑÔzdzŠnŒ/g/Ôz¢ßó­†ü°ù¡¶ä‡ÊÉz‘iK~¤œü§^ä?iKþ“Zòóðj:;½”ëÉ~ß¹øN?øŽ¾ðÅðCsÞcCeÎõßu­»íÙÑáÜ…ZOð{¾·\ãpð(Ö“{×µì¦áŽÅzbïºV€Ý5§îšzBïxVqbcõ€Žb=©w]ï`|3§1kž¾)R(W”ÅCûÀÅ*¿‚ˆ2ˆl:Ʋñnì“¥mÞœþ%þ.c…”ËH}„MWTÄÛž·ˆ'vÚ‡iDœ¦ðç5m{À6K 0º!8“E³…»ôÍáÒÄÏ¢ ù™ÌdB¹¹MóF‘)µm–ŸOER?í.Ù¢gQR®çÈÚw®b‹‚)ô8Ž’r}á+>)ô8‘’r}á+>“"#³Ç¬#Ôz¢ßó­†|)G¨µ%¯x ÃY1/Ôz’ßó­†|1/ÔÚ’W<æëpð(Ö“{×µìAÔc¯ˆb=±w]«xx‹ô8õF±žØ»®Uœz‰HŸMl£×þ+ïªø÷X`½Æü/²2‡[ÙF¯1Å›Y™CG,½ÆüÕ?f±è±ðJ¹žô÷«ø ÌøúªÇͦ”ë ßyþÛø¿ç§Ù¶g‰Ÿމc·ÝþPK yºZ<IAR-STR912/examples/ADC/.svn/UT •LjKʈKux êëPKxºZ<Ç'¹!¹$$IAR-STR912/examples/ADC/.svn/entriesUT “LjK“LjKux êëP±Žƒ0ÛŸø•—@ °UíÒµeº-…WÊ$Qò¨úùÒé¤[Ï“mÙ¬`˜"”ZÓ9¤VÊ>„•)qž^.O~==|)wÄró¢÷ü’W÷%Ãly -I^ŽWqë®Ò’Þv 3%y<Ÿþ·4b#°ºè”n ¶ªÊkS¬> Ð>íBiŒäÜäFø‹úq¸*‹bÙÙ Q*KuÓÓ`Ê;dü<ïåý‰ &ÇãøGPK xºZ<'IAR-STR912/examples/ADC/.svn/prop-base/UT “LjKʈKux êëPK xºZ<'IAR-STR912/examples/ADC/.svn/text-base/UT “LjKʈKux êëPKxºZ’ôß¿“>ýûøc[“>ö³–ÿÅjÁa)yÂ#IëÑenêªÇŸ4*"tZ¤™ÝCeöø¦»vv¥ÍQ÷ÑÖIm®k]€E_”Ꞁ‰’Ÿ'Ó›ä¯Á$<Ù´Ü^‘lb/ðîD,E™›CŠ3ÜÂ`ùqx GT;™~ºzs;ÕöÒ|J³F£ J)Ȧ–¯Òìc“¡qH€gd ϳ9Pn›†ôËÇðâÂÚ6°A+ÝFÁ¾ß½.Ðn*÷ôÚÆj“c«ÈÐ&þ6·j§´4é·•s¬ÉMa+S¿RjÀý Ú?s¥á:¾)ѼۥBc«÷¶‘ë|ž¼|¡óT¦ˆðúï4ìðÝq<5ÅpÓÝú!~ÓŽÛ—ô’ÐoqÙ^¦þW!רH¹ÅN1%O¿v¾ôxx¶å×kxE×òŸ¢m·Š;|7ì3¾0#þM×r¿Áº²ï¢ÿòÈòȧ[a.Þ]ÏÿPKxºZ<ô8T¡+IAR-STR912/examples/ADC/polling/adc_pol.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<*}e)vKM+IAR-STR912/examples/ADC/polling/adc_pol.ewpUT “LjK“LjKux êëí\ëoÛ8ÿ| ìÿ ´ù¶]?Ò+¶¼](ŠÓjkdží¤{@ƒ–h™­Lj)Êuî¯ß!)?cËn(ªÀáR'Õƒâ3΋#·þXÎcgyJýýE³Öxá`°Ðè÷$e¿¾}ûæÝ¯Í¼ÿù§Ÿj%œ}Á€ÇiMIŒïõ£ï›­úö©º0:%QÆ‘X]‚‹Íñûk<É¢V]ç×cq0CdÕpÕÔtwÖ÷[¶BÙ›>ȯ¦X "Ýë輦£x§O¸‡x0#‹õø_·ê{WÖ-C$Ðú Î+\¶ê‹½Æpû¢â–Ñ P,Ǹs¾Õî êKÄnŸ+RÚKÜGb¶GŠ&^ ‘³ùšµêúÂV¯õ'ÝêM¾œÍ :$ç Év†P÷ˆ˜ŠCH«Y|shB×#i¾6Á‡6 a]âãô6 A|šdÂYœ&¶YHl9Ãqp¢Ú§ø&‹cgÊø©õ[3•ÝLœÉ†Uäãø,ø ±¯EüÑž¨Ýôï~ {?xŒã÷f$9NbÓ”“ƒŒ 2Ç2â áó .}(Ã-*’jÆ3]Ÿ#Úw)vÄ ;TJwì츛ª{^Ýûå‡kúœ˜L8Èm͹eN,­&v˜OQ€_9^~íôèHd½ÂwÒ,IêÞ<‹™< œÂãN¡©ƒh褢ÓWêšÍðÒ™Æ Õ,\°Ðtý Fž"³Ø²]Œz½Î'4¾öþ­÷p s;ÖŽo¿j3ãeÒç,Ì‘»5LJóïÚë¦kŒÖA©‚\†Wç¿©5µFíÒܾjO¯KRŽYŒSƒÅÑh4šò§!?êü®ÿäwÔ‰ü4útýĦYÞxs©ÑØzøÈO9ŒhS4‰±b‡=#°Ít˜ê K-:7 ôAÝkõ׉èbšGŽïš—7ÿŽœüМÖûÖÁ û+df{ÀûßDÐ~7„9Òøž·%=h.ŸѼ«:¢ñ¼k<%ôðRÕÜ3œ3Ïës Qlp¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÕ*ã® Š†àÂq˜$‹ AÂhj,ƒ|Fœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°é â¬H•›R“ Þÿ3;œè™œØÜLñ¼|je&ï²`…ô½?u¯VË?d%û#8ð”¹!!ŒÔ²^Á¬ò=©Í”oˆ‡ 3 S‰5—¦û„¾Jí|cükÁ„k÷µj—> E pß¡2V6 À‚o&ptp»©š¡ ©GwFl'æ\+i¹ßªÎʹ„|®,x(AS"È‚ˆ‚}PS¤. 8“þ»Y6~WºÀ:QcO™(Ï3dÑqS½¢¼fpAq³ŒÍnŠñ´¤j§{ã勎H ¶ðÎ-†‹®í-÷X^©¤ñËîmG ¤0—hœÊюʼn= Sm ½L JÐôí%,npÒøÑMSZd’ÌÍØÝ:ê£w0ÄÌrD²:ŽñÖd„&Ã…‹ï­éòþk€§U”ìþ¤š-EEOôI½méÄdV!*ȼ¹Õ$øÜÊ3|nuÙ_°Šs"Ô˜í݇m(YzR0cÆ{P®QÆñ&Ûb‘¬ Hf(=ŸãÞ¥˜ŸÆ5Ž1÷w§î-¦ZvЊ€¬¥zWz½þNd Ï( ª:Ñëy¹ÞREÑ?°Ì8‡ý\ó†äBUmŽ"+” ¥ ¨K4mÆ-’ªÉ%e$'ž·,¼»á¨w*/÷/á¥i%Xå0['[M‚yáþêÈŒ„+ßëuûf »þÝ w~çÚõF~ïöró|æ%”‰C`Íúpû6KÅúþúØŒy~Ç¿ýô? }¤¯2ñ{zgÓÞªý ”ÃWµÇö4E\¤ ŒwB$Qêm!©÷NdîK;GË¢0',®±Ìx;IB®KŠN)Aã$ŽDû„q2|œOXlϵR@ôM¿cdÕdíBiªÑ,æ­ÍIT°!RŽ ÚMµ*­*ê¢Än™­Ö¹,ªŧD“ÿª×£ìãuÁý«‚®“÷eÝcŠí[«`z:(E“Ò‰ÄÍÂù æê•—åø¦ã?ÖH0-q<'¬tHÕœ+¬Uɹ¬$´¬¯F#á¦@W%8r² ÂÊË2pòRúTWy²Ã[í%ÊÄ]ŠÏ+7.­’Êæ\GVB­ÌIP7 â–Jœ_7 ‰¼b@´ÌÌ•èsq4oSÁ;hRTkUЏ<Á³]N{õ8ÞxL'ú1\ãç„QÏŒîÝ÷Ñ¿o—àÌ,Z ðóªpØ¢ìæ0ösšk$rÇyùòåÝÊõÅ!œY“–«’AGi­úÓï?jEœeɪ½MŸ¾¯§¾Xio íÏÚ¯sݼDó$Æ)8u¹_—ÿ—WƒîôA:|( j» ú›šl`E a•Á¥Ê°Ò « Kùq¬V}#A‡„IªÖ,)[št¯jtÖe-µÊŠ-´˜±ãh;ÌØƒFÝÄBjàb‡«ÛÝ=:G„~P&¬W_†&ÿýPKxºZ<Ô¾õ1Ø<+IAR-STR912/examples/ADC/polling/adc_pol.ewdUT “LjK“LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPK yºZ<%IAR-STR912/examples/ADC/polling/.svn/UT •LjKʈKux êëPKxºZMB#Š÷eç]×¥q¼.'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKxºZ< «ÕŽ·BIAR-STR912/examples/ADC/polling/.svn/text-base/Readme.txt.svn-baseUT “LjK“LjKux êëµUÛnÛ8} ˜G§H|Û¦»5°ŒDÇÄêâ¥è~*›¶‰J¢¡‹“üýÎHªnÓ‡ºô‹Ì™sæÌámôáï ¼x¹–â~¡`:‚D…fSZéM]ÚÂl*xê:`n2 Qšk8Hns=¬_jJaM}°%¼3=Øñ˜™MZ[€ÒiNÉ~Zk$-«DU5zKÉãÛÑäQ+mº¬1Ž[€®6¥9¶$gö·“võAó=à/i~Ìô`i³Ìû«!üâA’¦ªmù:£o”>’ôß¿“>ýûøc[“>ö³–ÿÅjÁa)yÂ#IëÑenêªÇŸ4*"tZ¤™ÝCeöø¦»vv¥ÍQ÷ÑÖIm®k]€E_”Ꞁ‰’Ÿ'Ó›ä¯Á$<Ù´Ü^‘lb/ðîD,E™›CŠ3ÜÂ`ùqx GT;™~ºzs;ÕöÒ|J³F£ J)Ȧ–¯Òìc“¡qH€gd ϳ9Pn›†ôËÇðâÂÚ6°A+ÝFÁ¾ß½.Ðn*÷ôÚÆj“c«ÈÐ&þ6·j§´4é·•s¬ÉMa+S¿RjÀý Ú?s¥á:¾)ѼۥBc«÷¶‘ë|ž¼|¡óT¦ˆðúï4ìðÝq<5ÅpÓÝú!~ÓŽÛ—ô’ÐoqÙ^¦þW!רH¹ÅN1%O¿v¾ôxx¶å×kxE×òŸ¢m·Š;|7ì3¾0#þM×r¿Áº²ï¢ÿòÈòȧ[a.Þ]ÏÿPKxºZ<ô8T¡CIAR-STR912/examples/ADC/polling/.svn/text-base/adc_pol.eww.svn-baseUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&1%9¾ ?G/µ¼ÀF,Ö£¬É&)±$9é43'E(`£lPKxºZ<ž8ÀFÌiBIAR-STR912/examples/ADC/polling/.svn/text-base/91x_conf.h.svn-baseUT “LjK“LjKux êëµWßs›8~ÏLþ‡éK›éÅ@~µy“A6šã‡ "žS[øŽÙ}«"Tµ Õ¡/æø¤o1„ªöÌ~Ló\¬Œ®€Ù°º]Ë®ÀUWàº+pó“¥§>ëÛ„ªöl˜æßŒ£^ó¨×:ê½ÐJõ—8j$vSMYÒ— ¡Z*<²µT;"ZÆ¡išÖ¡©oÍxÂÂNû"$P1 Å6ÛRì žTì+žVìÅþ¤ØŸµ3xï“¡ZªØÖo‚µD¾F’¢É×KJHÄuë¸Ç$¡oÆùÆcé›Oúö¡ªm¨ýIl“ o1„ê_]Ž~_¼¾ŽýLqï£Ák©˜Õ{¯"Tµ Õ¡ë%ЀvïõGl{Ïœý¡¸]Ó,ŸÙåsU§+X–âïÈçÏðOºÚxÿ§û߇}|{“ÙÝö“÷à€Óº2 y‰|‘-¦ç×Çî>×ð^§öïnÛ«×±~þ¿B8òb;b}éõPKxºZ<ÌfØ+=@IAR-STR912/examples/ADC/polling/.svn/text-base/91x_it.c.svn-baseUT “LjK“LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó%>ùu0üc ó:… .*%Ÿèñ¼ÊD¾Ñ1žƒ§y´\ˆz#!áâ.Ï8Äe-ó‚WÇ(|çK¥‚[åÜ( YZÀ5‡ºB²„¥NÒõäŠÿ‘quU}-¶™mÃÈU*á6}€2Ëj÷¹\¡!Œ% }fv¼½XñpºüÉð Gñ¢:Ò3Uå¼OÇ08÷µH‹li-Ë[Œ’a>³–z|V Á«MY,óâ;l3ƒ4Ãvݲö<Û®‘Rlƒ¬Ët‰–1]5hæ‚àßó ‡?!âpS®×åýNø T‚Š ¿Ýȇ£Æ«bx/r©rZ*Õã$;ðVi±\ã’@KØp\ +.Òu4>Îñg}äS´VЇSõWéh¤Véï­U:zìûúr·}ÿµºBÆlJ`“„„ ’hÌNL`1¥îhã(†ÉœzNèˆBÿ$à0ÔDÔ£áÜy¢€Ä ,(›ª˜n¤;hˆòÀa4 !&'Ö­8!•Ü›»,ÁAʼnõTØ‹ q.0cp]20@2÷Ù‘*DÔ#â—ÅQHÝ’©ãûF ÎL‰ïO3ŸèNx qôÎÕ¼S±Ë„œÏÑ9u|ðœÀ™Æ„šm†U.*€ë7¶cš( ã8 48ŒÀP®ã!™#´'†Nè K0OŽGàìr‡*šû°„!shH<4„„/l 1)…S'Ù&ùþ+zpxðK^dë¿k¶|õáðàð`ðÎ3ém£.2]µ›­ãæÅ’ß`-X^M›ïô+åýt[aµOüªWRÔMëSyÐ5‡›Zîn=aYpýÖr·ç¹#æ²ÅËŽ÷½÷]™/_úþ¨š?ü}xðÏÿÄ>YÐ7Pojn…*ËPïØ4y&ø —Ùªé J¥ÒBz] iö}ãØ; [ðËT¦V2o6|LÏ;àF•eœw| ¼ð&Wx£ûvÐêæÅ;wñ‚ÿUóJÚÀ¼íÚÈvÙ:nšVBoy6QÁã þÖ»–ÛI~ß¹ø¬|f/|f>>Ÿtg¯Ôv¢ßóm†ü°ù¡µä‡ÆÉz‘YK~dœü—^ä¿XKþ‹Yòóäl:ëŽ^Ëíd¿ïÜ |¿|ß^ø¾aø‰;ïñ@åÎíßvm; ëÎ]©í¿çÛy/pºƒG±ÜÛ® `w°;vÛ‰½íÚöÀíN=pí„ÞòlâÄÆëÅvRo»6qéĬÇa–Û‰~ß¹!ø=Îk´Ü^ø†OlT =Žl´Ü^ø†mèÈíQu”ÚNô{¾ÍïQr”ÚZò† N’Ìz¬y¥¶“üžo3ä{¬y¥¶–¼á5ï_xÝÁ£ØNîmװǬÇÊíÄÞvmâ×M´Ç±0ŠíÄÞvmâXø£}b½ð_x7Å¿ÇÛè-æox“Õ9ôx”môó7ü0«sèñ„Fo1ó¿CXôØxµÜNúûÎMüId|~ÖãfSËí„¿ï¼ ÿuüoùë2 =õ¼1õÉvÚPKxºZ<*}e)vKMCIAR-STR912/examples/ADC/polling/.svn/text-base/adc_pol.ewp.svn-baseUT “LjK“LjKux êëí\ëoÛ8ÿ| ìÿ ´ù¶]?Ò+¶¼](ŠÓjkdží¤{@ƒ–h™­Lj)Êuî¯ß!)?cËn(ªÀáR'Õƒâ3΋#·þXÎcgyJýýE³Öxá`°Ðè÷$e¿¾}ûæÝ¯Í¼ÿù§Ÿj%œ}Á€ÇiMIŒïõ£ï›­úö©º0:%QÆ‘X]‚‹Íñûk<É¢V]ç×cq0CdÕpÕÔtwÖ÷[¶BÙ›>ȯ¦X "Ýë輦£x§O¸‡x0#‹õø_·ê{WÖ-C$Ðú Î+\¶ê‹½Æpû¢â–Ñ P,Ǹs¾Õî êKÄnŸ+RÚKÜGb¶GŠ&^ ‘³ùšµêúÂV¯õ'ÝêM¾œÍ :$ç Év†P÷ˆ˜ŠCH«Y|shB×#i¾6Á‡6 a]âãô6 A|šdÂYœ&¶YHl9Ãqp¢Ú§ø&‹cgÊø©õ[3•ÝLœÉ†Uäãø,ø ±¯EüÑž¨Ýôï~ {?xŒã÷f$9NbÓ”“ƒŒ 2Ç2â áó .}(Ã-*’jÆ3]Ÿ#Úw)vÄ ;TJwì츛ª{^Ýûå‡kúœ˜L8Èm͹eN,­&v˜OQ€_9^~íôèHd½ÂwÒ,IêÞ<‹™< œÂãN¡©ƒh褢ÓWêšÍðÒ™Æ Õ,\°Ðtý Fž"³Ø²]Œz½Î'4¾öþ­÷p s;ÖŽo¿j3ãeÒç,Ì‘»5LJóïÚë¦kŒÖA©‚\†Wç¿©5µFíÒܾjO¯KRŽYŒSƒÅÑh4šò§!?êü®ÿäwÔ‰ü4útýĦYÞxs©ÑØzøÈO9ŒhS4‰±b‡=#°Ít˜ê K-:7 ôAÝkõ׉èbšGŽïš—7ÿŽœüМÖûÖÁ û+df{ÀûßDÐ~7„9Òøž·%=h.ŸѼ«:¢ñ¼k<%ôðRÕÜ3œ3Ïës Qlp¶Âžd®a<6Ÿc* * ªŒ³ #ƒ.Ï6ÛH—â9£$°Ê5„ÓEEòV›¦Up`†,ãEjÈHÛ‘ž#þÕ*ã® Š†àÂq˜$‹ AÂhj,ƒ|Fœ‚ú¶ŒÒæœq‹2ÄAK/í…Y`Ïâ,«Êò<;e¡Ìy*­—O§Ì½þ9™ cpÀXIEÂaNÈRpÔS·So†ƒ‚%eœRÚÆ²(ïD#„ÉŒÚÕ¬CQöcD¨7CçÉóøïŒp 2!˜xLìZÀî*öê€Ü¶ÑŠÖå4¡M$pí°é â¬H•›R“ Þÿ3;œè™œØÜLñ¼|je&ï²`…ô½?u¯VË?d%û#8ð”¹!!ŒÔ²^Á¬ò=©Í”oˆ‡ 3 S‰5—¦û„¾Jí|cükÁ„k÷µj—> E pß¡2V6 À‚o&ptp»©š¡ ©GwFl'æ\+i¹ßªÎʹ„|®,x(AS"È‚ˆ‚}PS¤. 8“þ»Y6~WºÀ:QcO™(Ï3dÑqS½¢¼fpAq³ŒÍnŠñ´¤j§{ã勎H ¶ðÎ-†‹®í-÷X^©¤ñËîmG ¤0—hœÊюʼn= Sm ½L JÐôí%,npÒøÑMSZd’ÌÍØÝ:ê£w0ÄÌrD²:ŽñÖd„&Ã…‹ï­éòþk€§U”ìþ¤š-EEOôI½méÄdV!*ȼ¹Õ$øÜÊ3|nuÙ_°Šs"Ô˜í݇m(YzR0cÆ{P®QÆñ&Ûb‘¬ Hf(=ŸãÞ¥˜ŸÆ5Ž1÷w§î-¦ZvЊ€¬¥zWz½þNd Ï( ª:Ñëy¹ÞREÑ?°Ì8‡ý\ó†äBUmŽ"+” ¥ ¨K4mÆ-’ªÉ%e$'ž·,¼»á¨w*/÷/á¥i%Xå0['[M‚yáþêÈŒ„+ßëuûf »þÝ w~çÚõF~ïöró|æ%”‰C`Íúpû6KÅúþúØŒy~Ç¿ýô? }¤¯2ñ{zgÓÞªý ”ÃWµÇö4E\¤ ŒwB$Qêm!©÷NdîK;GË¢0',®±Ìx;IB®KŠN)Aã$ŽDû„q2|œOXlϵR@ôM¿cdÕdíBiªÑ,æ­ÍIT°!RŽ ÚMµ*­*ê¢Än™­Ö¹,ªŧD“ÿª×£ìãuÁý«‚®“÷eÝcŠí[«`z:(E“Ò‰ÄÍÂù æê•—åø¦ã?ÖH0-q<'¬tHÕœ+¬Uɹ¬$´¬¯F#á¦@W%8r² ÂÊË2pòRúTWy²Ã[í%ÊÄ]ŠÏ+7.­’Êæ\GVB­ÌIP7 â–Jœ_7 ‰¼b@´ÌÌ•èsq4oSÁ;hRTkUЏ<Á³]N{õ8ÞxL'ú1\ãç„QÏŒîÝ÷Ñ¿o—àÌ,Z ðóªpØ¢ìæ0ösšk$rÇyùòåÝÊõÅ!œY“–«’AGi­úÓï?jEœeɪ½MŸ¾¯§¾Xio íÏÚ¯sݼDó$Æ)8u¹_—ÿ—WƒîôA:|( j» ú›šl`E a•Á¥Ê°Ò « Kùq¬V}#A‡„IªÖ,)[št¯jtÖe-µÊŠ-´˜±ãh;ÌØƒFÝÄBjàb‡«ÛÝ=:G„~P&¬W_†&ÿýPKxºZIAR-STR912/examples/ADC/polling/.svn/text-base/main.c.svn-baseUT “LjK“LjKux êë­X[o›J~·äÿ0j¥Ê©¬ØÎ¥çœDy €mT À‰ò„ÞØ¨,.izªþ÷3³ ê˜^TÔªxvæ›o.;»tôþ•ò Ȧõ`k³¹ gãñpÜE¤ ‹X§I¼fÚgi10ü-ƒú¹‚­Ƨ-KE¾IRh>W°v»( üŠçƒu¿€,\Ç"Ž?üßy˜åIúåŠÞ±ggTŠ¿Z¥8«Ö.Ë4)׎•ðÏvç*X¶ê¨† Ž9uï%[…û¹&ÏAs`jÚ0[jŠdÈ*˜†þ’¶p@rÑÆ¼Ó͘¼t\s¡ÚÁÝkî·_Ð 4_H®f`«3ÉæRt¨Ùd®,e×A%0mEµ¹+\[€k‚#Ý©àj •w›„ÀYêîöš&Û¦ª«²k›†&;àÌ%]ÃtáV…¹ª+ kÒ­®rHÉxE³Q{HXš!~ S¤i8ê¿KŒ\“tP¤…4Sz³H ¹€¬‹°mÍ¡¦¶¹ ®ˆ .åΜ‚³Ä¤Õ9” e$B‚¥£ÂBRT¸}Øg‹,hQ$KpÛç‹`%ÍP ÈV1I—HŠ–9Év&ÿ|Cú½·aDÅŠÁ›&/^>žnÞô{ýÖÆÓâ0w¿ì˜Âžh÷—'O‹ /RvÝïá®ýN«’4µf–f¶ÕjIS­ß ãœÊÁs®Nú½¯ýΈÉù\¡mâÝùQÁàÆÜàmø´BHE½]Îè7ÀŠ=ëÁÉ5_e1Nz£¿Ž¼ô²þÑIŠ4`ú®•Ð3ùäº%£÷Kœ5(?ãýø4’‚( >AÆ!(ƒÖB%|³$mà’ÔCñ¤a³Û °êi EFŸVÂ#›Ô Y²n…ºLŽKpÏÃDA5hp„Vcÿ1óS°|BÀjº TªÂ(õƒF°¯?D ¢zèGáâx"¤°ÃfOšüޱ#E>øñeRr¤N+9Òr'OÄå¿C’ºðâgHÒ/®\äí[2äòŠˆ)L—áù¯0ª^½ñu—²¦x«#W{³È1”N3še•½{V‘m¬"Š:­4 ³£?¼Ë•Æ ‘'jÛ‰ E9Kcº–ö‚+ŠÏÛv¢îÃw‡@Œó½S/€vX±… ‡}wp|'· ˆµ .8’"Æ6¢[<¯Ø¾.²X‘·«‘Wß•l·D§Âš†Î™fÓÜ píÙBàØ38ò0.<·ÔA}hxh'Š$åtñ.«~"¡‘¸¬ÿ&‰VÞþ*q}Åá_zX‰RCw~\yV4‡æ[‡vãZÓ`+בsé>OÉß>ЩZÃtßñb 6ôë¥r4ã†è,G;áÝÅl6Ù+Û‡L¤¿K·­°>oðKz09¡÷¯âfWžV÷>6<¶i5} }ß6Z°‚ '3–O#ò"ã’©.ÍW°v»( üŠçƒu¿€,\Ç"Ž?üßy˜åIúåŠÞ±ggTŠ¿Z¥8«Ö.Ë4)׎•ðÏvç*X¶ê¨† Ž9uï%[…û¹&ÏAs`jÚ0[jŠdÈ*˜†þ’¶p@rÑÆ¼Ó͘¼t\s¡ÚÁÝkî·_Ð 4_H®f`«3ÉæRt¨Ùd®,e×A%0mEµ¹+\[€k‚#Ý©àj •w›„ÀYêîöš&Û¦ª«²k›†&;àÌ%]ÃtáV…¹ª+ kÒ­®rHÉxE³Q{HXš!~ S¤i8ê¿KŒ\“tP¤…4Sz³H ¹€¬‹°mÍ¡¦¶¹ ®ˆ .åΜ‚³Ä¤Õ9” e$B‚¥£ÂBRT¸}Øg‹,hQ$KpÛç‹`%ÍP ÈV1I—HŠ–9Év&ÿ|Cú½·aDÅŠÁ›&/^>žnÞô{ýÖÆÓâ0w¿ì˜Âžh÷—'O‹ /RvÝïá®ýN«’4µf–f¶ÕjIS­ß ãœÊÁs®Nú½¯ýΈÉù\¡mâÝùQÁàÆÜàmø´BHE½]Îè7ÀŠ=ëÁÉ5_e1Nz£¿Ž¼ô²þÑIŠ4`ú®•Ð3ùäº%£÷Kœ5(?ãýø4’‚( >AÆ!(ƒÖB%|³$mà’ÔCñ¤a³Û °êi EFŸVÂ#›Ô Y²n…ºLŽKpÏÃDA5hp„Vcÿ1óS°|BÀjº TªÂ(õƒF°¯?D ¢zèGáâx"¤°ÃfOšüޱ#E>øñeRr¤N+9Òr'OÄå¿C’ºðâgHÒ/®\äí[2äòŠˆ)L—áù¯0ª^½ñu—²¦x«#W{³È1”N3še•½{V‘m¬"Š:­4 ³£?¼Ë•Æ ‘'jÛ‰ E9Kcº–ö‚+ŠÏÛv¢îÃw‡@Œó½S/€vX±… ‡}wp|'· ˆµ .8’"Æ6¢[<¯Ø¾.²X‘·«‘Wß•l·D§Âš†Î™fÓÜ píÙBàØ38ò0.<·ÔA}hxh'Š$åtñ.«~"¡‘¸¬ÿ&‰VÞþ*q}Åá_zX‰RCw~\yV4‡æ[‡vãZÓ`+בsé>OÉß>ЩZÃtßñb 6ôë¥r4ã†è,G;áÝÅl6Ù+Û‡L¤¿K·­°>oðKz09¡÷¯âfWžV÷>6<¶i5} }ß6Z°‚ '3–O#ò"ã’©.ÍS[øŽÙ}«"Tµ Õ¡/æø¤o1„ªöÌ~Ló\¬Œ®€Ù°º]Ë®ÀUWàº+pó“¥§>ëÛ„ªöl˜æßŒ£^ó¨×:ê½ÐJõ—8j$vSMYÒ— ¡Z*<²µT;"ZÆ¡išÖ¡©oÍxÂÂNû"$P1 Å6ÛRì žTì+žVìÅþ¤ØŸµ3xï“¡ZªØÖo‚µD¾F’¢É×KJHÄuë¸Ç$¡oÆùÆcé›Oúö¡ªm¨ýIl“ o1„ê_]Ž~_¼¾ŽýLqï£Ák©˜Õ{¯"Tµ Õ¡ë%ЀvïõGl{Ïœý¡¸]Ó,ŸÙåsU§+X–âïÈçÏðOºÚxÿ§û߇}|{“ÙÝö“÷à€Óº2 y‰|‘-¦ç×Çî>×ð^§öïnÛ«×±~þ¿B8òb;b}éõPKxºZ<ÌfØ+=(IAR-STR912/examples/ADC/polling/91x_it.cUT “LjK“LjKux êëÕ›]Oã8†ï‘øG³73#Digö‹»¸­¥|”ĥà ©™F*I×q`Ðjÿû;šÂ^0k9êEeû=>ïS÷8±ÚÁçW.øè~7š]Æt2e0:9ù ä™(ùšgR”EžUðšôðà3Œó5‡0½åðtŸÃW¹<ÎÔ§–«RÀîu ë³Ù¬ó,•yYãé­쥒cHQI UUó%>ùu0üc ó:… .*%Ÿèñ¼ÊD¾Ñ1žƒ§y´\ˆz#!áâ.Ï8Äe-ó‚WÇ(|çK¥‚[åÜ( YZÀ5‡ºB²„¥NÒõäŠÿ‘quU}-¶™mÃÈU*á6}€2Ëj÷¹\¡!Œ% }fv¼½XñpºüÉð Gñ¢:Ò3Uå¼OÇ08÷µH‹li-Ë[Œ’a>³–z|V Á«MY,óâ;l3ƒ4Ãvݲö<Û®‘Rlƒ¬Ët‰–1]5hæ‚àßó ‡?!âpS®×åýNø T‚Š ¿Ýȇ£Æ«bx/r©rZ*Õã$;ðVi±\ã’@KØp\ +.Òu4>Îñg}äS´VЇSõWéh¤Véï­U:zìûúr·}ÿµºBÆlJ`“„„ ’hÌNL`1¥îhã(†ÉœzNèˆBÿ$à0ÔDÔ£áÜy¢€Ä ,(›ª˜n¤;hˆòÀa4 !&'Ö­8!•Ü›»,ÁAʼnõTØ‹ q.0cp]20@2÷Ù‘*DÔ#â—ÅQHÝ’©ãûF ÎL‰ïO3ŸèNx qôÎÕ¼S±Ë„œÏÑ9u|ðœÀ™Æ„šm†U.*€ë7¶cš( ã8 48ŒÀP®ã!™#´'†Nè K0OŽGàìr‡*šû°„!shH<4„„/l 1)…S'Ù&ùþ+zpxðK^dë¿k¶|õáðàð`ðÎ3ém£.2]µ›­ãæÅ’ß`-X^M›ïô+åýt[aµOüªWRÔMëSyÐ5‡›Zîn=aYpýÖr·ç¹#æ²ÅËŽ÷½÷]™/_úþ¨š?ü}xðÏÿÄ>YÐ7Pojn…*ËPïØ4y&ø —Ùªé J¥ÒBz] iö}ãØ; [ðËT¦V2o6|LÏ;àF•eœw| ¼ð&Wx£ûvÐêæÅ;wñ‚ÿUóJÚÀ¼íÚÈvÙ:nšVBoy6QÁã þÖ»–ÛI~ß¹ø¬|f/|f>>Ÿtg¯Ôv¢ßóm†ü°ù¡µä‡ÆÉz‘YK~dœü—^ä¿XKþ‹Yòóäl:ëŽ^Ëíd¿ïÜ |¿|ß^ø¾aø‰;ïñ@åÎíßvm; ëÎ]©í¿çÛy/pºƒG±ÜÛ® `w°;vÛ‰½íÚöÀíN=pí„ÞòlâÄÆëÅvRo»6qéĬÇa–Û‰~ß¹!ø=Îk´Ü^ø†OlT =Žl´Ü^ø†mèÈíQu”ÚNô{¾ÍïQr”ÚZò† N’Ìz¬y¥¶“üžo3ä{¬y¥¶–¼á5ï_xÝÁ£ØNîmװǬÇÊíÄÞvmâ×M´Ç±0ŠíÄÞvmâXø£}b½ð_x7Å¿ÇÛè-æox“Õ9ôx”môó7ü0«sèñ„Fo1ó¿CXôØxµÜNúûÎMüId|~ÖãfSËí„¿ï¼ ÿuüoùë2 =õ¼1õÉvÚPK wºZ<IAR-STR912/examples/WIU/UT ’LjKʈKux êëPKwºZÀ4Ë5Dj«á¸& ´J·Ú©_j2q›zSx½&z>¸»]ž-U•H­¶dì«Z#¨©jàUÕ蔌¯? G[jxЦ"‘sÝ:èji²] rD½Y® Þhxä `/j»Ëµƒ~¿y“yVÕ¥ù9¡od<ãÏogÍfÔŸýW¦€±œ3¸,a‘„$žÊGW0xœso0 ^{ÒEÜ”{¨KX–Å*[7Fƒ*`¯¾ëfYQkcš] ¶•g…v€xqO°Wí5î­ÉÆ·pÁ^ЭP9¬M‰û7—èp„O)˜m­u¡ ÍŒv ƒŒ´Zn`¥rD[ƒNׇ ú•ÂÖLAŽx¶…àŽÅûþÆÃ>ËsxÖø¿^£Ó«AæïŽ mèû]„½”(õù}~¶¥ê34©8~fÊ·ÖE]« YÞŽ^¾‘&ÎøÙ(ôñzºé»Â)n[[•β›¡!~S!׆æ2!duwÆÄ7ªHsœQc®LºWXQ]üÈðÍØ"¡³½‚ŒDDQwMµ<7u,HÐÏÎ'Øaè‹»ÉAJ%R܎ƃä+<—åEAËcQIŠliÂ÷}áÀÛ(Þ¥C¹ZtÚ¸!§#ø€»¢ÐæÓujSa¥Þ'b[Ø%¥Iµ!“-V¬åÙ«ûÒ|¿‚ŸeÛŸ±´«÷ªÌórOœþDÓ¥×·7mž½Åÿçf‘O£eÊv˜òÿPKwºZ<3ÈjÜ<IAR-STR912/examples/WIU/wiu.ewdUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKwºZ<ÏjUqLIAR-STR912/examples/WIU/wiu.ewpUT ’LjK’LjKux êëí\moÛ6þ¼ûBÛoëüÒvX xÅiµÚ±a;Ù0h‰–ÙʤFQ޳_¿#%ù-–솢 sÝ@/Þ‘<Þ=<¹óÛzZ+ÌcÂè¯ÏÚÖ3 Sù„¿>#1ûéíÛŸßýÔ~öÛû¾ÿáûNÄÙgì 8±¬Îœ„ø6}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Ä³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿºÓ<¸²)é#6gp¾Ê5ðªÓ\†Û÷ˆŠkF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ;(Öi¦vjm>ª¶h0û|Óê‘Xœƒ$ËiBÝ"N +Ž!å½øó±Ý´¤ýZ³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø* CkÎø©ùÛл‰8S-£ÈÚñ-Tð!ž ñsCíjxó ÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑäòœ¡}cK,°Eåè­=ÁbsuÏi:?þhñT>+$3ã¶a]3+”«&¶˜Ï‘‡_ZNví%ÔhId3÷â$ŠêÞ2 ™=ÃãVġ޹…¨oÅ¢ó—êŠ-ðÚš‡ U,\0_wþ&޳|e{1 zŸÜÉôÒ½¸s¯»KèÛiúèôZ髱О&CÎüÄ™[SÜœ7×m[­‡b1†qé_<œü¦¥ œ9y}s4JBkÌ‹V«Õ–Ÿ–üª?ðó'»£Nä·ÕJO7Ol‹e…·—Z­‡ >Õ(¢KÑ,ÄJæìÿ®Ò¡—g,6è×€½KŸZ¾®ODÓ¤m<½k¿ºún<±²C}Y{쾇W8tsc¤·ì€ã¿ , ü~ôR͸Žs =f^=!˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁód¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@ÝŽöJ¦”6›´‹ep¼÷ dü%c/jÖ²ŽI@±? ¡Îì'Çá¿Â1Œ ÁÄCdvìça÷8ÅM/ÒÐÚƒ%4‰®]k:Ï8˜r¡=Ú¯¢¤† œ’„å®Ê‹+·×^\Ûýî‹«d~óhÕyG³”Dùˆ‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½*™!ÃÑà÷”Âk4ä—ä#âþÈ#ú«ˆð¡™†Wß&ׯ×PšX^Á`”Rˆ ׺ûƒ®âuîÿRÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽn3Õ³´µpGÄ4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"Jö?u‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºS©öª×ž>¡á€Ä°^ùÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÁŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}”g[¹0‰Qˆh7»vϮ޳ë£~aU\¡v¿Lo=ìBɼ“’ÓÞ€²Ý€2Ž·l‹A±¶ %–¡r>Ǿ‰1?«cnMݤZöÐÊ€ŒÑƒ‹ßÁð¯ Dë YAu3ƒ“Ù-• ý Ó‹³v˜'š·"—šj}™ž„¨/]À45ÓdÜ"¥š}vXôP9ñ´iáÜŒ'ƒS¼ÜW¼øƒ×BÒJ0Ë¡7vNvŠxK?ýÂýüHO„ ×ô‡z»ùÕ 7nïÒv&îàúrû|åEŒ }PÍæp÷6‹ÅæþæXOynϽþô0Š. ¤/=2s鶦¹Yû'‡/jƒí#XаÌ@hï„H¡Ô[BÒî`î+;ÇÊÞ“¤Áí­$ ·É%:eµ ‰ö ãhü°œ±Ðœ[¥€Fè>}¯Èèrµ• VdoMhvH‚’Íj¢YšU¤–©¨>ŠÌæ×¦ö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚfœH7§;ºS/º¬§W={ü±A¼y…9±‘÷Qˆ†•™/CÎŽ–]*øCÍÊ’¬*.ðL'ÑG-Æ›N âÓ(}` ×ø91ÔÃz{ä|to»ÕGöG)E£‘}ÖB»Œy2sƒ¤bíbœçÏŸßä~/öáÌØh¹¨€*`Ð:ÍÇ?xÔ 8K¢¼¼¿¥§~I頡ܺô¹;éÓaýôƒôç—žX_HfUV{I•Õ­ˆWeu’Ó)¬®ÓÜvر¾“–,‰žÐy郪Fz#Öh§ÂØþâ ÷DÚ…9¬XµMìéf·š²G—ˆÐãJz7ÿÉ0ùï_PK yºZ<IAR-STR912/examples/WIU/.svn/UT •LjKʈKux êëPKwºZ<6K‹¦6$IAR-STR912/examples/WIU/.svn/entriesUT ’LjK’LjKux êë­’ËŽÛ0 E÷BÅ6õ $f×ålÓfSèAe2Hhh]‡‰[mù–EéO,þÜY;A5ÊÀí$íŒmáw^Eˆ*CTHu©92½*M!ú/àHÔÞV°sè‡6­ã’ÞÊ‚HF™À!V¶â­Hž —-¸Ð*ýÜ×mW!-I›ƒÅÄ Èx’à3FRìMÞf_®bí9ä3·Ë}YGfŒvŒ#+%Y´µˆÑ©0oA¦@?ÐHÞ¿§ËPÚ·uh΢&ˆ‘ØëŒÌ®Êê‚emeÒ[ iKøÖ/k-sÞUó(Ñ©ªéâ¬ãÄÑI6v›ßô Ÿš+õ/‰„ú&‰Y9Ë¥u ³M`JÚF3BKìPK wºZ<'IAR-STR912/examples/WIU/.svn/prop-base/UT ’LjKʈKux êëPK wºZ<'IAR-STR912/examples/WIU/.svn/text-base/UT ’LjKʈKux êëPKwºZ<*1` {7IAR-STR912/examples/WIU/.svn/text-base/wiu.eww.svn-baseUT ’LjK’LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦<³T/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<ÏjUqL7IAR-STR912/examples/WIU/.svn/text-base/wiu.ewp.svn-baseUT ’LjK’LjKux êëí\moÛ6þ¼ûBÛoëüÒvX xÅiµÚ±a;Ù0h‰–ÙʤFQ޳_¿#%ù-–솢 sÝ@/Þ‘<Þ=<¹óÛzZ+ÌcÂè¯ÏÚÖ3 Sù„¿>#1ûéíÛŸßýÔ~öÛû¾ÿáûNÄÙgì 8±¬Îœ„ø6}ô}»ÓÜ=U÷=Fç$H8ù%¸HÑ¿¿Ä³$è4Õqv]0z Dò‚yQ{Ôß/Ø<,Ùñem²éAv5ÆB€ñA}0Å…{uÂ=ĽYmÚÿºÓ<¸²)é#6gp¾Ê5ðªÓ\†Û÷ˆŠkF{ÌC¡lãÞùN¹£B¨;,ûuæ¢t×xˆÄâ@”TxD¦æ;(Öi¦vjm>ª¶h0û|Óê‘Xœƒ$ËiBÝ"N +Ž!å½øó±Ý´¤ýZ³ºÔ‡&ô™‹åmi‚¸4J„µ:-l»TØjšáãØãD•)–ø* CkÎø©ùÛл‰8S-£ÈÚñ-Tð!ž ñsCíjxó ÕûÁa¸³ Q±ˆm]MŽ*È÷ÈlŒCXŸ.påM‡huÔÔÓžÑäòœ¡}cK,°Eåè­=ÁbsuÏi:?þhñT>+$3ã¶a]3+”«&¶˜Ï‘‡_ZNví%ÔhId3÷â$ŠêÞ2 ™=ÃãVġ޹…¨oÅ¢ó—êŠ-ðÚš‡ U,\0_wþ&޳|e{1 zŸÜÉôÒ½¸s¯»KèÛiúèôZ髱О&CÎüÄ™[SÜœ7×m[­‡b1†qé_<œü¦¥ œ9y}s4JBkÌ‹V«Õ–Ÿ–üª?ðó'»£Nä·ÕJO7Ol‹e…·—Z­‡ >Õ(¢KÑ,ÄJæìÿ®Ò¡—g,6è×€½KŸZ¾®ODÓ¤m<½k¿ºún<±²C}Y{쾇W8tsc¤·ì€ã¿ , ü~ôR͸Žs =f^=!˜yWw0ã8—xNèñ©šjO³ÏgÈ1°Þ,æFæÆaË%¦¢D Ê z 8“02ÞrL«Mô)^2J<£ZK‘p£ l¼UdÇqš˜1Kx™ÒJב^"þŨâ. Æà½qè$ƒA¤Òùq æÛ0J—sÆ bHˆƒ•^›‹°`= CXYÁód¶"ýèëT®^.3sòºç@Ú à{{0“ʇ¾ kÁÑ@ÝŽöJ¦”6›´‹ep¼÷ dü%c/jÖ²ŽI@±? ¡Îì'Çá¿Â1Œ ÁÄCdvìça÷8ÅM/ÒÐÚƒ%4‰®]k:Ï8˜r¡=Ú¯¢¤† œ’„å®Ê‹+·×^\Ûýî‹«d~óhÕyG³”Dùˆ‘ jÖF—zaRfÊu¥ÉÞÿÌÆž& &'&÷Q'ëZIâ½*™!ÃÑà÷”Âk4ä—ä#âþÈ#ú«ˆð¡™†Wß&ׯ×PšX^Á`”Rˆ ׺ûƒ®âuîÿRÒÛÚ¦}c×¥h|÷H(ºÊ¤gcpÌŽn3Õ³´µpGÄ4+gáä~©›’³kˆ÷ì4þ1à ,‰ +"Jö?u‘úÈãL:ïk²îà·¥ÿ›²4按ùc zm bPFjV0ÿ·kÀ(±ìºS©öª×ž>¡á€Ä°^ùÁXÑ6ÍÿÛE¤REí—Õ›1H)‘¨Í㤎ÁŽ; ]m »ŽJ*°ôÝ5ö înÒðÁŽcìT’$fÌî Q€{˜ba8"Ùc¼Õ™ Ù8B^éä{«;½ÿá¹A%«?if+AQÑ}”g[¹0‰Qˆh7»vϮ޳ë£~aU\¡v¿Lo=ìBɼ“’ÓÞ€²Ý€2Ž·l‹A±¶ %–¡r>Ǿ‰1?«cnMݤZöÐÊ€ŒÑƒ‹ßÁð¯ Dë YAu3ƒ“Ù-• ý Ó‹³v˜'š·"—šj}™ž„¨/]À45ÓdÜ"¥š}vXôP9ñ´iáÜŒ'ƒS¼ÜW¼øƒ×BÒJ0Ë¡7vNvŠxK?ýÂýüHO„ ×ô‡z»ùÕ 7nïÒv&îàúrû|åEŒ }PÍæp÷6‹ÅæþæXOynϽþô0Š. ¤/=2s鶦¹Yû'‡/jƒí#XаÌ@hï„H¡Ô[BÒî`î+;ÇÊÞ“¤Áí­$ ·É%:eµ ‰ö ãhü°œ±Ðœ[¥€Fè>}¯Èèrµ• VdoMhvH‚’Íj¢YšU¤–©¨>ŠÌæ×¦ö–õ ¸”‚Bòz%Ê<^\¿:ä:¹i_Ð-¦ØüJåÍO‡•Xr@:AÚfœH7§;ºS/º¬§W={ü±A¼y…9±‘÷Qˆ†•™/CÎŽ–]*øCÍÊ’¬*.ðL'ÑG-Æ›N âÓ(}` ×ø91ÔÃz{ä|to»ÕGöG)E£‘}ÖB»Œy2sƒ¤bíbœçÏŸßä~/öáÌØh¹¨€*`Ð:ÍÇ?xÔ 8K¢¼¼¿¥§~I頡ܺô¹;éÓaýôƒôç—žX_HfUV{I•Õ­ˆWeu’Ó)¬®ÓÜvر¾“–,‰žÐy郪Fz#Öh§ÂØþâ ÷DÚ…9¬XµMìéf·š²G—ˆÐãJz7ÿÉ0ùï_PKwºZÀ4Ë5Dj«á¸& ´J·Ú©_j2q›zSx½&z>¸»]ž-U•H­¶dì«Z#¨©jàUÕ蔌¯? G[jxЦ"‘sÝ:èji²] rD½Y® Þhxä `/j»Ëµƒ~¿y“yVÕ¥ù9¡od<ãÏogÍfÔŸýW¦€±œ3¸,a‘„$žÊGW0xœso0 ^{ÒEÜ”{¨KX–Å*[7Fƒ*`¯¾ëfYQkcš] ¶•g…v€xqO°Wí5î­ÉÆ·pÁ^ЭP9¬M‰û7—èp„O)˜m­u¡ ÍŒv ƒŒ´Zn`¥rD[ƒNׇ ú•ÂÖLAŽx¶…àŽÅûþÆÃ>ËsxÖø¿^£Ó«AæïŽ mèû]„½”(õù}~¶¥ê34©8~fÊ·ÖE]« YÞŽ^¾‘&ÎøÙ(ôñzºé»Â)n[[•β›¡!~S!׆æ2!duwÆÄ7ªHsœQc®LºWXQ]üÈðÍØ"¡³½‚ŒDDQwMµ<7u,HÐÏÎ'Øaè‹»ÉAJ%R܎ƃä+<—åEAËcQIŠliÂ÷}áÀÛ(Þ¥C¹ZtÚ¸!§#ø€»¢ÐæÓujSa¥Þ'b[Ø%¥Iµ!“-V¬åÙ«ûÒ|¿‚ŸeÛŸ±´«÷ªÌórOœþDÓ¥×·7mž½Åÿçf‘O£eÊv˜òÿPKwºZ<3ÈjÜ<7IAR-STR912/examples/WIU/.svn/text-base/wiu.ewd.svn-baseUT ’LjK’LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,·[-a»Ñ2N¤O%éx“I!À‡O俣Ã,¥®C(¨C2… ŒÁ¶rÚ¾}:¹8oÄ _äêC‰«Ìšf»kécîP¼HÕá raI]^‘}*Ò.9k±ÏÒAéÌ`•˜bE$¥YpÁÌüùõÄ­ƒJΆÿJ¿—™Ggz}ìÈ„Mì³Ü»Ž˜¾h–nh€¹‹ìËÔvš`ÎU€ìO† ŒÎ3œ1…sÈ¿U° ë˜!“9ó…à:"?©„gVÝ$âÉ,ÜpåÏ?@<ð)àãÊ€áÈ8ºñkÔíj2ÉaˆæÌC$‘/+¨7 Ò!“¶¸+0%åMÁ:fSˆpp¬©LiÅѦ þ,ñfÔÓ¬žqnZR"NGuÄùÊÀϘԤ‚ý0yhÙC x¥^zè9^ÄÑ -%óÁœ¿{Öè•£ q`±R$óÝ¢0_´}Q‘Ç]ÀNƒÎ3•¼š,k‚“z=Ï+yÕ£õ­ÕzÝjU±´;.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò×vÒ:<÷>½ìm½3JncXc¤¶$ ­ñ‹j^v•ð£3ÝPõ`tMJŒ¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Fw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ëµe†½úÍ8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òŸn÷•¾®>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHú’4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿã\~Ùú·½éÿPKwºZ<õ¾ €Êo:IAR-STR912/examples/WIU/.svn/text-base/91x_conf.h.svn-baseUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳdØNC –ꡚªÚ†ê0U‡¥:ô#šÎXØ«§Û—*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëÏŠÎÔª¥Ší›Z"_#IÑäë%%$âºçØa’Ð7ãÇ|ã±ôC‰gCç‹PÕ6T‡þD¶I0´Bõ¼œÁû¡úC™¥B¨–ŠYƒU!Tµ Õajs íß=êaŽØö¶3:ûM³p˦Y>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ7ê€Óº2 y‰|™­~¤çç×þV×ð^ªº7¸ÝìØ<âC8òz;a}õPKwºZ<´ùS‹˜Ñ=8IAR-STR912/examples/WIU/.svn/text-base/91x_it.c.svn-baseUT ’LjK’LjKux êëÕ›]Oã8†ï‘øG³70b[ZökØ«¤­¥|”ĥà ©¡‘BÒuœaÐjÿû;¥4…¹˜†Ë­í÷ø¼O];1MÿãŽìc°ÃéuDÆ ÃÓÓ? ¦~–ò’å,¼,²´‚·¤‡a”å ‚äÁ¦œÃ§Á×›LôRÙÁªÅ²ä°]ÎÁ·°V«òLÈœRõ<ȼeR,rœ`+†SaÉx’W@¢Ë—ÔG>Ak%:—¯q–‡r–þÙš¥Ãç¶ß^ÏàÁºí[³ûdL'.L#7v q8¢s+ra>!öH £0‚ñŒ8V`»Þ5XÄÁ¢¨ ¯ˆC‚1س˜†¾Å0't"cÚ¡j Ê}‹’0€È[‘ªÅI$åÎ̦1v‚0rÜH …m>ÐbëÊJ|·V¬Ö ϬWðå‡ÃƒÃƒþ;¤öºHÕªÝìç0+ìׂÅͤùN¿±¼Ÿ¯WØgíFƒ_õJðº©Ý,jÍ!ŪÛ{OPL}„µØnyiˆ˜¨yñºá} âþRf‹×¾dõñáÁ¿‡ÿý$öñœ|õfÍ­Peê-› O9»c"]îAz…R!µÜ–\†}׸ö–ĶøE"#™· k>"—{àF•aœ·|j U :‡©H'"|‚ûtüŠ’ïüHÛ=žå©x½”ŸÑÇÓSéãù‚§³½_Wýo—{›Îöxô <â'ßí·†Gà¶GÍP:®Ý!µ Ç$à:ö´ïƒ Ž{C-êtÁúÛ'ž/ániÐÃÀQÔAõ¾P×t O­¢AêIukh> ëYÄS¦p¯ ¾qC  }ÒTá‚ÀÚÁ±ŒBjz.±‰x®CMüžaÛà¸\èÛ›×6Q†sõPúXbQG¿ QtÓñÉ—!žœ6XFßè_Ÿ­ ¤ú"L[Û£¾)„ªå ¹|x5註]↚Öú½#c­wNÕg”ê6¨Ûßšö´ØšTH¦E^ïŒNš0¹áy}§Úð^j²ºñ¾Å“\£q¸¿÷·¼¬þ óÔ"×î|L´ûbÒÐWyÀ’1ŸäŸ ‹¾iÿá§…ˆ˜¾ÝÆlqäúæá•r¿u4Ìà;„ä*wÃ"Î!ŠÓè+dJ]‡›Ô ¶ÅŸy–Ц\ár[‚bÄ^ yd"Œá¾È$Ü×±V„ÏÐÖˆòÅg±Ç”Ùk–³'m‡ž¹éÅÕѹF]†;LS‘Ït×ÄM™$²(ML\øfÌB1e;½€©$7™À=Ï¡J{óiÜ Žê~úÔ¢ Á@k\ó¼!Wm:½Ð†ëUc^%š3)¤§R€«ÍÂà“ d<™étž¨•ÅÆÇˆ¾š2΋Á€Ug¤3À0dBÓ¼ †Ú•܆_Ùp*=-ƒavÂ¥{ “1°Šè 1Jœn㘉uµibu¸ëOúó_8ö6Úrû]¨Þ÷Y[VVâpm yVUùhFC¶ÞÍÿy ÚÖaÊ¢Ô:ZWèÁ×Ç4UÑÚkÛFLߨVó dÛ0¹?+ÅN^Ì“c8yi_Èÿg ’U‚VË›í ÂjeÀˆ,kaåªÑ»ÖåM¯„Pô¸nM³ÅTþ­âÊl[Á¬ÅEÑc¨Ëd^V•ï|¡pϲî›&¤îù¢U7K+j{ÙÔÙ÷›:ÛnêL›úqy½Ú#ÞžØØ|˜`Ø´«ôSä÷¦±Lpµ]pç ‹î<0Φ¼¢GÿÀPëÅË1U.k4Ý­VMÔ;¡†ä‚éKù¬eñY½j;¸Ø^Ôj”ebÃÉ\iX™HÞVªÑ'Û8ûüUb×IJH,µº5s9yQ÷טˆ´˜b™ ž ž¿®Ì€ òg@ƒ³ äŒy¬v¨÷ûüÜHm~ßb¡¦š q«^´1®Þò-q,ù{S‡Ú¤dð_PKwºZU :‡©H'"|‚ûtüŠ’ïüHÛ=žå©x½”ŸÑÇÓSéãù‚§³½_Wýo—{›Îöxô <â'ßí·†Gà¶GÍP:®Ý!µ Ç$à:ö´ïƒ Ž{C-êtÁúÛ'ž/ániÐÃÀQÔAõ¾P×t O­¢AêIukh> ëYÄS¦p¯ ¾qC  }ÒTá‚ÀÚÁ±ŒBjz.±‰x®CMüžaÛà¸\èÛ›×6Q†sõPúXbQG¿ QtÓñÉ—!žœ6XFßè_Ÿ­ ¤ú"L[Û£¾)„ªå ¹|x5註]↚Öú½#c­wNÕg”ê6¨Ûßšö´ØšTH¦E^ïŒNš0¹áy}§Úð^j²ºñ¾Å“\£q¸¿÷·¼¬þ óÔ"×î|L´ûbÒÐWyÀ’1ŸäŸ ‹¾iÿá§…ˆ˜¾ÝÆlqäúæá•r¿u4Ìà;„ä*wÃ"Î!ŠÓè+dJ]‡›Ô ¶ÅŸy–Ц\ár[‚bÄ^ yd"Œá¾È$Ü×±V„ÏÐÖˆòÅg±Ç”Ùk–³'m‡ž¹éÅÕѹF]†;LS‘Ït×ÄM™$²(ML\øfÌB1e;½€©$7™À=Ï¡J{óiÜ Žê~úÔ¢ Á@k\ó¼!Wm:½Ð†ëUc^%š3)¤§R€«ÍÂà“ d<™étž¨•ÅÆÇˆ¾š2΋Á€Ug¤3À0dBÓ¼ †Ú•܆_Ùp*=-ƒavÂ¥{ “1°Šè 1Jœn㘉uµibu¸ëOúó_8ö6Úrû]¨Þ÷Y[VVâpm yVUùhFC¶ÞÍÿy ÚÖaÊ¢Ô:ZWèÁ×Ç4UÑÚkÛFLߨVó dÛ0¹?+ÅN^Ì“c8yi_Èÿg ’U‚VË›í ÂjeÀˆ,kaåªÑ»ÖåM¯„Pô¸nM³ÅTþ­âÊl[Á¬ÅEÑc¨Ëd^V•ï|¡pϲî›&¤îù¢U7K+j{ÙÔÙ÷›:ÛnêL›úqy½Ú#ÞžØØ|˜`Ø´«ôSä÷¦±Lpµ]pç ‹î<0Φ¼¢GÿÀPëÅË1U.k4Ý­VMÔ;¡†ä‚éKù¬eñY½j;¸Ø^Ôj”ebÃÉ\iX™HÞVªÑ'Û8ûüUb×IJH,µº5s9yQ÷טˆ´˜b™ ž ž¿®Ì€ òg@ƒ³ äŒy¬v¨÷ûüÜHm~ßb¡¦š q«^´1®Þò-q,ù{S‡Ú¤dð_PKwºZ<õ¾ €Êo"IAR-STR912/examples/WIU/91x_conf.hUT ’LjK’LjKux êëµWMs›H½»Êÿ¡«rI\Y ðWâÛFbjùÐÂ`—O*,b6xmÖûë·,Å„TeG:¨»_¿~Ý ãñèìÈ‚÷ö°ÃÙCĦ.Ë0®!æ~¶( ±‹º,òlQÁ±ÔÓ“3˜dkAº°_·ðÙüg¾(òÕù“„mýT”Ð]·àÛççu¶Hë¬È‹t#ÁNZ $-«XUmÅR‚«‘ùiÔH»…;QV2Ã<7šQ-Êì¹!Ù³{Ùc™–/ Ed_¶eSãá¿xInVÕEùr+£PË’Bo„Z»ØåÛ&Ì×X_ƒÿƒbîR˜E4¦‡8œð{Q¸w™í‹aF0M˜C›Bx@˜á˜Þ1‡S°“˜‡>b¸gÜ•œvØX€é>á, ¢S5^,È"™î$6aäШ)…1x1¹£À™OÏÄͶA‚8ñøG¹™…Ô£6€Ù1Ä.ñ<Bc .õð{´¡$Á8,BôG¬Õþ’Œ²Ã ¦$Ø9#8Ä'SÚ6!«Í(µHÛkÛŽX,[˜D¡ß 8¦7|ˆÚ~†$pFmKÄ|âP?t¦…-‡:¬v„', 6Q~Ñ (9ÎFäá$ýŽžÈÏ»l•/Å æsù*£ˆÉŸò;te¹P¼§'#ÜR|+ʯåð¸]­D‰/î¦X øs‹oòR,ŠÍFä5ÔOVÅz]|Ëò/°–lmÍÑhÇ>~Íe¶;™ þQ`6ÔÚBU{n?¥y.ÖF_Àì X}‹¾Àe_àª/pݸùÁC§>:„ªö|œæ_£^ó¨×:ê½ÐJœ —8i$öSݳdØNC –ꡚªÚ†ê0U‡¥:ô#šÎXØ«§Û—*¦¡Ø¦b[Š}¡Ø—Š}¥Ø×Š}£ØŸû³¶ÓˆëÏŠÎÔª¥Ší›Z"_#IÑäë%%$âºçØa’Ð7ãÇ|ã±ôC‰gCç‹PÕ6T‡þD¶I0´Bõ¼œÁû¡úC™¥B¨–ŠYƒU!Tµ Õajs íß=êaŽØö¶3:ûM³p˦Y>·Ë—ªN×°*Å_[‘/^àït½ðþw÷ß]|{ŸÙß ºÉ7ê€Óº2 y‰|™­~¤çç×þV×ð^ªº7¸ÝìØ<âC8òz;a}õPKwºZ<´ùS‹˜Ñ= IAR-STR912/examples/WIU/91x_it.cUT ’LjK’LjKux êëÕ›]Oã8†ï‘øG³70b[ZökØ«¤­¥|”ĥà ©¡‘BÒuœaÐjÿû;¥4…¹˜†Ë­í÷ø¼O];1MÿãŽìc°ÃéuDÆ ÃÓÓ? ¦~–ò’å,¼,²´‚·¤‡a”å ‚äÁ¦œÃ§Á×›LôRÙÁªÅ²ä°]ÎÁ·°V«òLÈœRõ<ȼeR,rœ`+†SaÉx’W@¢Ë—ÔG>Ak%:—¯q–‡r–þÙš¥Ãç¶ß^ÏàÁºí[³ûdL'.L#7v q8¢s+ra>!öH £0‚ñŒ8V`»Þ5XÄÁ¢¨ ¯ˆC‚1س˜†¾Å0't"cÚ¡j Ê}‹’0€È[‘ªÅI$åÎ̦1v‚0rÜH …m>ÐbëÊJ|·V¬Ö ϬWðå‡ÃƒÃƒþ;¤öºHÕªÝìç0+ìׂÅͤùN¿±¼Ÿ¯WØgíFƒ_õJðº©Ý,jÍ!ŪÛ{OPL}„µØnyiˆ˜¨yñºá} âþRf‹×¾dõñáÁ¿‡ÿý$öñœ|õfÍ­Peê-› O9»c"]îAz…R!µÜ–\†}׸ö–ĶøE"#™· k>"—{àF•aœ·|j ~ 5•¸TUÕ9}òŽvGc „4»ÆÈ‹µý˜E‘éû“Åцã{ŽÇÓ`°=[ ;´‘{ŽGûmŠìpêÞ¢~¯­3ƨÈWAY­e~èC¿Çño›‰Pˆ€ñŠòŒ¥™!¤6„³„¼êŽÛ»n×mɽd›Ö œ»%ji¢Q*ƒM,j2!·!žÏ¤Ýí‘|vv`“ÈŒªL¤—ÃNR L¤4ZhI¹-¶-¦ºi”4¼ÍîR³,†Œ&¡Œe É%uücj/¦XêÂ=Ïæ×ï™|6õ´ªnT Oóeñäqq›Î¹§iþèé¹X{*Ë¥§u¾ª<>, O»­)­ì©/̀ع’Æk]¿kŠ*£hƒT AE-¸àq•iemƒi b—òPK wºZ<#IAR-STR912/examples/.svn/prop-base/UT ‘LjKʈKux êëPK xºZ<#IAR-STR912/examples/.svn/text-base/UT ”LjKʈKux êëPKxºZª‹x¹PKwºZ<*µªSp 8IAR-STR912/examples/.svn/text-base/examples.eww.svn-baseUT ‘LjK”LjKux êë½–Ïkƒ0€ï…þ"½¶®‡AY‹SV<¸–þÀK ¤1µÙL"1Îýù‹b‹c=d/¾§~ß#ðÞ,¾Xî|YRÁŸÝéäÁuÇ"¥<{vi)ƳÙãÓxê.æÃÁpj!?Êa¢CÇ…ï«6hB¤ÎóQ²=„Ñfý0€”+"eU(ˆR|ÐÑ„ÔðÚ[‚×GÜç"Ïui-MßÐvQ Wëx¼Nb¨(3 -×Ñ f†Õt•ŠÚ¤š½¿ÙÁ I““ü7ˆ7 „±S† ¯qOŒâ2lðýf@©LÛí–ea@HÂe¯‡ê43졆w顆fÖCI´‡5­þ&‘Âç—ŠæéÒfBr¢œ*=vº´~À#s?Ï×Þ]óŒ°#‘׸WV7Un•Ý;XðÍ*‰ZIHŽU¼ÛäÕàýPÜQêc³©Ô½hS§צNw¹M]3©mú¶iÓ˦NO7›:½-ëšmlSÙln›¾n¥ØVZ zIý³x¿m±.{ÙvÀëÿ/7×7PKxºZ<—{û›‰$IAR-STR912/examples/.svn/all-wcpropsUT ”LjK”LjKux êë­Ž½ Â0F÷M¨Ä tÅ>¤¼_ïëÐUKš¯4[ð¡M}hB—ùø°¼ M—F‰°Ç…m [N3|{œ¨<‡%¾LÂК2>GjþÖtÇn"NÔ@è²vü |H±Ï EüÎÜP»ì_ÿBõ~pÇ=îÌHtXĦ®& dŽ;d2Ä!,„¸ô¦ C´ØkHªiÏ`tqÊÐ¾Ž±%fØ¢rt‡Ö–‹`±©JsêÎóçOå³B2á0nkÖ³B¹jb‹Pùyø…ådÏ^@–ô@V3Œq+N¢ˆq¡ÒæI(ÈäNàŠ[‡:¦¢¾{ˆN_¨KÈ6ÃKk2$T¶XpÁ|Ýù79JÌâ•íÙ¨×ë|vGã wðìÖ½rn/ oÇiÑñ•ÒWm¦=Múœù‰'2·æps~¯½jÚÚh‹!ŒKÿüîTà×µf£Ö¨é¯¯©§×%1Gƒ$ıÆäh4MùiȯúÿW²u#¿Fz»*±Î–e^?j46 ø”£ˆ6E“+u˜[6•]=a±AçŒ>˜ûÔüµ}"º˜&‡Ñ†£ÁÛæÙåoÑ•]êËÚa?:xC7·Hzkxÿëèòo‡0‡B×qv£¤ûÍÙ"š·UG4Žs§„©ö4ûÌqúCë]ÂZand®`6Ÿc* * ªŠ3 #ƒ.Ç´ÚH—â9£Ä3ªµ Ç1 ŠÆ[9@vW¡9€²„™!} tà9âß*î‚ `.‡N2h$L*a/ˆS0߆QÚœ3nC’A¬ôÒ\˜ëYÂʪXžSéG_§rõré”™“×=… Ò܃™T48ôY Žz*9vfØ+˜RÚ”Ò&–ÁñÞA4A˜ À¨YË:$Å~?D„:3d°Ÿg€ÿNÇ0&w‘Ù°›ÇÞÃ4 7½hHCks –Ð$¸v¬é<#bŠM„öh¿Œ’ &pÊ»*Ï.ÝN{|~ewÛÏj¬”ùu˜L+Ï;š¤LÊGŒ|lPƒ°6ºÔ “"S®+M6ðþg6¶4Ñ191¹™â8Y×J&ï¬`†ô½O)W«É/ÉGÄ.üž"ú«ˆð¡™†Wß&ׯÏðš%X^Á`òˆ5—º›„®âu~0þ½ ·µMûÊ®KÐ øî‘Pt•IÏ0†à˜ ìÝkªf;h-êÁmÓ¬œm„“û£jJή Þ³ÓøÇ €ƒb°4&‚,ˆ(ØÕEê"3é¼k¬Éºƒß–þoÊÒ˜3& äË ôÚD¯ˆÔ,`þ'nV€Q`Ùu1ڪ^{ú„b€ÃZx÷cEÛ4ÿo"•Jj¿¬Þtˆ¡@ ‰Dm'uì v4ØIèj³íeTP‚¥o/±gpw“†wvcß ’$1cvߨÜÁ43ÃÉè0Æ]š #äN¾7ºÓûëO š(YýQ3[ ŠŠžè½Ã¶¥ “…¨€v³«a÷ìÊé=»:êVÅ9j÷ËôÖÃ&”Š<ž„¨/]Àô|¦É¸EJ5ùæ°è® râaÓ¹ŽzÇx¹Ÿxû/…¤•`–ColÜldñæ~ú…ôüJO„s×éuûz»þÓ ×nçÂvFnïêrótåEŒ }PÍêr3™Åb•¾ºÖSžÛq¯>ÿŒ¢ é{‡LÜ^º­inÖ~ãð]m°}Kí)”zUHÚ½#Ì})`§XÙ¹Wc‰öN’D[%:fÿ´ù‰öãhx7Ÿ°ÐœW¥€èGún‘ÑÕj*¬*0ÈC¼¡Ù! öBʈfYV’¦J º(2{¼65·,¨Å¥D’ÔkQæñºàùU!×Ñ=û²€n0Åæ*oz<(Å’ÒÎf÷À‰,…ù­zÏe9¾ìØÃ5âMKl̑չ ¤Šš+¬üœ¹<>hØX8FÂŽA®Jpäþc%@…Ç-ËÀÉÎÏÇéÑN¶‹½Ä1qãÓΗ‚VÉqæÌ@î¼´V™£ v"Ä+•x¾¶ï™ŽB@4¬Ì| èsp4oSÁï:hRtƪ”árÏôÚý¨‡ñÆc‚ø8J Œá?%†z`ToœîM»üÀ~/£h4°ÏZ¨Â`ƒc7ƒ1Ïe®T¨}çéӧ׹ߋ}¸36ZÎK h­úý=jœ%Qž_Æ÷_ÒS¿¦´ÓÐ{n]ZîVútADXmûôAúL¬/$“2«›{eÖ{I™Õ-HAëZõuíë:iÈ’è}—T 0Ðk±®@.Àô®pK¤M˜ÝŠUÛÄ–n6«)*:G„î/(ÉÝüWÃä¿PKwºZ<÷o18Ê!IAR-STR912/examples/MC/Readme.txtUT ‘LjK‘LjKux êëµVKoÛ8¾ð˜K€¤pdËNÚ$ÀIޏÑÃ+É1r*T™Ž¹ÕÃ¥¤$Þ_¿3¤·Ûìa.Ãô<¿ù†füá§öØÑâ1fw^ ÓÉä#$i rYó‚ç­¬+‘7ðžëpðæ¢àf%‡·u1ÏÖ%7Ú×–L¬®ÝÖ¾_7ØX»]!ò¬u)ÏJ2v²–cPÙ´Àš¦ãk2ž\ŽÍ«±‚v\6äaåÀ›\Š òý{a½vË1!¸¯Y¹+¸n¿xO4m-÷7´GÀÓ)þôàéAwñs1f¯û·BÿÄ©çÂ"v7L!‰æéÊŠ]XyÌö€%0b¸[2Ç m¢Ð‹ X)úDÌaáØË$7N(ÜŠ¥ž$¥`!ºVÊ¢b÷Ί•²˜Ü¥&hQ츱J…ºÒëÁ…”®¡Î&ÄÉÒOGt,™G®ïÚi…ÌN ñ,߇0JáÖÏõð™uë»*¤>‚Ãb´Q,ê˜a†‰ûÇ+g–ŽXwn¢+Àl ²B,ÀöuÙ1K¨„y„•b”¸‹æ,‘´7­Ðë’`™¸XŽ ·G¶Èƒ”š,íÈ…µXè:XPì"ILÉBEjòG&ý‰ÃA_`}¼MÃÁo?¯á ÝŠxoÞlë O[C^WñÔI~¸ƒ;Ž‘¶\f©Ÿx…[¼ñéVrŽÖ äU›Éýp°XЈ§*+šY‹ªá²… mD…£asZÃç9+:Yµ&»®ÑéÒ,ß’WËå&Ë9î`8Øfrý’!  ^Ó(HÑpaû÷°‘ü[Ç«|XKÃ[Š4½„Àûkt ÙU•¨ž kÁ4O3¸?èoW4|9õý Ð¨í Ö]»‡|Ÿ¼ʽ¯_òf‡V<óbOÙ.''#Ly¢<Í©qyÒã;ÖI4ë4yæÅ”4§Ž4¯ è‹AÖ^²g¾©e yVÁ š]‘í‰ š¼Þq²¦?GH„€s‹ZÕ"óÍ{-®Í×ÏÔLc à‹/vß\=Á7ø e&*#×s8À=ìdý$i¶SÑj£žÈn×Âk-pÐïÐ^= |wè ¼{àæ®ø¡äï9,D5½†ÓÅGc2öç¥wfôš™©5¦ÒøgF/7{)ɼ7ùt¢å3%?Ú_Í´ü‚ä«£ýÕ…–_*¹²Weé«@§Rü³žá€á %×\’I™}Õ'·' ^jùuûºƒ²Ãq]+í¦.Šú…Ná ÅÇÜ]«¿w%Þ¯r]‚­ oj.|ÚšºHÚêz•t¦KÁ9‰í5ua>üÙÇÃî*Tu#T«§ç³Ó$¯ÍéyrÌŠá¶ÆÞ–¸ÓÆý4м3aþËÿnèÐÈœ3ßÕo×ßPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/MC/mc.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPK yºZ<IAR-STR912/examples/MC/.svn/UT •LjKʈKux êëPKwºZ'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<÷o18Ê9IAR-STR912/examples/MC/.svn/text-base/Readme.txt.svn-baseUT ‘LjK‘LjKux êëµVKoÛ8¾ð˜K€¤pdËNÚ$ÀIޏÑÃ+É1r*T™Ž¹ÕÃ¥¤$Þ_¿3¤·Ûìa.Ãô<¿ù†füá§öØÑâ1fw^ ÓÉä#$i rYó‚ç­¬+‘7ðžëpðæ¢àf%‡·u1ÏÖ%7Ú×–L¬®ÝÖ¾_7ØX»]!ò¬u)ÏJ2v²–cPÙ´Àš¦ãk2ž\ŽÍ«±‚v\6äaåÀ›\Š òý{a½vË1!¸¯Y¹+¸n¿xO4m-÷7´GÀÓ)þôàéAwñs1f¯û·BÿÄ©çÂ"v7L!‰æéÊŠ]XyÌö€%0b¸[2Ç m¢Ð‹ X)úDÌaáØË$7N(ÜŠ¥ž$¥`!ºVÊ¢b÷Ί•²˜Ü¥&hQ츱J…ºÒëÁ…”®¡Î&ÄÉÒOGt,™G®ïÚi…ÌN ñ,߇0JáÖÏõð™uë»*¤>‚Ãb´Q,ê˜a†‰ûÇ+g–ŽXwn¢+Àl ²B,ÀöuÙ1K¨„y„•b”¸‹æ,‘´7­Ðë’`™¸XŽ ·G¶Èƒ”š,íÈ…µXè:XPì"ILÉBEjòG&ý‰ÃA_`}¼MÃÁo?¯á ÝŠxoÞlë O[C^WñÔI~¸ƒ;Ž‘¶\f©Ÿx…[¼ñéVrŽÖ äU›Éýp°XЈ§*+šY‹ªá²… mD…£asZÃç9+:Yµ&»®ÑéÒ,ß’WËå&Ë9î`8Øfrý’!  ^Ó(HÑpaû÷°‘ü[Ç«|XKÃ[Š4½„Àûkt ÙU•¨ž kÁ4O3¸?èoW4|9õý Ð¨í Ö]»‡|Ÿ¼ʽ¯_òf‡V<óbOÙ.''#Ly¢<Í©qyÒã;ÖI4ë4yæÅ”4§Ž4¯ è‹AÖ^²g¾©e yVÁ š]‘í‰ š¼Þq²¦?GH„€s‹ZÕ"óÍ{-®Í×ÏÔLc à‹/vß\=Á7ø e&*#×s8À=ìdý$i¶SÑj£žÈn×Âk-pÐïÐ^= |wè ¼{àæ®ø¡äï9,D5½†ÓÅGc2öç¥wfôš™©5¦ÒøgF/7{)ɼ7ùt¢å3%?Ú_Í´ü‚ä«£ýÕ…–_*¹²Weé«@§Rü³žá€á %×\’I™}Õ'·' ^jùuûºƒ²Ãq]+í¦.Šú…Ná ÅÇÜ]«¿w%Þ¯r]‚­ oj.|ÚšºHÚêz•t¦KÁ9‰í5ua>üÙÇÃî*Tu#T«§ç³Ó$¯ÍéyrÌŠá¶ÆÞ–¸ÓÆý4м3aþËÿnèÐÈœ3ßÕo×ßPKwºZ< 2m XtL5IAR-STR912/examples/MC/.svn/text-base/mc.ewp.svn-baseUT ‘LjK‘LjKux êëí\mÓ8þ|Hü‡øôe9t NÙlí¶j» '­T¹‰›R;ç8¥{¿þÆNÒ·mÓ²ŽƒtºRVIüòxÆöxæ±ÓÖŸËyh-0 £ïž4k'¦ó Þ=!1{ùæÍë·/›Oþ|ÿøÑãG­ˆ³oØpcY­) ñMZô}³Uß¼Ué£S$‰ü<¤hŽß_àI´êê:{. ½"yÆ<«=èng¬ïælù²6Ù‚ô"{c!@Šx§¾˜bŽÂ­:! qoF«ö¿jÕwž¬rúH ÕÜ/r œµê‹ÌüQqÅh‡y(”mܺßÈ·W•Â"±]g.J{‰ûHÌvDI…Hdj¾…l­zú`£Öú½jõ&ßN‚lš@‹Sd>M¨Ä tÅ>¤¼_ïëÐUKš¯4[ð¡M}hB—ùø°¼ M—F‰°Ç…m [N3|{œ¨<‡%¾LÂК2>GjþÖtÇn"NÔ@è²vü |H±Ï EüÎÜP»ì_ÿBõ~pÇ=îÌHtXĦ®& dŽ;d2Ä!,„¸ô¦ C´ØkHªiÏ`tqÊÐ¾Ž±%fØ¢rt‡Ö–‹`±©JsêÎóçOå³B2á0nkÖ³B¹jb‹Pùyø…ådÏ^@–ô@V3Œq+N¢ˆq¡ÒæI(ÈäNàŠ[‡:¦¢¾{ˆN_¨KÈ6ÃKk2$T¶XpÁ|Ýù79JÌâ•íÙ¨×ë|vGã wðìÖ½rn/ oÇiÑñ•ÒWm¦=Múœù‰'2·æps~¯½jÚÚh‹!ŒKÿüîTà×µf£Ö¨é¯¯©§×%1Gƒ$ıÆäh4MùiȯúÿW²u#¿Fz»*±Î–e^?j46 ø”£ˆ6E“+u˜[6•]=a±AçŒ>˜ûÔüµ}"º˜&‡Ñ†£ÁÛæÙåoÑ•]êËÚa?:xC7·Hzkxÿëèòo‡0‡B×qv£¤ûÍÙ"š·UG4Žs§„©ö4ûÌqúCë]ÂZand®`6Ÿc* * ªŠ3 #ƒ.Ç´ÚH—â9£Ä3ªµ Ç1 ŠÆ[9@vW¡9€²„™!} tà9âß*î‚ `.‡N2h$L*a/ˆS0߆QÚœ3nC’A¬ôÒ\˜ëYÂʪXžSéG_§rõré”™“×=… Ò܃™T48ôY Žz*9vfØ+˜RÚ”Ò&–ÁñÞA4A˜ À¨YË:$Å~?D„:3d°Ÿg€ÿNÇ0&w‘Ù°›ÇÞÃ4 7½hHCks –Ð$¸v¬é<#bŠM„öh¿Œ’ &pÊ»*Ï.ÝN{|~ewÛÏj¬”ùu˜L+Ï;š¤LÊGŒ|lPƒ°6ºÔ “"S®+M6ðþg6¶4Ñ191¹™â8Y×J&ï¬`†ô½O)W«É/ÉGÄ.üž"ú«ˆð¡™†Wß&ׯÏðš%X^Á`òˆ5—º›„®âu~0þ½ ·µMûÊ®KÐ øî‘Pt•IÏ0†à˜ ìÝkªf;h-êÁmÓ¬œm„“û£jJή Þ³ÓøÇ €ƒb°4&‚,ˆ(ØÕEê"3é¼k¬Éºƒß–þoÊÒ˜3& äË ôÚD¯ˆÔ,`þ'nV€Q`Ùu1ڪ^{ú„b€ÃZx÷cEÛ4ÿo"•Jj¿¬Þtˆ¡@ ‰Dm'uì v4ØIèj³íeTP‚¥o/±gpw“†wvcß ’$1cvߨÜÁ43ÃÉè0Æ]š #äN¾7ºÓûëO š(YýQ3[ ŠŠžè½Ã¶¥ “…¨€v³«a÷ìÊé=»:êVÅ9j÷ËôÖÃ&”Š<ž„¨/]Àô|¦É¸EJ5ùæ°è® râaÓ¹ŽzÇx¹Ÿxû/…¤•`–ColÜldñæ~ú…ôüJO„s×éuûz»þÓ ×nçÂvFnïêrótåEŒ }PÍêr3™Åb•¾ºÖSžÛq¯>ÿŒ¢ é{‡LÜ^º­inÖ~ãð]m°}Kí)”zUHÚ½#Ì})`§XÙ¹Wc‰öN’D[%:fÿ´ù‰öãhx7Ÿ°ÐœW¥€èGún‘ÑÕj*¬*0ÈC¼¡Ù! öBʈfYV’¦J º(2{¼65·,¨Å¥D’ÔkQæñºàùU!×Ñ=û²€n0Åæ*oz<(Å’ÒÎf÷À‰,…ù­zÏe9¾ìØÃ5âMKl̑չ ¤Šš+¬üœ¹<>hØX8FÂŽA®Jpäþc%@…Ç-ËÀÉÎÏÇéÑN¶‹½Ä1qãÓΗ‚VÉqæÌ@î¼´V™£ v"Ä+•x¾¶ï™ŽB@4¬Ì| èsp4oSÁï:hRtƪ”árÏôÚý¨‡ñÆc‚ø8J Œá?%†z`ToœîM»üÀ~/£h4°ÏZ¨Â`ƒc7ƒ1Ïe®T¨}çéӧ׹ߋ}¸36ZÎK h­úý=jœ%Qž_Æ÷_ÒS¿¦´ÓÐ{n]ZîVútADXmûôAúL¬/$“2«›{eÖ{I™Õ-HAëZõuíë:iÈ’è}—T 0Ðk±®@.Àô®pK¤M˜ÝŠUÛÄ–n6«)*:G„î/(ÉÝüWÃä¿PKwºZ<`?(ðÈu9IAR-STR912/examples/MC/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµWKoÛ8¾È —6h£G^mn´D[Äêá©9ŠM7ÚÚRV–·Mý¥ØUKU–öA3óÍ7‘cÚ89°à­óœhz³‰'À6ÍKà"Èæe!Wr^•EžÍ7pÈõøèÆÙJB˜®%ì×5|²¾ÍæE¾<}P²­ŠÚëÇòø¸Êæi•9™®ØM+‰¤å¦¶ÙlåBÍ ÃúhÔ©]Ã,7ÊÃ:5k¹™—ÙcM²g÷³û2-Ÿ@%‘}Þ–uŒS„ÿæ¥ð²MU”O×êµm•èÕ‹DííüuÖ³­«À?±ð(LcÊi(€GcqKb ·s<`ÆQ “„¹$t(D¡„ˆ@Ÿè†¹,œ€“p4æpË„§8¨6°Ý"XBL'$®µÅÊÝMÁQìÒ¸…¶DœÜP, §@x½m€'¾x¯¶#sâˆúÔq2‡÷ˆïC Qð¨ï‚ÏÈȧ5% ïÀe1¢ßc¬æI1¢É‰BNÿN°rF|pI@&´)BE›"P墿);f\•0Ž£ n2t¯ùÆÀlÚ¾‡$t¦$H8…€¸Fw­n¡Gá7«ia( ©‹Å›„_Ô…˜”jgäËNþþm©Ï›l™/äf3u”1‰ñ ßòTe¹Ô´ÇGn©¾åÈr¸ß.—²Äƒ».þÙâI^Èy±^˼‚êA²X­Š¯YþVŠ­‰i;öѳÿ3³Óò¬ñ÷½¡*àq»Ó6‡c—8²ÒlB+â´.%“†³kñFd::8ëvÝùA8kÐTæÕø†9C£"T—M]ÑÌ ÈÐ`Õå™óæ¹\™]«Ë`wκ ç]†‹.Ãe—áê'¯žlhSªË³Qš1j­ƒZû ö¬7ÅñðÇuŠÝT·,J…Ð^*ÙC©ªË¦®°t…­+ú›4™²¨3£5ÃPMM¶4ÙÖä3M>×ä M¾Ôä+Mþ¨ÉŸz+Åà™Ð^*îôo‡={‰‚ž”^ý %$}o±U›‚¾R˜¯4Ö+Ýß>Ú]„격+ú'²C¡ÁÚÿæÞíîdðp'½TÌœBuÙÔVï0ÒîÝ£sÄ6wãäCÏÂ-›fùÌ)Ÿ6Uº‚e)ÿÝÊ|þÿ¥«­„·yßßµñÍ­fj;·A›Ó¾0M5‚d¾È–?Ëç××þnWó^­Ú÷¸Ý5ìP?á" ]uÉ3Ÿ>÷úPKwºZ< nþn-=7IAR-STR912/examples/MC/.svn/text-base/91x_it.c.svn-baseUT ‘LjK‘LjKux êëÕ›]oâ8†ï+ñŽfofFU)Ì~r—&¦XÊML™^Uip‡H4a§jµÿ}J í^”tÆrIJýŸ÷Á'ô?¿rÁG÷¸Ñô*¦çÃÓÓß!aAž‰’¯x&EYäY¯I{GŸaœ¯8„é‡í5‚¿߯sy’©N-—¥€Ýkë³^¯ò,•yYãé쥒cHQI UUó…|ú[ðg_'6‚K.*¥œœj¯2‘¯uçèi^-$¢^KH¸¸Ï3qY˼àÕ ßùR©àÅ–y·ŠH–pá®Ð‚,a¡ÓĆtµ¹äÀ¿g\g]AU߈Mf›0r™J¸K¡Ì²ZÀC.—hc HŸ¡lFÏ—¼œ.ß^â(^TÇz¦ª¼•©àç¾i‘-!­ey‡Q2ÌçñiÖRÏJ!xµ.‹E^|ƒMffØ®[6Þg»ÇERŠMU™.Ð2¦«M]ü[^áГ-"·åjU>섯@%¨Øð»µ|Ak¥x©÷¸J‡CµJÿh­ÒáS߯/Wð`Ó÷«ûdÌ&¦1IHÈ ‰ÆlîÄæêN€&0Žb8ŸQÏ ]Qè_Cƒ†šè’z4<w–°( qsÊ&*¦é¢xNàœ“Æ„šmŠU.*€ë7¶cš( ã8 48ŒÀP®ã!™!´-C'ôú%˜%Ç#pvµC MŒ}X Â94$Š B¶…˜”©“l“|ÿÝïý’ÙªÆïÚ‡M_~èõŽúï<“Þ7ê"ÓU»Ù;F0+ükÁâzÒ|§_)ï£M…}Òn5øU¯¤¨›ÖmyÐ5‡ëZîî=aYpýÖr·ç¹#æ²ÅËŽ÷½÷}™/^úþ¨š?õŽþéýû“Ø'súêMÍ­Peê› O¿å2[@zR©´Þ”BZ†}߸öŽÂvøE*S+™· >¦àF•eœw| <÷ίñF÷í ÕÍ9Šwîâÿ»æ•´yÛµ‘íòpê¸iZ ½åÙDƒøëáØµÜNòûÎÍÀgÝà3{á3ÃðñÁøôpöJm'ú=ßfÈ:‘XK~`œü°ù¡µä‡ÆÉéDþ‹µä¿˜%?KÎ&ÓÃÑk¹ì÷›ïwƒïÛ ß7 ?qg¨Ü™àÛ® `'!a‡s÷”ÜNò{Æ  ÷§ùÀ±“{۵쮎Åvbo»6€=p§¸vBoy6qdãu€Žb;©·]›¸tbÖá´FËíD¿ïÜü6Zn/|ÃG6*…g6Zn/|ç6tèv¨:Jm'ú=ßfÈw(9Jm-yÃ'I¦Ö¼RÛI~Ï·òÖ¼R[KÞðš÷/½ÃÁ£ØNîm×;Øø˜uxœB±àÛ®MüÀ‰v8F±ØÛ®Mœ e´Ëcl£·þ ï¦øwØb½Åü o³:‡³Þbþ†gu~†Ðè-æoþ§ó¯–ÛIß¹‰ÿ‰Œ/Î:Ülj¹ð÷·á¿Žÿ-_&¡§þ†7¦>ÙLûPKwºZ<5§aÈÐý5IAR-STR912/examples/MC/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëµXÛnÛ8}´háYßÚ´» ú Hr,¬%yu±‘'A‘阨,º¤M·ûï;CJ¾ÅqÒu–y93‡3‡3:­Óê ¨öðÆ1®ûtÛíOàz&²”Å,*²4áQ»LN¡ÇcV8g°0yÒŒH¬”Å,Í`}\€©j ,1‚§ x,œ“² ³¼#ÏK6!åöy«ó{K¸u#–ådÑi¶…Ë£Œ/ÈÝ›ñ¦äV”&z’C1c§Óâ[˜1àóEÌæ EÂnŠî¡œàvS]™Æü6 ³¸gŸVÞ7Ñò•ùÒçy‘fôt»DÁç ºµìãcz:•ì)êþ½¾CGwuË×îycÅÑaÜ7Ô>.ôl®}CS,UÛÜ€b˜.(ÚØ#C3¬kP}׳MÝq nlx}ÌK!0,47ϰ-pôkÅ«¸¡á¹æ«ž‹J`;šîˆ­Pf‚gƒ«Œtð SoŠlÄ ÀõÞ%¹¡:¶>ÐUϱ-CuÁí+ƒX¶W:ôõC¹èR±n@3Ô>#,Ã’ÜÝ´\ý/#7”hŠ©\뮌w’úBê@†í.…Ðsl“|%@ñˆ;»®¤-9T,­%CßÕÁT4®nVl‘ %YÒ·_«–®a@ŽŽ$bÍB§H,œÜdòõ3ºu|ô–'Q\N¼ù£ó=ÀBjÎÞµÐ[)Éá·ƒ턈ÌßÓ]R<,Ø„MÞBD4ž°ƒ<ÝBœ‡xÓúâ}˜ñð6>„PBÄ›/0^xH¢†$VS·Èʨ(3v‰*×CÃÞPZ.¬«­ù6-“H\»‹,-R:Ÿ_ör+ÚñÀh óu‡èŽu¸²CÊθ£saOD‘r—É^h$‹²XošVšˆ&e—źd%pÒ<¼î@ªxRˆ8'ÇGsoù”ªLÓ¯|¼~hó »-ï'xöoY2áSÒpU?0ÕÁŸnZfSÓdÊïõb`»êÉ%·NýœN!”­ÁÃ2. ŠÓè+vc²>mA 9Dkßó<ÍÖ0i5Àå‚bº(Ž ClÛ‹ËÂnËœà¾N¤|ŽÈy¹…=_{±„ ¤ˆP•á•Dòj;0‚3Ð-ê´üC *‡O¿„Âf­B©Sfòå"‘DÅiŒj®!LÉvbS, 1;@ý´áçjÒŸËïîºàN– ´ðq]z{w¤«¡Þ’¾ƒa™Ï†eïµÒxÆd鬼•©¿×Ì"G Zâã±2\[BÔœa/„,Kðjù"¦rS\ü°iÕ¨Îéýcœ:d&MG!cþ£>7lâ…ZÛò”)ñÖϘ^³ŒVñI›•I“;Àì‡ÙDÅKÙQ+‹ÆûmÓµ+¨&nôâ‚ÜIõh?Õ£ç¹>Ó£ýL¿€’5BƇ2ÞOÈXòùyBƇ2>X5žÅêuÉTËWo–ºa©óIcëe"Ë»z©ñé”eX÷UgÉW¤ªEã¥"Ûi¾ðmÆcÖèÐôáÔ®Çø¯ü§J·4úYÜ3zõjýPKwºZÁôÙûPK wºZ<"IAR-STR912/examples/MC/.svn/props/UT ‘LjKʈKux êëPK wºZ< IAR-STR912/examples/MC/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<*IAR-STR912/examples/MC/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<*IAR-STR912/examples/MC/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<&IAR-STR912/examples/MC/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<©²]zœIAR-STR912/examples/MC/mc.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&7Y/µ¼ÀF, V®¬Þ&)±$9é43'E(`£l6PKwºZ<5§aÈÐýIAR-STR912/examples/MC/main.cUT ‘LjK‘LjKux êëµXÛnÛ8}´háYßÚ´» ú Hr,¬%yu±‘'A‘阨,º¤M·ûï;CJ¾ÅqÒu–y93‡3‡3:­Óê ¨öðÆ1®ûtÛíOàz&²”Å,*²4áQ»LN¡ÇcV8g°0yÒŒH¬”Å,Í`}\€©j ,1‚§ x,œ“² ³¼#ÏK6!åöy«ó{K¸u#–ådÑi¶…Ë£Œ/ÈÝ›ñ¦äV”&z’C1c§Óâ[˜1àóEÌæ EÂnŠî¡œàvS]™Æü6 ³¸gŸVÞ7Ñò•ùÒçy‘fôt»DÁç ºµìãcz:•ì)êþ½¾CGwuË×îycÅÑaÜ7Ô>.ôl®}CS,UÛÜ€b˜.(ÚØ#C3¬kP}׳MÝq nlx}ÌK!0,47ϰ-pôkÅ«¸¡á¹æ«ž‹J`;šîˆ­Pf‚gƒ«Œtð SoŠlÄ ÀõÞ%¹¡:¶>ÐUϱ-CuÁí+ƒX¶W:ôõC¹èR±n@3Ô>#,Ã’ÜÝ´\ý/#7”hŠ©\뮌w’úBê@†í.…Ðsl“|%@ñˆ;»®¤-9T,­%CßÕÁT4®nVl‘ %YÒ·_«–®a@ŽŽ$bÍB§H,œÜdòõ3ºu|ô–'Q\N¼ù£ó=ÀBjÎÞµÐ[)Éá·ƒ턈ÌßÓ]R<,Ø„MÞBD4ž°ƒ<ÝBœ‡xÓúâ}˜ñð6>„PBÄ›/0^xH¢†$VS·Èʨ(3v‰*×CÃÞPZ.¬«­ù6-“H\»‹,-R:Ÿ_ör+ÚñÀh óu‡èŽu¸²CÊθ£saOD‘r—É^h$‹²XošVšˆ&e—źd%pÒ<¼î@ªxRˆ8'ÇGsoù”ªLÓ¯|¼~hó »-ï'xöoY2áSÒpU?0ÕÁŸnZfSÓdÊïõb`»êÉ%·NýœN!”­ÁÃ2. ŠÓè+vc²>mA 9Dkßó<ÍÖ0i5Àå‚bº(Ž ClÛ‹ËÂnËœà¾N¤|ŽÈy¹…=_{±„ ¤ˆP•á•Dòj;0‚3Ð-ê´üC *‡O¿„Âf­B©Sfòå"‘DÅiŒj®!LÉvbS, 1;@ý´áçjÒŸËïîºàN– ´ðq]z{w¤«¡Þ’¾ƒa™Ï†eïµÒxÆd鬼•©¿×Ì"G Zâã±2\[BÔœa/„,Kðjù"¦rS\ü°iÕ¨Îéýcœ:d&MG!cþ£>7lâ…ZÛò”)ñÖϘ^³ŒVñI›•I“;Àì‡ÙDÅKÙQ+‹ÆûmÓµ+¨&nôâ‚ÜIõh?Õ£ç¹>Ó£ýL¿€’5BƇ2ÞOÈXòùyBƇ2>X5žÅêuÉTËWo–ºa©óIcëe"Ë»z©ñé”eX÷UgÉW¤ªEã¥"Ûi¾ðmÆcÖèÐôáÔ®Çø¯ü§J·4úYÜ3zõjýPKwºZ<`?(ðÈu!IAR-STR912/examples/MC/91x_conf.hUT ‘LjK‘LjKux êëµWKoÛ8¾È —6h£G^mn´D[Äêá©9ŠM7ÚÚRV–·Mý¥ØUKU–öA3óÍ7‘cÚ89°à­óœhz³‰'À6ÍKà"Èæe!Wr^•EžÍ7pÈõøèÆÙJB˜®%ì×5|²¾ÍæE¾<}P²­ŠÚëÇòø¸Êæi•9™®ØM+‰¤å¦¶ÙlåBÍ ÃúhÔ©]Ã,7ÊÃ:5k¹™—ÙcM²g÷³û2-Ÿ@%‘}Þ–uŒS„ÿæ¥ð²MU”O×êµm•èÕ‹DííüuÖ³­«À?±ð(LcÊi(€GcqKb ·s<`ÆQ “„¹$t(D¡„ˆ@Ÿè†¹,œ€“p4æpË„§8¨6°Ý"XBL'$®µÅÊÝMÁQìÒ¸…¶DœÜP, §@x½m€'¾x¯¶#sâˆúÔq2‡÷ˆïC Qð¨ï‚ÏÈȧ5% ïÀe1¢ßc¬æI1¢É‰BNÿN°rF|pI@&´)BE›"P墿);f\•0Ž£ n2t¯ùÆÀlÚ¾‡$t¦$H8…€¸Fw­n¡Gá7«ia( ©‹Å›„_Ô…˜”jgäËNþþm©Ï›l™/äf3u”1‰ñ ßòTe¹Ô´ÇGn©¾åÈr¸ß.—²Äƒ».þÙâI^Èy±^˼‚êA²X­Š¯YþVŠ­‰i;öѳÿ3³Óò¬ñ÷½¡*àq»Ó6‡c—8²ÒlB+â´.%“†³kñFd::8ëvÝùA8kÐTæÕø†9C£"T—M]ÑÌ ÈÐ`Õå™óæ¹\™]«Ë`wκ ç]†‹.Ãe—áê'¯žlhSªË³Qš1j­ƒZû ö¬7ÅñðÇuŠÝT·,J…Ð^*ÙC©ªË¦®°t…­+ú›4™²¨3£5ÃPMM¶4ÙÖä3M>×ä M¾Ôä+Mþ¨ÉŸz+Åà™Ð^*îôo‡={‰‚ž”^ý %$}o±U›‚¾R˜¯4Ö+Ýß>Ú]„격+ú'²C¡ÁÚÿæÞíîdðp'½TÌœBuÙÔVï0ÒîÝ£sÄ6wãäCÏÂ-›fùÌ)Ÿ6Uº‚e)ÿÝÊ|þÿ¥«­„·yßßµñÍ­fj;·A›Ó¾0M5‚d¾È–?Ëç××þnWó^­Ú÷¸Ý5ìP?á" ]uÉ3Ÿ>÷úPKwºZ< nþn-=IAR-STR912/examples/MC/91x_it.cUT ‘LjK‘LjKux êëÕ›]oâ8†ï+ñŽfofFU)Ì~r—&¦XÊML™^Uip‡H4a§jµÿ}J í^”tÆrIJýŸ÷Á'ô?¿rÁG÷¸Ñô*¦çÃÓÓß!aAž‰’¯x&EYäY¯I{GŸaœ¯8„é‡í5‚¿߯sy’©N-—¥€Ýkë³^¯ò,•yYãé쥒cHQI UUó…|ú[ðg_'6‚K.*¥œœj¯2‘¯uçèi^-$¢^KH¸¸Ï3qY˼àÕ ßùR©àÅ–y·ŠH–pá®Ð‚,a¡ÓĆtµ¹äÀ¿g\g]AU߈Mf›0r™J¸K¡Ì²ZÀC.—hc HŸ¡lFÏ—¼œ.ß^â(^TÇz¦ª¼•©àç¾i‘-!­ey‡Q2ÌçñiÖRÏJ!xµ.‹E^|ƒMffØ®[6Þg»ÇERŠMU™.Ð2¦«M]ü[^áГ-"·åjU>섯@%¨Øð»µ|Ak¥x©÷¸J‡CµJÿh­ÒáS߯/Wð`Ó÷«ûdÌ&¦1IHÈ ‰ÆlîÄæêN€&0Žb8ŸQÏ ]Qè_Cƒ†šè’z4<w–°( qsÊ&*¦é¢xNàœ“Æ„šmŠU.*€ë7¶cš( ã8 48ŒÀP®ã!™!´-C'ôú%˜%Ç#pvµC MŒ}X Â94$Š B¶…˜”©“l“|ÿÝïý’ÙªÆïÚ‡M_~èõŽúï<“Þ7ê"ÓU»Ù;F0+ükÁâzÒ|§_)ï£M…}Òn5øU¯¤¨›ÖmyÐ5‡ëZîî=aYpýÖr·ç¹#æ²ÅËŽ÷½÷}™/^úþ¨š?õŽþéýû“Ø'súêMÍ­Peê› O¿å2[@zR©´Þ”BZ†}߸öŽÂvøE*S+™· >¦àF•eœw| <÷ίñF÷í ÕÍ9Šwîâÿ»æ•´yÛµ‘íòpê¸iZ ½åÙDƒøëáØµÜNòûÎÍÀgÝà3{á3ÃðñÁøôpöJm'ú=ßfÈ:‘XK~`œü°ù¡µä‡ÆÉéDþ‹µä¿˜%?KÎ&ÓÃÑk¹ì÷›ïwƒïÛ ß7 ?qg¨Ü™àÛ® `'!a‡s÷”ÜNò{Æ  ÷§ùÀ±“{۵쮎Åvbo»6€=p§¸vBoy6qdãu€Žb;©·]›¸tbÖá´FËíD¿ïÜü6Zn/|ÃG6*…g6Zn/|ç6tèv¨:Jm'ú=ßfÈw(9Jm-yÃ'I¦Ö¼RÛI~Ï·òÖ¼R[KÞðš÷/½ÃÁ£ØNîm×;Øø˜uxœB±àÛ®MüÀ‰v8F±ØÛ®Mœ e´Ëcl£·þ ï¦øwØb½Åü o³:‡³Þbþ†gu~†Ðè-æoþ§ó¯–ÛIß¹‰ÿ‰Œ/Î:Ülj¹ð÷·á¿Žÿ-_&¡§þ†7¦>ÙLûPK xºZ<IAR-STR912/examples/SSP/UT “LjKʈKux êëPKxºZ<÷wò½I"LIAR-STR912/examples/SSP/ssp.ewpUT “LjK“LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFR®³_¿#%¿Æ–ÝPTa®HâËÃ;’Ç»‡”[¿-ç±³À\F}Ú¬5ž:˜,$4úõ)ìÕÛ·?¿{Õ|úÛûŸüø¤•pön§5%1¾Íоo¶êÛ·:=`tJ¢”#¹z)šã÷—x’F­º¾ÎŸKÆâ`†È*ã*«;èîf¬ïçl…ª6Õ‚ì"*°” …ث輦£x§NHC<˜‘źýoZõ½'ëœ!’h}÷‹•^·ê‹½ÌüQyÍh‡(VmܹßÊwP¹[çJ”ö÷‘œí‰’ /‘ÌÕ|ÙZõìÁV­õÕêM>ŸÙ :DÈsT>C¨[Ä tÅ!¤U/þ|¨C×-i¾1lÁ‡6 ¡ ]âãò6 A|š¤ÒYœ¶Y(l9ͱ8ÑyŽK|•Ʊ3e|Žôü­™ŽÝTž©†U äíø*øa_Šø½½¡vÕ¿ùŽêýà1Ž{Ü›‘丈MSMR*ÉwÈdˆcX/péMÆhqÐTÓžÁèòœ¡}#°#gØ¡jtÇÎŽ‹à°©NóêÞ‹Ïäsb2á0nkÎ5sbµjb‡P‰ùø¥ãåÏ^BŽò@Ö3ŒqG¤I¸Ôió4–dr/±€âNÂ¡Ž©ƒhèˆÑéK} ÙfxéLc†¤Î&$—,4ƒ‘§Å,^Ùžz½Î'4¾ôÏïükïîúvœ_k}ÕfÆÓ¤ÏY˜2wkŽ7ç§Ú›¦kŒÖABa\†÷UçN^—ŽiŒ…Á¼h4Mõi¨¯þÿ×ò}£¾Fv».±É–gÞ³|íÈ.¦éq´áhð®ùúê‡áÈÉ/Íeí°¯¼À±¿2FfË8þ›ÀòïF/Ç¢ßóö¤‡ÁÌëG3ïªf<ïO =ÇTTTgFÅ[žmµi.ÅsFI`UkEEã­ Wˆ*40C–ò"3d”­#±»vWa÷0‹Åm/Êкƒ%´‰®]k:Ï9˜ba<Ú¯’´‚ œ‘„Å®Êó+¿Ó_\»Ýöó+e~çÑÊóŽ&‰ò£[Ô ¬> â´È”›J“¼ÿ™Mô@LNlî£x^ÞµŠÄ{]0CúƒÞï…W«©/Yˆ}øEÌWB3-¯¾+˜•6¾…Ò,Áò†x£B¬I¼4Ýô5¯ó•ñ/½mlÚ×v]9€ÀwO¤¦«lz€1ÇLâèà6S5;AQîˆØfå\+œÜ/USrnñž›Å?<$ÀbPA$YY°ÿiŠÔEgÊy7X“M¿«üߌ¥±gL4È3dÑkÓ½"R³ €øŸ¸YFe7Åxx”j§zãéËŽˆ€µðî-ÆŠ®mþß=F*•Ô~U½íCƒ‰ÆõãÒ¬€›¦QBÌü›8²&ýôB–£ôÙbiÿƒNfÊ£?f9ócýÄ¿xz»#)ÄB‚¸;gœB˜äYBXÉ )ˆ»l|†¤í9ôÓð¼ f<‚Ä#¸y8°EtØ“Õc;ðEf}–F!”GH³{)‚¢c ò[&~EŸ»Žë ýËC;¹Îo/—ëkÕ‚Ä7ºyR¨âX“qÝlÁ4ÐJƒg‹¦ªºz7æÒl¥¬m¯šmã:ذh¡^ÂFêU£+2g´¨Û•Ô°ÒM‰h ~£A^Š'i…íAÿ‹ûƒ„ªÁu’»³)ŠÐ¸"“ÂxÖÏý¢©Wê±Ó8rD{¤yRÏúÚ*³Æø8W¦…¥0Zõ§D_èúìí²ÀÐãøØ:©¾ïu]§¥“ƒIÐ=tÇzÚVvln„6göˆ¡•hf£Ï7Ý ü\<?s Z.¤zBó¯ˆe“a½iœæûS‚Ž Q›µÔ¢´iêõQì$vNòçžØ 1É¥ëìyϼZPéI” ÍhJm¥ íέºˆ½·]iú)¾7¦Z¬üCR¾qþª „aºvü h%ævæû+[-{¢vÅt¶'gGLØ$ƒõPDHÒ¢”±@l¨ú(å®#ÕãÚXš¼}Z‰¹]y(öY?NÃø‡iès÷4Œ~˜†Ñé4ÀÿŸ‡‹£<àýL£ÅuB…1Ó…I­`dmÚS³Åu~?¦fñÖ±škÁÐ<ýèXᤗSÆ[Ð €¡A­»Á$ÖËïQש„ªûS@v(Ž©GM¯×™ ½Ü"9 ë'…/ž ᜜tˆ}׿ ’hAì÷¡ê–úrÕ”e³Å*Á·¼…†Í âß_ß]yïÞØÁEµÐo]â–÷R>a<#ù÷ù~ëÒ»:)ŸqFòWGòvëMœ¯9’ÿ`å”€MW–o»Í ùñ 9ÈߦáA~ÙlkÏÒÙù®•Ø&ãѶI£—ýà®Äi+fHlýå ¾6Töè²évG(\“ý·wõPÀöÊé+êÄ5öo^·Æ‚÷ò„ÅQÿ@ú PKxºZ<·¢ÅGØ<IAR-STR912/examples/SSP/ssp.ewdUT “LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPK yºZ<IAR-STR912/examples/SSP/.svn/UT •LjKʈKux êëPKxºZ<*ìþ§6$IAR-STR912/examples/SSP/.svn/entriesUT “LjK“LjKux êë­“?Û0 Åw¡_Å6Eý¡”­c·"ÉtK!‹T.mâ¶ÓËǯ®=èf´~“DÔïQ”âó¤,¢z]–qÞu]Çû"óÒÎ?‡v¾Ý§,å6¤déjmºÝ–gS·L÷áG7^ÒR›®s÷åó¾9÷Qc't/2w‡Ã×›®ª 6`4G;;í[räÀ¿(ƒN}OW™O“ Ãy8©¿E%ôšÆÔ!ï'Fh‚OB1 ;Û«OjžÇVÞFUÎQÞ¬€ Òh§ãÎR ¿õ¢œõ ¡’µcÛcðÉ›JæÿþŽ6ÂŒ× ›Pmï#ÙbµuNzô@6xq\H6s&Ø vMç¡Íë¸"h­!DëÙCÀ(P©Î¢sÙ‚+Dož~½­ ’1³N©bT(Öj)’ôTßÝÄ/ªX{I|•vy,ëÈГu>™â$su͉ԋÏ1U2,›¬XÝÙ÷ £~|Ë·¡´¯+Ãd[ÿë ƒpßgðM1È9p4!lf|ˆhçeí–öN(¦ )‹)¥wÙBô¢1CÎÛ¤é«d¿PK wºZ<'IAR-STR912/examples/SSP/.svn/prop-base/UT ’LjKʈKux êëPK xºZ<'IAR-STR912/examples/SSP/.svn/text-base/UT “LjKʈKux êëPKwºZ<Äg®R{7IAR-STR912/examples/SSP/.svn/text-base/ssp.eww.svn-baseUT ’LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¸¸@/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<÷wò½I"L7IAR-STR912/examples/SSP/.svn/text-base/ssp.ewp.svn-baseUT ’LjK“LjKux êëí\moÛ6þ¼ûBÛomýÒnX xÅiµÚ±a;Ù0h‰–ÙʤFR®³_¿#%¿Æ–ÝPTa®HâËÃ;’Ç»‡”[¿-ç±³À\F}Ú¬5ž:˜,$4úõ)ìÕÛ·?¿{Õ|úÛûŸüø¤•pön§5%1¾Íоo¶êÛ·:=`tJ¢”#¹z)šã÷—x’F­º¾ÎŸKÆâ`†È*ã*«;èîf¬ïçl…ª6Õ‚ì"*°” …ث輦£x§NHC<˜‘źýoZõ½'ëœ!’h}÷‹•^·ê‹½ÌüQyÍh‡(VmܹßÊwP¹[çJ”ö÷‘œí‰’ /‘ÌÕ|ÙZõìÁV­õÕêM>ŸÙ :DÈsT>C¨[Ä tÅ!¤U/þ|¨C×-i¾1lÁ‡6 ¡ ]âãò6 A|š¤ÒYœ¶Y(l9ͱ8ÑyŽK|•Ʊ3e|Žôü­™ŽÝTž©†U äíø*øa_Šø½½¡vÕ¿ùŽêýà1Ž{Ü›‘丈MSMR*ÉwÈdˆcX/péMÆhqÐTÓžÁèòœ¡}#°#gØ¡jtÇÎŽ‹à°©NóêÞ‹Ïäsb2á0nkÎ5sbµjb‡P‰ùø¥ãåÏ^BŽò@Ö3ŒqG¤I¸Ôió4–dr/±€âNÂ¡Ž©ƒhèˆÑéK} ÙfxéLc†¤Î&$—,4ƒ‘§Å,^Ùžz½Î'4¾ôÏïükïîúvœ_k}ÕfÆÓ¤ÏY˜2wkŽ7ç§Ú›¦kŒÖABa\†÷UçN^—ŽiŒ…Á¼h4Mõi¨¯þÿ×ò}£¾Fv».±É–gÞ³|íÈ.¦éq´áhð®ùúê‡áÈÉ/Íeí°¯¼À±¿2FfË8þ›ÀòïF/Ç¢ßóö¤‡ÁÌëG3ïªf<ïO =ÇTTTgFÅ[žmµi.ÅsFI`UkEEã­ Wˆ*40C–ò"3d”­#±»vWa÷0‹Åm/Êкƒ%´‰®]k:Ï9˜ba<Ú¯’´‚ œ‘„Å®Êó+¿Ó_\»Ýöó+e~çÑÊóŽ&‰ò£[Ô ¬> â´È”›J“¼ÿ™Mô@LNlî£x^ÞµŠÄ{]0CúƒÞï…W«©/Yˆ}øEÌWB3-¯¾+˜•6¾…Ò,Áò†x£B¬I¼4Ýô5¯ó•ñ/½mlÚ×v]9€ÀwO¤¦«lz€1ÇLâèà6S5;AQîˆØfå\+œÜ/USrnñž›Å?<$ÀbPA$YY°ÿiŠÔEgÊy7X“M¿«üߌ¥±gL4È3dÑkÓ½"R³ €øŸ¸YFe7Åxx”j§zãéËŽˆ€µðî-ÆŠ®mþß=F*•Ô~U½íCƒ‰ÆõãÒ¬€›¦QBÌü›8²&ýôB–£ôÙbiÿƒNfÊ£?f9ócýÄ¿xz»#)ÄB‚¸;gœB˜äYBXÉ )ˆ»l|†¤í9ôÓð¼ f<‚Ä#¸y8°EtØ“Õc;ðEf}–F!”GH³{)‚¢c ò[&~EŸ»Žë ýËC;¹Îo/—ëkÕ‚Ä7ºyR¨âX“qÝlÁ4ÐJƒg‹¦ªºz7æÒl¥¬m¯šmã:ذh¡^ÂFêU£+2g´¨Û•Ô°ÒM‰h ~£A^Š'i…íAÿ‹ûƒ„ªÁu’»³)ŠÐ¸"“ÂxÖÏý¢©Wê±Ó8rD{¤yRÏúÚ*³Æø8W¦…¥0Zõ§D_èúìí²ÀÐãøØ:©¾ïu]§¥“ƒIÐ=tÇzÚVvln„6göˆ¡•hf£Ï7Ý ü\<?s Z.¤zBó¯ˆe“a½iœæûS‚Ž Q›µÔ¢´iêõQì$vNòçžØ 1É¥ëìyϼZPéI” ÍhJm¥ íέºˆ½·]iú)¾7¦Z¬üCR¾qþª „aºvü h%ævæû+[-{¢vÅt¶'gGLØ$ƒõPDHÒ¢”±@l¨ú(å®#ÕãÚXš¼}Z‰¹]y(öY?NÃø‡iès÷4Œ~˜†Ñé4ÀÿŸ‡‹£<àýL£ÅuB…1Ó…I­`dmÚS³Åu~?¦fñÖ±škÁÐ<ýèXᤗSÆ[Ð €¡A­»Á$ÖËïQש„ªûS@v(Ž©GM¯×™ ½Ü"9 ë'…/ž ᜜tˆ}׿ ’hAì÷¡ê–úrÕ”e³Å*Á·¼…†Í âß_ß]yïÞØÁEµÐo]â–÷R>a<#ù÷ù~ëÒ»:)ŸqFòWGòvëMœ¯9’ÿ`å”€MW–o»Í ùñ 9ÈߦáA~ÙlkÏÒÙù®•Ø&ãѶI£—ýà®Äi+fHlýå ¾6Töè²évG(\“ý·wõPÀöÊé+êÄ5öo^·Æ‚÷ò„ÅQÿ@ú PKwºZ<·¢ÅGØ<7IAR-STR912/examples/SSP/.svn/text-base/ssp.ewd.svn-baseUT ’LjK“LjKux êëí›YoÛ8€ß ô?AvúL»m·]G²S%vä•ä ´DËl$RKQIýï—:|6QÜP¤»EÀÖAñ›g†3”Ü}ÿ- j7ƈà·'íF뤱K<„ý·'(&õׯ_¾©·OÞ¿{úäé“nDÉWè2¾S«uç(€óKßµ»ÍíÝì¼Kðù luˆÄ „ït8Kün3Û.Ž3BwЪáªiÏí6lî·ìzio©ùFq4†Œq-â½þ´º=þ¼Ó#?¨»@7ké;ÝæÞ‘uK0°Þãû7+ýO»Í›½Æüô-ÀìŠà!qAJ¸³¿ÕîN²3$b»}®1p”°=MrÍ`0í,ߨê¬ù]o%ý÷±‡–SâÂ8&TÃÔ>ʵ(¹O-Aĸ&yŠ<(2àîu?@´*P†åJÍ<‡tj;SDbFß´;ó†çÍ¥±ì>³2‰Dí/ƒ\ñ­û!d®úQ`f§cmÝkyƒ¸Ã’fÚ J”„]ô¨Ÿ„3Îó–àÄiäxvE”ë¶Ú—7\&ŸÊÐ|Ù ™°ü²bÚ¼Ÿô¢qÚ¶Ä:å³4¢¸$Â_ «Ë/†.Ì‚˜ÙàzgËC}Ùh·­F§S©Ùc ¸ ‡p| ByÃ9@¼r"Wò~Êsþ÷‡ç ØŸÏ‘“nQÅŸ'S›d·ßÍïËy¾i£ÌZ*ÏU§ˆ¦f£0÷ωÌ8ÊAù\:¶Ç2 çŒãh•«hY…!Ÿ—s„3°GZäÕy(Å [Êk­‡}|€€²2«— ¤‘0L0r³ Tì $wNæ¥w|-ÇierŒ ½óæ&‡¨Ûdëhc£$³Ù¬áº.Oæ=A¢N2Շğ—:©°fåGê7Ž–.“F@|ñ$ ¢hþ¸Pdô,Ë”39ªE ‹‘”]2mH}±³#N*ÂÁ° m‚VRˆäWÿsÝT>U»ë_ªÝõbˆðµAXR,ŸvD­FË0:‘>‘¤ãM%…>Y°”º ¡  É20bò-E'çxÙ‹@}(qYÓl`-}èÁ݉—¨:¼A.,©Ê+²OEÚå#g !öÙB:(,à¡S¬ˆ¤4.˜™?? ^Eq2C¥gÃ¥ßËÌ£3½>vdÂ&öYî]GL^4K74ÀÜEv‡ej»M°ç*@ö'CFçy‹ ΘÂ9äß*X†õ ÌÀŠÉœùŒBp„ŠTÂK3«ŒnñTn¸òçÎ ø ðqEÀpd Ýø5ªv5™ä0Dsæ¡’È—-qK)H‡LÚâ®PÀ””7ë˜N!ÂÁ±¦2¥G›‚ú³Ä›QO³zƹiI‰8Õç+w>aR“ öÃä($¯ÓK=Ç‹8:ᣥ¤b>˜ówϽrô‘!,VŠd¾Y&âK¶/*’â¸Ë×iйs¦RƒW“eMpC¯çy%/z´¾µZ¯[éŸð49.È'ô°5Oñ"À¾ÂÜ#Å©.s8ògÉ:,IŽò—vÒ:<÷>½ì]½3JncXc¤¶$ ­ñ‹j^v•ðƒ3ÝPõXtMJ‹¥Dà"ÈŸ×~¯æ‰b~¯æ=#y5c&1ì;#yc?Dw>–>îYÎç_c Msˆzc@ÙòÇç–^[Ò‹+šo6Ò(šv¾ë¥e†½ú Í8H|„·ì;Êl÷œÖæ{çâ)e$žÂpfÚùgÞ[Þæ òn÷•¾¬>€ŸÙz{#òü˜vjòèÅ( øøò$ši× cõ]¿ìÕ5;ZÊ©ÿ©0Nn˜¯…ÒHúŠ4·0àÃFÿjrˆTmR™”¡ìãP)¤Ü›1%ü<÷’ÍÖQïŠÍ€{V(G1/ìù~·¹ÿÓ\~Ùú—½éÿPKwºZ<8bˆËi:IAR-STR912/examples/SSP/.svn/text-base/91x_conf.h.svn-baseUT ’LjK“LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´M¬>\‘J“¡Øt£­-eey»Ù_ß¡»2c±*Ð¥}ð̼yó81Ìàý‘oÝwàFÓû˜'˺.‚l^r%çUYäÙ|ÇROOÞÃ([IÓµ„ýºOö¿³y‘/Ï„l«Ç¢„öºÀõ€<=­²yZeEB¦köÒJ"i¹©€m6[¹P`ër`ÔÒnàV–•aŸYu‚ÜÌËì©&Ù³ûÙC™–Ï Dd_¶e]ã á¿y)“lSåóúBG ½>êìb¯7a¿Äº6ø?( Ó˜r àÑHÜ‘˜ÂÝ„¹`FQ ã„y$t)D¡„ˆÀœè–y,ƒ›p4æpÇÄDqºQ`!¦D°(„˜ŽI\{± ‹Uº—¸‚#¢Ø£q] cˆ8¹¥ X@Ï€ðzl€'¾ø Æ‘¹qD}êŠ8 ™ËOˆïC R˜Pߟ‘¡OkJÞƒÇbDÀZÍ/ň!7 9ýœàÎñÁ#ÓfªÚJ‹"pýfÛ1ãj £8 êÆ!ƒÀôšo<Á¦í{HBoÐl N! …á}«[˜ÑpèÍjZ ÂBêá†bŠMÂ/úB¥ÚY‹<ìäïŸèÁé‰ú¼É–ùB.a6S¯2ŠÍð)¿AW–KÍ{z2À‘*à[Q~…,‡‡ír)K|q×ÅBÂ_[|“r^¬×2¯ z”°,V«â[–•bkj;öáKþ ³Ûʬñ³¡*ài»ó6/;Ö.ñÈJ7²)­ˆÐzt˜Œήd2$Óáѳnׄ³}ÄeñÙÆÂ·Ì5VÝ“!ðвMs/ }7‡PÝž¹ižË•Õ°»NWà¼+pѸì \u®òÐiÀú6¡º=¦ùWë¨×>êuŽzÏGý%Žj‰ÝTw,éK…P#Ö}©ªÛ–î°u‡£;ÌMOYÔ©§ý) fZšmk¶£Ùçš}¡Ù—š}¥ÙךýQ³?w óiÑêBTÜ5ÞF¢À IÓ˜%%$¦çØbRÐWë•Ç~åqÌMáÓžMáÓCË:4ͧ±K¾¡æ?\^ï‰@¨ù€ðƽol¤bNoUÕmKwØÆƒhH»çF?ÈÛ°ýaX8ªi–ÏÜòyS¥+X–òï­ÌçÏðOºÚJxûçä¿wm|s“ÙßÚÉ­¹8àt.-K ÌÙògz~}íïs5?àuª}wÛ]½Žuóþ+¤¡§.¶#æÓ—NPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ¹"—¥‹2Ѻ„Ï,й„tV!#oF t\fQx¹S„£Gœyà‡¯Ýôâ$Œ/ù;r¬V9ÇK«ù؇uþR6¶M·?±ÓÔ¡ké¶n:`wêÎÕÒáKÓК`ØPïXÐè5ÕÔt蘭¯ mTe:Ÿša6@ëÙN§­[6‡ûb8Mt0Lo«ŽÑ1ÁÒªE½¸ aqñZOslœ«¦[´޵Á逭~ÖÁ1Úú¹ .ˆv¯åœr/44«£·tͱ:¦¡Ù`7ÕV ÌŽ7:4õV Z†zÓÒ R5¿BͰpö)Ç2Lñ‹"MÓÖÿÑCÍ µ5µ­6t[h€«uù,ä´–PÛ2l®BÝê´9Wˆ ·]§v6·¡jÖÊB%èÙ:´Õš7_Öâ|PKp[؋ꆩ×P!KG#Ôg")>L$—-yvpÿ(¿}óöMyC?±Þ¿úá˜ï<¿~’ú¾78›üš­Ô¼{îÉãŒØø5 ò•r¤SøuÕh¡A¯¡r ]Õ¶éýÑû„ù&NìÄMÒøj… Bx{•öœMqêb"}9WïÝÈsþk6‰#¦`ÛÝJÿ&YÔwþy^ý†VúQy¨H§€m•Úsj?P+S«Pû‘Ú j?aÀÁ¶ÇUšuC­FmZÚ:o¥ µ´²TÝ''‰8IÄI"Nq’ˆ“ô‰ZZYºy8IÄI"NqªVž®rCI› %]™ %)™HÉDJ&R2‘’‰”üŒ¡d¢+“¡d"%)™HÉDJ!C)´²òŒ¡â¤'…8)ÄI!N qRÈP ­¬Ñ'Ìê<ôÑÃ5*dÍßî®+8ˆ}#ðú†a ÷ØI”“4b8kÇàDn#¾øDã,wTW}œC*°PHBž=ö'D÷¡7‚F×èôµ0{·iDM‰÷]eã¶ÖÛ2\P@˜g8•Ò‹c˜‰OÔ£ð…n–JJ6³Å‚Ûdr´M¯W&‡òϪs“‹jQT‰ª¸å ŽNË`–& ?¼3 è¤Iqd1`1t‘`}à°Ê Ò£tôö;ï¼1?‡júM¯!biÄém‰ïÔ;Œ¼1öòîm­õw;L£!þQÊ;û[;ºâÒåã^Ì?Á!™Ðå¦~C?ÞALÒœ‰@ì¢pÍ»÷â0*@òÞ>vKˆ‰Î¢Zmè24ù„E®t?D» 9LmrLœ0,º/,–[vká$Äcfúá&Ñ Så)dóŠ˜jŒgŸÃE6$†3ÞSG×aõ0šº ê³ÒÓocÌG¡ïîh‡X¶IþÚo»q¢Z·ÓÊøk¿éÝNvNoªóéMµ_ÕG·lÇ|¼¹¶÷¯œSþÙ¿ìZ„ûˆÅóÂ5ÈÏÍëF‡®Ï¸T—&“µOáokÂË›&½`Ó¤]›¶jsÛwïwلƳ Ä =}=àUÒš"ÒóŠT°Œä² ´é(³‚nò ǪæÛ¤ • !æt!ÉŽ*žò†l„t2œï¼\—Ä)ùûyõˆ÷ýI…”ÅtÂý #¶RÍ ±““oÂâ9l°¤î»·âäÉXRˆ´ÔÐuoša¢OgÉãÑõ5¿1:9ÈÊQnå‹dö·Øy÷,g•íöÓ\umÂ0iñ4‰™#á\øî%êŽQ'À\g&X9×q™ÅA¹¬ðj™q h±«lÝeD—‚SðÆ"©r´S/IÕ8 §ÂÜ`”ÕDsʃG±é.î‘æšà»i-qí8ÀZxx .Ã#G\Ø„I}æFB<¾Ÿq•xIw¿_`srr´Z¡ÝmÙ»JÁc-3æô@Ô”Ô!”Æî*¬,ÂøXp­ƒÍêÚ¦´ ›®„#Ÿ)ûoEÃ>» ü¶.”§/65)†½ÒbéÕ 8ßÒÂþ?Ãÿåÿ/?ßËË¥yê‘©GzMêÙÛç?ròÇ_švþ„Pؾ?ï€_ûäçû¢6‰±xžŠŠõâŒßò3gvÄã¹-¶™Ôì÷é× å8W»7âw)È~ÀÊæž®Ý£Wñ¤=ð¤çð(ŸòëìÃTH½ú<‡~1i!µýó\y~[ØâÂÓÖ1$ßCÐÔøl£Ë¾/ü²ÿª}™‹ðÛÚïhmD+G(þþËþƒOûѸ¾\ÎI7ÂÐó†®Ï¹ä7ð€ì6R‘‹kHAô°Où4ÈBRÜzŠ#ïßïàÞ¸t߲ȮÂ$Ù ÷)¿/ç''WKÕ¬#›˜aˆÙ•¦÷ùݬñ¿½×‘Wf¼PKxºZ<¼Ñ3 Èô(IAR-STR912/examples/SSP/.svn/all-wcpropsUT “LjK“LjKux êë½Ò½ ƒ0Àñ=Oa@¯ZÄêVh‡"”¢¥«„©T“ÄǯJE7Äõøý.4©š $NR\5•*ç̬dÞ†wDнKÎ5!*M•†C7¬ØDuÆe©à~‰Ìøù¶´Å¥(¨‚8~¢Û㊔m ÙóF,ŒäħûóéÀ—8gY¡{[éqÚ½Ù÷fà#ŠÓ’ZºÕËg{«‚™ÚGøv›Î2ë³gÄL#r½êü-³øPK wºZ<#IAR-STR912/examples/SSP/.svn/props/UT ’LjKʈKux êëPK xºZ<!IAR-STR912/examples/SSP/.svn/tmp/UT “LjKʈKux êëPK wºZ<+IAR-STR912/examples/SSP/.svn/tmp/prop-base/UT ’LjKʈKux êëPK xºZ<+IAR-STR912/examples/SSP/.svn/tmp/text-base/UT “LjKʈKux êëPK wºZ<'IAR-STR912/examples/SSP/.svn/tmp/props/UT ’LjKʈKux êëPKxºZ¹"—¥‹2Ѻ„Ï,й„tV!#oF t\fQx¹S„£Gœyà‡¯Ýôâ$Œ/ù;r¬V9ÇK«ù؇uþR6¶M·?±ÓÔ¡ké¶n:`wêÎÕÒáKÓК`ØPïXÐè5ÕÔt蘭¯ mTe:Ÿša6@ëÙN§­[6‡ûb8Mt0Lo«ŽÑ1ÁÒªE½¸ aqñZOslœ«¦[´޵Á逭~ÖÁ1Úú¹ .ˆv¯åœr/44«£·tͱ:¦¡Ù`7ÕV ÌŽ7:4õV Z†zÓÒ R5¿BͰpö)Ç2Lñ‹"MÓÖÿÑCÍ µ5µ­6t[h€«uù,ä´–PÛ2l®BÝê´9Wˆ ·]§v6·¡jÖÊB%èÙ:´Õš7_Öâ|PKp[؋ꆩ×P!KG#Ôg")>L$—-yvpÿ(¿}óöMyC?±Þ¿úá˜ï<¿~’ú¾78›üš­Ô¼{îÉãŒØø5 ò•r¤SøuÕh¡A¯¡r ]Õ¶éýÑû„ù&NìÄMÒøj… Bx{•öœMqêb"}9WïÝÈsþk6‰#¦`ÛÝJÿ&YÔwþy^ý†VúQy¨H§€m•Úsj?P+S«Pû‘Ú j?aÀÁ¶ÇUšuC­FmZÚ:o¥ µ´²TÝ''‰8IÄI"Nq’ˆ“ô‰ZZYºy8IÄI"NqªVž®rCI› %]™ %)™HÉDJ&R2‘’‰”üŒ¡d¢+“¡d"%)™HÉDJ!C)´²òŒ¡â¤'…8)ÄI!N qRÈP ­¬Ñ'Ìê<ôÑÃ5*dÍßî®+8ˆ}#ðú†a ÷ØI”“4b8kÇàDn#¾øDã,wTW}œC*°PHBž=ö'D÷¡7‚F×èôµ0{·iDM‰÷]eã¶ÖÛ2\P@˜g8•Ò‹c˜‰OÔ£ð…n–JJ6³Å‚Ûdr´M¯W&‡òϪs“‹jQT‰ª¸å ŽNË`–& ?¼3 è¤Iqd1`1t‘`}à°Ê Ò£tôö;ï¼1?‡júM¯!biÄém‰ïÔ;Œ¼1öòîm­õw;L£!þQÊ;û[;ºâÒåã^Ì?Á!™Ðå¦~C?ÞALÒœ‰@ì¢pÍ»÷â0*@òÞ>vKˆ‰Î¢Zmè24ù„E®t?D» 9LmrLœ0,º/,–[vká$Äcfúá&Ñ Så)dóŠ˜jŒgŸÃE6$†3ÞSG×aõ0šº ê³ÒÓocÌG¡ïîh‡X¶IþÚo»q¢Z·ÓÊøk¿éÝNvNoªóéMµ_ÕG·lÇ|¼¹¶÷¯œSþÙ¿ìZ„ûˆÅóÂ5ÈÏÍëF‡®Ï¸T—&“µOáokÂË›&½`Ó¤]›¶jsÛwïwلƳ Ä =}=àUÒš"ÒóŠT°Œä² ´é(³‚nò ǪæÛ¤ • !æt!ÉŽ*žò†l„t2œï¼\—Ä)ùûyõˆ÷ýI…”ÅtÂý #¶RÍ ±““oÂâ9l°¤î»·âäÉXRˆ´ÔÐuoša¢OgÉãÑõ5¿1:9ÈÊQnå‹dö·Øy÷,g•íöÓ\umÂ0iñ4‰™#á\øî%êŽQ'À\g&X9×q™ÅA¹¬ðj™q h±«lÝeD—‚SðÆ"©r´S/IÕ8 §ÂÜ`”ÕDsʃG±é.î‘æšà»i-qí8ÀZxx .Ã#G\Ø„I}æFB<¾Ÿq•xIw¿_`srr´Z¡ÝmÙ»JÁc-3æô@Ô”Ô!”Æî*¬,ÂøXp­ƒÍêÚ¦´ ›®„#Ÿ)ûoEÃ>» ü¶.”§/65)†½ÒbéÕ 8ßÒÂþ?Ãÿåÿ/?ßËË¥yê‘©GzMêÙÛç?ròÇ_švþ„Pؾ?ï€_ûäçû¢6‰±xžŠŠõâŒßò3gvÄã¹-¶™Ôì÷é× å8W»7âw)È~ÀÊæž®Ý£Wñ¤=ð¤çð(ŸòëìÃTH½ú<‡~1i!µýó\y~[ØâÂÓÖ1$ßCÐÔøl£Ë¾/ü²ÿª}™‹ðÛÚïhmD+G(þþËþƒOûѸ¾\ÎI7ÂÐó†®Ï¹ä7ð€ì6R‘‹kHAô°Où4ÈBRÜzŠ#ïßïàÞ¸t߲ȮÂ$Ù ÷)¿/ç''WKÕ¬#›˜aˆÙ•¦÷ùݬñ¿½×‘Wf¼PKxºZ<8bˆËi"IAR-STR912/examples/SSP/91x_conf.hUT “LjK“LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´M¬>\‘J“¡Øt£­-eey»Ù_ß¡»2c±*Ð¥}ð̼yó81Ìàý‘oÝwàFÓû˜'˺.‚l^r%çUYäÙ|ÇROOÞÃ([IÓµ„ýºOö¿³y‘/Ï„l«Ç¢„öºÀõ€<=­²yZeEB¦köÒJ"i¹©€m6[¹P`ër`ÔÒnàV–•aŸYu‚ÜÌËì©&Ù³ûÙC™–Ï Dd_¶e]ã á¿y)“lSåóúBG ½>êìb¯7a¿Äº6ø?( Ó˜r àÑHÜ‘˜ÂÝ„¹`FQ ã„y$t)D¡„ˆÀœè–y,ƒ›p4æpÇÄDqºQ`!¦D°(„˜ŽI\{± ‹Uº—¸‚#¢Ø£q] cˆ8¹¥ X@Ï€ðzl€'¾ø Æ‘¹qD}êŠ8 ™ËOˆïC R˜Pߟ‘¡OkJÞƒÇbDÀZÍ/ň!7 9ýœàÎñÁ#ÓfªÚJ‹"pýfÛ1ãj £8 êÆ!ƒÀôšo<Á¦í{HBoÐl N! …á}«[˜ÑpèÍjZ ÂBêá†bŠMÂ/úB¥ÚY‹<ìäïŸèÁé‰ú¼É–ùB.a6S¯2ŠÍð)¿AW–KÍ{z2À‘*à[Q~…,‡‡ír)K|q×ÅBÂ_[|“r^¬×2¯ z”°,V«â[–•bkj;öáKþ ³Ûʬñ³¡*ài»ó6/;Ö.ñÈJ7²)­ˆÐzt˜Œήd2$Óáѳnׄ³}ÄeñÙÆÂ·Ì5VÝ“!ðвMs/ }7‡PÝž¹ižË•Õ°»NWà¼+pѸì \u®òÐiÀú6¡º=¦ùWë¨×>êuŽzÏGý%Žj‰ÝTw,éK…P#Ö}©ªÛ–î°u‡£;ÌMOYÔ©§ý) fZšmk¶£Ùçš}¡Ù—š}¥ÙךýQ³?w óiÑêBTÜ5ÞF¢À IÓ˜%%$¦çØbRÐWë•Ç~åqÌMáÓžMáÓCË:4ͧ±K¾¡æ?\^ï‰@¨ù€ðƽol¤bNoUÕmKwØÆƒhH»çF?ÈÛ°ýaX8ªi–ÏÜòyS¥+X–òï­ÌçÏðOºÚJxûçä¿wm|s“ÙßÚÉ­¹8àt.-K ÌÙògz~}íïs5?àuª}wÛ]½Žuóþ+¤¡§.¶#æÓ—NPKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<Äg®R{IAR-STR912/examples/SSP/ssp.ewwUT “LjK“LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%¦¸¸@/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PK wºZ<IAR-STR912/examples/DMA/UT ‘LjKʈKux êëPKwºZ<Íl-ö{IAR-STR912/examples/DMA/dma.ewwUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&%7Q/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<6ù»×ÓRIAR-STR912/examples/DMA/dma.ewpUT ‘LjK‘LjKux êëí\ÛŽÛ6}nþƒä­©/i‹n7…¬õ&j|ƒíݦÀ Z¢m&2©R”c÷ë;¤$ßÖ’¥¨}©ã,t¡x8Cr8s8rëõ2°V˜G„Ñß_4k¦ó ÿþ‚Dì§««_ßþÔ|ñÇ»¾ÿáûVÈÙgì 8±¬ÖŒø.yô]³Uß?U÷=Fgds$²Kp‘¢%~w§ñ¼UWÇéuÁXà-É fEíQï°`ý¸dË—µÉ$éÕ RDGõ½ÇsÔ ÷÷dµmÿÏ­úÑ•mI ´=ƒóU¦xfuTnETôí2²ç{åN ¡î°PÖ™‰ÒYã!‹#Qᩚï¡X«ž\Ø«µþ¨Ú| Áôó%@PL¨K"q ’,§ u‡8®8…”õâo§:tÛÙßZ-xß¡>4¡Ç|œ/oCÄ¥a,¬Õya›…Â–Ó G'ªL¾Ä7qX3Æ—HÍßšîØÅ…hÕ@ÚŽçPÁû»M(âsCífxûŒê}ï0ŽÜY0_Ħ®&G1d‰»d:Æ,„O¸ô¦Œ´:iHªiÏhr}Éо°%Ø¢rtÖ‹`±™ºçÔ´x"Ÿ)‡q[³úÌ äª‰-Bæ3äá×–“^{ 5ZÒÙÎ0Æ­(CÆ…º·ŒA¦#xÜ 9Ô1³õ­ÈCtöZB±^[³€!¡ŠE‚ æëοÑÄQb¯l¯&ƒA÷£;y¸vG¯îݾs }û<úÐWúª-´§É3?öDêÖä7ç—ÚÏM[­‹"1†qé·7U§N^DâGó¢Ñh4å§!¿êüßþIï¨ùm4’Óí»biáÝ¥FcïáœO9ŠèP4 °R‡9û¿¯tèå)‹ ú5`ïÁÒ'–¯ãÑÃ4ÎGOFo›on¾O¬ôP_Ö.ûÚÅ+¸™12¸ìì<ÅvGO§_ìâ($åM®ãÇac¦7Oˆ™ÞV39Î5žzÚ"$ÚÓì,Çr q²w«‘¹ °…qØr‰©(¨4¨.(Î$Œ ëÓjS =Š—ŒϨÖ$Eh^4Þʲ£¨ Í̘żÈÚé%ËÕ/ÿbTq×ÍÇà$rè$ƒAÂ$Òù q æÛ0J‡sÆ bHº‰ƒ•^›[Qa= XÀôdR$ùèëT®^.1sòº—pMÚ àâ{0“Ї¾ kÁÑ@ÝŽœö ¦”6iµep¼wË0O†xÔ¬e“9Åþ0@„: d°Ÿg„ÿ‰ Ç0&›Ðì ØË¢ûqò›^4¤¡µ9Kh \»ÖtžR=Å&B{´ß„q8á"‹]•W7n·óÐî۽Ϋ+e~åÓuåyGÓ„«ù€‘ jÖF—zA\dÊu¥IÞÿÊ& &'&·k'íZɾ)˜!ÃÑàÏ„)¬Õä—d#âþÄ#ú«ˆð¡™†Wß &ÓÆ·0§%X^Á`2•5׺ۮ¢¾2þ¥ ·µMûÖ®KÐ øî¡P¬˜IÏ0Æà˜ ”Lo)è1í (ÛSÆñŽm1(Ö¤À2”ÎçØ·æçqµcÌã­©;ƒTËZ1úaÐþÓ ÿ>Ã@4žT518©ÝR9×Ï—&ŸµÃ<Ѽ¹ÐTë£Èô$D}é& &ã)Õô³ÃÂMäÄÓ¦…s;ž Îñrßð~^ I+Á,‡ÞØ;Ù+â-ýô ÷³#=Ú®3è õ&vý›AoÝîµíLÜAÿ rórå…Œ |PÍöpÿ6‹ÄöþöXOyn×í,ß(þRµQta }é’©;H¶5ÍÍÚO`¾¨ ¶`)‚"¡½"…R/#I»w†¹/ì+ë/QÅÚ[In›KtÎj8í#Æáx³œ²Àœ[¥€Fèkòú’Ñåê*¬*0<—Y¼¡Ù™l†”3ÍÒ¬ $±L•@õPX<öJ™P]67›Å›¡¸”‚ò¯zóÊ<^\¿*ä:»i_ЦØüJåÍ·¥ <@:CÚgœÈ§0¿WïÓ¬nºöøCx³sfy.©¢Ls…•%šËüAÃÆjÂ1vrU‚#7 +*Ì·,'M ’ÜNvz½Ä1qáË’ŒKA«$Ÿ95G/Ç•$sÔŽƒ€¥Ï×ö}"ï£ +3[†œÍ9Zv¨à›.š%Y•2\á™N¢=š÷ð@“à/%†êv‡Žbp£¸À‚êŠ{Í`•3؉²vÌÛQäw­otß…M`ƉöóqÊ‘¦C‹6«µAîÉ¿Ïø3 Ѐ3ÁY)sƒïÀE?4²n6oJ€‘ÉÙ'çOE) Ük1à9©8•5"åîPÎt}{`†­»sõlù´®=r>¸wÇoØ—@ÞžFÉÛ´…Šê4螤0æ÷«¶HŠNÍÇyùòåmFm`ÎŒ–v DÎ&I«þø§óZsÎâ0+¯@£Ç/b«ßä;jè£È=yî^†í’y>œÒÉïø=±º€Lˬ.òâüêZõFN)Gú#qøí$ªJµHW ½ Wà?çWx Ò>ÌqŪmâ@7ûÕ=ºD„ž~Pn‘e¿î(ÿýPKwºZc©k…¤Ø)Ç2U<ìÔÄ>[w„õ¶j NÇâ Ûïk]V· ¤*vîpXXE¤¦³]׫wxúËåì÷K/î 7Êt1›L=@u¥Ñ{Ord?]l·°•B3¨çb·¯Á¾ûpRÖº³­y¹rs’<Ÿ;É¿}&yþiïç¯íÌ{ß²úý%C®9®3žóD"O—ò–e·k¬!r,Ó «Yp¤It&âL&½¡HV6¹Lcžå¸rM”Aê×EBè˜I‘&ÈøŠe~•ê‰Ì¡ÃM s:„4 yæ+Ñ^ ™"g7RÄ|BlŒÊ>ßDòÂ]Ld)x ³4AŽ|Í¢I*±àXó(D$Ø"âž‘%wEF§/¨Ô0#NÚ Ò$çmȶ`B³¸b×tÎ)qø L*DúÞ×cxø·Ú=È;’=)‡ç;¦9ö¦}4î“à´öU2¦ß[TôkÕ$u<:~khßßBGèE®Û'g⇶_¨sû?"ë›ÓpgotÃùJò$t ¾é_PK yºZ<IAR-STR912/examples/DMA/.svn/UT •LjKʈKux êëPKwºZ<®þ3q¦6$IAR-STR912/examples/DMA/.svn/entriesUT ‘LjK‘LjKux êë­Ó½ŽÛ0 à]è«Ø¦¨otéÐ%ÍtK!QT.ר1l§—ǯ®=èf´æ$õ"%‘ϳЈâe]§¥ï:š¦ÛÊËÚ.?Çv¹ÞfârOÜŽ¼võn¾^×GR·Î·ñG7]âZ“†¥ûòth¾AbÇ÷8L^ºÏ_Ÿþ­º¨¡Ý :Jì ôÒ¶Î8öY(4â5¼œfÇóx‡+>1Hh"(U‹¼Ÿ2Bãmdˆ³ÑI|yˆ-¿eQÎÞ¬™€ º#¸^†^›~dz gUŠl¹€:&]8—ZÏ@°ÿþi”רÛ6X¢¤Pª(#‡ J‘¬‚u•%K’šý>0WYC<-mSɤ}ñ>YGˆ1p2>ÄlR ZÖþå=TÆjUYŽyàv½¯Ûhè¢Ì‚Ó!R–dŒ*Z à°KÃê"<>rÚæÒr1h³”Ö0 mÌ^K/#îáB äý;]ÇÒ¾l2ç2)E)¢DÞ–ˆà™ ŒÚŦ˜ÚyÝ:g“aUv‘¸Î2¤ë>²D¢}¦ßªwÙ/PK wºZ<'IAR-STR912/examples/DMA/.svn/prop-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/DMA/.svn/text-base/UT ‘LjKʈKux êëPKwºZ<Íl-ö{7IAR-STR912/examples/DMA/.svn/text-base/dma.eww.svn-baseUT ‘LjK‘LjKux êë³±¯ÈÍQ(K-*ÎÌϳU2Ô3PRHÍKÎOÉÌK·UÊ,Î×µ°0µÔ5T²·ãåâå²)Ï/Ê..HLNrl Šò³R“KÀ7±$ÃN%<8ÞÅ3H%&%7Q/µ¼ÀF, V¯¬Á&)±$9é43'E(`£l8PKwºZ<Ô¾õ1Ø<7IAR-STR912/examples/DMA/.svn/text-base/dma.ewd.svn-baseUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<6ù»×ÓR7IAR-STR912/examples/DMA/.svn/text-base/dma.ewp.svn-baseUT ‘LjK‘LjKux êëí\ÛŽÛ6}nþƒä­©/i‹n7…¬õ&j|ƒíݦÀ Z¢m&2©R”c÷ë;¤$ßÖ’¥¨}©ã,t¡x8Cr8s8rëõ2°V˜G„Ñß_4k¦ó ÿþ‚Dì§««_ßþÔ|ñÇ»¾ÿáûVÈÙgì 8±¬ÖŒø.yô]³Uß?U÷=Fgds$²Kp‘¢%~w§ñ¼UWÇéuÁXà-É fEíQï°`ý¸dË—µÉ$éÕ RDGõ½ÇsÔ ÷÷dµmÿÏ­úÑ•mI ´=ƒóU¦xfuTnETôí2²ç{åN ¡î°PÖ™‰ÒYã!‹#Qᩚï¡X«ž\Ø«µþ¨Ú| Áôó%@PL¨K"q ’,§ u‡8®8…”õâo§:tÛÙßZ-xß¡>4¡Ç|œ/oCÄ¥a,¬Õya›…Â–Ó G'ªL¾Ä7qX3Æ—HÍßšîØÅ…hÕ@ÚŽçPÁû»M(âsCífxûŒê}ï0ŽÜY0_Ħ®&G1d‰»d:Æ,„O¸ô¦Œ´:iHªiÏhr}Éо°%Ø¢rtÖ‹`±™ºçÔ´x"Ÿ)‡q[³úÌ äª‰-Bæ3äá×–“^{ 5ZÒÙÎ0Æ­(CÆ…º·ŒA¦#xÜ 9Ô1³õ­ÈCtöZB±^[³€!¡ŠE‚ æëοÑÄQb¯l¯&ƒA÷£;y¸vG¯îݾs }û<úÐWúª-´§É3?öDêÖä7ç—ÚÏM[­‹"1†qé·7U§N^DâGó¢Ñh4å§!¿êüßþIï¨ùm4’Óí»biáÝ¥FcïáœO9ŠèP4 °R‡9û¿¯tèå)‹ ú5`ïÁÒ'–¯ãÑÃ4ÎGOFo›on¾O¬ôP_Ö.ûÚÅ+¸™12¸ìì<ÅvGO§_ìâ($åM®ãÇac¦7Oˆ™ÞV39Î5žzÚ"$ÚÓì,Çr q²w«‘¹ °…qØr‰©(¨4¨.(Î$Œ ëÓjS =Š—ŒϨÖ$Eh^4Þʲ£¨ Í̘żÈÚé%ËÕ/ÿbTq×ÍÇà$rè$ƒAÂ$Òù q æÛ0J‡sÆ bHº‰ƒ•^›[Qa= XÀôdR$ùèëT®^.1sòº—pMÚ àâ{0“Ї¾ kÁÑ@ÝŽœö ¦”6iµep¼wË0O†xÔ¬e“9Åþ0@„: d°Ÿg„ÿ‰ Ç0&›Ðì ØË¢ûqò›^4¤¡µ9Kh \»ÖtžR=Å&B{´ß„q8á"‹]•W7n·óÐî۽Ϋ+e~åÓuåyGÓ„«ù€‘ jÖF—zA\dÊu¥IÞÿÊ& &'&·k'íZɾ)˜!ÃÑàÏ„)¬Õä—d#âþÄ#ú«ˆð¡™†Wß &ÓÆ·0§%X^Á`2•5׺ۮ¢¾2þ¥ ·µMûÖ®KÐ øî¡P¬˜IÏ0Æà˜ ”Lo)è1í (ÛSÆñŽm1(Ö¤À2”ÎçØ·æçqµcÌã­©;ƒTËZ1úaÐþÓ ÿ>Ã@4žT518©ÝR9×Ï—&ŸµÃ<Ѽ¹ÐTë£Èô$D}é& &ã)Õô³ÃÂMäÄÓ¦…s;ž Îñrßð~^ I+Á,‡ÞØ;Ù+â-ýô ÷³#=Ú®3è õ&vý›AoÝîµíLÜAÿ rórå…Œ |PÍöpÿ6‹ÄöþöXOyn×í,ß(þRµQta }é’©;H¶5ÍÍÚO`¾¨ ¶`)‚"¡½"…R/#I»w†¹/ì+ë/QÅÚ[In›KtÎj8í#Æáx³œ²Àœ[¥€Fèkòú’Ñåê*¬*0<—Y¼¡Ù™l†”3ÍÒ¬ $±L•@õPX<öJ™P]67›Å›¡¸”‚ò¯zóÊ<^\¿*ä:»i_ЦØüJåÍ·¥ <@:CÚgœÈ§0¿WïÓ¬nºöøCx³sfy.©¢Ls…•%šËüAÃÆjÂ1vrU‚#7 +*Ì·,'M ’ÜNvz½Ä1qáË’ŒKA«$Ÿ95G/Ç•$sÔŽƒ€¥Ï×ö}"ï£ +3[†œÍ9Zv¨à›.š%Y•2\á™N¢=š÷ð@“à/%†êv‡Žbp£¸À‚êŠ{Í`•3؉²vÌÛQäw­otß…M`ƉöóqÊ‘¦C‹6«µAîÉ¿Ïø3 Ѐ3ÁY)sƒïÀE?4²n6oJ€‘ÉÙ'çOE) Ük1à9©8•5"åîPÎt}{`†­»sõlù´®=r>¸wÇoØ—@ÞžFÉÛ´…Šê4螤0æ÷«¶HŠNÍÇyùòåmFm`ÎŒ–v DÎ&I«þø§óZsÎâ0+¯@£Ç/b«ßä;jè£È=yî^†í’y>œÒÉïø=±º€Lˬ.òâüêZõFN)Gú#qøí$ªJµHW ½ Wà?çWx Ò>ÌqŪmâ@7ûÕ=ºD„ž~Pn‘e¿î(ÿýPKwºZc©k…¤Ø)Ç2U<ìÔÄ>[w„õ¶j NÇâ Ûïk]V· ¤*vîpXXE¤¦³]׫wxúËåì÷K/î 7Êt1›L=@u¥Ñ{Ord?]l·°•B3¨çb·¯Á¾ûpRÖº³­y¹rs’<Ÿ;É¿}&yþiïç¯íÌ{ß²úý%C®9®3žóD"O—ò–e·k¬!r,Ó «Yp¤It&âL&½¡HV6¹Lcžå¸rM”Aê×EBè˜I‘&ÈøŠe~•ê‰Ì¡ÃM s:„4 yæ+Ñ^ ™"g7RÄ|BlŒÊ>ßDòÂ]Ld)x ³4AŽ|Í¢I*±àXó(D$Ø"âž‘%wEF§/¨Ô0#NÚ Ò$çmȶ`B³¸b×tÎ)qø L*DúÞ×cxø·Ú=È;’=)‡ç;¦9ö¦}4î“à´öU2¦ß[TôkÕ$u<:~khßßBGèE®Û'g⇶_¨sû?"ë›ÓpgotÃùJò$t ¾é_PKwºZ<=³¯aÆy:IAR-STR912/examples/DMA/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK‘LjKux êëµW]s›8}ÏLþÃéK›ic _mÞd!ÍòáE"™™ß¦³,]œ?i ÙOYûíoò2Ç9ÒsÓœd]dùË­þF-K½90jmÇ.›“0_ÇŽMð8–ƒIÈó%ˆ`$ïIÈàÞáÔ.`„0ޏM|Ê ðÝ Ü@$ÆwÜæþh$dà±PÀ=—ŽÖ¤A9À} ÷ˆä!“°D1!u¸Q)Ah³°L…cȹc ¹ÇΈrÙ €ˆ\ù^/GNÀ¹ŒÊ0ð9 âºà† æÚàr2tY)Iü°yˆì÷˜«ú¥qˆ¾`G8sN\°‰GƬš„Î6A¢ö¢¨[M;äBOa^Y8T^ê@DX´] ‰oª)A$xÄf0|Ø«FTõbU%ô%á>³qB!Ã"á1Mér–&+ùûWôàôDÞ$‹t®0ê­Œ&FS|ÊoJRUCOO¸¤2øšå_ Iáq³X¨7î*›+øgƒ;y®fÙj¥ÒŠ'‹l¹Ì¾&égXjµ*ç`°U¾Æ¿*ӽȒÿ¨0Š ž7[´Úì˜;Ç#+^«*µþ!k³a4®45 ÎL†­gݶ:?§»2Z0³3ñ§}³"µÞ7ê@w2Û#ÉvJH<ìMéSœ¦ji´Ãf;lµÃíðe;|Õ_·Ã7?yÐÌã}ëÔz:ŒÓ/F+j¶¢V+zÑiqÔß⨴x\êžG}¥Ú)…t_)¤ÖûF0ë€Uº‹4žðਟC;šÚŒb6«\4ËrÕ@®ÈMùØ@>uÎ?”½Ï ¤vJ Ú½HvBHìò:,ÕO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKwºZ<Ÿ¨ZíU 6IAR-STR912/examples/DMA/.svn/text-base/main.c.svn-baseUT ‘LjK‘LjKux êëµXmOÛHþ|•úF©t È—7èˆÆ6Ä:Çál§¨ªªÈÄbÕ/‘½z§ûï7³»NœJ[zF¼»ó<3³³3³éîy m€1¾úèٗýÞðƒQ<+r–°/ò,ž•°Oôå‹C¸ˆn˜2X='†q֙Ѵ^ñE^@ó9‘a‚¾\&ñ,äqžAÀ”›!gX”첬XD‹{¯»ýw]¡Ö |`EIýNO°rVÄK²AË"¿-ÂæHnŽt`aºLX¥Hpß,â²^UÉ€/˜uâì ê’ĨWÌYZÏaÉ ÄNƒJ´Ž³"În!Ÿã{뼚ÏYÑk ‚N "_ŒAŽ# Þoô ÂX^B ¤`_“š8jP˜IÉ$WÞl@àtÊÒ¼øJvÿâ‡,¢Ký„þÇ} hŸÞnìÓ ž;ÞÝþš{lÿƒ¡Wžå[nþø"¸Ö= ®‡¶1Û‡‹±—ÛÔ]±ë|Ýù (3þ`›¶{ ÆÄÆ#Ëó îÚ†xxÄ„í¢øHì± žu©{b mÄ͉ø¸Æžiy‚ çFŒÁ×?XØ#«#Ž "€?qN¢mxc˱ŒÀ»¶áƒ?ÔÜqç -ÇÇÖÏK@êîG0mWk„e»òIQM×·þš å¶î€©ôKË— Û­B]Àp¤Ùží“ ÞxDº ‚ä»ñøtÚʇºkv¥I0ñ-é¦ç×Þ" š”Î’º­ýE°ºíZ&äYè$[Œ¹¨M %7=ùë#ºûòýtÁça…E„çg–Tƒ?~ú!ÔW5Lë}ÿašÄ7EK1Ùj„<ÅiU˜~â 3Ç<œ1X°0¢,ð]Lˆè`HjÅ¿CìiÄ«"¾£ÄÌ¿.YÄæÏÜBD´8{ŽwwÓËÖ³·ïÂ"o’ç¸RFV’©Å<@7šèF¨|^T3~ª""Àº@G¥˜åÇ‚VŠ‚ÁïsÈØDZ51"«%¾/UôR,Vy¶*_³E˜1–@Án1]#ä ÃÊÅ äaÁ©: ä"ÌJäSÖ -$(2¡`Uˆ0çU±‚*1e—8€qFQÁÊr5¥QqFxY“vg‰TW£K¯µe •Îx Åš$DsW£¨xš0ÐÊ ­$ùÚÚ†A-­%q‰{ž”e¼¥­=&‰p¢’Ç·pr‘ä÷5PBöøÅ ·¬„û8â l_¿v:†waR±“ÞCÏ8~÷¾×3P95ZÂŒMž“Õ¾@ÿÍÎúXûK$¨gpŸ‘ôss¤ÓÑ[˜°$÷‘¨h1D,L ãŒmóU¬ø÷&#áÑ”$bhRÊð½ËÜJꌎ"@?õŸáì´Ckü*›´ýÃÿ6£|.BW¶2¤ãÍ: 1€•Ò2+Êé\5Dí:æäÀ)¸¡žj´>½j}m iÇÚkíöV{§½×ú8Ø×~bFZа"Xèªf¬«¾mÛTW{NÛûC {¤?%uô´”²¥Îwó*›‘ÏÎwÝ_\žÅeC)§.²×ßsÀ+Fã šlYñæÄÍ3FãŠ7gÖà ”íNüÚ]…µ^ØÑ¾Ëãèàå‹äž¼ŠçTmMë|‚íài¼©nÛ¸c¯XÅsZƒzùÆd:2œ?}q$ ‘6Úõàtì§Ò€îá3@(‹ ¢‡UÂa†7‡/êH‘> ô åÍø..ó¢J£SîKX ÝÁ^s–xP±ó ¤‡ˆ_") gÐW ôë7ëÖUJíÑn­`ëÜî3L‡ÑViP¨"õ>Ÿµ1èÚ¿×GÞ\U/èo- ÈÁ©táÏé„·Åâ[*ï¨48ÞPéõÖ‚£†J¨“ÏdAX3c•2i\GkmÊ=jj3X‘)åVL´©úð\î A¡ v{:Å‚¡Y.]-p³ÑKVF,S"fÔåZQ}1u4m¹žšU Ъî<ÁÓU²­ÑŒ‘Fíš¹{ØàÝd““`ü}³›j8®‹˜KéyÝ,50Ö2Á,ëïÔqJnótÃk´??¼3+Îù;6ØmâßÁOSaæÜ¡ê×TûZ¸çÑ¡eײU¨Þ¦×Ø·œªŠªÌ[uO² ¥Î¦XØnb^¶¾Ë®Qý&‰@1mVí:ññ4µ‚¶TÉ®ÞxЩ:*zžÍ¶ñið (ç>¶~€½é½ÑÊB+‚ÜP'‰m´ýˆÐ‡–ì+ó’e«örýÖF÷ß‚²¡ƒïxM•ÐnLô5¨é–ˆiùß!²fGxcÙÎyF«eò=®o#÷1îŸ0÷Ñc×`Á,³¥Üc9§æª¿#N¿ãæ9Ÿçª‹eé’•l÷ ìÇÇ%ãŠFÇæŽù<äU¹A ²–êË·ë¥~ä{[Ë5éû— Û±TÓñPKwºZÀ·× ˜¨ãÄö=ØM’r–[Ÿ-ÿ`¢…^´Áš ½ÙüPK wºZ<#IAR-STR912/examples/DMA/.svn/props/UT ‘LjKʈKux êëPK wºZ<!IAR-STR912/examples/DMA/.svn/tmp/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/DMA/.svn/tmp/prop-base/UT ‘LjKʈKux êëPK wºZ<+IAR-STR912/examples/DMA/.svn/tmp/text-base/UT ‘LjKʈKux êëPK wºZ<'IAR-STR912/examples/DMA/.svn/tmp/props/UT ‘LjKʈKux êëPKwºZ<Ô¾õ1Ø<IAR-STR912/examples/DMA/dma.ewdUT ‘LjK‘LjKux êëí›ko›:€¿OÚˆª}8GZnív¶IYw($-kRr€lširÀ!^ÁæÓ6ÿþ˜K®kiVÇÎδVJ¸?ï‹ýÞ é|¸‹ÂÚ ¤ "øýQ»Ñ:ªAìáàýJHýíÛ×ïêí£§ÏŸ=Ö‰)ù=ÆwjµÎ…ðSqéi»Ó\ßÍÏ{OQRÀ‡øA "xjÀItšùvyœz3€ M5{°Ù°¹Ý²ãg½eåÑ2ƵH¶úÓëÎðËFü  Þ Ý,¥?î4·Ž,[ú€åß¿YèÒiÞl5æ§ofW÷‰ÂLÂýµv÷ªŸ!1Ûìs©ˆ‰ã”miRh΃YgÅÆZgÍïz«è¿‹}°DÀ& ¡ò–þ P®EÅ}j "À³øÈSäC©7¯‡¢ýÃH0ªVâ…kYýKÓýj˜ö‹±n]õÌóqn¤cÇ#’0ú®}'r%¦¼äøp ÒýùR9JàUÌðy2µJÖxûÍ|ð¡ü盎9ÈgËÞsDÕ)¢¥;(*,ÄÄS"ÓrPK‡ÎP¦ƒáœa/r=¯0äó ŽpöÄyuÞíK™-å5‹®á†P6@fõ’ƒtE)F^^ª€ôÞ`^yÇ—rˆÆˆ•CBï½¹»É!j6ùŒuõ¡Yá ÉdÒð<'ó¾ Ñ ¹ê}L+TX³’ò#uŒ—ÄsI#$x°'oþ4Wdj¶mÉ Žê}‘M¢r$e—L+R×Gìì'aGg¸mï‚Rˆ9ä7ÿs{]U>û6׿T›ëÇ>Â×N aE±|r,:kôcé¤$.””\|¶!Ÿ< Á\ê*„‚*$WÈĈ!ÊŸ)ùrÞ€—½È4€טuÝñÖ³‡Üœx‰jÀäÁŠª|OóS‘vÅÈÙ}ˆ6“Êâ‚ |T1÷DRš—ÌÜžQoO~2GeçÀ¥ßËÜ¢s½>Ë„œ³Âº˜¼è¶aê€y³üËÔvaNU€œÏ¦ ŒÁóœ!…SÈ¿U°Lû˜ž)“ó…à:&?æ©„—fÝ(æ©,\qåÇÎ îø ðiE@`ö\Ãü5ªv5™d?BSæ£G’È×-ñ™R’v Úâ¦P””7%ëN)ÂξfoJ+ö6%õgñ7M·5óܲ¥xœcÕç÷>aR“ v£ô/$ê¯ÓKw=‡ó8ᣥ¤bÞ™ó·fÞ¸ÆÀ–+E2ß,ŠRñ%ÛW{’â°Ë×™Ó¹7R©Á«É²F8M ¯ù~Å‹­»Vëm+û“àQ€Bw[ó/\(Ì=2œê2‡#–¬Ã–Tá(i'«Ã ë3ªÞÕ;£ä65Fjs’Ò¿¨æçW ?83LUE—¤ì±èAJ.‚ü¸ö{5Oó{5ïÉÉ«y3J`×ȃú!º{aÚÆP³Ý/¿ÆšîÎõ‡€²ùÇ–][³‹÷oVÒ( ;ßõR޲‰½ø Í0L„׿wœXï9«Í·4.%cÊH2†ÑÄrŠÏ¢·¼-?\ï+{Y½‚ ²åöJä-ø„±œîØâÞ'NPHðáåIuË©›æâ»~©Õu'žË©û¹œœ|b¼J'Ù+Ò|†nì4ºW£]¤jËÊ¢ å»J!åÞ )á繕¬¶zW¼ëâsr”qaËö;ÍíŸæòË–¿ìÍþÿPKwºZ<Ÿ¨ZíU IAR-STR912/examples/DMA/main.cUT ‘LjK‘LjKux êëµXmOÛHþ|•úF©t È—7èˆÆ6Ä:Çál§¨ªªÈÄbÕ/‘½z§ûï7³»NœJ[zF¼»ó<3³³3³éîy m€1¾úèٗýÞðƒQ<+r–°/ò,ž•°Oôå‹C¸ˆn˜2X='†q֙Ѵ^ñE^@ó9‘a‚¾\&ñ,äqžAÀ”›!gX”첬XD‹{¯»ýw]¡Ö |`EIýNO°rVÄK²AË"¿-ÂæHnŽt`aºLX¥Hpß,â²^UÉ€/˜uâì ê’ĨWÌYZÏaÉ ÄNƒJ´Ž³"În!Ÿã{뼚ÏYÑk ‚N "_ŒAŽ# Þoô ÂX^B ¤`_“š8jP˜IÉ$WÞl@àtÊÒ¼øJvÿâ‡,¢Ký„þÇ} hŸÞnìÓ ž;ÞÝþš{lÿƒ¡Wžå[nþø"¸Ö= ®‡¶1Û‡‹±—ÛÔ]±ë|Ýù (3þ`›¶{ ÆÄÆ#Ëó îÚ†xxÄ„í¢øHì± žu©{b mÄ͉ø¸Æžiy‚ çFŒÁ×?XØ#«#Ž "€?qN¢mxc˱ŒÀ»¶áƒ?ÔÜqç -ÇÇÖÏK@êîG0mWk„e»òIQM×·þš å¶î€©ôKË— Û­B]Àp¤Ùží“ ÞxDº ‚ä»ñøtÚʇºkv¥I0ñ-é¦ç×Þ" š”Î’º­ýE°ºíZ&äYè$[Œ¹¨M %7=ùë#ºûòýtÁça…E„çg–Tƒ?~ú!ÔW5Lë}ÿašÄ7EK1Ùj„<ÅiU˜~â 3Ç<œ1X°0¢,ð]Lˆè`HjÅ¿CìiÄ«"¾£ÄÌ¿.YÄæÏÜBD´8{ŽwwÓËÖ³·ïÂ"o’ç¸RFV’©Å<@7šèF¨|^T3~ª""Àº@G¥˜åÇ‚VŠ‚ÁïsÈØDZ51"«%¾/UôR,Vy¶*_³E˜1–@Án1]#ä ÃÊÅ äaÁ©: ä"ÌJäSÖ -$(2¡`Uˆ0çU±‚*1e—8€qFQÁÊr5¥QqFxY“vg‰TW£K¯µe •Îx Åš$DsW£¨xš0ÐÊ ­$ùÚÚ†A-­%q‰{ž”e¼¥­=&‰p¢’Ç·pr‘ä÷5PBöøÅ ·¬„û8â l_¿v:†waR±“ÞCÏ8~÷¾×3P95ZÂŒMž“Õ¾@ÿÍÎúXûK$¨gpŸ‘ôss¤ÓÑ[˜°$÷‘¨h1D,L ãŒmóU¬ø÷&#áÑ”$bhRÊð½ËÜJꌎ"@?õŸáì´Ckü*›´ýÃÿ6£|.BW¶2¤ãÍ: 1€•Ò2+Êé\5Dí:æäÀ)¸¡žj´>½j}m iÇÚkíöV{§½×ú8Ø×~bFZа"Xèªf¬«¾mÛTW{NÛûC {¤?%uô´”²¥Îwó*›‘ÏÎwÝ_\žÅeC)§.²×ßsÀ+Fã šlYñæÄÍ3FãŠ7gÖà ”íNüÚ]…µ^ØÑ¾Ëãèàå‹äž¼ŠçTmMë|‚íài¼©nÛ¸c¯XÅsZƒzùÆd:2œ?}q$ ‘6Úõàtì§Ò€îá3@(‹ ¢‡UÂa†7‡/êH‘> ô åÍø..ó¢J£SîKX ÝÁ^s–xP±ó ¤‡ˆ_") gÐW ôë7ëÖUJíÑn­`ëÜî3L‡ÑViP¨"õ>Ÿµ1èÚ¿×GÞ\U/èo- ÈÁ©táÏé„·Åâ[*ï¨48ÞPéõÖ‚£†J¨“ÏdAX3c•2i\GkmÊ=jj3X‘)åVL´©úð\î A¡ v{:Å‚¡Y.]-p³ÑKVF,S"fÔåZQ}1u4m¹žšU Ъî<ÁÓU²­ÑŒ‘Fíš¹{ØàÝd““`ü}³›j8®‹˜KéyÝ,50Ö2Á,ëïÔqJnótÃk´??¼3+Îù;6ØmâßÁOSaæÜ¡ê×TûZ¸çÑ¡eײU¨Þ¦×Ø·œªŠªÌ[uO² ¥Î¦XØnb^¶¾Ë®Qý&‰@1mVí:ññ4µ‚¶TÉ®ÞxЩ:*zžÍ¶ñið (ç>¶~€½é½ÑÊB+‚ÜP'‰m´ýˆÐ‡–ì+ó’e«örýÖF÷ß‚²¡ƒïxM•ÐnLô5¨é–ˆiùß!²fGxcÙÎyF«eò=®o#÷1îŸ0÷Ñc×`Á,³¥Üc9§æª¿#N¿ãæ9Ÿçª‹eé’•l÷ ìÇÇ%ãŠFÇæŽù<äU¹A ²–êË·ë¥~ä{[Ë5éû— Û±TÓñPKwºZ<=³¯aÆy"IAR-STR912/examples/DMA/91x_conf.hUT ‘LjK‘LjKux êëµW]s›8}ÏLþÃéK›ic _mÞd!ÍòáE"™™ß¦³,]œ?i ÙOYûíoò2Ç9ÒsÓœd]dùË­þF-K½90jmÇ.›“0_ÇŽMð8–ƒIÈó%ˆ`$ïIÈàÞáÔ.`„0ޏM|Ê ðÝ Ü@$ÆwÜæþh$dà±PÀ=—ŽÖ¤A9À} ÷ˆä!“°D1!u¸Q)Ah³°L…cȹc ¹ÇΈrÙ €ˆ\ù^/GNÀ¹ŒÊ0ð9 âºà† æÚàr2tY)Iü°yˆì÷˜«ú¥qˆ¾`G8sN\°‰GƬš„Î6A¢ö¢¨[M;äBOa^Y8T^ê@DX´] ‰oª)A$xÄf0|Ø«FTõbU%ô%á>³qB!Ã"á1Mér–&+ùûWôàôDÞ$‹t®0ê­Œ&FS|ÊoJRUCOO¸¤2øšå_ Iáq³X¨7î*›+øgƒ;y®fÙj¥ÒŠ'‹l¹Ì¾&égXjµ*ç`°U¾Æ¿*ӽȒÿ¨0Š ž7[´Úì˜;Ç#+^«*µþ!k³a4®45 ÎL†­gݶ:?§»2Z0³3ñ§}³"µÞ7ê@w2Û#ÉvJH<ìMéSœ¦ji´Ãf;lµÃíðe;|Õ_·Ã7?yÐÌã}ëÔz:ŒÓ/F+j¶¢V+zÑiqÔß⨴x\êžG}¥Ú)…t_)¤ÖûF0ë€Uº‹4žðਟC;šÚŒb6«\4ËrÕ@®ÈMùØ@>uÎ?”½Ï ¤vJ Ú½HvBHìò:,ÕO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<˜üt¶™ #f#IAR-STR912/CppUTest-STR912-Main.ewpUT ”LjK”LjKux êëí]moÛ8þ| ìÚ~ÛÖ/i{—Þ.dÅiÕÚ±a9ÙÀ %ÚæV&u•:ûë¤$¿Å’“ˆ£~¸sW/Ô<œÑp†3©?֫кÃ<&Œþþ¢Ýh½°0õY@èâ÷$foÎÏßxÓ~ñÇÇ_ùõ—NÄÙ_ØrDz:sâ›ôÒgæî®>ï3:'‹„#‘’)Záx–,:M½Œ…þ‘¼aÞÔö6[vEíc»ÓL7²£1BrÐû„)æ(Ü£)Ï!î/Éݦÿo;̓#›–h³'÷3á}lÿ«Ó¼;h,Oÿ@T\1Úg> U÷öwÚeBŸa‘ا™³Ò[ãËVR晘oe³N3=°Cµù€l1Ðpö×c€d³Š@}‹Ç ©v¡n'òVCÊïâ‡c7tÓ“ö»Š=øÔ£ì€¸˜ßVE—F‰°îN3Û.eÖL7ûœè6Å_&ahÍ_!=~Uu7”@ TY?~†>¥Ø]B¿‡SµËÑõOï'‡q<äÎ’DÅ,¶«JrœPAV¸Of¥#|>ÃÆ»â…èî¨!©§?ãÉÅcTû:Æ–Xb‹*í­½)‚ÅæúœÓt~ûÍâ)VHf\êmúbV¨¼&¶˜Ï‘_[Nv쵤h©Èf„1nÅI1.ô¹U 2»8–—[—4æ¢ûˆÎ_ëMÙl‰×ÖÇÌWÒW†©ÛUO,uqG=ÇIˆãç|E«Õj«OKýê/ù·ùÊÎèõÛj¥»›+¶Í²ÆÛC­ÖÎų#µF™·ÞUùV.[É´2}òÆÙW«´íÞ¿­ÖÎösî€ d·²l¿Eç®ãüÖƒàüìéÁùÙÑð28wœ <'ÇÅúUQ½gÄqÄ™)§=pZ¼qØj…©(aÈT_ Fåh±iÅ+F‰*µ Ç1Z”é› ;Žëœ„ñXÂ!}¢ã¤3Ã1^!þTp-<py“ŠqF¨õ¾õz„ÿYÙÇ¥ˆ)c€Hü‰8•–¥Ç9+qÕ•1TŠ“Kƒ½†KH׆rÚ¬s—ÏNÄ¥Ÿê2UŽÌ¥sǯû˜üfeVúrP•)GuFÖ‚£¡>;Kì— ©Ê‰Ò],@}ï#ºP©•V °FÖ# ŠƒQˆu–ð>9Îÿ'!KLÜG°Îpg”¼4Íí?”¡µ9––IÎò"éÞy–^,7•µý2JjÀi _>kyuéö{Óî•=è½j0#ã«8Eœk`¢4KóƒŸ1 ÊBÙª”¾Ñ¥~˜”™òªÜdЧÃå¡tœ@.Œ9NÆÊÊž•èÅh<ü’ædI.Cà#Õè¶ÑP¿…tŸjhE yvP9L.º§$´ §{rL•&¯«®»:%÷ƒñï%ªQÙúmLŸš#Éém$tºÒùJ OÎ]^]d¬gpËjáz˜!~wÍÕÿxFõ¡,þŸé<•é´Aòœµ× Ù5ÎvH8(–~…ÆD;"Jj$ª" Ï™Š‚ŽF&õ˜H[iæ Îåh?—0*ÒòD± €±œÈãv %þ¿*ÆÃrË=ò•‡O(ÆxAb9cº’û€A· ½¦beç õ_‘‡ŽÕ4HiF¶rB,þÞhi'孆譣–¾·Æ>`½ ïí8Æ T† v-n„¸éB,ãÖ-P1ÆyU šyòKßyÕáýmŒç€&J‘?if è›>¨Å7ÎL QCþÒ®'Mjמ'µëË¡K¯¸"B/#B¯áìB©ê¼’;Vy%Ïv”q¼Íɲµ)± Ƴ~öuŒùiÜÊ1æáß `Bn­ ,ý0ì~q†£ŸÈ@´žñT݈áÐÉì–~`¢,®>ƒ}!ëüÚÅ–åRSíDÑõÇâMZõûf€mÄ\MJ«Â«Z0D57Lëº!Åîì/‡E÷&²Ï/ε7žJØ=á©A¼*ß$‡¿ã;;;MüUJùÊóùV5º®3Œªøæ“A¯Ýþ…íLÜáÕ äöã…qiHHÑl6wO³XlÎo¶« Ïí»W_Í[ËÚóµ®T¤ï}2s‡éÂ1ܨý&Ãw½"ðYZвÐZ3¥1Tñİg›_–T^šTø›ò­S±rªG¡}Å8òîW3ÂMÀ4ÐýHŸR,—¬Q¨”±ºÀðBÕPׄf‡dQ²lbFa²$5Uµ@ PT®{FTŸ-`k¨s—APHþÖXÂã ä\°¾N˜ºÁû.~:h0¢xéDzg[œ¤Úc~«½×zzÙ·½ÏÓܧ5ˆ?7ØŸ.ÛRM¥þ+¯ôWU›ÀöjÂ1v,ùªG­VÖTZåj'{l!N+jÙñyƒ:qãÇ•vA«¥Š<³‘×]iP;L1µL~í ê< %bYâsk97ïݹuíq>ý—W7‘Ø#s#έzTðû>š•÷Ñ©x§ê›aP‹ñ¦S‚ø4J/˜ÊcÜH¬uõmÔ9:''%f¶*»LºBÀ›¨¨cÞ½eó³õeÕ—¤0^*ýb3ÜôhÙòwe‡ûùû'¾UEvàDgaø˜±°ì½Cëv»ufF•¡?5•s¿KÄ÷ÔÖ‰,æ»AaR:Ò«Û+ lý»½ó:æO}ó‡Ѓw@׫s_½V¬ÈœA¯ŸÈ‰óÙ½9|‹úÑñšBÏz¨΀³ë ~9qƒtBë_¾|yç“p ÷À´¥k`¹¥`©ªÓ|øZÒ΂³$ÊÛkPr¤šB¿ðô §EsÝæ™’Û¥R›/ý Æ~ZúîTS(jœPйy˜KD„có„¿(ÍR[©šà“Fß/°a Î#Ë.Ô1 “¡æF!êép/Â>™é<¨N¹è®Gä¼ {‚ƒHL}}–²Â1@×wˆO}òPB}A)6Aú‘~E=NB ©¨?©Š—d-@lݵPt²ú£Eï4·¾îˆÛ‹¾rçQ‰¹ÂãùQT‘á"Œg$÷v†ÉqE`û^Â0Ì• (bý}è¾ íyô÷M8q‘ì˜oÊã B[›nÔS£j†h>÷‰oeh”RΕ!œ²­*%šì^}â…?ÝëËŽá‰=ØZ`£™ù5JS«ÜÇ#šŽC£$=, ¨îØQ£„1—J WIyã”S jœlnä+ g”¬6B§(îÙ“]œCÊ+ôÀmlȨšÚü?yQ?ÿPK xºZ<·µÄ±IAR-STR912/deletelib.batUT ”LjK”LjKux êëdel %1 PK vºZ<IAR-STR912/source/UT LjKʈKux êëPKvºZ<€^ ”g =9IAR-STR912/source/91x_rtc.cUT LjKLjKux êëÕ[mOÛÊþL¥þ‡9çJ(¡¼Êi¹Ð ÇKyáØ¦U?!“lˆÕÄŽlŠn{~ûÙõúuá)µªïÎŒwæ™gwvãìl(.¨éuÐûç_-óô̽FãØNׄ›°A¾7ˆ@¥úöÍ´½ ƒž;e^‡ðßÝï—a<Ø„6ÇAùëºz ´Ùlâ ÜØ |p˜;%á–3´F1˜Q4gCnüµ³{°ÃGvŸY‘Æîvƒ+°hz3n$µîŒ½F4²YÜxCAØÚg³klƒfó¬BöEÇÙ¤d5u«ot ݱú=S·Á>Ó:èõ81àÌè´ cj'ƒ›Ôz_¡eZ(½‰ÏŸÈ"véýžmü}ž›ZZZW;5„ô´s¤±½#ܶL›\h[ý.ZpPÛkƒ}AKc¨õZ;Â%¸° èj-N¾æ¢…ÂF9X"„=G3{F ² þöŠÂÉYŒäö³çÇÎÛ7oßìl€é&sbÕÖ“/²ùO؃?åÄ1þ³Ü æ¼5ÿ|F ±C˜Ã9²ÝócŽÜƒ1s‡H”‡HÏG‹`àNÀ{¿‹ç¡wC“Y|7cC6zŠÉ’E´æùì9Ç8uq¶˜%‹7nè¹W“§„²dQÎÓ4¥ÇEõѶÉâü9çNp¢·öjxwãNæ¬~„=»à Î<¼ë}n³>ÔByìBÝŠÉË®¼ÏT™‘é:óo#² OŒ0Ù|Þ‹W,Qæb®X´AüƸ°CïÚ‹1ËÞ9_áÔIÙôgó8_KôŸñ wç{²‹ÅóÐÏu$Ãêâê.f/1M.H³·oþ÷ö Þ_ †cïz MhQÓí˜Ê•ƒã&ì6êÔÌÅAJ¿{w$î…Ø‰ñ–Ÿô_˜¸Y“¶?}‚ý:üÒ(÷sE`g,zì÷+û6‡/ö¢™ƒÃ½F÷E¸×ªhÜk$½–Çzm-‡4×D ×2|›°¯6÷°5il™¬YÕ$ÁçQФ2oH…Á4ÍJÊÏǪþ·Ê˜ÌÛrƤT¦Žz /Þ¹ÞøÞÆ<9>>¨oPÂÀ;Èu5ÚÔµO]¼'k¯×Wb²P>ŒâÞ*“üû=ˆ§3>?ãß&äa”PÐ>¨×P² ÞÚ*ÑÃ=òe‹™¾+ѳXÄâl7=cØ‹8NÝ!»Æ­.ÖÜÏ_Òñ¼‚vxÜ—5ºO&j[¿¸ÔÎOιSÜÓÚå%Šn=Ú=Ë´L[ ­-›Åtj¢„Ë–`ñs ‘¡(烘¶TT[‹i‚ï´ÄÙšwL®³‚prÅ(µu¬[ð£Ùø~Ð8ØÙ0|Ú–Àmèa@Ì_qþäùÐr¬4BôL¡M­‰Aa;WÖѳ·ÌÇ Üñä?š(ûéÓÞþbµ;æ†*Ý‹u¦UJ‹unû6tÃK*Iºx;ú¹Žajó+ש6[0YrXF}½ùûÎFË‹– ûªŠÔ$›oúuHâÑÔ¡£ª×Gr¥&‡Ç“‹•¸žÈ %x^%Vƒ_ÊT¥¡lƒy)²j%¸ÎÔóç1Si©9Á•"†EȰªT¦D×ì¤äÏ~4óÅ~2ŠÉÄ«X]š¿–ÚÄ §÷S€‹Üϻʭ£Y]% äzõKHÀ©¥Î)—R:,K­„gÁˆvÏzÂGRœZµ‡¡S¢Žöw„V…<Úìj•D×2þ<2óË¡ZmåtzOåtJ¹O%î*'*mQÁ·A'fO³¾ò{%¶Úüƒo†2y­\[4„C˜üðšvAb9™‡¬RŒQï£o¶&üì*=|eKMXÚ‰@lf.läK6ú¸uœ”P˜k| T“uÊz¶jà~ioŸgœP¡òI%ßh ”Ç­s&ÏK'µB£±+·Õ¹@¨!‹J\çý‚A%µ–ÔÈ»Á¥¼ÔD< ÙLr"=¨)‡"·³,tqKÅ(TDÓâ²ä}E0­(ËY™w¿¢%g¨ŠÛÉ|õùóÐ{auÇéÍ« —¤6/—à6È£¸-û%Üæed‰ÛÜ…\MIÕ#ÝmóÅIA£Fã}‰«B>Y–”ÆÇY…dA*ðŽËlçs[ZÏj5hж´¸ã3Îd-:–Kû\‡ HÙ¥Šln.çOÙ»Šnn%VëÍ9Vû $]-M— §ùÓ&Q†&„}fª ÛKpU"kêÞ/a«¨w3ºfNläk_9(Þ¤Xù´K_"¯ ¹¶€å‰†’æššç‰J‰è©J=åúý´-ø–cSÖ.H[ò©*™#xÅ›ªt¾Î®ºR•WrettÜ)Vèzà¼ëEøØ…´HŽG¸<½ÁÀõ‡‹ûY€¾x±ú0K(uQ'ÿPº¿4†×ŒÈZjî°6Y°Êr©ó`Rðï/;Á­ÂÔ™w=~es>è5Ú„fÃÝ„ì}J×d›µÞTDOÒ kþC%VÏÌü(÷óh€òJb[|6þQ•Yðê%V~ZžDz:Tæv²©Çœ‘›V!¯þNƒÝÚ1ß¼‰ï¸šøàu¦×tX“1q'|è©å´’ÁmC‚,%›ÍäÛ<°ï»+G’O–Ë™.¿1ŽÒå¥aüIO]—AQ ¯JÝxWú$|[O*¹^ršÄÕ°~s˜ áx ÖûœaÐû«Ù¶´î‰ÇçÁíc&_Rƒ+wðm>®J¥öçÍqîE^?Äå€<åƒeA>X9‘ékñ¡70ýøžÒæ¿+H:@qÐ;˜ëJH¥gÿÂÿƹ'Ðëicæ cžŒþ2I^Ú¦ãp¡kæ'G×Ê:ô7ƒ´)Šä¾Èë×iɱ¥¡æecÁ«bêˆù¶\ Ò4)¨¬µ›[µÚ)æÀžøsØ$ô=מÕuïÝ>ôl‡n=2Hž6\ÔŸï¿ÍmïhB"Ê"|ð|Ÿ6 :]PæsÇžX¡í¹`2ë‘„»VÈP©„ Á‚MI¸vr\??æÐÚð‘ùõ¨ÕxL|{Ε$ÚÍ;€A›ûÞw{ʰÂ7#m7 Ÿ,ŸÁláN¨kp„º^ù!t·vzþmú, bq–bшÛZë ëQ[û7@lÞª0«†ª›` {æ'e¬Â§[­s š½ánî´®¢wTêýÏ hû ?j]M¿ÎaêØ uŸ4óÝ‹7h:v(¦6Ôa¬Þ(cþÔÆÔ½{×1 ‚ḫŽùPØ6s†òQS¨GÜ¡p@T`ÜõÍòU­3ª}µcއºÖ1À¸Uú}Ї&\«p«ö»Ð×”ë¾ÊU*úgèjc”> ]š.þƒƒ"LÝPÿu‡Ì5¥]e Ü¨†`€£H ±‚N_ÐkQè‡ÂJ Q‰I¶öÀ¸C£%6Tôî± w† ¥«Âõ祵¨5 c lK{‘ZEÓÕ.«h$¿Ó5siK¾¾Gï½Û{wŒ¸Ü‰³ 5uøâ‡tþÓúà—$n<ü²ú:˜,ø[`äÛß)N„ÌÙ”Í^‚ƒHQ›í²KÌë|´0–¾ÌV+(¿[¾m}u^2+ã8Hñ2ôÈ®[ë&|ƒúç<ÒÞß°þÕ_™_á¯LÔÞe³}.ð\½Lu«Ÿ&ý×r¼ŽÃ,ÿÚƒJ¬Qѕ΃åºÌ¡®™,^hÒùºÏ”±‰E¶l 6]¦¹v˜‘ÈÚøÂÆ&ÛrìãlĹëæ Å˜o9à³o˜`0%@è‘„í“[ ‡k\{|°½ÇY0žðp%Ï¡œ–ùmxBõ žab¹ð•A¥vttQ¥1^,é ×7\„²Â6èžË¨aÌÂ…ï®7¼îƒs÷ݳ§²e3]nïÝÈéŽ Y$¡³´§0§¶gaú«+.W«Ò[®ÀèÜÝ+£ë·×W¹¿çRªNi'òðM‚]ÍX‘<ü@-æç‘ú{í¹VûW@ÿÖj°*3¼3#‘DfUDÓc‰´ÈòuXçW/ů^–_½_½˜_½_½4¿F)~²ü…üÅü…ü¥ù5Kñk–å×,ä×,æ×,ä×,ͯUŠ_«,¿V!¿V1¿V!¿Ö?I³ZÔ¶‘ùI)æ'e™Ÿ2?)f~RÈü¤ôÌž–âwZ–ßi!¿Ób~§…üNKó;+Åï¬,¿³B~g_r±GôΠ镦w^ŠÞyYzç…ôÎóé©­ÌŠº(ù¢,ä‹BÈÛ@þ±ËZ4·ÕŠêPk2ñü©í~‹êPælbÏl6ͬCç–ãò:Ëv||#ôX`fV§‡/-OWŸÃÕqÛ0÷l‘2kÙÕ¸K!©>XÙ56L<7´lWX ÿ3³¿-|qÈe»3Ï¿ñWÚR|´l•?q•Wc¬oÕØRnˆy›£7LmŸ ßµ7nûF¶+ö´8.£—oÁ'JzÅõ§$©!ý6gSú\¤£ð ÁKó¾›àŠÇ=Â3±Œ \Õá‡nw ÿ½Zå)Ânñê`NÀ–ñGêþëüYØŸw"GªÈÖHLóÎ/£ß¿ýV±& tht7Ö“ns—"ÚÀCÊÞ9Ö@ø*uxÿ>¡<2ae©âÇO•,Wp$@x‡h˜¨ â®.[%A‚9¿ÒG.múk nþ¤Ò›¤õ 7i¥öÜD̉½öKÜ1ølÆŠÏ¿@‚ïëUYC o&âzñ&ÌèEdc§ðþx)øÆ–à[¯=7Þ~sKøÍ-á7‹à§½S¡·».F èS; SºÿÄÚ*Ë=ùt'+¦œoj£å ±…¤w÷ªK86[*…œ¹ëÀ7@ç–’çͱô3ùu¼O ")Û0Z£…ãF·áœ¹¨Ù¡áù2ªtqµ9smÉÁÄF¤ÿÜÓðÉèK#ÊDG#Œ]šII´,øC2ÙOT…»¬ …}JT‡Ë‹ޑTKË‚/÷ÔQ®þJ—a™åÒÓƒyíÉFçÁâpy†:ý銧¥a+«׫%X=µä†&zRY*UÖ©Ìü,Ëjã¬s™/-U@I>•úˆÕ$-¦x]o蓊fëÁ¬+¢êRºˆ%¢D}¹óµ3fÖô:gáP[°² ˜{>¯ƒ3×Éko€b4“mÞi”TƒGâ=q¨x¬ÄYž³÷*YØÎª[.=¡Ä–Žü 1Þ2Ds”½‰…2mX@l ‚O\®%Þ¿o|©V±2NºÀ?®ußÓº òYƒ/HS#6åm d1®C:ص—vbîzS+´ø$¾+—w¦4xòü©ð©7¹!—jÓåS4¯’a±Ùë|©î>F}òíå)ƒ…aºˆ&šÏ ¸‰Q¿Úaö…⫟Ùì6deŒŽ†úh94vj¬Øû…‰¸;T÷„æ ™›3v|`Û4¶dÆ#F†ÇE’^ôwðf¼7¶(bbš"Jýí51 OÚ„€O.×$çŸM}ãžñõ©Üïg*±bß. î’…¡ã•Š[…ÈòWW1w9¯§ < UI¹Á=¿ëÊ!ðÎÃAf,à-ÂÁçV°(ŽÆ‡¸é¸G `퉯ÚwuÒ;B ѺÍ\žñB\Æ´ŸΧs:"šìV :W$²ûL£´ßgº—8¦àÙ&:: Ä䞃åNá‚üŒ®H½)ËË6:{2B,ýÛà²'þUQ$±kNdÍLˆ‡_ùœèNç§ó„Äž•ØÞ–Ãé'vHÜ£XüŽâXt•¾ûZ¹…ªçÆ­Í7V»ô(EW0jnéTsºž™ùÞ£p¯9ÿÚìF…\ï:\ýþ¬E!•n&¢ØÆÕäT>óÇ{¢«´¢,¾‚¦VV°^V°QV°YV°UVð¤¬àiYÁ³²‚J¿ŸA6„–¸úù»Åyue|€y/;éø?¸åìº2zr/ŸKÓG6ÉÝÙRvM”¾·Á'¾¥[‘Üó¨kÞ»€©»ÌÌð‹>ép6Ú-ýo?•¼å6¼øûcÉSEÉšõd´[)%nü¨0–oäË7³ä›ùò­,ùV¾üI–üI¾üi–üi¾üY–üY¾üy–üy¾üE–üÅR>zU»ÜñW2kq)sÑu’õÄó}Ì=—ƒÛûä£úˆƒÞæ­Ðÿ‹ŽÁ¿cÑQ>|JŸò“;­ºÒ›„Ô­þ6c%¬JMÉíªäFk½öÜëõ:kña³¢¬ Í­ÖÍŠ²¢9)êô¶T”æIQs[EYñuzÛ*ÊJ ¨¨¹µ¢¬ŒQ{F@Û*ÊJ%tX!+:ÞlA§_8¬Ë­/$q㙨‰>´ÌÉÛüù«ªwéôzZ_–ÄÞ»¿PKvºZ<3nH4ÍQ IAR-STR912/source/91x_wiu.cUT LjKLjKux êëíYmo›Hþ)ÿa.'ENÔ8/½WW©DÇH6ø7ʧˆÂ:^•€ÅBœö®÷#îßÌòbdž¼ÔI›J]UfgggfŸyf–ìïÖ h©; ZÃsÛ8í¹ptpð8î€ûIÌBæ§Iq_@ÝÒÍ]èòé]1¨Fþ<¼¹˜ñ¬í“„’¥“8ÅѪ2†Ü÷RGà25/e¨3)Bd, áƒ_÷ÿØ—–uàK­8lÈLø ŸJ%•vwŒɲi_ó€ ðÂÒ ƒ3c"§3/a0Î"ŸVŠ6ªzòAæõ¸Hãäc‡žÑ£#rã÷[n•s¿¬ºxXÌ5¹ÿ,6»=†¶îè¦ ŽÕuÏ[‡³ž¡öÀp kÙp:24ÅTu°Ìþ9(ÆÀÅÅ5Ö;C3ÌSPGŽk tÛÁp»=Ò©ZrÂ0qù@q Ë[?Ulù74lZ®T×A!°lM·åV87×Gy§ƒk ô¶Änˆ œQß}Eh5TÛÒûºêÚ–i¨8=¥ßÓráD‡žÞ× o('}]ªTÌsÐ ¥_á^ù)Å)Õ2ý¯zn(}ДrªçNÐnC$[HÚÏݶ ‡\èÚÖ@5¸¸\êë‚3 U1TLm?w FŽEÓáä|!Z¸"×±¬<„¦«¦®¡C¶ŽAÂøÎD£(œÒÈÛ‘|Tïonlnìï‚“zQà%ðȳ€ÁÞÒùs©f«äŽÉÖò[áçoåþF1!ƼNà*2Lx¥,{>ƒ óL–û £ýQc?ö½°tçËî×8Lø5ñYúqÊ6^Gå’FÔÆ£ubžk,bIœ8ðÄ[™`ÁÄQø#„‰s,ÿS/AÕYA*W†)«¶uñü4Ì4‘&™Ÿf “Õˆ¦YºØ}”âŽëÀ4–´A»{ͺp'/­µÂ£ÔãQîþóË,Éãä*ƧÊï)ÃÐ oy¡4ÑÊÒE;`Æ£ ›áÖÑêÄ“ÇũÊõÖR v—"¶³¹ñ÷æbTÈ&1wËûÀö²)„DÊ÷ ˆN$siØ{;°áŸã%e{oéw½!þZË2©8Møå%Æ ñÁ‚KV(äãV"7ÖIð8ßËæ×Ò›Z(M—ÛŠ‘ï ‘2‹ú “ÝûLøLÿ±P°Fícl?Õoÿ÷éßÜøœ“듎ÆÖXckŒ×¤qÂ.±Ó¥r›g0O¨FyY˜â”`)2w˜1QŸŽ%Ö_Näþ·è÷ÖçŽßå÷‚¿ÅQ;êèBž eÊÛ4ݺ¸ÀÕ¯@7©+Ýys·”f8¥ØWEAÆF$àÕ/ÄÀwq挧­Å°ÄãZež?™þC¨ÊݵûÍ&7œ¡ÄUóÓ ^%ÏÏáļ ÖŸam ƒzЊ9a×RS·ošdn°”èæì'ß<†›A¬^µèÍûWX“.òç†â¼JXl†÷Ÿ”u b35ixY]-Íç}/B”Õâ0g²¤Ìôo¿[ĶÊàz¡t½Š”˜Y’«×X{ v[¨Š™ÅÍa±eQØ¢þH&s’MSxÁ„Y!0Nâ+ã¦û,¿ì1±SUÒ¢–âõ¿_ëb“y}^©Ð…5Z~øOeN¡{nÏv­=_7NY„hL™sf”þÔæD)‡Î‚S~$«BPŸ {PC§jÛç™D½ (šA&C Îk³Ê< Úù¼ª¹ÓiX¶` æõ ®ˆäM¾°;oHoîºsÓ:h·_¾´«9¢Vöú¨ò¬Ì2 ,Üw¥E—øµ•vCï’2=µPR'Ìÿ (æòëÌíK]‰ £À£¦âƒÙÅk€LêB¤ù´s»+/X.úp«ˆTe¶åè.…¾Äº;Oÿ-Ñ7?ÃÕS­E|K"pˆ×–ù,üt\˜¹À¯Iî*¾m¼$"ré·aF5d^BN׃˜f+œý'òŸ²H~« À5ÜhŠWI>íòÝöù›òHšùÑ÷mÉÏpצ>( 2:¤7–@Jä…„nJ5˜£”¦Gìy2îú¬mì‘Hb.! Çʺ#N…s EÌé‘/žÚ7Œc-,(^òþ“„ŠŒP)qX@×”Ñ5Ëéet‡åtG2º£rºcÝq9݉Œî¤œîŒî]’R +°”N‘Ñ•êOIéO©¬?%¥?%­¿ï("%æ<8/€øß7HÚÏ:|¾Âh‚7¶C— S91±%–2¿ÖL8Ø *ó­Þb+ØnãyÜ%®~«9ËtQ…$”VrÅJ4”›Ü“ĸ•r“eÆÎ]ÒÜ¿K+GÇ6Ž%2£0‘`ü¯3rÖ@–Cà}´ÄÓ'4ðôÌ›ñ~iÍg7®7•šx(³;h™x4að=–0-èÂõ¾„%ÁÄPbýcw¥¥Äèƒ<ÜQ‘ŽM­Ò>{>/(-òô6 N¢ËfºË.@´’#æ÷fº)5ÔBëë†"ÛDZHÌyé¹·à ,Žû!'iö^E»~½ÏOx*žê¡³Æ0¥~`;<]•)±ô°£³h4Ïcð#óê16ä¡pK-»º)0û>cÿrc—ÍŠÌÈ]O5`4¸Ì_¶û½›‘ÞÅ‚ÒÀE4š²H‚ ¸¼Ï¡°ÕþF0)^ /e©_žEÆK˜/M /eédž—¦Œ—*0)^%¼”-1ò¼Êx©“âåHÂKÙ²%ÏË‘Œ—*0)^Ž%¼”-…ò¼Ëx©“âåDÂKÙò*ÏˉŒ—*0)^ÞIx)[²åyy'ãå]qœ†ÆŽÚbd’ÀÍ Z8ÊLèã/¥‰ÂÓ§ Ó lò:7¨ºÝbH;Þ¬ÄVµñ!æÄõ€Ù¥ëL©Ä$]’„æ´6´?3ŒÑ°,Û¡xާd¢“òÓ^ Î0 ¥•M(CKôãµ=|žJÐêÏ¢XaTźe2yî‚É2Ίµ mª^`ÐÁ”_Ò4¨Â铵ü¬â*Gõ|… òŒŠùŽò¢µlð¹&üáƒ9Ök¢pÏq˜–3!vj)k+‚11ÛŠñŸ#CKŸžª>ýäG³¾ÅüË2ÝÍ”&š mÖð¬\Y ?†ÛhÔñ¤ùi}÷Å‘ñÓœRM†Z8k(kºõÆ¿Ïá~ìýot%+²)••îÿûõUÝõ?ßý½NýÕ‚®1EÞ€ç[¡…ÛÌ còéÿ†WÒ“+µDkoSC|†“"9µ<Ì”åU|}B›ù`’ÚÎæ¤~,I·»RGÒCå•ä„)r›eåñ3^ŠKE…|cH¼–ázdšxÍ‚çD˸Ð4s½u瞳Ų çž8€±OœH­håD­ JÏ»;]J÷ãx´œîÇñh9ÝšãÑòwÇéƒôÀÄ,ÝÕË]²—ºb6Ö ]úNW†ò; yš="¾9_kÎßJª*Œ!á«Dá}|‰ˆË0YPã¡#w°û¤ñ~íó†²þ¹¨õEõ9ŒhB"f=®ÿnÉó¸ÿç)>Äú[³S–rODû’øGV<°ü¢”MÌ÷´ØQæ‘mVªî$üë)AÓO¹I°žÃ®g½x« ñ„[$Ì Ö1#^Nkàk kÜ=×ë[~0 ·Q¥18±ßÊ>_‰×—vxls_HÏÙHg^ÜP/3ñ—@9üÆg¶EïçnQ¡Ž_;ˆù´YqçÖ…ÀüÿZ’AGˆoÞíò{ø¾ñèÚ«º>Ò[Ñw÷¨çfÝ ÛÑYçˆY>Êá Ýh8 êÛlýœÎyá ïáÇ ˜ÐŸ>â˜C->–Pù •œt(9êðêU-búßÑgëI¯=ýú}ôýD4?ÑOþã[nÝk,ó‰ÍÛW™K•SÊÅÊì&Ÿ V‡]ü¼iOë«ÂŒþ PKvºZ<ÚbA’fIAR-STR912/source/91x_uart.cUT LjKLjKux êëí]{oÛ8ÿ{ ô;p÷€Âî¥í¾ÝMÇ–áüÈIJ{Åa(6 kK^IÎco÷>ÄÝ}à›!)‰zЖ’4Iwë?R[âü83Î ‡”ºû´àCjÝ:éŽ>úÁ¡EZÆkbZCgâ{tA'¡ï¹Î$ E¤=%}gAÉÈ^RÚä]óòdmûáó 6é¬Ã¹çùÓ&ÃntV«…3±CÇs‰Eí%6îÙ!P?‰k:ÅÆW»Í·»Œµ6ùHý)šÏŒ€ßY1Ýš;™!k+ß;w¦4 öbAÂ9%ÇÃ"7 /lŸ’ÙÚ ið°nùƒÜ:AèùWmüR´Z(Å›”­èÞ˼„MqO%ýàØ:ÔÈ‘¡™ÚÈ"æ¸o}êùt¨w‰n’þØ Çz¯3êjd<|&}h’Ž4ãzOî±i‡ša"Ü'Ý:ób7ô;–>C;èì*t¨HÞ;îZ&4"c£§¬+¸7$Ö˜˜±ô¡öœtæñÀÚA[Õ»ÆXh]Ëô®IÌÃÎ`@Fc‹ìkäPôÈ@ïì4Ù}&=Ý€Ö;ˆ¥øèØ™ÚßAr½3 ½Î°s ™\èí[/Ðp± ÝDúÆxˆ¼" €X¨»qŸ˜Ç ´X‡Qo—‹DŽM ;=ìN´…x“+‹ó–è a;úHë@†JÒÙµ0…·“iMÞ¾Eï>~ôøÑ.ðåNkœSÏnüAÌ¿8üûùÙËÁdÍ®2Ž|çýDxµ¢S:» È€„hŽKo$˜@d~F÷{2´ƒŸ T ã­¼uÒsûtAO°Éw‘ûj\öûýÞw¨h$m6ÁhnŒ"9ÙÆe£ÑhÅ8¼Q†! ¼‹#ï‚úP æ%Ù}ÊPØŠ¬Øß¥£CPQ’o¿`¢ÇbÙ%^¿K Ýü."T ÍèÕÚ×b€œö¦ž·Ú·'ÀÑ…ðoú“oà«xdÞ6RXYy3`Ÿ<: îY8Ï cì]ŸH:lJx[gG¶ï„W9 XÊw oªÀ9´ý)ã>˜B×s!ãXD Ë0 NÔ”`["+`­K㲯÷ÇzNi.‘½n#µ.‰qI°1a­ˆû>µîÎm?/37»‘5%ØÖž„`Ùu§ 5Út uˆ Í>þöö™‚µ!Ì%J¿+ë›*P Ëĉ[ 1ðmƒ« Z‘À9sí, ¢èÐ9›ëþ`' „í æ¨el`é¥` Zmc Ô,í –Ò@Å,uÔöq,ŠÌ Ó#ÆZe†,j–6¤Ø7 ¡™àu³ §ÿ s1J1= ·•±ˆ7äññ#Tòí~Ør&˜/iÚÂv¨î:aÁj£ ¸åØ çWÐM´À¸$+ ÍæÔCòé¬ oG€Ü'ôÊñ1õ°×‹š4„±\¬)[•@ºµZ‡ çé²M.ž’K2±]rJIc§I`™ÕBÄ€-Ý’õN C¯C²MFžKñ†AõïæoÜîÆïÜs¦²nkÜeƒõèŒ;ªËúãGÿâã |¡NíÆ*zb³‹gVã÷÷öXÃF¯2BÌîñIçhÿˆ©‚ÖNNX«m„˃úû­ {º™´üÿÐE@sý6KõÛ,Ûo³l¿­Rý¶ÊöÛÊõû;÷a·ûQÏ;å¬Ó·Í9{2üÅqÏÄü"ÁŠNœ™C§…“pqzI™A9nŒÈú7C S©x&>SÏÅ’S1÷y–íº É±ãbhvrWL°VkŸƒ™Û!™@ªd;.×ü˜9gkŸW^wæùKþ¾a R¬ÃïTT.e'§¾§Yus¯ƒö¾~ýR$W ¹îƒôz4ØTX¿h1„ôŒú=ëK~êV³>Ч½HßÞŒ§8ƒ®ñÏ×íW?‘S'ŒœcôÙ¸Ežì¦íïŽ)|b%eúrî.óý¶—UóR‰ý¹çó1CoEö¾…3Êc`CÖNx©øÂIÊ_r+˜…L&äiw˜Æ»y •Ã5#¸HN1M(S²XÂp Ü ¾ùɆ¿µÚÍmÃ)-œŠ†²+?¨‚ŸªÊÉÞ+„Ü·×SÓ´0eý5Œ4vëûô—Ø{­^Ú„åÏ{aØèÙhÑA6ý’âV£Q'ßï‰oÒ8å:H_Ø•F“sôÐKÌÑW‡Ï?ôÝ‘¹ä¦d­ÖÄ®Ÿ’Z¸NvI­ù:¾‘SS¤ˆzÇ>¡Z}ßèl¦Ÿ]ÒlHÓ;Íæ,ö2§E"ƒúŒ ó‹¢ó4;}ÎN >yÀ§äõË:ù+yÕ¨smz#ƒÅkê;ƒl¾j7_™7·îÍëù¬­gðò&^Tdï›Ì½Beû,¦± T±ìïÚoÕ’§á’&Ôy9ÙŠ¼¢`H“H"Ê>½§¢˜„ÝbA#H¤‰¸á—Ù:x«ïf5‘ÈoãQ†Ê8nѶÓB—$¡$][ÿÐûStFôã´À…ã­ÄæòÅ%OƒåA¢OEºCB¡)™þÇÉ‹z–k VYŠû—È7…ÅžÂ> *AqOK.£r!Ðw`ÄÔžÌsû’.OÁ ^8ö Æ¥uµzY}¼’g2/Ì™/€=\$5‚éƒË• ײ2*’ãÌ’\¡yÙOnJ,I>É}Û{¯¦LÒÉÂümSÚCÒ Øx:%hâdh¼{-Ò›ÒQ&êª(â˜n@cá@)Ö%x— ÜIyW…ìk$Bî=›"±Þîç¤wì"ºËi¡oàZ¤¨¤K…ËØ*küõ6ÅD/Ìl«M\z®ÍÌ›Ö2ŠË„Ÿqˆ ‚+šÕv3Q¼ypÆ«xm ¯½`º‰•ygFjÑ5LJDK™ŠðQ‰Æùô .„! ¹BÍÚƒqTòÀÕ³AQJ_¤m¸²q6ÇÇsë2gyoñ¾êsO¡o2ýXˆõ׫PQìþ"ÓOpߎ™IʈC$ðÖþïyУbòíê©$æôyñÜ„œ†Þ[ž:.«¶)…˜y h$¼ÄÝV4—å9Ÿ#ë®æûžß&âa?¹Ê±ýKÃ÷2¯Âì@ø0}T£@a߯bÐ uΩå,)øÂ6¿ ^@ïX Íòm7X:€}»7 •¨{¦Ñ&ð§"U·TÝ^5ª®e¶ žËª&Ÿ¢é[hn! ~µ10òœÅpÝ|5Ûaé^2&é`$ù¹ìBshv“…¦U"ÌUƒ†öï ö®Þ°³!rÅu!isé?".ÙÌž(–ª`uÓP]#¯žYÈðM™Gôé/)Âj£z>t/ÒŸ6ë×ÎKt…ÂM€5“ì° ¾c{ÁCvP? åòŒ K,æ,ŠÌ·ÉÚCr'±=oñ'‰¾’œº–¹—ûr£ž­ÜÃ|ÆŽ¥”4K¡t)òßòä÷[tB¶*.*†“0è/m1 ó,F“",r9ó½%#¼w‘bâÅ‹S#ìë­±q™$F[hÿÜ+in§Š9ÿVÖi™ÅuMj/;>žòäWçq“üÏà‰Ã'¿ó"÷ ¢S†Bz±g»Eã–e0n(ƒ‘•Ꮍ\thøkøø¼1î—}+›ÝÉdO×ÝTÐRãi:SÀQ—ÊŠŽ®—­™]¯ç'Ùž@‘쀆x u¾Š×s:ù9À‰BúE’Îð1Ø-n¹€‰º^x×Å2<¦ž]{0®q‚üWšo°d¡• ]'ŠBOÙ‘­2¬®Õ&§¬¼U4UÙZñÊV5¹¨5cE­jô¢ÂR¶9ßðÑ–«ðJJÌØÆ»X¾_Ô_/IŽÆ`ðREv8Jš›J0†,UŠ›jBí¯ƒ+>[ ~-MÇÊÄ5¸ÒQ©¯a_”-—‡ÛZ.U¢\lkQ¸<”¢4,~_qSy¸2_EâòùRqÚ\Á¸„HéGÊWä‘J#=aÒsòQ¤üA÷¨'€cñ§ÕΞw'õÝ&ëé¦éu ²Ù±õÜàãê·c5øÉÍiª°ì·Á)²‡ïÏ|?´©)[yoJK³x5ŽÕ&\*Èô0Ä ÉÝ/ÅÄB_i9\¹ý`Ç'6t;=°ì¡ç>š#7 ü…ç†Àƒ>ö޼9‚‘s… ½zðNùzqí¹Û.©¡®¢K?€üÕƒ¡Öu¹œ{®yþlä\‘Ê}'BXfF`„á MIåÎëåímYÎP„²Ý¡º·¤BRéö¥ÂŒ´lø×Þ…àÌç]"834ýYôÅ ÌV — Ãm,êŽ/Ò¸/Œüà[|î(;¸¸o Ø¥e¸ KÊÞʺIÙ«j畸¬n`î¡7ö‰§¦né#¬ñ‘}®š:œŸÚ M8ž}u¤é0 >€j -PmŒŸ}ct ÚIJÇCÝ´àܰOˆLmL Œ†UÛÀÔU“ÞÅ “ÀûͶp%›}ݤªpÙì1Xê™¶1Ô·Aµ¨¹aÖd`o+64s¬tÍ6Ç#C³À:Qm8ÔáDôa`¨‡ŠTG o˜¸öÖÅ>‰¸H,ýý÷ÜPÐW‡ê±Î:A´âФ-D€6`Ý6 ‹táÈéÀa 6†SyG`Mð ¥c¨Žú;¬K0±tª}?äF #˜Œò`±!Ùª1Òû¸C¦Ž ÿïp£ÈpÒFGòî­}çù3òßÎ °"g1u‚)x w¾š"xÙú"Rÿ™ˆù!ñ)—?ÄšŒ¸ÄŸgvWþt…§¼·ˆP0s\—È™âIqsˆ&,qà»Î"“èb¨ZÿŠ+w¾*µµû†UªÞùzÄ.½:ȱÉÏ@ÝN±ºa_X㉩UªæuèÂ8^98ÐÝjËOæÚ <çÓü6T’˜„)Í"ŸØ’°lö¬ÃG[®}oØÐŸ"Í_̼Ï+eÞ´üUࢭ¸Â.©DÿLþØÜçȲÌ3LÔé´F^ò7î•xÑ·-øÏógpÓEåo¼ ÖÀÄ( 77ÈýM^;H-}AÀšíàvÆfµDÄ>)ñ=)µhk56pK«"2ïö¢$01PF{tpúÈXx‡£õð yÎÜû/JYYì¾ô³&â¶#Ÿ”yñuÎjá¢QU+qæ+DY~ËU”§š#hØ]Eù’¬ÀDÑ*XT îöƒŸšfÃÏŸ}'ÓÀÒ&êÉá)Âui’Žn\\àº[À¼ßæ>m¶2VKZ $\…°Zà0DO“´Øù2qUiLˆ?›QA<¨Á£È0ßc­B®Ùà ÔZBZ…~ëƒÕ2†?€]zø«·øÌ·†l÷ \"×›yØ›©‹ÕÕ',K¥:h˜c·Í59šc,w€(v|Âdd 3>÷¿à†ÄÖÙãŠÁ×K8ïÇ®6ic¢¿S²Î3L¤ÔƒTshþ’à  n#ÈæƒvëA˜“wÒ@¯A ôºÔåƒöA»|ЛzÐÄ:<9åÄÛFЀz×ðpñæ[„Ò`úH·¹š”“èÕ:U 6¡©£:TƒQ µZ›m° µ¯Õéj0‹‰jÚþh4ØA)|T“a`T—j° £«ÕL¥Á40ªfŽt›¼…uZ£«Û`U§«Á6gýšçÕm° Ó®{ÊÝÛ87ê&J·Á6ô_l#5Ž"ªÁ6(Já¢lƒ¢º\TƒmPÔ.Õ`Ø×œOøžºÁ6NÞj|”"ÆœìBt&Qä4JÇA:аaé6øYBÑíÍ{Y•8š;Ÿ£¨PŒ«OˆØj·Kïq#á”}rÓ›ÁFV~âeË›¤âw–ÒúÐyù3΋à÷LâO?åuÂ?âÞ'©PÀ†ßÚg·ÐkwÒiŽ”'K×­ózÂ~Œ( #î@zDDF×g˜ÈS®ÍˆÛ´H¢$­ç€$­Ï@’Öƒ¤õ<”¤õ9”¤õE”¤õÍ´ž¾…äsÚ!NùùBžj¬?] €Û=²oM‡k¤<Ù$€¶ó÷;èuUÊ“MN?BôöÍk÷ýÜÚ}r6 8®‹ÂžÇÃäð÷z7¹¨ û8®)§_Ü%ÁOÕóÆ:h=OæÎ)Kö©"îQXûimeÝÚ¼]u™¶+øüQZukTŒ÷-´U EdX¦:­ËÃÙ–9‡ö”XºË€xòEÞ5, ö ‹¯åÙFèDvÌͽÏ4òÌðLñ!dÉßÍ_Ù+¥êŠàd"³R-ŽWqœîöÂÓ, ÖåGJ'ým‰úhFãÅ×dvÅ6É­—?Ÿ©æþƒW[:£Œk}Z¼9‚Lšc`™p¡8 ÄV)Wv8 ¹²“äÊÈ•J®ìäPre§ˆ’+;IŠÆŽÖ¬¦Mì~‹ß´T.#JB§Ãâ$Ìÿ :äpIåõ6þà1¹—ÞçK²+‘Ÿ…÷Ý\ËO#-75ã ܦ%ìvéÓ><‘äé¾um>ϵ”†‰lÐL¥3Õ3ÿoÐG²,ÉêfIç~ÍÉ$…ôðe¦¥1ƒªÒÖ4™ªl –¯«s@’Ðf IhAZJÚJÚ"êoHhÅV튑˜¿Ðt·Wqñ.£5亮ccÙb_ž”1ë¹WS*0þ—Hœ•b é$Âlâç)7…I¦%™–dZ’iP’iåQ’iåQޥç·’'þÃHw±§UÑâ]ÕßöºqANLÖC¿̆g½Ã€rÛ)J2BH2 $!HFÈCIF˜CIFXDIF(arq×És–{åƒßo …ñ^Õâ/¸î¯Ç$Y;Ö9õ¦–GÞ ¾‘|6­M>Î&Û567¢äëá­ô5xö銜Îã,¦Åù1«ÙÀ÷²BfKß&KF›‚$£Í@’Ñ‚d´<”d´9”d´E”d´,ˆ’ÊòDË›N´¬ìߔɻòoɉ¯‰Sƒ·ÜÌ üâE˜沃üks®ƒyy§Lty_iYw¶Ÿ”ò3óý f¥s\Ì“WRÓëS€œ_ãw…c5ЏÂèµtŵÄPPÑn+E¶¸¢WâŠÕÔóº•EXÏ^+=]a=oZéÙÖóV\OL›½k¥h ®Hiá(?oÒÃUÔÂ'0J/¬©…_ y€°¢~¦ŠZø…¡ÖBO ¿@óaE-CœÒ«jáâ÷qЦt–Ômî/‚U S×Ð [G'â7•¢m¡ä¢'_>¢»;»; Ô+ôƒŒ²jÿÙ‹0ßr‰oJµcò&6ˆù U…ô~ÊFlü™$¬„ˆhSÇ·ù‰È"}á`HÕ( S_ô½ä+4ï:½ÙÁµJÌR—_3+K%)bZzs…Xb–$3JI¬KòâNO9½°Ïˆ›­¦Xä…—]¢¯ÎHöÖöL!O+Ú^à¸Å½€ÿ§9ïtw0eH8a±@Ì®°a4"SxY 0Wºˆ¥AÆD{ļŸfi¹ç2Úp‹Üï…pÉ  Øñ[$%sD¹õÎõ˜x`eÐ6˜QÈhÃfi‡«/»0ên">Zôp-ÿæbjhl¼7³³¾»óçî̾î>Qm8¦pÈ×Ñ⮳²ûðº³6\ŒÍÁâù~xx• $Sæó1g£Ê`™z1ÊÁÅæÐÁIã £ 2ˆö_"Š–×þªô6L#N¥„½ò~~̺ UH'^uJ€…©ÇCé5ü2æWY,gXŽ£øZ~ÆO‹>ËåUƒ~×)ñXB¼¯pãÞªëeÞPnðqmewÿs¹ÞÃññBý¿ÐCê~uâÉ€«=8ƒž“\òôˆ”¦­…Ìü«éh"TqTC„ä·Ãf»õá÷J wÇk[ÒQµ\ØdfŽQÿô©õA`<Ð?,HØ‚¡ PæÅ›m]RñBãIa¬€nìQÚP‹„(K%Æ£§¡Ç1ñü4Ä÷õ§¡Û¶ÔoÃQ”aŠ£ÈÕÂÓ÷¥_6Ù¸Øì×Â#GPð?âûÜõönɰ%¿?Èñðe×c_ú„º_.¦ô+8Eõ›—òGš~¹®oQZ+ àí„û¸åxGDz?dFßa9œ;¸¶Eíñd‹y*÷9YYê8¥ö).á¶©Zæk}¥{ZsJ§³C–„e‘+ý”¼¹Èÿ MNYÚ ¼+'õÒ,©ÌuÂü¯ $˜(ÕÍÆ<:VtL¥Õcòlù—NeÎ]OÚ…nr0Š!ªOFTH¸Ä+Yw3•0… K”(¢[šeH¶×-)sÓ²ÛÀD´*O䳆n½EÑôÙußoÃ\:â¼ÏícŸÛ†Ý>‡¥ø>^ ÅsCÁýôä¢ßBv‹™M÷b4£$jŽîÒ‰Óëš[ÿ&ï3ó¨® õõƒ\ö±¬ê¬jÍ'aÀ|È=Vøjµ¢9»cÕºN0Ò’1çºq wŠÍ¼©?ÈÿfݹD/‘VõòEÍèZ¶ Øz…¶Ñg­:¯|çSK'ÜÕ²F»‹w> ò5÷ûW(\Bº¨U¤ÙÁrUš—£5Yü*RßפSÒ¶E£‹VTžefx —x_ÿmëâ@D*=Ц2a¬œ.yÀxò±ëß.ƒ¶k>hS4{ÁÉ•d¹q/»ðH³×{sÓ#Z‰9Ž]~,“±”[i•^¦rò[žN(}°q׳ÄÅŽT·D1¿?æõ»¶¸__˜ÛüñT75úóNÇèé¹ïþPKvºZ<®ëUQ6ë‹IAR-STR912/source/91x_can.cUT LjKLjKux êëíiSÛHös¦jþCïnÕ–á° 9’LùAŒ$rÔTж ÊÉ+ÉìÌìoß÷ú[RK–ÈЕ ¶Ôýúõëw÷áí§ŠB*í*i>úÁ¡EµÚsbZ}wøÎÔEï¹£¨šþøÃSÒu§Ø‰ËùWýêdd{[#¬ÑœGç~@ä²GúíiÎfSwdG®ï˱/°rÇŽ€„ÑÃpríÙvýå6Ål¼s‚[Ô·j´ŽwFÄЭs7$Älø_ܱ{:%ѹCÚÍ ýIti™Ì½¶ ·Ô DîÐ #?øº‡ŸaâEb ñn7;À:—7ø[ÀØ:ÔÈ‘¡™ÚÀ"æ°k½oy¨·‰n’îÐ Çz§9hkd8è}$M½o’¦m†ïôŽ>8 ícÓö5ÃDpïu똋¾Ðмߴôá€ÚAÓ O¡CÝÀæã¶eB%24:šA»‚w}b ‰Ù|§Kïk[”Ÿ C`÷¬ äT½m µžÖ¶Œá@o›ÄÐ:0 C"éôÙÂ×É$%ož£·üáǶ/o4£Hm^» ̸ ù»ÐçO? Gsú”ö¸_PKD_gÎØ™\ ì_‚Ð\ϹָR/lP£×#ƒx-Jˆ¤Oq‹U÷¹ºº:Ñ;'}óí†øÜ4Z¤DáSºxtýà‚jݾþFloLšÁ©LçÎèGÐhä‹=Äú¨³áÁb¦Ø$°½3‡øj݋܉‹À¾ØÐø ìÅâñ™Àó0‚~í`œ °r®"ÇCc½–¯<ꛞ™p.4šƒÏG…ú†DŒ'€põIå•Êâ+Ù$rÍjµªSš.Ñœü“HÀ«(~ZWÿ ur.´L`‹O6þ_U4AMðA¢É¢‘iuNÊ¢2¯?¯V*I<äÑl$c«]½èv«äÕ+ÒñLtYL,Úer=ŠŽ’]e()F’~QŒq†ºLú¹ 탕 ñI¯ô—ùÍR¯Ë¨fú:\ÖW†Šúûƒ¬À€\ã#km§š‹%nŠ,c‚bŠ`_«QdY Š”@.E‘$ž2KMTl&˜U9ÎDûC¹½J(î*À³&³{†BŠ1d3‘‡¡€‘ÀPœ¡"æ  £hGÔ,Fî…ëņÛÁIà_ȯgvF ¥l 9ŸœÅJ:gõ ‚$ü|¹ANƒ¢^¡ï›uŽÏ ªê †:k¿dªå%`â7;ôÍsö@‹;ÝxxÂãùb®}:½Ž{È-µöW4ô³ÀÙdƒgI’°ñ„9%LiÛžE[„¿~"¯ÉïÜrtFj"ZÐÇëB,S;¨³? BÌ¿'¤eQcOd¢×â»ôß3#€äh¶w ©×jä7» ® ÿÕ)ô]²øóŒ»9w%ˆ; ñl)Ä]D„µCÿÅ;/bãÙGòrk‡,þ(!Öð`Zëm0y–5ƒÕ`ëâ¿<eˆ„X'}¡ ÇÄ?÷Sl("{LD>† +3$ÂÆŠÜ™ï4ÈuÇÑ»•/>ˆù¾²»kr=¼ÙBS4‚Ì×ߣÔï8ºçFå]V—=xà(מºÿ*‹$ËÌJçN`O%GÔ¼w µìù4ŠfJà„NĤ4Ü*›îÍæÒ öÈÀ÷œü&ËÀ ç‘ ïºà 'šqšêºàn¶÷!_˼ÁýÇ~G‰ÝFôqJÄü¦¢7ªr Ö4ÛÇ'Í£ÖÚ¦rr-6´¦aªûñ ¶Ÿ¦Å Éâ°€wÅtE.¼Žn&fà10þd#ªb­bö-B–#fz±Ù£‘ŒÑ82!#áÌa[eFBWRšš!èøTÃyÂW}ìІmã¤ÝÖÀÿK6Ú|C_Ò¹8Š #d:Q‹9XUCþnQ¿çØ_œ¸ãÔsË Ï×+Æ iDìÉ“"†ÈfÀÜé4$Ž=:OQŽ\8§ —ntNÜ(” ÞÖ“Ä%REJ‹Õå¹ H,gÊ% JN²0æã•„&W ¶žÐ²>_LS9nê ·D/I?2'¹®ËB ˆšöóªs¶§µÀ×­¯Ÿc±,©ò@Íg!p^ƒ!-yTµÄ†(ù›7Ý‹íÓ÷ð˜¼ßÚ]ÝÃÍ–„ ,ô.Æ.œ¦’Šß|Ó² `@)@æ•>íSgï2pqå—PTôÍbçX–q„Àjû„‹9M›bMd×[ö|L äº#Ðv#{ Z‹Foëf~6ä•"ù…·ÁÉCU:çÞ‘¬GÒð2¼¿Is8u™÷Uú9»p¼´387lVBûb†ëÛ¨ü·”úœ°eð¸r1Ȫ7§¶çÔ‰.ǃ(AêÏ·$Ü2…áÖØKbdO¨éI#”î:Á%½Œ…=£ðó%LÂWotŽ»Bæÿý{~1#ïÝqtžACô§š\UÉÁkWMðMÌºí©¸<ÑA© ª5vË{åL!Þ¶:d"Oµ!O—Š ö‘¦M©² f*E¹4ݺŸV‡qªôÍ̲ëZm}œ³ZyªªÎFçL×Mèþœ @/6 í3t­'öÈÙ tiõ Íc×¶df¦™3<¡*5\s†¹u'pνñq¦¡C·ÂÈùiHΨ€E¥By/ì‡gÃÓÏ¿Ö>mµ ˜ŽEoÆIëØüX%¯ÁJW±fØè˜™›J‘ÏB©—…R¡ÐÇüiã.<Ûco:c6€X Ãñmžaà¨`ÿô³q—©*ì(\†ß/Â3hšvkûI¨Œ»6¸è`H·SÏQùk‘hAà&ðßÂX@Od\¨¸—g8±l⨶fš˜º⃹©ÀáË_œ¤Å@4Ã82Is Ül¹“¯à.jMؼ AäONÜÉë]“à²ÉžQXÈo•ÊQƒÊÑï a¢C¦õ'‘I ³/ì|:yo$§üWí7Í·%«6VÉš¸CÍöJÖî4­fs…º­ýBôë,øÈ¯Ðr«4—Áh.‡Ño/­ÒYÚOgÑQ^ÖR-Y5óX£N~âü»Ïò㜹àÞ…ö¶®VÒÜX¾M{[r}éœØì64x¦lwŒ9«t7‹mmtã#®‹SW #Š0?g¾HëApï…nÉš‡tc’$aJF’#ÛChlþtê_ÆÉ°Ð2À él[¸o‚TâÌ‘ÞÙ õúæ©‹é¹¥Íq¿6—6ïmÆ¿hóü¶¬<Ï;1žB¸%ÃÉb.Æó·gD y4£×6£ Û%f„MÎÀBžå©(°ÆØ>ô;:›¥B»‹µ›XÛiæ¤ ç6ÿUŽG‰üÕjÎkæ8I¦ÛU¼kІâD‘h9¼h@Rqnhuê(Žõ”Gk‰ë¯@S!QQ³d@`$‚c”<ƒ‘Öäg9hÀóÕÇÈ¡D)ض ÖÉÛ‘ÓœNΉ-l…‚¸j é ‡‹%£´ÿ×GïíF×̼%ÖI©=}͘=ªŠË¶-¹äÙiÀߟ~ªÆJ ³ÜãÆO×ÈŠ†3uìÐáqá“%lÈk+£Ôó|ûYïG§sýNg’…îÓªe»gèëhБ¼.ëƒñ‹i ´÷à~å[—ûj9Lˆd…p¬ÆÆÙ-7¸‘F¤ZBzï Žv,ÖÅàî"ã„ÌÚ¶s•Ø—.+£Åk~žƒtÐØvP,TrXÊië!iKž¼áÛ²*CžóõD¥1Ó&¢Ò‘íÁǧbNåÝF%6å©õ,$Õ† Ð^“ÿQäP% ßr½´ý€ÙcÊRòe"¸ARp2øbQàO¥ Ê2¢ „œdBI•ÇZSªœÛ§Œw>Û|/6ŠŒã/é9Θ§ádf)3ä¢x½Tü]:ô.uçܺbXòO9è’ö¢qâÁ¤0#H–$ñrM{9½×®´Z­Vå¡sâø?—“Í7ú8?p¥,s1‚Š; 2}|3úŠ TPq S3=àcì¡«ui"(eÆ\zÀl<<ˆ;ìLG9bÇ£Uvâ>XŒ_ëŸ^½¢÷$×>eý†ZÔªí¨5rµr1z¦´›(£j@Ï?­¦œîØ2XªzE‡Hé šˆj6PCðTøxk}ÁK¦lÔ¿Nw#<þúÎV5¡  ¬ÆäòÜñÈ™Ñ=ÛËV:kyC=óU u׸R!ºÏ[0*ïFþA¼Z3Λ%Â|Lè}äÏ\ÞïCq#QŒ˜(”÷!¡f`i`f×gÊÒžð$éâŸóB¿òo4rïmÙ²ÂÃÕÒQgÒ}4ÔpªÎS=í<­`Ü–óÉùU+BÇü¬ £iFøV¼´ µJúÈêƒßà#³Ê“ ßì,J^[ð‘Ö{ö3U2Žïï×.u»+ºƒjØ. Ô‰XŽDuŸdÛþAF5Ó¼¼-ª^UôH[©›q7¼LvoTãE—”]>6®DsáCÒ£RÉú̷ñÎÁ5J7D?q?Û .dèCK Ð˪¢Y£ Ÿ†ªŸ‚~ùýìæ÷ÓRŽçY~?­‚ñÂp6OµK¬ªdî|Õ¾¸™»0=ªdlÚV¡å3>ÆÿÄýæëèÍ–Œ†I^2Í䈬ĉ¥™’^Çoô­h¸v~OpÏJSU¤Èã•;Á1ëRã)9xTä×)ESW¥È‹y„L£ñjZWƒègØ%]½§ñýPKvºZ<;\™"IAR-STR912/source/91x_wdg.cUT LjKLjKux êëÕZms£Fþî*ÿ‡N®jOríÚ²ë.ÉÙµ©Â€l*ò¶k?©0Œ¬© P`Xgï²ù÷‹¯{P­ã—løb‰éyº§_žéùè ã>}võÁ±..=8¾×›ò MXÄ‘&12蚺¿wc1°ýƒê9…ÿ:ï’Ðr±LR¨?§0Õ ÐÖ눾àI óW$lø‚!fš °²,g! þytüÑ´ìnXšÑŒãÑœÀ² åk R¡{KžÁ‚,[§ÉG² ü(±dpk\@–,ăŸ2Xäq@3³C„z懌»ä™HÒO§ôqrB‹ø¾±ˆ“rìíc}‹‹½K®Ó5mÜÙØ»Õn/-ý,Æ3.®-C³uföähÖÔÍÃ9³˰ì Я]o65—àn-ï“KX6NŸjž5³Á1/4G¾E…–CÓkÝsQfŽa:RŽMÁ›«Ý˜àYSóPæ*D÷zâ½¥LµtgfNLÝsf¶¥»à^j“ Ø3ÎM¸4'L,í|bJHÍþ†å ô[²lõ•¢™¶kþûWni0´©vaºj¨íФÐÐ'jÙŽåÒÆÎlJ¶ ‚xä»ÙÜktZåCÍ6ŽÔ’àÚ5aª&œØx‹fРr–²mã/‚Õ,Û4pAމN²ä;¢aidÓ“ÏŸÑGû{û{GhWD9•Ô»'?„ù7®ðàÛ’5–ßn¿Í‚\¾EíW)ÿH!>­YÈO1‚´×ÇìI«R>’¨Ä3fB²=Éc<,Móµ€qä߃\z¡eçã‰v17u€Ñ¯£ÑèøKpRöKÎ(·¡,O5¡*0Wø©8rE²†€YÚÐÕû¹-`NúD‡DÆã±Qé)]ºòqyZžl食rÿ.zJöˆ»GvF>E?fL r”3ØRWn´ˆ„rîÑŠ{Ÿ¸Â|ÖGîååjÕ~~*#m0+æ¢c«=Ҹñÿ _ÊÝuÍPhÉR?BÏ–> ó”ªÌÏ#‰×zj;2RÍ:õ¶ÁNbF³\ÔG6y·ž÷Á|LxXóÏ€¾÷÷þK¡põë¹vu~%]áвó9J¿Ó¦½hxpt°å­<±¥´ÌÃ]0†åöâ(„d±P û{Ÿ_ _úÆiˆÞ¤Á†1ª’eNb–•TžÉ‰9öe+¶ºCWàÊF_ÅÄÁ2Lî!Íã˜Ç÷°JB¦ò¨9ýÝô}Š£ðÊs¯Xz¦j  œ%y0¢$øºÕÆB®~¿ýf®­ï tH¤WÌ3?*6³nc72ïi¿Ú˜Ùĉ?Ü"%$FòÚ%Ö[\V‰ê´àA’†SEÆ­YÀœ…)¿öSÔ(É›ÇzUÞø’¢ûÒšCx¿»¾ƒ$>aà—¿ÏSudäñ"IWê3~êØ¾¶âì*Ëè*K™š|1èJÀF…t–ÈrWw½ =ôn&E úYñ¡(L•ð2åßý¨;ð¦¯ø>«ÂaQÆ:Q Oß(êQñ[[…#Øè(ÊS/®»©â²»¨µnø•SpG/œõ£¿“åÝ~³\N=+mï  "ÍmÖì  Iî‹Pƒw¥ãv„†–Ø ö[ ì6¼oáu¹M_…ÔfƪïÇJy¦>÷”|»mdx–ìbö€´C8¨::ÖŠªñÀq¯ï$%ÕÑ%eö• úpP:×äÒ+@¹ñcvª\jDHÙ9ÚJÈŽLD„ g­­+&ªä“çH!î>ör‚¶!W‡;NZªA‘&›óB¥¡Mõ£é™ú¬þ”I¿­¨•ê b~?Zù›måɺ®»§æª^êñN“Š*‰æ'öé†Xèøl÷øÉ–Q¯Ü”xŠJ]½õë©7W½Õœ©jn—s ‹4ñZ¼-®Ú¢ðOÛUþÕµ…Ã{K½Vé=)·IV –k×M-cZU¤¼mÚµõ*ÞÆzû½…ýºÙ|ÁDQîùŒÃUÿ[©ú8ÖÎ/LZ­_Á0ÎÔ÷lמ†¾·p¦ˆš>}òzŽkÃк±!¾:ðöÝ$tn^M‘B^…מé«¥ òré:S+t¼˜¶uƒÄ]+´ O?A ‚•=CâÖßOÚoO¨dxoû¶h¿jÑv0õ%es7¯æ(ÙÒ÷¾83;Ëu!¼¶ÁÔxóðÖòm˜¯Sl¼"¬v|¡pNzþ×~&JH*ñ[F )zö¦¨`›?+Sþ$6/TUCš`è=óƒ4Ô^Í5¹]y Ÿ«L ìmDQd ô™ÚcÍ@zc}@ G8˜¤9å×ã’-¶¡<ìž0•àÒPa wUx÷1e-Ò‚ñÈ‹™phÊÚPí…Æ*1ùܡМTȬ%wè“§Ož>9yÚbê®Ð¥^n}!Ï_Æ~Ž¢ÆõÏÙžÀ›ƒG|ׇo¶"Ní,BÛŸ[S®mkF\b½(ØáØ÷¦– Î.4àG¾ócVøuiÏìù6,s 7gao-#å‰Qï0°‚Ï$˜Óû¿ðÈÃÉèÃ`2?’ݺkµÚ­,•>QIy*¥=Q‡èr1R½Pu5#EÖºëõÞõòT’€×Û/IÀë·^^K½ÿ¾ßžªkA¸µ[yn” ƒ ™pS{BnRž›$â&å¹u‹Ü²Z2no[ynY-Õo½"·î@ž(}U§dS8] c7™æ·säj¿X¾c}r·q®Çh’ƹ<ôÐÏóæµ8nÄÿ¦R–ȸµÖ»½h‚™%i[[8¡ ê>p,×ù/13†¥M“àKâæÔ[tÐk1ß¾"É ÆÞÐÃÄÊñ‘[îê`³VnHÈ;$àpW6M¶H7ËU˜¦$}Ýuà–ôdÃL­|"võ½ha¯ñO@3Ò(t)qi7ú*L÷Ó¡·°ñÁØWþ¢ø`·Ó/ž3KÙü?šÄ]2YùOŸ8ó#|zggØ u|ŸþÞ>>FªoøÀP.'òè݈ª;FëM&تýx8>EBý[ðŒòJú·€Ì©s: |Ç?¶Ø5¸K¯…Ü%ÆýuwüG( T~—‘C¦ø0 *„ mŒÔ/'SÆÎx\ŒH©Òž˜läÆÒ£¹_… S¹ëöÚ!Þ5ÐÑ8êÌ6ðÛIvcÇMFâ(¯âó¬EЕ9xRw_þŽßÞ,µFf JÁµ@ù¶ jÓKè×›~žÞÊŸÚõéÕÙ•]S’+jÃÑ¥ÉÚ¬¥×yÔnÀé¥ô#â$ù·ýšö­HHœôí/¶;i7¤—êГØêÍXƒ&ò,®Âk"P3zi=}oåº\¨œ}ö÷j'&éÌÄšN=æ,®x6ÁÒž:sÇž‰“„(ÌÑʧ#qìJa; Y¡ÝH¥ñ¶n¸%]Z¡°?Là,‡d©(ù2w®V>+À9‹¹çß°ÏäS #f“ÃɶRa[œm½(ØMëá4æ,¸V2ÌðàHä{™X̲=²zûS°tÎGR(r¦´s–^¥Sg™†§e¹á¢Þ-,÷„äy¥ìîvê¿Lu<”û§Œ¦Z îS»çê„•ÊŽYûoQBpYÒwt^›F’”É’°ãâ|gÿ‹ÔñŸ“´³²ƒg¹zr¿Ÿëa]„d†© Ž‹$3=;J}yFË­ßWÏh§,É®£©×²4a--. Y$ÉÔŽJ³š¢ëº‡Ñ‡Ï)o0ª×=‰ZV©´Nt7^Q`¤Â'XàªÒœ [Ïé~Å›Ž.õué Ç:¿S@{ © ­N#âïчØ%¬žXeá˱[ÐÛ° PgiÅ@_.½À iÑ5±KŸïÅ0)m¤Rm*,ó“ÐÆR™£Ÿ|Ûú|ºÎÇù 7õn–¸4½¶ b™v˜‹8Öi.äáPíOÚ)@—ÅÕl*Ê­z¡_ÔBX¶è¹9¼òeÑ"§¬ëñÕúú\öt½’Åמü駢ع:ó¸O8¥ª´;‘´1ˆ¤† ’ªATô l©{; I•*€Hª"©ˆ¤z  žÛaØEÒPTˆžUà(B‘8%(jnûmÜ~³ñú–Êú±*OkŽÑ÷õWE©*…!ª‘À¢ÐÄT ½nr©èT4±ÔºzBYkæu‘¬ZâBk(± |Å× ÿ± c:\'†ÒXœ ³D®»òi5„ÜX¢¹êdnÛ§=E”ªkÍiY¤D[¡²éòÛá§T)uEV«Ö9ÅX ^0ÕX/U0è®Â¯ |º6ßVH8m˜‚¸#¬K¯K–÷Q:S¥Ëš§ 5>Ó."Tm¶jÕGÛxê>µ¶{=¶ •§!nÅc½…®==V×Å¥®ÎÖʛ߮8‹Æ®ñŠ>×fy§ð<..‰oíáyØV°U9:¸ÔI‹Rm²È«ç{¼R4µ–´¦½ÙJ‡¿ÑRû‡-ëleÔf+ÏŒQë,=S[u)£Jµ´ŽÓܨåÕ¥&F-Åi…XRѪQ›þ…=¿ñó+üSÚd¿;©Š·ÂÝBåf&ÜOU윞çÃÌ Øg4ðvÂÝÉGÚõÜ;ñ¦$ÛÄ\Ø·„VR¯NkðJ¼o‰/Ä;À‘ÜÞ")y{®ëÝbRÆ!u„lèõ’Jg˜òØì€Z>S5tnè.P…™æú°¹·Ü 5=åÙŵ-¿¤ùãoËÆ›² &˶f9…x@tÄ&Ú•Ê?Œ=:ެltJ³Q-.ëÒ)NúHÀˆG ay°„´«Â´4ü|p&ÞT膧0ÌPwó½UˆG“ÉÇU`Ï02D{¤vâ¶ËxC“:žùG$Þ,“hÍoˆ?zŠ­‘R9½^åBø¨“Ôâ«k&ñ•7…ͯsH9÷êm–2uX.Úï>ãÞ§ÙûQA"jIýéûq~n‡qçï#hÖFú•îã݇Áx}t™Œ?Ú8‚ £!>Sò™¨)ˆÑcm½ÞÞµ¡ù̶%€øÄž˜ù0ñPs·¢¡ý«È²uÁ@fÛÇ]Sl6Ö _l¶¥âîöÊ¢!1qM,hJûѰ í Ò…iXšaAÚ? 2£­hQ¢ VäÍ þ#¥À «~WéöŒÍkcûZ–ã–Êc¡È“\½½ üé:fx$€“2usŒ¤4#j›×9ÛÐÕ/òx@i}LA>9Yd”ømùVT틨ÎÎDC“^·ö(¿ÒÓ̹$$ßó"¡çZWFh…«@èÉʵ=ý 'Ò·Ù3GìYr7' ÐÇÑ·=^øè.:åQKÅÄ5<*´/wîõåó ™ª;¹™D‰+î(jM.R©>SGÑj›þÅöçDÚjµÖQ“\Ù@U)a“èÒl¦Ú·F®¦JaG†j".鉅ã™»*:•°ªÀ£R%A‡½HKßß|–<ÆèÃDO>ûÓû¥Q†¥Hö\ÊÇên4˜Å¸‚OƒøçmèP-­ó+KôVç“„Ôãÿá$N~ähòðû ‘cÔ ô• Ü*‰ƒ;ÒÄ‹3ø3zö‹B|M¥ùbà*sZƒÕŒ{/¤î²0—ýîöÊ.cÓòZ0’“žŸÚ ì´Û‚”È{AíïËCšY±§¦D{g|Ò§“}5Ø_-C苤¾rÐÌüDÙI^Lìˆ`ÓÓ³}Íþš)šûÛì'‚òF\ÃH4÷nÆI”lÂGHªVÌJ8 kd%AOg¬=¶Á–¿š¹ñg;þñ ˜t…*g¥qøNºìÜL9‡Ê”¢€R•(iæ‹8Y.[¦‡1µÀJ߯u3j±C_j†£âÜ1Üó>O¡º¸Ã·†ÿäÔ²ëä¦ñ˜49”HŒ¿gx«)q ADN屘õº¿`Œâ £q΄ëxèŠÜ.â†LL½‚rF߯ªˆoŽÉE—Ø?ªÂ ‡!?H-Çèo†±wJ²ñïv§õø„¿U™^˜¥ÏYe~Úð”s1Ä<2? ““!â|W÷gyb Rû9Mn"@èØf2ý—LøYyÅ…Ó‡Ÿü#QšOú™–æŽâ#–õ¦wh4¿§¼…‘­Ù­ázÔ†[vÍžM“ß)W‡]ü=åžÖW¹eþPKvºZ<ŸTü^`²IAR-STR912/source/91x_lib.cUT LjKLjKux êëµY]o£F}”ÿpµû²mã€c;qµ&6’pÒyŠ·P¼ú`éh›Í*šI¯ÁƒgA"çv—€¹Ûíï:-å¦Åõá>ÜryÅ;„»ù6Úp’œÝŠv°$g›mü-«lBD>…Û`µƒM­¤:?ÙÕ‡h%Q°Šþæ/Që/r?ŠvI¼ýÞ§:F©ªeï JU´]—3 dmUÙùû#—yÌöÁsîüÍeð02õ˜Ü9. §¦¡Ù:Ç?‚fZh>öqîMô‡ O=ß±˜ëÁƒéˆSwxƒicwKóMÇ— 5—?EAÓ¥îÆT÷=ãÌåRØfÝ3ðM‹]‚æñ1‡Þtì¡¡lê®ÃÆL÷]Ç6u¼‘6ƒíø0`0bcƦ63N©Ù`˜.¢¿ VZ#FlÒÛc¿M1rSƒ¡YÚ¥AÚä…ôq¶kzÂëXdJfÖ/!Np–Ãs¼ØãÀçù2˜‡ð œõH Çñ$|‹ø|³ +6YJðfŸ7Øu ñ:äká>)¶›Ü0Ùoײ¦÷½0Á/q´HþDÕÏçgÿPžOe K“žŒgþÚfˆ¤£uø Ÿ°˜ù8Z lºøLwÍc¿"<\/¢%àð™qîÖ› X˜éOÁz®®2/ù}æ)»=ò&@r“y3”"MÊ‘œò5{Ÿõ¢ÊiQ¥ZT=UákSQõ´¨Z-Ú>mCóPÛ§UÛժרZ¼méõiÍëjÍΡf§yœÓšã¶{(Úmh÷´h·:ÐÞ¡f¯¹fï´fkB,œ˜äÌ2®2ˆœ ‚õŸ|~ç78¹E½`4o–¸ÌÛ@ίù_gó Ù<ÎÛ*TÔ¢Êëô=¡"›¸¯rš²y½‰H>OA¢"fiͺ­ÚdÐð­¦`þN³*í!iµà/k“¤@ô’Ñ*¯´Ê Úòûý›|×x #’,Q´ƒEÁ Ý•ÃãÜu;彩74€Hžk*É– ôTâƒKÕ\¿ÙÒEH¾tñ 9 JÁ.±‘âËdŠ S*ÈdKWŠ/“©‚L­ “-])¾~xx“†ï‘½™½žA‡Æ&^!’Ÿ:êMÔX¯WÞ̽ÀGvo sÓ1AF1²¢hƒçйöó›Ó÷o(au4Æa§¯kG³Ð[S$ vgéEh„­Ãà“7ÇrW+/1EÁ"¾uCŒ€Ñk‚éž ­íEq~®ÃgÂÃÙððNááL´½ÍówÊÛt¼ж‰CÓ6{²û-gÒšhÒ¶Œ6²lÔêÑåÈj6z†‰ú½ÎGÔ°º6j8¦?¶šVï#ÛéwÍ¡ è&–Ó&¦E¬ï6«ßCCó²1¤¿’­!€7G†c“N¨?lšC:ië"§ìÆØDŽÕ5_Ss"ö¨ãüvjþÙ1 gØïY†ìv£ÓA½¾ƒ.LÔ6;MÔ±“¢lô>¢¦5$½\V}!ƒ2{¶ù¯áÜjtP³Ñm\š6「6€^„@`tÛCËZÃ~h„‰²ë·="BKdØè5ß0–ÐÈ6Q·Ñ4ÑÅÇTZLXŒ¶T^€¶aõÌ&ahh!Yô·! š)‘ª$ïߢ߼|ñòÅB—?[m`F½Úûœß{ úŽûŒåw٣نþJ„Þ'ðñç5žãÅ>4ÀàF‚Íóñ^Le0޸ăî'¥ ÆOnè¹W«}dÏÔø=ç¶kLûMÞÚ8ÇYû½V«æ›‡8‚ÐÜ23ðFW›k•¡/²ÐƒASØ÷j›#µÖ2ÃäãBóY-×Ȇ­ýÞj5[XG}[Ë5 ØZí" ÛtdØ÷µ\c û.?îE‰¬ µLV¶“‘• m*z8­åZ%Üf–2Ã82xFž´Y‚ÿ9'Ë6mCFª¼ƒ„ã§¼dË ZËìÐn*Ã×βÖl³ÌP¡¹ÔRGø÷ùfþÊ"«2¢Í¥*šØ%O[SÓkf§ËP<£¡:vÎè/– ±zh• sf?µKl Z3¦¥´vJ„­ì/¹‘ÇíA«L÷»Lk§Ä^ U†ÍšË`ÒΚc¦U†nfZ;%ZeØìDè7íMCkÝjå&¡i[Za7„ö·?æÜîðtêX½i·aÿ“¢hêƒá´ëF¿±PœQ€”#XR’.B:Ò2'ÂrÞã–ú¼Ì™úû-œoî7¢¢»'Á+ÛAÕ©«Ã–ïÅ››:ùÁ#Mž»òþM„Bö2kLÚ—8tW(Ä×d¿Av(`«ã…Ô¸›ULšˆÆaîùä®6˜îH`·ÞÄò­øú›XnI†8Þ„~¾á~"øO7O%s _O^¾øƒ ûòBDת0ÈþoãÏqˆ˜±„lc4m .´m8žN»ÆÈìÁá䌽Ã,UxÈ*ÇI~ùâ+‹œï÷ÑÖt,ÉpøFXbÑÍ‚pîù×ÜxP´Æ3oááy¡Ù¬Ý IÍó9::´‡›YŒŠ ÊR:ÕÑ:ð|‚†t‡L÷&‰ì#ÚgCvéñÒ-¶ÝYàÇ®ç3vÈ—…w½ Y:ÁóAxÃ>“Oy†_?.æf­JàU¤`ïÜ8mš–¡<„#Â%Q[7 Û%fžÞâX}õðË¢'íøá™x"$i›Bã à@t0”¯éÆ.ŠC×DoÒ˜äé¯þA–‡3ôåƒÎñ9Å0™>l_(¦Ô[ *rG ×áM¹/JXöE‰±¾(G$?_Ò˜èœ7Ó?_éÿñ*ÂûJá(‘õçt„]Ó‹ö‘ÅQ* æRiÈßÇ™ïi”X"F/ëð•Ó¬ €L¥Á¤KæÜ†Î_Y…ÆG:KfG¾ýŠÃÀÀŒçFÇÙ¬ •wíTQ % G ˆÄ‡ÂF!²FÎÜU*l@h †6ú€ ½Ïµˆauæ ¶î VŒvÕ£â5Ž=ê̹ڡ9(ÄšB ¨`Ç-d7k0: ȨBr!n §%›aM%šÇ«“+Ã[.\†-.ƒ`å†^üYF!*A~œ|>Ê®'l:Î1êµÑ ž#;†ÈR—D¾Ü^y~®4qŠàã‘(ÓÂ!ÃÑaÎÙt-˜‰L•v“¦ ýÞ÷±½ býü;åüð¼Å6óï”Ï¿$™Q0ÿ2Ä›Ÿˆ#Ø’Úwše„ý*|çü˜[û“„SçOøšF‚Œ¹äÒñ ¯±?ûLB0Ô2Î̤/ã)ù>e¸5¼ðFJ¬lÇÐÎV8RÕ3#naE!QVø¹ZA†Ò±¢ü¦e§é\zƒ&vçŽwƒÏUjÉ43v^Ò|fN‘ÒTЍÀß>…IÝzñlY¤‘¥ëûx• èøïh”‰š“0cæF,«Ä:NGuÞð‡ðB‚:²@ŒŠ×´ af”FºÈ€»ÛQGüÒñcÎmÖþ›B‰´}*õí’÷ycϤå¡GÛ çù¬üy1¼´M¶ d'`›`UBÊù”L:EQ†#Mñ} ¹eCeûj{'Éb6 »ÆÊ"€–Q’I>èrh)£&`x–^¦&é8_?µt|±„p÷Rf•wméЏíC&:ÓO£°JéÓðk«^“Ê^R¼¥8r21…/¯mßt|÷QÇwur÷Q'»ª¤¬³SØœ_ãéЋˆ i¹«ù£Á"òlUœ;Q à Ëq3/\çØ,¤llÁa·¦ÚßF0ëÈÇ·ˆ~DÁB{hÅyr*NöL>YÒê¼°Èá¥ìÜ™ÈñXÈ×]17FA?ˆE‹iâ'Èx­´ˆiéXW>R;ÈLÚ–WnRË#`YØ N) 0gDí¹ ¯å¤hhH'"CÁ˜|H[ÊÙQ™1`©`ï(a¯å±MR*<ì…*2X¾‘…Ó•ö‰ ŽcŸJAR†É¤2‰¥°:ºbÛÉžp³:胻Q ÇŒÛjI±à'¥'™Q¦ŠægVWÎÃè*WÄŽ˜L£­W?µÌ«ëz>W‹®èoËe0êO³&*‚.Z£üòm·<ÎÁmǰ4‘ýlï@UPê#»pZ"(<¿D)ÈÙÞÑRˆ6_ŸpèeÁrXšy×ðæÂÍZg·¯òzR¸X‰¢`Cvl´@ö #LG+.pD óbóÖ8rýÏpt~åù,‘ÎgÏ"X­‚[(Õc5·u Rúpn¦ø®'õ9Â6çEGRzœBw‡¥Ð£¡ue^À¿¼þ톦Ñ$*mlâŠ9g™²¸ÝPõBQŸl§D@•êëw΀Ðe¸kšÛÚW·–ʹVüJ碭ü,)xž¨Snãxsú ûþ#Úsã’uŸÜqÌR!r¡xQ«+¼¨å$‡Û*¢ëUpEH¹=ƒ1ʆ좸•_´)p÷Hne6ÛSM–”ÿäÈ–Q݉î‡Ûj‰%ÙÅÂu…tHójY¢6Ç`¬«P0çRÈÇ3Cd!oÞ+,$®(eL“±C^{¬iªµ¯r=æÁõJ3¡ÕJe Ó ÒNu©ÿcÖ%¥P¸;ö-¯FƆ^‡IÅqR«{pÒ¬sµ¡ 2*4H‘Õe€Ç¬BJm¢Bú-¯BÎG™yUERFñ :o©Ãñ6:×e€Ç®Ã±¢Ã±F‡ãb"µÚ%)oy%N¶Tâd%Nê2ÀcWâDQâD£ÄI¹'’'‡V"?-Ù?³âí¢„*­kÖ«“a®k:!$*e?ŠÀ×ÛJázÒ¡Ý8ó«tiʪÜ%„uè»A±°"ñ=çRn´«tr…Aº³ph•òü6Í#TªU½ù¥ò¥Õ1ï^—Ï‚G¬fY,|cÄ¿qÁ4\ˆÓª;½Ç»2uJÙIÊÎÁÓ›I ìn µçA@BÌŸê@ñ¾Gä`aìÖ-=º¥7¯Ð…‹»óôŠObkqÀ3Ó™‹dQ¬ÕÛdbUÑÞ+<1°·§£øF[!_´„Ô¦Úƒ“½-N5Ó 0ÁÿS9ÚTYUÏ5i ~vššŽÜæóùÊÿû­ÖIÕ=Vé”læÊ‹eÓ6xáœx{ k(Ô¿âæ ¯sQ¯Õ¥À5 B8/P ?…ËÒ—?;¨y]–&¦.wJLínQhï÷!²æ!Q¨jWœ$QÚy×>O ¢¸ÂBÖQä¢BOúüÓånù§»)*‹÷~US,ßT¦©uY¶IUÖÁM—¥‰¦¼²JM{(k|8e·P–&­¤*ëà ¥ËÒ„R^Y¥ ¥=”59œ²&[(K“>R•uðÄѥرóêJ•±MÐ7Zºø¾‘B{2ïZò'«J‹Ž1p¤X¯ïWjR·÷ƒÿXï‘IKâ- úô{Ax5(ăªÍ_¨÷ÞfŠ*5¡Û[‰WµîP#p‡±ŽÒ±²»¸CÙ;ݼ@Á¨÷©Ìi‰Í‚R§©Ìaê˜Ä)1ñè‘YeN <›•ò¡&ÀðÖ¢t胆„x¸ó-Š AÅïU{*[|A½Â³´’)ú¶¡bNó¹tßž©;âoO>xÒš“¹õš¦èRY²Ÿš.5A‰ªJ¨X,f7¯J±>ØSžNâ,ZZïù×àc6ÅêÆÏ~‹ÐíþÒ»â: f ­i|Üú÷¥Zg‰óñ‹4üq³?éÁ £ÁÉ7 IUJM1R§‡Ð?ywò úëôÊPGMò7递—%ü¶V¼ŠÖ²;¡oä ‘Äúõ½Ó¸ÌÖƒSð˜>0Ì1+‚»çw®äJrµÜ ˆêú`ªrïªTqïª-áÞGiýöx*Š·wHiåöN’Uʶw€4mBBzâ`ÃyJ¾§?ãcÛ¦óþ-çÛx³t"çf¶8QJ²ÎÌ¡$m7ÆhÌ{)òk•#£ w½8®>\ú/q'ا/×÷S²!)sX€q‡uo×Pž×ÿ‘ózÏ—Øž/±ÝCLc9ˆhÄ\ÍLÝôΙ6–!MèèˆåÊè]+þ㓌j,gÀ• ÍÛĤèÆê‹$7#+OwQ·ÐUI`ì<»«gwõØ‚ y>f}QI(T8)Il„ ‚#«ô4s—!Øì5áß2mY“óò?PKvºZrììþ÷­j0r(™éw×ñÕÑUeçð`Â=uTëòÊ6.º.5›ŸÁqû‹#p/£Px lbÝÝ9€Ž8˜lÊa±Úðgë~ħ¢á…’¥“(†òjC_Õ@™Íá±TD!¸œM‰Xc)G™q’‚‘$÷‰¸ùé°ur(‘µáâh5š’'^,fRÈBº; Œ Ù,Žn…Ï`A鄃Þ7 ‰Æé‹9Œ³Ð#Τ¢Þx¸®HÒ(~hÓßhÄÑñeň£ùÙǪ­âl›ñ?±ÛÕáÒÖÝtÁ±:îP±uv µ †ˆ‹¡)¦ªƒeö®@1ú(.òXß Í0/@8®Õ×m‡Ä ·‹É% ÙûŠkX&Øú…bË]ThØÄ® T×A"°lM·¥*<ëƒk£|ÓÁ5úzCæ*DΠçÖ)S Õ¶ôž®º¶eªNWéõÀ´\8ס«÷4èÊyO—"ó 4ÃFê:É2Ìü•"LÓÑÿ å†ÒMé+º“[€Ú.‰ ±µ—›m™Ð±­>a%(Ä%ßYpè´…S;ÌM‚£C_Ñt8¿Zz‹8è0wVŽmé/«¦®¡A¶ŽN2䞉 èX‚\õäÛgôáîÎîÎ!â ½ £+õáÕ‹d¾¹<¨Í«Æ¤¶¾›x™ÜEí—±¸¥‘≯ÏǯAÚKQšù«¬ZøÈð„ƒ‡•%ea ·,ì: 2„U'K°¬±¦,ùž@Á„…>ÖªyyŠù Ö ¼é €\âûÐùè’Ýð~äs›3äöF}”ó®yß¡uÜé24õ Îë4ïDk¦Ü1‘bh± ãû¾¤ä° °Û±¶·€mUÐâNí¸õl¸Cǵ5ÂÛz&àU÷þÄC»„˜ÔùÎCjË8é$<–÷Ûç{€qMÁ›ˆ$òsIðrøôͦGþyÞ¶t“Ð7[%Ë¡æ×ÀoB­ùøÃ}³„¾¬^B|/ê)îáË(V)íšìäxþòœÁ \S•¬€iW"é²`<ŒbŸÈZŸKtO⟚ȸª±ŠY>`RÆœÉð¤RÖÓò„Jͨ¸4%¡s‹r·®1\ã& ’.îo36 B-g° VùªÏpZ‡4fa2F‹Þ ƒè¦Ëƒ)Îñy‘zÒþKáÿ¸—`é¦/+ssOæ$'ë$Ånõõ£àëI ¹‰Ró¢8ù-‰hÎ+n %ãª9OZcFñ”¤ñæ@O [ʨÈ$zÎ)ìBþ³ìÉÑRNä¶,õAúg¥­S’Qš²i°+OŠØ ð>Šð¦±!™qOŒ÷7Î.3£F9’‹peðÊ½Ô ‹·ÌO”Í÷í;ÔËá~ÑÈë­ú昔bN@‰£A¡¨¬U­ÏÇÞáØg1bÕ i=¢ "Fƒ šFê¯xû ( û­¦³å\& EaîÁÒÙõuW¬9nŸäýX¦»äúðÕPm(rzsµ’“Òi…ÏÞÌ·6±Tù†OóáÜPå³td|Böì Ÿf¤nYeN7Ðýóˆ‚9ó£*ßK^ªe­©<ªlÓ‡¢è{¤Ð?_íüƒÓ½/¨Èå¼­¿äŸº©ÑG׎ÑÓ‹{øPKvºZ<›\”òú ÷RIAR-STR912/source/91x_adc.cUT LjKLjKux êëí\m›Hþ)ÿ¡oOZy¢dÆ/3vÖ“‰DÑùe˜DùdÜ£Ø`Î$·›ûí×Õ Á`;ödOaWºŸzéêêªjÚ/r.T“Ï<¾û¨k·}5ëõ62Ì¡cû^`;ô=×±”×õù³¨ç,0YKŒøÕE4¾N¬©}nC iÎ=¥¯.Ê ’V«…c[¡ã¹ÈÄÖ+Vˆ ¦„H ‚5žBãúÕEãõ嬋Þc?€ó:í€ÛwV„£›s'@3àlå{_œ)µX pŽ‘¤È(ðfá£åc4[»6ô Î Ô¾€¹¾„žÿ­ Ÿ‰Í&Ñ„hÆÏ.7lDÏŠ„?Çf_Ewºj¨#ãžùAÒUô¡¯É}¤¨7ÖÑí½¦H#YEãÑà#’´¡$“ô¿×mt‹ä{ÃUÝ@4³˜ò˜>ÐF¤ûP2µñéê­¤Ó»„ ¦Cwå^6 ÒuEÕ))òlˆÌ12¤÷*2µ¡zŽ$ƒš0îæK°TMÖÇê@•M}<Òd}i0@£±‰Þ©¨¯4Фw•BJ£HÑtÒú%¡Å>"y$G†úï{"¹& " ¥[• ÔîHCàä[× ¡§‡TqÁ$Ý)^÷Di\‡ÒH¹`"¡{CECIQÑ»)m‘ #«,¦Â‘)i#U!é*QùŸÜ¦@”IQ“?Þ¢/ž?ƒÿ.^ #´Ü©åO‘ãÚ‹õ£W{_€úÏæ·ØoÌËÞ ì5½K¨kÑ}o†<2£}´ô¦k2Õ7Äþ̲1šckJ&J9[@ <ÛZÄÂTèVŽxç;_À“…ßVxŠg‡@f šã¢q†H1Á.­à3¢£!#¸=é ¤ÛÉP2þ•òÚõ¯õz£G?F{ ë !¹6±Ø\ÑV«'`é8X/BmË¥Ñd8VÔðÕ¬§± ËvÑÐ#F’Àå`™dR¾û(ÀVýµ€Æþé›·‰%•¬ºV3%{Ë%A„ÌÁêKdf¼úמÚô%Ï-×Å dÐUšAflei‘Eü SÉZßËw¬O‹C&I1^‚a¥=˜/;cGˆŸÿ|Yß—Ë”0ìE°X,ëRR°æ:aN|Ô%7òȱÎ0ˆ"êã±€ë =xæøào,˜—>0ܸ¾X‹5à‘æ®Öa:Êy.¦«á:L?Iè8\ûîæƒ{ÝñœiJ35ø~öüÙŸÏŸÑ ¥ƒt\‰˜lt^!dÈ÷éîÝ&úœÓµÉ„´©Ž ¾8»ÞÚHÑŒ¸Õ÷“ÚB¡%hÜ*6ZQ¦±OC˶=긑% `…mgæài® ¬,ŸP¤*sÜX”²If´BVÀ ô×6l|žk)qsƒ6뢕G—s ncJV¾QÚžZ™±À ù2sÖ>K5wæùKö™|ª ('ÑÍùOfÑÔž3*z‘QhÊÔÈÐÞ#ùK¦õÜ[L!˜‚›VhϧÞCdñäÕÛ©£› Þ«·ðýƒr;x3†¹Ã¨Ì‡y52ý­dúgƒBµx-¬ÃP‰r¤%,Ø)²¬£ßo`%íõäk$Üÿ+Ÿr„;©O`õ§ó;C±Q•bk7Š J½yCz7µÆd›Éʽë]¨6ST/¡g†l«"ÙVo7i[)ºíMi/«‘•{;’½L‘}½IöªÙÖ®d¯Rd¥M²íJd‰°;’m§ÈÊ›d;•ȶv&ÛI‘UÓ‚†­Ô=G_ÿ G\„x*Чä³ÁñuúyŒNÌ͆‰©.„³S'€¿l-°-AÎ Õr‘I;&ÛÍ ŠBhÿ'sM<tƒo1±¡’}‡ð"À"ª²…WA]ÿ-ÆÇ>Zq¼L挑ø2oÍ•Ýwí­z;£XImÞb«B2@Û4Bkz$V!J)ÒUm" 6cê+ŒÇzÎb lÙóŒ%£%^~"ÁУΑ,gÁi•p U§r£ô8wK„;˜ŸIö0Ý#:JYЇB‰‚«DÕâ tÃ’ùúõ¶>B(„ÊûˆÑU3Ô‘—š]¥Ý‡uoÖ½uX÷Ëú_Ö½}X÷Î~Ý3KRÒDqW¾æðëE™e1»OÍé‰ñ´¾ðŽÌÛZ`Ÿ­A¹‘nãøÞ:„Úù¸HT@<˜-,[4;‹ÑÊœ"'Ûå9˳Œ8Ïkó“L²øh±.hæ{K˜óÀ"DÁ?[¢˜QymýZ¼ò‰¯ÞÞéFÍ'.ŒÝŽhÞFSßOh;·8äÄ߃êw²ž‡T¥§’Ýì^Å2s êCà†>„ò–ϸKF•®K½ÞõÉ ¶ ŒÐ ×Aî€ÉslH¸é¶ŽP—¡£5ƒí2’üx>r½°x¢­.ë Ïs'±8Ïã9MF6.V̼ÅÂ{„R«vó£$„^%;'ã÷$Q™Ô»(ñ½È#fPu ¨ hí©*ïŠÓ¤z¾y 4Ê؇~£:ýæ1è7«Óoƒ~«:ýËcп¬Nÿêô¯ªÓoƒ~»:ýÎ1èwªÐWå÷]zOuiÕ3•[3êU@¤ ‘\ká=$eÓÄn‹Ò?‚æ¾-ö”¨f¨&øTxõÃ<;Êb•xÿÍõ ¶n´93ñ«ÛÔÖñ¤R/éfóÀ—t%ö6gã†$©Sü5. Å\Ø·oÑURŠèZ±ò‡®H¬oB“wþ]ÜpœY-¦sƒg€kƘñúK—ã"YOødT¢JÁ¨ñ’ª5Þ¼‰ÈŸýã&Ö2êÀ×vòäšÝúÎþÄ5’ͦ&ݘ×TDÚ[ePôz™ÐäÉ¥è”HÑ(—¢ñôR¼.‘¢Y.Eó饸£DŠV¹­ÓJ‘/Gý«T"Ée¹$—O?õ¯ïJä¸*—ãêgC.‘£].GûIä \ ‚(g/·ˆÑ)£sZ1N[2’ØòA²üìž< kõÊ é·d%)^åœO˜3Òñàpñ‡„ŠG/Eñ¡Üü’vhíKù>V‰éÜ ¸5ø× 5úZQŒvvú—nHP™dÅ5*[S*£ÏÞ~‡ž᩵ZùÞÊwè  Vhå× bïPlàQ¹›£Ö8»Iƒì+/GŸ¼üÝeû„ë|DìVV¦àûb·²êß÷»•ø~‡Ø­,—çûb·²œïoˆÝÊ2g¾¯!vëì‘h&öœÙYμqeÇTŽSœËælä~'’™çœñídÏ„¶²Nh<:Ä·²Mñ¤7_0m‹,ì5ÁžÏºñZšJ7S:aÛ±®ø»Lñ66*â(•gA‹Ô{Ö×qÏO>¶>ó×¥6ykìÅ[£2oxkîÅ[³2oÍxkíÅ[«2o­x»Ü‹·Ëʼ]ÀÛÕ^¼]Uæíªo¨ˆ¹ö^̵+3×>@q½xëTæ­S™·èðî†Zã”™% µlL±€;weiþŠÈ~EdO‘éº?3h‡:Ž')ýçÍÉ¢˜,zR½¸0žn…„GQ…#ïÕÁÊÆÓ”4*û§$%þåž~¹§­ÝþVîé4å¦]\Ζú¯¬EsP(EÁÑ==EÀËÈ_FÍõ&·©#:Ø¿ ¾tuágß2GvŠ}§Öϼ(Ûg4ôÓø‡>¥šâË¬Ì Ç€ˆŒªöYŒc÷œ:â[bIdÃ2jÂÈÁËÒâXfë"üÁÖ²Hº»X‰Tš(4'©©r2 ®|~¤èÌÚ¶Ì*6Ž­lG×öc£_ÈÆ.ITü Nš[^Òe‡\˜éÑ)š çÕ=zúÀ_¯Â ß¼Še_Ëû¢À[û6¢£B˜’ž½E—pT8ÉœÇA\„‰êNdz$óÍÛÔá"zŸ^´p)·›»;%8 "~é§‹\ü(æ[)çªEx $R;ûêŽÏ8ÿlëlÀ|¹×Ì—ÜÔ­{%*­ªLêÁïW9êŵXt²I+ÎH2Ç»Š¡âã]Ú%.ѯbÀÑy™_D*If!³¸èç4à Vq,±ÅdÁP7@þ_ UTkíX&šÖ_áÄ쯣T>“¸ œK,B?qþ]`»w,xuÁVÀ67:sG…*Èw÷±ä²”ùojÇÇ4^P[Ñ™ÑèWxªšjTl¡Y¬&ŠL”è褂 ‚Ð[qi„C¬m÷¸éx%³³`³_-:QM'Ù1 Æ‚Š<•Õ%Ò Þ 0"É"ÄÏ4eÒ#^Û܇ÎN™Ô‹íÉÑkAu™)”è1c(۸m“Ê(°Á‚“Ø™ñ)b»üF¥:Rà·ôzÚ@Tü?PK yºZ<IAR-STR912/source/.svn/UT •LjKʈKux êëPKvºZ'k¯akïòñCgíÒ)‰èFFò$ß{B˜¦~¼N‘hú6Ï—Û~·k—ËûžÓ?+Y®6 !øKîW`“EG*mtŽuúi*øço‡ËñmÛ&;¾Žéãoý0Ð†Ò ¤=–}Œ[ø»¾N-!²¤R[hCýg̱Œb ã µÿÅü(dÌùÁvjKÉ×Ñ€ ™šv¬¥kDŽ »ÒdrH²~Ò¥hØÚg³klƒfó¬BöEÇÙ¤d5u«ot ݱú=S·Á>Ó:èõ81àÌè´ cj'ƒ›Ôz_¡eZ(½‰ÏŸÈ"véýžmü}ž›ZZZW;5„ô´s¤±½#ܶL›\h[ý.ZpPÛkƒ}AKc¨õZ;Â%¸° èj-N¾æ¢…ÂF9X"„=G3{F ² þöŠÂÉYŒäö³çÇÎÛ7oßìl€é&sbÕÖ“/²ùO؃?åÄ1þ³Ü æ¼5ÿ|F ±C˜Ã9²ÝócŽÜƒ1s‡H”‡HÏG‹`àNÀ{¿‹ç¡wC“Y|7cC6zŠÉ’E´æùì9Ç8uq¶˜%‹7nè¹W“§„²dQÎÓ4¥ÇEõѶÉâü9çNp¢·öjxwãNæ¬~„=»à Î<¼ë}n³>ÔByìBÝŠÉË®¼ÏT™‘é:óo#² OŒ0Ù|Þ‹W,Qæb®X´AüƸ°CïÚ‹1ËÞ9_áÔIÙôgó8_KôŸñ wç{²‹ÅóÐÏu$Ãêâê.f/1M.H³·oþ÷ö Þ_ †cïz MhQÓí˜Ê•ƒã&ì6êÔÌÅAJ¿{w$î…Ø‰ñ–Ÿô_˜¸Y“¶?}‚ý:üÒ(÷sE`g,zì÷+û6‡/ö¢™ƒÃ½F÷E¸×ªhÜk$½–Çzm-‡4×D ×2|›°¯6÷°5il™¬YÕ$ÁçQФ2oH…Á4ÍJÊÏǪþ·Ê˜ÌÛrƤT¦Žz /Þ¹ÞøÞÆ<9>>¨oPÂÀ;Èu5ÚÔµO]¼'k¯×Wb²P>ŒâÞ*“üû=ˆ§3>?ãß&äa”PÐ>¨×P² ÞÚ*ÑÃ=òe‹™¾+ѳXÄâl7=cØ‹8NÝ!»Æ­.ÖÜÏ_Òñ¼‚vxÜ—5ºO&j[¿¸ÔÎOιSÜÓÚå%Šn=Ú=Ë´L[ ­-›Åtj¢„Ë–`ñs ‘¡(烘¶TT[‹i‚ï´ÄÙšwL®³‚prÅ(µu¬[ð£Ùø~Ð8ØÙ0|Ú–Àmèa@Ì_qþäùÐr¬4BôL¡M­‰Aa;WÖѳ·ÌÇ Üñä?š(ûéÓÞþbµ;æ†*Ý‹u¦UJ‹unû6tÃK*Iºx;ú¹Žajó+ש6[0YrXF}½ùûÎFË‹– ûªŠÔ$›oúuHâÑÔ¡£ª×Gr¥&‡Ç“‹•¸žÈ %x^%Vƒ_ÊT¥¡lƒy)²j%¸ÎÔóç1Si©9Á•"†EȰªT¦D×ì¤äÏ~4óÅ~2ŠÉÄ«X]š¿–ÚÄ §÷S€‹Üϻʭ£Y]% äzõKHÀ©¥Î)—R:,K­„gÁˆvÏzÂGRœZµ‡¡S¢Žöw„V…<Úìj•D×2þ<2óË¡ZmåtzOåtJ¹O%î*'*mQÁ·A'fO³¾ò{%¶Úüƒo†2y­\[4„C˜üðšvAb9™‡¬RŒQï£o¶&üì*=|eKMXÚ‰@lf.läK6ú¸uœ”P˜k| T“uÊz¶jà~ioŸgœP¡òI%ßh ”Ç­s&ÏK'µB£±+·Õ¹@¨!‹J\çý‚A%µ–ÔÈ»Á¥¼ÔD< ÙLr"=¨)‡"·³,tqKÅ(TDÓâ²ä}E0­(ËY™w¿¢%g¨ŠÛÉ|õùóÐ{auÇéÍ« —¤6/—à6È£¸-û%Üæed‰ÛÜ…\MIÕ#ÝmóÅIA£Fã}‰«B>Y–”ÆÇY…dA*ðŽËlçs[ZÏj5hж´¸ã3Îd-:–Kû\‡ HÙ¥Šln.çOÙ»Šnn%VëÍ9Vû $]-M— §ùÓ&Q†&„}fª ÛKpU"kêÞ/a«¨w3ºfNläk_9(Þ¤Xù´K_"¯ ¹¶€å‰†’æššç‰J‰è©J=åúý´-ø–cSÖ.H[ò©*™#xÅ›ªt¾Î®ºR•WrettÜ)Vèzà¼ëEøØ…´HŽG¸<½ÁÀõ‡‹ûY€¾x±ú0K(uQ'ÿPº¿4†×ŒÈZjî°6Y°Êr©ó`Rðï/;Á­ÂÔ™w=~es>è5Ú„fÃÝ„ì}J×d›µÞTDOÒ kþC%VÏÌü(÷óh€òJb[|6þQ•Yðê%V~ZžDz:Tæv²©Çœ‘›V!¯þNƒÝÚ1ß¼‰ï¸šøàu¦×tX“1q'|è©å´’ÁmC‚,%›ÍäÛ<°ï»+G’O–Ë™.¿1ŽÒå¥aüIO]—AQ ¯JÝxWú$|[O*¹^ršÄÕ°~s˜ áx ÖûœaÐû«Ù¶´î‰ÇçÁíc&_Rƒ+wðm>®J¥öçÍqîE^?Äå€<åƒeA>X9‘ékñ¡70ýøžÒæ¿+H:@qÐ;˜ëJH¥gÿÂÿƹ'Ðëicæ cžŒþ2I^Ú¦ãp¡kæ'G×Ê:ô7ƒ´)Šä¾Èë×iɱ¥¡æecÁ«bêˆù¶\ Ò4)¨¬ƒ óL–û £ýQc?ö½°tçËî×8Lø5ñYúqÊ6^Gå’FÔÆ£ubžk,bIœ8ðÄ[™`ÁÄQø#„‰s,ÿS/AÕYA*W†)«¶uñü4Ì4‘&™Ÿf “Õˆ¦YºØ}”âŽëÀ4–´A»{ͺp'/­µÂ£ÔãQîþóË,Éãä*ƧÊï)ÃÐ oy¡4ÑÊÒE;`Æ£ ›áÖÑêÄ“ÇũÊõÖR v—"¶³¹ñ÷æbTÈ&1wËûÀö²)„DÊ÷ ˆN$siØ{;°áŸã%e{oéw½!þZË2©8Møå%Æ ñÁ‚KV(äãV"7ÖIð8ßËæ×Ò›Z(M—ÛŠ‘ï ‘2‹ú “ÝûLøLÿ±P°Fícl?Õoÿ÷éßÜøœ“듎ÆÖXckŒ×¤qÂ.±Ó¥r›g0O¨FyY˜â”`)2w˜1QŸŽ%Ö_Näþ·è÷ÖçŽßå÷‚¿ÅQ;êèBž eÊÛ4ݺ¸ÀÕ¯@7©+Ýys·”f8¥ØWEAÆF$àÕ/ÄÀwq挧­Å°ÄãZež?™þC¨ÊݵûÍ&7œ¡ÄUóÓ ^%ÏÏáļ ÖŸam ƒzЊ9a×RS·ošdn°”èæì'ß<†›A¬^µèÍûWX“.òç†â¼JXl†÷Ÿ”u b35ixY]-Íç}/B”Õâ0g²¤Ìôo¿[ĶÊàz¡t½Š”˜Y’«×X{ v[¨Š™ÅÍa±eQØ¢þH&s’MSxÁ„Y!0Nâ+ã¦û,¿ì1±SUÒ¢–âõ¿_ëb“y}^©Ð…5Z~øOeN¡{nÏv­=_7NY„hL™sf”þÔæD)‡Î‚S~$«BPŸ {PC§jÛç™D½ (šA&C Îk³Ê< Úù¼ª¹ÓiX¶` æõ ®ˆäM¾°;oHoîºsÓ:h·_¾´«9¢Vöú¨ò¬Ì2 ,Üw¥E—øµ•vCï’2=µPR'Ìÿ (æòëÌíK]‰ £À£¦âƒÙÅk€LêB¤ù´s»+/X.úp«ˆTe¶åè.…¾Äº;Oÿ-Ñ7?ÃÕS­E|K"pˆ×–ù,üt\˜¹À¯Iî*¾m¼$"ré·aF5d^BN׃˜f+œý'òŸ²H~« À5ÜhŠWI>íòÝöù›òHšùÑ÷mÉÏpצ>$×.ŒÎ†‡óäÖŠ\˜/›PÆ„“ô\×A%’,ÛvcƇðˆÜ+/NP—¤ÝòA´9Eîaôýè[ÚP4Âá!1¯#¦×ÞV 4à×êŒ÷j›§*œëª¡NM0fcóÓPWáÓ©¦œ‚fÀx¦ÃÇ m4œ**̦“Ï0ÔÎ šH3ûMiÓ \æìLÕ Âî“fž¢sÒ ÚÉφ¦6›‚®~êô, ÔtB>ºPLo‚™>Ru* ¯9cø› ¦v¦PDÈÀ¸˜˜ûÄÓ5EŸ©U1õÙTS 0N‡“ Lg&œ¨pªNF0ц'•²N?ÃHÓñî}ÂK›²(Õœêÿ]`˵áFóáGÕ`-@içä.Ô…0P&¬Ùºf&ŒõÙÑ•0D&&±Ýl Æ-³áp:zÍš† gÑ 'Ÿsk r‘‹é–Û‹°jSu„ ÒU4’FÏMQ)r™*Y´äöÝúõ‹Ÿ^üôõ lIBòÕÆãùðËÝw®wËgc{IÏR Î#ïÁ™äû F÷|EˆGäæîF-+q\XÄ›™ªÄñ›yÖ“`v§\ žYñ×v—±ëìBøßÑô¶ˆÁ‹ÐY" ó~âÖa^~òœäúr¤—gCãï;"ðöïÆãÁ˜õ„†®È Õ7u„'q’ɈvRʱòë J©ÀŒtü¾†t쇷JDþ%±TE[&TFhFñÜðâßÝ:Âq¿ß/R%Ë·KHÇê "“X¦©òF®®¢©+Hß÷Ù!#U®­ p}TáAbÞþûFZlw íÛzÚ“å|îFœƒ„öp…Χ–ŸÔS"ÑÛ:ÊIh]I9¨m«e_»õ¤o›M<ÄŠç›+{XG«1Ê4ZrT*—[ÃB¤MÿÀ*­ÐH!—„°×†­üe5ߦð÷zËù‘VÓisYE}D ¨™$&•0˜{W’’÷˜icÀ*Ûñbö7©uã×öæÖ¯B?ÜQ¸F„Æâ5ZÞ$´&Ò‚›e’wÊ‘´~%r9‚ÛkKè;°­¾¸Ðßìî¿Ù»ÿËþ»}TåWR5Çt ‘UÞœú ž?kìQ¦{œÑfcNÄÄá2²]"…»ÔŽ`G.£xÐq¡±‘7o‰¼ñu…ιÔT€ž–iˆÿ *DϽ6zTÙ™ ôL7Zxåƒ.ƒ¤Ôþûñ%•m†8†É¸ÅŒr“wÊÔ½5 œ# ÝBLþ„p¾Ê¿UÿZuÈ;Ô)-ºÑŒ#Í RF³e"zêLÃÀ¥Wt7YFäÊv^ù| =§œ=Á —&bÕ‹Ë—ãìÃrðN „ý,æ-ŸÚRƒï9ÿzñ€7‡^zöø˜fÓ(Ò¹ç(Y~ï^ý e:†‹â?ÿ ’\?v ׋ cr{#óŸá?2öäàþ¨ÀyÐ,¸r‚J1[ƒæcfÅ£kDæÈ‹bö’Ë´ŠLEIÃ’”ÐAY+¢!úóð,ˆùãa²>.ï½fdÆHrM¦"gó…~xåÙ0Ç[ˆAì0ŠÜø& /¸¢A£»ÿ\ºq†w…†j®8ˆ@Ò£jõ‘1¤e‡Ou–½˜ª$w5$É 3F5—r-0QWtxü ê&ª MŸx-ËZXM^¹‘δ°iÁ±Ndñ6âMna”<ëui´K£]•Pýøiôù¥)sBŽb™ˆ`ýÃÁG~ù†^‚ü?n"c%ÞOîø‹&´õ‹4êw¨/%û¯Cýgù"àOJˆ{€¿˜+ þ¤öòOÖGü“%Y:×a}‡õ2²ë;¬ÏN=‹òþdýò~Cˆ+àüImuÿ¸µý=ž&½îK4Üwp/%ëàþ9Àýäx¿  +÷u¨ÿx˜ÿqÅü½ríÚ_iˬôY•®vóæà%Yë«S]µ€Þ|òÈK¨þ{@ÞPMò\š¼œe>Ø}ëŠ<^Æ"ÎI#œc€NžFC/Ÿ¨ÿ9›3úŸcÖP2{ÄŸáFÌ x’,|bOŽÉƒãô~’ñ;ž"/ÔÏó¯c0é”XWîw™ JÔe‚.ló¨Íå™ýû¥9²UóÁDLy>ØBBxÔtP;3´ŽÍJ£§.ty JÔå.ló¨Íµs@›@ZžzÂÜ~> €-Ž~Ôñ@Û4Ð*5@—JT]nȨºÜP¡êrƒpÔ¶’¤h'Ä'“#õEWþ ÙBš)Ò7êFtã*j%úzw„‘ îZ)µeá47{ÿ¡tߣ±…7T«¹£ÆQ·õR¬„ý^þ‘XzüØïþÎò8¯Å–üŽ)Tû&lþŠº°¿Šô•Xmµ÷®~áV|Y]&è¦~›B˜ì CvýYÆåWÖ z´É¡.†±‹˜Jö·ãGå^ß¶ÔÛn¼Êøwo뎚ˆM}ã¡£–»S’¹S¶»JB=ö~ë06;’†qE\ºƒKAÞá,|âh¦»5­Ê6¡°¾x¾—|ïÂøOÆÔ)ࡃX‘9R5ã8bqã1iKJBù®a#Œ,Œ¥Ÿ(Ù6q^°ÞV2UÉÊHÎû÷™DssZNù°ïáFñܘšóˆ– })Ui@çŠGaÒ? i8.ŽRLtõ‹]}‘lèùî¶{:?N§­ÄÀ2 ³´åÍX{h{ɉØ;mCw¹\0Q«áf¢¿íÅ3}A¹äN-ÓúòÍ!d$ÅèÏNWíE¡ Üw­¶•*ò‘Æ{ÖùÍÑ,vÎoñVØûõ»½ñåÁ–ãDdww/°#wá Û3Äš×v óyD:%&óÛº¼^8jÂYô¦Oí¦Ä GÄþyaÛª]l4ìåâƒ0©SÁUhSÆTxêBžm0}Ÿm!Ý8ñ Zth!u©GA ©+n2X«j!£F‡íã×£Zf<ê"ŒÄè³ÊúÅ|ÛmöD#…„X6íÑãØBw©æ;•95Û8¿J#S œ;É‹t Åv¿¶‰ìÚ¯k õ¯P„ˆTa¹¦BÔ(kQ¯2éRÙìûëˆT[H$Þ‹2é7¶òe= rgž^›#ѶyÉŽYȈéÅ4ŠEüUüRþÍ)'ïª0lcÁï@@Všz²{… Ž 0›w'-ä ˜Û ©[ Ü5T[êǰ.ül¸ñèƒ §·bBf½/Ç`Ìá­×ndùi´U¬˜jC¶ö‰´Õ]иʔµ²Ú ™ó"B™Žõt¶‹o[/ýâ 3™ŒoukxÆ4›¼*±}²áhÙµ\¸vFº›”þQb)ëøš¹èÂTôQ—~ñäŽÌÔ­…ò³«Âˡ¿ÝÈäžtö˜}y³y~Ë,…l¬gü—k+ÇJ,â‡Aødo|¾ó!õS³¢ù{ ¢Ù¥³¶•UÇâI&¢ÍÔ­¼³Þ]gw2/¨~¿ŽrMMóèÃJ#W <Ù‹Ix\ñ,ßû]ZCac¯¼8!‹ÂÑñº‘Ol[KŸÌ×Änß,鯂K–‚û¤Ü_K«X>™Oó™EIŠx†rq9<=9§ªêD•£¼õì¸NÚ#ÆwlÂ`¡ý.°Á°K>Gnï j—‚%W{»G9[°®é‘ßä'«6¯wy‰û< îåË×/K}†Ùs8˜9)ìòÃ`—¡w=ožXsæÞœÕ|NX=Å^­I´´“wFð|?f;éXïc°p_Ð$8޼>ȼwM Ï™ÁMHËV&1E³˜ÞDVmÞ^{¨Ñ-*G°ÞËBι߼ö£xfné^¹a/KÆÍqz‡M"¦í£(k/qÈŠƒí¸¸ÈEœxa!f#²‡ŽÇÙWªóiWX!Köt¼V ( Q^..•'oÚÄ È›3„HÐbZ ™LâDK‚ÈÄÔ4LlЭç I;MmùDn=æHÃ~]ž|OÜ&q¼¯rImÂŽ„¥¿Da5¢Ø[Âù™.ëÛ¶×Nâ„ðÈÚŠ¿/#LË4E€ü »8ì/^v}Aõö1ëûóÛ0¢ë迎›NÝñi—ªù³¤¾NÃØ:¯¶ö,4‰ýÞb“ ]œd ûá-ØaD¡OÝfÏ+Èçàó^#Çט4´‘0V­O—Úf¿’>ÉF´‘ˆÚaô>Rà¥(‘X±Íýl¡MmÇd ahß´Ò”¼õGï¦1Kz§FBj nßô“CvéÇɾC× Ñ×hô‘ 'äCê¬Á„" Ü»­£RP¹AcÑÉ×WÛ¨%ºg]x»ZSL‹š?ÉWŸjë IÕœ×ü–mcÄñ‰ÿâ´H6«×L‚c¡xYo*s«Mþhá~…OFß#+†øB=öPÄ-Z¦è¶5|¬±wϸ0ÊJ¢¦U†íË&tîBGp,( ÈÄwëëÞÃ5t…n@ò¡ihp¤i»¨Uki>cæ„ÕÚоQÏVD¨1ªV­jÊ]Uc3K¢ðÕåËÅi‘?v#T¹Ë äB‘šŠpjŠ`™$l¦DRµ2.ª‚0Ÿ•Â~^ ¯nÚd¢5äU2”»6YQ˺(õ8VÒþ¯éϽIùÈ•2*5U³B4Tï¯PZi—}lÒºN?Ronn.^Å~1®V½ÂÇV*V4›D¯vÅu±WŠrk•d%cü»» >šì—ÖÅ"HVAOÙevþY×>žšpØï¿Ã<óì(¤`H>Älc0’CŽ`6†±6Qy‚ûPKvºZú8ÖÎ/LZ­_Á0ÎÔ÷lמ†¾·p¦ˆš>}òzŽkÃк±!¾:ðöÝ$tn^M‘B^…מé«¥ òré:S+t¼˜¶uƒÄ]+´ O?A ‚•=CâÖßOÚoO¨dxoû¶h¿jÑv0õ%es7¯æ(ÙÒ÷¾83;Ëu!¼¶ÁÔxóðÖòm˜¯Sl¼"¬v|¡pNzþ×~&JH*ñ[F )zö¦¨`›?+Sþ$6/TUCš`è=óƒ4Ô^Í5¹]y Ÿ«L ìmDQd ô™ÚcÍ@zc}@ G8˜¤9å×ã’-¶¡<ìž0•àÒPa wUx÷1e-Ò‚ñÈ‹™phÊÚPí…Æ*1ùܡМTȬ%wè“§Ož>9yÚbê®Ð¥^n}!Ï_Æ~Ž¢ÆõÏÙžÀ›ƒG|ׇo¶"Ní,BÛŸ[S®mkF\b½(ØáØ÷¦– Î.4àG¾ócVøuiÏìù6,s 7gao-#å‰Qï0°‚Ï$˜Óû¿ðÈÃÉèÃ`2?’ݺkµÚ­,•>QIy*¥=Q‡èr1R½Pu5#EÖºëõÞõòT’€×Û/IÀë·^^K½ÿ¾ßžªkA¸µ[yn” ƒ ™pS{BnRž›$â&å¹u‹Ü²Z2no[ynY-Õo½"·î@ž(}U§dS8] c7™æ·säj¿X¾c}r·q®Çh’ƹ<ôÐÏóæµ8nÄÿ¦R–ȸµÖ»½h‚™%i[[8¡ ê>p,×ù/13†¥M“àKâæÔ[tÐk1ß¾"É ÆÞÐÃÄÊñ‘[îê`³VnHÈ;$àpW6M¶H7ËU˜¦$}Ýuà–ôdÃL­|"võ½ha¯ñO@3Ò(t)qi7ú*L÷Ó¡·°ñÁØWþ¢ø`·Ó/ž3KÙü?šÄ]2YùOŸ8ó#|zggØ u|ŸþÞ>>FªoøÀP.'òè݈ª;FëM&تýx8>EBý[ðŒòJú·€Ì©s: |Ç?¶Ø5¸K¯…Ü%ÆýuwüG( T~—‘C¦ø0 *„ mŒÔ/'SÆÎx\ŒH©Òž˜läÆÒ£¹_… S¹ëöÚ!Þ5ÐÑ8êÌ6ðÛIvcÇMFâ(¯âó¬EЕ9xRw_þŽßÞ,µFf JÁµ@ù¶ jÓKè×›~žÞÊŸÚõéÕÙ•]S’+jÃÑ¥ÉÚ¬¥×yÔnÀé¥ô#â$ù·ýšö­HHœôí/¶;i7¤—êГØêÍXƒ&ò,®Âk"P3zi=}oåº\¨œ}ö÷j'&éÌÄšN=æ,®x6ÁÒž:sÇž‰“„(ÌÑʧ#qìJa; Y¡ÝH¥ñ¶n¸%]Z¡°?Là,‡d©(ù2w®V>+À9‹¹çß°ÏäS #f“ÃɶRa[œm½(ØMëá4æ,¸V2ÌðàHä{™X̲=²zûS°tÎGR(r¦´s–^¥Sg™†§e¹á¢Þ-,÷„äy¥ìîvê¿Lu<”û§Œ¦Z îS»çê„•ÊŽYûoQBpYÒwt^›F’”É’°ãâ|gÿ‹ÔñŸ“´³²ƒg¹zr¿Ÿëa]„d†© Ž‹$3=;J}yFË­ßWÏh§,É®£©×²4a--. Y$ÉÔŽJ³š¢ëº‡Ñ‡Ï)o0ª×=‰ZV©´Nt7^Q`¤Â'XàªÒœ [Ïé~Å›Ž.õué Ç:¿S@{ © ­N#âïчØ%¬žXeá˱[ÐÛ° PgiÅ@_.½À iÑ5±KŸïÅ0)m¤Rm*,ó“ÐÆR™£Ÿ|Ûú|ºÎÇù 7õn–¸4½¶ b™v˜‹8Öi.äáPíOÚ)@—ÅÕl*Ê­z¡_ÔBX¶è¹9¼òeÑ"§¬ëñÕúú\öt½’Åמü駢ع:ó¸O8¥ª´;‘´1ˆ¤† ’ªATô l©{; I•*€Hª"©ˆ¤z  žÛaØEÒPTˆžUà(B‘8%(jnûmÜ~³ñú–Êú±*OkŽÑ÷õWE©*…!ª‘À¢ÐÄT ½nr©èT4±ÔºzBYkæu‘¬ZâBk(± |Å× ÿ± c:\'†ÒXœ ³D®»òi5„ÜX¢¹êdnÛ§=E”ªkÍiY¤D[¡²éòÛá§T)uEV«Ö9ÅX ^0ÕX/U0è®Â¯ |º6ßVH8m˜‚¸#¬K¯K–÷Q:S¥Ëš§ 5>Ó."Tm¶jÕGÛxê>µ¶{=¶ •§!nÅc½…®==V×Å¥®ÎÖʛ߮8‹Æ®ñŠ>×fy§ð<..‰oíáyØV°U9:¸ÔI‹Rm²È«ç{¼R4µ–´¦½ÙJ‡¿ÑRû‡-ëleÔf+ÏŒQë,=S[u)£Jµ´ŽÓܨåÕ¥&F-Åi…XRѪQ›þ…=¿ñó+üSÚd¿;©Š·ÂÝBåf&ÜOU윞çÃÌ Øg4ðvÂÝÉGÚõÜ;ñ¦$ÛÄ\Ø·„VR¯NkðJ¼o‰/Ä;À‘ÜÞ")y{®ëÝbRÆ!u„lèõ’Jg˜òØì€Z>S5tnè.P…™æú°¹·Ü 5=åÙŵ-¿¤ùãoËÆ›² &˶f9…x@tÄ&Ú•Ê?Œ=:ެltJ³Q-.ëÒ)NúHÀˆG ay°„´«Â´4ü|p&ÞT膧0ÌPwó½UˆG“ÉÇU`Ï02D{¤vâ¶ËxC“:žùG$Þ,“hÍoˆ?zŠ­‘R9½^åBø¨“Ôâ«k&ñ•7…ͯsH9÷êm–2uX.Úï>ãÞ§ÙûQA"jIýéûq~n‡qçï#hÖFú•îã݇Áx}t™Œ?Ú8‚ £!>Sò™¨)ˆÑcm½ÞÞµ¡ù̶%€øÄž˜ù0ñPs·¢¡ý«È²uÁ@fÛÇ]Sl6Ö _l¶¥âîöÊ¢!1qM,hJûѰ í Ò…iXšaAÚ? 2£­hQ¢ VäÍ þ#¥À «~WéöŒÍkcûZ–ã–Êc¡È“\½½ üé:fx$€“2usŒ¤4#j›×9ÛÐÕ/òx@i}LA>9Yd”ømùVT틨ÎÎDC“^·ö(¿ÒÓ̹$$ßó"¡çZWFh…«@èÉʵ=ý 'Ò·Ù3GìYr7' ÐÇÑ·=^øè.:åQKÅÄ5<*´/wîõåó ™ª;¹™D‰+î(jM.R©>SGÑj›þÅöçDÚjµÖQ“\Ù@U)a“èÒl¦Ú·F®¦JaG†j".鉅ã™»*:•°ªÀ£R%A‡½HKßß|–<ÆèÃDO>ûÓû¥Q†¥Hö\ÊÇên4˜Å¸‚OƒøçmèP-­ó+KôVç“„Ôãÿá$N~ähòðû ‘cÔ ô• Ü*‰ƒ;ÒÄ‹3ø3zö‹B|M¥ùbà*sZƒÕŒ{/¤î²0—ýîöÊ.cÓòZ0’“žŸÚ ì´Û‚”È{AíïËCšY±§¦D{g|Ò§“}5Ø_-C苤¾rÐÌüDÙI^Lìˆ`ÓÓ³}Íþš)šûÛì'‚òF\ÃH4÷nÆI”lÂGHªVÌJ8 kd%AOg¬=¶Á–¿š¹ñg;þñ ˜t…*g¥qøNºìÜL9‡Ê”¢€R•(iæ‹8Y.[¦‡1µÀJ߯u3j±C_j†£âÜ1Üó>O¡º¸Ã·†ÿäÔ²ëä¦ñ˜49”HŒ¿gx«)q ADN屘õº¿`Œâ £q΄ëxèŠÜ.â†LL½‚rF߯ªˆoŽÉE—Ø?ªÂ ‡!?H-Çèo†±wJ²ñïv§õø„¿U™^˜¥ÏYe~Úð”s1Ä<2? ““!â|W÷gyb Rû9Mn"@èØf2ý—LøYyÅ…Ó‡Ÿü#QšOú™–æŽâ#–õ¦wh4¿§¼…‘­Ù­ázÔ†[vÍžM“ß)W‡]ü=åžÖW¹eþPKvºZ<ìøŽ©·6IAR-STR912/source/.svn/text-base/91x_ahbapb.c.svn-baseUT LjKLjKux êëÝYëoâFÿ)ÿÃèN:At ¶×+¹œäØ&X›Ú梨ª"Ç,auŽüÈ£mú·wf×&„&—žºî€ùÍcçµ›Æ^Å‚šZÕœÛÆi×…Ãfó8nŸûqÄæ§qr?*ÖÝ=èð€é]3(V~iÝ]x“Kozyà‘’¥“(†òjC_Õ@™Nî{)Bp™wMÄš—2„“Œ$ÉØˆˆ›?5ZB¹6|aqB­ƒ¦``‰ó©)ÐÝ O`LÊMãè†X^@:a tO”Á $Ñ8½õbã,ô‰99@´^¤_—'iß·é3ÚqxHvü¼`ÇálïÇU[ùÞ:û¿ÆnW‡­;ºé‚cuÜ3ÅÖá¬k¨]0èX6œ M1U,³wŠÑw@q‘Çúbh†y êÐq­¾n;wf¸] 1±a˜ÈÞW\Ã2ÁÖO[üŠ ›Øµ¡ê:H–­é¶…{}p-p”/:¸F_?!…ÀöÜ÷¯†j[zOW]Û2 Õ§«ôz`Z.œèÐÕ{ô 大 HÅ<Ͱ‘ú=a¦ü‚BQMÓÑ¢å†ÒMé+§º#-@i¢B]@íI³mÃ!:¶Õ'] A\òÕgˆN+|¨˜ZCšCG‡¾¢épr>÷qЦt–Ômî/‚U S×Ð [G'â7•¢m¡ä¢'_>¢»;»; Ô+ôƒŒ²jÿÙ‹0ßr‰oJµcò&6ˆù U…ô~ÊFlü™$¬„ˆhSÇ·ù‰È"}á`HÕ( S_ô½ä+4ï:½ÙÁµJÌR—_3+K%)bZzs…Xb–$3JI¬KòâNO9½°Ïˆ›­¦Xä…—]¢¯ÎHöÖöL!O+Ú^à¸Å½€ÿ§9ïtw0eH8a±@Ì®°a4"SxY 0Wºˆ¥AÆD{ļŸfi¹ç2Úp‹Üï…pÉ  Øñ[$%sD¹õÎõ˜x`eÐ6˜QÈhÃfi‡«/»0ên">Zôp-ÿæbjhl¼7³³¾»óçî̾î>Qm8¦pÈ×Ñ⮳²ûðº³6\ŒÍÁâù~xx• $Sæó1g£Ê`™z1ÊÁÅæÐÁIã £ 2ˆö_"Š–×þªô6L#N¥„½ò~~̺ UH'^uJ€…©ÇCé5ü2æWY,gXŽ£øZ~ÆO‹>ËåUƒ~×)ñXB¼¯pãÞªëeÞPnðqmewÿs¹ÞÃññBý¿ÐCê~uâÉ€«=8ƒž“\òôˆ”¦­…Ìü«éh"TqTC„ä·Ãf»õá÷J wÇk[ÒQµ\ØdfŽQÿô©õA`<Ð?,HØ‚¡ PæÅ›m]RñBãIa¬€nìQÚP‹„(K%Æ£§¡Ç1ñü4Ä÷õ§¡Û¶ÔoÃQ”aŠ£ÈÕÂÓ÷¥_6Ù¸Øì×Â#GPð?âûÜõönɰ%¿?Èñðe×c_ú„º_.¦ô+8Eõ›—òGš~¹®oQZ+ àí„û¸åxGDz?dFßa9œ;¸¶Eíñd‹y*÷9YYê8¥ö).á¶©Zæk}¥{ZsJ§³C–„e‘+ý”¼¹Èÿ MNYÚ ¼+'õÒ,©ÌuÂü¯ $˜(ÕÍÆ<:VtL¥Õcòlù—NeÎ]OÚ…nr0Š!ªOFTH¸Ä+Yw3•0… K”(¢[šeH¶×-)sÓ²ÛÀD´*O䳆n½EÑôÙußoÃ\:â¼ÏícŸÛ†Ý>‡¥ø>^ ÅsCÁýôä¢ßBv‹™M÷b4£$jŽîÒ‰Óëš[ÿ&ï3ó¨® õõƒ\ö±¬ê¬jÍ'aÀ|È=Vøjµ¢9»cÕºN0Ò’1çºq wŠÍ¼©?ÈÿfݹD/‘VõòEÍèZ¶ Øz…¶Ñg­:¯|çSK'ÜÕ²F»‹w> ò5÷ûW(\Bº¨U¤ÙÁrUš—£5Yü*RßפSÒ¶E£‹VTžefx —x_ÿmëâ@D*=Ц2a¬œ.yÀxò±ëß.ƒ¶k>hS4{ÁÉ•d¹q/»ðH³×{sÓ#Z‰9Ž]~,“±”[i•^¦rò[žN(}°q׳ÄÅŽT·D1¿?æõ»¶¸__˜ÛüñT75úóNÇèé¹ïþPKvºZ<ÿ¨YŸ ±–3IAR-STR912/source/.svn/text-base/91x_vic.c.svn-baseUT LjKLjKux êëí]ûoÛFþ=@þ‡¹PØc‹râ$r]€¦h›8=’²ÜC­b¢²¨’”“\ÚûÛo|sIkégÛe‹@æî7³»œùfµ\í¼à\°¡m‚6>ý`Ç'6t;=°ì¡ç>š#7 ü…ç†Àƒ>ö޼9‚‘s… ½zðNùzqí¹Û.©¡®¢K?€üÕƒ¡Öu¹œ{®yþlä\‘Ê}'BXfF`„á MIåÎëåímYÎP„²Ý¡º·¤BRéö¥ÂŒ´lø×Þ…àÌç]"834ýYôÅ ÌV — Ãm,êŽ/Ò¸/Œüà[|î(;¸¸o Ø¥e¸ KÊÞʺIÙ«j畸¬n`î¡7ö‰§¦né#¬ñ‘}®š:œŸÚ M8ž}u¤é0 >€j -PmŒŸ}ct ÚIJÇCÝ´àܰOˆLmL Œ†UÛÀÔU“ÞÅ “ÀûͶp%›}ݤªpÙì1Xê™¶1Ô·Aµ¨¹aÖd`o+64s¬tÍ6Ç#C³À:Qm8ÔáDôa`¨‡ŠTG o˜¸öÖÅ>‰¸H,ýý÷ÜPÐW‡ê±Î:A´âФ-D€6`Ý6 ‹táÈéÀa 6†SyG`Mð ¥c¨Žú;¬K0±tª}?äF #˜Œò`±!Ùª1Òû¸C¦Ž ÿïp£ÈpÒFGòî­}çù3òßÎ °"g1u‚)x w¾š"xÙú"Rÿ™ˆù!ñ)—?ÄšŒ¸ÄŸgvWþt…§¼·ˆP0s\—È™âIqsˆ&,qà»Î"“èb¨ZÿŠ+w¾*µµû†UªÞùzÄ.½:ȱÉÏ@ÝN±ºa_X㉩UªæuèÂ8^98ÐÝjËOæÚ <çÓü6T’˜„)Í"ŸØ’°lö¬ÃG[®}oØÐŸ"Í_̼Ï+eÞ´üUࢭ¸Â.©DÿLþØÜçȲÌ3LÔé´F^ò7î•xÑ·-øÏógpÓEåo¼ ÖÀÄ( 77ÈýM^;H-}AÀšíàvÆfµDÄ>)ñ=)µhk56pK«"2ïö¢$01PF{tpúÈXx‡£õð yÎÜû/JYYì¾ô³&â¶#Ÿ”yñuÎjá¢QU+qæ+DY~ËU”§š#hØ]Eù’¬ÀDÑ*XT îöƒŸšfÃÏŸ}'ÓÀÒ&êÉá)Âui’Žn\\àº[À¼ßæ>m¶2VKZ $\…°Zà0DO“´Øù2qUiLˆ?›QA<¨Á£È0ßc­B®Ùà ÔZBZ…~ëƒÕ2†?€]zø«·øÌ·†l÷ \"×›yØ›©‹ÕÕ',K¥:h˜c·Í59šc,w€(v|Âdd 3>÷¿à†ÄÖÙãŠÁ×K8ïÇ®6ic¢¿S²Î3L¤ÔƒTshþ’à  n#ÈæƒvëA˜“wÒ@¯A ôºÔåƒöA»|ЛzÐÄ:<9åÄÛFЀz×ðpñæ[„Ò`úH·¹š”“èÕ:U 6¡©£:TƒQ µZ›m° µ¯Õéj0‹‰jÚþh4ØA)|T“a`T—j° £«ÕL¥Á40ªfŽt›¼…uZ£«Û`U§«Á6gýšçÕm° Ó®{ÊÝÛ87ê&J·Á6ô_l#5Ž"ªÁ6(Já¢lƒ¢º\TƒmPÔ.Õ`Ø×œOøžºÁ6NÞj|”"ÆœìBt&Qä4JÇA:аaé6øYBÑíÍ{Y•8š;Ÿ£¨PŒ«OˆØj·Kïq#á”}rÓ›ÁFV~âeË›¤âw–ÒúÐyù3΋à÷LâO?åuÂ?âÞ'©PÀ†ßÚg·ÐkwÒiŽ”'K×­ózÂ~Œ( #î@zDDF×g˜ÈS®ÍˆÛ´H¢$­ç€$­Ï@’Öƒ¤õ<”¤õ9”¤õE”¤õÍ´ž¾…äsÚ!NùùBžj¬?] €Û=²oM‡k¤<Ù$€¶ó÷;èuUÊ“MN?BôöÍk÷ýÜÚ}r6 8®‹ÂžÇÃäð÷z7¹¨ û8®)§_Ü%ÁOÕóÆ:h=OæÎ)Kö©"îQXûimeÝÚ¼]u™¶+øüQZukTŒ÷-´U EdX¦:­ËÃÙ–9‡ö”XºË€xòEÞ5, ö ‹¯åÙFèDvÌͽÏ4òÌðLñ!dÉßÍ_Ù+¥êŠàd"³R-ŽWqœîöÂÓ, ÖåGJ'ým‰úhFãÅ×dvÅ6É­—?Ÿ©æþƒW[:£Œk}Z¼9‚Lšc`™p¡8 ÄV)Wv8 ¹²“äÊÈ•J®ìäPre§ˆ’+;IŠÆŽÖ¬¦Mì~‹ß´T.#JB§Ãâ$Ìÿ :äpIåõ6þà1¹—ÞçK²+‘Ÿ…÷Ý\ËO#-75ã ܦ%ìvéÓ><‘äé¾um>ϵ”†‰lÐL¥3Õ3ÿoÐG²,ÉêfIç~ÍÉ$…ôðe¦¥1ƒªÒÖ4™ªl –¯«s@’Ðf IhAZJÚJÚ"êoHhÅV튑˜¿Ðt·Wqñ.£5亮ccÙb_ž”1ë¹WS*0þ—Hœ•b é$Âlâç)7…I¦%™–dZ’iP’iåQ’iåQޥç·’'þÃHw±§UÑâ]ÕßöºqANLÖC¿̆g½Ã€rÛ)J2BH2 $!HFÈCIF˜CIFXDIF(arq×És–{åƒßo …ñ^Õâ/¸î¯Ç$Y;Ö9õ¦–GÞ ¾‘|6­M>Î&Û567¢äëá­ô5xö銜Îã,¦Åù1«ÙÀ÷²BfKß&KF›‚$£Í@’Ñ‚d´<”d´9”d´E”d´,ˆ’ÊòDË›N´¬ìߔɻòoɉ¯‰Sƒ·ÜÌ üâE˜沃üks®ƒyy§Lty_iYw¶Ÿ”ò3óý f¥s\Ì“WRÓëS€œ_ãw…c5ЏÂèµtŵÄPPÑn+E¶¸¢WâŠÕÔóº•EXÏ^+=]a=oZéÙÖóV\OL›½k¥h ®Hiá(?oÒÃUÔÂ'0J/¬©…_ y€°¢~¦ŠZø…¡ÖBO ¿@óaE-CœÒ«jáâ( 2:¤7–@Jä…„nJ5˜£”¦Gìy2îú¬mì‘Hb.! Çʺ#N…s EÌé‘/žÚ7Œc-,(^òþ“„ŠŒP)qX@×”Ñ5Ëéet‡åtG2º£rºcÝq9݉Œî¤œîŒî]’R +°”N‘Ñ•êOIéO©¬?%¥?%­¿ï("%æ<8/€øß7HÚÏ:|¾Âh‚7¶C— S91±%–2¿ÖL8Ø *ó­Þb+ØnãyÜ%®~«9ËtQ…$”VrÅJ4”›Ü“ĸ•r“eÆÎ]ÒÜ¿K+GÇ6Ž%2£0‘`ü¯3rÖ@–Cà}´ÄÓ'4ðôÌ›ñ~iÍg7®7•šx(³;h™x4að=–0-èÂõ¾„%ÁÄPbýcw¥¥Äèƒ<ÜQ‘ŽM­Ò>{>/(-òô6 N¢ËfºË.@´’#æ÷fº)5ÔBëë†"ÛDZHÌyé¹·à ,Žû!'iö^E»~½ÏOx*žê¡³Æ0¥~`;<]•)±ô°£³h4Ïcð#óê16ä¡pK-»º)0û>cÿrc—ÍŠÌÈ]O5`4¸Ì_¶û½›‘ÞÅ‚ÒÀE4š²H‚ ¸¼Ï¡°ÕþF0)^ /e©_žEÆK˜/M /eédž—¦Œ—*0)^%¼”-1ò¼Êx©“âåHÂKÙ²%ÏË‘Œ—*0)^Ž%¼”-…ò¼Ëx©“âåDÂKÙò*ÏˉŒ—*0)^ÞIx)[²åyy'ãå]qœ†ÆŽÚbd’ÀÍ Z8ÊLèã/¥‰ÂÓ§ Ó lò:7¨ºÝbH;Þ¬ÄVµñ!æÄõ€Ù¥ëL©Ä$]’„æ´6´?3ŒÑ°,Û¡xާd¢“òÓ^ Î0 ¥•M(CKôãµ=|žJÐêÏ¢XaTźe2yî‚É2Ίµ mª^`ÐÁ”_Ò4¨Â铵ü¬â*Gõ|… òŒŠùŽò¢µlð¹&üáƒ9Ök¢pÏq˜–3!vj)k+‚11ÛŠñŸ#CKŸžª>ýäG³¾ÅüË2ÝÍ”&š mÖð¬\Y ?†ÛhÔñ¤ùi}÷Å‘ñÓœRM†Z8k(kºõÆ¿Ïá~ìýot%+²)••îÿûõUÝõ?ßý½NýÕ‚®1EÞ€ç[¡…ÛÌ còéÿ†WÒ“+µDkoSC|†“"9µ<Ì”åU|}B›ù`’ÚÎæ¤~,I·»RGÒCå•ä„)r›eåñ3^ŠKE…|cH¼–ázdšxÍ‚çD˸Ð4s½u瞳Ų çž8€±OœH­håD­ JÏ»;]J÷ãx´œîÇñh9ÝšãÑòwÇéƒôÀÄ,ÝÕË]²—ºb6Ö ]úNW†ò; yš="¾9_kÎßJª*Œ!á«Dá}|‰ˆË0YPã¡#w°û¤ñ~íó†²þ¹¨õEõ9ŒhB"f=®ÿnÉó¸ÿç)>Äú[³S–rODû’øGV<°ü¢”MÌ÷´ØQæ‘mVªî$üë)AÓO¹I°žÃ®g½x« ñ„[$Ì Ö1#^Nkàk kÜ=×ë[~0 ·Q¥18±ßÊ>_‰×—vxls_HÏÙHg^ÜP/3ñ—@9üÆg¶EïçnQ¡Ž_;ˆù´YqçÖ…ÀüÿZ’AGˆoÞíò{ø¾ñèÚ«º>Ò[Ñw÷¨çfÝ ÛÑYçˆY>Êá Ýh8 êÛlýœÎyá ïáÇ ˜ÐŸ>â˜C->–Pù •œt(9êðêU-búßÑgëI¯=ýú}ôýD4?ÑOþã[nÝk,ó‰ÍÛW™K•SÊÅÊì&Ÿ V‡]ü¼iOë«ÂŒþ PKvºZ<›\”òú ÷R3IAR-STR912/source/.svn/text-base/91x_adc.c.svn-baseUT LjKLjKux êëí\m›Hþ)ÿ¡oOZy¢dÆ/3vÖ“‰DÑùe˜DùdÜ£Ø`Î$·›ûí×Õ Á`;ödOaWºŸzéêêªjÚ/r.T“Ï<¾û¨k·}5ëõ62Ì¡cû^`;ô=×±”×õù³¨ç,0YKŒøÕE4¾N¬©}nC iÎ=¥¯.Ê ’V«…c[¡ã¹ÈÄÖ+Vˆ ¦„H ‚5žBãúÕEãõ嬋Þc?€ó:í€ÛwV„£›s'@3àlå{_œ)µX pŽ‘¤È(ðfá£åc4[»6ô Î Ô¾€¹¾„žÿ­ Ÿ‰Í&Ñ„hÆÏ.7lDÏŠ„?Çf_Ewºj¨#ãžùAÒUô¡¯É}¤¨7ÖÑí½¦H#YEãÑà#’´¡$“ô¿×mt‹ä{ÃUÝ@4³˜ò˜>ÐF¤ûP2µñéê­¤Ó»„ ¦Cwå^6 ÒuEÕ))òlˆÌ12¤÷*2µ¡zŽ$ƒš0îæK°TMÖÇê@•M}<Òd}i0@£±‰Þ©¨¯4Фw•BJ£HÑtÒú%¡Å>"y$G†úï{"¹& " ¥[• ÔîHCàä[× ¡§‡TqÁ$Ý)^÷Di\‡ÒH¹`"¡{CECIQÑ»)m‘ #«,¦Â‘)i#U!é*QùŸÜ¦@”IQ“?Þ¢/ž?ƒÿ.^ #´Ü©åO‘ãÚ‹õ£W{_€úÏæ·ØoÌËÞ ì5½K¨kÑ}o†<2£}´ô¦k2Õ7Äþ̲1šckJ&J9[@ <ÛZÄÂTèVŽxç;_À“…ßVxŠg‡@f šã¢q†H1Á.­à3¢£!#¸=é ¤ÛÉP2þ•òÚõ¯õz£G?F{ ë !¹6±Ø\ÑV«'`é8X/BmË¥Ñd8VÔðÕ¬§± ËvÑÐ#F’Àå`™dR¾û(ÀVýµ€Æþé›·‰%•¬ºV3%{Ë%A„ÌÁêKdf¼úמÚô%Ï-×Å dÐUšAflei‘Eü SÉZßËw¬O‹C&I1^‚a¥=˜/;cGˆŸÿ|Yß—Ë”0ìE°X,ëRR°æ:aN|Ô%7òȱÎ0ˆ"êã±€ë =xæøào,˜—>0ܸ¾X‹5à‘æ®Öa:Êy.¦«á:L?Iè8\ûîæƒ{ÝñœiJ35ø~öüÙŸÏŸÑ ¥ƒt\‰˜lt^!dÈ÷éîÝ&úœÓµÉ„´©Ž ¾8»ÞÚHÑŒ¸Õ÷“ÚB¡%hÜ*6ZQ¦±OC˶=긑% `…mgæài® ¬,ŸP¤*sÜX”²If´BVÀ ô×6l|žk)qsƒ6뢕G—s ncJV¾QÚžZ™±À ù2sÖ>K5wæùKö™|ª ('ÑÍùOfÑÔž3*z‘QhÊÔÈÐÞ#ùK¦õÜ[L!˜‚›VhϧÞCdñäÕÛ©£› Þ«·ðýƒr;x3†¹Ã¨Ì‡y52ý­dúgƒBµx-¬ÃP‰r¤%,Ø)²¬£ßo`%íõäk$Üÿ+Ÿr„;©O`õ§ó;C±Q•bk7Š J½yCz7µÆd›Éʽë]¨6ST/¡g†l«"ÙVo7i[)ºíMi/«‘•{;’½L‘}½IöªÙÖ®d¯Rd¥M²íJd‰°;’m§ÈÊ›d;•ȶv&ÛI‘UÓ‚†­Ô=G_ÿ G\„x*Чä³ÁñuúyŒNÌ͆‰©.„³S'€¿l-°-AÎ Õr‘I;&ÛÍ ŠBhÿ'sM<tƒo1±¡’}‡ð"À"ª²…WA]ÿ-ÆÇ>Zq¼L挑ø2oÍ•Ýwí­z;£XImÞb«B2@Û4Bkz$V!J)ÒUm" 6cê+ŒÇzÎb lÙóŒ%£%^~"ÁУΑ,gÁi•p U§r£ô8wK„;˜ŸIö0Ý#:JYЇB‰‚«DÕâ tÃ’ùúõ¶>B(„ÊûˆÑU3Ô‘—š]¥Ý‡uoÖ½uX÷Ëú_Ö½}X÷Î~Ý3KRÒDqW¾æðëE™e1»OÍé‰ñ´¾ðŽÌÛZ`Ÿ­A¹‘nãøÞ:„Úù¸HT@<˜-,[4;‹ÑÊœ"'Ûå9˳Œ8Ïkó“L²øh±.hæ{K˜óÀ"DÁ?[¢˜QymýZ¼ò‰¯ÞÞéFÍ'.ŒÝŽhÞFSßOh;·8äÄ߃êw²ž‡T¥§’Ýì^Å2s êCà†>„ò–ϸKF•®K½ÞõÉ ¶ ŒÐ ×Aî€ÉslH¸é¶ŽP—¡£5ƒí2’üx>r½°x¢­.ë Ïs'±8Ïã9MF6.V̼ÅÂ{„R«vó£$„^%;'ã÷$Q™Ô»(ñ½È#fPu ¨ hí©*ïŠÓ¤z¾y 4Ê؇~£:ýæ1è7«Óoƒ~«:ýËcп¬Nÿêô¯ªÓoƒ~»:ýÎ1èwªÐWå÷]zOuiÕ3•[3êU@¤ ‘\ká=$eÓÄn‹Ò?‚æ¾-ö”¨f¨&øTxõÃ<;Êb•xÿÍõ ¶n´93ñ«ÛÔÖñ¤R/éfóÀ—t%ö6gã†$©Sü5. Å\Ø·oÑURŠèZ±ò‡®H¬oB“wþ]ÜpœY-¦sƒg€kƘñúK—ã"YOødT¢JÁ¨ñ’ª5Þ¼‰ÈŸýã&Ö2êÀ×vòäšÝúÎþÄ5’ͦ&ݘ×TDÚ[ePôz™ÐäÉ¥è”HÑ(—¢ñôR¼.‘¢Y.Eó饸£DŠV¹­ÓJ‘/Gý«T"Ée¹$—O?õ¯ïJä¸*—ãêgC.‘£].GûIä \ ‚(g/·ˆÑ)£sZ1N[2’ØòA²üìž< kõÊ é·d%)^åœO˜3Òñàpñ‡„ŠG/Eñ¡Üü’vhíKù>V‰éÜ ¸5ø× 5úZQŒvvú—nHP™dÅ5*[S*£ÏÞ~‡ž᩵ZùÞÊwè  Vhå× bïPlàQ¹›£Ö8»Iƒì+/GŸ¼üÝeû„ë|DìVV¦àûb·²êß÷»•ø~‡Ø­,—çûb·²œïoˆÝÊ2g¾¯!vëì‘h&öœÙYμqeÇTŽSœËælä~'’™çœñídÏ„¶²Nh<:Ä·²Mñ¤7_0m‹,ì5ÁžÏºñZšJ7S:aÛ±®ø»Lñ66*â(•gA‹Ô{Ö×qÏO>¶>ó×¥6ykìÅ[£2oxkîÅ[³2oÍxkíÅ[«2o­x»Ü‹·Ëʼ]ÀÛÕ^¼]Uæíªo¨ˆ¹ö^̵+3×>@q½xëTæ­S™·èðî†Zã”™% µlL±€;weiþŠÈ~EdO‘éº?3h‡:Ž')ýçÍÉ¢˜,zR½¸0žn…„GQ…#ïÕÁÊÆÓ”4*û§$%þåž~¹§­ÝþVîé4å¦]\Ζú¯¬EsP(EÁÑ==EÀËÈ_FÍõ&·©#:Ø¿ ¾tuágß2GvŠ}§Öϼ(Ûg4ôÓø‡>¥šâË¬Ì Ç€ˆŒªöYŒc÷œ:â[bIdÃ2jÂÈÁËÒâXfë"üÁÖ²Hº»X‰Tš(4'©©r2 ®|~¤èÌÚ¶Ì*6Ž­lG×öc£_ÈÆ.ITü Nš[^Òe‡\˜éÑ)š çÕ=zúÀ_¯Â ß¼Še_Ëû¢À[û6¢£B˜’ž½E—pT8ÉœÇA\„‰êNdz$óÍÛÔá"zŸ^´p)·›»;%8 "~é§‹\ü(æ[)çªEx $R;ûêŽÏ8ÿlëlÀ|¹×Ì—ÜÔ­{%*­ªLêÁïW9êŵXt²I+ÎH2Ç»Š¡âã]Ú%.ѯbÀÑy™_D*If!³¸èç4à Vq,±ÅdÁP7@þ_ UTkíX&šÖ_áÄ쯣T>“¸ œK,B?qþ]`»w,xuÁVÀ67:sG…*Èw÷±ä²”ùojÇÇ4^P[Ñ™ÑèWxªšjTl¡Y¬&ŠL”è褂 ‚Ð[qi„C¬m÷¸éx%³³`³_-:QM'Ù1 Æ‚Š<•Õ%Ò Þ 0"É"ÄÏ4eÒ#^Û܇ÎN™Ô‹íÉÑkAu™)”è1c(۸m“Ê(°Á‚“Ø™ñ)b»üF¥:Rà·ôzÚ@Tü?PKvºZ<ÚbA’f4IAR-STR912/source/.svn/text-base/91x_uart.c.svn-baseUT LjKLjKux êëí]{oÛ8ÿ{ ô;p÷€Âî¥í¾ÝMÇ–áüÈIJ{Åa(6 kK^IÎco÷>ÄÝ}à›!)‰zЖ’4Iwë?R[âü83Î ‡”ºû´àCjÝ:éŽ>úÁ¡EZÆkbZCgâ{tA'¡ï¹Î$ E¤=%}gAÉÈ^RÚä]óòdmûáó 6é¬Ã¹çùÓ&ÃntV«…3±CÇs‰Eí%6îÙ!P?‰k:ÅÆW»Í·»Œµ6ùHý)šÏŒ€ßY1Ýš;™!k+ß;w¦4 öbAÂ9%ÇÃ"7 /lŸ’ÙÚ ið°nùƒÜ:AèùWmüR´Z(Å›”­èÞ˼„MqO%ýàØ:ÔÈ‘¡™ÚÈ"æ¸o}êùt¨w‰n’þØ Çz¯3êjd<|&}h’Ž4ãzOî±i‡ša"Ü'Ý:ób7ô;–>C;èì*t¨HÞ;îZ&4"c£§¬+¸7$Ö˜˜±ô¡öœtæñÀÚA[Õ»ÆXh]Ëô®IÌÃÎ`@Fc‹ìkäPôÈ@ïì4Ù}&=Ý€Ö;ˆ¥øèØ™ÚßAr½3 ½Î°s ™\èí[/Ðp± ÝDúÆxˆ¼" €X¨»qŸ˜Ç ´X‡Qo—‹DŽM ;=ìN´…x“+‹ó–è a;úHë@†JÒÙµ0…·“iMÞ¾Eï>~ôøÑ.ðåNkœSÏnüAÌ¿8üûùÙËÁdÍ®2Ž|çýDxµ¢S:» È€„hŽKo$˜@d~F÷{2´ƒŸ T ã­¼uÒsûtAO°Éw‘ûj\öûýÞw¨h$m6ÁhnŒ"9ÙÆe£ÑhÅ8¼Q†! ¼‹#ï‚úP æ%Ù}ÊPØŠ¬Øß¥£CPQ’o¿`¢ÇbÙ%^¿K Ýü."T ÍèÕÚ×b€œö¦ž·Ú·'ÀÑ…ðoú“oà«xdÞ6RXYy3`Ÿ<: îY8Ï cì]ŸH:lJx[gG¶ï„W9 XÊw oªÀ9´ý)ã>˜B×s!ãXD Ë0 NÔ”`["+`­K㲯÷ÇzNi.‘½n#µ.‰qI°1a­ˆû>µîÎm?/37»‘5%ØÖž„`Ùu§ 5Út uˆ Í>þöö™‚µ!Ì%J¿+ë›*P Ëĉ[ 1ðmƒ« Z‘À9sí, ¢èÐ9›ëþ`' „í æ¨el`é¥` Zmc Ô,í –Ò@Å,uÔöq,ŠÌ Ó#ÆZe†,j–6¤Ø7 ¡™àu³ §ÿ s1J1= ·•±ˆ7äññ#Tòí~Ør&˜/iÚÂv¨î:aÁj£ ¸åØ çWÐM´À¸$+ ÍæÔCòé¬ oG€Ü'ôÊñ1õ°×‹š4„±\¬)[•@ºµZ‡ çé²M.ž’K2±]rJIc§I`™ÕBÄ€-Ý’õN C¯C²MFžKñ†AõïæoÜîÆïÜs¦²nkÜeƒõèŒ;ªËúãGÿâã |¡NíÆ*zb³‹gVã÷÷öXÃF¯2BÌîñIçhÿˆ©‚ÖNNX«m„˃úû­ {º™´üÿÐE@sý6KõÛ,Ûo³l¿­Rý¶ÊöÛÊõû;÷a·ûQÏ;å¬Ó·Í9{2üÅqÏÄü"ÁŠNœ™C§…“pqzI™A9nŒÈú7C S©x&>SÏÅ’S1÷y–íº É±ãbhvrWL°VkŸƒ™Û!™@ªd;.×ü˜9gkŸW^wæùKþ¾a R¬ÃïTT.e'§¾§Yus¯ƒö¾~ýR$W ¹îƒôz4ØTX¿h1„ôŒú=ëK~êV³>Ч½HßÞŒ§8ƒ®ñÏ×íW?‘S'ŒœcôÙ¸Ežì¦íïŽ)|b%eúrî.óý¶—UóR‰ý¹çó1CoEö¾…3Êc`CÖNx©øÂIÊ_r+˜…L&äiw˜Æ»y •Ã5#¸HN1M(S²XÂp Ü ¾ùɆ¿µÚÍmÃ)-œŠ†²+?¨‚ŸªÊÉÞ+„Ü·×SÓ´0eý5Œ4vëûô—Ø{­^Ú„åÏ{aØèÙhÑA6ý’âV£Q'ßï‰oÒ8å:H_Ø•F“sôÐKÌÑW‡Ï?ôÝ‘¹ä¦d­ÖÄ®Ÿ’Z¸NvI­ù:¾‘SS¤ˆzÇ>¡Z}ßèl¦Ÿ]ÒlHÓ;Íæ,ö2§E"ƒúŒ ó‹¢ó4;}ÎN >yÀ§äõË:ù+yÕ¨smz#ƒÅkê;ƒl¾j7_™7·îÍëù¬­gðò&^Tdï›Ì½Beû,¦± T±ìïÚoÕ’§á’&Ôy9ÙŠ¼¢`H“H"Ê>½§¢˜„ÝbA#H¤‰¸á—Ù:x«ïf5‘ÈoãQ†Ê8nѶÓB—$¡$][ÿÐûStFôã´À…ã­ÄæòÅ%OƒåA¢OEºCB¡)™þÇÉ‹z–k VYŠû—È7…ÅžÂ> *AqOK.£r!Ðw`ÄÔžÌsû’.OÁ ^8ö Æ¥uµzY}¼’g2/Ì™/€=\$5‚éƒË• ײ2*’ãÌ’\¡yÙOnJ,I>É}Û{¯¦LÒÉÂümSÚCÒ Øx:%hâdh¼{-Ò›ÒQ&êª(â˜n@cá@)Ö%x— ÜIyW…ìk$Bî=›"±Þîç¤wì"ºËi¡oàZ¤¨¤K…ËØ*küõ6ÅD/Ìl«M\z®ÍÌ›Ö2ŠË„Ÿqˆ ‚+šÕv3Q¼ypÆ«xm ¯½`º‰•ygFjÑ5LJDK™ŠðQ‰Æùô .„! ¹BÍÚƒqTòÀÕ³AQJ_¤m¸²q6ÇÇsë2gyoñ¾êsO¡o2ýXˆõ׫PQìþ"ÓOpߎ™IʈC$ðÖþïyУbòíê©$æôyñÜ„œ†Þ[ž:.«¶)…˜y h$¼ÄÝV4—å9Ÿ#ë®æûžß&âa?¹Ê±ýKÃ÷2¯Âì@ø0}T£@a߯bÐ uΩå,)øÂ6¿ ^@ïX Íòm7X:€}»7 •¨{¦Ñ&ð§"U·TÝ^5ª®e¶ žËª&Ÿ¢é[hn! ~µ10òœÅpÝ|5Ûaé^2&é`$ù¹ìBshv“…¦U"ÌUƒ†öï ö®Þ°³!rÅu!isé?".ÙÌž(–ª`uÓP]#¯žYÈðM™Gôé/)Âj£z>t/ÒŸ6ë×ÎKt…ÂM€5“ì° ¾c{ÁCvP? åòŒ K,æ,ŠÌ·ÉÚCr'±=oñ'‰¾’œº–¹—ûr£ž­ÜÃ|ÆŽ¥”4K¡t)òßòä÷[tB¶*.*†“0è/m1 ó,F“",r9ó½%#¼w‘bâÅ‹S#ìë­±q™$F[hÿÜ+in§Š9ÿVÖi™ÅuMj/;>žòäWçq“üÏà‰Ã'¿ó"÷ ¢S†Bz±g»Eã–e0n(ƒ‘•Ꮍ\thøkøø¼1î—}+›ÝÉdO×ÝTÐRãi:SÀQ—ÊŠŽ®—­™]¯ç'Ùž@‘쀆x u¾Š×s:ù9À‰BúE’Îð1Ø-n¹€‰º^x×Å2<¦ž]{0®q‚üWšo°d¡• ]'ŠBOÙ‘­2¬®Õ&§¬¼U4UÙZñÊV5¹¨5cE­jô¢ÂR¶9ßðÑ–«ðJJÌØÆ»X¾_Ô_/IŽÆ`ðREv8Jš›J0†,UŠ›jBí¯ƒ+>[ ~-MÇÊÄ5¸ÒQ©¯a_”-—‡ÛZ.U¢\lkQ¸<”¢4,~_qSy¸2_EâòùRqÚ\Á¸„HéGÊWä‘J#=aÒsòQ¤üA÷¨'€cñ§ÕΞw'õÝ&ëé¦éu ²Ù±õÜàãê·c5øÉÍiª°ì·Á)²‡ïÏ|?´©)[yoJK³x5ŽÕ&\*Èô0Ä ÉÝ/ÅÄB_i9\¹µ›[µÚ)æÀžøsØ$ô=מÕuïÝ>ôl‡n=2Hž6\ÔŸï¿ÍmïhB"Ê"|ð|Ÿ6 :]PæsÇžX¡í¹`2ë‘„»VÈP©„ Á‚MI¸vr\??æÐÚð‘ùõ¨ÕxL|{Ε$ÚÍ;€A›ûÞw{ʰÂ7#m7 Ÿ,ŸÁláN¨kp„º^ù!t·vzþmú, bq–bшÛZë ëQ[û7@lÞª0«†ª›` {æ'e¬Â§[­s š½ánî´®¢wTêýÏ hû ?j]M¿ÎaêØ uŸ4óÝ‹7h:v(¦6Ôa¬Þ(cþÔÆÔ½{×1 ‚ḫŽùPØ6s†òQS¨GÜ¡p@T`ÜõÍòU­3ª}µcއºÖ1À¸Uú}Ї&\«p«ö»Ð×”ë¾ÊU*úgèjc”> ]š.þƒƒ"LÝPÿu‡Ì5¥]e Ü¨†`€£H ±‚N_ÐkQè‡ÂJ Q‰I¶öÀ¸C£%6Tôî± w† ¥«Âõ祵¨5 c lK{‘ZEÓÕ.«h$¿Ó5siK¾¾Gï½Û{wŒ¸Ü‰³ 5uøâ‡tþÓúà—$n<ü²ú:˜,ø[`äÛß)N„ÌÙ”Í^‚ƒHQ›í²KÌë|´0–¾ÌV+(¿[¾m}u^2+ã8Hñ2ôÈ®[ë&|ƒúç<ÒÞß°þÕ_™_á¯LÔÞe³}.ð\½Lu«Ÿ&ý×r¼ŽÃ,ÿÚƒJ¬Qѕ΃åºÌ¡®™,^hÒùºÏ”±‰E¶l 6]¦¹v˜‘ÈÚøÂÆ&ÛrìãlĹëæ Å˜o9à³o˜`0%@è‘„í“[ ‡k\{|°½ÇY0žðp%Ï¡œ–ùmxBõ žab¹ð•A¥vttQ¥1^,é ×7\„²Â6èžË¨aÌÂ…ï®7¼îƒs÷ݳ§²e3]nïÝÈéŽ Y$¡³´§0§¶gaú«+.W«Ò[®ÀèÜÝ+£ë·×W¹¿çRªNi'òðM‚]ÍX‘<ü@-æç‘ú{í¹VûW@ÿÖj°*3¼3#‘DfUDÓc‰´ÈòuXçW/ů^–_½_½˜_½_½4¿F)~²ü…üÅü…ü¥ù5Kñk–å×,ä×,æ×,ä×,ͯUŠ_«,¿V!¿V1¿V!¿Ö?I³ZÔ¶‘ùI)æ'e™Ÿ2?)f~RÈü¤ôÌž–âwZ–ßi!¿Ób~§…üNKó;+Åï¬,¿³B~g_r±GôΠ镦w^ŠÞyYzç…ôÎóé©­ÌŠº(ù¢,ä‹BÈÛ@þ±ËZ4·ÕŠêPk2ñü©í~‹êPælbÏl6ͬCç–ãò:Ëv||#ôX`fV§‡/-OWŸÃÕqÛ0÷l‘2kÙÕ¸K!©>XÙ56L<7´lWX ÿ3³¿-|qÈe»3Ï¿ñWÚR|´l•?q•Wc¬oÕØRnˆy›£7LmŸ ßµ7nûF¶+ö´8.£—oÁ'JzÅõ§$©!ý6gSú\¤£ð ÁKó¾›àŠÇ=Â3±Œ \Õá‡nw ÿ½Zå)Ânñê`NÀ–ñGêþëüYØŸw"GªÈÖHLóÎ/£ß¿ýV±& tht7Ö“ns—"ÚÀCÊÞ9Ö@ø*uxÿ>¡<2ae©âÇO•,Wp$@x‡h˜¨ â®.[%A‚9¿ÒG.múk nþ¤Ò›¤õ 7i¥öÜD̉½öKÜ1ølÆŠÏ¿@‚ïëUYC o&âzñ&ÌèEdc§ðþx)øÆ–à[¯=7Þ~sKøÍ-á7‹à§½S¡·».F èS; SºÿÄÚ*Ë=ùt'+¦œoj£å ±…¤w÷ªK86[*…œ¹ëÀ7@ç–’çͱô3ùu¼O ")Û0Z£…ãF·áœ¹¨Ù¡áù2ªtqµ9smÉÁÄF¤ÿÜÓðÉèK#ÊDG#Œ]šII´,øC2ÙOT…»¬ …}JT‡Ë‹ޑTKË‚/÷ÔQ®þJ—a™åÒÓƒyíÉFçÁâpy†:ý銧¥a+«׫%X=µä†&zRY*UÖ©Ìü,Ëjã¬s™/-U@I>•úˆÕ$-¦x]o蓊fëÁ¬+¢êRºˆ%¢D}¹óµ3fÖô:gáP[°² ˜{>¯ƒ3×Éko€b4“mÞi”TƒGâ=q¨x¬ÄYž³÷*YØÎª[.=¡Ä–Žü 1Þ2Ds”½‰…2mX@l ‚O\®%Þ¿o|©V±2NºÀ?®ußÓº òYƒ/HS#6åm d1®C:ص—vbîzS+´ø$¾+—w¦4xòü©ð©7¹!—jÓåS4¯’a±Ùë|©î>F}òíå)ƒ…aºˆ&šÏ ¸‰Q¿Úaö…⫟Ùì6deŒŽ†úh94vj¬Øû…‰¸;T÷„æ ™›3v|`Û4¶dÆ#F†ÇE’^ôwðf¼7¶(bbš"Jýí51 OÚ„€O.×$çŸM}ãžñõ©Üïg*±bß. î’…¡ã•Š[…ÈòWW1w9¯§ < UI¹Á=¿ëÊ!ðÎÃAf,à-ÂÁçV°(ŽÆ‡¸é¸G `퉯ÚwuÒ;B ѺÍ\žñB\Æ´ŸΧs:"šìV :W$²ûL£´ßgº—8¦àÙ&:: Ä䞃åNá‚üŒ®H½)ËË6:{2B,ýÛà²'þUQ$±kNdÍLˆ‡_ùœèNç§ó„Äž•ØÞ–Ãé'vHÜ£XüŽâXt•¾ûZ¹…ªçÆ­Í7V»ô(EW0jnéTsºž™ùÞ£p¯9ÿÚìF…\ï:\ýþ¬E!•n&¢ØÆÕäT>óÇ{¢«´¢,¾‚¦VV°^V°QV°YV°UVð¤¬àiYÁ³²‚J¿ŸA6„–¸úù»Åyue|€y/;éø?¸åìº2zr/ŸKÓG6ÉÝÙRvM”¾·Á'¾¥[‘Üó¨kÞ»€©»ÌÌð‹>ép6Ú-ýo?•¼å6¼øûcÉSEÉšõd´[)%nü¨0–oäË7³ä›ùò­,ùV¾üI–üI¾üi–üi¾üY–üY¾üy–üy¾üE–üÅR>zU»ÜñW2kq)sÑu’õÄó}Ì=—ƒÛûä£úˆƒÞæ­Ðÿ‹ŽÁ¿cÑQ>|JŸò“;­ºÒ›„Ô­þ6c%¬JMÉíªäFk½öÜëõ:kña³¢¬ Í­ÖÍŠ²¢9)êô¶T”æIQs[EYñuzÛ*ÊJ ¨¨¹µ¢¬ŒQ{F@Û*ÊJ%tX!+:ÞlA§_8¬Ë­/$q㙨‰>´ÌÉÛüù«ªwéôzZ_–ÄÞ»¿PKvºZ<ˆF¥âM ýE3IAR-STR912/source/.svn/text-base/91x_ssp.c.svn-baseUT LjKLjKux êëí\ëoÛÈÿ|ò?L¯€aI,ùzw©œ%Ò&ªWI:AM­,")”צ{wöA._ÛŠ[”‡œýÍcgfgg×9zYñÀAïzãÉgÓ8;·á¸Õú ,{è¹QH|â&Qxn UC_ì½Ýó ŒœôéÀ_Ûw—q¼|ã"Ew•ÌÃÔ§Ã^ºË¥ï¹Nâ…ØÄY qßIÅŒâŒ8^‘)·~=j¿=b’uà#‰bÑ~ÓbHìFÞ’¤èöÜ‹a†’-£ðÆ›’߇dNÀ²&‡³äÖ‰ÌV‹#ã7ê‘îÜ‹“0ºïàÏT‰ãcTâ÷œÇòÛ_Ê ¶Å·:åŸ@bû\ƒ‰©YÚÈk¬ÛŸº¦ŸÎÞ9ècÎ.Œ~wÔÓ`<|†®1´ kÓ1ãFßAï²ÇCÍ´î“aŸSçbŒ>ìÚÆx¦vÖ5Ù[ÊÐ0qxÿ¢g[”Æf_3+úmö¬îG lc¨½aþDRëb`¿BO5zæXh=ÛŒžÖyw0€Ñ؆S εAF÷t 1Èîè3ô “R¿B,cÄÿA™R1G–ö÷ ª¹Ñ@¿;ìži×€r› •z®¶iX¨‚nއ(+Rm7ÖÁº FKmØõ¸Jpai0ìö58ýœY GàGn,.[f/„í#­O25j$ƒ½Q¡ð32oÉÇ÷è£{/öލ\ë¯0¤^?øAÌ?{~–Ycþsé­»boÿIäÝ`–Hî—dJfù+ˆÍ ȃô* .šFf¨âyΕÿó§3‰¹pIhöœ“ÈñA ؤSPŠKñ u×jµŽóû^Ì¿¶ît]ï+Àƒ0\©ã~…aH籩i œÚk(ól5…­î;×0tâ¯%Vøå’}aøm]Õv!‰œ ^xÉDÄ%Þ Âä9š f86.ÁÒ¡—¶ºÞT aÉlEB“‹VšD!LË©[èš­‡ÑÂI„QÄØž^`â$ŽåýA2*ɤ•'ìù¡ûÕ¤>ªR¢Øº^A8‰èÂíø$J§„¶ !.×g\Æ“~k·/„Oºâ?<|÷aµ”T—×Snb^RQêtè ~òŸNO,«›;5¤#rMKZ4@"a’sV>,=tNHBSŒ¿"¬$¢¹~¹JÔº tà–¢¸× àŠ@ h}×F1+ÓB+“„¡W‰ ×Qü`’dåûÐy» ½©bÕüѦnÕ'3,w‡/öþùbÀ›0[¾¯[‡øŽ}8ByÑNBË–ben:ä„”Vïâ²;90+°1——8â•6Šäðd]ß°2ÂoøñcB¥U¼ö:ñÚ[‹×n(^»$Þ·FFm\UQ¡†…ãºa4õ‚k/‰ëÍ<2­ ‹¥ƒÉ’YÐ $"c/|â$Z¹Ô‡IuÔ¼~XÜ”ž×©cÜeèT@Ärꥣ œêÈpà q¼€[Œþcæ]¯"¾9ó‚[(ðgúSÞbÈ­òù†uð¿*ZîeÁÎùì |xý¡°¦ŠÈÌ/³t ‹Bß)D«%bU~†ŽnrHƒ•Ê÷úCÏlÁ~=òI ÚH4[q©ø´xLîSÌ5z“ñ@Ê?_ž{×óC>DˆÍïý è>{Nü)Ì) ºwASZ2à—+ÂB kžuüiÊXUç_FB‡oü/Lwë9ûáí÷1ÞWÂÛ<ßNæNL6Ûï¼›Ùï¼{y¬M¯I…±´¢¹`‰¡9\1¡7—ñ"tÐz‹Iè&&+ñš±&ËVû «v‘çW²”^v_)Ræô=Ÿ8<‘è¦þ¥Ýiý®¼$nèî´b<)ÅmlŠa¸5a›­³%µØ.†cÖÌ;£óÎv)–ïÜšhñ,2ÐLж4© löBžX7¸%£9XH©¼’[ªª8W™ˆÍPUH¥rWÀ6Šj•ß{U³Ù/³á¥’w–OÚá`IT7ûÊ åIÁuyàD¸§°zæ—ß7{p~Töߘ®–´6Q€+=¸:åHìwïÞV‹º”.èM¬þG«^扙9¿SÛ wÆ¥„Y}y2e2XZi9}ËúòKAì’¡s;Ö$¥Í°Š£kä“h'¬¼ÝYqËE¨-quÏ÷Y5º®Ú»õ’9SZÙ×A8«¬ÖˆãγB·v󧘚V2€sÏíÜ£ o©X gûØés+³‰8(hXW²©Ô'Ý.¨Åá‚,®ÒÙXI®+÷êù±Õh##¾fU$»z`VnæEd±ÂZ‡J‹¦¨XZ•k’z\¾›±SÊBy{µ–º¬nä‘[ƒë±5f’‰¾­RÒ÷ÐÚ š¦à†È=‡ßíÞ¿·˜VæEnÂ7Ö¢R‰ËÛÕâÆtûõ¹µ:È-M8-ጛvoøñeš‹ëöëL&ª1ëÕ d¢óÜ(ªª­¶œVÇg†I-¤ì±å+,WEK*_̉öxyêkj¥P¬©e+½ª,9”*w÷}0›o lVˤ¦íûD ,»“Ê‘vêY W‘KXóúJÇT·è@QpZŒ )®܃.®¼€÷²xÖàÍBßo±À»¦ºœ>—öîÍÂȃÐ } sÇŸY,“{“NAœiÙÖ°â´GA­hõ½ ¶·Àµ'ÃMè ºÛh|ƒäAò€ÖæÅµZñTÎùA~”á[•$WíßÍ£'L±%ërœ1¤»Ûtkd7͛ۀÓúï<únÓgØ­«&ÒfKšZ쨘i4sÜšvÿ£§Kj”µ-zš¸ûʧÎô›}e³&Pdk¥AƤ¾ÿèYR=ï¤§î€ .¯D3(™q:é±}C¤µÉ'7ü-ãp_—oTO{„Ì#:’9ÿ-HÕ*z"aátÈ“§$·´ûƒ¨[š°Êw3šô!+xF꺻‘eîòƦžä÷ÛF&Üm³_FߢK[ŵyöKæ©à¹óÜo‘`Šý7•é_Z'‡ŸŸ$ó(\]ÏëòöÊf&FGHêb9ãÉ3l ëÖeü¦4Í>E^Bä {ßLï-d}[®qL‚$×½¥´ïØÎÛÒ•k]ˆ¯Ð‹0NX¨‰Œ˜)×ëê¾±K=È¡šû†='i¿X q.ð“\.•kbÓúû9G©Ì©sT8ÎË£Ÿ8â”ÒYvî%òêâÆmºR’1]ØÊ+¼CÉΩһJu}÷¼šYÙ­O”øNOâšiFËÏä·µüüì×¶´*îÐ6Ù§m„߯€¯jtí4–ÎH‚yÑ€«¸zÓ6'î×Ý:dÅe%˜áaê€x&F}-“]6½ôA÷¬Ãe . »Ëݲ¿<]Å÷¸¢2AŽâM(}åû…FëAm 4  [b0:¢U¶¢-¹tùî"n+"òåá¾S¸=Á­M¸±!¸bm7p+”ÚV Dٮɭ0Œ FÎ¥Ù¨$þ¦’}ø$9?Ë2å¼³nëŒfÉ`õË1¾5É5“½b¿ž0 cqf–R0TA”Õe·x³šÆ ¦ä.+ù É>|€_Ë,Û,ÃØcY’Í$Iï§–W'ŽN™Š*PH!–û\ËÝŽbr½‡âÕd»4Èc׬\Õ&V"Å*|U²Ì€Ÿrk›¼ -ø7ägÍ8"]ñN ƒaË wÊ~5cšä CÞ‡ƒ6¼{'íxz/ü8/ºôto–úºxI±£”rݺ/ð«*D~I¤€É¨L_–ÝýÑEÒ(¯òøU¹ÞZìôð*[ÇÙù”‹ò”ò'[ÁŸa¶~úƒdé[¤ß·…Œûȉ1»Æš;ñP‚_œtô°E‘üoC©Ò†ýÂ9=ÈùÁ%4ždiPJ׋•ìÿǽ}ÜûÀBϰùÔî Ö“aQ “õG²J/jsMPðW¥2` bˆõȾÞ®$¨ˇոϲD0ì ð—¹NkîÊ*¥Â’STÛù¥åD\JÄ.4×Õk¯€Õ\kùÎŒöŒ³Än ÕšÇuP7ÏåÒÀ’ jh›ÿ§Eõñÿ“Ð&t|±÷PKvºZ<ŸTü^`²3IAR-STR912/source/.svn/text-base/91x_lib.c.svn-baseUT LjKLjKux êëµY]o£F}”ÿpµû²mã€c;qµ&6’pÒyŠ·P¼ú`éh›Í*šI¯ÁƒgA"çv—€¹Ûíï:-å¦Åõá>ÜryÅ;„»ù6Úp’œÝŠv°$g›mü-«lBD>…Û`µƒM­¤:?ÙÕ‡h%Q°Šþæ/Që/r?ŠvI¼ýÞ§:F©ªeï JU´]—3 dmUÙùû#—yÌöÁsîüÍeð02õ˜Ü9. §¦¡Ù:Ç?‚fZh>öqîMô‡ O=ß±˜ëÁƒéˆSwxƒicwKóMÇ— 5—?EAÓ¥îÆT÷=ãÌåRØfÝ3ðM‹]‚æñ1‡Þtì¡¡lê®ÃÆL÷]Ç6u¼‘6ƒíø0`0bcƦ63N©Ù`˜.¢¿ VZ#FlÒÛc¿M1rSƒ¡YÚ¥AÚä…ôq¶kzÂëXdJfÖ/!Np–Ãs¼ØãÀçù2˜‡ð œõH Çñ$|‹ø|³ +6YJðfŸ7Øu ñ:äká>)¶›Ü0Ùoײ¦÷½0Á/q´HþDÕÏçgÿPžOe K“žŒgþÚfˆ¤£uø Ÿ°˜ù8Z lºøLwÍc¿"<\/¢%àð™qîÖ› X˜éOÁz®®2/ù}æ)»=ò&@r“y3”"MÊ‘œò5{Ÿõ¢ÊiQ¥ZT=UákSQõ´¨Z-Ú>mCóPÛ§UÛժרZ¼méõiÍëjÍΡf§yœÓšã¶{(Úmh÷´h·:ÐÞ¡f¯¹fï´fkB,œ˜äÌ2®2ˆœ ‚õŸ|~ç78¹E½`4o–¸ÌÛ@ίù_gó Ù<ÎÛ*TÔ¢Êëô=¡"›¸¯rš²y½‰H>OA¢"fiͺ­ÚdÐð­¦`þN³*í!iµà/k“¤@ô’Ñ*¯´Ê Úòûý›|×x #’,Q´ƒEÁ Ý•ÃãÜu;彩74€Hžk*É– ôTâƒKÕ\¿ÙÒEH¾tñ 9 JÁ.±‘âËdŠ S*ÈdKWŠ/“©‚L­ “-])¾~xx“†ï‘mòSóæÌoMö&8ÃX&aDÔ§M†Ý1‹¹?ñ? ˆK½KœÜó 8£8!V/é'7~Üoì3ÎÚäb„hî5'‘¿`HRìî…“r¶ˆÂ+JcâÍç$¹ ÄjuIÎ’k/¢d¶ &ïª;~¹c?NÂèk?ƒ­ ñ&'DK޽Z°)ÆÊ„¿ŽÝc“œØ¦cŽ\âŒûîGÃ6ÉÇc«{L,‡ôÇ69:µzƨk’ñhð‰ÖÐ!† 0ãVÏ‘î©ãއ¦í º–{ ÆÅ¬€ ׈m6ûZ6‚÷N»®“ÈØî™6#cC⎉c|0‰k Í=fO@8§÷9ZªÕµÇæÀìºöxduâƒ]rh’csÐ#Ë8˜ ¥1úDz– ³Ÿ#.kÄÿ¢ÀæÈ1ÿ} ’[Æ€ôŒ¡qd:\ v‚³€DÐp±mËAúöxˆ¼"B@â¢îÆ}✂ÒR£Þ>‰œ:&=“~Ê´…8È•ÅyËô…h kdö@ Û%Yì»0…Ìɼ&ïÞ¢÷Ÿ=}ötø &ó%ºÔ‹ï~ç?}Žü £ÆÅÅoãÉ’}ËèŸDþF‰äë‚Néì{Ø@ú FÀæô»äÊ´qÆr ¼sCLP‡Î,÷ÌäCø4nÍÕ =?–37}SA|B!ä]ÐÈ›Že_Î]!tbž94‘¡±qÓj¬N°i,§4nz}AȘN#ÇdêG”EIrî'9nôz …B^’tBF¡ ‰ã¶»Q'ñ¢DU#t ¥hQ{“£6>Ù‚X¸ÈÓBb-ݬ-$ÖSˆ ½øK¼Š¾Ñ_—4˜|=à °Ù/ÌÊ?ö?_Èy€þ§Â¬ñu &¦È€Õ—âƒf‚©M‡á”Š™›7³"g^œ(38¶ƒ".óЉ2…ÍzÙï%8¦Þ”F`ªœý¢™óYÌ<9Í‚«_z|_¼)¸ú•ù¸tßÅ e.)GbpªŒ»ãwóx·Ëú¤°<ók³µìQ+ðMRÖ†/|ò½¹ÿ¨Eæa‹,ŒEô3äJÝ$Äq?Âhì-ç ßʱxråÍ—”ån°)-–I6Þ~nÚE2¢mkq€0±z‚ÿ·IÎ/•@›ŒÂ€â€M“e¬ÜíËxúSEÍ5üè‚•õèŒÅ››ú³§¿?{Jˆ?#8xC:&O¿d#ûÈ.*N,@CQ;×% W †Ó==3Nù>Ã`jggñœ˜#L¦êo7ÍëYN6ñ6»ÀY³œ³fge›yÆÖL+òõ5wû”úH©‡XÿP-×›LÂhꟅƒxA'þ̧S­1/¼¨2ýùDȨ ›!q-'`»ô!üG ð"åÉa¼´É"ôàEB¥ƒ<ž>.L ñü€«þ™ùŸ—¯0ý`F—ü3|Êëiéõ˜Ê¾÷' ú 𼨵݂’e”X6_“kð ˆ°¤ƒYCŸ9Äòe‹LOºƒŸáËÖ ö¼Ea>zÊg2‰áÞÉS¡óÁLü“8£VßmrT ‘Lœ æëŽA oÿÒj7þƒù¦ô{¢{9åñ£àÄ€¯;§^¤p¥Çpóâýذ[d§£ÉÄ$*Ìe3D Á”.hÀ|l‡ ©HÍ¢ZËþ®ùúõ³Nvˆøê=ir-6ê,ÜåùÖa9#Mç1e¸*Òâ¸%`¯JÀ^Irz°×%`?¾|ùr ØA Øë×k©%`ë™ì–€IU–Á™®`,ÙÆ ­EJ>Ó@ĵù\Yμ˼xÿñ©]œÉ÷/õ+Q0d;#$ª É{×FÎõȲ‘Ç,h=êUÔ0ÃÓ‡7ù„×s:ýL/!Íß còEª>®Uñª2<ÛH¿ëN†µ øŠèç„×ñDÙ[ˆMÒ!:d%X> è  þå§öÁ†T,ûÔ TĨƠ¼#h+c‚“¦x¬¿ÿFç"°GÂþID,ŠHr 5âËwuÜ»ŽpÚ‚Y89dœØðd9ÇÊG®c¶A‰»¿ŽXýÅ›ú~ëmF”Æ1sUE2a‹Óî;Cvœ™@^0Ma2Áº§>žGEÃËê¤ÌíèKìKÕ9ƒj[Ueì6éó•NŸýÛ]éò§úþËõºd[uN“™L•µømõ"§ÁŒ@=,AÍ›yÌÜ®6Íç*EåB,Ÿ'O6dþiâ_'Mw³d^—ªß>櫱ò\_ø“ ríÃŽrŽ+)Ù›–§ÀOJsà=V <¹×T8Óv­ kYöËŽ±‹jϼì’^ž«FUîòc.CÖ`UïF¼Ê\–”¯E¬f$1çÒ—5YA99Üí7’a)fÏ}X÷ƒäOëj<³ˆ „ª)g-^­‹5ß}-­NÑkØNÚ&½Æí Âx8Ó›íñ›Î4>”¬‰D¥õÓ-jÚ{¹WJ=NWÓÊEöæL/©‚Ô#/ùf¤"ã×f¢šÃÇ󯸗%ìpåÚŸð9'&ÛÖB~z;Š<‘*Í]ùU û“5csZ ei­¼ºyœ£,?Ê®p´î&gÄL Ixy¹ ä…?¿ø™„PWãÿuµÖÙØ…’Âã_ÍÛÒD9ïÍï$â½Ô“Ôû¾m}¦ˆ›WÆz2;*™BaøXN4>¹…Oß…6ùP¸øp!XŠñ K]ò5”Þaoï?9Ì[¹Ovþ8Þcdç?¼ÂÞ:ëCPNÈŒzuRÍŒü×_ÎV–Põ"²{?ùßýœFn…¹üDò/"Ý[x ;Uˆ–‹äQýe½Ãäk¹”㽺ywúr¹€á/ùµ/ó–´§­J™³íNŠöQ=ŦÞÔµŸÖ[pBL¼à+(-ñˆ4bv<óg§÷î0¤lá¢pÞÚ©úSn“û"¥Òõqêy³p>¯±Šæ-eœ+ uí6|VŠë27U`» @ð·P‹µªu{Ýjìá]Q›°£jP-U‰ÁS_¯&“Ê\‘jûØæ^Pq >5¢…Çx½¼õÜíQby°â˜ºÜ;Ƨ(g¿B$¶]°—è4¢x·oi{©¸g“Ún ÈìÖqVãìÐpLò¯"@ñèFÁ¹KÇÐ KÑÍ`Pvèé¦0?BZx)e ¿¾’’€2V4‘?“åù\ â^‡B«B¡1ÅûCH˜èB«CBâkvŽŒ+ÑÇÿ{Ú‰Èì¿o•>EÖ pN± ´ÙP±’-V27“Lœv‰¢M½U†ÎÁ*¾¼-ã‡Ç.ÓVÞì÷L0†ñߢàÔ›îó :Û§1|¥åÞ‘Ó|ñÅ&ñ{ê­~Ò`ïÆ°½Y†\"dŸ‰ø•õçÇëÄ ùÓ\R£%ÎÃDQœå£¬"Q6årY'ëªÙ0ln4"ú•ÚMšpæÒ%­õ»Ý&+Þäø»×ËóTaå?%’/Ï¢ðRkùô“[ƒÈN•„òÁo¨^œ°C5­5‰HŠ³È…·XÐ@è3˜ÇûE™r»È³š²y·š‡8QuXn º[!Â>¦À†î²‡—uUoŒÄ•.ÝõAÙ±)oØ`Š‹#îk UeÆ¿ ’ ­½J_BiQç¬=#ðð¯»áED¹µkÚ1˜5¥öŽWEô×%ÿÆ”—WŽZ»Vû{î¿¡­ä•-Õsäò=˜¯Èv·2% ܲ‡1Õ¬ñÁÄdË6çlh¸Ýc³W øð“›¦•·Íꉭ¡‡†ÕOhö#𷇬LõVòª°ß)°X¬f£š®ñÜõ¬gº•DæÑýù¬oXƒSÛ¬¸1ñªF\ãÓ`y)؈ê;uN»]µÍŸj>}ëQ™¶=¶‹ˆ¦þlF#v‡%ÝÝ>uU]ä# &Ç•[[ uçÊo º]ïf¥#àú" ¢s½.SRJ ©êä˜ÑµðÅ€lK$ëàÀ[t °…Ô),f))†`ãQ[•ß—6G=üܾ50ÅBÿPKvºZ<;\™"3IAR-STR912/source/.svn/text-base/91x_wdg.c.svn-baseUT LjKLjKux êëÕZms£Fþî*ÿ‡N®jOríÚ²ë.ÉÙµ©Â€l*ò¶k?©0Œ¬© P`Xgï²ù÷‹¯{P­ã—løb‰éyº§_žéùè ã>}võÁ±..=8¾×›ò MXÄ‘&12蚺¿wc1°ýƒê9…ÿ:ï’Ðr±LR¨?§0Õ ÐÖ눾àI óW$lø‚!fš °²,g! þytüÑ´ìnXšÑŒãÑœÀ² åk R¡{KžÁ‚,[§ÉG² ü(±dpk\@–,ăŸ2Xäq@3³C„z懌»ä™HÒO§ôqrB‹ø¾±ˆ“rìíc}‹‹½K®Ó5mÜÙØ»Õn/-ý,Æ3.®-C³uföähÖÔÍÃ9³˰ì Я]o65—àn-ï“KX6NŸjž5³Á1/4G¾E…–CÓkÝsQfŽa:RŽMÁ›«Ý˜àYSóPæ*D÷zâ½¥LµtgfNLÝsf¶¥»à^j“ Ø3ÎM¸4'L,í|bJHÍþ†å ô[²lõ•¢™¶kþûWni0´©vaºj¨íФÐÐ'jÙŽåÒÆÎlJ¶ ‚xä»ÙÜktZåCÍ6ŽÔ’àÚ5aª&œØx‹fРr–²mã/‚Õ,Û4pAމN²ä;¢aidÓ“ÏŸÑGû{û{GhWD9•Ô»'?„ù7®ðàÛ’5–ßn¿Í‚\¾EíW)ÿH!>­YÈO1‚´×ÇìI«R>’¨Ä3fB²=Éc<,Móµ€qä߃\z¡eçã‰v17u€Ñ¯£ÑèøKpRöKÎ(·¡,O5¡*0Wø©8rE²†€YÚÐÕû¹-`NúD‡DÆã±Qé)]ºòqyZžl食rÿ.zJöˆ»GvF>E?fL r”3ØRWn´ˆ„rîÑŠ{Ÿ¸Â|ÖGîååjÕ~~*#m0+æ¢c«=Ҹñÿ _ÊÝuÍPhÉR?BÏ–> ó”ªÌÏ#‰×zj;2RÍ:õ¶ÁNbF³\ÔG6y·ž÷Á|LxXóÏ€¾÷÷þK¡põë¹vu~%]áвó9J¿Ó¦½hxpt°å­<±¥´ÌÃ]0†åöâ(„d±P û{Ÿ_ _úÆiˆÞ¤Á†1ª’eNb–•TžÉ‰9öe+¶ºCWàÊF_ÅÄÁ2Lî!Íã˜Ç÷°JB¦ò¨9ýÝô}Š£ðÊs¯Xz¦j  œ%y0¢$øºÕÆB®~¿ýf®­ï tH¤WÌ3?*6³nc72ïi¿Ú˜Ùĉ?Ü"%$FòÚ%Ö[\V‰ê´àA’†SEÆ­YÀœ…)¿öSÔ(É›ÇzUÞø’¢ûÒšCx¿»¾ƒ$>aà—¿ÏSudäñ"IWê3~êØ¾¶âì*Ëè*K™š|1èJÀF…t–ÈrWw½ =ôn&E úYñ¡(L•ð2åßý¨;ð¦¯ø>«ÂaQÆ:Q Oß(êQñ[[…#Øè(ÊS/®»©â²»¨µnø•SpG/œõ£¿“åÝ~³\N=+mï  "ÍmÖì  Iî‹Pƒw¥ãv„†–Ø ö[ ì6¼oáu¹M_…ÔfƪïÇJy¦>÷”|»mdx–ìbö€´C8¨::ÖŠªñÀq¯ï$%ÕÑ%eö• úpP:×äÒ+@¹ñcvª\jDHÙ9ÚJÈŽLD„ g­­+&ªä“çH!î>ör‚¶!W‡;NZªA‘&›óB¥¡Mõ£é™ú¬þ”I¿­¨•ê b~?Zù›måɺ®»§æª^êñN“Š*‰æ'öé†Xèøl÷øÉ–Q¯Ü”xŠJ]½õë©7W½Õœ©jn—s ‹4ñZ¼-®Ú¢ðOÛUþÕµ…Ã{K½Vé=)·IV –k×M-cZU¤¼mÚµõ*ÞÆzû½…ýºÙ|ÁDQîùŒÃUÿ[©úÁ¡EµÚsbZ}wøÎÔEï¹£¨šþøÃSÒu§Ø‰ËùWýêdd{[#¬ÑœGç~@ä²GúíiÎfSwdG®ï˱/°rÇŽ€„ÑÃpríÙvýå6Ål¼s‚[Ô·j´ŽwFÄЭs7$Älø_ܱ{:%ѹCÚÍ ýIti™Ì½¶ ·Ô DîÐ #?øº‡ŸaâEb ñn7;À:—7ø[ÀØ:ÔÈ‘¡™ÚÀ"æ°k½oy¨·‰n’îÐ Çz§9hkd8è}$M½o’¦m†ïôŽ>8 ícÓö5ÃDpïu똋¾Ðмߴôá€ÚAÓ O¡CÝÀæã¶eB%24:šA»‚w}b ‰Ù|§Kïk[”Ÿ C`÷¬ äT½m µžÖ¶Œá@o›ÄÐ:0 C"éôÙÂ×É$%ož£·üáǶ/o4£Hm^» ̸ ù»ÐçO? Gsú”ö¸_PKD_gÎØ™\ ì_‚Ð\ϹָR/lP£×#ƒx-Jˆ¤Oq‹U÷¹ºº:Ñ;'}óí†øÜ4Z¤DáSºxtýà‚jݾþFloLšÁ©LçÎèGÐhä‹=Äú¨³áÁb¦Ø$°½3‡øj݋܉‹À¾ØÐø ìÅâñ™Àó0‚~í`œ °r®"ÇCc½–¯<ꛞ™p.4šƒÏG…ú†DŒ'€põIå•Êâ+Ù$rÍjµªSš.Ñœü“HÀ«(~ZWÿ ur.´L`‹O6þ_U4AMðA¢É¢‘iuNÊ¢2¯?¯V*I<äÑl$c«]½èv«äÕ+ÒñLtYL,Úer=ŠŽ’]e()F’~QŒq†ºLú¹ 탕 ñI¯ô—ùÍR¯Ë¨fú:\ÖW†Šúûƒ¬À€\ã#km§š‹%nŠ,c‚bŠ`_«QdY Š”@.E‘$ž2KMTl&˜U9ÎDûC¹½J(î*À³&³{†BŠ1d3‘‡¡€‘ÀPœ¡"æ  £hGÔ,Fî…ëņÛÁIà_ȯgvF ¥l 9ŸœÅJ:gõ ‚$ü|¹ANƒ¢^¡ï›uŽÏ ªê †:k¿dªå%`â7;ôÍsö@‹;ÝxxÂãùb®}:½Ž{È-µöW4ô³ÀÙdƒgI’°ñ„9%LiÛžE[„¿~"¯ÉïÜrtFj"ZÐÇëB,S;¨³? BÌ¿'¤eQcOd¢×â»ôß3#€äh¶w ©×jä7» ® ÿÕ)ô]²øóŒ»9w%ˆ; ñl)Ä]D„µCÿÅ;/bãÙGòrk‡,þ(!Öð`Zëm0y–5ƒÕ`ëâ¿<eˆ„X'}¡ ÇÄ?÷Sl("{LD>† +3$ÂÆŠÜ™ï4ÈuÇÑ»•/>ˆù¾²»kr=¼ÙBS4‚Ì×ߣÔï8ºçFå]V—=xà(מºÿ*‹$ËÌJçN`O%GÔ¼w µìù4ŠfJà„NĤ4Ü*›îÍæÒ öÈÀ÷œü&ËÀ ç‘ ïºà 'šqšêºàn¶÷!_˼ÁýÇ~G‰ÝFôqJÄü¦¢7ªr Ö4ÛÇ'Í£ÖÚ¦rr-6´¦aªûñ ¶Ÿ¦Å Éâ°€wÅtE.¼Žn&fà10þd#ªb­bö-B–#fz±Ù£‘ŒÑ82!#áÌa[eFBWRšš!èøTÃyÂW}ìІmã¤ÝÖÀÿK6Ú|C_Ò¹8Š #d:Q‹9XUCþnQ¿çØ_œ¸ãÔsË Ï×+Æ iDìÉ“"†ÈfÀÜé4$Ž=:OQŽ\8§ —ntNÜ(” ÞÖ“Ä%REJ‹Õå¹ H,gÊ% JN²0æã•„&W ¶žÐ²>_LS9nê ·D/I?2'¹®ËB ˆšöóªs¶§µÀ×­¯Ÿc±,©ò@Íg!p^ƒ!-yTµÄ†(ù›7Ý‹íÓ÷ð˜¼ßÚ]ÝÃÍ–„ ,ô.Æ.œ¦’Šß|Ó² `@)@æ•>íSgï2pqå—PTôÍbçX–q„Àjû„‹9M›bMd×[ö|L äº#Ðv#{ Z‹Foëf~6ä•"ù…·ÁÉCU:çÞ‘¬GÒð2¼¿Is8u™÷Uú9»p¼´387lVBûb†ëÛ¨ü·”úœ°eð¸r1Ȫ7§¶çÔ‰.ǃ(AêÏ·$Ü2…áÖØKbdO¨éI#”î:Á%½Œ…=£ðó%LÂWotŽ»Bæÿý{~1#ïÝqtžACô§š\UÉÁkWMðMÌºí©¸<ÑA© ª5vË{åL!Þ¶:d"Oµ!O—Š ö‘¦M©² f*E¹4ݺŸV‡qªôÍ̲ëZm}œ³ZyªªÎFçL×Mèþœ @/6 í3t­'öÈÙ tiõ Íc×¶df¦™3<¡*5\s†¹u'pνñq¦¡C·ÂÈùiHΨ€E¥By/ì‡gÃÓÏ¿Ö>mµ ˜ŽEoÆIëØüX%¯ÁJW±fØè˜™›J‘ÏB©—…R¡ÐÇüiã.<Ûco:c6€X Ãñmžaà¨`ÿô³q—©*ì(\†ß/Â3hšvkûI¨Œ»6¸è`H·SÏQùk‘hAà&ðßÂX@Od\¨¸—g8±l⨶fš˜º⃹©ÀáË_œ¤Å@4Ã82Is Ül¹“¯à.jMؼ AäONÜÉë]“à²ÉžQXÈo•ÊQƒÊÑï a¢C¦õ'‘I ³/ì|:yo$§üWí7Í·%«6VÉš¸CÍöJÖî4­fs…º­ýBôë,øÈ¯Ðr«4—Áh.‡Ño/­ÒYÚOgÑQ^ÖR-Y5óX£N~âü»Ïò㜹àÞ…ö¶®VÒÜX¾M{[r}éœØì64x¦lwŒ9«t7‹mmtã#®‹SW #Š0?g¾HëApï…nÉš‡tc’$aJF’#ÛChlþtê_ÆÉ°Ð2À él[¸o‚TâÌ‘ÞÙ õúæ©‹é¹¥Íq¿6—6ïmÆ¿hóü¶¬<Ï;1žB¸%ÃÉb.Æó·gD y4£×6£ Û%f„MÎÀBžå©(°ÆØ>ô;:›¥B»‹µ›XÛiæ¤ ç6ÿUŽG‰üÕjÎkæ8I¦ÛU¼kІâD‘h9¼h@Rqnhuê(Žõ”Gk‰ë¯@S!QQ³d@`$‚c”<ƒ‘Öäg9hÀóÕÇÈ¡D)ض ÖÉÛ‘ÓœNΉ-l…‚¸j é ‡‹%£´ÿ×GïíF×̼%ÖI©=}͘=ªŠË¶-¹äÙiÀߟ~ªÆJ ³ÜãÆO×ÈŠ†3uìÐáqá“%lÈk+£Ôó|ûYïG§sýNg’…îÓªe»gèëhБ¼.ëƒñ‹i ´÷à~å[—ûj9Lˆd…p¬ÆÆÙ-7¸‘F¤ZBzï Žv,ÖÅàî"ã„ÌÚ¶s•Ø—.+£Åk~žƒtÐØvP,TrXÊië!iKž¼áÛ²*CžóõD¥1Ó&¢Ò‘íÁǧbNåÝF%6å©õ,$Õ† Ð^“ÿQäP% ßr½´ý€ÙcÊRòe"¸ARp2øbQàO¥ Ê2¢ „œdBI•ÇZSªœÛ§Œw>Û|/6ŠŒã/é9Θ§ádf)3ä¢x½Tü]:ô.uçܺbXòO9è’ö¢qâÁ¤0#H–$ñrM{9½×®´Z­Vå¡sâø?—“Í7ú8?p¥,s1‚Š; 2}|3úŠ TPq S3=àcì¡«ui"(eÆ\zÀl<<ˆ;ìLG9bÇ£Uvâ>XŒ_ëŸ^½¢÷$×>eý†ZÔªí¨5rµr1z¦´›(£j@Ï?­¦œîØ2XªzE‡Hé šˆj6PCðTøxk}ÁK¦lÔ¿Nw#<þúÎV5¡  ¬ÆäòÜñÈ™Ñ=ÛËV:kyC=óU u׸R!ºÏ[0*ïFþA¼Z3Λ%Â|Lè}äÏ\ÞïCq#QŒ˜(”÷!¡f`i`f×gÊÒžð$éâŸóB¿òo4rïmÙ²ÂÃÕÒQgÒ}4ÔpªÎS=í<­`Ü–óÉùU+BÇü¬ £iFøV¼´ µJúÈêƒßà#³Ê“ ßì,J^[ð‘Ö{ö3U2Žïï×.u»+ºƒjØ. Ô‰XŽDuŸdÛþAF5Ó¼¼-ª^UôH[©›q7¼LvoTãE—”]>6®DsáCÒ£RÉú̷ñÎÁ5J7D?q?Û .dèCK Ð˪¢Y£ Ÿ†ªŸ‚~ùýìæ÷ÓRŽçY~?­‚ñÂp6OµK¬ªdî|Õ¾¸™»0=ªdlÚV¡å3>ÆÿÄýæëèÍ–Œ†I^2Í䈬ĉ¥™’^Çoô­h¸v~OpÏJSU¤Èã•;Á1ëRã)9xTä×)ESW¥È‹y„L£ñjZWƒègØ%]½§ñýPKvºZ<öÙÌäux2IAR-STR912/source/.svn/text-base/91x_mc.c.svn-baseUT LjKLjKux êëíkoÛ8òóèàí¹d±mlwÛsÐYŽ…óë,ÙF÷‹¡Øt,¬#’ÜloÛû÷‹Ã‡DJ¢dÇ©“ìEÀnl“3œ‡ÃáP}óCÁƒŽdô‡ÖeÛAgµÚ/ÈvºÞ, ð Ïâ0ð½Y„Š@_¾øµ¼F=÷£ä©£¿Ÿþ>½™½žA‡Æ&^!’Ÿ:êMÔX¯WÞ̽ÀGvo sÓ1AF1²¢hƒçйöó›Ó÷o(au4Æa§¯kG³Ð[S$ vgéEh„­Ãà“7ÇrW+/1EÁ"¾uCŒ€Ñk‚éž ­íEq~®ÃgÂÃÙððNááL´½ÍówÊÛt¼ж‰CÓ6{²û-gÒšhÒ¶Œ6²lÔêÑåÈj6z†‰ú½ÎGÔ°º6j8¦?¶šVï#ÛéwÍ¡ è&–Ó&¦E¬ï6«ßCCó²1¤¿’­!€7G†c“N¨?lšC:ië"§ìÆØDŽÕ5_Ss"ö¨ãüvjþÙ1 gØïY†ìv£ÓA½¾ƒ.LÔ6;MÔ±“¢lô>¢¦5$½\V}!ƒ2{¶ù¯áÜjtP³Ñm\š6「6€^„@`tÛCËZÃ~h„‰²ë·="BKdØè5ß0–ÐÈ6Q·Ñ4ÑÅÇTZLXŒ¶T^€¶aõÌ&ahh!Yô·! š)‘ª$ïߢ߼|ñòÅB—?[m`F½Úûœß{ úŽûŒåw٣نþJ„Þ'ðñç5žãÅ>4ÀàF‚Íóñ^Le0޸ăî'¥ ÆOnè¹W«}dÏÔø=ç¶kLûMÞÚ8ÇYû½V«æ›‡8‚ÐÜ23ðFW›k•¡/²ÐƒASØ÷j›#µÖ2ÃäãBóY-×Ȇ­ýÞj5[XG}[Ë5 ØZí" ÛtdØ÷µ\c û.?îE‰¬ µLV¶“‘• m*z8­åZ%Üf–2Ã82xFž´Y‚ÿ9'Ë6mCFª¼ƒ„ã§¼dË ZËìÐn*Ã×βÖl³ÌP¡¹ÔRGø÷ùfþÊ"«2¢Í¥*šØ%O[SÓkf§ËP<£¡:vÎè/– ±zh• sf?µKl Z3¦¥´vJ„­ì/¹‘ÇíA«L÷»Lk§Ä^ U†ÍšË`ÒΚc¦U†nfZ;%ZeØìDè7íMCkÝjå&¡i[Za7„ö·?æÜîðtêX½i·aÿ“¢hêƒá´ëF¿±PœQ€”#XR’.B:Ò2'ÂrÞã–ú¼Ì™úû-œoî7¢¢»'Á+ÛAÕ©«Ã–ïÅ››:ùÁ#Mž»òþM„Bö2kLÚ—8tW(Ä×d¿Av(`«ã…Ô¸›ULšˆÆaîùä®6˜îH`·ÞÄò­øú›XnI†8Þ„~¾á~"øO7O%s _O^¾øƒ ûòBDת0ÈþoãÏqˆ˜±„lc4m .´m8žN»ÆÈìÁá䌽Ã,UxÈ*ÇI~ùâ+‹œï÷ÑÖt,ÉpøFXbÑÍ‚pîù×ÜxP´Æ3oááy¡Ù¬Ý IÍó9::´‡›YŒŠ ÊR:ÕÑ:ð|‚†t‡L÷&‰ì#ÚgCvéñÒ-¶ÝYàÇ®ç3vÈ—…w½ Y:ÁóAxÃ>“Oy†_?.æf­JàU¤`ïÜ8mš–¡<„#Â%Q[7 Û%fžÞâX}õðË¢'íøá™x"$i›Bã à@t0”¯éÆ.ŠC×DoÒ˜äé¯þA–‡3ôåƒÎñ9Å0™>l_(¦Ô[ *rG ×áM¹/JXöE‰±¾(G$?_Ò˜èœ7Ó?_éÿñ*ÂûJá(‘õçt„]Ó‹ö‘ÅQ* æRiÈßÇ™ïi”X"F/ëð•Ó¬ €L¥Á¤KæÜ†Î_Y…ÆG:KfG¾ýŠÃÀÀŒçFÇÙ¬ •wíTQ % G ˆÄ‡ÂF!²FÎÜU*l@h †6ú€ ½Ïµˆauæ ¶î VŒvÕ£â5Ž=ê̹ڡ9(ÄšB ¨`Ç-d7k0: ȨBr!n §%›aM%šÇ«“+Ã[.\†-.ƒ`å†^üYF!*A~œ|>Ê®'l:Î1êµÑ ž#;†ÈR—D¾Ü^y~®4qŠàã‘(ÓÂ!ÃÑaÎÙt-˜‰L•v“¦ ýÞ÷±½ býü;åüð¼Å6óï”Ï¿$™Q0ÿ2Ä›Ÿˆ#Ø’Úwše„ý*|çü˜[û“„SçOøšF‚Œ¹äÒñ ¯±?ûLB0Ô2Î̤/ã)ù>e¸5¼ðFJ¬lÇÐÎV8RÕ3#naE!QVø¹ZA†Ò±¢ü¦e§é\zƒ&vçŽwƒÏUjÉ43v^Ò|fN‘ÒTЍÀß>…IÝzñlY¤‘¥ëûx• èøïh”‰š“0cæF,«Ä:NGuÞð‡ðB‚:²@ŒŠ×´ af”FºÈ€»ÛQGüÒñcÎmÖþ›B‰´}*õí’÷ycϤå¡GÛ çù¬üy1¼´M¶ d'`›`UBÊù”L:EQ†#Mñ} ¹eCeûj{'Éb6 »ÆÊ"€–Q’I>èrh)£&`x–^¦&é8_?µt|±„p÷Rf•wméЏíC&:ÓO£°JéÓðk«^“Ê^R¼¥8r21…/¯mßt|÷QÇwur÷Q'»ª¤¬³SØœ_ãéЋˆ i¹«ù£Á"òlUœ;Q à Ëq3/\çØ,¤llÁa·¦ÚßF0ëÈÇ·ˆ~DÁB{hÅyr*NöL>YÒê¼°Èá¥ìÜ™ÈñXÈ×]17FA?ˆE‹iâ'Èx­´ˆiéXW>R;ÈLÚ–WnRË#`YØ N) 0gDí¹ ¯å¤hhH'"CÁ˜|H[ÊÙQ™1`©`ï(a¯å±MR*<ì…*2X¾‘…Ó•ö‰ ŽcŸJAR†É¤2‰¥°:ºbÛÉžp³:胻Q ÇŒÛjI±à'¥'™Q¦ŠægVWÎÃè*WÄŽ˜L£­W?µÌ«ëz>W‹®èoËe0êO³&*‚.Z£üòm·<ÎÁmǰ4‘ýlï@UPê#»pZ"(<¿D)ÈÙÞÑRˆ6_ŸpèeÁrXšy×ðæÂÍZg·¯òzR¸X‰¢`Cvl´@ö #LG+.pD óbóÖ8rýÏpt~åù,‘ÎgÏ"X­‚[(Õc5·u Rúpn¦ø®'õ9Â6çEGRzœBw‡¥Ð£¡ue^À¿¼þ톦Ñ$*mlâŠ9g™²¸ÝPõBQŸl§D@•êëw΀Ðe¸kšÛÚW·–ʹVüJ碭ü,)xž¨Snãxsú ûþ#Úsã’uŸÜqÌR!r¡xQ«+¼¨å$‡Û*¢ëUpEH¹=ƒ1ʆ좸•_´)p÷Hne6ÛSM–”ÿäÈ–Q݉î‡Ûj‰%ÙÅÂu…tHójY¢6Ç`¬«P0çRÈÇ3Cd!oÞ+,$®(eL“±C^{¬iªµ¯r=æÁõJ3¡ÕJe Ó ÒNu©ÿcÖ%¥P¸;ö-¯FƆ^‡IÅqR«{pÒ¬sµ¡ 2*4H‘Õe€Ç¬BJm¢Bú-¯BÎG™yUERFñ :o©Ãñ6:×e€Ç®Ã±¢Ã±F‡ãb"µÚ%)oy%N¶Tâd%Nê2ÀcWâDQâD£ÄI¹'’'‡V"?-Ù?³âí¢„*­kÖ«“a®k:!$*e?ŠÀ×ÛJázÒ¡Ý8ó«tiʪÜ%„uè»A±°"ñ=çRn´«tr…Aº³ph•òü6Í#TªU½ù¥ò¥Õ1ï^—Ï‚G¬fY,|cÄ¿qÁ4\ˆÓª;½Ç»2uJÙIÊÎÁÓ›I ìn µçA@BÌŸê@ñ¾Gä`aìÖ-=º¥7¯Ð…‹»óôŠObkqÀ3Ó™‹dQ¬ÕÛdbUÑÞ+<1°·§£øF[!_´„Ô¦Úƒ“½-N5Ó 0ÁÿS9ÚTYUÏ5i ~vššŽÜæóùÊÿû­ÖIÕ=Vé”læÊ‹eÓ6xáœx{ k(Ô¿âæ ¯sQ¯Õ¥À5 B8/P ?…ËÒ—?;¨y]–&¦.wJLínQhï÷!²æ!Q¨jWœ$QÚy×>O ¢¸ÂBÖQä¢BOúüÓånù§»)*‹÷~US,ßT¦©uY¶IUÖÁM—¥‰¦¼²JM{(k|8e·P–&­¤*ëà ¥ËÒ„R^Y¥ ¥=”59œ²&[(K“>R•uðÄѥرóêJ•±MÐ7Zºø¾‘B{2ïZò'«J‹Ž1p¤X¯ïWjR·÷ƒÿXï‘IKâ- úô{Ax5(ăªÍ_¨÷ÞfŠ*5¡Û[‰WµîP#p‡±ŽÒ±²»¸CÙ;ݼ@Á¨÷©Ìi‰Í‚R§©Ìaê˜Ä)1ñè‘YeN <›•ò¡&ÀðÖ¢t胆„x¸ó-Š AÅïU{*[|A½Â³´’)ú¶¡bNó¹tßž©;âoO>xÒš“¹õš¦èRY²Ÿš.5A‰ªJ¨X,f7¯J±>ØSžNâ,ZZïù×àc6ÅêÆÏ~‹ÐíþÒ»â: f ­i|Üú÷¥Zg‰óñ‹4üq³?éÁ £ÁÉ7 IUJM1R§‡Ð?ywò úëôÊPGMò7递—%ü¶V¼ŠÖ²;¡oä ‘Äúõ½Ó¸ÌÖƒSð˜>0Ì1+‚»çw®äJrµÜ ˆêú`ªrïªTqïª-áÞGiýöx*Š·wHiåöN’Uʶw€4mBBzâ`ÃyJ¾§?ãcÛ¦óþ-çÛx³t"çf¶8QJ²ÎÌ¡$m7ÆhÌ{)òk•#£ w½8®>\ú/q'ا/×÷S²!)sX€q‡uo×Pž×ÿ‘ózÏ—Øž/±ÝCLc9ˆhÄ\ÍLÝôΙ6–!MèèˆåÊè]+þ㓌j,gÀ• ÍÛĤèÆê‹$7#+OwQ·ÐUI`ì<»«gwõØ‚ y>f}QI(T8)Il„ ‚#«ô4s—!Øì5áß2mY“óò?PKvºZȳºÆKÔr ª°÷¢ãíX-ÝéC÷œ~ÏÒ]äš­Nõú:5itÚ¨cµN;QÙê}BmËÁÒû¸-ú 4â"½ßs_/°åV«ƒÚ­nëÜ F@k6„¾€½CÍv,L8sú]â8¬ÁÃÕ‰¾3ä^`§¥>lõÚ‡Ô$tá¨Ûjèô“à-\ƒêÈ;‹º°çµ¬žÑÆ9vþƒ¯õp§À¤“²'_>8>Ÿ?{þìpY“áx£ê`íèü)¤úÐ N×/ä–ÐôMñŽÐÍt4Ãã:œ$Atétø#<$wZÂ;Ó¡?FáCXÀ4ÚQøh+¹¿ FÁå:*s±¶p¬ÝÇŸ˜Ì»Ó1z¨zwTÅ©±SþzÍuÿ‹…þçñ:^Îiäd ¼žLÁá+ëf­@é𽽜ÓÇ5­û!Ó5w ² &ºzç½;EÃ@ŸN.Ã+żzŒhÑ,bs)ÔÁ“(TBÃñtø;T²&·³Džæ;ïT5j¦m ú®¾ŸýÂD8AH;žNøs–ˆÚŽQo:  À ’Y4 Œ(šFnâ'³ø8W7\4ŽÓw Fošù ®‘û"" c*ÂK”D÷áä %S“ˆX Ýô!K@…q÷Æ×kHú8ê ƒâ™)R°ã–S•¤[‡{ÂhccLâÛð²"¦Q»8QÕŠöI¹#äôñ} ùïdêþËiT ›µj#|‡ÿh‡>X–‚ž*< æøçÏÅP§3¾YÓY›%R;®~ ãi´L¶âØEDž¦¬JV±S»‹²‚‡ýà€|™†#µÁdY&v˜ó†”Ñï6ye«åÄÇ.Qn}øWý¸úoq^›Ø‘µi…æ¾5¥.šc³5]¬} “k)2Ðèfad®#s9™OFƒ ŒÌå`d.€QË<Õ(2 (2KQd®†"s«(²WC‘½Šì§‹¢‚ÁEör(²¡Èž‹"»€"»Eöj("io EØn;Àˆ¹&kè YºKïçà$'¶à8tK4‘?Vbê€7‚¿Ëâqe7Q÷Ñ`ÐjëhÿåË—sVîi2t¼îÒãÑqªr)jZ°¥áÊÜ»è)™,*²…;n¶~îÔ0DÓŽ4xº™Áy[&£j“¯ËÝ0Íul.dÖÈqNp|ណÛÝÖÿŒ¥067c³Æ}€±Y ã>±¹"Œ n‰ %€[qD gøô;FÓÕØøºœŠ±ú¡P,ùs=æ÷DÕø•}IÖÚ×0ɇÀÎBv³p±ÍB{[¢àïÄî |½ÿèØ5‹Øý^îåØV•8tªÍePÇnuõ5o»| Y£qÙæ‚â sZ=ƒÍ"¸= J`zõeà̳’ §xëæ“Ú9ìH'y~O>)»êTxŽâtó„Jó–ˆx#`þGRrÌkæÄ"æT´\ Ëﳊ•ç(~J`棯|ž]­æ–ÓŹÖ„bˆÀÿ Zéà‡ehÛ(ÜxXž¡sS%†ò¦Å’<­Ð¿%¶Þ$Àÿ‘¤]øC±6A`‘·—cí%^dï%¹[ ðÁûtŧ¦§K>6=}ÂÏM‹6¼.ùä4•«žèäiÅ©ãl߀SÒݔըŸSÈ"ù-N°(Ç Ð¦6OŠžµÔ^ï5XþNÚhªæ=*—6Q­ñýÜøGý•úž-¢}‘w‡³kÆož ®XìLÍÓcÑ•°±O¶SKæ‰|"Ífæ«ywn©#¥­åC¶Ÿì-nÌà^½;ß6þÛÈvåž÷¸¦Ðô kªW«UyÍ¢vO¡Ý‚1õW Y«Ÿ¯…~n|TÙQ°ÔVe2P@xèƒ}˜ËÃß7¦2Í•ÚB4„éµ§7v2‡ Ã÷9µ 8d–1™£»Ïtœ×63Á] Ûâýb,XW ª°]ÒìfшóLKŸä‘%<¬‹¯ºæŸˆªR⓱A*6LÎdìç~×9xÙ5<ŒŸ$E¯‘¬B2°$«¬Ìá‚nÀåxªWnšØÉkSfR•9û§…]’ø6Ó˜ŸÊ¡¨X{™Ÿ"§å;¦Ÿþ*ItÁÂmÂåË!Õ»Ìvjd[¨»–•:S±úÉPüw©6¾Ã;¯n³H:ëZË®waùtÝ–.e 8¢Zyz/¶D’wNZü’õ¡þÄÐ¥p !/Ù°ö¬Í±-AthÆY²æ¼Ze‘zY;‡u´yl]ët%pá ètË;FL¢;<&1I =Ö0:Aq·Ÿ¿ôÔp§ržPX‚:ÑØ††œ 3Ø µv *æ®ÃE6æ6³-Ðu§£¥\§˜ƒƒy³qÞŽƒ;zœ¸ÜdÊpÖí·ì× {ñ'7øÙ6ð…§±ÌA"¶À [8K¯fÀÛT‡ÓÀð¨]pba }GÔ¥ÉídÈ¢^SœçZ’â³µ:ÆÒò(¯pz‚*ã`r…È]t;ûQ˜ÜkêejÖÌ^,!¶ jÌØ¥ºzí*Ùýެ_èL¿ŠˆÅWÌðêúéa6õ·Yf9½1$ÛÅ‘|¸—űèÈ WéÜÅ„Ùõ¼Ü\$óÀ°Cÿª®àž–öƒFHÕ\²S”,í îÆOtZ^ÙR¥wÚ’°»×¢¯¢‰f·ê¥ÊU|Œ¤‚èÆ/ßÉúô6ÜY)Î-oÝç=Xe×}ÏN·YÞœ‰åñC¢ŠU UAsÎ9¨ ¶¬©Xh›§æó 9ûWô(©p;Œ{‰ÅÈ3¦™úí$½Æ2j|ô{†®An±Ã{¾¼ÇÀIf\ÑÜ2p)wR¾p6”Šd /½Oǯ#6Îä™w|qf…Òù›C¬A\tÅnm€§ö)Ã%‡Š=¾ÆfŸƒb`ÙÎeü‘ÞK/Äâœß}΢(˜ÐcÅPeL†÷ê;LÌíËÇCÒ‰*ïÍ?µÇµûŒÛ]°¥oó!ï tžøÃf3=‘â¯õá‡Íáwƒ—öpi¥P\­jïÞ¥B¶Bè-¼_ KÕÞ°¶`|WHƒïªpŒhÇ_ÅÁ HÓ*•ÊÞ?2У{L{㽺¶G„µCZÿä„4ªiL³HÕÍÃîÕž­†?òò¬‡ ¬t#”L— H¢-.ÉéAú&ܺ¬kr¼¥hkEÕk¹êøoaF¨¨†ÌÆgygux8góðpæÂóß"AbǤD’…½¦c©§¨à’Ífõîg-­¯X(‰¥z÷Ž×Ú ÌÕa? ÌÍÂ,„)œˆ70­ü<7ÚN!Úæ6£m¯mó1¢mo>ÚvY´m1ÚvÉð?‚p¿]!ÜöÖÂýÑÿ=¸¸í„“%ߣéOq—Ñ„¼–ßðcD¡q8Qo1~ó°<þREïЫÚ[9äý;Ü““_¶³õɽ †Ö$qf“O3è“þXxÔÏÞɯ@ÄøÇ柆™_ã‡yCÚ£c_啞ûC’[ØýÑéöÎÉ.·#Å©VZJ°r´áõ´ÇXº,vŠÀ'ðzîp²àÄÓêSÚãßΓ&°|TjÛp»;‚Û%üNä~<ǧæ•z¾¾ñYþ¢åxVÔn­´­ ¨ÎŠF>}0»ì@ÍÝœ­Ÿ¼™;t|׬hs›=èÏ|%ô~’‚tï¿_”Ÿò lÀcnuÉ[#!eH½@Þª*Û)2gÎlðä‚ü SÕ‚pU“H‘ ÅlÞMU½Z¾Þ‘\O.¬•í¦^ªk„ç¿§ot‚˜×¹lX–Hln£àÙ¯§úòoS%â?üÎ@fóš»3dewÁòQ-ãÈUþÿ£×†ÿ¤äÌêÌšÿPKvºZrììþ÷­j0r(™éw×ñÕÑUeçð`Â=uTëòÊ6.º.5›ŸÁqû‹#p/£Px lbÝÝ9€Ž8˜lÊa±Úðgë~ħ¢á…’¥“(†òjC_Õ@™Íá±TD!¸œM‰Xc)G™q’‚‘$÷‰¸ùé°ur(‘µáâh5š’'^,fRÈBº; Œ Ù,Žn…Ï`A鄃Þ7 ‰Æé‹9Œ³Ð#Τ¢Þx¸®HÒ(~hÓßhÄÑñeň£ùÙǪ­âl›ñ?±ÛÕáÒÖÝtÁ±:îP±uv µ †ˆ‹¡)¦ªƒeö®@1ú(.òXß Í0/@8®Õ×m‡Ä ·‹É% ÙûŠkX&Øú…bË]ThØÄ® T×A"°lM·¥*<ëƒk£|ÓÁ5úzCæ*DΠçÖ)S Õ¶ôž®º¶eªNWéõÀ´\8ס«÷4èÊyO—"ó 4ÃFê:É2Ìü•"LÓÑÿ å†ÒMé+º“[€Ú.‰ ±µ—›m™Ð±­>a%(Ä%ßYpè´…S;ÌM‚£C_Ñt8¿Zz‹8è0wVŽmé/«¦®¡A¶ŽN2䞉 èX‚\õäÛgôáîÎîÎ!â ½ £+õáÕ‹d¾¹<¨Í«Æ¤¶¾›x™ÜEí—±¸¥‘≯ÏǯAÚKQšù«¬ZøÈð„ƒ‡•%ea ·,ì: 2„U'K°¬±¦,ùž@Á„…>ÖªyyŠù Ö ¼é €\âûÐùè’Ýð~äs›3äöF}”ó®yß¡uÜé24õ Îë4ïDk¦Ü1‘bh± ãû¾¤ä° °Û±¶·€mUÐâNí¸õl¸Cǵ5ÂÛz&àU÷þÄC»„˜ÔùÎCjË8é$<–÷Ûç{€qMÁ›ˆ$òsIðrøôͦGþyÞ¶t“Ð7[%Ë¡æ×ÀoB­ùøÃ}³„¾¬^B|/ê)îáË(V)íšìäxþòœÁ \S•¬€iW"é²`<ŒbŸÈZŸKtO⟚ȸª±ŠY>`RÆœÉð¤RÖÓò„Jͨ¸4%¡s‹r·®1\ã& ’.îo36 B-g° VùªÏpZ‡4fa2F‹Þ ƒè¦Ëƒ)Îñy‘zÒþKáÿ¸—`é¦/+ssOæ$'ë$Ånõõ£àëI ¹‰Ró¢8ù-‰hÎ+n %ãª9OZcFñ”¤ñæ@O [ʨÈ$zÎ)ìBþ³ìÉÑRNä¶,õAúg¥­S’Qš²i°+OŠØ ð>Šð¦±!™qOŒ÷7Î.3£F9’‹peðÊ½Ô ‹·ÌO”Í÷í;ÔËá~ÑÈë­ú昔bN@‰£A¡¨¬U­ÏÇÞáØg1bÕ i=¢ "Fƒ šFê¯xû ( û­¦³å\& EaîÁÒÙõuW¬9nŸäýX¦»äúðÕPm(rzsµ’“Òi…ÏÞÌ·6±Tù†OóáÜPå³td|Böì Ÿf¤nYeN7Ðýóˆ‚9ó£*ßK^ªe­©<ªlÓ‡¢è{¤Ð?_íüƒÓ½/¨Èå¼­¿äŸº©ÑG׎ÑÓ‹{øPKvºZ<Ñ}Ñå; "IAR-STR912/source/.svn/all-wcpropsUT LjKLjKux êë½ÕMNÃ0à½OQPFM U³C¢‹ª‹‚ØV®“‹8¶ü“r|B‡ °"R£ÙÚ–>?Ë~ÞͲ\„®-ΪðòPÊ®è*´mçÉ7âuv' Ÿ÷ÖFPÎ¥X…7ýôë`™å}jßÁ52ÖÖ›Û‡ýüùe¿^dlòª›§G±^|NNÛ[%vÿ™«üj~yÄ5 _Nƒ_4¢K#GÙ×6üp„+ÙrâÈ~Ö‰GŽð'Žá>râÈ^͉#Gx’>r¾óoøš7{ý'»ÎƵÌD8r„Ë·£tãnÝji fÍÜP6創l.Üpø%krä÷‘GŽð¨ 'ŽÜÐñŠõƒAî ÿPK vºZ<IAR-STR912/source/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/source/.svn/tmp/UT LjKʈKux êëPK vºZ<%IAR-STR912/source/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<%IAR-STR912/source/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<!IAR-STR912/source/.svn/tmp/props/UT LjKʈKux êëPKvºZ<“‡O‹•³ZIAR-STR912/source/91x_i2c.cUT LjKLjKux êëíkoÛFòsä?ìõCò%¶¤¤‰«Dh‰²‰êá#éAq0hi‘I•¤l§MÿûÍìƒ\RKItüèõʆ¬ÝyîÌìÌîPû»š‡ÔºuÒŸ|²­£c—´×Äq‡þ$ éœN’( üILt Ïžî’¾?§dä]R’>mòSóæÌoMö&8ÃX&aDÔ§M†Ý1‹¹?ñ? ˆK½KœÜó 8£8!V/é'7~Üoì3ÎÚäb„hî5'‘¿`HRìî…“r¶ˆÂ+JcâÍç$¹ ÄjuIÎ’k/¢d¶ &ïª;~¹c?NÂèk?ƒ­ ñ&'DK޽Z°)ÆÊ„¿ŽÝc“œØ¦cŽ\âŒûîGÃ6ÉÇc«{L,‡ôÇ69:µzƨk’ñhð‰ÖÐ!† 0ãVÏ‘î©ãއ¦í º–{ ÆÅ¬€ ׈m6ûZ6‚÷N»®“ÈØî™6#cC⎉c|0‰k Í=fO@8§÷9ZªÕµÇæÀìºöxduâƒ]rh’csÐ#Ë8˜ ¥1úDz– ³Ÿ#.kÄÿ¢ÀæÈ1ÿ} ’[Æ€ôŒ¡qd:\ v‚³€DÐp±mËAúöxˆ¼"B@â¢îÆ}✂ÒR£Þ>‰œ:&=“~Ê´…8È•ÅyËô…h kdö@ Û%Yì»0…Ìɼ&ïÞ¢÷Ÿ=}ötø &ó%ºÔ‹ï~ç?}Žü £ÆÅÅoãÉ’}ËèŸDþF‰äë‚Néì{Ø@ú FÀæô»äÊ´qÆr ¼sCLP‡Î,÷ÌäCø4nÍÕ =?–37}SA|B!ä]ÐÈ›Že_Î]!tbž94‘¡±qÓj¬N°i,§4nz}AȘN#ÇdêG”EIrî'9nôz …B^’tBF¡ ‰ã¶»Q'ñ¢DU#t ¥hQ{“£6>Ù‚X¸ÈÓBb-ݬ-$ÖSˆ ½øK¼Š¾Ñ_—4˜|=à °Ù/ÌÊ?ö?_Èy€þ§Â¬ñu &¦È€Õ—âƒf‚©M‡á”Š™›7³"g^œ(38¶ƒ".óЉ2…ÍzÙï%8¦Þ”F`ªœý¢™óYÌ<9Í‚«_z|_¼)¸ú•ù¸tßÅ e.)GbpªŒ»ãwóx·Ëú¤°<ók³µìQ+ðMRÖ†/|ò½¹ÿ¨Eæa‹,ŒEô3äJÝ$Äq?Âhì-ç ßʱxråÍ—”ån°)-–I6Þ~nÚE2¢mkq€0±z‚ÿ·IÎ/•@›ŒÂ€â€M“e¬ÜíËxúSEÍ5üè‚•õèŒÅ››ú³§¿?{Jˆ?#8xC:&O¿d#ûÈ.*N,@CQ;×% W †Ó==3Nù>Ã`jggñœ˜#L¦êo7ÍëYN6ñ6»ÀY³œ³fge›yÆÖL+òõ5wû”úH©‡XÿP-×›LÂhꟅƒxA'þ̧S­1/¼¨2ýùDȨ ›!q-'`»ô!üG ð"åÉa¼´É"ôàEB¥ƒ<ž>.L ñü€«þ™ùŸ—¯0ý`F—ü3|Êëiéõ˜Ê¾÷' ú 𼨵݂’e”X6_“kð ˆ°¤ƒYCŸ9Äòe‹LOºƒŸáËÖ ö¼Ea>zÊg2‰áÞÉS¡óÁLü“8£VßmrT ‘Lœ æëŽA oÿÒj7þƒù¦ô{¢{9åñ£àÄ€¯;§^¤p¥Çpóâýذ[d§£ÉÄ$*Ìe3D Á”.hÀ|l‡ ©HÍ¢ZËþ®ùúõ³Nvˆøê=ir-6ê,ÜåùÖa9#Mç1e¸*Òâ¸%`¯JÀ^Irz°×%`?¾|ùr ØA Øë×k©%`ë™ì–€IU–Á™®`,ÙÆ ­EJ>Ó@ĵù\Yμ˼xÿñ©]œÉ÷/õ+Q0d;#$ª É{×FÎõȲ‘Ç,h=êUÔ0ÃÓ‡7ù„×s:ýL/!Íß còEª>®Uñª2<ÛH¿ëN†µ øŠèç„×ñDÙ[ˆMÒ!:d%X> è  þå§öÁ†T,ûÔ TĨƠ¼#h+c‚“¦x¬¿ÿFç"°GÂþID,ŠHr 5âËwuÜ»ŽpÚ‚Y89dœØðd9ÇÊG®c¶A‰»¿ŽXýÅ›ú~ëmF”Æ1sUE2a‹Óî;Cvœ™@^0Ma2Áº§>žGEÃËê¤ÌíèKìKÕ9ƒj[Ueì6éó•NŸýÛ]éò§úþËõºd[uN“™L•µømõ"§ÁŒ@=,AÍ›yÌÜ®6Íç*EåB,Ÿ'O6dþiâ_'Mw³d^—ªß>櫱ò\_ø“ ríÃŽrŽ+)Ù›–§ÀOJsà=V <¹×T8Óv­ kYöËŽ±‹jϼì’^ž«FUîòc.CÖ`UïF¼Ê\–”¯E¬f$1çÒ—5YA99Üí7’a)fÏ}X÷ƒäOëj<³ˆ „ª)g-^­‹5ß}-­NÑkØNÚ&½Æí Âx8Ó›íñ›Î4>”¬‰D¥õÓ-jÚ{¹WJ=NWÓÊEöæL/©‚Ô#/ùf¤"ã×f¢šÃÇ󯸗%ìpåÚŸð9'&ÛÖB~z;Š<‘*Í]ùU û“5csZ ei­¼ºyœ£,?Ê®p´î&gÄL Ixy¹ ä…?¿ø™„PWãÿuµÖÙØ…’Âã_ÍÛÒD9ïÍï$â½Ô“Ôû¾m}¦ˆ›WÆz2;*™BaøXN4>¹…Oß…6ùP¸øp!XŠñ K]ò5”Þaoï?9Ì[¹Ovþ8Þcdç?¼ÂÞ:ëCPNÈŒzuRÍŒü×_ÎV–Põ"²{?ùßýœFn…¹üDò/"Ý[x ;Uˆ–‹äQýe½Ãäk¹”㽺ywúr¹€á/ùµ/ó–´§­J™³íNŠöQ=ŦÞÔµŸÖ[pBL¼à+(-ñˆ4bv<óg§÷î0¤lá¢pÞÚ©úSn“û"¥Òõqêy³p>¯±Šæ-eœ+ uí6|VŠë27U`» @ð·P‹µªu{Ýjìá]Q›°£jP-U‰ÁS_¯&“Ê\‘jûØæ^Pq >5¢…Çx½¼õÜíQby°â˜ºÜ;Ƨ(g¿B$¶]°—è4¢x·oi{©¸g“Ún ÈìÖqVãìÐpLò¯"@ñèFÁ¹KÇÐ KÑÍ`Pvèé¦0?BZx)e ¿¾’’€2V4‘?“åù\ â^‡B«B¡1ÅûCH˜èB«CBâkvŽŒ+ÑÇÿ{Ú‰Èì¿o•>EÖ pN± ´ÙP±’-V27“Lœv‰¢M½U†ÎÁ*¾¼-ã‡Ç.ÓVÞì÷L0†ñߢàÔ›îó :Û§1|¥åÞ‘Ó|ñÅ&ñ{ê­~Ò`ïÆ°½Y†\"dŸ‰ø•õçÇëÄ ùÓ\R£%ÎÃDQœå£¬"Q6årY'ëªÙ0ln4"ú•ÚMšpæÒ%­õ»Ý&+Þäø»×ËóTaå?%’/Ï¢ðRkùô“[ƒÈN•„òÁo¨^œ°C5­5‰HŠ³È…·XÐ@è3˜ÇûE™r»È³š²y·š‡8QuXn º[!Â>¦À†î²‡—uUoŒÄ•.ÝõAÙ±)oØ`Š‹#îk UeÆ¿ ’ ­½J_BiQç¬=#ðð¯»áED¹µkÚ1˜5¥öŽWEô×%ÿÆ”—WŽZ»Vû{î¿¡­ä•-Õsäò=˜¯Èv·2% ܲ‡1Õ¬ñÁÄdË6çlh¸Ýc³W øð“›¦•·Íꉭ¡‡†ÕOhö#𷇬LõVòª°ß)°X¬f£š®ñÜõ¬gº•DæÑýù¬oXƒSÛ¬¸1ñªF\ãÓ`y)؈ê;uN»]µÍŸj>}ëQ™¶=¶‹ˆ¦þlF#v‡%ÝÝ>uU]ä# &Ç•[[ uçÊo º]ïf¥#àú" ¢s½.SRJ ©êä˜ÑµðÅ€lK$ëàÀ[t °…Ô),f))†`ãQ[•ß—6G=üܾ50ÅBÿPKvºZȳºÆKÔr ª°÷¢ãíX-ÝéC÷œ~ÏÒ]äš­Nõú:5itÚ¨cµN;QÙê}BmËÁÒû¸-ú 4â"½ßs_/°åV«ƒÚ­nëÜ F@k6„¾€½CÍv,L8sú]â8¬ÁÃÕ‰¾3ä^`§¥>lõÚ‡Ô$tá¨Ûjèô“à-\ƒêÈ;‹º°çµ¬žÑÆ9vþƒ¯õp§À¤“²'_>8>Ÿ?{þìpY“áx£ê`íèü)¤úÐ N×/ä–ÐôMñŽÐÍt4Ãã:œ$Atétø#<$wZÂ;Ó¡?FáCXÀ4ÚQøh+¹¿ FÁå:*s±¶p¬ÝÇŸ˜Ì»Ó1z¨zwTÅ©±SþzÍuÿ‹…þçñ:^Îiäd ¼žLÁá+ëf­@é𽽜ÓÇ5­û!Ó5w ² &ºzç½;EÃ@ŸN.Ã+żzŒhÑ,bs)ÔÁ“(TBÃñtø;T²&·³Džæ;ïT5j¦m ú®¾ŸýÂD8AH;žNøs–ˆÚŽQo:  À ’Y4 Œ(šFnâ'³ø8W7\4ŽÓw Fošù ®‘û"" c*ÂK”D÷áä %S“ˆX Ýô!K@…q÷Æ×kHú8ê ƒâ™)R°ã–S•¤[‡{ÂhccLâÛð²"¦Q»8QÕŠöI¹#äôñ} ùïdêþËiT ›µj#|‡ÿh‡>X–‚ž*< æøçÏÅP§3¾YÓY›%R;®~ ãi´L¶âØEDž¦¬JV±S»‹²‚‡ýà€|™†#µÁdY&v˜ó†”Ñï6ye«åÄÇ.Qn}øWý¸úoq^›Ø‘µi…æ¾5¥.šc³5]¬} “k)2Ðèfad®#s9™OFƒ ŒÌå`d.€QË<Õ(2 (2KQd®†"s«(²WC‘½Šì§‹¢‚ÁEör(²¡Èž‹"»€"»Eöj("io EØn;Àˆ¹&kè YºKïçà$'¶à8tK4‘?Vbê€7‚¿Ëâqe7Q÷Ñ`ÐjëhÿåË—sVîi2t¼îÒãÑqªr)jZ°¥áÊÜ»è)™,*²…;n¶~îÔ0DÓŽ4xº™Áy[&£j“¯ËÝ0Íul.dÖÈqNp|ណÛÝÖÿŒ¥067c³Æ}€±Y ã>±¹"Œ n‰ %€[qD gøô;FÓÕØøºœŠ±ú¡P,ùs=æ÷DÕø•}IÖÚ×0ɇÀÎBv³p±ÍB{[¢àïÄî |½ÿèØ5‹Øý^îåØV•8tªÍePÇnuõ5o»| Y£qÙæ‚â sZ=ƒÍ"¸= J`zõeà̳’ §xëæ“Ú9ìH'y~O>)»êTxŽâtó„Jó–ˆx#`þGRrÌkæÄ"æT´\ Ëﳊ•ç(~J`棯|ž]­æ–ÓŹÖ„bˆÀÿ Zéà‡ehÛ(ÜxXž¡sS%†ò¦Å’<­Ð¿%¶Þ$Àÿ‘¤]øC±6A`‘·—cí%^dï%¹[ ðÁûtŧ¦§K>6=}ÂÏM‹6¼.ùä4•«žèäiÅ©ãl߀SÒݔըŸSÈ"ù-N°(Ç Ð¦6OŠžµÔ^ï5XþNÚhªæ=*—6Q­ñýÜøGý•úž-¢}‘w‡³kÆož ®XìLÍÓcÑ•°±O¶SKæ‰|"Ífæ«ywn©#¥­åC¶Ÿì-nÌà^½;ß6þÛÈvåž÷¸¦Ðô kªW«UyÍ¢vO¡Ý‚1õW Y«Ÿ¯…~n|TÙQ°ÔVe2P@xèƒ}˜ËÃß7¦2Í•ÚB4„éµ§7v2‡ Ã÷9µ 8d–1™£»Ïtœ×63Á] Ûâýb,XW ª°]ÒìfшóLKŸä‘%<¬‹¯ºæŸˆªR⓱A*6LÎdìç~×9xÙ5<ŒŸ$E¯‘¬B2°$«¬Ìá‚nÀåxªWnšØÉkSfR•9û§…]’ø6Ó˜ŸÊ¡¨X{™Ÿ"§å;¦Ÿþ*ItÁÂmÂåË!Õ»Ìvjd[¨»–•:S±úÉPüw©6¾Ã;¯n³H:ëZË®waùtÝ–.e 8¢Zyz/¶D’wNZü’õ¡þÄÐ¥p !/Ù°ö¬Í±-AthÆY²æ¼Ze‘zY;‡u´yl]ët%pá ètË;FL¢;<&1I =Ö0:Aq·Ÿ¿ôÔp§ržPX‚:ÑØ††œ 3Ø µv *æ®ÃE6æ6³-Ðu§£¥\§˜ƒƒy³qÞŽƒ;zœ¸ÜdÊpÖí·ì× {ñ'7øÙ6ð…§±ÌA"¶À [8K¯fÀÛT‡ÓÀð¨]pba }GÔ¥ÉídÈ¢^SœçZ’â³µ:ÆÒò(¯pz‚*ã`r…È]t;ûQ˜ÜkêejÖÌ^,!¶ jÌØ¥ºzí*Ùýެ_èL¿ŠˆÅWÌðêúéa6õ·Yf9½1$ÛÅ‘|¸—űèÈ WéÜÅ„Ùõ¼Ü\$óÀ°Cÿª®àž–öƒFHÕ\²S”,í îÆOtZ^ÙR¥wÚ’°»×¢¯¢‰f·ê¥ÊU|Œ¤‚èÆ/ßÉúô6ÜY)Î-oÝç=Xe×}ÏN·YÞœ‰åñC¢ŠU UAsÎ9¨ ¶¬©Xh›§æó 9ûWô(©p;Œ{‰ÅÈ3¦™úí$½Æ2j|ô{†®An±Ã{¾¼ÇÀIf\ÑÜ2p)wR¾p6”Šd /½Oǯ#6Îä™w|qf…Òù›C¬A\tÅnm€§ö)Ã%‡Š=¾ÆfŸƒb`ÙÎeü‘ÞK/Äâœß}΢(˜ÐcÅPeL†÷ê;LÌíËÇCÒ‰*ïÍ?µÇµûŒÛ]°¥oó!ï tžøÃf3=‘â¯õá‡Íáwƒ—öpi¥P\­jïÞ¥B¶Bè-¼_ KÕÞ°¶`|WHƒïªpŒhÇ_ÅÁ HÓ*•ÊÞ?2У{L{㽺¶G„µCZÿä„4ªiL³HÕÍÃîÕž­†?òò¬‡ ¬t#”L— H¢-.ÉéAú&ܺ¬kr¼¥hkEÕk¹êøoaF¨¨†ÌÆgygux8góðpæÂóß"AbǤD’…½¦c©§¨à’Ífõîg-­¯X(‰¥z÷Ž×Ú ÌÕa? ÌÍÂ,„)œˆ70­ü<7ÚN!Úæ6£m¯mó1¢mo>ÚvY´m1ÚvÉð?‚p¿]!ÜöÖÂýÑÿ=¸¸í„“%ߣéOq—Ñ„¼–ßðcD¡q8Qo1~ó°<þREïЫÚ[9äý;Ü““_¶³õɽ †Ö$qf“O3è“þXxÔÏÞɯ@ÄøÇ柆™_ã‡yCÚ£c_啞ûC’[ØýÑéöÎÉ.·#Å©VZJ°r´áõ´ÇXº,vŠÀ'ðzîp²àÄÓêSÚãßΓ&°|TjÛp»;‚Û%üNä~<ǧæ•z¾¾ñYþ¢åxVÔn­´­ ¨ÎŠF>}0»ì@ÍÝœ­Ÿ¼™;t|׬hs›=èÏ|%ô~’‚tï¿_”Ÿò lÀcnuÉ[#!eH½@Þª*Û)2gÎlðä‚ü SÕ‚pU“H‘ ÅlÞMU½Z¾Þ‘\O.¬•í¦^ªk„ç¿§ot‚˜×¹lX–Hln£àÙ¯§úòoS%â?üÎ@fóš»3dewÁòQ-ãÈUþÿ£×†ÿ¤äÌêÌšÿPKvºZ<ˆF¥âM ýEIAR-STR912/source/91x_ssp.cUT LjKLjKux êëí\ëoÛÈÿ|ò?L¯€aI,ùzw©œ%Ò&ªWI:AM­,")”צ{wöA._ÛŠ[”‡œýÍcgfgg×9zYñÀAïzãÉgÓ8;·á¸Õú ,{è¹QH|â&Qxn UC_ì½Ýó ŒœôéÀ_Ûw—q¼|ã"Ew•ÌÃÔ§Ã^ºË¥ï¹Nâ…ØÄY qßIÅŒâŒ8^‘)·~=j¿=b’uà#‰bÑ~ÓbHìFÞ’¤èöÜ‹a†’-£ðÆ›’߇dNÀ²&‡³äÖ‰ÌV‹#ã7ê‘îÜ‹“0ºïàÏT‰ãcTâ÷œÇòÛ_Ê ¶Å·:åŸ@bû\ƒ‰©YÚÈk¬ÛŸº¦ŸÎÞ9ècÎ.Œ~wÔÓ`<|†®1´ kÓ1ãFßAï²ÇCÍ´î“aŸSçbŒ>ìÚÆx¦vÖ5Ù[ÊÐ0qxÿ¢g[”Æf_3+úmö¬îG lc¨½aþDRëb`¿BO5zæXh=ÛŒžÖyw0€Ñ؆S εAF÷t 1Èîè3ô “R¿B,cÄÿA™R1G–ö÷ ª¹Ñ@¿;ìži×€r› •z®¶iX¨‚nއ(+Rm7ÖÁº FKmØõ¸Jpai0ìö58ýœY GàGn,.[f/„í#­O25j$ƒ½Q¡ð32oÉÇ÷è£{/öލ\ë¯0¤^?øAÌ?{~–Ycþsé­»boÿIäÝ`–Hî—dJfù+ˆÍ ȃô* .šFf¨âyΕÿó§3‰¹pIhöœ“ÈñA ؤSPŠKñ u×jµŽóû^Ì¿¶ît]ï+Àƒ0\©ã~…aH籩i œÚk(ól5…­î;×0tâ¯%Vøå’}aøm]Õv!‰œ ^xÉDÄ%Þ Âä9š f86.ÁÒ¡—¶ºÞT aÉlEB“‹VšD!LË©[èš­‡ÑÂI„QÄØž^`â$ŽåýA2*ɤ•'ìù¡ûÕ¤>ªR¢Øº^A8‰èÂíø$J§„¶ !.×g\Æ“~k·/„Oºâ?<|÷aµ”T—×Snb^RQêtè ~òŸNO,«›;5¤#rMKZ4@"a’sV>,=tNHBSŒ¿"¬$¢¹~¹JÔº tà–¢¸× àŠ@ h}×F1+ÓB+“„¡W‰ ×Qü`’dåûÐy» ½©bÕüѦnÕ'3,w‡/öþùbÀ›0[¾¯[‡øŽ}8ByÑNBË–ben:ä„”Vïâ²;90+°1——8â•6Šäðd]ß°2ÂoøñcB¥U¼ö:ñÚ[‹×n(^»$Þ·FFm\UQ¡†…ãºa4õ‚k/‰ëÍ<2­ ‹¥ƒÉ’YÐ $"c/|â$Z¹Ô‡IuÔ¼~XÜ”ž×©cÜeèT@Ärꥣ œêÈpà q¼€[Œþcæ]¯"¾9ó‚[(ðgúSÞbÈ­òù†uð¿*ZîeÁÎùì |xý¡°¦ŠÈÌ/³t ‹Bß)D«%bU~†ŽnrHƒ•Ê÷úCÏlÁ~=òI ÚH4[q©ø´xLîSÌ5z“ñ@Ê?_ž{×óC>DˆÍïý è>{Nü)Ì) ºwASZ2à—+ÂB kžuüiÊXUç_FB‡oü/Lwë9ûáí÷1ÞWÂÛ<ßNæNL6Ûï¼›Ùï¼{y¬M¯I…±´¢¹`‰¡9\1¡7—ñ"tÐz‹Iè&&+ñš±&ËVû «v‘çW²”^v_)Ræô=Ÿ8<‘è¦þ¥Ýiý®¼$nèî´b<)ÅmlŠa¸5a›­³%µØ.†cÖÌ;£óÎv)–ïÜšhñ,2ÐLж4© löBžX7¸%£9XH©¼’[ªª8W™ˆÍPUH¥rWÀ6Šj•ß{U³Ù/³á¥’w–OÚá`IT7ûÊ åIÁuyàD¸§°zæ—ß7{p~Töߘ®–´6Q€+=¸:åHìwïÞV‹º”.èM¬þG«^扙9¿SÛ wÆ¥„Y}y2e2XZi9}ËúòKAì’¡s;Ö$¥Í°Š£kä“h'¬¼ÝYqËE¨-quÏ÷Y5º®Ú»õ’9SZÙ×A8«¬ÖˆãγB·v󧘚V2€sÏíÜ£ o©X gûØés+³‰8(hXW²©Ô'Ý.¨Åá‚,®ÒÙXI®+÷êù±Õh##¾fU$»z`VnæEd±ÂZ‡J‹¦¨XZ•k’z\¾›±SÊBy{µ–º¬nä‘[ƒë±5f’‰¾­RÒ÷ÐÚ š¦à†È=‡ßíÞ¿·˜VæEnÂ7Ö¢R‰ËÛÕâÆtûõ¹µ:È-M8-ጛvoøñeš‹ëöëL&ª1ëÕ d¢óÜ(ªª­¶œVÇg†I-¤ì±å+,WEK*_̉öxyêkj¥P¬©e+½ª,9”*w÷}0›o lVˤ¦íûD ,»“Ê‘vêY W‘KXóúJÇT·è@QpZŒ )®܃.®¼€÷²xÖàÍBßo±À»¦ºœ>—öîÍÂȃÐ } sÇŸY,“{“NAœiÙÖ°â´GA­hõ½ ¶·Àµ'ÃMè ºÛh|ƒäAò€ÖæÅµZñTÎùA~”á[•$WíßÍ£'L±%ërœ1¤»Ûtkd7͛ۀÓúï<únÓgØ­«&ÒfKšZ쨘i4sÜšvÿ£§Kj”µ-zš¸ûʧÎô›}e³&Pdk¥AƤ¾ÿèYR=ï¤§î€ .¯D3(™q:é±}C¤µÉ'7ü-ãp_—oTO{„Ì#:’9ÿ-HÕ*z"aátÈ“§$·´ûƒ¨[š°Êw3šô!+xF꺻‘eîòƦžä÷ÛF&Üm³_FߢK[ŵyöKæ©à¹óÜo‘`Šý7•é_Z'‡ŸŸ$ó(\]ÏëòöÊf&FGHêb9ãÉ3l ëÖeü¦4Í>E^Bä {ßLï-d}[®qL‚$×½¥´ïØÎÛÒ•k]ˆ¯Ð‹0NX¨‰Œ˜)×ëê¾±K=È¡šû†='i¿X q.ð“\.•kbÓúû9G©Ì©sT8ÎË£Ÿ8â”ÒYvî%òêâÆmºR’1]ØÊ+¼CÉΩһJu}÷¼šYÙ­O”øNOâšiFËÏä·µüüì×¶´*îÐ6Ù§m„߯€¯jtí4–ÎH‚yÑ€«¸zÓ6'î×Ý:dÅe%˜áaê€x&F}-“]6½ôA÷¬Ãe . »Ëݲ¿<]Å÷¸¢2AŽâM(}åû…FëAm 4  [b0:¢U¶¢-¹tùî"n+"òåá¾S¸=Á­M¸±!¸bm7p+”ÚV Dٮɭ0Œ FÎ¥Ù¨$þ¦’}ø$9?Ë2å¼³nëŒfÉ`õË1¾5É5“½b¿ž0 cqf–R0TA”Õe·x³šÆ ¦ä.+ù É>|€_Ë,Û,ÃØcY’Í$Iï§–W'ŽN™Š*PH!–û\ËÝŽbr½‡âÕd»4Èc׬\Õ&V"Å*|U²Ì€Ÿrk›¼ -ø7ägÍ8"]ñN ƒaË wÊ~5cšä CÞ‡ƒ6¼{'íxz/ü8/ºôto–úºxI±£”rݺ/ð«*D~I¤€É¨L_–ÝýÑEÒ(¯òøU¹ÞZìôð*[ÇÙù”‹ò”ò'[ÁŸa¶~úƒdé[¤ß·…Œûȉ1»Æš;ñP‚_œtô°E‘üoC©Ò†ýÂ9=ÈùÁ%4ždiPJ׋•ìÿǽ}ÜûÀBϰùÔî Ö“aQ “õG²J/jsMPðW¥2` bˆõȾÞ®$¨ˇոϲD0ì ð—¹NkîÊ*¥Â’STÛù¥åD\JÄ.4×Õk¯€Õ\kùÎŒöŒ³Än ÕšÇuP7ÏåÒÀ’ jh›ÿ§Eõñÿ“Ð&t|±÷PKvºZ<‚ÕÕ(}™”IAR-STR912/source/91x_dma.cUT LjKLjKux êëí]ís›HÒÿì­ÊÿЯjKN9Žäd³yœóUÉÅÔÉ’À›Ë'dSAà;{·÷·?=/Àƒ@–ü’=Ø­ŠôËôtÿºg†×/%ô”=PfçŸuíã© ‡ýþ;0Ì3ÏŽB×wí$ ÏŽAFúâ§—0ö|¦ÖÂ…ì8‚ÿÜ]: ëÀ&w —ÉuxÁ™2‚áÍïÙVâ…˜®µ 7¬ÄEžQœ€ÇK×!7÷y=xÿšjv¿¹QL(}JàÆväÝP&wóÚ‹aN4»‰ÂožãÆ`ù>$×.ŒÎ†‡óäÖŠ\˜/›PÆ„“ô\×A%’,ÛvcƇðˆÜ+/NP—¤ÝòA´9Eîaôýè[ÚP4Âá!1¯#¦×ÞV 4à×êŒ÷j›§*œëª¡NM0fcóÓPWáÓ©¦œ‚fÀx¦ÃÇ m4œ**̦“Ï0ÔÎ šH3ûMiÓ \æìLÕ Âî“fž¢sÒ ÚÉφ¦6›‚®~êô, ÔtB>ºPLo‚™>Ru* ¯9cø› ¦v¦PDÈÀ¸˜˜ûÄÓ5EŸ©U1õÙTS 0N‡“ Lg&œ¨pªNF0ц'•²N?ÃHÓñî}ÂK›²(Õœêÿ]`˵áFóáGÕ`-@içä.Ô…0P&¬Ùºf&ŒõÙÑ•0D&&±Ýl Æ-³áp:zÍš† gÑ 'Ÿsk r‘‹é–Û‹°jSu„ ÒU4’FÏMQ)r™*Y´äöÝúõ‹Ÿ^üôõ lIBòÕÆãùðËÝw®wËgc{IÏR Î#ïÁ™äû F÷|EˆGäæîF-+q\XÄ›™ªÄñ›yÖ“`v§\ žYñ×v—±ëìBøßÑô¶ˆÁ‹ÐY" ó~âÖa^~òœäúr¤—gCãï;"ðöïÆãÁ˜õ„†®È Õ7u„'q’ɈvRʱòë J©ÀŒtü¾†t쇷JDþ%±TE[&TFhFñÜðâßÝ:Âq¿ß/R%Ë·KHÇê "“X¦©òF®®¢©+Hß÷Ù!#U®­ p}TáAbÞþûFZlw íÛzÚ“å|îFœƒ„öp…Χ–ŸÔS"ÑÛ:ÊIh]I9¨m«e_»õ¤o›M<ÄŠç›+{XG«1Ê4ZrT*—[ÃB¤MÿÀ*­ÐH!—„°×†­üe5ߦð÷zËù‘VÓisYE}D ¨™$&•0˜{W’’÷˜icÀ*Ûñbö7©uã×öæÖ¯B?ÜQ¸F„Æâ5ZÞ$´&Ò‚›e’wÊ‘´~%r9‚ÛkKè;°­¾¸Ðßìî¿Ù»ÿËþ»}TåWR5Çt ‘UÞœú ž?kìQ¦{œÑfcNÄÄá2²]"…»ÔŽ`G.£xÐq¡±‘7o‰¼ñu…ιÔT€ž–iˆÿ *DϽ6zTÙ™ ôL7Zxåƒ.ƒ¤Ôþûñ%•m†8†É¸ÅŒr“wÊÔ½5 œ# ÝBLþ„p¾Ê¿UÿZuÈ;Ô)-ºÑŒ#Í RF³e"zêLÃÀ¥Wt7YFäÊv^ù| =§œ=Á —&bÕ‹Ë—ãìÃrðN „ý,æ-ŸÚRƒï9ÿzñ€7‡^zöø˜fÓ(Ò¹ç(Y~ï^ý e:†‹â?ÿ ’\?v ׋ cr{#óŸá?2öäàþ¨ÀyÐ,¸r‚J1[ƒæcfÅ£kDæÈ‹bö’Ë´ŠLEIÃ’”ÐAY+¢!úóð,ˆùãa²>.ï½fdÆHrM¦"gó…~xåÙ0Ç[ˆAì0ŠÜø& /¸¢A£»ÿ\ºq†w…†j®8ˆ@Ò£jõ‘1¤e‡Ou–½˜ª$w5$É 3F5—r-0QWtxü ê&ª MŸx-ËZXM^¹‘δ°iÁ±Ndñ6âMna”<ëui´K£]•Pýøiôù¥)sBŽb™ˆ`ýÃÁG~ù†^‚ü?n"c%ÞOîø‹&´õ‹4êw¨/%û¯Cýgù"àOJˆ{€¿˜+ þ¤öòOÖGü“%Y:×a}‡õ2²ë;¬ÏN=‹òþdýò~Cˆ+àüImuÿ¸µý=ž&½îK4Üwp/%ëàþ9Àýäx¿  +÷u¨ÿx˜ÿqÅü½ríÚ_iˬôY•®vóæà%Yë«S]µ€Þ|òÈK¨þ{@ÞPMò\š¼œe>Ø}ëŠ<^Æ"ÎI#œc€NžFC/Ÿ¨ÿ9›3úŸcÖP2{ÄŸáFÌ x’,|bOŽÉƒãô~’ñ;ž"/ÔÏó¯c0é”XWîw™ JÔe‚.ló¨Íå™ýû¥9²UóÁDLy>ØBBxÔtP;3´ŽÍJ£§.ty JÔå.ló¨Íµs@›@ZžzÂÜ~> €-Ž~Ôñ@Û4Ð*5@—JT]nȨºÜP¡êrƒpÔ¶’¤h'Ä'“#õEWþ ÙBš)Ò7êFtã*j%úzw„‘ îZ)µeá47{ÿ¡tߣ±…7T«¹£ÆQ·õR¬„ý^þ‘XzüØïþÎò8¯Å–üŽ)Tû&lþŠº°¿Šô•Xmµ÷®~áV|Y]&è¦~›B˜ì CvýYÆåWÖ z´É¡.†±‹˜Jö·ãGå^ß¶ÔÛn¼Êøwo뎚ˆM}ã¡£–»S’¹S¶»JB=ö~ë06;’†qE\ºƒKAÞá,|âh¦»5­Ê6¡°¾x¾—|ïÂøOÆÔ)ࡃX‘9R5ã8bqã1iKJBù®a#Œ,Œ¥Ÿ(Ù6q^°ÞV2UÉÊHÎû÷™DssZNù°ïáFñܘšóˆ– })Ui@çŠGaÒ? i8.ŽRLtõ‹]}‘lèùî¶{:?N§­ÄÀ2 ³´åÍX{h{ɉØ;mCw¹\0Q«áf¢¿íÅ3}A¹äN-ÓúòÍ!d$ÅèÏNWíE¡ Üw­¶•*ò‘Æ{ÖùÍÑ,vÎoñVØûõ»½ñåÁ–ãDdww/°#wá Û3Äš×v óyD:%&óÛº¼^8jÂYô¦Oí¦Ä GÄþyaÛª]l4ìåâƒ0©SÁUhSÆTxêBžm0}Ÿm!Ý8ñ Zth!u©GA ©+n2X«j!£F‡íã×£Zf<ê"ŒÄè³ÊúÅ|ÛmöD#…„X6íÑãØBw©æ;•95Û8¿J#S œ;É‹t Åv¿¶‰ìÚ¯k õ¯P„ˆTa¹¦BÔ(kQ¯2éRÙìûëˆT[H$Þ‹2é7¶òe= rgž^›#ѶyÉŽYȈéÅ4ŠEüUüRþÍ)'ïª0lcÁï@@Všz²{… Ž 0›w'-ä ˜Û ©[ Ü5T[êǰ.ül¸ñèƒ §·bBf½/Ç`Ìá­×ndùi´U¬˜jC¶ö‰´Õ]иʔµ²Ú ™ó"B™Žõt¶‹o[/ýâ 3™ŒoukxÆ4›¼*±}²áhÙµ\¸vFº›”þQb)ëøš¹èÂTôQ—~ñäŽÌÔ­…ò³«Âˡ¿ÝÈäžtö˜}y³y~Ë,…l¬gü—k+ÇJ,â‡Aødo|¾ó!õS³¢ù{ ¢Ù¥³¶•UÇâI&¢ÍÔ­¼³Þ]gw2/¨~¿ŽrMMóèÃJ#W <Ù‹Ix\ñ,ßû]ZCac¯¼8!‹ÂÑñº‘Ol[KŸÌ×Änß,鯂K–‚û¤Ü_K«X>™Oó™EIŠx†rq9<=9§ªêD•£¼õì¸NÚ#ÆwlÂ`¡ý.°Á°K>Gnï j—‚%W{»G9[°®é‘ßä'«6¯wy‰û< îåË×/K}†Ùs8˜9)ìòÃ`—¡w=ožXsæÞœÕ|NX=Å^­I´´“wFð|?f;éXïc°p_Ð$8޼>ȼwM Ï™ÁMHËV&1E³˜ÞDVmÞ^{¨Ñ-*G°ÞËBι߼ö£xfné^¹a/KÆÍqz‡M"¦í£(k/qÈŠƒí¸¸ÈEœxa!f#²‡ŽÇÙWªóiWX!Köt¼V ( Q^..•'oÚÄ È›3„HÐbZ ™LâDK‚ÈÄÔ4LlЭç I;MmùDn=æHÃ~]ž|OÜ&q¼¯rImÂŽ„¥¿Da5¢Ø[Âù™.ëÛ¶×Nâ„ðÈÚŠ¿/#LË4E€ü »8ì/^v}Aõö1ëûóÛ0¢ë迎›NÝñi—ªù³¤¾NÃØ:¯¶ö,4‰ýÞb“ ]œd ûá-ØaD¡OÝfÏ+Èçàó^#Çט4´‘0V­O—Úf¿’>ÉF´‘ˆÚaô>Rà¥(‘X±Íýl¡MmÇd ahß´Ò”¼õGï¦1Kz§FBj nßô“CvéÇɾC× Ñ×hô‘ 'äCê¬Á„" Ü»­£RP¹AcÑÉ×WÛ¨%ºg]x»ZSL‹š?ÉWŸjë IÕœ×ü–mcÄñ‰ÿâ´H6«×L‚c¡xYo*s«Mþhá~…OFß#+†øB=öPÄ-Z¦è¶5|¬±wϸ0ÊJ¢¦U†íË&tîBGp,( ÈÄwëëÞÃ5t…n@ò¡ihp¤i»¨Uki>cæ„ÕÚоQÏVD¨1ªV­jÊ]Uc3K¢ðÕåËÅi‘?v#T¹Ë äB‘šŠpjŠ`™$l¦DRµ2.ª‚0Ÿ•Â~^ ¯nÚd¢5äU2”»6YQ˺(õ8VÒþ¯éϽIùÈ•2*5U³B4Tï¯PZi—}lÒºN?Ronn.^Å~1®V½ÂÇV*V4›D¯vÅu±WŠrk•d%cü»» >šì—ÖÅ"HVAOÙevþY×>žšpØï¿Ã<óì(¤`H>Älc0’CŽ`6†±6Qy‚ûPK yºZ<IAR-STR912/.svn/UT •LjKʈKux êëPKxºZ<ÇŒyç‰&IAR-STR912/.svn/entriesUT ”LjK”LjKux êë­•K¯Ô8…÷%éªò£ìÞ¡Ù€4³ž ›+?Ê÷fnw:JÒÀÏÇá¶fR@©U9ÉçªsNš&÷S£‰š§eçãáÆñ¶È¼tóÇ¡›¯·)I¹NÒ ²ê½éz]þÝtX¦Ûð|Ïa©›.óáíëwíûÓ;¿ù¦ø±EwB}4þ¨lç±>4ÊÛæŸp‘ùq’aè‡Çæ)Ìí8]ǹù¦¸¸(€ÐPª½^e‚ÖÙ ì“d£cóªùcÿ>Õï¶¼“OŸšÒŸ¥y¡¨µÄ'à#ú£v|­M,1¦Ib41€ÓÁŠÎ9å£W©¼tKê„t4pDÛ±a¶ÌwGøaç+_?¤ó-Ë×)­«~éÒ6FÈÌ d½^¹B Š :¼ËÄòŒÖ ªXç~x–éÎx–¼Q|‰>ÔVj´äµrh2bZç ƒÛQ!úÿÏùEœí_¡ê¼Çm 9q²±² d‹F2'c(rm.%þEÉþ°È¢æJºR¾ Ó óüú0uO»YØ©l–¬ÁÅ ÈSP)G»¤ï*c–³,rîcÃ²Ž £ÄÄ TˆX"RQ¼Tãb‡Y¯h??l7 S4ÂAeN’¨R¢I¼¤)íA…Æ*SÉ^¢ïî’y Órï«ËªÆÛ +¤v޵®aŠöVÅ¢QL`•U¿Ë õjìKŸ¦þv¹SþÄCy5qm*R è ’ÑøLJy­Õ.Àê€Õíÿý…Ú?«H7û܉IBˆ xP6Ö'T0Þ²»0’ÒLw¡¦ëP¶Ú›jUaºúßò5¼¶†³§*ӈѹ°KXZ‡M>‡Ëx–ù>÷/PK vºZ<IAR-STR912/.svn/prop-base/UT LjKʈKux êëPK xºZ<IAR-STR912/.svn/text-base/UT ”LjKʈKux êëPKwºZ<ò‹=Û¿ °[5IAR-STR912/.svn/text-base/IAR-STR912-Lib.ewp.svn-baseUT ‘LjK”LjKux êëí\msÚ¸þ|wfÿƒ§“Ow[0´½›Þa³c’z ’íÉLFØÂ¨5’¯,²¿~%Ù¼Iî‡{i’b[>ΑtÞtìÖïËyd- MÁ¿½iÔì7Ä> {ƒòîüüã§w7¿_üüÓÏ?µbJ¾AŸñËjMQï²[/š­úö¡¼îâǹð.¿¶ê‹½Æüò#Àì†à.ñA$ú¸s¼Õî ò ‰Ù.Í+%6Ûc%cž–‹ùž7kÕ³[TëÏÈõ'ßNâͺ(a§ ‰vŠPw€">‡V£øéЀ®{Òø Øƒëxz$€ÅüÚŠ ŽSf-Ž3Û(eVO7˜øÉ6Å_¥QdM ¹~kªs7e'JÀ6*¼?B×va@ŸŠQŠ0WƒÛ(Þk—Pاî ÅæX¼¦˜¡9ì¢ÉFܾžaí]E`qP‘TÓŸáøò”©=&ÖZië±™ÅfÐÂb¦GÖŽ»`‘©¼æÖÝ_~±hÆ«¡ ås¸fÝ+Z3H§À‡o-7?÷–S´„7²^m„ZIÇ„2ymžF MžLøíVL9©p`%>ÀÓ·ò+o6ƒKkÀd³„QFÕµ8»’Ír+w6î÷»_¼ñÃ¥7<»÷nÜûK>ÎÙ­7R^µ™ò’P¤>Ë]œâî|¨½o8Êh]°Ÿ£AûéTàµ÷vÍ®}l4ßÿKu½d~_ƒI{(¡ÀœÑͱ$ çqBƒžk>®ó2Ð ëAœ£ÆÃOæÕ?Fc+ÿªÎk—+cˆ'åZziÎyåö,Џ¯,“—¯ÎÄeu™ ëåá)1ǯwJ‚S„Ç’>_Ie“C‘%£ //'î ú%KJ9Sºep¾wE>Aä°YÍ:B!†Á »3`pœ\wÿ›" ùœ`„=Åf-`o•Fe¹%ÓFC(Z‡B® M"q×.æ6æùÅr¡<ۯⴂœEïå®ÊÙ•×í<´oœ^ç¬F´¬¯â±>ïh’%?C”ůªä¶ÑÃ~”–©rUnò‰'cä>7™ÜsÝœ!‘Šm–Ì‹Á°ÿG–ˆE+ ìh¬®5YÀ;hØÚ¬`VrxIJZƒ¦ àˆ/ÒpÁ¥ê^¯'“j„~/geU¶ÖcÂá1Ä}՘Ʉ«IKÊ1FÜa0<¸eXͮކÕÂÝ-MünëžÿñœèsYü?Wy,WéÉTV^QäT;YThÀ ·+8A -3XñÐ>%"¤9fT£"d¹+s&G‚ü9}Y Ñ/Kõêr¯6*À(±ÿªÏ‹'wÈ+/Ÿˆ aˆî1Ýðcƒ´czWÄ)Jµiê¿ o:ð’ ¥éUåìVæþh®'ùP›è,ã 𾳄¾ÁŠ=9IƒBé*³»iÂ.Ä!›Ž[7@Åçª c0ÅÀ/]|çªËûëN ª(Aþ¨šÕ‚"clü¬²^;3©Qˆ ’‘N59O§ò¤§S]Bœ[Å9brOÐô†Ì6”¨¯+1åm9Ç 1¡p““3ÈÖ¤D3hÏú9· ¤Çq•cÌý »;ƒ ¹´2 cé‡~û·?øÏ‘ „ýЇšªÎ@ôûn®·äãequÓìy?ÌoDlX.UÕê(¢h à@¸€Y¶É¸Ep5ùæ’øIGrâu˽ûÇòr/xÔ.™H+ñUÎGcë`«‰?"._~}õM…¶çö{µ…]1è­×½tܱ׿9‚Ü8]x1åJEÁö†Z#È`„&µ `ÖYçk';ÿÏhÕ×7l! ËNòëëïj"öºÞÍýª³òä­Ç§Û÷.šxýlKØÜÚþÊUÈw¹=ð™ë“ÈdÝ´dJ>=(´ã‘] -`§èbϾ˟xÇ^#©ò¥@^—dÓ˜ÊöÂxô4ŸÈœ&†à1{ôШ}Û…Ê« †¢º"4'BaÉ‰h6/+A2%U TÄåsOË‚ê’Ðl1ô ÅÈ!¡¿ä“’æñzÜW¬‚¯£µ º€î †æ–?=;h™xéH–gãqÕjâGÜé½4aˇ«®3ú\CþTcgŽXjHìK¬U½¾(Ã4¬¬Ææ$œ¯JpÄŽe%@¥e«:pòç’¬D–Þ”×8'nxZ­¶´JÊÂs¹÷8¯áÚ+ ꤌpWºÏ× $®ƒˆ#æÊ ( )˜w0£O]0)«ÝÓ2]žá™®E>ŒZŒ÷ð€}ˆ³ø9ª%†ºù:è\™òMÒ ªÊî%áVÎà ê¶ŸX™ßµ¼R}z?ƒeÒ/ÆÑÃM—ín+ƒ¸Ô¡¿~à+PxŽgZBƒlq€‰JJæìe£a75Àˆ*Ӄ맢Êbê·ëÓ‚ÚÊ:‘Çrw JKWºº¾â`†µ»s^…«ðÒWshÝ{9‡értê‹w€©3Óû&ž3t?{wû/XÑ?¸žŒ&ÅóʲA_/‡1¿[¸F:2ëÝß‹^’˜ÏÖæýnÂú~ýbȽ bÛÅМjkØf)ØÈjÕŸ¿i´R’Æ«ö4yþ ù Ó½Žn%K²;îEŽ~mWf/<}9¡ÙÄ=´|€õ æ@!8GzMu cDôPBMMS@ìwj!4×Ô!Ê4JüT¡$ÖCˆ¡¹B)‘ôPZ MÒ~ BM„PɰµêUzH«ŠØ1_¤V³[²EÅýßZòz&¶H- _Bj‡m€}’²W»C½M¦ìVÉÌknŒ`pø>Q±zã¶ø÷7PKvºZ< eÿèM3IAR-STR912/.svn/text-base/CppUTest-IAR.eww.svn-baseUT LjK”LjKux êë­RÁŠÂ0¼ þC)^k¶Â‚B¬ìÚ‹à^ªâE4>ë[mÒtÝÏ·†¶´Rz’œfÞcfÞºøOoÎè ¥˜»þøÃu@pyB‘Ì]̤7~Î<ß]ÃÁp@ïR_3Å8Ðq¨Òò¸±à ™¹£ý殢Ña©Ôn ™ñ6ÛhæO¼†b wE‰Ý³¤©Ð/·úŠ*¥5ÆýB13üòãíTiY&„3 4Å©%] K!¨¢Rba=L!A׸±¦m_®r)ΘäšYÃâ<¡¤MÖFäũǹ«Ö7ûSÒUWÉVµRÒü Ï÷PKvºZ<õ¤%Yq)IAR-STR912/.svn/text-base/init.c.svn-baseUT LjK”LjKux êëÕYës›Úÿž™ü[w&‘œXßø&µ›N1 ‰[ T@ñdn< FG8øqïøïî9€ÐÃj\»wZ>¡}ïo÷ìYìvûÜÏØ’¸…ÏëWíÃ4Ô&¨Öø«mô.w:?ƒãŽÂ MXÄž&qd°Kõõ«Cè…Ó_0¨žSXøaÜ ˆ­ä|ž¤PNa¤j ,—Qøã½È¿v¸Ïó¬LLÖb¨ô‹nèåQÔ„?}¦O"Ý•pP´.•ªAÉ- ÊpÄJBWÜ8ç êÙu“Œè)ä¦Ó$Zl™1ß½“æj9’M=˜'åµY99 *|g÷Ë”exáâ™9=(«5”ª)xö Sr¥4½{ã<›ñꃽjJ„2–k¡ ȸülhB£8$o¶I”vxò€ö À“V÷銮| ~Ý??R»›ðm(cìØ³Â/´RuEªïº8y´˜§ü/D75ú»nÏêÅ{ýê_PK vºZ<·µÄ±0IAR-STR912/.svn/text-base/deletelib.bat.svn-baseUT LjK”LjKux êëdel %1 PKvºZ<˜üt¶™ #f;IAR-STR912/.svn/text-base/CppUTest-STR912-Main.ewp.svn-baseUT LjK”LjKux êëí]moÛ8þ| ìÚ~ÛÖ/i{—Þ.dÅiÕÚ±a9ÙÀ %ÚæV&u•:ûë¤$¿Å’“ˆ£~¸sW/Ô<œÑp†3©?֫кÃ<&Œþþ¢Ýh½°0õY@èâ÷$foÎÏßxÓ~ñÇÇ_ùõ—NÄÙ_ØrDz:sâ›ôÒgæî®>ï3:'‹„#‘’)Záx–,:M½Œ…þ‘¼aÞÔö6[vEíc»ÓL7²£1BrÐû„)æ(Ü£)Ï!î/Éݦÿo;̓#›–h³'÷3á}lÿ«Ó¼;h,Oÿ@T\1Úg> U÷öwÚeBŸa‘ا™³Ò[ãËVR晘oe³N3=°Cµù€l1Ðpö×c€d³Š@}‹Ç ©v¡n'òVCÊïâ‡c7tÓ“ö»Š=øÔ£ì€¸˜ßVE—F‰°îN3Û.eÖL7ûœè6Å_&ahÍ_!=~Uu7”@ TY?~†>¥Ø]B¿‡SµËÑõOï'‡q<äÎ’DÅ,¶«JrœPAV¸Of¥#|>ÃÆ»â…èî¨!©§?ãÉÅcTû:Æ–Xb‹*í­½)‚ÅæúœÓt~ûÍâ)VHf\êmúbV¨¼&¶˜Ï‘_[Nv쵤h©Èf„1nÅI1.ô¹U 2»8–—[—4æ¢ûˆÎ_ëMÙl‰×ÖÇÌWÒW†©ÛUO,uqG=ÇIˆãç|E«Õj«OKýê/ù·ùÊÎèõÛj¥»›+¶Í²ÆÛC­ÖÎų#µF™·ÞUùV.[É´2}òÆÙW«´íÞ¿­ÖÎösî€ d·²l¿Eç®ãüÖƒàüìéÁùÙÑð28wœ <'ÇÅúUQ½gÄqÄ™)§=pZ¼qØj…©(aÈT_ Fåh±iÅ+F‰*µ Ç1Z”é› ;Žëœ„ñXÂ!}¢ã¤3Ã1^!þTp-<py“ŠqF¨õ¾õz„ÿYÙÇ¥ˆ)c€Hü‰8•–¥Ç9+qÕ•1TŠ“Kƒ½†KH׆rÚ¬s—ÏNÄ¥Ÿê2UŽÌ¥sǯû˜üfeVúrP•)GuFÖ‚£¡>;Kì— ©Ê‰Ò],@}ï#ºP©•V °FÖ# ŠƒQˆu–ð>9Îÿ'!KLÜG°Îpg”¼4Íí?”¡µ9––IÎò"éÞy–^,7•µý2JjÀi _>kyuéö{Óî•=è½j0#ã«8Eœk`¢4KóƒŸ1 ÊBÙª”¾Ñ¥~˜”™òªÜdЧÃå¡tœ@.Œ9NÆÊÊž•èÅh<ü’ædI.Cà#Õè¶ÑP¿…tŸjhE yvP9L.º§$´ §{rL•&¯«®»:%÷ƒñï%ªQÙúmLŸš#Éém$tºÒùJ OÎ]^]d¬gpËjáz˜!~wÍÕÿxFõ¡,þŸé<•é´Aòœµ× Ù5ÎvH8(–~…ÆD;"Jj$ª" Ï™Š‚ŽF&õ˜H[iæ Îåh?—0*ÒòD± €±œÈãv %þ¿*ÆÃrË=ò•‡O(ÆxAb9cº’û€A· ½¦beç õ_‘‡ŽÕ4HiF¶rB,þÞhi'孆譣–¾·Æ>`½ ïí8Æ T† v-n„¸éB,ãÖ-P1ÆyU šyòKßyÕáýmŒç€&J‘?if è›>¨Å7ÎL QCþÒ®'Mjמ'µëË¡K¯¸"B/#B¯áìB©ê¼’;Vy%Ïv”q¼Íɲµ)± Ƴ~öuŒùiÜÊ1æáß `Bn­ ,ý0ì~q†£ŸÈ@´žñT݈áÐÉì–~`¢,®>ƒ}!ëüÚÅ–åRSíDÑõÇâMZõûf€mÄ\MJ«Â«Z0D57Lëº!Åîì/‡E÷&²Ï/ε7žJØ=á©A¼*ß$‡¿ã;;;MüUJùÊóùV5º®3Œªøæ“A¯Ýþ…íLÜáÕ äöã…qiHHÑl6wO³XlÎo¶« Ïí»W_Í[ËÚóµ®T¤ï}2s‡éÂ1ܨý&Ãw½"ðYZвÐZ3¥1Tñİg›_–T^šTø›ò­S±rªG¡}Å8òîW3ÂMÀ4ÐýHŸR,—¬Q¨”±ºÀðBÕPׄf‡dQ²lbFa²$5Uµ@ PT®{FTŸ-`k¨s—APHþÖXÂã ä\°¾N˜ºÁû.~:h0¢xéDzg[œ¤Úc~«½×zzÙ·½ÏÓܧ5ˆ?7ØŸ.ÛRM¥þ+¯ôWU›ÀöjÂ1v,ùªG­VÖTZåj'{l!N+jÙñyƒ:qãÇ•vA«¥Š<³‘×]iP;L1µL~í ê< %bYâsk97ïݹuíq>ý—W7‘Ø#s#έzTðû>š•÷Ñ©x§ê›aP‹ñ¦S‚ø4J/˜ÊcÜH¬uõmÔ9:''%f¶*»LºBÀ›¨¨cÞ½eó³õeÕ—¤0^*ýb3ÜôhÙòwe‡ûùû'¾UEvàDgaø˜±°ì½Cëv»ufF•¡?5•s¿KÄ÷ÔÖ‰,æ»AaR:Ò«Û+ lý»½ó:æO}ó‡Ѓw@׫s_½V¬ÈœA¯ŸÈ‰óÙ½9|‹úÑñšBÏz¨΀³ë ~9qƒtBë_¾|yç“p ÷À´¥k`¹¥`©ªÓ|øZÒ΂³$ÊÛkPr¤šB¿ðô §EsÝæ™’Û¥R›/ý Æ~ZúîTS(jœPйy˜KD„có„¿(ÍR[©šà“Fß/°a Î#Ë.Ô1 “¡æF!êép/Â>™é<¨N¹è®Gä¼ {‚ƒHL}}–²Â1@×wˆO}òPB}A)6Aú‘~E=NB ©¨?©Š—d-@lݵPt²ú£Eï4·¾îˆÛ‹¾rçQ‰¹ÂãùQT‘á"Œg$÷v†ÉqE`û^Â0Ì• (bý}è¾ íyô÷M8q‘ì˜oÊã B[›nÔS£j†h>÷‰oeh”RΕ!œ²­*%šì^}â…?ÝëËŽá‰=ØZ`£™ù5JS«ÜÇ#šŽC£$=, ¨îØQ£„1—J WIyã”S jœlnä+ g”¬6B§(îÙ“]œCÊ+ôÀmlȨšÚü?yQ?ÿPKvºZ<âU|×+IAR-STR912/.svn/text-base/main.cpp.svn-baseUT LjK”LjKux êëmQÁjÃ0 ½ò»8¥ëØŽ ;Œ°Ã £ct§u “8‹!Q‚cg…’Ÿì.Ť½È¼'=éñ|£0¯m!e]÷±“½¹ËÚ¦XlJ‡ß-¢Ô«ŠÅQ)40 ¾ …<‰£c¸†ÈáRóJhX€>¿ˆ;2Có+yl ìvðõÇÕ­55lô"-ÕWï¯×ô>Õµcz.ò%íNH5:Wò`$ YÆ7Vhó‚Êð$ ©ç¼jÿ©¡U…çÞ¬áÎñ"àI7²èÃYÂß;²¸-KNû®upÖ(kÑWç=ã”afwá4¸<õE¶×{¤Î?Ѓ¯Žf'ío¥j ü>qÀ/‡Ù¥'rÌŒŒÞíPKwºZ<–ß‚SY¯E;IAR-STR912/.svn/text-base/CppUTest-STR912-Main.ewd.svn-baseUT ‘LjK”LjKux êëí\ío›8ÿ>iÿCÕ݇;iMÒöz뤬»’ŽŽ”n“"M8Ä+ØÈ˜¶¹¿þÌK^×°\ˆÍV5•ǿ籟wC›ïÿàÒüîð¸Ö8<€Ø!.ÂÞ»C‘£óó³·GLJï/^¾xù¢Rò :Œ7šcäÛì§'Íúr3½ïuÇçÍúÝZg~û`vM°Nà'®´—ú=ÊBz‡„luÌ9#c¶ÆIÆ9 &ƒe'KƒÕ¿­`üvÀú”80Їa(7€r. æ©Q¢ƒ¯:¹ÛÑQVmR‰µ•¾V` µÑhTs‡'XnID•¤¬ëÄ*iiÎr”ä–}Ó¸ÊK' §_šO¼òÁØžLùnvèRm[ó¦c> [´¿é,B‘¬Â "ÙW”+xm ÁmHf&pQÁª•.<¤p*„\\á¶ ±Èÿ¸e-g7]×Z¦iˆ‰‚å& r±]¯Z u\ÄÚÒµ„ãoòìƒÕêå®7¿¸c^›öž±JWÖ+á[+„° NyzRÞÖ&0ÜeŽT×LÐ?|2!ú`*´ú+!žJÒ0bøâÅD%W>ÇëÅ>C6 ¸·§(–°’l6s]j™½¬ð&6äÐåq—­œ©C챉p Ä+ˆ$©~Ž™J~Ê^QÅ´<ƒ«½¹ü+ÉÅ+¦ª)€9“Ôˆ‰äv4À.˲>i2`TîÝeàô)C~”¥™ÿÈ€éjBaRe–™ÕfaÜ´6ÁÜ^»³Á Ò1p ày52¸l‹Tð~_ÎZj 7mAog˜Ïö<ÉJàòvÉXz·Hïi][՞ʦŒ8ZИ¹è!ôY£¼þçHR’­K`ºµ›€öZŠÙÒ. 1¥óSÙ"úG7]åD„ þØ>íW!**?¨„/•”ìrkœ¿y^ýÆV{ZyÀ¼ª"òéÇ ._ÜüsOTT[èM,ΣÞP¼Ÿ<ÀqÝ–ë<öÖxh4Îɧ´³ì‡äº]}ðyo+HÙ™Î|ee;AVû›O%îOj™•Q‹ž›~õêÕ£¬Žþ….o—ÞDS5Yû£s¤dTþvÇï¶Ÿ –eaž –;Ã.Xr˜A;vOHÕ»é–-l;ý~Æm·¹´?h¦Úo™ö—§1ŸŠ=AÔíʦոê¾$ý`%6I“ãÙ  }?ö^ç0½°ÙìËÃ%/Yu}à%K6?_P½†¿;=6ÂÓŸ†&Œ +ûÎ ªÃê îÜÂùWOOŸÜsAÎüÄ´ «J‚ì ÏjÝϳãO#E±bXGš6;}l)V8ORçSn鸕#xN”B’7“¸¹\il;QÇ"¨2(Cé—œåÚ@EŸ~Ÿ›ÜÅY¥³b1àÜfßÕÒ1 ’íÜÙq´äñÍšSkÖ×ÿc ÿÙü®$ÿPKvºZ6}ÔxóLwÈ>M=æûàzÀ'STB{&j3ßîXölÈK³7›Ox€bk(‹šBkUÁ¡ž5Ưæ€Û<¸QvGN®ùíén«²˜ˆ•ÄNìú·8¢¢\©K…ž°\Ü8Ūqz¥å3}A"þ‚/=‡%ì>6³ œààæZøay®2‡f5ZPèAœ[!’kšÂ10x«áDVŠ“u~otµúÛ|*Ïñúââu­ ÃxÕ%ýÓ@z{¥ìî, ¡Úx¤E ¬’°+Ýœ’¸:;Ћ[½øP¯íq³n8Vƒþ“,Ÿ/?œê¯þ¾¦·6æ[´ÒrÚIê3uê ÇŒ&ú^™~!þ½èÈÆ;²y½2à$½ÆûžÞ^WÅcz­‘ÐèÌëÅbS(Ån*§±_„m>ëÞ~Ð?…ÝðÑ‚ës]λð ä(þ.oûØšÀ§àž*¼ƒêEýãWu&èŒåD’óþqîéøi¬M–í}šJ¾nt»¬‹­-·Ý;i¸)EbKå"Ô·Ý#ÚŠæò!ñÖÊPKwºZ<×ß:uÇa-IAR-STR912/.svn/text-base/91x_conf.h.svn-baseUT ‘LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß O.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKvºZ<÷!–+t/ (IAR-STR912/.svn/text-base/led.c.svn-baseUT LjK”LjKux êëÕVÛnÚ@}·ä˜6ReÈh¤V ÉÁ&E%`QÕ'Ë1kØÄ¬Ñî:JTåß;ãµ¹µIµ‹{.g×3gfl[¶µÇE”do?5îƒé‚§G³·(ž°˜ CÏ zž;‚ ¿;8^É¿~•æƒmÑç.åè±I0Τ‡ ›Tlë»mA¾È:ø*¹fç\;+˜hÀé)8h~بjƒ¡7òÆ•&ØÖã6z¿~|3 ¿ÎÃ`[µ*ø’ß…š~X0||8|þªÖ6‹`¾ðgÄyÉôE€?#Þ…’‡× SÏG%Ä"5]Áõãèb—‚‘–Y¤3Éš;Ç™ˆ4O,dªSŠþŸÁìlˆƒLn§"æÓL†ë¸Ò$¥Q;—%დ¿ÑN3¡Ébç±^Zõï.ÛªB§ŒX?œ3€¤¤p™Š$_ä: Å%*(®SÎÉ +™†å:~*)™^׬C†ÛŠ¿»jEÙs¤ –¾rÊbßã1Õ¢ë_]˜âŸ°ëlꘄî11᱑Óï¨}\¶{_Fi&#fhà”Â`0jc#ÀU«^)x ¡=Ë 4Ì Q’F· roÃ)röÑÙåw\¥r ’¤Šˆ‰´i /Ágü“a×™"´Û‰ñƒ3h@ú¢yIQ–ﯔfs³½c¸Mä%E©¢`C÷lŽ®Õ¬Ë¨Hך©‰ñvùs.™aá™±ñ¹0,zÒ ­Ö‚V’`øjõûøø)/ê%¥]~¦f~–$ðäf­D3)°šÏò[s<66½`c‚¼ÛF3‘_M§8 Õ,ç)Í&É,Ô%ccÌv.æxàzÿN ¼Þ߯M1Ç0•4ã`ÐéЀ+3¿>ÞÖOV¿¯×s/½»B1©‘¾ØË–Φ³Õï?vp™“olÖÿ½½È÷·x,âô*}o«Fv6Áe­©íb;úºâ/fZA8LŽ'htçOù+¬ÚWË?7©MO\t°ÒìÀë·Î{ÞÁ_%q9qv&ËðLAXPMó9Û$3·O@-XÄcÎÊV^z!ÍÅTÏŽþD>ùîQd’$7y×0E‹­Ä¡{cÕDÝ›¼¥ÜRÂw' œvÚÿÛ°{ñy ïëõ0_r|cd ¶l™ aýÓòú.vèt{^qNÛúPK xºZ< õ¤//IAR-STR912/.svn/dir-prop-baseUT ”LjK”LjKux êëK 10 svn:ignore V 21 Debug settings *.dep END PKxºZá…˜‡@X$(dâ;æ3¾/‘*ލpÏT`=½¸_`ñˆ(stID?‹™°¸ŸxJ¢báSчµT ’ÜQP,¢ ²ß|h “P}²{šy"¦!õ”ˆ9ó$È€„!ðXÁœB@CBFæ!í- Ÿ TÂX‡'ëˆK^Ì%ý'ÁÊ Á'YÒC6Ú …6kà…‡²“¶„…ˆ£¾qè ïý lÚ©‡„ûÓCIH ñ)Ì^t ‰ƒ‡Û¬C ¹"ŒS ›„?œã˜”mgŸäy'ß~GO//./Þ›M‘ë <>Ú¯AÈæøŠßãŒ)ôù¤Õÿ¨ïìô>­&ÛwîlV›~º·îI0'«ùåÀ¹4Ý®Ój}ðÐEn60½úª†Sv½Ø×{ã¨sH?"C2ß§.‰:‡\ŒÅÜ c.1ï˜7$ŸMæ’¨sÈ{– ÉMç’¨sHü7 ÉÖì]u¹\±xˆ>U¦tY«t`¡FJ­ÛA©¨sHé”ÚdƒRQç jˆviݺ¬Uºaåj$lS ÂÊ•Cz„É,-\uIü‘&¥ù I¨s÷ƒ¿ÙùÓ`?øK‡d³‘˜f6ˆ‰º߃/åÑHœ}ö1åtäÕéBÛWpÊÌ2˜ý\•uk/ _*ÝÀ/¯¶Æ—ŽøjÚ´hÞõè•y‡÷“ª6ÏöRôœÖ&]ï~*[7Ç}Š·»·¨zuLnÓ™½½¢•nޝ¶<î>x.M¹^wOÏÿ¶óg›õÛqt¤¦#ÇÚÜ”)÷í9½`!=žˆÿPKvºZ<]Bž"å6IAR-STR912/include/91x_i2c.hUT LjKLjKux êëµXMs›H½»Êÿ¡+¹Ä)¯,)ÞÄëœF0HSáà È)Ÿ(ŒF6T€l§6ûß·{@Bȶì,'iúÍ{Ý==='[ø æ\\¹b8ò¡ßí~Ï·â(KåLFE–&q”CÛÔÃ`Ä3 vx'aõœÃ_½Ç îG[B°Eq›fPÎÁÒt`óù,ŽÂ"NðexG`=,$rfy"ÏrBàîŸ'½³åÙ9\Ê,§½NWMy”ÅsE²b÷oã¦äY”&E'9„³·¦‹$"pó,-Òâç\"ýC#ñµ>¢¯AžN‹‡0“0‹¯³0ûÙAôo~HçEšý<§ßw¿OqÙˆ»¿´nç¤WÙvåëðØq¸p¹Çm<Çð¿3—Ã÷‘ÐF <0†c¡3[ãàØæ0ayÀ|œã\ ]ØCÐÆžïXÜõˆî»ðGXÊ lœn1_86¸|È\5Š‚Â¥éúXó=ãêÜURh³ÀwÀc—|añŽ*ADolúÇTÜBsnrÍw[hx#fš`;> 8Œ¸©ƒ)ØÀ䊒ÙW  ÑÇÄ%ìòŠ¢›¶Çÿcä‚™ 3‹ ¹WF€j„B_ˆ@3˰]áQ†ëXä+"‰O¹s ðÆ˜´U™­Ÿ”!ÁØã`1Ãàj-šAÆ2Y¥oë|-6×1 —c’„³Ñ)2+'73ùû+úäðàðà„6é4N$)n:y/“2-°.ï%ÄI4[¨ ýãçûxšLä‚€ nÎ`„ƒ“RdcP© R˜à6‰ÀKÔK>xGBwá¼sû®Râó4+°i•må­Jä;v‘ÄäE¶ˆŠög¬HŠ’Qþ9<À޵øÔ§¹f~óæRN¾–£½ÏjÔyHØd’É<¯ÆÏT †2‘Y8Ó°YnXôþ¥Ÿäš¸¦_›ac·Í‹0)^ºJpµ’M—ž„׳ê é>öºO@õ8_a»ÜP~bIú0““yGE¸%†€†H÷´²In –u†keÌ›|›Ø0Ù0ð+Ön·×†°Ï\!úm¦×Mßbàk•³VÄØ»Z"¶’¨¾ËVýVÓõ^·Bœ¶"øåÚ³VÄPcËXzÝVÄ€»n…è·#˜k:Ë•jG`³¼0JÄÙc]RínëLWˆþÓ¾U§ ±*Ní®¥"ø%ö|\n<§(™x\xvnmÄIèÃf5ï×fA=Á=¸òy€ç—Šyn*¥g¹±VlϾOôûq×ÿSɵkYÌó¹XŽÎOÚ°gj[ÕþãF|©T™³×K••ó¤ÚÖ ½^m÷‚Õµê+ö6­½×¯ªtÕ:ö•nôž§ “ö| sµ€Oˆ•ýa›íS¯ý]`ÿ-ÔLS}÷O…M%0˜0Çx\ ?£ü,3]tÛCz9síÆ×ÔAx€}Ûq7W Ñ֛Ǫ;˜ºš¦ãù+¿6:}cR™¥!·¹ËÌ@[‡öaçzЙsTµg+Ì ™¸2’xÍÀJñR·Õ¨UÝ®·Œ»Nlmàj/×Õ!W;\y“zétšË–»ˆæîñÜÞòÈÛ²ô+Kóà×´åAª5,St-÷)´ôKKSG_úÖkêðR-ZórxFYú¦;xu'^1®ßå_I¨²~ŸÆ“2*Iw[U;ÕW­ÕãÑרr¼²Õ‡Õ€§îååЊé¥Ó´»I›²Qe!œy}=±åƒú±1·¼-Y«ÿû±`Ï|5Ií®¥É4¾©3ÁÇ=˜„ÿFO&“/×qQ½ µ…„o@•UýÖc|s%^âÁÿ4Õád¹ŸwP”°B3é5ÜYäU^‹õH+EõâF=l³&f2Ìhîs³Ž¡Óél¯‡E¸Ãåk²mD©Údû …«Ô0;«ºø¶#y–¥Y-|íVF?và—´Ê~¤^9ߣçñ°Ô^öaùµaûÙç'^Øè»Š!L^}ÁøPKvºZ<3_ç¿cU"IAR-STR912/include/91x_fmi.hUT LjKLjKux ê뵚]s£8†¯wªæ?œš¹I²ÙÄà¯lïìmã˜<@âê­­¢ˆ-'TÛàœtϯß#ñ)ÜôÇÒs‘ ½^ I™Û+Á“K˜X«¶q?wAíõFà¸Ë`GdO6i…Á&‘ô矮`ì ˜þ@ù¼ƒ*Ÿ¼Ý!¸y¡5´SúÅPÞÁr2íxÜ? ¢\âh婟dÆI F’œÈ–Vî o•»[æì<’8¡ å¦Ç$ÙÄÁ‘AJºû$°£Î6Q˜úA˜€¿ßCúB`w 7´rÇ8J£ôó‘`Uô‡…”'|fK’h—¾ù1}ðûñç¬ýƒÚþ’?>£oþ‰þ»¥Ót„Ò§y%a 1Ùœ03_ áfb9údÔ_ƒ]¸%;ð<ºØàõ0q~ÝfÍp/Yûÿþakÿ–-ë“~pÁ‰ÉÁ?qÉòSð·Û˜$ ô>õ®aK6Ñá@;ÍV h¿Þ‚ðW’-›9ñ{Dæm›ZóÞ£UO)ÇÄ qßâò×%ìçŸbL2"üBÃ-Þ¼ü’·¥:FqбÉÜïm«NÄ%>Iý0ývj­+¶ÎÓñLª$£9ÖŒ^ÕìËà½×Ìß½ûP\\\]¼žúêÕeïÓpÐÃGé]Âo¿z‰¥y =Ö„ˆ¤HH½‰˜¤fÉ>!´„Ù­·òuŽeí|½cYß+Çá6ØÕbŸà~#Š‰éž“YÆ9•?ð÷fw”›ÍX×=G©PJG”"A©JíˆR%¨þߦßÓ—`•£AGÔ@‚V¨aGÔP‚U¨QGÔH‚W¨qGÔX’UÊÙ¬R8˜r>«”zV±\è€g•RÏ*6ˆPâ¬Rœ~ 5ê†ê·(Îöþ³dZÎڽ笜|«L›QóQìd¸îµ Ûwƒ“úé)aD‘]†[9uÜ Â!ç9öàœ’#. Îà Â)=ŽÃ §×qj §Ç>®ÀbØ9\­³ƒ6NØÕ3Õ'N‰»«áfX"5ÇwLü-¼ùA øeM‰däm]›zkÍp=ÇÕ\Ý«'Þ¦…µ0‰÷&¬Hµ‚¹oQÛY'X15ØKLZÞ> oq€~¿‡µm`µæŠeF}6Ë›ü‰£z Æ[¨zL釪×zH9ÛÇèİÞBº7Úϧ8;d ݯÖSO7Ùi§š"eC”·b¼)åé¡ÿ´'˜SÎÔp*— Î4Hˆó»bxö©ÿLpËœf+‡Ðóâ±å¹ÑÖY9kZ°Î¸§Ä¦û»/…ýØÅäÏ 7Ÿ!öÃg"Y6mýoa­Ë (ìÂÎÕ·(þHO V<ù)pnÜÏëÀA8ž_8âs…¤@èü P{Šðè6ÁrþW¾#§mXîŠâ·ÅˆÍ™L$ÖöÖxx÷ŠeŠzÎ3¼ ?µ¥P©„ƒ†Pøa-…j%¼k…ŸÑRد„“†P¸+…ƒR¨4û(Ü|•Âa%löQ¸Õ*…£JØì£pcU Ç•°ÙÇqçTárâÅßïZy!ÉœÞ\[ÌÎd%²'œ”D§C •oPr›5”„Äy'çIéèI)I#™'isžÄùÌyR;zRK’&ó$"œ'ñTá<õ;zê—$]æI:û8OâYÈytô4(IÒ|’NlΓx‚sž†= K’4Ÿ¤kçI¼vpžF=J’4Ÿ¤ËçI¼,qžÆ=K’4ŸÆüW½¸›XúÉÇæâU\OxKÍùŠk…ÜmqóA¯/(æ ·œRm)©R唃–R•*ûœò®¥ìK•ƒº²~žÊ•©rXWªmåPªÕ•ƒ¶r$UŽëÊ»¶r\)Z…Ñ|÷]Ó*ÒU¸UJÙˆ*܈JÙˆ*ÜˆÞ ”ýzOé(8蔉ãÖN›"éßO<ëÁõtÛ¶ìbÆÔÁ< ØìñÓj£h@+Ž Í`É2Úžpƒ}ŒƒWzÒyõã€î¸¿å²·yq|ð7x ûÖKãq•›«þ¶ø½ÄÒãw#óH¾FÁ6K?üÈ.ˆ'ìhxqºË^GQJ‹œà/r ùK3 ù÷ÿ=³ó;õUޤe½ë² FËË.ÿU3VøÁ;ÂãÉ|'\zaA*ÈšÉëïóêxú¼¸+Šñx§›Uíž{lz6ã°û–ìŠ]d³—Ùïíz´U-úW‡ùœã§dŸ’‹¢Z“ÜÈÔOý¶¿E•ô®ø‚Í×-9¾-E,n‚6›uri_«H¯‡Š›",¼'iõ¦PÐ7×Њ@a 5Ü>úû¹ ýlÔâG”¯V†%¿ËðgÂn“ät _¬6Ù?¦øÒV÷–“ö™×0Ëg§¿gæ³4'oìqÔ"¤׫ÊY¬²xÓÍ¢xá'©u$ÙNÛ~ñGº¨Öþ Z®§íçkþÿÝœÒ?:ÏŒ…^þy÷PKvºZ<â· Šc¤IAR-STR912/include/91x_ssp.hUT LjKLjKux ê뵘Ks›HÇÏv•¿CWö’¤²RäGìâ!M-Œ’ò‰ÂÒȦ‚@ÁÝÚï¾Ý !$K›Ír’g~óïÇôô€;x¯}͙ܹl8âÐS”Kðø8œ¥‰ˆÄL¦IÎ2hZzvúÌ0`KÕs_º/~–­Î‰Psù˜¤Pn`¬é ®VQ8 d˜ÄÀE°$X¤@Í4“À²,s‚•‹N÷ºSxv_EšÑŠî¹R,Ù, W…H¥Îà äÙ,‰eÆQòQÀ"gg°J™Èו@ýÃIÒk|¤MkÒ&#uwÛsà…ŠÝQ/ ž„“ËU.7š×¥@”̾»ÔÒo÷G')6î )MýMÃ&Ç`°Xn÷ó‰m<“A,>§µ|IuV¼â’+2¹© ½ÄùœUò¢(]¥ã•’&QP ¦©™o tÃ>‡¸¡…jOYÇLŽƒLŠ´SäµÍCÚA¿×ÖÌAQj¬]Wú5#Å6À½MCùz Oåà[É3¬ÕfÃü(|x\k÷•CíÇ  Â#Õïó±V¾:PF WŠr]—¦„¢÷…7Åéw/ï7›mÈE…mH¿Bô6äs…hmH¯BmH·BÔ6D©/-È—û“ rÝ‚\o‘«ä꾪•Ëär«rÑ‚\Ü×+®éoU>×v·,פì%xêáÃÁ>×ÚoÄÁ}´)$óªÔì$7ªµW‰ýݬ®´e€ýÿW¼"TŠÛO›Ÿ„ò…í) çe‚îä÷ôs}1Ùyùp[ƒš‘OÕ\}¸ðŠ•r¨R:v™¶œ7Y6×y"OÒ»‡-ž‹»ns­è.M›÷ÆÃýnñ¥zq·r*™…Hå‘¢žˆçÔ.ÛdiŽlL¬ ®yÉŽ²•$«A0ûÞž·¤^DäY!6r;òV èÐín_$‚”Ö³Šñ]››¿ßÞ¿C{ŒO0¯aü0h.Ûݵx¬‰^ž³Ú‡l¾lŸóïÃÖéÎd–Q}-ýPKvºZ®a¦é ®×aà{YGàrï™”u/ãÈ™¤išó)÷/{Ê·žðìîy’B9ë Oý$X É–ä™G™D)xaÙŠÃ2|RNaÄYœ½­9ª¢($¾Î¡ê¤ñ2{õað#ñ’·3ÔþÃìO‚4‹“·kzÆu´î«Æº•좥”íŠ×ÿà±;apk3‡™.8ÖÈ}PmC›€áÀȲa|g誩1°Ìé#¨ÆÌÕEŒuoè†9íÎq­³x0Ü qj–&ÂgªkX&Øl¬Úb 6Áõ;ÍuP ,[g¶0…²¸8ê=ט±3P‘…HàÜMÝSJnC³-6ešk[¦¡9àLÔéLË…ï &lªÃÔP¿O™ TÍGÐ µOÑVñDŒ(Ò,ÓaÿÜáÊ u º:SǬXY»EEò…´i±lÛph #Ûš‰À!ƒ‹pÁ7çƒ&c¨šz¯XÜ9 fªÎàûc-Zˆ(8¶ƒU„ÐtUÃd:.Èf$üÇ9¢p '›‘üóÝ;>¢¿•é2ˆ8d1–áQ ÷sÌÌA䇹ÈÑ¿P°~–Ñ‚/a>§fƒ:ÇÄù¼(Ì4&…}ƒl,°Ô1±Tö FøD¦ž½õÙêSi‹ý\ÇI†­«h.·…œÔŒ(È Í’ÜÏrìCåZI… Q0 áñѯã#€\lþ ç“ài5wW OWq¸¸ÙOã×RmåEçýù,^ðN‘²[4Ø-:ß-ºØ-ºÜ-î]µEŽ8Û* !•'ƒ:BBÍ÷¢Þ8z)ºj%û—¦i\Ü Ìõ›Ú¶½z™¿ZÄOx”N›Æ£ü¹Ü2‘±¸Ur/N«YÜ!9Yš“¿ÉæÍvîáÁ—f^”ý~þ5rÏ/Ux^•4SD•ýŸýâYŠ ¿¦T0¥SöÀlЂ öÀÎ+Øy v¾vQÁ.Z°‹=°Ë vÙ‚]î +ذî]U°«ì »ùS+ì`ÂÛRåqžŠÄ®öSé .)xʰ² :˜œ z ¹d)˜F#6"¦BØb¡ÑpszO]nަêxδ{ØP÷ûƒ‘\5‹/aS¦‚ ¤6õAo²1ɦbGÀê} 2ÖñaÃU¹ÛÁgÝϵI­$´w:µ ãׂˆ®žþž2©±ÉJé³Cغª§Æ& HéÂÖUT56YWÊà¶®Z«±ÉrS.aë*Á›¬Bex[WeÖØdq*ßaë*Ø›¬YE=„m«ŽkÅÓ.i²dÆò”¨Z›4m°¨íJöÚ‹·Oª:cý Ú¦Œƒ‚õ64*ßflx[”‚Q)I¯›²½êÖbÅ-N(d4ãí(6뺌reÊ(}ü0eÉ—8Xˆ Ñ9]COè÷—›Ú¼˜Ýº¥~•G¼84ÅÔ»a·XŸ¾ò3c<äßšÓ¤\Îy&§ï½0çÒkê{t Ç«F©¸™9©ná4Õ0­…ÜKh¶¥RýF¢MÂ&·Þº­EXÕ ÍÓ<̺MWEÕ¼«”e?œÝ¢†q¨nóº×pM Œý~›­Ó*Ëw³ô•­´bœ³(+ ey`TÖ~?ŸÌÎEdà’%ZLÎ4aÀÊu‘íIËßf%Ü`dû"¿Ï6¬„ê–Ad®`›},Òâ ”ùMõ9-Üvk´.‘môâU^}Ùs–_`Ãn²]Öüà C°³²Ê‹/ðž'®ë˜ø;%q½Á¦Ã¢L$vª`ÿCıM ID¼"_!+›š6Ð~˵ Ï$à{Î5ÔÀˆ¹I-ê-Á\E±ï’0‚+ÛÈiú 7w˜ú„di„BÊÒÍ­•G\ üÐ"¡pÅ1b"ã’@L]rF$ÚD+'~ƒÝMÍÐ'1ãÐ÷¨AdŽžÜ€M jÌ"( ï,rí7ÜW}‡Œ2}/"­xæÔpÀ2\cIê$Ð[À1$0:íF˜Â"ô]Q8ÎssÁ·€hÅ‹ÖÖÐð¬ó:%XE\Ã"0¿îT‹[ÔýbÕ%ôbƒzÄâ …„‰ÿq™ÇƒÂrŠ ÕJžýðþ8ùâå‹s\¥|Õ0¨r¾˜Ø=ÛUP°õ÷å=ƒl·ÞD‡þö” 9Înv|!B’àN×u›æçMíD ï=à&ð$Oð^óÁOèè.ÝŸÝþ$=‘‡}^T|×Zóý¡JwÕó}6µsMçÏ$ÊÅš ç2KÌO@o\qiÚÆfOF`?ja½ö¢ØÊî³2/úl"Mâ"ãZºÔšŽÃS ÏÆá™„Í!¼•Ii'pMŸ |Z§e?’–ݦդô~1®¡c´qlŠ©jµ·àoAßy·×@o3m›ŠÜO€3g2–ßíNGsDe<C:¥£×^5I=¬Yæa‡Xï‡:;”¢ ºEV¾kŸîy ’¿ãaGKŒzq½$ÙÇ6®.Ö/jÖÚvÍO"AôØ.…‹~å:JºhmÇlÄRh ‹q)‚}¿RÜybï‡O¬£T·¬Öcv}‹Œ0'îêïÎÊži‹ Î±Õ¥ÜpHâo„S"Çv VêèMS÷ˆß9AÌ'ÿ|Œ¸¿”ŽjvöéV®'ñl0Nha‰›o†—£(ÃFka¼9öZ …Ú°áP<gײÌƸ·]Ö¤mâIO(ZXï ]s°'mH³¾pÒÛT“c<Š”ê¦²ézÛV’DQ AÃb¡¬«bÓðêxU±a™ÇEr_YKù"èÉé $¹"_Ô×jö|RÓämO.Ž‹K¦ÒÃø]ºoä]ãd€Ì/ä}ãFAêÃ@ãGv­aößô#P¯ÍÁ_sóˆ)Ý…†Û±›õ±Äç4æ§õ~›]R³ëPí6¢F3탉KÜDnÅjïY®¡ä¡V„oÀªÓ>:¹¯ª[ÄÝLU4Xð%¼¸­ßÎ.AãþAãĹ´’0ŠÇÏ5Õ#aè‡ÃS‡ óÏÚéÈ™ Ù}Ž;>ò+O¬wvéÂ1–ƒ3—©ÑôÏDBC ¨ŸÐóÁ19 ¾¸%™Ž1<’U« æ%ê|÷>ˆÏÙ=~q¸O‹,ý¸}Öˆ€ÕéýïÒu‘ר!\û…âù¤ý¿›‘E^DUZÊv¢¨Kf¾»É>½:\èÐ9ËýúÇІ/‹t]åEÙØÌ€Ë¼7P߸ÍMpÂÚ¼Û¼ZÈtÒ-b <öYÜ É}žmÚÉ@U;áuO°Šº=ªnŸRFÕƒSêíKÝÜæë:-ðž”U»{ˆìo$j‡¬dÕ÷ÅÒ¡xnt³e?¢,}žçÆc±‡O?" Ñ7F4ïãùÉF®§"u]ÎðÓØ_ZÜR·ú–AÁÊŸ½Q¾N·LuU3¨” J]/öõQõI‰×Sè0su¾ULä4´é€}<×5q^êkòÁb¨('™º´ê¢ØÓ¸gKãÇ`±M?uv¾%«Ž’–EŠsËÒ¥•æN„{pÁþ½L·ö M{8öÇ£ á×ì¯)£ mWé?lµwø›ýØŒ|hÎv•¢íÙšîªð°ë<Å'5ÙU¬À½ ‡þmÛã8"ᨉŸL0ºvï/uÚTž¾öã¶Ûd7pþºóy³ùD8¼¾åGâYø!yA"?ÙþPKvºZ<ÌùO± Í,IAR-STR912/include/91x_dma.hUT LjKLjKux êëµZ]s›J}vªò¦¼/Nʑˎ֮}ÀÙTéà 8¹yRa1²¨ ÐÛwkÿûö â£GF7^ò ΜÓÝÓÝ3btö¹È‰ñ‰³û¶u{çMQ.‰ãN‚EÓ.²$Ž‚EJ°¡?|&£ ¤dê­))¯+’Ñõ&ô2Ú[1ˆ¾ÍVqBª×™C¢o6a°ð² ŽˆK½5a&iF¬4ÝRŸ•‹3upÆM»"ßh’²jOáhºH‚ ')Ù7Iü+ð)ñH Òñ+ xI²%i¼M”,™ýAäs;¢'ƈ^A–’Í6ÙÄ)íè/&{¤Yœ¼^±¿ÁaMc­9¬Ïúí`¨â™,Pÿ‹Ý;“ÜÛ¦cN]âÌFîwÝ6É÷;˸#–CF3›Ü>XC}j˜d6ÿ º5qˆî˜Ù7khMo‰ñำ‰i;Œî»åÞA&òÖ†OtךM‰mÞê6¿ ‚–͆ ×™ÙCÓæRðlBÜqôo&q­‰Ù㹂@à<ŒÝS–Ö–aÏ̱i¸öljqîôñ˜Lg.¹1É9’±¥ßŒMN©O¡eú”qYÓüˆ‚™SÇü÷xnéc2Ô'ú­éä€Ú=C-ŒÀçnÛ–Ã\Ù³ ³•‰Ëb7ç‚VÆPŸÏr—ȃc’‰>4ÉÍ]´Øö0VnÛ.^ŒV·¦æ²M’ÅïMÁ(ö˜YäûgôÙÇ?œ±ê\%Y %IÑ(# ]l!/±ª[„[ž¡_º\ŒóÁ2òé’ÌçÿT_æÃ‰>¿ƒ›~.R»ÉÕ-¦µßM ƒzÎwÌtÖÞ¦·:fB\Ê|Ù@£v•½n~S0ãa®¦Y²]d?üçã²=×óÏXyQDù“,tß¿fý Lp¡«AleÑÝ<ßOhš’“Ç׌~ñÂà)¢þ§¢ú^汩y„ J¼(]Rì÷rý–4Z‰DzgÞÇßSqv#Ø€J¹2'Ä” «AwCÌQ~í6‚¼é0#ÊbÔ[HJœÌ˶é)ñ–p‹c)lbèqâ=óʆ¯¢–ÅçÓÁ&²UÑ®âZµl¢°ó6[µn⸋26».º©—\5C´ ½'b°G<(y(ùMŽÇæÒ5ŒN11Q˜& [ä}™m.è 9Vz½Þ×㦜hÞJ“G°!P‡ªTá=Ç¡ç´Cûô‡^ ÐKz‰@¿âЯyJˆ¯ˆíH¾Y;íýßí[ÐzšŽX+µÞ®òæþQÛU`0¶ ¶z’¨6€.,Ö½#"ú?²Vìp`bà ,–¹jsÃ-,¸*7±¶´ yd‘jBÕŠ[ÊÖ´æâ[ÊV³&·T¬c—Îq;Å VâVе« Ä«Vh(E¶ó|wêü=©îȾ  YîØF—,/`5Ûkƒ!YÞnúØœånfy{¸ƒí’\Ñe¨Æ¤(†XwØÄ€X†··œMd‘à*D$¿U4ˆHz«hÛÙ­¢Ql'·ŠÆ±Û*Ævj«æ.³›#ÊïÏ™ÂÞÉ•ƒÄ‹Ê¡ö=š\Mè:N^¿dñ—5ÿë´ùuýŠUF{kTÊ©ˆÚàmµ]q¬¨µU©÷¥ÎoøxŽ(J}l½s`Â>ú’@fÈ‘Ôöò!ã>•¦°½nÚ{ƒâöÛÇmS뱂õEj`·Œ¨«¿%¯ÕåÏÑø}Ò-Aººï$‹Æìœ£Î¿Çô´ç¦áí!Ç8W‡^æUº^¥=ì–Êôí%;cRÙy¡GNÈPwuò/ü,ù„Ô’Ðï£újWý~®/ç üZWþà— ¨—¨B‘c‚xù–ç*Òïê{a¹_ៈ‹® ùø½Òªs‘Ó_vÎ3MÌ„”^»àAjü_»òÃè?^0ùyÁþ‚©6È=ÎÔkÆ—| …#ìÀçkpòä"hõ¨9ÛS¯ õ WöÔ©PÁKH;lâä…*Tð2ÒòeO±k—ÒùaŽÈËIHˆrªIäZQHíò¼ùÍkFÑ¢âTÉp(;DŠ€À»AÎxç…ËïqâW=èïe,Fìc­0–¬ƒ’¥å”ûûJ—T£Þ%%-­ížh”ÔH4úåÞAÊ\²VÿUO´ÖÞ"‰û¿Ê¸ÜFü+þß>#öþŠ_„€ɰϟ®+÷ùÝÚj~jG>׎ŸN›§zâ9»ãðßÔXó[%wmÜžaÆÚ? Ͻ½ó¦dJŸùu«ùÑ™GËà©“õ[Ö Ë§¤£Ê ûG¡÷”¿Áçƒni&Æå7O¶ƒâí§ù/„ ±Üú€âs{ sSmúg=–ìý·åJñF˜Ô§ì5Zw‹`AÖC]s`LƒŽ;#o:SvFŠ˜èàØ/*BKÞžçzȤÎV!27«‰Ù5š·0ÂD¨!Ò%a;U€@CkÍÞôf»„˜[½7ó8^üd¿ yo^Ã[¬è{“Þ'q¦°£Â.Äì‡åŒÍ± «¨ãNqíÖ |h:ïÈ«4ü`ÉVõÊ/ñHñSÀöuÈ/ÍéýèqdMñóÂÿPKvºZ<=)K4“:IAR-STR912/include/91x_can.hUT LjKLjKux êëµX[oÛ6~^€ü‡ƒí%-ÒÄöÒ5kúBKtLD—”¤sÁ0ŠM'êdÉ“ä4Űÿ¾CJrlIv²›ž(ò;·‡‡G:~ÛòÀõ,ÿò–³ó¡„^§ó醓4Q‘šäi‡“ ÚD÷÷Þ ŒxÁ\Áêù?wŸÆ“ >zв̒֟àZ6Å" 'A&1HÌ5Ør…:Ó,–eK5ÕàÎûãîé±ñì#\©4ÓÝ£ŽPÙ$ FÉJ»|3˜iÏ&IœaœAE?(˜-ã‰g°H“<É¿-BÑ?\ÔúZ‹xp·Ì Kfù× U…wi~;B‰ÿøÑ> Ã,OÒoõcïõtì6bïUk'M^ºåÚ6ÎþåÂ%§‚z„?ׄS¸2kLÀÀçp>b6ñ, ¾çÜa®"QÆ¿b6óÎÁ é»” ­îšÉ!æ¤Y`Š»D2ßNÏ 7³hq-n,)>·)7¦pÍéƒ W$sé‘IC4ˆ ÄÈ‘‡:Á™Å}êPKrßc–1$Žž/¡OaHFú5*‰w 6ãˆ>Ôº˜W¼ QtÓôó#gÄ›¸äœŠ"´v©Qè‹V`9EØœ €û®öU+D%Rsç@Œ´‡Ä³‹`$(¸Ä¦Ð¿}fKKèÅ‚¬Â·g¾´Z¨³0V'xðÔ£ŠsHÕd‰yù¨ Œ'ÑÒdè»×ÌZצª¨¦ƒŽñÈÌçx–«ß—»±8ê‰Û BNQ]«67È~Û®ÊåãkÎí¸Õ0—ˆ‹¬q Fx¿¾ÍSˆ0}“rßÙÅ­9œyòÒ³·s«aò†Ò£×6‘°å°ººDHBj)X?¬%¬_ƒu7¸5œö¶²êö®¹Éj±A 6>°“ú>’´(ìú6ßn’h]âüŠ8;Mjئc+“uئcëÕ=sU–÷êÅRïb\íÍ:,‚#äNß\SOŸsbÍ·:l´™³§n+LÞl”qÜïÓ6oÀNZa.vž°^»Q²ë°nŒúãtjvÁìÃuð›z·\À<ÁV¬å¶¿&tt9ö½1½‘‡ÍY|«®ìU_4/wuÕmo‰°ëaSÝàœ=¿ž•Í’MVà ~9ýUwE€_±óì¾jª bvÑݵ„ ¤=föÊwŒ_×úŒ5Q8ó¬hòÖytˆ¥žïºŸ>u»oàtß´À ýæ|úÔû¹ÂmönÏß¼ÿ°uƒÂÉÇ$œBÕ(ÂA­e„·Õ„0¬¿9[“°U!£'6 ¬^ü[ú„ÊËæõ@ïcÙKÖ!Žï "ÏÔ}÷ªa¯f_¾ƒ»t¡…iš&iÙà”:Fñ2SS7»÷ï¾M˜ÉÝ—-hùÔ@B“x[¤øn©jì$_«á0¼8„»ËX†!FÊOá,q‚l“'?Q8EnH•Fª=¨;ÂU¤‚L•úb¬ñ´‰<,Ì[XXAŒöÚíL~õµI›€ÒÂW麜ÆS&Ÿ¶ÆÕ²p²îï+ô™š£-b+žiŒ‰n ],mXD̯Ý&Jgt…2ã:ÊQÁ£Z¡'Æ,¯L5–Ë]ÄDlÝÇ:ŽoÁUŸˆ,+×5ÓÕajƒÉ4ˆ3,he7¨¦[‘L³.ù%îÉ.•˜¬j’_é®a°jÙ`™[û؇ꋹùüßœïjl“Ë?PKvºZ<æþw± ¼ IAR-STR912/include/91x_emi.hUT LjKLjKux êëµVYoÛF~¶ÿ‡Aú’®®¸©j?QäJ\€‡J®,èI ÉUDT"råEÿ{g–ŠJ6Ü$]À€5Ç7ß gg¶Õ8sà£ù L4 øÐÐm·¿@(Ü4.r¹”±*ò,K8çzuÙ€Aº”àE+ »s tžgr•6dalÔ"/àðÜ‚kZ`¬×Ë4ŽTšg d´"c+R1‹R/ËLȸý[«Ókif·p/‹’<:Ͷve\¤k ²C‹´„91‹óLEiVB´\‚ZH˜o²˜ŒKX¹ÊÕËZ¢)òC%á=ÌåPæsõ–éC/M´þɇâÛi©òâå–þǼ»]Êû÷£¼»ßt7§5élu¯Õë`,l£€…Ìú11››6ð~Ã1· Ïdà{Î î†`ôñï¹Å½!˜ãPø. B‚›pac?j÷ÐÝ5÷=ØÐ´ò€Ü­±)B4?°X C¡ÎáChÜ3ÜeMÝ‚±#®©¹¹øÌa¦|›!„¶á8àùú læXàp£ï0 ixS°x€ÖׄŽêEš^ÈþcæÜpÀ2\cÈÂ*Œ6"+äB¦S¥ðR¾K\ AÕÎ@8Æ¢íjhxV«J Æ!×°ô§ûj‘)«bUÜöõ"Xƒ{Ì„†EâZæ!)Rk’Ç•üùݺº¼ºlÑ%§™•㥓2SPÈxƒ}ù(!ÍâåFwè¯ï9„ùK:Ï9‡ÙŒ ^Ι¤ r$ÔÑ9EHðš¿+À;¢Wxð­¢usña‰=¯óBáЪÆÊFÒ0”h©ŠM¬Pð7þÁæs—&Ò¬e͸eNï(|M> E`½¢˜¯yøÌ{Íç¼Æ•«Iš¨(üŠTÉÎY©gn `}•nžÈ@FÉLQVÎeáÈì«Z¼eêµ´ƒûG[ð,U«…vWÿ¸Jeêû?HÕÈuT@mÉÂR³ÕûC+VH{;J@wʶ%‰à n¶èâd³´ŸÛÛsÑjÜì€KxÀë¡ê ½7An4HïHE¾ª Y¼ Õÿ´™×czy±Š–Týzà#î•]áðë‡èh²ÓlyT´Wr…ž¨ÏêØºùfýu®Ư)vÀ v´œOò"¹8è@çK ¨é×/‰ª%a.#µÁGB=„¾^žÞˆ‹zá©wåâ$ÙB= àèO”t9V>ô~xRÕQ÷¯¬ï… õ1O¹%醤ߟîäZº¯Ív4v’çëúxh졞ªGp•Hƒ¾Ã ?ŽÌ’t˜ú¬Z9ð­3NÏyh3Ï¢í>àÛîÑPKvºZŽŸGiówløœ!e–s y^°P€‡¿_Ž®/¥c7°dY.,FCiÀò ‹ö’¤a÷¶QáX&Ü’ü8¾e°)’@€sØg)OùÓž!ýJA¨|LòtÃ?ûƒ8ú”ùÙÓ‚ò#–ŸF9O³§ñ㾺qÿщûªÖ½?ÎɨÒÊ×ÿà±7%0wˆK,\{ì­4‡ÀjJõ)Pƶ“54K'`[³{Ð¨é‚æ¡½¤µ& /\Ï6‰ã ºõ¦XŽRA-475Ú8d¢9RŠ RG˜ Ýs¶cG.…:<\mIÀ£&¹%ˆ "»˜yoEmSݱɌèžc[TwÁj³X¶w¦dfÀŒjw3")5ë ê ú­à¢Vù‚‹¢›–Kþ^`äT›¡™Ú„¸e¸Ú\ ÐA ÏʰêŠÆŽm _!’x"wöÜ&­É¡f—eH°p ˜šAàîþ-a!”e²Jßù´µˆ9“D¥ÌB§„Z:ÙÍäϯèËó³KqD7Q€§xäØ#K8d,(°*DI²>{É#6IÈ6°^‹.cêë)ÊÂr¶L®MˆGüEô/X»äƒW²Ãùû‹í«j%òeŸfVÙR~t%Á"¢ÌyVüüìëù@1ú€­hmïY†m3y0ÓݶžlS¥ˆ¼¯ªkÑÓÖó »§³¬-§YÀÂùÊt96ã#¦žM©AtY=Ýíc¶Ãe±Y¶dDz–áœeQ/v$Ö·~’°¸c[Ä9[I–G’UG’Æ~ñ§ÅL)ª¤K%v©Ä®”ØÕô8ÆJÕV̽h×Ù,‡íÄÝ¥§EÂå| šDÜÃrÁsv+б.–;ø †½²à/¾…ÅðÇ/Bð $ ÖØå"¿íW1^œ9÷þß+Yž—ê\öëaMÿS,F†á—áp8ziDy •È+ág ;õ³PÜÊÍ‘5®bu«û[…ì³b9뱟ç8Ä%Lí)â>²,Õ™Ø>ÃØ}¹‚V{W nü#“›uʽh¥É«ä”•h'Ìݦ¼‰XÅ)z*J§H‹¼Âžæ”‡„L8ÑšK“áscœÙpŸ: gN”·ðSÿfЬ# Þõ¢¨ÎzÑ÷}¤„-û°+%lÕ‡½SÂÄXÒ½Þ©9 íM9•°æ<<·ƒÔ[ëæ|¥¤*uKe”¥nqð¹«û8×ëx®û:Íð*ÝhØ×Ù^mwu¤ÓçµÝûc9¬t×Ã^„ã™69c­UGYkÕqJíÉH¥öd¬R{2ÚrÝSñV^µ#îk‰[ÙŽÄlwý_}?<»´ß[?Âø˜Fa}Õ ºWÞ›ZîÊIéõím0‰¯mq ü>*}ÆU(~,'#°Øgù£ƒãYŒ·‚]ð}Ás•IÞ7¡¶ÓMô0¨î~Šß(/YÊe¼™Å8#4/}œ¡A«‘Ô 3O© Ëd©‚¬:URÝ»=6ásuÛã[XM“Ý´TÂa=( zƒSÖ\«/ÝăAÌü¬©Ÿj‰I“R…¢Lä Åò”b¥P”©ò÷¼ÀTõKX:f'ÌK"“³½ásßËü$ß”…ÓÌüBÑÉouE`eÅ©Vûqtœ*”Òáî”Y…Ö6ØqìwqA½½¢}åAÀúêu˜ê×Ã;b¡Þœ%!zu‡}á4LŒ†åø­Þ”ªÂ»lÁ‚{ØŸ¨ :›è–ÇÏ÷ü'G,Cü0¦3R}sŸŸýPKvºZ<™Á”˜ªË:L‡ÛJ`ºxúDñX+*4=®ÍÕÀG!p=M÷˜*ì³!pÁWuJ›~ ŠÏf!ü¹\Ñä6UÏÕ-] <×1Uü©bYà¸<è0Õ- ,Sy°t†Tœ ™J_¡.þ‰ˆØ¥ºŽ¯ÿ6GÏMÅM±•‰Î m3$[ ZÜmÏôÉÃsm8$8œñ ðç´6†Š£¸K0÷u°M‡‡háÎØ¡(¦£kè§cð¶9h…“Ùä?£G——#Z¤ë8 ÌpÑE¯QZB-+œ—¯Äé2©Ø ýñœ‡˜ßÆët­a± BƒY^à¤ùvÅ•ô™v“4¬p™Ÿ¥à íœoHÑ&Ü^¿¼Ùo-–keúõOÛ,/±”ñbóê¡(U$3K(ʼZ–Ö¥Ú!E ÞyyñW¯š]^TÒ;b,ìlÝw;‰o¢6Ø#®†ý‡ôíx®*1fÑ@‘çVå¶*AÍ6[ªŸÀ©‰ÓgÀÒû¾Fƒ<ùOþžšdË?~VåKîwë/ëÁ*O= ÌF¾:鿺çàÚò—óôÕsÅ=õܵiîCô‘Ú…þÎì…éÌæAÃlyfÊœ·,Ù'TN«8Æ¢pÀ3Ue& í;ÊcÃ8ñ'ŸÁ“yrwËvÕÅ,Çý;L¢¼“_Îk{`.˽Ä`>fURD ‹L²î9}ƒNh :ìM¢)àÉ_È“E¼(³6ó¯Ï[U9MbraÈÖÂìÉ壱/}._˜ÃÈcmè oÝÍÑ2ò—ñä.O>Á“…<£J’Úéû&¿µ[{¸ÖAA~ÿæsë]€• w“{*ƒM•‹ÒjƒEí/ÒKr~ xÁÕî›;k¿¨–®x Oͪ´ŒrwåìZÜïl<=e˜–ÿ¾h÷ ¶íâζºV³ˆ?Ù&÷ôöwüéf<ב˜°j ŒLž.ÎUѱ©‚û¼µ8o<¾©yî< ˜êÚ3:`ÔríT8Å“Þíqž|&O’kžzʾïh1µÓ/|ý€OêÄo0röÍ<¹±ÏÁ£îÜ¢ÃØ¹ù Ê×KònšüòÜ¢D0Gw%õ(¯ŽßÏbžüÅZú#V‘}MSs2Ý%oËýnË}êäÿ'êÞçŠÃúö,#Æíx_EW´u–©»í©[¾„i%…¨ø±·Êø`~ŒáÕot°é7¢‡uYîb8JnP{}W´W4[Z¡Ø…i“z«jÌÊLïèØ %Îâr!Ìí¤ÖÔ ÚT!Ml™Üqü¨eò–u`?·LÞ·¬KÝa/"ðü«™>û(ÒWK5q½á Ùø4ü#{Üëbù`Í -.ÚQë&–òŠ¿jãæ«7¨3̧û±ä¶¸Á@"Ì­a7MûóðM Ü~rù=Ã}r#É> Þ4ƒzºì¦ÝÐL9ÓM¹]÷GÜÐz2’ðù°H–2i×Ýé¼äÐHq[ÈÉ|0гp$Ü€ÁØ×îÈ{Ë~(þGÝi 'ã^»u°ñ TáòØæñ+½¯~ ó˜ÖË¿¹&eÝ+Ç&\æÙW½©ª‰³Ú¸Ý ï¯%¶6~5’åã5‹Wí½î{vöã—;x‹_>]íßùX3kðÙk­î; -SzB|\+x.»¾'ª›Õ•7IÖš5_{´ö½†š¥ëøY„¬nû’4¾n›DeÛü&U$v¹¹~£xmÛyÂì w¾¨|Dtu4™Þ ÈbvËA ŸwÅf‘ žzòŠF\ØQÈ=nË( „CÍái)öJ%%Ñü ÁÁKÆ"& ƒ,Ù|^š1xMW³uT>Ït{ŽìnÀsû™j÷‡—}[ÚnT©MÄðl`”^”鯒ìÙY‹"¯’4×h¬×xgêÑäKs£«$¯4ÔùÓ’,ƒj¥ ]çÙ(̰Re’é÷°,Ó-–p†è7>&¿—êª(ÆÆFÙ£‘‘ýå@öèéîüeK†»»×ÚõæÇä“…kN %ˆh"o §pë1Ç&`q˜ÆÌ%¡C! ý c¢æ²p N,dP. Ý-“à“´7,Äø€H…Àé”pëÅŒŒ›x7v¤@DÜ¥ÜæÂ»d‚ÜP, göbF$±/OÍûf¨OÉ£9„G|ÂHÂú.øŒ\ùÔR’p.ãˆ>Å\eHñʉBAÄ(\)Ìv@S‹!püF7gÂH˜ð(°C‰á–o"Æ®í›HB·ßH‚XPˆKájö·]&¢áh7ËÐfÂBê¢ N±IøC_ˆE™vÚ";ùõIÿ¨wÔ;Nïò¥ºƒùüi7Ì=ô¢+ÍUË{Ô;­Ÿù}ó×:õÅù·çÀ:×é}ŽãÜןFÝ@K©z^t«ä`{Õ—ß‹|%3€nå~%3[¹_ÉŒÀvîm‘áÅÜnÀ¶-ü%rWǶ­ü%rWÈö…ô=´Ýƒm[{¹o¶-¾Üwa»SÿTy½†ß0!>ÎÆwœ‚ä14ß5¾GøYYWŒÙV²‰1†i|0É’{Q%U­qÚecuq¸LØ aYhhmóó#Q/Ìw)É ‰êâ œã|7uÄŽC…°Öý´,‹òYÇ*_¦wÐ?9˜hF¬ß1{ÿòq§¡kÖÉ„ùt7¶PKvºZ<2¡èBŒ© IAR-STR912/include/91x_it.hUT LjKLjKux êëµ—KoÛ8ÇïòíaÛ¢ëWºm7{¢%Ú" ‡CRqs2‰†8’!ÑFûí;”ܬ)Õm²ƒlÍoþó E:ýwO¼qÞ‚Íî8›zFƒÁG2ÈÓªTk•êª,ò´†§B//ÞÁ$_+“v ¿.rÝ[€lõª¬àЮ!p\ ›Í:O—H•<ØM´BɪÖÀêz«2þê?÷›Â®áVUµ‰öM€ªÓ*ß4"êr•×°4…¥e¡“¼¨A¯¬T’a4”Ëæk^hUUÛ6:OÚ*)²5FüQ•[ªFò…ÍäöòZ—Õ·kóy0ìc»Øëç£^¯:FÆ÷éÈ7úáûp>£áÞ÷³ùýÝHÂŒSAC "šÈ9áæs<`&‡iÌ\:¢Ð¿ÂDbLtË\NÁ‰…ŒÊÌ™ôŒ¦5bx@$‹BàtJxó2nÂÝØ‘!ˆ¸Ky“ }ȹ¥ Y@{@D³+Q@ľ|oö:sxD}êH…Ì <âûFÆ<ê»à32öi#IÂ;pGú=æj?Et9Q(èMŒ3âƒK2¥m&Û AS‹pü¶m΄ia£ *H oô& bÚã IèöÛ– âRßL #ZÓaµ# %a!u±!NqHø‡ÏB,ÊŒ³)òx’½ßýˋˋ¾yi—ø6.aS©*4T*Ýâ¾Ü™·2]o›úç/Í×ù²ÈÔæØar[æuÖ¦8xÔdfF=Sõ/‰Û­ÍÜêÁ+“gß÷V¯ö™è×MYi<Àô·Í3ó™L‡Šx¨Õ:)ôï«îƒ2Ûâ!¹©ò9wwI•'÷ëߪö´Æ‡ï—èz¶/n¹-RsÊ?c”§5>[²Ù}»2Ï .Ú —-¼öÎxcoÿÙbÎþuµv Ì*µT:]PǹǪ5Ž »±§˜»Óã7{f±>ÄüÔZø—cæ VÏàÁI’3`ØŒº€++‹±7³‰€o„Û'IC*­5¸±+8$´ÓµXîqÒ&ár`Ã.`dØÈ±/7öåbfW@À®àߺö9pÙ1¨9ëZî/’Œò `ØŒº€«.àƒÀ]=m‹5›ÜŒŸxש"Ë—€è㥠?nôsû/ÿUÐÐ5¿]&̧û_ ßPK yºZ<IAR-STR912/include/.svn/UT •LjKʈKux êëPKvºZ<ËÙà;© IAR-STR912/include/.svn/entriesUT LjKLjKux êë­—ËŽã6E÷B~Åv=ùè]–ÙNz5› H{4i» [žIþ>ì‰Ý@vJ"®ªî½UF˜¦6_&!š¾,Ëùút8Ôóù¶øuÙ_¿ö×·Û¥z»¼øþäËa¼»¼½-—Ëåvúýp~µe\:^¿üüi÷ëó§Œt˜OõõÖü¿}x‡òdGüŒô¤ð„a5*„Ï“N_íè×—‹ŸNóéeúç‰=„óøÈûS#Ø¥`sõ¦R¦Ÿ¦ŒüvYêþËÔçWŸþþÕqhGñâæ'‘=ü8Ÿ'KÜŒ¤™»å=kMš“¤š¸æNÿ ù~80ÞÉ–ù¸–L5˜jÓ$…»äæÚ%€äÔ’4} ²Èšïd×z[KÖ8«EóÅ9ª›;b÷bjò-ÈBÈáNöržßÖ¢IbdnJ¬ƒy) k/à)¤X6i'¥G;«u6jÆÚ{H&u v^Q 26ÛL!Ç;X;ÚZ2Ä8:׳±hg‘¢Ø ;•>Ô—SÝ‚ QÂChÕN«Íi)õR$•Q/nèÔ\b"Ë„a4–;Ù÷yµlôŒ±z†Ž9¶š[…G`=m£³Dv^¯çµdB©‘‡º¬—B¬e¸«msŠâܯsYK–š((Yu ”¸Wâ ™!Òx±I Q–‡7ý8¯&Ë¡QµE EÄJ’= —aMjÆõõdÛ–r¤Îž*‡#vè‚cbÁ`›è,ÅôðæÍ.ËêùÔB'è4"×[ÖhÚú0)'o•u´¬pG›Wƒ¥R¹‰nYRvÎ8²Wk –Ø l3>t6Óê!ŠŽŒT/Sms1×<ºL„åÙ£dG[­Œ©T«$ Ê±Œ\û±epwBݤf‚"ذ/ÅΫ“{ãŽJ}„F¬UÇÖ1J¢d¨]!n’cßz,ižý_ˆ {ï­c5FDLQÌCqâ¶ |ìBßæÕbKYJ‚ QÅVk÷àݲ˜Ít“¸eM±}o/kɪbg ÞG&Ž>¨Ô0ÀˆSؤfŒdÖV×LIc ŒÜ¼‹§ÂThüÕÄÆ²Aá=:þPK vºZ<"IAR-STR912/include/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/include/.svn/text-base/UT LjKʈKux êëPKvºZ<ʧ$ݤ/4IAR-STR912/include/.svn/text-base/91x_rtc.h.svn-baseUT LjKLjKux êëµWÛnã6}n€üÃ`(²A_ºÝ¦É#Q6]\‰Î"O†V¦cbeÉè\Zôß;¤.¾Ùì–ɃHž9gf4Ñóά`£û †úÝî'ˆ¸'“"©HT‘g2)áééÉ982àÇ í¸†?zÏ“B%—s +5Ï Ø×àY6å2•I¬džñBƒíX ä,J¬,WbªÁÝß:½«ŽñìîDQj‹Þe׈2)äÒ´ì|.K˜iÏ–Eþ(§¢5r Rù¥ˆ‹(ó™zŠ ³U–hëR³È¡rõ²D–Ÿa*f2“ÁÚ…¡,U^¼\ëg ¼ß×ÿ¾x¿Ùû¸Ÿ”^½w,aÿƒÇ|HaÒˆú¢ÀáŸIHáóYC`8Aƒ1³‰oQ|÷ó" m‚;f3Ö8âGÃ>3>ÔœV`6˜æá,ð!¤šUd¡6·ÇAhÓÐHáž<€ˆÜQàÌ£—@"S†H]~¡«›Ya@]jñ0ð™A4$® ~Àá–º6¸ŒÜºÔPÿl"úµª'͈[VàGôÏ1FΈ 6ñÈ€VAhµµ/šÀr«°Céœ0ðL⣹ás cÒÚßîT!Á8¢à›ÂíýF¶Ð¢âØMV•BŸæS )& ÿqÍG§t:“Û™¼üáõÑ9=9=éèSЧF€Êñ0‰G‘)(D²Âº| ³$]™ ýå5Cs¾—³ "L&ºÓ౞`ѼŸV"[‹FiÝ^%ð õŠÞi¡E¼¼œ¿«•F…|ÔLw íàw*54¥*V‰:=ùûô`u fpU¼ÜÔÓÍó"ÏÔ¼™Lãó$Ä×júNM8½ÑN“˜çøzZR™­”h§¥HòlZO{Ÿp;MåzÑ裇Ï?WØpîub†—¸$ônêtÓçe^(üH ¤Tq¦ÞþŠ«Rmjè–ù$¼‡îÆ ~°z•,KQxùT˜j¨&èvgB§øIì>;fPç(ÐÅó"°×Ýdåéarܘ åÃ\s<pó'X‹;·óH2ŸÊÄJóäë.;nNúÿª/žöÇ>¢÷©†tŸûGý« ‚îAtû ¤û|ua³È4_DÔIÑ;Œïú̸†Ã¦CÝ=Iãbk¹}D•·µËšŽK»ªz­ÕmHwi ¨‘nx‚õ:çµ¼)o¬•¹ÃTMå1.dü%}SÓAl˜EŒ÷»ïê‡5cÓñÚkÔÛIw}ünJÐŒ¹œšlÛ‚áÅíLÏ?Ül¬GBé[çYÓÍtÁå¢Bè¾z¶‹0/û¬mQ`æ[ A-„MÍÉ‹E¬. Õ<ßWÔª;pãÀù¾ ƒÆ…|åÍùªÊ³òl&ÎV¿öaÝ•.`=džrÈl1=sê§‘Ò5à‹'ó°7º¯F[1^ÐMƒzµIï6Vj”?}ƒ[M3d™ÚÈÀV‹ÜÂ3¾«.à¿”œ4~ГUÙ¼žõJK¢;Àvü)~Ë5pò^dS9ƒÎùÆý¦¹_íoùUG}[ß$æÒöΦÿþPKvºZ<þŽj¨y} 4IAR-STR912/include/.svn/text-base/91x_lib.h.svn-baseUT LjKLjKux êëµ–ËnÛ8†÷òí¦ :vbÌ5³¢%Ú" Q’JU KtLÀ–]2íÛÏ¡ìº1¥.Úd/òÿþs-rz52àƒ÷¼xõ Ø2P0»¾þ¤ŠLV—z§³¶. “50†^^\ÁÂì4ðt¯á4nᯛÏ;³žl­‚tí¶¬á帅ÈóTÕÎdikÊ”N÷Vì§­FϺi5M§s+¾þmzóç´ÏìîtÝXâfrݺÉjSõ&'÷¤A°-ÁÙ®Ë5´[ •FÙV×é®­Ns]ÃÆæn »l­FG× 0ý–é•oá…˜‡@X$(dâ;æ3¾/‘*ލpÏT`=½¸_`ñˆ(stID?‹™°¸ŸxJ¢báSчµT ’ÜQP,¢ ²ß|h “P}²{šy"¦!õ”ˆ9ó$È€„!ðXÁœB@CBFæ!í- Ÿ TÂX‡'ëˆK^Ì%ý'ÁÊ Á'YÒC6Ú …6kà…‡²“¶„…ˆ£¾qè ïý lÚ©‡„ûÓCIH ñ)Ì^t ‰ƒ‡Û¬C ¹"ŒS ›„?œã˜”mgŸäy'ß~GO//./Þ›M‘ë <>Ú¯AÈæøŠßãŒ)ôù¤Õÿ¨ïìô>­&ÛwîlV›~º·îI0'«ùåÀ¹4Ý®Ój}ðÐEn60½úª†Sv½Ø×{ã¨sH?"C2ß§.‰:‡\ŒÅÜ c.1ï˜7$ŸMæ’¨sÈ{– ÉMç’¨sHü7 ÉÖì]u¹\±xˆ>U¦tY«t`¡FJ­ÛA©¨sHé”ÚdƒRQç jˆviݺ¬Uºaåj$lS ÂÊ•Cz„É,-\uIü‘&¥ù I¨s÷ƒ¿ÙùÓ`?øK‡d³‘˜f6ˆ‰º߃/åÑHœ}ö1åtäÕéBÛWpÊÌ2˜ý\•uk/ _*ÝÀ/¯¶Æ—ŽøjÚ´hÞõè•y‡÷“ª6ÏöRôœÖ&]ï~*[7Ç}Š·»·¨zuLnÓ™½½¢•nޝ¶<î>x.M¹^wOÏÿ¶óg›õÛqt¤¦#ÇÚÜ”)÷í9½`!=žˆÿPKvºZ<2¡èBŒ© 3IAR-STR912/include/.svn/text-base/91x_it.h.svn-baseUT LjKLjKux êëµ—KoÛ8ÇïòíaÛ¢ëWºm7{¢%Ú" ‡CRqs2‰†8’!ÑFûí;”ܬ)Õm²ƒlÍoþó E:ýwO¼qÞ‚Íî8›zFƒÁG2ÈÓªTk•êª,ò´†§B//ÞÁ$_+“v ¿.rÝ[€lõª¬àЮ!p\ ›Í:O—H•<ØM´BɪÖÀêz«2þê?÷›Â®áVUµ‰öM€ªÓ*ß4"êr•×°4…¥e¡“¼¨A¯¬T’a4”Ëæk^hUUÛ6:OÚ*)²5FüQ•[ªFò…ÍäöòZ—Õ·kóy0ìc»Øëç£^¯:FÆ÷éÈ7úáûp>£áÞ÷³ùýÝHÂŒSAC "šÈ9áæs<`&‡iÌ\:¢Ð¿ÂDbLtË\NÁ‰…ŒÊÌ™ôŒ¦5bx@$‹BàtJxó2nÂÝØ‘!ˆ¸Ky“ }ȹ¥ Y@{@D³+Q@ľ|oö:sxD}êH…Ì <âûFÆ<ê»à32öi#IÂ;pGú=æj?Et9Q(èMŒ3âƒK2¥m&Û AS‹pü¶m΄ia£ *H oô& bÚã IèöÛ– âRßL #ZÓaµ# %a!u±!NqHø‡ÏB,ÊŒ³)òx’½ßýˋˋ¾yi—ø6.aS©*4T*Ýâ¾Ü™·2]o›úç/Í×ù²ÈÔæØar[æuÖ¦8xÔdfF=Sõ/‰Û­ÍÜêÁ+“gß÷V¯ö™è×MYi<Àô·Í3ó™L‡Šx¨Õ:)ôï«îƒ2Ûâ!¹©ò9wwI•'÷ëߪö´Æ‡ï—èz¶/n¹-RsÊ?c”§5>[²Ù}»2Ï .Ú —-¼öÎxcoÿÙbÎþuµv Ì*µT:]PǹǪ5Ž »±§˜»Óã7{f±>ÄüÔZø—cæ VÏàÁI’3`ØŒº€++‹±7³‰€o„Û'IC*­5¸±+8$´ÓµXîqÒ&ár`Ã.`dØÈ±/7öåbfW@À®àߺö9pÙ1¨9ëZî/’Œò `ØŒº€«.àƒÀ]=m‹5›ÜŒŸxש"Ë—€è㥠?nôsû/ÿUÐÐ5¿]&̧û_ ßPKvºZ<ÌùO± Í,4IAR-STR912/include/.svn/text-base/91x_dma.h.svn-baseUT LjKLjKux êëµZ]s›J}vªò¦¼/Nʑˎ֮}ÀÙTéà 8¹yRa1²¨ ÐÛwkÿûö â£GF7^ò ΜÓÝÓÝ3btö¹È‰ñ‰³û¶u{çMQ.‰ãN‚EÓ.²$Ž‚EJ°¡?|&£ ¤dê­))¯+’Ñõ&ô2Ú[1ˆ¾ÍVqBª×™C¢o6a°ð² ŽˆK½5a&iF¬4ÝRŸ•‹3upÆM»"ßh’²jOáhºH‚ ')Ù7Iü+ð)ñH Òñ+ xI²%i¼M”,™ýAäs;¢'ƈ^A–’Í6ÙÄ)íè/&{¤Yœ¼^±¿ÁaMc­9¬Ïúí`¨â™,Pÿ‹Ý;“ÜÛ¦cN]âÌFîwÝ6É÷;˸#–CF3›Ü>XC}j˜d6ÿ º5qˆî˜Ù7khMo‰ñำ‰i;Œî»åÞA&òÖ†OtךM‰mÞê6¿ ‚–͆ ×™ÙCÓæRðlBÜqôo&q­‰Ù㹂@à<ŒÝS–Ö–aÏ̱i¸öljqîôñ˜Lg.¹1É9’±¥ßŒMN©O¡eú”qYÓüˆ‚™SÇü÷xnéc2Ô'ú­éä€Ú=C-ŒÀçnÛ–Ã\Ù³ ³•‰Ëb7ç‚VÆPŸÏr—ȃc’‰>4ÉÍ]´Øö0VnÛ.^ŒV·¦æ²M’ÅïMÁ(ö˜YäûgôÙÇ?œ±ê\%Y %IÑ(# ]l!/±ª[„[ž¡_º\ŒóÁ2òé’ÌçÿT_æÃ‰>¿ƒ›~.R»ÉÕ-¦µßM ƒzÎwÌtÖÞ¦·:fB\Ê|Ù@£v•½n~S0ãa®¦Y²]d?üçã²=×óÏXyQDù“,tß¿fý Lp¡«AleÑÝ<ßOhš’“Ç׌~ñÂà)¢þ§¢ú^汩y„ J¼(]Rì÷rý–4Z‰DzgÞÇßSqv#Ø€J¹2'Ä” «AwCÌQ~í6‚¼é0#ÊbÔ[HJœÌ˶é)ñ–p‹c)lbèqâ=óʆ¯¢–ÅçÓÁ&²UÑ®âZµl¢°ó6[µn⸋26».º©—\5C´ ½'b°G<(y(ùMŽÇæÒ5ŒN11Q˜& [ä}™m.è 9Vz½Þ×㦜hÞJ“G°!P‡ªTá=Ç¡ç´Cûô‡^ ÐKz‰@¿âЯyJˆ¯ˆíH¾Y;íýßí[ÐzšŽX+µÞ®òæþQÛU`0¶ ¶z’¨6€.,Ö½#"ú?²Vìp`bà ,–¹jsÃ-,¸*7±¶´ yd‘jBÕŠ[ÊÖ´æâ[ÊV³&·T¬c—Îq;Å VâVе« Ä«Vh(E¶ó|wêü=©îȾ  YîØF—,/`5Ûkƒ!YÞnúØœånfy{¸ƒí’\Ñe¨Æ¤(†XwØÄ€X†··œMd‘à*D$¿U4ˆHz«hÛÙ­¢Ql'·ŠÆ±Û*Ævj«æ.³›#ÊïÏ™ÂÞÉ•ƒÄ‹Ê¡ö=š\Mè:N^¿dñ—5ÿë´ùuýŠUF{kTÊ©ˆÚàmµ]q¬¨µU©÷¥ÎoøxŽ(J}l½s`Â>ú’@fÈ‘Ôöò!ã>•¦°½nÚ{ƒâöÛÇmS뱂õEj`·Œ¨«¿%¯ÕåÏÑø}Ò-Aººï$‹Æìœ£Î¿Çô´ç¦áí!Ç8W‡^æUº^¥=ì–Êôí%;cRÙy¡GNÈPwuò/ü,ù„Ô’Ðï£újWý~®/ç üZWþà— ¨—¨B‘c‚xù–ç*Òïê{a¹_ៈ‹® ùø½Òªs‘Ó_vÎ3MÌ„”^»àAjü_»òÃè?^0ùyÁþ‚©6È=ÎÔkÆ—| …#ìÀçkpòä"hõ¨9ÛS¯ õ WöÔ©PÁKH;lâä…*Tð2ÒòeO±k—ÒùaŽÈËIHˆrªIäZQHíò¼ùÍkFÑ¢âTÉp(;DŠ€À»AÎxç…ËïqâW=èïe,Fìc­0–¬ƒ’¥å”ûûJ—T£Þ%%-­ížh”ÔH4úåÞAÊ\²VÿUO´ÖÞ"‰û¿Ê¸ÜFü+þß>#öþŠ_„€ɰϟ®+÷ùÝÚj~jG>׎ŸN›§zâ9»ãðßÔXó[%wmÜžaÆÚ? Ͻ½ó¦dJŸùu«ùÑ™GËà©“õ[Ö Ë§¤£Ê ûG¡÷”¿Áçƒni&Æå7O¶ƒâí§ù/„ ±Üú€âs{ sSmúg=–ìý·åJñF˜Ô§ì5Zw‹`AÖC]s`LƒŽ;#o:SvFŠ˜èàØ/*BKÞžçzȤÎV!27«‰Ù5š·0ÂD¨!Ò%a;U€@CkÍÞôf»„˜[½7ó8^üd¿ yo^Ã[¬è{“Þ'q¦°£Â.Äì‡åŒÍ± «¨ãNqíÖ |h:ïÈ«4ü`ÉVõÊ/ñHñSÀöuÈ/ÍéýèqdMñóÂÿPKvºZ<çK¡{¼ü 7IAR-STR912/include/.svn/text-base/91x_ahbapb.h.svn-baseUT LjKLjKux êëµVßoÚH~Äÿ0j_Ú(õw½äi±×°’P{I”'ä˜å°6²×)Ñéþ÷›Y $¤í©7ʃ3;ß73ŸgÇô._0xg¿;œÜGb4–0°¬ß!–~––…Z©T—Ež¥¼í\\‚›­ÉZÁÞ®áÏþv–,’ÍCwIA¬ÖË¢„C»ßv€m6«,MtVä U²¦`'Ñ iËJƒ¨ªZÍ)ØúÔëî™â®áV•!ú]ËT•–ÙÆìÙå2«`AÅ¥E®“,¯ Y­@/,ê<¥à 6e¡ ý´QŠõá!ñ½hlÈbvËA ŸwÅf‘ žzòŠF\ØQÈ=nË( „CÍái)öJ%%Ñü ÁÁKÆ"& ƒ,Ù|^š1xMW³uT>Ït{ŽìnÀsû™jd Ó‚˜ÂÑ@¼§æævà³³Eà{Ü!ì[ƒx¾€.ƒ>80àVwÀ ¤åÝÃô~OXÜ«0)ÒôBöç•skŽ5´z,¬`¶kòB.`jÙI‚øCâJ€"¨v¾ á‹¶©¡å9ÍZŒBCËaнÛV‹"h³.VÍm[/‚µ¸Ç0,76IѶ!¹_ÉßÑÍã£ã£&Ò‰Ê$è|™†BÆö僕Åie:ôÃkaþ¤&Y"'0Ó ÁÃ9î£1©“ìMvN<æ¯JðŠì5œP¢y´hÌNV™Øã"/4­z¬|o&B!¥.ªXý}|Tµ?Ñ4óD^mí4?‡yUÄ»Öë‡c”Êbß–æQrEŒÿ1ž)-0¾¤«ç:p|–:Êô·kÙôÀš5˜®^ÖÚ8¾M¦ïZ­V«ý®yNã3OÔ´*¨˜9U†ËHdz$ŸÂc„šË¡\×e¡î©åÀ-¤ü€¨™Ê¦`b¶˜;„wêú‚÷ÎÞ8Ð1Ôü?¾3õӲȢbòSø¥ŸgA ì•é – o$$S•È+*‘e•ibc^ˆÛÍf-îk…]L&ðR³®»+ÜRM)ï+À77]b ^žs9¿§šTx#DUÆr/õRÊ H,DYD'G¸±š(ìzºea ú¥•9ú‰zPøúi{ÅÕ¨ÁX±1å³»~Ïõ›±‰=þE^5H÷OpòŒýÏÐ>Ù¼¿]uÔïoÖ¶£Îè3‘µüAÈÉÐÅ&[s\Î@i<³Q¡·…ÖXÊ/•ÌtÕò醲´ë/Ö£uqavé¬].,ëâùÉGø÷Ýè9êöëéA¡F}ÈUb´8’ÆÏ)=Ÿ]íØõÙt:ßì„f îÔ¦7‡ÙóäÔ]‰ŠÒPÓç§'—æÇ>!a›1òŸÞë!Û“zÕenMɯ*×[ËKùv*£‚6[\ìG¯Ÿ¿ËŵÌl¼îNu±È8|¥ãúŠ„õ(x¹Þòóúqù€­îýPKvºZ<3_ç¿cU"4IAR-STR912/include/.svn/text-base/91x_fmi.h.svn-baseUT LjKLjKux ê뵚]s£8†¯wªæ?œš¹I²ÙÄà¯lïìmã˜<@âê­­¢ˆ-'TÛàœtϯß#ñ)ÜôÇÒs‘ ½^ I™Û+Á“K˜X«¶q?wAíõFà¸Ë`GdO6i…Á&‘ô矮`ì ˜þ@ù¼ƒ*Ÿ¼Ý!¸y¡5´SúÅPÞÁr2íxÜ? ¢\âh婟dÆI F’œÈ–Vî o•»[æì<’8¡ å¦Ç$ÙÄÁ‘AJºû$°£Î6Q˜úA˜€¿ßCúB`w 7´rÇ8J£ôó‘`Uô‡…”'|fK’h—¾ù1}ðûñç¬ýƒÚþ’?>£oþ‰þ»¥Ót„Ò§y%a 1Ùœ03_ áfb9údÔ_ƒ]¸%;ð<ºØàõ0q~ÝfÍp/Yûÿþakÿ–-ë“~pÁ‰ÉÁ?qÉòSð·Û˜$ ô>õ®aK6Ñá@;ÍV h¿Þ‚ðW’-›9ñ{Dæm›ZóÞ£UO)ÇÄ qßâò×%ìçŸbL2"üBÃ-Þ¼ü’·¥:FqбÉÜïm«NÄ%>Iý0ývj­+¶ÎÓñLª$£9ÖŒ^ÕìËà½×Ìß½ûP\\\]¼žúêÕeïÓpÐÃGé]Âo¿z‰¥y =Ö„ˆ¤HH½‰˜¤fÉ>!´„Ù­·òuŽeí|½cYß+Çá6ØÕbŸà~#Š‰éž“YÆ9•?ð÷fw”›ÍX×=G©PJG”"A©JíˆR%¨þߦßÓ—`•£AGÔ@‚V¨aGÔP‚U¨QGÔH‚W¨qGÔX’UÊÙ¬R8˜r>«”zV±\è€g•RÏ*6ˆPâ¬Rœ~ 5ê†ê·(Îöþ³dZÎڽ笜|«L›QóQìd¸îµ Ûwƒ“úé)aD‘]†[9uÜ Â!ç9öàœ’#. Îà Â)=ŽÃ §×qj §Ç>®ÀbØ9\­³ƒ6NØÕ3Õ'N‰»«áfX"5ÇwLü-¼ùA øeM‰däm]›zkÍp=ÇÕ\Ý«'Þ¦…µ0‰÷&¬Hµ‚¹oQÛY'X15ØKLZÞ> oq€~¿‡µm`µæŠeF}6Ë›ü‰£z Æ[¨zL釪×zH9ÛÇèİÞBº7Úϧ8;d ݯÖSO7Ùi§š"eC”·b¼)åé¡ÿ´'˜SÎÔp*— Î4Hˆó»bxö©ÿLpËœf+‡Ðóâ±å¹ÑÖY9kZ°Î¸§Ä¦û»/…ýØÅäÏ 7Ÿ!öÃg"Y6mýoa­Ë (ìÂÎÕ·(þHO V<ù)pnÜÏëÀA8ž_8âs…¤@èü P{Šðè6ÁrþW¾#§mXîŠâ·ÅˆÍ™L$ÖöÖxx÷ŠeŠzÎ3¼ ?µ¥P©„ƒ†Pøa-…j%¼k…ŸÑRد„“†P¸+…ƒR¨4û(Ü|•Âa%löQ¸Õ*…£JØì£pcU Ç•°ÙÇqçTárâÅßïZy!ÉœÞ\[ÌÎd%²'œ”D§C •oPr›5”„Äy'çIéèI)I#™'isžÄùÌyR;zRK’&ó$"œ'ñTá<õ;zê—$]æI:û8OâYÈytô4(IÒ|’NlΓx‚sž†= K’4Ÿ¤kçI¼vpžF=J’4Ÿ¤ËçI¼,qžÆ=K’4ŸÆüW½¸›XúÉÇæâU\OxKÍùŠk…ÜmqóA¯/(æ ·œRm)©R唃–R•*ûœò®¥ìK•ƒº²~žÊ•©rXWªmåPªÕ•ƒ¶r$UŽëÊ»¶r\)Z…Ñ|÷]Ó*ÒU¸UJÙˆ*܈JÙˆ*ÜˆÞ ”ýzOé(8蔉ãÖN›"éßO<ëÁõtÛ¶ìbÆÔÁ< ØìñÓj£h@+Ž Í`É2Úžpƒ}ŒƒWzÒyõã€î¸¿å²·yq|ð7x ûÖKãq•›«þ¶ø½ÄÒãw#óH¾FÁ6K?üÈ.ˆ'ìhxqºË^GQJ‹œà/r ùK3 ù÷ÿ=³ó;õUޤe½ë² FËË.ÿU3VøÁ;ÂãÉ|'\zaA*ÈšÉëïóêxú¼¸+Šñx§›Uíž{lz6ã°û–ìŠ]d³—Ùïíz´U-úW‡ùœã§dŸ’‹¢Z“ÜÈÔOý¶¿E•ô®ø‚Í×-9¾-E,n‚6›uri_«H¯‡Š›",¼'iõ¦PÐ7×Њ@a 5Ü>úû¹ ýlÔâG”¯V†%¿ËðgÂn“ät _¬6Ù?¦øÒV÷–“ö™×0Ëg§¿gæ³4'oìqÔ"¤׫ÊY¬²xÓÍ¢xá'©u$ÙNÛ~ñGº¨Öþ Z®§íçkþÿÝœÒ?:ÏŒ…^þy÷PKvºZ<†YÔqàæ¡4IAR-STR912/include/.svn/text-base/91x_map.h.svn-baseUT LjKLjKux êëí[oÛH²€Ÿ'@þCc÷a“L2©›=y¢HÊ&"JZ’vC‘i[YòÑ%—=È?}á¥úÊ–'qòpˆÅÎ ÍúX]¬®îªnR/Ÿ)ôÄŠüÉô]œfÈmµz(ÍâÅ|³Î—ù|·Y¯ó-R‰>~ô Ëg·9ªŽ?ѱóåâvv÷Ç ¹ÂÛïnÖ?QìÈ»»[.æ³Ýb½BY>»%³]Ž™›íEÛí>¿$·º/£—T³?Ñy¾Ù çÈ·óÍâŽB*ú4ǧnòÍl¹E›üz±Ýa!t™_-V zålu‰nóÛõæ+ÂzÞ-V×`Øw>ˆz§øÞø.’ÇÍp]ÒŒ>× ·ü[Gn¢SüM×ü qv¢i¦á8Céd˜½ñ’½9üS¥h8IÐÉYxc?D“ñèò¢8E^†e&çQO–f“8LRô&ÊN ÓŸÐ?Dc,{Y4£$<ñzß0Jˆxpæg)¾M’ Lè­ðßb”MPê‡(‹âðä¥Ô©0 =eω¯F~2 G¡Ÿ%“qä§(=õF#4ždh¢Óp Qä F!Ezãw(ˆ|õs|/öo„ˆÿäOÆiøï3ÜòÈ¡À‹½“5‚ÜmŠ/$º€?bÍN¢”4a˜Lbj8LȰ8å Qz†VÙÐ/Y“ÐY¢Ø B4x¬…%C43á8ó¢qà%!6þ>7ÆJsR%yK~~ùøÑãG/IŸÃ)G»5ºÛäŸòÕw²ùûå§-Vóåžzè ‹æ?W+Ü7Ñʼn±7½ÀNóÏKvîd}mø¡ò*üŸ(ÿ‚{ù _’¯.WëIÎVJGD±Ë|k¥—ù`J3úÑo¾^]ýqóñôîë]NO ¾÷£ÀmÒÑĽín³ŸïöÜvýÁˆß[G´òƒaÙ<Æ$f%NÀöøÑÿWø´o»h0H“We“°ëõ f«(]ü7GIaUã Â"0a¼^½° BO³wÎ+ “@bM̶9ò./ñ“ÙJT^§!餥ˆ:¹µN~m%Jô×+<Ð/µ’uJBº›íör+ „v½ h±‹þ«Ý ±._Q6Û\ç;¹a„ðøËE†Ý‡¢W&7CÈ[Í–ëk¬‚Åõb7[’Æ~Ê7xXÖzœÑÍœg¾fë•mÆ‚œoϹ«3[­rªáÕâz¿as#®éäÖ ÓŒ.®ñôe7Øv7ë奠šj× ­?8¨š–ðM[ßÞÍ6¤ól÷ËÖÛKP·I ‚ð qV‹_á§XZ­¥õ ȱ9*P‚\;«APÛÔVŽ!¨cê(²I];RWIr ©gGê)I.$õíH}% x÷4I!iŠÝz>[bÊùl¹—"»D"îý yo{w:@Þt€Iœ„ü€LÇceüiâ„n³¸¼ÎMá— ¹*YM´d§^G±:ŪBt¸Ùàg±á56¶Ù^e%ÂÛä34ÎwŸ×›xΆAW³9x2÷ˆÕÉ«ß~û̇+†nIò·ÉÿgŸo¥8d Õ±Š϶V7DêØœn†Ÿå8a¸rìj9n#ÄiO©·ù°ØáèG ¦=¥>ãê9 JÇ¾Š£bMAš5 ¸;á^æáäQ¶´šc5k š'[\̓!{ Õo`­¹ZÖ :Î{·ÿ s¾7¾ˆ·×“ÿáz¯qVDŸ[ÓdÒÐÉplƒ hšTºY˜Ú°¨4_ïI,±èª ‹ ²‚1XìP¶¸]¬®ÕººW Ë6û»Š.qʼ¸ZðêºV¦¥&™"h™4kLËæ$Sâlyµ•¾Òßþ‹rd—@[ößïÝ¿^ ]ç½Óç²·‰S¶a3[mo[z÷2‚Ì1GqU”¤ BŒÓzï´Bã Ôgœfs M¯3MrÆ+R4]MžàðúDSGò”))e`§ã3Mp¢©«¥¸fJ‡×'>/õ)c0ž#-.-)§ )®Hñ¥yˆrzU²Iô^ ô+ÆÝVÑçlµØéò;ëÉ–?zí³*Eõ—ëùÇ{$ËÓÑÈŸŒ‡%ÿ§iҥŤïÒ4ó²32‡%Ñ‘5Ø.ó†Ú¼Iâñ ›ËmhŠÏVøéÜ’bž‰0QæÇéë Sû›fN¤ÓÆ?I&umÌ+™µO°…`Ümé1ÎGƒIêl“ÇàÄ5ß©ÕPb+ŒcÄÄ'œ6ÑåÏðÖ—Å4ÏdãØcfú•>|£ÂÛý’9²î™‰ç>‡ë >g›º÷«º•ð´xŒcqL×ãª0ªÒáÉ4šLβ÷G½b\rMö»»}íCšª.PŽHEã‚Ra¢•EÄdï¦á{§…I%†çFŠˆ ã¨î«ƒÏ ”.8®U³4óæõÙ4 G5æÍìcþâì® £ª`q·ž½úycOДg×è–t}lc9oêŸÙYxÔ b¯,_|fücVšøµî:]ï7s]µ˜5S…t€'W‹sceE¶"…ôh±šÌ/ñ?ɲ.éŠy/m}Ð…*i2ÜjG[NºaEiý8Ë~ÅõÂcC_Ð|¶Brô¼õÜyî>o?ï<ï>ï!ì£ý?P†ÃVŽHU3_\ßìÊ›niågp–’øZ¨q%„yB]ù›3—(åkÔõðl1_VÍüˆ[Éò ΃hgT Xžãë95Æ_æ3)À•Œˆ¯±ôβuÇ7r”z(í“ÔÉöIfŸ ÊA}ÞÎDкm3ö9N¸š}Xâ¾W–Hmí“øú}º¾Ú}&®>Øoh ª¬Ÿ)8©†“â¡}™›A3 AÎ÷±&¥8Njà4(£Íx(¬oXÎçE}Þyû|]ÍÉ–›ÿÚ€êøe9ÜTÁ&‹bRÑhŽ3õÕÈw¸°i…?»£n˜-ê>‘ï ®J>A“bžT®<* mqMC®}3Á9l«O uSõ*££ƒô Ä5C\”Rí×zUõÓoÄÙpP:$+Ûßi>TzRú¢\Är ÿë|©--K­À%*\’Ï.ñtÁbt#NcU¸7›†Xón–<€+|˜ ÈÛnó .A¾œ}•ÙP;ŽigKS¯?œe9…kì7â$„pcíð„m•ï,§YÕÖ¡Øó+’Ózo‹aÃq˜™Û³tïT,gÚd5ß4ÅÞH#9Z6ކ±êUÏ7Þ/w‹9u7æ$G&IñÆP2Š€diwÀÈÚFQÀIò+ÁJO)µjžÊpCö®êç›ç#PU:ycÝÒŒBÒå%ÝzmÔ,g© -Wì6Ì"ãD”LòyÎvÇ*¢6›?ë.°‹ÉIHLn¸¬“ÛR„ ñâžd¥TÛ `I1TAÀ˜&±Û2ö¨=“Ë|TÆÑ‹&“"D¬ý•ª?Ñ©?zýMñÿ“v‚æ v&—ÝÝ-[›!ÕLà`ó63 š|¡ÍÙîf«… ·{ÆÈËkâ)51nb“ ãÀãfFdœÙU[¹qÎcª1àæ¨5ñ÷› ©_k•á!™¯Ò¤„Ðw……‹ÀÄ´ÝAENnDþ†»Õ=º#:ó’ì;tÇ@ŒuÍþ®9 4Iá*0YP"zà“ ©ž¾d{–„§òä3Y2~*wÝ÷Çà~CÍl·üNU)âK£)ì7›À#Ë•/Ø>xý‹B÷ïý ’€ïœ×6˜íñL IÁâÓbkÚꪽ Cî&Ã͌Άð æàûÈ۷7"ŸÛûÊs¶Rüáë.×ð•7³wq3Õ![Œ7Ad8JU“VÐGù'²=NS¢i¸É1–MQù¥qg¡é&0ÀÑúÐ`m{‡ â‡ÆpÛ»¸ÊØnÚmïÒV†|Ûˆo{úZ8‰è‡lÇúþ®|[àþ#ž>"?Kè.†îfœ(®íazgŠdµH¶Y\_k"%™Ö"†Š'RÖ*ެ0õ&²Þm_Ù}7¿ Ö×6; ›'Ä6Ë0ºN9.õ; “Þsð‚Ö„/¦¹þ8{›  c¿#[ ãXÌt¾h£^s€×ùW£‹ÁñûOp"øÏ÷=È×»tG̾A³oСõJ³äØù¢ Íø1ö*¿¥å.È'ðÜâ¤uqFîø¤õ¥{Ô¢ÇSš&Ÿ^Ò/[°H´ÐÙj°¿ºÊ7xxHïȪ)AªƒØ1{vj¤Sëè둎½ŽN­£h¡#Ù¥xV?9Œìw’ìtmT‹îtä=‘a¡ Yù4€Œ‡š† ‰È°±I¹Ýì¬Ò„˜¹S¶§ø3²°LITúÀV“lµªTjűH±V,´ªMUjÕ‘H’V µÎ#ßÏ Ã†P­4Ÿ¯W—3BÈ…ÍÃWµ9JÜt³¸-`Š>­Òo(9x:ç:xƒÁ†’ƒwDƵ&ª‹õ¶|Ëöëavk´»É‰¶ÿBwàK£ªéãxi¬W?æ§Ü…ŽæB‡^ø`Þ֞$Ž}˜­>ê_!ýñÃÖaо˜ Ó¬rEæˆìŠl±àꊼ¿êRß¶*`\ÅÕS\%ÅQQZzŠ£¤´T”POi=\ïÒ»‰uçúiÞ ­ÍXÑQ<ŠúctªÑ³ø«#£¾QŽÎ€re”ÂYëÒPmÕÓ£d¿¨ŽŒ:Ò£:&TWFyzTׄêÉ(_ê™P}¥èQõwé~…ç®-´Ýx±e冟ѣ𠛤ëu<*Íç¨Â¾!þ)OÉE±"¢¹*¹T PÖ¶à(ŠøÞÑ\%@1Ìt5€¶ ÛZ @O —*ŽèëŽàJ€#ÀUÚàXh+ àé% +:@W èI_è)} è}%àH„:À‘p,†:Àñ2s(sÌ¡ìYˆ×2Îpd„ ðÈCd”+£øo\-‹ºDÅœR|pãPüæ<•V¤¢-™ŽŒ¢H®ÃMW’?@$¢äÀÓS£\#*M§Š‘¤¯0;¾°á ¦SŘr¤DEfùâ™ì Ç2 _ØàWäKµ2Ê“QøÂ©’ʨŒÂ6 "×W˜Ý—QäÂF”Âì¥øx“õî˃0›>óÊ!ô\›xàQ²âwªσEuöA`˜Û‹p/‰ÉÇOøÈ$Y(”°J ¨ˆ?%ÄÒ /ñ úÎï½lûí[Wkå:T]~*ÐBªF€–kζBIâÓþhÛÊVbfz` ‘ Ò/j!ºŠ¢°]¡!s݇‹€Ã_×JC•h™Ÿúù}%Ö®ÕØñ“†Òµ#éJ(’†Í­×ü£æààQsðÿ£¦í¨98tÔ|@ÛJ㦵ßþÔQóA-$œ¿Jß6šl¡á¯i!ÓˆÉ,Tÿ4`~ßôшvÂyù}Òæž÷ãL;_µ²Æ,ø¤ê¿«ßž*ÅfqÇ î6‹»ñv³xÛ ÞiïÄ»Íâ]ƒx¯Y¼gï7‹÷Kñ‡ó÷òû[.^X¸üCS²¾^Z­Š®¿ kõOe!Ç $yw)ä„$Ÿ.…Ú¡öÃ?Mºl ~Ð÷_ìQΪµŸô4É:¦"ð×Sáß¹åN`hº€)ÏÎDÉj“UíãQˆJ>A-­D%Ï Ë•V¢R¤c •œ¬J´^Ïd;Y©µlyÒJVj.[™´’U¶·c'+…u¶i%+Åt¶i%+t¶ i%ÛWÉÙÉ©díd>î°EÆ{žwȲ£:î8Ðjåê$°7Ye´,#d,ÝR)K·dKˆªGÌ Ö+‚¬ºûK²R÷g‹„V²R÷§«‚ÊhÇ›©\<äE5áY•4&«~§\„Õ”ÀÊ!ʵ@ IÖô,$Ë¥? I—ðšZ­ôñ¢66ªVö¶Ó×G4Å=þ2'/ã°/}Ôé+ cúáåûkÛÅÄzé/g'¶Æ-ë¶Š ÅAÁZOžð? Šž=…_.ÚÊ;¥¼­ËÐdÁæBq&/:À:]®õ)'χèBrôƒu¡¯ˆº€ïܪå«L‡›¶z JˆVÂG¿‰zp©á`íî¼ê—¡ÚñAŒ[×8D»á}LJu©^Þùi;xÄ´?'YriÇ|üÐz4Ûl.˜ ¼[ŽÍU–|„ZŽ$~ïKU塎Ó,&Å)¶›¼IL Oly“˜4²ã‚ü 2–«ë;báÆBPjÛ)Þ,(µíoT¶±c!(îlGx³ 4ž³àÍ‚ÒÎv€7 öU‚G‚G*Ác ÁãRðgDç—‰ ò>ol.ð¹6l­²xÃWed)ð ’Xª,Üp©mOžÄðV±t'y›6–Ÿ-ÁRuÁF¬ÄXJýYÞ‚­”ú³¼áš¥þÔ1JY¦ê/Íb’šòFj,~x‹•å¾î"K‘* HJé!ÈÛ£É0S‚‚ 3EYF¨·HRàËÝXª*ɵ–f1y:,Ï­&Œ†Y唎í-c_è!å ë­eöEP!U‹¢ððøQø6CBY¡<ž½‚«ù¥$Rñžy¥`«Ø@ Žgø<¯Š¿U_ÃÄÔ¯€UWJÔºd Å;ÖxG‹wôx×ïÞGû¶5¾}|ÇßÑâ;z|×ßÕâ»z|ÏßÓâ{z|ßß×âû¾ª0¶”“=¨ºŒ×e 5Õ±£:jªèåUuÁŽêª©®†Ú¶£¶ÕÔ¶@Ź/ãÁ”Æ$|ž'Ñ,œcœ•A`R !ä žBSa ã4b #ZçvŒS>HÁçyIyÉô&WB®à)4”0N#Æ‘0b‹H&؈q%Œè@$3lÄ´%Œè14Qd.ƒz ª_^æIN3É‘I¢…h*ÙLre’h$š[6“Ú2©-÷4Ýlfud–84Ðü³™Ô•Iâ(@ÒfRO&õ”íë7³ú2KŒî4im&ɤ#鸙t,“ŽÎð&~ƒÏó’6Š6£ÀDRðyBA5†ä‘¼*q¡I¬T=‹Eb_Ðd1¸¤ 0è%<†¥™2Éi&92Iì³4]l&¹2ÉåA$,l DÎÆø CÓR ã4b #6 ç—ŒÓNHÁçyIZ…Ì#(8LB!Ÿ2˜@|ä8÷,†A’B>/ ƒÁ‰À ™(ƒÀTBÈ<…&¸ÆiÄ8FšVá$³˜ûˆl)Ï¿—ɹֳò¼0C"¯ŽwdgÅ䜾¸8v¾à[M/Nõ[ÀÑÿ)ò'ÓwItrš!·Õê¡4‹óÍš~œ˜ü:ü|Ë–Âq€&C4ŒFaQŒzüèÿPKvºZŽŸGiówløœ!e–s y^°P€‡¿_Ž®/¥c7°dY.,FCiÀò ‹ö’¤a÷¶QáX&Ü’ü8¾e°)’@€sØg)OùÓž!ýJA¨|LòtÃ?ûƒ8ú”ùÙÓ‚ò#–ŸF9O³§ñ㾺qÿщûªÖ½?ÎɨÒÊ×ÿà±7%0wˆK,\{ì­4‡ÀjJõ)Pƶ“54K'`[³{Ð¨é‚æ¡½¤µ& /\Ï6‰ã ºõ¦XŽRA-475Ú8d¢9RŠ RG˜ Ýs¶cG.…:<\mIÀ£&¹%ˆ "»˜yoEmSݱɌèžc[TwÁj³X¶w¦dfÀŒjw3")5ë ê ú­à¢Vù‚‹¢›–Kþ^`äT›¡™Ú„¸e¸Ú\ ÐA ÏʰêŠÆŽm _!’x"wöÜ&­É¡f—eH°p ˜šAàîþ-a!”e²Jßù´µˆ9“D¥ÌB§„Z:ÙÍäϯèËó³KqD7Q€§xäØ#K8d,(°*DI²>{É#6IÈ6°^‹.cêë)ÊÂr¶L®MˆGüEô/X»äƒW²Ãùû‹í«j%òeŸfVÙR~t%Á"¢ÌyVüüìëù@1ú€­hmïY†m3y0ÓݶžlS¥ˆ¼¯ªkÑÓÖó »§³¬-§YÀÂùÊt96ã#¦žM©AtY=Ýíc¶Ãe±Y¶dDz–áœeQ/v$Ö·~’°¸c[Ä9[I–G’UG’Æ~ñ§ÅL)ª¤K%v©Ä®”ØÕô8ÆJÕV̽h×Ù,‡íÄÝ¥§EÂå| šDÜÃrÁsv+б.–;ø †½²à/¾…ÅðÇ/Bð $ ÖØå"¿íW1^œ9÷þß+Yž—ê\öëaMÿS,F†á—áp8ziDy •È+ág ;õ³PÜÊÍ‘5®bu«û[…ì³b9뱟ç8Ä%Lí)â>²,Õ™Ø>ÃØ}¹‚V{W nü#“›uʽh¥É«ä”•h'Ìݦ¼‰XÅ)z*J§H‹¼Âžæ”‡„L8ÑšK“áscœÙpŸ: gN”·ðSÿfЬ# Þõ¢¨ÎzÑ÷}¤„-û°+%lÕ‡½SÂÄXÒ½Þ©9 íM9•°æ<<·ƒÔ[ëæ|¥¤*uKe”¥nqð¹«û8×ëx®û:Íð*ÝhØ×Ù^mwu¤ÓçµÝûc9¬t×Ã^„ã™69c­UGYkÕqJíÉH¥öd¬R{2ÚrÝSñV^µ#îk‰[ÙŽÄlwý_}?<»´ß[?Âø˜Fa}Õ ºWÞ›ZîÊIéõím0‰¯mq ü>*}ÆU(~,'#°Øgù£ƒãYŒ·‚]ð}Ás•IÞ7¡¶ÓMô0¨î~Šß(/YÊe¼™Å8#4/}œ¡A«‘Ô 3O© Ëd©‚¬:URÝ»=6ásuÛã[XM“Ý´TÂa=( zƒSÖ\«/ÝăAÌü¬©Ÿj‰I“R…¢Lä Åò”b¥P”©ò÷¼ÀTõKX:f'ÌK"“³½ásßËü$ß”…ÓÌüBÑÉouE`eÅ©Vûqtœ*”Òáî”Y…Ö6ØqìwqA½½¢}åAÀúêu˜ê×Ã;b¡Þœ%!zu‡}á4LŒ†åø­Þ”ªÂ»lÁ‚{ØŸ¨ :›è–ÇÏ÷ü'G,Cü0¦3R}sŸŸýPKvºZ<™Á”˜ªË:L‡ÛJ`ºxúDñX+*4=®ÍÕÀG!p=M÷˜*ì³!pÁWuJ›~ ŠÏf!ü¹\Ñä6UÏÕ-] <×1Uü©bYà¸<è0Õ- ,Sy°t†Tœ ™J_¡.þ‰ˆØ¥ºŽ¯ÿ6GÏMÅM±•‰Î m3$[ ZÜmÏôÉÃsm8$8œñ ðç´6†Š£¸K0÷u°M‡‡háÎØ¡(¦£kè§cð¶9h…“Ùä?£G——#Z¤ë8 ÌpÑE¯QZB-+œ—¯Äé2©Ø ýñœ‡˜ßÆët­a± BƒY^à¤ùvÅ•ô™v“4¬p™Ÿ¥à íœoHÑ&Ü^¿¼Ùo-–keúõOÛ,/±”ñbóê¡(U$3K(ʼZ–Ö¥Ú!E ÞyyñW¯š]^TÒ;b,ìlÝw;‰o¢6Ø#®†ý‡ôíx®*1fÑ@‘çVå¶*AÍ6[ªŸÀ©‰ÓgÀÒû¾Fƒ<ùOþžšdË?~VåKîwë/ëÁ*O= ÌF¾:鿺çàÚò—óôÕsÅ=õܵiîCô‘Ú…þÎì…éÌæAÃlyfÊœ·,Ù'TN«8Æ¢pÀ3Ue& í;ÊcÃ8ñ'ŸÁ“yrwËvÕÅ,Çý;L¢¼“_Îk{`.˽Ä`>fURD ‹L²î9}ƒNh :ìM¢)àÉ_È“E¼(³6ó¯Ï[U9MbraÈÖÂìÉ壱/}._˜ÃÈcmè oÝÍÑ2ò—ñä.O>Á“…<£J’Úéû&¿µ[{¸ÖAA~ÿæsë]€• w“{*ƒM•‹ÒjƒEí/ÒKr~ xÁÕî›;k¿¨–®x Oͪ´ŒrwåìZÜïl<=e˜–ÿ¾h÷ ¶íâζºV³ˆ?Ù&÷ôöwüéf<ב˜°j ŒLž.ÎUѱ©‚û¼µ8o<¾©yî< ˜êÚ3:`ÔríT8Å“Þíqž|&O’kžzʾïh1µÓ/|ý€OêÄo0röÍ<¹±ÏÁ£îÜ¢ÃØ¹ù Ê×KònšüòÜ¢D0Gw%õ(¯ŽßÏbžüÅZú#V‘}MSs2Ý%oËýnË}êäÿ'êÞçŠÃúö,#Æíx_EW´u–©»í©[¾„i%…¨ø±·Êø`~ŒáÕot°é7¢‡uYîb8JnP{}W´W4[Z¡Ø…i“z«jÌÊLïèØ %Îâr!Ìí¤ÖÔ ÚT!Ml™Üqü¨eò–u`?·LÞ·¬KÝa/"ðü«™>û(ÒWK5q½á Ùø4ü#{Üëbù`Í -.ÚQë&–òŠ¿jãæ«7¨3̧û±ä¶¸Á@"Ì­a7MûóðM Ü~rù=Ã}r#É> Þ4ƒzºì¦ÝÐL9ÓM¹]÷GÜÐz2’ðù°H–2i×Ýé¼äÐHq[ÈÉ|0гp$Ü€ÁØ×îÈ{Ë~(þGÝi 'ã^»u°ñ TáòØæñ+½¯~ ó˜ÖË¿¹&eÝ+Ç&\æÙW½©ª‰³Ú¸Ý ï¯%¶6~5’åã5‹Wí½î{vöã—;x‹_>]íßùX3kðÙk­î; -SzB|\+x.»¾'ª›Õ•7IÖš5_{´ö½†š¥ëøY„¬nû’4¾n›DeÛü&U$v¹¹~£xmÛyÂì w¾¨|Dtu4™Þ ô:xþ4\$1[³Oâ(\¤Ð$z~ö+XášÁ,Ø0Ø=à·îË< ~ùDK´Œ?Å ¨Ï˜êhÛí:\<Œ#ðY°¡ÅFÀB“”ƒ¦[ÒâÎû«îðJ¨ö>±$%‰îeG°t‘„[ÙÑý§0…©¶ˆ#„Q Áz ü‰Á*‹´8…mó˜¿n.Eýp’xϽæúÆ+þ$ ÖáC$¯—¸ü?¤À8Lyœ¼~ ¿ñà½ü¦tð^1ׯ¥›Ï2Øß ±?6áÎ5=sæƒçXþgÍ5áóØÖÇ`{`9.ÜÞÛ†6ÓMpf“/ ÙS4eœO¶aÏnA¿÷|gjºá>Ûþ=RLØ3Ÿj¾íÌÀ5o5WŒâ†¶KâÆ½î{¸×0]±ÎMÁwÀÓ>™àÛSóRø nˆï~â_{Ûºë˜S÷]gfëxcm2™ãÃÈ„±91`bk£‰)Úì ¶‹«/ˆeÏäÜÕœyæîñä¶6C›j·¦'O€»ÝÑ*Ô…úDÛµ=:‚å:SÒ•€ñÉvŽÞ=mgCmf\É#Á½gÂT3L}Ù[‹$hRKê¶·a5{fx ×D#Ùbl†JÑ´P²lÉïÑWçgçgW¥«0bÀcŒ:öE¶ÈÐ/¿1£Å:ú61 WÑ’­`>§TCÑ9ãèRîRûÛ´Ç#½Õ-ö—<ø'í´ ¶—OÿÎw2_¶qÂ1oÉÌòWwB¢H>–m90AÓ­EÙ†%2mÒÚˆŒAãçgžŸÉ|5'!1ï·ð/è¼tð¹@¦À¥á ºxxå,½ck±EOŽ |­_к­hýã´^Aëµ¢ Ñ®÷º]·¢uõfo¸>´Â©gýo™ö1÷qŸvrðx’-x†%ExnX»ÒT,È/5Ãñsœ,',zäOKã·£§åÑ» ù«»îɱQ-]¬´å•ã YR³Öñ³Žu3‰×åÓxY¡Ã}¬N~ô_Ô³7¯qKk¤ÅÈ6>Z“†°ÙÞj.fûî?‰Ÿåxw40ŸÄH±…ø î¡F.ö )"þöèU#;šäu }‹,U¹Êù{ãl6dœ o{xŸqLv Êö¤ì ¥ì*Û—²7-e‡ªì@Ê+²{K9hY¸î¼»ë¹:/–eݤ¦Á6sü9Æ@îØáñ$ˆÒMÈñÒè–¿ó ¸hY´„x«„šØÃŠõÅðz†B13zùŠ^Øib<ÿ=š†”!]WVŽÏgñ»2Oñ¨\´°è!„‰5ZuÇ<.ŽžÚÜY.›vï N¶÷x¸øªì>”ÂÝÊ•C GØ’Ò5¢bö¯;?©—£eÎɱË¿ÒU!>AŽ2êº ãºÂç,ëSiÑjx7­Â-Ë´v-EzØ 7l%ªºÐh{;â,I²-¯v¥-lî|£u‘™$q²”~~þ|Ä46ìt¤_q£„_+°âVÅ\{” ã «[Ng­aåÒ «3ÌÍ(òlk”Ë ¿¾øá†9¯×Ð|hàŠ6L?ÏEõšõÝ‚ö 6dãnYÃ,Ãs›²º¬‚8ÙŠ¡MŒ¾dèFFžÃªŒÞ.µ±‹Ý„èJ“ØM¥™›jàqPƒã¬#C(ØW`+3’çD@’Û=a¿g,åXçE:yC£ðü„™Z¡+»îxXƒ4eÔ_=^ž­Ô¡ð|K¹øÿò€êź¹¾MÇ9,uÇÉÛB54 u¨ªæ$·ÔÝ‘Š¸¬€”J3Ñn Ž6çñÞuN.ò¸4äj<Àˆ]Ó±×Ë9"…Ÿ¤4¥î^7gäMÖIHCʦd(²5>‰hˆøþ°0¶}LR~…57[þºÛ½S½qQùÅ¢£Z–•­×{Ô rå‚DKN+U½oÔéÉm:^¿I§“§eékÝÊ…ã ·¥%ÇM¢_¸ˆc² ª_¸¨#²ME¥_¸•fY7x®4N;éV 89`ûGqûÆIQfð[ŽS[§0%þXáù¥Þ©mˆªjE0¨ÝS X¹{*`•p(f[ð ¿ß¹ñ íµÚCª±Ð‚Ñ䉃"ÈÛ0"a FB F“WŠˆ ¯ncz≳J  e'†ö©xw¨Ri¼£Ô¹tºJÉ} '¾Õ}' üëà&X$ñø]GÜ¿’|#Pÿ[.ó&ƒÑ/¨?Ëß`åoœ2¿üòQ]whÕÅ~º4!FäoÖeÛãÚKê›e³Vn“`íqz%¤MkÒ&#uwÛsà…ŠÝQ/ ž„“ËU.7š×¥@”̾»ÔÒo÷G')6î )MýMÃ&Ç`°Xn÷ó‰m<“A,>§µ|IuV¼â’+2¹© ½ÄùœUò¢(]¥ã•’&QP ¦©™o tÃ>‡¸¡…jOYÇLŽƒLŠ´SäµÍCÚA¿×ÖÌAQj¬]Wú5#Å6À½MCùz Oåà[É3¬ÕfÃü(|x\k÷•CíÇ  Â#Õïó±V¾:PF WŠr]—¦„¢÷…7Åéw/ï7›mÈE…mH¿Bô6äs…hmH¯BmH·BÔ6D©/-È—û“ rÝ‚\o‘«ä꾪•Ëär«rÑ‚\Ü×+®éoU>×v·,פì%xêáÃÁ>×ÚoÄÁ}´)$óªÔì$7ªµW‰ýݬ®´e€ýÿW¼"TŠÛO›Ÿ„ò…í) çe‚îä÷ôs}1Ùyùp[ƒš‘OÕ\}¸ðŠ•r¨R:v™¶œ7Y6×y"OÒ»‡-ž‹»ns­è.M›÷ÆÃýnñ¥zq·r*™…Hå‘¢žˆçÔ.ÛdiŽlL¬ ®yÉŽ²•$«A0ûÞž·¤^DäY!6r;òV èÐín_$‚”Ö³Šñ]››¿ßÞ¿C{ŒO0¯aü0h.Ûݵx¬‰^ž³Ú‡l¾lŸóïÃÖéÎd–Q}-ýPKvºZ<]Bž"å64IAR-STR912/include/.svn/text-base/91x_i2c.h.svn-baseUT LjKLjKux êëµXMs›H½»Êÿ¡+¹Ä)¯,)ÞÄëœF0HSáà È)Ÿ(ŒF6T€l§6ûß·{@Bȶì,'iúÍ{Ý==='[ø æ\\¹b8ò¡ßí~Ï·â(KåLFE–&q”CÛÔÃ`Ä3 vx'aõœÃ_½Ç îG[B°Eq›fPÎÁÒt`óù,ŽÂ"NðexG`=,$rfy"ÏrBàîŸ'½³åÙ9\Ê,§½NWMy”ÅsE²b÷oã¦äY”&E'9„³·¦‹$"pó,-Òâç\"ýC#ñµ>¢¯AžN‹‡0“0‹¯³0ûÙAôo~HçEšý<§ßw¿OqÙˆ»¿´nç¤WÙvåëðØq¸p¹Çm<Çð¿3—Ã÷‘ÐF <0†c¡3[ãàØæ0ayÀ|œã\ ]ØCÐÆžïXÜõˆî»ðGXÊ lœn1_86¸|È\5Š‚Â¥éúXó=ãêÜURh³ÀwÀc—|añŽ*ADolúÇTÜBsnrÍw[hx#fš`;> 8Œ¸©ƒ)ØÀ䊒ÙW  ÑÇÄ%ìòŠ¢›¶Çÿcä‚™ 3‹ ¹WF€j„B_ˆ@3˰]áQ†ëXä+"‰O¹s ðÆ˜´U™­Ÿ”!ÁØã`1Ãàj-šAÆ2Y¥oë|-6×1 —c’„³Ñ)2+'73ùû+úäðàðà„6é4N$)n:y/“2-°.ï%ÄI4[¨ ýãçûxšLä‚€ nÎ`„ƒ“RdcP© R˜à6‰ÀKÔK>xGBwá¼sû®Râó4+°i•må­Jä;v‘ÄäE¶ˆŠög¬HŠ’Qþ9<À޵øÔ§¹f~óæRN¾–£½ÏjÔyHØd’É<¯ÆÏT †2‘Y8Ó°YnXôþ¥Ÿäš¸¦_›ac·Í‹0)^ºJpµ’M—ž„׳ê é>öºO@õ8_a»ÜP~bIú0““yGE¸%†€†H÷´²In –u†keÌ›|›Ø0Ù0ð+Ön·×†°Ï\!úm¦×Mßbàk•³VÄØ»Z"¶’¨¾ËVýVÓõ^·Bœ¶"øåÚ³VÄPcËXzÝVÄ€»n…è·#˜k:Ë•jG`³¼0JÄÙc]RínëLWˆþÓ¾U§ ±*Ní®¥"ø%ö|\n<§(™x\xvnmÄIèÃf5ï×fA=Á=¸òy€ç—Šyn*¥g¹±VlϾOôûq×ÿSɵkYÌó¹XŽÎOÚ°gj[ÕþãF|©T™³×K••ó¤ÚÖ ½^m÷‚Õµê+ö6­½×¯ªtÕ:ö•nôž§ “ö| sµ€Oˆ•ýa›íS¯ý]`ÿ-ÔLS}÷O…M%0˜0Çx\ ?£ü,3]tÛCz9síÆ×ÔAx€}Ûq7W Ñ֛Ǫ;˜ºš¦ãù+¿6:}cR™¥!·¹ËÌ@[‡öaçzЙsTµg+Ì ™¸2’xÍÀJñR·Õ¨UÝ®·Œ»Nlmàj/×Õ!W;\y“zétšË–»ˆæîñÜÞòÈÛ²ô+Kóà×´åAª5,St-÷)´ôKKSG_úÖkêðR-ZórxFYú¦;xu'^1®ßå_I¨²~ŸÆ“2*Iw[U;ÕW­ÕãÑרr¼²Õ‡Õ€§îååЊé¥Ó´»I›²Qe!œy}=±åƒú±1·¼-Y«ÿû±`Ï|5Ií®¥É4¾©3ÁÇ=˜„ÿFO&“/×qQ½ µ…„o@•UýÖc|s%^âÁÿ4Õád¹ŸwP”°B3é5ÜYäU^‹õH+EõâF=l³&f2Ìhîs³Ž¡Óél¯‡E¸Ãåk²mD©Údû …«Ô0;«ºø¶#y–¥Y-|íVF?và—´Ê~¤^9ߣçñ°Ô^öaùµaûÙç'^Øè»Š!L^}ÁøPKvºZ<¦,Åï(4IAR-STR912/include/.svn/text-base/91x_scu.h.svn-baseUT LjKLjKux êëµYms›Fþž™ü‡v¦“fRa5QÒON⦼]bˆtŽ™ÊBä8ÿ¾·Ç8@Žã¤Œ?à}vŸ}aï¸Eç¯G.xeþ ¦\‡tiÇ kÚ[ˆb7[9Û²uUä»l]˜é˯a‘mxéƒöúï'I¹>œÝ¢†q¨nóº×pM Œý~›­Ó*Ëw³ô•­´bœ³(+ ey`TÖ~?ŸÌÎEdà’%ZLÎ4aÀÊu‘íIËßf%Ü`dû"¿Ï6¬„ê–Ad®`›},Òâ ”ùMõ9-Üvk´.‘môâU^}Ùs–_`Ãn²]Öüà C°³²Ê‹/ðž'®ë˜ø;%q½Á¦Ã¢L$vª`ÿCıM ID¼"_!+›š6Ð~˵ Ï$à{Î5ÔÀˆ¹I-ê-Á\E±ï’0‚+ÛÈiú 7w˜ú„di„BÊÒÍ­•G\ üÐ"¡pÅ1b"ã’@L]rF$ÚD+'~ƒÝMÍÐ'1ãÐ÷¨AdŽžÜ€M jÌ"( ï,rí7ÜW}‡Œ2}/"­xæÔpÀ2\cIê$Ð[À1$0:íF˜Â"ô]Q8ÎssÁ·€hÅ‹ÖÖÐð¬ó:%XE\Ã"0¿îT‹[ÔýbÕ%ôbƒzÄâ …„‰ÿq™ÇƒÂrŠ ÕJžýðþ8ùâå‹s\¥|Õ0¨r¾˜Ø=ÛUP°õ÷å=ƒl·ÞD‡þö” 9Înv|!B’àN×u›æçMíD ï=à&ð$Oð^óÁOèè.ÝŸÝþ$=‘‡}^T|×Zóý¡JwÕó}6µsMçÏ$ÊÅš ç2KÌO@o\qiÚÆfOF`?ja½ö¢ØÊî³2/úl"Mâ"ãZºÔšŽÃS ÏÆá™„Í!¼•Ii'pMŸ |Z§e?’–ݦդô~1®¡c´qlŠ©jµ·àoAßy·×@o3m›ŠÜO€3g2–ßíNGsDe<C:¥£×^5I=¬Yæa‡Xï‡:;”¢ ºEV¾kŸîy ’¿ãaGKŒzq½$ÙÇ6®.Ö/jÖÚvÍO"AôØ.…‹~å:JºhmÇlÄRh ‹q)‚}¿RÜybï‡O¬£T·¬Öcv}‹Œ0'îêïÎÊži‹ Î±Õ¥ÜpHâo„S"Çv VêèMS÷ˆß9AÌ'ÿ|Œ¸¿”ŽjvöéV®'ñl0Nha‰›o†—£(ÃFka¼9öZ …Ú°áP<gײÌƸ·]Ö¤mâIO(ZXï ]s°'mH³¾pÒÛT“c<Š”ê¦²ézÛV’DQ AÃb¡¬«bÓðêxU±a™ÇEr_YKù"èÉé $¹"_Ô×jö|RÓämO.Ž‹K¦ÒÃø]ºoä]ãd€Ì/ä}ãFAêÃ@ãGv­aößô#P¯ÍÁ_sóˆ)Ý…†Û±›õ±Äç4æ§õ~›]R³ëPí6¢F3탉KÜDnÅjïY®¡ä¡V„oÀªÓ>:¹¯ª[ÄÝLU4Xð%¼¸­ßÎ.AãþAãĹ´’0ŠÇÏ5Õ#aè‡ÃS‡ óÏÚéÈ™ Ù}Ž;>ò+O¬wvéÂ1–ƒ3—©ÑôÏDBC ¨ŸÐóÁ19 ¾¸%™Ž1<’U« æ%ê|÷>ˆÏÙ=~q¸O‹,ý¸}Öˆ€ÕéýïÒu‘ר!\û…âù¤ý¿›‘E^DUZÊv¢¨Kf¾»É>½:\èÐ9ËýúÇІ/‹t]åEÙØÌ€Ë¼7P߸ÍMpÂÚ¼Û¼ZÈtÒ-b <öYÜ É}žmÚÉ@U;áuO°Šº=ªnŸRFÕƒSêíKÝÜæë:-ðž”U»{ˆìo$j‡¬dÕ÷ÅÒ¡xnt³e?¢,}žçÆc±‡O?" Ñ7F4ïãùÉF®§"u]ÎðÓØ_ZÜR·ú–AÁÊŸ½Q¾N·LuU3¨” J]/öõQõI‰×Sè0su¾ULä4´é€}<×5q^êkòÁb¨('™º´ê¢ØÓ¸gKãÇ`±M?uv¾%«Ž’–EŠsËÒ¥•æN„{pÁþ½L·ö M{8öÇ£ á×ì¯)£ mWé?lµwø›ýØŒ|hÎv•¢íÙšîªð°ë<Å'5ÙU¬À½ ‡þmÛã8"ᨉŸL0ºvï/uÚTž¾öã¶Ûd7pþºóy³ùD8¼¾åGâYø!yA"?ÙþPKvºZ<à@Arü 4IAR-STR912/include/.svn/text-base/91x_vic.h.svn-baseUT LjKLjKux êëµW]SÛ:}g†ÿ°S^h‡ Ø´|Ý'a+‰fü,%)OŒ›(Å3ÁÎØr Ó¹ÿý®ä$X†ö¶…+x°uvÏîÉ+åèà ö½÷àÅÛ„õÜããSà"̦e!rªÊ"Ϧ¼äº»ózÙBB”ÞKØŽK¸pnWÙôðN[ZÝ%´Ç%„žd¹\dÓTeEB¦÷ÚØO•DβRÀªª–3m|üéÈ9?2™]ÂX–•öpƒ¬¦e¶4$[vq—U0×™M‹\¥Y^AºX€º“0¯ó©6®`YªPK‰¦˜‚šïÅ1fTÅ\}KK ‹ìK™–‡hýÆCÇd•*ÊÇKýŒu»®®û̪ÛÝ`Ÿk⬱éõ?d,† å4À㞘„ÂdÀ¼0½8þˆù$ò(ÄQp„…ˆ@ŸxÌ|õÁq‡4á0ab 9½Ø,B÷GÐ>IÌ,d‰v÷GžàhqâÓÄ„B,'c ‚…ô7» ø(zs3/‰i@=‘Äó8ð ˆbW4ð!`ä* †’D7à³­0Vó¤òâˆÓëVÎH> IŸ6EèhC4Ô¹h/hÊN×%ô’84Â!ƒ@wÃ×>BѶ’È?jJ‚§ŸÂÕMK-ôh8ºb5F‚°ˆúXPBQ$üǹ“Òrš$m%ß~Gíîè¿#ý™Î³\‚*ð³“+™+(å´Æ¹’åÓEmöè_¿0@³îeó|&çp{«[ ~ž·¸möfMkÒDg: ?ô_ ðóÑDoøàtŸ.ïÞug3e&Mxú°,J…½¬é6¯ Œ‰ ˜£tJ–e½TFM¯U‘yÍôûîŽn\·,¹>X?öØõîÎ?ͬP«°˜É¿»YbϬTš«?Ï´Yxälg]NeÕÌmÖhâ÷×)lzìñÈ' œ'$aòÙÂ] 6xòb;8¶‰?Z cƒŸ,еÁS <±Á³'pįC =·ÀÀ/Z"x£Ž NK"QaÁNK"?$]×–F‰ºhK¤Ð{¦}K%âwa§%Óˆ$ÂVØ9µQ[bçÌFm–RÌõ:Kç\XhgíÜönâÃŽ¯ëXh×·¥U0ö;õº-­ÑUÃmi5aÝt[ZÑÏ‚Ùb¹§ÔÊË=ë –Xîyµv¤{aí¹‰×IK«aïúÊ®éÄÙöpl5^©–e¶Ò·´UZfé—Å5´uÛ¶œû¯›oчëäž®y¯eÜæøjJhZàªÈf¦û’å™Ú×ïï± ÷éW®RUWíK…»™Ø¯S3ÉM/}Ù›ûoX7?t٦Ʉw?ë@o­FºÐ Ò`‘üf^,w>y%ÁïéÒ˜jšÿr«OÜM‰^]–xÓ`°£zŠˆÜÝ‘#cA¹<ªS¡ÍBl_pÂç{õ2Ä„ yò3-páD!÷¸#£0N ñÐö<B g†ÜsÁö™Çëvp®ˆPýs5¿((šœ0ˆù_#ì\ظ¶oxÓe;G!ÕB¯i;1µÐB¿‡$º×ñúÚ’¡¸¦%Å|ÛåpveÐB&ÆkX Â@Ú"à.6q„„8`Q„³.r•ä{¬êÎöÖöV‡>Õiš)Ð9~zê^e 5®pmÞ+H³ñ¬ªWé—Ÿ@1?¦Ól¢¦p}MÛ ~¢×¸l>Nš$+“uvA&ø±ÿL‚ÿMö&| DwÉ|ïöÃ"œç…Æ­«Ù\Þš #Òþ#²TC©‹j¬+Ü…(6,š%=F±½õc{  :n6¯kY¤77ªà“õµ6ôXcðȧþ¡J!1¾(š[mwÒR'™þý†ž›IþV_ª9šÂÒì×¼ØE[TR÷m4RáÝÇnwÕ¥åÒJfkQµ™£|“zî6ÑÈáµÉØYʾ}³v×%ÌX›%=CÂ6Kö Io³äÀìo–’ƒÍ’#Cr¸YrlHŽ6KN Éñf‰Õ}‘œ´H,] ^‹š¾VÏд¶ö M aëÀд ¶ M cëÈд@¶Ž M eëÄд`ff«…338³¶elpf-œ™Á™µpfgÖ™œY gfpf-œ™Á™µpfgÖ™œY çžÁ™µpîœ{ Îï´qúù¤Â+í¼Hïé–|Ÿiò}ö['Ì"â²Æ»¯ûâ¤:_÷rÍ~kÄeo ÍMä>O'õësx;ô¼ûÕ˜ë#´¶½:듸žh4+n¿ìàÜMvú‹¦’Y¬‰[ š+ÊÊT³ñ¥È´*Šj®wè^x$îÏ’r­Ê…‹~™Y¿Ô0SIAÂ5‰«ÑžŸÿ'–ç*›à¡|–®×ˆŸ§€ïÕ¸¡Áóq}üʧ÷‡—}[ÚnT©MÄðl`”^”鯒ìÙY‹"¯’4×h¬×xgêÑäKs£«$¯4ÔùÓ’,ƒj¥ ]çÙ(̰Re’é÷°,Ó-–p†è7>&¿—êª(ÆÆFÙ£‘‘ýå@öèéîüeK†»»×ÚõæÇä“…kN %ˆh"o §pë1Ç&`q˜ÆÌ%¡C! ý c¢æ²p N,dP. Ý-“à“´7,Äø€H…Àé”pëÅŒŒ›x7v¤@DÜ¥ÜæÂ»d‚ÜP, göbF$±/OÍûf¨OÉ£9„G|ÂHÂú.øŒ\ùÔR’p.ãˆ>Å\eHñʉBAÄ(\)Ìv@S‹!püF7gÂH˜ð(°C‰á–o"Æ®í›HB·ßH‚XPˆKájö·]&¢áh7ËÐfÂBê¢ N±IøC_ˆE™vÚ";ùõIÿ¨wÔ;Nïò¥ºƒùüi7Ì=ô¢+ÍUË{Ô;­Ÿù}ó×:õÅù·çÀ:×é}ŽãÜןFÝ@K©z^t«ä`{Õ—ß‹|%3€nå~%3[¹_ÉŒÀvîm‘áÅÜnÀ¶-ü%rWǶ­ü%rWÈö…ô=´Ýƒm[{¹o¶-¾Üwa»SÿTy½†ß0!>ÎÆwœ‚ä14ß5¾GøYYWŒÙV²‰1†i|0É’{Q%U­qÚecuq¸LØ aYhhmóó#Q/Ìw)É ‰êâ œã|7uÄŽC…°Öý´,‹òYÇ*_¦wÐ?9˜hF¬ß1{ÿòq§¡kÖÉ„ùt7¶PKvºZ<=)K4“:4IAR-STR912/include/.svn/text-base/91x_can.h.svn-baseUT LjKLjKux êëµX[oÛ6~^€ü‡ƒí%-ÒÄöÒ5kúBKtLD—”¤sÁ0ŠM'êdÉ“ä4Űÿ¾CJrlIv²›ž(ò;·‡‡G:~ÛòÀõ,ÿò–³ó¡„^§ó醓4Q‘šäi‡“ ÚD÷÷Þ ŒxÁ\Áêù?wŸÆ“ >zв̒֟àZ6Å" 'A&1HÌ5Ør…:Ó,–eK5ÕàÎûãîé±ñì#\©4ÓÝ£ŽPÙ$ FÉJ»|3˜iÏ&IœaœAE?(˜-ã‰g°H“<É¿-BÑ?\ÔúZ‹xp·Ì Kfù× U…wi~;B‰ÿøÑ> Ã,OÒoõcïõtì6bïUk'M^ºåÚ6ÎþåÂ%§‚z„?ׄS¸2kLÀÀçp>b6ñ, ¾çÜa®"QÆ¿b6óÎÁ é»” ­îšÉ!æ¤Y`Š»D2ßNÏ 7³hq-n,)>·)7¦pÍéƒ W$sé‘IC4ˆ ÄÈ‘‡:Á™Å}êPKrßc–1$Žž/¡OaHFú5*‰w 6ãˆ>Ôº˜W¼ QtÓôó#gÄ›¸äœŠ"´v©Qè‹V`9EØœ €û®öU+D%Rsç@Œ´‡Ä³‹`$(¸Ä¦Ð¿}fKKèÅ‚¬Â·g¾´Z¨³0V'xðÔ£ŠsHÕd‰yù¨ Œ'ÑÒdè»×ÌZצª¨¦ƒŽñÈÌçx–«ß—»±8ê‰Û BNQ]«67È~Û®ÊåãkÎí¸Õ0—ˆ‹¬q Fx¿¾ÍSˆ0}“rßÙÅ­9œyòÒ³·s«aò†Ò£×6‘°å°ººDHBj)X?¬%¬_ƒu7¸5œö¶²êö®¹Éj±A 6>°“ú>’´(ìú6ßn’h]âüŠ8;Mjئc+“uئcëÕ=sU–÷êÅRïb\íÍ:,‚#äNß\SOŸsbÍ·:l´™³§n+LÞl”qÜïÓ6oÀNZa.vž°^»Q²ë°nŒúãtjvÁìÃuð›z·\À<ÁV¬å¶¿&tt9ö½1½‘‡ÍY|«®ìU_4/wuÕmo‰°ëaSÝàœ=¿ž•Í’MVà ~9ýUwE€_±óì¾jª bvÑݵ„ ¤=föÊwŒ_×úŒ5Q8ó¬hòÖytˆ¥žïºŸ>u»oàtß´À ýæ|úÔû¹ÂmönÏß¼ÿ°uƒÂÉÇ$œBÕ(ÂA­e„·Õ„0¬¿9[“°U!£'6 ¬^ü[ú„ÊËæõ@ïcÙKÖ!Žï "ÏÔ}÷ªa¯f_¾ƒ»t¡…iš&iÙà”:Fñ2SS7»÷ï¾M˜ÉÝ—-hùÔ@B“x[¤øn©jì$_«á0¼8„»ËX†!FÊOá,q‚l“'?Q8EnH•Fª=¨;ÂU¤‚L•úb¬ñ´‰<,Ì[XXAŒöÚíL~õµI›€ÒÂW麜ÆS&Ÿ¶ÆÕ²p²îï+ô™š£-b+žiŒ‰n ],mXD̯Ý&Jgt…2ã:ÊQÁ£Z¡'Æ,¯L5–Ë]ÄDlÝÇ:ŽoÁUŸˆ,+×5ÓÕajƒÉ4ˆ3,he7¨¦[‘L³.ù%îÉ.•˜¬j’_é®a°jÙ`™[û؇ꋹùüßœïjl“Ë?PKvºZ®a¦é ®×aà{YGàrï™”u/ãÈ™¤išó)÷/{Ê·žðìîy’B9ë Oý$X É–ä™G™D)xaÙŠÃ2|RNaÄYœ½­9ª¢($¾Î¡ê¤ñ2{õað#ñ’·3ÔþÃìO‚4‹“·kzÆu´î«Æº•좥”íŠ×ÿà±;apk3‡™.8ÖÈ}PmC›€áÀȲa|g誩1°Ìé#¨ÆÌÕEŒuoè†9íÎq­³x0Ü qj–&ÂgªkX&Øl¬Úb 6Áõ;ÍuP ,[g¶0…²¸8ê=ט±3P‘…HàÜMÝSJnC³-6ešk[¦¡9àLÔéLË…ï &lªÃÔP¿O™ TÍGÐ µOÑVñDŒ(Ò,ÓaÿÜáÊ u º:SǬXY»EEò…´i±lÛph #Ûš‰À!ƒ‹pÁ7çƒ&c¨šz¯XÜ9 fªÎàûc-Zˆ(8¶ƒU„ÐtUÃd:.Èf$üÇ9¢p '›‘üóÝ;>¢¿•é2ˆ8d1–áQ ÷sÌÌA䇹ÈÑ¿P°~–Ñ‚/a>§fƒ:ÇÄù¼(Ì4&…}ƒl,°Ô1±Tö FøD¦ž½õÙêSi‹ý\ÇI†­«h.·…œÔŒ(È Í’ÜÏrìCåZI… Q0 áñѯã#€\lþ ç“ài5wW OWq¸¸ÙOã×RmåEçýù,^ðN‘²[4Ø-:ß-ºØ-ºÜ-î]µEŽ8Û* !•'ƒ:BBÍ÷¢Þ8z)ºj%û—¦i\Ü Ìõ›Ú¶½z™¿ZÄOx”N›Æ£ü¹Ü2‘±¸Ur/N«YÜ!9Yš“¿ÉæÍvîáÁ—f^”ý~þ5rÏ/Ux^•4SD•ýŸýâYŠ ¿¦T0¥SöÀlЂ öÀÎ+Øy v¾vQÁ.Z°‹=°Ë vÙ‚]î +ذî]U°«ì »ùS+ì`ÂÛRåqžŠÄ®öSé .)xʰ² :˜œ z ¹d)˜F#6"¦BØb¡ÑpszO]nަêxδ{ØP÷ûƒ‘\5‹/aS¦‚ ¤6õAo²1ɦbGÀê} 2ÖñaÃU¹ÛÁgÝϵI­$´w:µ ãׂˆ®žþž2©±ÉJé³Cغª§Æ& HéÂÖUT56YWÊà¶®Z«±ÉrS.aë*Á›¬Bex[WeÖØdq*ßaë*Ø›¬YE=„m«ŽkÅÓ.i²dÆò”¨Z›4m°¨íJöÚ‹·Oª:cý Ú¦Œƒ‚õ64*ßflx[”‚Q)I¯›²½êÖbÅ-N(d4ãí(6뺌reÊ(}ü0eÉ—8Xˆ Ñ9]COè÷—›Ú¼˜Ýº¥~•G¼84ÅÔ»a·XŸ¾ò3c<äßšÓ¤\Îy&§ï½0çÒkê{t Ç«F©¸™9©ná4Õ0­…ÜKh¶¥RýF¢MÂ&·Þº­EXÕ ÍÓ<̺MWEÕ¼«”e?úëø ¼6¦Ó±JowÿvVŠL÷v#”ØÛc'KSdÊyµß¾¬–h™§8Uqû¡=žÉmôÒÓG§sóL/s2-Ÿd¿‹›ö1êæÐj×Z=á[‡];á/«,Çøh&:Nõ? sõa¯«6õ2ü«õÒjY°MqÄÚ¬]c Ö©±®;¯±k Ö­°¶-–‹ ëØ°Ë ëÚ°« »¶a ¿nˆõzæÝxƒŠtUj8P¿Ô„VµyS—LÇe±—¤_çûVİü•L,¡~K­j;-Š]]Ä_ëqíÒxjXô(-lï¶5ª*/[Î}ƒvl'¿AÏ =ç™yÌYÆdÒ²·Õ–ж÷֖б7Ø–pnï²-¡koµ-áÂÞo[Â¥½é¶„+{çm ôõ\·ßs¦æõì’4kN7]‚§/Ÿowy‡X-¼˜ÐLÏ}¡jo+÷3Ëõô d<¿;ÃÎd~kóóÔr¥åG¤°™ôt'¡ƒ*cœ¬ïL8^s²t¡¾öêKoœ„š.ØžünöùxœHm²m{Æ ø‘Lõs"Ó¹ZNûo0¬¯ï׿ùïƒ{.]xzbÈë«Å?PKvºZ<æþw± ¼ 4IAR-STR912/include/.svn/text-base/91x_emi.h.svn-baseUT LjKLjKux êëµVYoÛF~¶ÿ‡Aú’®®¸©j?QäJ\€‡J®,èI ÉUDT"råEÿ{g–ŠJ6Ü$]À€5Ç7ß gg¶Õ8sà£ù L4 øÐÐm·¿@(Ü4.r¹”±*ò,K8çzuÙ€Aº”àE+ »s tžgr•6dalÔ"/àðÜ‚kZ`¬×Ë4ŽTšg d´"c+R1‹R/ËLȸý[«Ókif·p/‹’<:Ͷve\¤k ²C‹´„91‹óLEiVB´\‚ZH˜o²˜ŒKX¹ÊÕËZ¢)òC%á=ÌåPæsõ–éC/M´þɇâÛi©òâå–þǼ»]Êû÷£¼»ßt7§5élu¯Õë`,l£€…Ìú11››6ð~Ã1· Ïdà{Î î†`ôñï¹Å½!˜ãPø. B‚›pac?j÷ÐÝ5÷=ØÐ´ò€Ü­±)B4?°X C¡ÎáChÜ3ÜeMÝ‚±#®©¹¹øÌa¦|›!„¶á8àùú læXàp£ï0 ixS°x€ÖׄŽêEš^ÈþcæÜpÀ2\cÈÂ*Œ6"+äB¦S¥ðR¾K\ AÕÎ@8Æ¢íjhxV«J Æ!×°ô§ûj‘)«bUÜöõ"Xƒ{Ì„†EâZæ!)Rk’Ç•üùݺº¼ºlÑ%§™•㥓2SPÈxƒ}ù(!ÍâåFwè¯ï9„ùK:Ï9‡ÙŒ ^Ι¤ r$ÔÑ9EHðš¿+À;¢Wxð­¢usña‰=¯óBáЪÆÊFÒ0”h©ŠM¬Pð7þÁæs—&Ò¬e͸eNï(|M> E`½¢˜¯yøÌ{Íç¼Æ•«Iš¨(üŠTÉÎY©gn `}•nžÈ@FÉLQVÎeáÈì«Z¼eêµ´ƒûG[ð,U«…vWÿ¸Jeêû?HÕÈuT@mÉÂR³ÕûC+VH{;J@wʶ%‰à n¶èâd³´ŸÛÛsÑjÜì€KxÀë¡ê ½7An4HïHE¾ª Y¼ Õÿ´™×czy±Š–Týzà#î•]áðë‡èh²ÓlyT´Wr…ž¨ÏêØºùfýu®Ư)vÀ v´œOò"¹8è@çK ¨é×/‰ª%a.#µÁGB=„¾^žÞˆ‹zá©wåâ$ÙB= àèO”t9V>ô~xRÕQ÷¯¬ï… õ1O¹%醤ߟîäZº¯Ív4v’çëúxh졞ªGp•Hƒ¾Ã ?ŽÌ’t˜ú¬Z9ð­3NÏyh3Ï¢í>àÛîÑPKvºZ<JÍØ&È #IAR-STR912/include/.svn/all-wcpropsUT LjKLjKux êë½Õ½NÃ0ðÝOQ X M¡Ù`@•:ÄZ¹ŽÓZĉåÞžÐË™2‘!ºÕ¶ô³}Ÿ7³,g¾kг,œØ—¢+:å¼n›yt5{Ÿ­rÆûy×¶KkcP>ð›~„÷ëø]–óàbóÁm-BÕ:ãùËãnþú¶[/2®YÇR±çí[/>÷.ÈÛÛügÞO`ò_õ  ©ê^FR<ÔV·£øÕDü¢oÆ~9‘n®ë^Azóà¡.ECªƒ‡úYÓ¦¼”yoi3ñP¯õTue4©ê±^ýÑ£p´Û úzœ>U·Ñ×¶´™/<£ýaÁC]œÂŽ{tm ‘é—ÿ²Š4{ˆ~§i+^ê÷å‘¶ß_¼Tÿ’öìàýèßPK vºZ<IAR-STR912/include/.svn/props/UT LjKʈKux êëPK vºZ<IAR-STR912/include/.svn/tmp/UT LjKʈKux êëPK vºZ<&IAR-STR912/include/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/include/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/include/.svn/tmp/props/UT LjKʈKux êëPKvºZd Ó‚˜ÂÑ@¼§æævà³³Eà{Ü!ì[ƒx¾€.ƒ>80àVwÀ ¤åÝÃô~OXÜ«0)ÒôBöç•skŽ5´z,¬`¶kòB.`jÙI‚øCâJ€"¨v¾ á‹¶©¡å9ÍZŒBCËaнÛV‹"h³.VÍm[/‚µ¸Ç0,76IѶ!¹_ÉßÑÍã£ã£&Ò‰Ê$è|™†BÆö僕Åie:ôÃkaþ¤&Y"'0Ó ÁÃ9î£1©“ìMvN<æ¯JðŠì5œP¢y´hÌNV™Øã"/4­z¬|o&B!¥.ªXý}|Tµ?Ñ4óD^mí4?‡yUÄ»Öë‡c”Êbß–æQrEŒÿ1ž)-0¾¤«ç:p|–:Êô·kÙôÀš5˜®^ÖÚ8¾M¦ïZ­V«ý®yNã3OÔ´*¨˜9U†ËHdz$ŸÂc„šË¡\×e¡î©åÀ-¤ü€¨™Ê¦`b¶˜;„wêú‚÷ÎÞ8Ð1Ôü?¾3õӲȢbòSø¥ŸgA ì•é – o$$S•È+*‘e•ibc^ˆÛÍf-îk…]L&ðR³®»+ÜRM)ï+À77]b ^žs9¿§šTx#DUÆr/õRÊ H,DYD'G¸±š(ìzºea ú¥•9ú‰zPøúi{ÅÕ¨ÁX±1å³»~Ïõ›±‰=þE^5H÷OpòŒýÏÐ>Ù¼¿]uÔïoÖ¶£Îè3‘µüAÈÉÐÅ&[s\Î@i<³Q¡·…ÖXÊ/•ÌtÕò醲´ë/Ö£uqavé¬].,ëâùÉGø÷Ýè9êöëéA¡F}ÈUb´8’ÆÏ)=Ÿ]íØõÙt:ßì„f îÔ¦7‡ÙóäÔ]‰ŠÒPÓç§'—æÇ>!a›1òŸÞë!Û“zÕenMɯ*×[ËKùv*£‚6[\ìG¯Ÿ¿ËŵÌl¼îNu±È8|¥ãúŠ„õ(x¹Þòóúqù€­îýPKvºZ<†YÔqàæ¡IAR-STR912/include/91x_map.hUT LjKLjKux êëí[oÛH²€Ÿ'@þCc÷a“L2©›=y¢HÊ&"JZ’vC‘i[YòÑ%—=È?}á¥úÊ–'qòpˆÅÎ ÍúX]¬®îªnR/Ÿ)ôÄŠüÉô]œfÈmµz(ÍâÅ|³Î—ù|·Y¯ó-R‰>~ô Ëg·9ªŽ?ѱóåâvv÷Ç ¹ÂÛïnÖ?QìÈ»»[.æ³Ýb½BY>»%³]Ž™›íEÛí>¿$·º/£—T³?Ñy¾Ù çÈ·óÍâŽB*ú4ǧnòÍl¹E›üz±Ýa!t™_-V zålu‰nóÛõæ+ÂzÞ-V×`Øw>ˆz§øÞø.’ÇÍp]ÒŒ>× ·ü[Gn¢SüM×ü qv¢i¦á8Céd˜½ñ’½9üS¥h8IÐÉYxc?D“ñèò¢8E^†e&çQO–f“8LRô&ÊN ÓŸÐ?Dc,{Y4£$<ñzß0Jˆxpæg)¾M’ Lè­ðßb”MPê‡(‹âðä¥Ô©0 =eω¯F~2 G¡Ÿ%“qä§(=õF#4ždh¢Óp Qä F!Ezãw(ˆ|õs|/öo„ˆÿäOÆiøï3ÜòÈ¡À‹½“5‚ÜmŠ/$º€?bÍN¢”4a˜Lbj8LȰ8å Qz†VÙÐ/Y“ÐY¢Ø B4x¬…%C43á8ó¢qà%!6þ>7ÆJsR%yK~~ùøÑãG/IŸÃ)G»5ºÛäŸòÕw²ùûå§-Vóåžzè ‹æ?W+Ü7Ñʼn±7½ÀNóÏKvîd}mø¡ò*üŸ(ÿ‚{ù _’¯.WëIÎVJGD±Ë|k¥—ù`J3úÑo¾^]ýqóñôîë]NO ¾÷£ÀmÒÑĽín³ŸïöÜvýÁˆß[G´òƒaÙ<Æ$f%NÀöøÑÿWø´o»h0H“We“°ëõ f«(]ü7GIaUã Â"0a¼^½° BO³wÎ+ “@bM̶9ò./ñ“ÙJT^§!餥ˆ:¹µN~m%Jô×+<Ð/µ’uJBº›íör+ „v½ h±‹þ«Ý ±._Q6Û\ç;¹a„ðøËE†Ý‡¢W&7CÈ[Í–ëk¬‚Åõb7[’Æ~Ê7xXÖzœÑÍœg¾fë•mÆ‚œoϹ«3[­rªáÕâz¿as#®éäÖ ÓŒ.®ñôe7Øv7ë奠šj× ­?8¨š–ðM[ßÞÍ6¤ól÷ËÖÛKP·I ‚ð qV‹_á§XZ­¥õ ȱ9*P‚\;«APÛÔVŽ!¨cê(²I];RWIr ©gGê)I.$õíH}% x÷4I!iŠÝz>[bÊùl¹—"»D"îý yo{w:@Þt€Iœ„ü€LÇceüiâ„n³¸¼ÎMá— ¹*YM´d§^G±:ŪBt¸Ùàg±á56¶Ù^e%ÂÛä34ÎwŸ×›xΆAW³9x2÷ˆÕÉ«ß~û̇+†nIò·ÉÿgŸo¥8d Õ±Š϶V7DêØœn†Ÿå8a¸rìj9n#ÄiO©·ù°ØáèG ¦=¥>ãê9 JÇ¾Š£bMAš5 ¸;á^æáäQ¶´šc5k š'[\̓!{ Õo`­¹ZÖ :Î{·ÿ s¾7¾ˆ·×“ÿáz¯qVDŸ[ÓdÒÐÉplƒ hšTºY˜Ú°¨4_ïI,±èª ‹ ²‚1XìP¶¸]¬®ÕººW Ë6û»Š.qʼ¸ZðêºV¦¥&™"h™4kLËæ$Sâlyµ•¾Òßþ‹rd—@[ößïÝ¿^ ]ç½Óç²·‰S¶a3[mo[z÷2‚Ì1GqU”¤ BŒÓzï´Bã Ôgœfs M¯3MrÆ+R4]MžàðúDSGò”))e`§ã3Mp¢©«¥¸fJ‡×'>/õ)c0ž#-.-)§ )®Hñ¥yˆrzU²Iô^ ô+ÆÝVÑçlµØéò;ëÉ–?zí³*Eõ—ëùÇ{$ËÓÑÈŸŒ‡%ÿ§iҥŤïÒ4ó²32‡%Ñ‘5Ø.ó†Ú¼Iâñ ›ËmhŠÏVøéÜ’bž‰0QæÇéë Sû›fN¤ÓÆ?I&umÌ+™µO°…`Ümé1ÎGƒIêl“ÇàÄ5ß©ÕPb+ŒcÄÄ'œ6ÑåÏðÖ—Å4ÏdãØcfú•>|£ÂÛý’9²î™‰ç>‡ë >g›º÷«º•ð´xŒcqL×ãª0ªÒáÉ4šLβ÷G½b\rMö»»}íCšª.PŽHEã‚Ra¢•EÄdï¦á{§…I%†çFŠˆ ã¨î«ƒÏ ”.8®U³4óæõÙ4 G5æÍìcþâì® £ª`q·ž½úycOДg×è–t}lc9oêŸÙYxÔ b¯,_|fücVšøµî:]ï7s]µ˜5S…t€'W‹sceE¶"…ôh±šÌ/ñ?ɲ.éŠy/m}Ð…*i2ÜjG[NºaEiý8Ë~ÅõÂcC_Ð|¶Brô¼õÜyî>o?ï<ï>ï!ì£ý?P†ÃVŽHU3_\ßìÊ›niågp–’øZ¨q%„yB]ù›3—(åkÔõðl1_VÍüˆ[Éò ΃hgT Xžãë95Æ_æ3)À•Œˆ¯±ôβuÇ7r”z(í“ÔÉöIfŸ ÊA}ÞÎDкm3ö9N¸š}Xâ¾W–Hmí“øú}º¾Ú}&®>Øoh ª¬Ÿ)8©†“â¡}™›A3 AÎ÷±&¥8Njà4(£Íx(¬oXÎçE}Þyû|]ÍÉ–›ÿÚ€êøe9ÜTÁ&‹bRÑhŽ3õÕÈw¸°i…?»£n˜-ê>‘ï ®J>A“bžT®<* mqMC®}3Á9l«O uSõ*££ƒô Ä5C\”Rí×zUõÓoÄÙpP:$+Ûßi>TzRú¢\Är ÿë|©--K­À%*\’Ï.ñtÁbt#NcU¸7›†Xón–<€+|˜ ÈÛnó .A¾œ}•ÙP;ŽigKS¯?œe9…kì7â$„pcíð„m•ï,§YÕÖ¡Øó+’Ózo‹aÃq˜™Û³tïT,gÚd5ß4ÅÞH#9Z6ކ±êUÏ7Þ/w‹9u7æ$G&IñÆP2Š€diwÀÈÚFQÀIò+ÁJO)µjžÊpCö®êç›ç#PU:ycÝÒŒBÒå%ÝzmÔ,g© -Wì6Ì"ãD”LòyÎvÇ*¢6›?ë.°‹ÉIHLn¸¬“ÛR„ ñâžd¥TÛ `I1TAÀ˜&±Û2ö¨=“Ë|TÆÑ‹&“"D¬ý•ª?Ñ©?zýMñÿ“v‚æ v&—ÝÝ-[›!ÕLà`ó63 š|¡ÍÙîf«… ·{ÆÈËkâ)51nb“ ãÀãfFdœÙU[¹qÎcª1àæ¨5ñ÷› ©_k•á!™¯Ò¤„Ðw……‹ÀÄ´ÝAENnDþ†»Õ=º#:ó’ì;tÇ@ŒuÍþ®9 4Iá*0YP"zà“ ©ž¾d{–„§òä3Y2~*wÝ÷Çà~CÍl·üNU)âK£)ì7›À#Ë•/Ø>xý‹B÷ïý ’€ïœ×6˜íñL IÁâÓbkÚꪽ Cî&Ã͌Άð æàûÈ۷7"ŸÛûÊs¶Rüáë.×ð•7³wq3Õ![Œ7Ad8JU“VÐGù'²=NS¢i¸É1–MQù¥qg¡é&0ÀÑúÐ`m{‡ â‡ÆpÛ»¸ÊØnÚmïÒV†|Ûˆo{úZ8‰è‡lÇúþ®|[àþ#ž>"?Kè.†îfœ(®íazgŠdµH¶Y\_k"%™Ö"†Š'RÖ*ެ0õ&²Þm_Ù}7¿ Ö×6; ›'Ä6Ë0ºN9.õ; “Þsð‚Ö„/¦¹þ8{›  c¿#[ ãXÌt¾h£^s€×ùW£‹ÁñûOp"øÏ÷=È×»tG̾A³oСõJ³äØù¢ Íø1ö*¿¥å.È'ðÜâ¤uqFîø¤õ¥{Ô¢ÇSš&Ÿ^Ò/[°H´ÐÙj°¿ºÊ7xxHïȪ)AªƒØ1{vj¤Sëè둎½ŽN­£h¡#Ù¥xV?9Œìw’ìtmT‹îtä=‘a¡ Yù4€Œ‡š† ‰È°±I¹Ýì¬Ò„˜¹S¶§ø3²°LITúÀV“lµªTjűH±V,´ªMUjÕ‘H’V µÎ#ßÏ Ã†P­4Ÿ¯W—3BÈ…ÍÃWµ9JÜt³¸-`Š>­Òo(9x:ç:xƒÁ†’ƒwDƵ&ª‹õ¶|Ëöëavk´»É‰¶ÿBwàK£ªéãxi¬W?æ§Ü…ŽæB‡^ø`Þ֞$Ž}˜­>ê_!ýñÃÖaо˜ Ó¬rEæˆìŠl±àꊼ¿êRß¶*`\ÅÕS\%ÅQQZzŠ£¤´T”POi=\ïÒ»‰uçúiÞ ­ÍXÑQ<ŠúctªÑ³ø«#£¾QŽÎ€re”ÂYëÒPmÕÓ£d¿¨ŽŒ:Ò£:&TWFyzTׄêÉ(_ê™P}¥èQõwé~…ç®-´Ýx±e冟ѣ𠛤ëu<*Íç¨Â¾!þ)OÉE±"¢¹*¹T PÖ¶à(ŠøÞÑ\%@1Ìt5€¶ ÛZ @O —*ŽèëŽàJ€#ÀUÚàXh+ àé% +:@W èI_è)} è}%àH„:À‘p,†:Àñ2s(sÌ¡ìYˆ×2Îpd„ ðÈCd”+£øo\-‹ºDÅœR|pãPüæ<•V¤¢-™ŽŒ¢H®ÃMW’?@$¢äÀÓS£\#*M§Š‘¤¯0;¾°á ¦SŘr¤DEfùâ™ì Ç2 _ØàWäKµ2Ê“QøÂ©’ʨŒÂ6 "×W˜Ý—QäÂF”Âì¥øx“õî˃0›>óÊ!ô\›xàQ²âwªσEuöA`˜Û‹p/‰ÉÇOøÈ$Y(”°J ¨ˆ?%ÄÒ /ñ úÎï½lûí[Wkå:T]~*ÐBªF€–kζBIâÓþhÛÊVbfz` ‘ Ò/j!ºŠ¢°]¡!s݇‹€Ã_×JC•h™Ÿúù}%Ö®ÕØñ“†Òµ#éJ(’†Í­×ü£æààQsðÿ£¦í¨98tÔ|@ÛJ㦵ßþÔQóA-$œ¿Jß6šl¡á¯i!ÓˆÉ,Tÿ4`~ßôшvÂyù}Òæž÷ãL;_µ²Æ,ø¤ê¿«ßž*ÅfqÇ î6‹»ñv³xÛ ÞiïÄ»Íâ]ƒx¯Y¼gï7‹÷Kñ‡ó÷òû[.^X¸üCS²¾^Z­Š®¿ kõOe!Ç $yw)ä„$Ÿ.…Ú¡öÃ?Mºl ~Ð÷_ìQΪµŸô4É:¦"ð×Sáß¹åN`hº€)ÏÎDÉj“UíãQˆJ>A-­D%Ï Ë•V¢R¤c •œ¬J´^Ïd;Y©µlyÒJVj.[™´’U¶·c'+…u¶i%+Åt¶i%+t¶ i%ÛWÉÙÉ©díd>î°EÆ{žwȲ£:î8Ðjåê$°7Ye´,#d,ÝR)K·dKˆªGÌ Ö+‚¬ºûK²R÷g‹„V²R÷§«‚ÊhÇ›©\<äE5áY•4&«~§\„Õ”ÀÊ!ʵ@ IÖô,$Ë¥? I—ðšZ­ôñ¢66ªVö¶Ó×G4Å=þ2'/ã°/}Ôé+ cúáåûkÛÅÄzé/g'¶Æ-ë¶Š ÅAÁZOžð? Šž=…_.ÚÊ;¥¼­ËÐdÁæBq&/:À:]®õ)'χèBrôƒu¡¯ˆº€ïܪå«L‡›¶z JˆVÂG¿‰zp©á`íî¼ê—¡ÚñAŒ[×8D»á}LJu©^Þùi;xÄ´?'YriÇ|üÐz4Ûl.˜ ¼[ŽÍU–|„ZŽ$~ïKU塎Ó,&Å)¶›¼IL Oly“˜4²ã‚ü 2–«ë;báÆBPjÛ)Þ,(µíoT¶±c!(îlGx³ 4ž³àÍ‚ÒÎv€7 öU‚G‚G*Ác ÁãRðgDç—‰ ò>ol.ð¹6l­²xÃWed)ð ’Xª,Üp©mOžÄðV±t'y›6–Ÿ-ÁRuÁF¬ÄXJýYÞ‚­”ú³¼áš¥þÔ1JY¦ê/Íb’šòFj,~x‹•å¾î"K‘* HJé!ÈÛ£É0S‚‚ 3EYF¨·HRàËÝXª*ɵ–f1y:,Ï­&Œ†Y唎í-c_è!å ë­eöEP!U‹¢ððøQø6CBY¡<ž½‚«ù¥$Rñžy¥`«Ø@ Žgø<¯Š¿U_ÃÄÔ¯€UWJÔºd Å;ÖxG‹wôx×ïÞGû¶5¾}|ÇßÑâ;z|×ßÕâ»z|ÏßÓâ{z|ßß×âû¾ª0¶”“=¨ºŒ×e 5Õ±£:jªèåUuÁŽêª©®†Ú¶£¶ÕÔ¶@Ź/ãÁ”Æ$|ž'Ñ,œcœ•A`R !ä žBSa ã4b #ZçvŒS>HÁçyIyÉô&WB®à)4”0N#Æ‘0b‹H&؈q%Œè@$3lÄ´%Œè14Qd.ƒz ª_^æIN3É‘I¢…h*ÙLre’h$š[6“Ú2©-÷4Ýlfud–84Ðü³™Ô•Iâ(@ÒfRO&õ”íë7³ú2KŒî4im&ɤ#鸙t,“ŽÎð&~ƒÏó’6Š6£ÀDRðyBA5†ä‘¼*q¡I¬T=‹Eb_Ðd1¸¤ 0è%<†¥™2Éi&92Iì³4]l&¹2ÉåA$,l DÎÆø CÓR ã4b #6 ç—ŒÓNHÁçyIZ…Ì#(8LB!Ÿ2˜@|ä8÷,†A’B>/ ƒÁ‰À ™(ƒÀTBÈ<…&¸ÆiÄ8FšVá$³˜ûˆl)Ï¿—ɹֳò¼0C"¯ŽwdgÅ䜾¸8v¾à[M/Nõ[ÀÑÿ)ò'ÓwItrš!·Õê¡4‹óÍš~œ˜ü:ü|Ë–Âq€&C4ŒFaQŒzüèÿPKvºZ<ʧ$ݤ/IAR-STR912/include/91x_rtc.hUT LjKLjKux êëµWÛnã6}n€üÃ`(²A_ºÝ¦É#Q6]\‰Î"O†V¦cbeÉè\Zôß;¤.¾Ùì–ɃHž9gf4Ñóά`£û †úÝî'ˆ¸'“"©HT‘g2)áééÉ982àÇ í¸†?zÏ“B%—s +5Ï Ø×àY6å2•I¬džñBƒíX ä,J¬,WbªÁÝß:½«ŽñìîDQj‹Þe׈2)äÒ´ì|.K˜iÏ–Eþ(§¢5r Rù¥ˆ‹(ó™zŠ ³U–hëR³È¡rõ²D–Ÿa*f2“ÁÚ…¡,U^¼\ëg ¼ß×ÿ¾x¿Ùû¸Ÿ”^½w,aÿƒÇ|HaÒˆú¢ÀáŸIHáóYC`8Aƒ1³‰oQ|÷ó" m‚;f3Ö8âGÃ>3>ÔœV`6˜æá,ð!¤šUd¡6·ÇAhÓÐHáž<€ˆÜQàÌ£—@"S†H]~¡«›Ya@]jñ0ð™A4$® ~Àá–º6¸ŒÜºÔPÿl"úµª'͈[VàGôÏ1FΈ 6ñÈ€VAhµµ/šÀr«°Céœ0ðL⣹ás cÒÚßîT!Á8¢à›ÂíýF¶Ð¢âØMV•BŸæS )& ÿqÍG§t:“Û™¼üáõÑ9=9=éèSЧF€Êñ0‰G‘)(D²Âº| ³$]™ ýå5Cs¾—³ "L&ºÓ౞`ѼŸV"[‹FiÝ^%ð õŠÞi¡E¼¼œ¿«•F…|ÔLw íàw*54¥*V‰:=ùûô`u fpU¼ÜÔÓÍó"ÏÔ¼™Lãó$Ä×júNM8½ÑN“˜çøzZR™­”h§¥HòlZO{Ÿp;MåzÑ裇Ï?WØpîub†—¸$ônêtÓçe^(üH ¤Tq¦ÞþŠ«Rmjè–ù$¼‡îÆ ~°z•,KQxùT˜j¨&èvgB§øIì>;fPç(ÐÅó"°×Ýdåéarܘ åÃ\s<pó'X‹;·óH2ŸÊÄJóäë.;nNúÿª/žöÇ>¢÷©†tŸûGý« ‚îAtû ¤û|ua³È4_DÔIÑ;Œïú̸†Ã¦CÝ=Iãbk¹}D•·µËšŽK»ªz­ÕmHwi ¨‘nx‚õ:çµ¼)o¬•¹ÃTMå1.dü%}SÓAl˜EŒ÷»ïê‡5cÓñÚkÔÛIw}ünJÐŒ¹œšlÛ‚áÅíLÏ?Ül¬GBé[çYÓÍtÁå¢Bè¾z¶‹0/û¬mQ`æ[ A-„MÍÉ‹E¬. Õ<ßWÔª;pãÀù¾ ƒÆ…|åÍùªÊ³òl&ÎV¿öaÝ•.`=džrÈl1=sê§‘Ò5à‹'ó°7º¯F[1^ÐMƒzµIï6Vj”?}ƒ[M3d™ÚÈÀV‹ÜÂ3¾«.à¿”œ4~ГUÙ¼žõJK¢;Àvü)~Ë5pò^dS9ƒÎùÆý¦¹_íoùUG}[ß$æÒöΦÿþPKvºZ<]tvjóIAR-STR912/include/91x_wiu.hUT LjKLjKux êëµ—KoÛ8Çïòí%)ÚØ¢ón/ŠDÛôÈJt‚œÕ¦aɨ°£zŠˆÜÝ‘#cA¹<ªS¡ÍBl_pÂç{õ2Ä„ yò3-páD!÷¸#£0N ñÐö<B g†ÜsÁö™Çëvp®ˆPýs5¿((šœ0ˆù_#ì\ظ¶oxÓe;G!ÕB¯i;1µÐB¿‡$º×ñúÚ’¡¸¦%Å|ÛåpveÐB&ÆkX Â@Ú"à.6q„„8`Q„³.r•ä{¬êÎöÖöV‡>Õiš)Ð9~zê^e 5®pmÞ+H³ñ¬ªWé—Ÿ@1?¦Ól¢¦p}MÛ ~¢×¸l>Nš$+“uvA&ø±ÿL‚ÿMö&| DwÉ|ïöÃ"œç…Æ­«Ù\Þš #Òþ#²TC©‹j¬+Ü…(6,š%=F±½õc{  :n6¯kY¤77ªà“õµ6ôXcðȧþ¡J!1¾(š[mwÒR'™þý†ž›IþV_ª9šÂÒì×¼ØE[TR÷m4RáÝÇnwÕ¥åÒJfkQµ™£|“zî6ÑÈáµÉØYʾ}³v×%ÌX›%=CÂ6Kö Io³äÀìo–’ƒÍ’#Cr¸YrlHŽ6KN Éñf‰Õ}‘œ´H,] ^‹š¾VÏд¶ö M aëÀд ¶ M cëÈд@¶Ž M eëÄд`ff«…338³¶elpf-œ™Á™µpfgÖ™œY gfpf-œ™Á™µpfgÖ™œY çžÁ™µpîœ{ Îï´qúù¤Â+í¼Hïé–|Ÿiò}ö['Ì"â²Æ»¯ûâ¤:_÷rÍ~kÄeo ÍMä>O'õësx;ô¼ûÕ˜ë#´¶½:듸žh4+n¿ìàÜMvú‹¦’Y¬‰[ š+ÊÊT³ñ¥È´*Šj®wè^x$îÏ’r­Ê…‹~™Y¿Ô0SIAÂ5‰«ÑžŸÿ'–ç*›à¡|–®×ˆŸ§€ïÕ¸¡Áóq}üʧô:xþ4\$1[³Oâ(\¤Ð$z~ö+XášÁ,Ø0Ø=à·îË< ~ùDK´Œ?Å ¨Ï˜êhÛí:\<Œ#ðY°¡ÅFÀB“”ƒ¦[ÒâÎû«îðJ¨ö>±$%‰îeG°t‘„[ÙÑý§0…©¶ˆ#„Q Áz ü‰Á*‹´8…mó˜¿n.Eýp’xϽæúÆ+þ$ ÖáC$¯—¸ü?¤À8Lyœ¼~ ¿ñà½ü¦tð^1ׯ¥›Ï2Øß ±?6áÎ5=sæƒçXþgÍ5áóØÖÇ`{`9.ÜÞÛ†6ÓMpf“/ ÙS4eœO¶aÏnA¿÷|gjºá>Ûþ=RLØ3Ÿj¾íÌÀ5o5WŒâ†¶KâÆ½î{¸×0]±ÎMÁwÀÓ>™àÛSóRø nˆï~â_{Ûºë˜S÷]gfëxcm2™ãÃÈ„±91`bk£‰)Úì ¶‹«/ˆeÏäÜÕœyæîñä¶6C›j·¦'O€»ÝÑ*Ô…úDÛµ=:‚å:SÒ•€ñÉvŽÞ=mgCmf\É#Á½gÂT3L}Ù[‹$hRKê¶·a5{fx ×D#Ùbl†JÑ´P²lÉïÑWçgçgW¥«0bÀcŒ:öE¶ÈÐ/¿1£Å:ú61 WÑ’­`>§TCÑ9ãèRîRûÛ´Ç#½Õ-ö—<ø'í´ ¶—OÿÎw2_¶qÂ1oÉÌòWwB¢H>–m90AÓ­EÙ†%2mÒÚˆŒAãçgžŸÉ|5'!1ï·ð/è¼tð¹@¦À¥á ºxxå,½ck±EOŽ |­_к­hýã´^Aëµ¢ Ñ®÷º]·¢uõfo¸>´Â©gýo™ö1÷qŸvrðx’-x†%ExnX»ÒT,È/5Ãñsœ,',zäOKã·£§åÑ» ù«»îɱQ-]¬´å•ã YR³Öñ³Žu3‰×åÓxY¡Ã}¬N~ô_Ô³7¯qKk¤ÅÈ6>Z“†°ÙÞj.fûî?‰Ÿåxw40ŸÄH±…ø î¡F.ö )"þöèU#;šäu }‹,U¹Êù{ãl6dœ o{xŸqLv Êö¤ì ¥ì*Û—²7-e‡ªì@Ê+²{K9hY¸î¼»ë¹:/–eݤ¦Á6sü9Æ@îØáñ$ˆÒMÈñÒè–¿ó ¸hY´„x«„šØÃŠõÅðz†B13zùŠ^Øib<ÿ=š†”!]WVŽÏgñ»2Oñ¨\´°è!„‰5ZuÇ<.ŽžÚÜY.›vï N¶÷x¸øªì>”ÂÝÊ•C GØ’Ò5¢bö¯;?©—£eÎɱË¿ÒU!>AŽ2êº ãºÂç,ëSiÑjx7­Â-Ë´v-EzØ 7l%ªºÐh{;â,I²-¯v¥-lî|£u‘™$q²”~~þ|Ä46ìt¤_q£„_+°âVÅ\{” ã «[Ng­aåÒ «3ÌÍ(òlk”Ë ¿¾øá†9¯×Ð|hàŠ6L?ÏEõšõÝ‚ö 6dãnYÃ,Ãs›²º¬‚8ÙŠ¡MŒ¾dèFFžÃªŒÞ.µ±‹Ý„èJ“ØM¥™›jàqPƒã¬#C(ØW`+3’çD@’Û=a¿g,åXçE:yC£ðü„™Z¡+»îxXƒ4eÔ_=^ž­Ô¡ð|K¹øÿò€êź¹¾MÇ9,uÇÉÛB54 u¨ªæ$·ÔÝ‘Š¸¬€”J3Ñn Ž6çñÞuN.ò¸4äj<Àˆ]Ó±×Ë9"…Ÿ¤4¥î^7gäMÖIHCʦd(²5>‰hˆøþ°0¶}LR~…57[þºÛ½S½qQùÅ¢£Z–•­×{Ô rå‚DKN+U½oÔéÉm:^¿I§“§eékÝÊ…ã ·¥%ÇM¢_¸ˆc² ª_¸¨#²ME¥_¸•fY7x®4N;éV 89`ûGqûÆIQfð[ŽS[§0%þXáù¥Þ©mˆªjE0¨ÝS X¹{*`•p(f[ð ¿ß¹ñ íµÚCª±Ð‚Ñ䉃"ÈÛ0"a FB F“WŠˆ ¯ncz≳J  e'†ö©xw¨Ri¼£Ô¹tºJÉ} '¾Õ}' üëà&X$ñø]GÜ¿’|#Pÿ[.ó&ƒÑ/¨?Ëß`åoœ2¿üòQ]whÕÅ~º4!FäoÖeÛãÚKê›e³Vn“`íqz%IÌ,d‰v÷GžàhqâÓÄ„B,'c ‚…ô7» ø(zs3/‰i@=‘Äó8ð ˆbW4ð!`ä* †’D7à³­0Vó¤òâˆÓëVÎH> IŸ6EèhC4Ô¹h/hÊN×%ô’84Â!ƒ@wÃ×>BѶ’È?jJ‚§ŸÂÕMK-ôh8ºb5F‚°ˆúXPBQ$üǹ“Òrš$m%ß~Gíîè¿#ý™Î³\‚*ð³“+™+(å´Æ¹’åÓEmöè_¿0@³îeó|&çp{«[ ~ž·¸möfMkÒDg: ?ô_ ðóÑDoøàtŸ.ïÞug3e&Mxú°,J…½¬é6¯ Œ‰ ˜£tJ–e½TFM¯U‘yÍôûîŽn\·,¹>X?öØõîÎ?ͬP«°˜É¿»YbϬTš«?Ï´Yxälg]NeÕÌmÖhâ÷×)lzìñÈ' œ'$aòÙÂ] 6xòb;8¶‰?Z cƒŸ,еÁS <±Á³'pįC =·ÀÀ/Z"x£Ž NK"QaÁNK"?$]×–F‰ºhK¤Ð{¦}K%âwa§%Óˆ$ÂVØ9µQ[bçÌFm–RÌõ:Kç\XhgíÜönâÃŽ¯ëXh×·¥U0ö;õº-­ÑUÃmi5aÝt[ZÑÏ‚Ùb¹§ÔÊË=ë –Xîyµv¤{aí¹‰×IK«aïúÊ®éÄÙöpl5^©–e¶Ò·´UZfé—Å5´uÛ¶œû¯›oчëäž®y¯eÜæøjJhZàªÈf¦û’å™Ú×ïï± ÷éW®RUWíK…»™Ø¯S3ÉM/}Ù›ûoX7?t٦Ʉw?ë@o­FºÐ Ò`‘üf^,w>y%ÁïéÒ˜jšÿr«OÜM‰^]–xÓ`úëø ¼6¦Ó±JowÿvVŠL÷v#”ØÛc'KSdÊyµß¾¬–h™§8Uqû¡=žÉmôÒÓG§sóL/s2-Ÿd¿‹›ö1êæÐj×Z=á[‡];á/«,Çøh&:Nõ? sõa¯«6õ2ü«õÒjY°MqÄÚ¬]c Ö©±®;¯±k Ö­°¶-–‹ ëØ°Ë ëÚ°« »¶a ¿nˆõzæÝxƒŠtUj8P¿Ô„VµyS—LÇe±—¤_çûVİü•L,¡~K­j;-Š]]Ä_ëqíÒxjXô(-lï¶5ª*/[Î}ƒvl'¿AÏ =ç™yÌYÆdÒ²·Õ–ж÷֖б7Ø–pnï²-¡koµ-áÂÞo[Â¥½é¶„+{çm ôõ\·ßs¦æõì’4kN7]‚§/Ÿowy‡X-¼˜ÐLÏ}¡jo+÷3Ëõô d<¿;ÃÎd~kóóÔr¥åG¤°™ôt'¡ƒ*cœ¬ïL8^s²t¡¾öêKoœ„š.ØžünöùxœHm²m{Æ ø‘Lõs"Ó¹ZNûo0¬¯ï׿ùïƒ{.]xzbÈë«Å?PK vºZ<IAR-STR912/micrium/UT LjKʈKux êëPKvºZ÷Yƨ̃áÇKI˜§“Ä÷DÙLõX‘‡ÿÓ/(ýþ;ž>%)ÿ§“q¥¾eêŸO¿¬õ­ÕɧNÚ­+ø—¼?!Ÿº%(Êè>)ýI¾Âú÷ú‚sî–CL[ûJttˆµtèl‡\SîV̯6¬›r ôÿ)ögsås_œ+óî¨P N}€¶:DuWP Ôþ7M_aˆ Þ¾æ'?Apm˜,ˆŒ=f™r8˜FʸBpøtÞòYwÆ .}Ó3V¦¿×j¤?©&ß~ßÉœÕ`œt2už¥–2“ú²(Œú%ºwÔJ~ŠŠx!L&ýQŽžpÜž¤ûè×p2¯äõ(]KÊ*@»ÃiÅDóÌ —謇ã¯<ÐFÃv ï¡’|  ;CÐg,ˆÒtÑÃî f4m&=a.ù¯³­Ä¤»+œ@:Ÿi(t·°‡œˆ³KìÐ퓢;ÚÓ—NK—+å3F2g‚Ž¡òq6œ*CËðæ+½§_‡ ø_ŸÅE/ižWß§Š =1]’…÷©’óá8·$¼O•”ám^Ix”ÜY-a2¸œˆÔ‰IÓùt[)çm,BŽú=*Ú€Ý~kžå— Ô…Ô)ªA²òJW¿êNX>*›_4ZÁ‘(]:]6*'KÊ8¦î”r£pÇ8)v ƒ'é ¡ÔxÚ»õé0ߟ̳˜z†»ê+ÆÍ-©”+;²ïI½²Ò—Dá¨ìºµ0®Ÿ½éÚÖé×ìšôaÃQ}ÎnYÈÿ–éïú vXì¬f°®ÒÓ]Í1X¤ò3ÁO†jB@ãÒ(æ ×2ˆë¯V6„w+UûªÞè¨àÜøKã\İlK>Hºç;‹<&¶§ãÊûÀVÝ|K£Äƒ%³+hªi²•ÂÛwˆº‚@F£Ë…l½ïJ‡ÈNÇd ö×é0êÂE5|eÅRÁ Ð·èœ‡Ô—öÂ7õm¬Ã1û6G`“¾ÿî7æ™^ÉQ¼hŸ–r§šg,Àϲx©ŒÅÑ'™®‚B\ymÜ4—ÊTѺ­©™#[Ý£jÁÝk7TbEœÙ'œÝBžx bìŒFqæ^òÆÎBÞXq¹hô'è&6ÏÖá½Ï¦ÿöר7Ï»òìA5]ÛᤌoxÝ.ä(Ü£,@ƒ ç'QŽ*¨_ ¼*ÙåÒŸÕ¥/̺½ágÆ•Pͧ?s9`êC€b­„F(i@ʰ©k‘¾Û÷V¾GT7–] ÃŒƒ°«àÌÞÿ ‹R«¦Öpêîâ„N0C'x«žPdýW礑³¨ð*»Ê¿Š—~^åMȇÝ"¢ñ ÑHÄ™ó_~!o›ä?)ðõQôš_é‚ćh¾´›\wdòÙ&LRØô³Á?ºâ½5ÕWKMH¾é9?»±†¡9ˆ¾x܃®:<œ–O ¥8}áuYÈrÀf aFóFУ<dž±1Ù“„qÉã9 uÇ9Tühað¥ô³ ÕŸ_O0…$+`yú|L´Yú.ÃT–§ÏGY£ï‹‡Sy8$^rú0Ÿþï»í|Ne}6+~A¥C \Ðxâü–Ÿ…Žb˜íÅ RP¡ÝB†ÀÈÌ2p%HãpêÿB˜ôF}©ÑÜ#÷·†v‹ºfªËܲ]E[ùŠzàæ:ÁÃÞ°A`Œµ<ã<¥ˆGBM ÈïoUeVt„Ê1ËPª¥ƒoê77:̲<³]×@c9ì±EvðÅÀ¡Ü[lÚ÷ù)tÙªb$žœÇIöšÀ—\Nä¹·kË_†©2¸¬Vx&õý¹x¡]ÌcÀG5q>6 €kãÊXømMà¡ôlOj†9Àï¶µäuf.ba ­ðñ uî$·º†~|F'‡˜Ë!>*sIû0v}îÈù9á~*½îÇf6(‚ç»JÌáà;Ä‘GL¹ Ñ$¿ÅátsèMFÆîÖþ‡¡,5ÉßÎI \"ð‰ðm››€Ýô9ÄY]P3ö;¶PXñ¤¨ˆ¤µkrÔjo€¼SygäGu‘o€ü¸.òÓ ¿­‰¼ÝÚùIMäM¿«‰üxä§5‘Ÿn‚ü}5ò“õ¼]£_Ÿl¬èí}ôdcMo×è¤'«z»F/=ÙX×Û5ºéÉÆÊÞ®ÑOO6ÖövŽz²‰º/ôkÕ7½4ö° þ½Ûq>{xr×¼1ê¤LƒGºc××ñǺ¦CFK>Ò#£8vØ%þžÉ'ÛÀ#{Bì ½±'ôÅžÐ{B?ì ½°'ôÁžÐ{Bÿë)½¯§ô½žÒózJ¿ë)½®§ô¹žÒãú¯ò·¢¡tnßܘúº>—j²ÃÍ‚Bz& Ýœ€þÌVf½„Ñ(vûÐç¢õªð¬h™~UXns¯*İ»>S„·*õAÁV÷]Å_­ô0s¡ ˆißÓ"a?J"ç¬ob¶vR92|&‘ÆÒ}b¥‹ZÂ\“4£R'qfÿz~c¦ÿ>§>`Ú„d8(([§päMS(ñCCk–&¶±š_»Vûຮ¿ZÀBçéXÈŒ¢,? ™Á¶€…Ó§c!3&ç³ÐN'iý,d†î|:OÈBÆïÎgáø YÈøçù,œ>! ?>ßšUڅǘ¦2ËËóPeÃC™}äy¨² á¡Ì@òðä–oÏXêÎk7Øã®ðá'ˆèKº«{1å(?·5YÚw}– W„(%ôs:Ûšž JDî ÓŒ¶²¢î G fá~3òÁÁA$<¬§Ó¼Kĵֆk Oq1ÅK4ƒ£ß®‡çzÀˆ€p«i$¾ì9¾æQ^qg…n÷ê‹ñüî9§H Îå©^)ì@‰¸<'M_3ƒFÔÔx—<æw”ôMWWFún*íûÅðãE(›½`1;£é— Öw‹Â\ži4θóg0 >N(Óðø·³Bi±Ç…DÛÇ´~ÌYgEiƒÍi¾ÛÆ9i{j&¡2ûx•Aoyf7kn1¯2iliËéÕ'®1¡ã(S±­ˆ·ªeé&®Ùí|žq¢¦5“ZþT­‹)›6ïéÎ7oØÄñA ØH^F3g}§è Çú~€à¦»º~¯í5Å£6òx M.ÒÂ×éÁ<8z4U¸—(¦ò6ØÏ)š‰=¿…1øÖ60Ywì¶›³rï6G!kªÅ{ç‹(Fø£ˆ‡ë–oû.}{ÆË…?Ô(~ùAûÑ­¶Ü÷9&Ù@ô)ÆèAî/©§¯7S”ªÕéÕ…F‰SAÃ^@ðØŽ ðH!S½Òé0?ˆŠ(†ëDpKCsìÕ-˜°Tàšï’åá0δFrÑä—Y´¦p Éàäóó.Áä BTϨ0ð #ṑ"ÓÓ S±ñªç:TÞm>O‘ÉÌ—Îz0°ítÙ"ýØ:ý‚ŽUôŒÄÞ_Êrô_ÄÖO±§ŒðúÆõ7 †[ÜhšŠØËo"¢—àð•lÍ%ŲI{ÙŒ»÷9™‚¿oíŒêÇ(Âú¢ÔúÿUÈFºíwyÚ¨ìf)”AJ`"òϯa–añÙ¦¶PhíéŠt¢¤Þ“L&ßûÐJ—L¦¤V¿A Så_ŒÒOþ艹úÅ©¥€.ÔÊ¥W[ØÝ_ç}ªŒ x ÀdªÁbùº÷z¤^GCŽXóÑ쎢ÖQÕX˜¤úêˆõõ4¾f¡æ)ná Ù‡_Èhú%¾³9º‚ìpö"^x‰ïŠhÄ1uJ{O÷‡gó!¹ºÞN¬®ç‘bw³Æù&“È éž„µŒ¬—G¨ÝªÖMÐ¥@Îá­áQ&ö^Î|iÇÖSa¨tbfÞÕÍXqL‡˜àGÑÈý‘"Ž{ŠÔÿ˜K ¦ RÇdð_°¢ÙË%ž±ª;iH21íûfJñ¿Ùa§‚r‚nš2:åø6Aù\ùfåѰ‘F¯xëö\šŽÈh8éoe»Ž&ש¹K÷êÍIµ3ó“ù(ñº½õ0ò³\y8ƒ;üê!ÍD³U5zFR¥Šê‹‡3š·>]~ÜNÈ`*Å·ŒlIcŸ‘Ô./§LeÚ4x}LIÒL`G_ñþŸæ¯Úô²rox·áý1As›þÍþÐb%‚æN¦x+4Ã)»­/þòŒ’ mi3v†ýLšvûÊTVP‡¥?¡ƒd °ìŒ^“¼z…§×%/¦ÓOrPªÝŒo¯HˆúÏïF&ŒßÎö¾]¤EAÈìu×P|lƒiŸì_A{^;ºNß²hî4 i]eÇIŠö AdþDo*9êÐwwªc`V3\˜ˆˆ<£TÿøÞÁÏo%Ú¢ìrJ ¤ÃÍGáÏä}ÍFá G8 ¦P ðvë"ao~Ý>ç á¾ôW6G—‡ÿ¼»ãÖÒç|‚P ^»ìò8—m hx+C£ób×åðF·tG¥¿pàdØi#™v«E–r4£”|¾àì®f,GèŽÌé(õc /òd¶2q™ãì…û¸Q½ÄH®4ók¸ZZÊòíSxú×v¶O!åçÙ>•t´Zën_ÚdçRBy‚ÕK• _ã¦'’¹³ÔòðªOÀF¥  ç#ÃÒÙuÈó±ÔB%‚{8Ï0T7YR.ØÝˆü>+ÀÔ·*‘Ð’ðkþë¬OïB‹Ö:"-Y-Y*‚ysž^‡x„ŒEÕÔ|3w0ݶ6O€°W¸Å¥ÌÚ‘´Á«×Íò8O[­ò`+%¹õâ®$ýÝÎâg®" ÑxGepj çƒÝºêr2‰†F‰ó ¨W«Uâ'·t&"1ö?£¸rÆøƒ[0ÌÓÕy z?m¸ažmbÕUg`ªYµÏñiy~D¹yˆÇ¶â‹×OÂñäeÎ_äqÐ&æO¨ÌqãˆEµ VÒ³x–þúS=û˜°ö*±ô{0’¼ håÕ›3Êç\+”Ö{MK[÷^È .†ÜŽÉ(ê[§_ÜŽ‰GîKCaDfx?¯8/'CQøÿö®½§$‰•ÞH6&ˆ²DrLÖ%ೋt $Ö:klÑ-ßýªªÓÏñŒÉæÄüƒéwWwWuWWýúéð»õ¿ÙG޲êùv¯b–‚= .Ý9ûr|×Ôƒcëõšm¿Œat’|á1¸ÿ!½l‡a…¼¡&ûñõ0BQÊeÐÒ䀹+z˜Œg³4™¥cäÂÜNu¾iœ, 0QïaÒ­¿žÕ¿4= ¢ž>ç¸*úVî¸*z¥Xs¾Üã²è›õ 7©è––4; `1ä*ñ}¬6¸qn†8ñ•e%]t fíá3ôV]*"j_Ï¿µ¯'“`öV†m •†fv-šGoO i(Àd« ¼íýò×&[™~ŒÌ‡^²ÙxjÚá(¹yåà]›fðzoÊ©Âe,7¦­iÞ¾àË U ±¨å¯‘úýF¤ž;"XuDŸ’tÈqYŒA±â¢£“סº‹döv¼0Á•E 2.ª³·ãt¼øiõKdçqÑyÌý¤@ÇÖ²gÂ!˜ñ,N‡?@ZžN’Mas%«õÄE(ƒ…Ùh>z0.êÝFÛ`öÓÖéE(;ƹÓÔÌß»ÅT ŒÇÉ/€}¢£` %ð2(Šfœàèz©Kµ¼–Û@õa~ì°œñ’þÃ=&læ›rÆSý¨¿°äd^½ZýBÒóR™oýµâ“§OéÛŸ‹ël!Óx:ÿ{+åðÓ‡äÀzðâƒÈØ2âÝ0%%‡°üE,HQ °×õÞQrÂ懋Û»ä×j@äÕ$þªé4DˆX(p>•§~i*/SlÐyo·Ê~WeÿÉŸŸb¼¾Ç—ª¦lô}‹Ÿ¢7É‚Þ-ó² S;nݶ„ºpG&¹Ž$ ä†5Í»‹[6Ëɯm‘rÏŠ"3\$¦9.!êÑ šð ÞªÅP)ç=‡M—rØÔà°µòV±Oü¨n<6À` «‹*˜K¸ÑwªWT©Ø`‰é‘qaÛ(}¤<¹3ÌåɆò …î,PlØ®Ô#yB:,qi°YB eSÖ¿¾º‚ßȾÉ3h‘1õH×>þ—¤>ÈiDK§c'É<›‰Fød6?G<¸( ¡ÐDÎä”XöNà«Ûm %ÌÅÌ k'p+4ßêî™"H!åÕÞ½aƺF;<üW#T†¸dÖ™®á£HÑ"%Š"3ìÏ?Í.êñ ª‚²ª ü¸ª<û2}f£(‰¶Ën]2%IIÂïÎn¦Öо+0U ¤ÚK*[Úg_úNcõxþÜY 7w9it›­VÔšS+x£—õoƒg;¼Uh«Ï3»GÛÛv„A¹cš»â©$”"·»âϣ⽂Î!æ{Š~¡¸ƒ•÷~ÂÕl>JÇñ„Ü9C|–g•\ð*™L~Hpæ&ŠTŒ $Ùk[ï2§’¾EæØALhÅñäexÆâ¸Tù|´Ë¶YíÒœ<7q4ÏQ™~¤ÓŒ‚!‚|£+¾#h%¦ÿÍ|ÆG¬2ø»­*¯b‡ñÿ PäVU6ŠYãqDæ¹Hup«*ÚþÐfÔ_x}uÛã!lù׿ö÷©´Ú­è–Ͷå‘^Ûòt»mÔ¾§xeF¬/ʸý²îty¤2Ë]s]ãì³Yþ-Í1AijU8>Ñ-ÃçýKÖ|ÿñ_ý’}¸è¶^xÆ@·B ßï¬t[·ò=Ýýnƒì«¹=~'ç*Æ!Žyÿã\üà,ô³èØí»c‡ƒuƒÕê^øëžc—+·>C§_á•¿DË'úQ`Á^²ón÷/ úÿó‚)`Ûkd× 7 : ÍR߀\#Y‰ÏÊ´¬À%»Ì @ÁZ¬¯ô”"#d‚´ »žÈ !ÅSÖ=aƒ8’¾„¼né9Ÿ•!=j^ð÷õh:øiêp°pqé”^O}â3ǃÅ5 tV†Pá@î‡Ó—*„jI\ÁIõ?ǃƉÅûã߸ùHë ãˆÌæÃ©–!4ï]ùrXfrÄ׆0} É3ÿÚÀ_²»… ¸J}ŽS…Ä߸Aü½áõ€bõ׆V© ò‹“51 ¬“\O‡è63¾BwŽÍ¡!dUbС|Á§È±…¾%蟡f Dë""2þºJ{é¾Ì! œOéF¤´Ÿ¿€4ýa.(J("8»VŽLŠ<²*ÔòHòüÎ^îíÕ -¿W?ôjØdŠcûÞK~bqàO:Ó×;föû².bŒ·\í ºªš„.#¥ëÓÔVÞªÜÞjaíÙ“VUËK—-5Ïu¡[£žÓ{oµAkDV@ÕG‰å„âÔë˵zN9ÆÀ˜E˜¤¯Ë‡|íÇ‹~r„•ýɹ¯qzþOqˆ¿#† €•ðѽjUÛW¡$²<°°éóǪ’ý1Ç¥ò B5<Û$ŠÂ_`ŧiü}$4ŠDr+0ú,’4™Ä¯ýù-Ë+žŸL®>ÄÈ8Ùší‹÷N6 $  `¦³†'ÓY#Ú{7ü: äÂk½.žìô\20:ê²u'ñ͈lZ ÇœÔh+Š™Ì0îØ’òÞäÙ{qǶè—ó„f—ü…æ‰v°•²_Á²¨9ÓGÃñí2 w9›ýœ´üË*“÷¬ÚºZjÀ¦yÝê’úâ]ÆOž,FýK§ÛkôZMöö¢Ñ9aÝmrfi·z­ÆûÖ¿É›åI «Õ¿¶jX5fïàgï]§ó±Ý“qÅÜ+íc%z‰ã=0é6ÖTàˆ¬ò¯Vó‘ |º8 ÐvïSiú¡llÔèT»æhžŒ w 1®ÖI«qæU @Åe\ƒä+<¸fÔ/µ*¢ær®+©0΂ÎèQQQØŽ’æÍ³Æùù»÷]ÝÞ66´4"=”D‚¢Ž—‹Fmµ×½{€ ×Z•ä@<{ˆ`1·PÙm¼˜…­nGx`§„Ãú1ÌJYˆŸÜŒÑ´Ï}[[V‘ùýÇ·Ä*=ñ}yzÙ A£Ÿ-ØÁÀé}÷ùËš f–Žù;« Cɼ}‚¦õ˜¿Vä¿‚®ˆßíÌ´Io™Æ+‰`xKŒª®Mb-®×ö¦çV~ î§²ùaXe‹ÑÚÑÙ ’cx´OaÀ‰dBÇÊA~Ã^ÖŒ%Æ·{öRÅ,œÔÇÇœLl«º[0£¬ëwV;°—39I;Ÿ±É—&UèãyxÆR³þ†$λx±ˆ߸z ‹vò…±j!yí¯kI-Ü’ÇšüÄO\ÉŸ¡])eù1ôs°uƒIc†ž¶þ¹vLHM„‚ìG÷Žß›ýTˆ¨¿»ØDlc#+ÀŸ Z-Êæpìß°Z½@z¾AŠØ,*rTx,at•Hð:Ë…¬œïíœX¿ž²ÕãÛ/O‡û"­ùFß­7¢§â1'ãbïÂÇó~,Ÿþ ò™ÕÙçC®B²ø„ïc"e”ʘÆl6ŒIß'âϓňÇ>$R®±Ÿ‚ûó½–ªo*j{ôÇ í.V‘/æ]+•&Ãx‡…ÛšE¹goA“¯”[ˆ…Òï—L_1Ó”L¨§ÏÃË/PÖQɺ_u+ ['ç½P.øÃ4e@sëß/†rQCŒZѤ‡FÒR#¦sT¼ÆWfÆ8-7…:• knÊTöe ™­ŠŒAt; zpBЧ<´1ß c±Ìšïp¹¦ÉB´›«Lâ ’˜È,%€°‰º^,’©´|aÒ|þæä¤“¶ e„çµÓiµsªÑÌžŒå]|ôN«±´9¥Ï0 ×–!Â+¯¾—ëmy ¥‚ö±rVGìãxO’¯Â›«"^lœ4«YK ÕXºþâõ¯x£¿¼ê¥Éö§Yí°Åÿ¥> Ø7óú²ÇDË0v²µZü+£&Ý1éÞhI>ëREBÅöwÂfý¿PK yºZ<IAR-STR912/micrium/.svn/UT •LjKʈKux êëPKwºZ<"œ¸Äù.IAR-STR912/micrium/.svn/entriesUT ‘LjK‘LjKux êë­Ž»NÄ0E{‹_I<3~%é(i—­¶sœñn–ÍC¶Ã÷`…D‡€S]®î!†1 M$.¥¬¹“2¬ëV8—:¿Îu^¶8.éÌõÌEî·´,å«$KÚæ¹Þ|ÙKS–O‡êùxh‘ä4†4nÓï†Å´èŠÔ©3С­qìI(2âê'ÎçÄó<Îgñ›ž¡ò Ô>òž‚ª±ž]x0º¢ÏkDo,>?î= ŠÜ\‡m§u œ„n¤t£éMDpA) ˆÞÙfø“î‹VÙ»ÖågZ}0ž5›62ÓÐÛ½'ÁCD²ÿ¡ÕÒnõPK vºZ<"IAR-STR912/micrium/.svn/prop-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/micrium/.svn/text-base/UT LjKʈKux êëPKvºZ÷Yƨ̃áÇKI˜§“Ä÷DÙLõX‘‡ÿÓ/(ýþ;ž>%)ÿ§“q¥¾eêŸO¿¬õ­ÕɧNÚ­+ø—¼?!Ÿº%(Êè>)ýI¾Âú÷ú‚sî–CL[ûJttˆµtèl‡\SîV̯6¬›r ôÿ)ögsås_œ+óî¨P N}€¶:DuWP Ôþ7M_aˆ Þ¾æ'?Apm˜,ˆŒ=f™r8˜FʸBpøtÞòYwÆ .}Ó3V¦¿×j¤?©&ß~ßÉœÕ`œt2už¥–2“ú²(Œú%ºwÔJ~ŠŠx!L&ýQŽžpÜž¤ûè×p2¯äõ(]KÊ*@»ÃiÅDóÌ —謇ã¯<ÐFÃv ï¡’|  ;CÐg,ˆÒtÑÃî f4m&=a.ù¯³­Ä¤»+œ@:Ÿi(t·°‡œˆ³KìÐ퓢;ÚÓ—NK—+å3F2g‚Ž¡òq6œ*CËðæ+½§_‡ ø_ŸÅE/ižWß§Š =1]’…÷©’óá8·$¼O•”ám^Ix”ÜY-a2¸œˆÔ‰IÓùt[)çm,BŽú=*Ú€Ý~kžå— Ô…Ô)ªA²òJW¿êNX>*›_4ZÁ‘(]:]6*'KÊ8¦î”r£pÇ8)v ƒ'é ¡ÔxÚ»õé0ߟ̳˜z†»ê+ÆÍ-©”+;²ïI½²Ò—Dá¨ìºµ0®Ÿ½éÚÖé×ìšôaÃQ}ÎnYÈÿ–éïú vXì¬f°®ÒÓ]Í1X¤ò3ÁO†jB@ãÒ(æ ×2ˆë¯V6„w+UûªÞè¨àÜøKã\İlK>Hºç;‹<&¶§ãÊûÀVÝ|K£Äƒ%³+hªi²•ÂÛwˆº‚@F£Ë…l½ïJ‡ÈNÇd ö×é0êÂE5|eÅRÁ Ð·èœ‡Ô—öÂ7õm¬Ã1û6G`“¾ÿî7æ™^ÉQ¼hŸ–r§šg,Àϲx©ŒÅÑ'™®‚B\ymÜ4—ÊTѺ­©™#[Ý£jÁÝk7TbEœÙ'œÝBžx bìŒFqæ^òÆÎBÞXq¹hô'è&6ÏÖá½Ï¦ÿöר7Ï»òìA5]ÛᤌoxÝ.ä(Ü£,@ƒ ç'QŽ*¨_ ¼*ÙåÒŸÕ¥/̺½ágÆ•Pͧ?s9`êC€b­„F(i@ʰ©k‘¾Û÷V¾GT7–] ÃŒƒ°«àÌÞÿ ‹R«¦Öpêîâ„N0C'x«žPdýW礑³¨ð*»Ê¿Š—~^åMȇÝ"¢ñ ÑHÄ™ó_~!o›ä?)ðõQôš_é‚ćh¾´›\wdòÙ&LRØô³Á?ºâ½5ÕWKMH¾é9?»±†¡9ˆ¾x܃®:<œ–O ¥8}áuYÈrÀf aFóFУ<dž±1Ù“„qÉã9 uÇ9Tühað¥ô³ ÕŸ_O0…$+`yú|L´Yú.ÃT–§ÏGY£ï‹‡Sy8$^rú0Ÿþï»í|Ne}6+~A¥C \Ðxâü–Ÿ…Žb˜íÅ RP¡ÝB†ÀÈÌ2p%HãpêÿB˜ôF}©ÑÜ#÷·†v‹ºfªËܲ]E[ùŠzàæ:ÁÃÞ°A`Œµ<ã<¥ˆGBM ÈïoUeVt„Ê1ËPª¥ƒoê77:̲<³]×@c9ì±EvðÅÀ¡Ü[lÚ÷ù)tÙªb$žœÇIöšÀ—\Nä¹·kË_†©2¸¬Vx&õý¹x¡]ÌcÀG5q>6 €kãÊXømMà¡ôlOj†9Àï¶µäuf.ba ­ðñ uî$·º†~|F'‡˜Ë!>*sIû0v}îÈù9á~*½îÇf6(‚ç»JÌáà;Ä‘GL¹ Ñ$¿ÅátsèMFÆîÖþ‡¡,5ÉßÎI \"ð‰ðm››€Ýô9ÄY]P3ö;¶PXñ¤¨ˆ¤µkrÔjo€¼SygäGu‘o€ü¸.òÓ ¿­‰¼ÝÚùIMäM¿«‰üxä§5‘Ÿn‚ü}5ò“õ¼]£_Ÿl¬èí}ôdcMo×è¤'«z»F/=ÙX×Û5ºéÉÆÊÞ®ÑOO6ÖövŽz²‰º/ôkÕ7½4ö° þ½Ûq>{xr×¼1ê¤LƒGºc××ñǺ¦CFK>Ò#£8vØ%þžÉ'ÛÀ#{Bì ½±'ôÅžÐ{B?ì ½°'ôÁžÐ{Bÿë)½¯§ô½žÒózJ¿ë)½®§ô¹žÒãú¯ò·¢¡tnßܘúº>—j²ÃÍ‚Bz& Ýœ€þÌVf½„Ñ(vûÐç¢õªð¬h™~UXns¯*İ»>S„·*õAÁV÷]Å_­ô0s¡ ˆißÓ"a?J"ç¬ob¶vR92|&‘ÆÒ}b¥‹ZÂ\“4£R'qfÿz~c¦ÿ>§>`Ú„d8(([§päMS(ñCCk–&¶±š_»Vûຮ¿ZÀBçéXÈŒ¢,? ™Á¶€…Ó§c!3&ç³ÐN'iý,d†î|:OÈBÆïÎgáø YÈøçù,œ>! ?>ßšUڅǘ¦2ËËóPeÃC™}äy¨² á¡Ì@òðä–oÏXêÎk7Øã®ðá'ˆèKº«{1å(?·5YÚw}– W„(%ôs:Ûšž JDî ÓŒ¶²¢î G fá~3òÁÁA$<¬§Ó¼Kĵֆk Oq1ÅK4ƒ£ß®‡çzÀˆ€p«i$¾ì9¾æQ^qg…n÷ê‹ñüî9§H Îå©^)ì@‰¸<'M_3ƒFÔÔx—<æw”ôMWWFún*íûÅðãE(›½`1;£é— Öw‹Â\ži4θóg0 >N(Óðø·³Bi±Ç…DÛÇ´~ÌYgEiƒÍi¾ÛÆ9i{j&¡2ûx•Aoyf7kn1¯2iliËéÕ'®1¡ã(S±­ˆ·ªeé&®Ùí|žq¢¦5“ZþT­‹)›6ïéÎ7oØÄñA ØH^F3g}§è Çú~€à¦»º~¯í5Å£6òx M.ÒÂ×éÁ<8z4U¸—(¦ò6ØÏ)š‰=¿…1øÖ60Ywì¶›³rï6G!kªÅ{ç‹(Fø£ˆ‡ë–oû.}{ÆË…?Ô(~ùAûÑ­¶Ü÷9&Ù@ô)ÆèAî/©§¯7S”ªÕéÕ…F‰SAÃ^@ðØŽ ðH!S½Òé0?ˆŠ(†ëDpKCsìÕ-˜°Tàšï’åá0δFrÑä—Y´¦p Éàäóó.Áä BTϨ0ð #ṑ"ÓÓ S±ñªç:TÞm>O‘ÉÌ—Îz0°ítÙ"ýØ:ý‚ŽUôŒÄÞ_Êrô_ÄÖO±§ŒðúÆõ7 †[ÜhšŠØËo"¢—àð•lÍ%ŲI{ÙŒ»÷9™‚¿oíŒêÇ(Âú¢ÔúÿUÈFºíwyÚ¨ìf)”AJ`"òϯa–añÙ¦¶PhíéŠt¢¤Þ“L&ßûÐJ—L¦¤V¿A Så_ŒÒOþ艹úÅ©¥€.ÔÊ¥W[ØÝ_ç}ªŒ x ÀdªÁbùº÷z¤^GCŽXóÑ쎢ÖQÕX˜¤úêˆõõ4¾f¡æ)ná Ù‡_Èhú%¾³9º‚ìpö"^x‰ïŠhÄ1uJ{O÷‡gó!¹ºÞN¬®ç‘bw³Æù&“È éž„µŒ¬—G¨ÝªÖMÐ¥@Îá­áQ&ö^Î|iÇÖSa¨tbfÞÕÍXqL‡˜àGÑÈý‘"Ž{ŠÔÿ˜K ¦ RÇdð_°¢ÙË%ž±ª;iH21íûfJñ¿Ùa§‚r‚nš2:åø6Aù\ùfåѰ‘F¯xëö\šŽÈh8éoe»Ž&ש¹K÷êÍIµ3ó“ù(ñº½õ0ò³\y8ƒ;üê!ÍD³U5zFR¥Šê‹‡3š·>]~ÜNÈ`*Å·ŒlIcŸ‘Ô./§LeÚ4x}LIÒL`G_ñþŸæ¯Úô²rox·áý1As›þÍþÐb%‚æN¦x+4Ã)»­/þòŒ’ mi3v†ýLšvûÊTVP‡¥?¡ƒd °ìŒ^“¼z…§×%/¦ÓOrPªÝŒo¯HˆúÏïF&ŒßÎö¾]¤EAÈìu×P|lƒiŸì_A{^;ºNß²hî4 i]eÇIŠö AdþDo*9êÐwwªc`V3\˜ˆˆ<£TÿøÞÁÏo%Ú¢ìrJ ¤ÃÍGáÏä}ÍFá G8 ¦P ðvë"ao~Ý>ç á¾ôW6G—‡ÿ¼»ãÖÒç|‚P ^»ìò8—m hx+C£ób×åðF·tG¥¿pàdØi#™v«E–r4£”|¾àì®f,GèŽÌé(õc /òd¶2q™ãì…û¸Q½ÄH®4ók¸ZZÊòíSxú×v¶O!åçÙ>•t´Zën_ÚdçRBy‚ÕK• _ã¦'’¹³ÔòðªOÀF¥  ç#ÃÒÙuÈó±ÔB%‚{8Ï0T7YR.ØÝˆü>+ÀÔ·*‘Ð’ðkþë¬OïB‹Ö:"-Y-Y*‚ysž^‡x„ŒEÕÔ|3w0ݶ6O€°W¸Å¥ÌÚ‘´Á«×Íò8O[­ò`+%¹õâ®$ýÝÎâg®" ÑxGepj çƒÝºêr2‰†F‰ó ¨W«Uâ'·t&"1ö?£¸rÆøƒ[0ÌÓÕy z?m¸ažmbÕUg`ªYµÏñiy~D¹yˆÇ¶â‹×OÂñäeÎ_äqÐ&æO¨ÌqãˆEµ VÒ³x–þúS=û˜°ö*±ô{0’¼ håÕ›3Êç\+”Ö{MK[÷^È .†ÜŽÉ(ê[§_ÜŽ‰GîKCaDfx?¯8/'CQøÿö®½§$‰•ÞH6&ˆ²DrLÖ%ೋt $Ö:klÑ-ßýªªÓÏñŒÉæÄüƒéwWwWuWWýúéð»õ¿ÙG޲êùv¯b–‚= .Ý9ûr|×Ôƒcëõšm¿Œat’|á1¸ÿ!½l‡a…¼¡&ûñõ0BQÊeÐÒ䀹+z˜Œg³4™¥cäÂÜNu¾iœ, 0QïaÒ­¿žÕ¿4= ¢ž>ç¸*úVî¸*z¥Xs¾Üã²è›õ 7©è––4; `1ä*ñ}¬6¸qn†8ñ•e%]t fíá3ôV]*"j_Ï¿µ¯'“`öV†m •†fv-šGoO i(Àd« ¼íýò×&[™~ŒÌ‡^²ÙxjÚá(¹yåà]›fðzoÊ©Âe,7¦­iÞ¾àË U ±¨å¯‘úýF¤ž;"XuDŸ’tÈqYŒA±â¢£“סº‹döv¼0Á•E 2.ª³·ãt¼øiõKdçqÑyÌý¤@ÇÖ²gÂ!˜ñ,N‡?@ZžN’Mas%«õÄE(ƒ…Ùh>z0.êÝFÛ`öÓÖéE(;ƹÓÔÌß»ÅT ŒÇÉ/€}¢£` %ð2(Šfœàèz©Kµ¼–Û@õa~ì°œñ’þÃ=&læ›rÆSý¨¿°äd^½ZýBÒóR™oýµâ“§OéÛŸ‹ël!Óx:ÿ{+åðÓ‡äÀzðâƒÈØ2âÝ0%%‡°üE,HQ °×õÞQrÂ懋Û»ä×j@äÕ$þªé4DˆX(p>•§~i*/SlÐyo·Ê~WeÿÉŸŸb¼¾Ç—ª¦lô}‹Ÿ¢7É‚Þ-ó² S;nݶ„ºpG&¹Ž$ ä†5Í»‹[6Ëɯm‘rÏŠ"3\$¦9.!êÑ šð ÞªÅP)ç=‡M—rØÔà°µòV±Oü¨n<6À` «‹*˜K¸ÑwªWT©Ø`‰é‘qaÛ(}¤<¹3ÌåɆò …î,PlØ®Ô#yB:,qi°YB eSÖ¿¾º‚ßȾÉ3h‘1õH×>þ—¤>ÈiDK§c'É<›‰Fød6?G<¸( ¡ÐDÎä”XöNà«Ûm %ÌÅÌ k'p+4ßêî™"H!åÕÞ½aƺF;<üW#T†¸dÖ™®á£HÑ"%Š"3ìÏ?Í.êñ ª‚²ª ü¸ª<û2}f£(‰¶Ën]2%IIÂïÎn¦Öо+0U ¤ÚK*[Úg_úNcõxþÜY 7w9it›­VÔšS+x£—õoƒg;¼Uh«Ï3»GÛÛv„A¹cš»â©$”"·»âϣ⽂Î!æ{Š~¡¸ƒ•÷~ÂÕl>JÇñ„Ü9C|–g•\ð*™L~Hpæ&ŠTŒ $Ùk[ï2§’¾EæØALhÅñäexÆâ¸Tù|´Ë¶YíÒœ<7q4ÏQ™~¤ÓŒ‚!‚|£+¾#h%¦ÿÍ|ÆG¬2ø»­*¯b‡ñÿ PäVU6ŠYãqDæ¹Hup«*ÚþÐfÔ_x}uÛã!lù׿ö÷©´Ú­è–Ͷå‘^Ûòt»mÔ¾§xeF¬/ʸý²îty¤2Ë]s]ãì³Yþ-Í1AijU8>Ñ-ÃçýKÖ|ÿñ_ý’}¸è¶^xÆ@·B ßï¬t[·ò=Ýýnƒì«¹=~'ç*Æ!Žyÿã\üà,ô³èØí»c‡ƒuƒÕê^øëžc—+·>C§_á•¿DË'úQ`Á^²ón÷/ úÿó‚)`Ûkd× 7 : ÍR߀\#Y‰ÏÊ´¬À%»Ì @ÁZ¬¯ô”"#d‚´ »žÈ !ÅSÖ=aƒ8’¾„¼né9Ÿ•!=j^ð÷õh:øiêp°pqé”^O}â3ǃÅ5 tV†Pá@î‡Ó—*„jI\ÁIõ?ǃƉÅûã߸ùHë ãˆÌæÃ©–!4ï]ùrXfrÄ׆0} É3ÿÚÀ_²»… ¸J}ŽS…Ä߸Aü½áõ€bõ׆V© ò‹“51 ¬“\O‡è63¾BwŽÍ¡!dUbС|Á§È±…¾%蟡f Dë""2þºJ{é¾Ì! œOéF¤´Ÿ¿€4ýa.(J("8»VŽLŠ<²*ÔòHòüÎ^îíÕ -¿W?ôjØdŠcûÞK~bqàO:Ó×;föû².bŒ·\í ºªš„.#¥ëÓÔVÞªÜÞjaíÙ“VUËK—-5Ïu¡[£žÓ{oµAkDV@ÕG‰å„âÔë˵zN9ÆÀ˜E˜¤¯Ë‡|íÇ‹~r„•ýɹ¯qzþOqˆ¿#† €•ðѽjUÛW¡$²<°°éóǪ’ý1Ç¥ò B5<Û$ŠÂ_`ŧiü}$4ŠDr+0ú,’4™Ä¯ýù-Ë+žŸL®>ÄÈ8Ùší‹÷N6 $  `¦³†'ÓY#Ú{7ü: äÂk½.žìô\20:ê²u'ñ͈lZ ÇœÔh+Š™Ì0îØ’òÞäÙ{qǶè—ó„f—ü…æ‰v°•²_Á²¨9ÓGÃñí2 w9›ýœ´üË*“÷¬ÚºZjÀ¦yÝê’úâ]ÆOž,FýK§ÛkôZMöö¢Ñ9aÝmrfi·z­ÆûÖ¿É›åI «Õ¿¶jX5fïàgï]§ó±Ý“qÅÜ+íc%z‰ã=0é6ÖTàˆ¬ò¯Vó‘ |º8 ÐvïSiú¡llÔèT»æhžŒ w 1®ÖI«qæU @Åe\ƒä+<¸fÔ/µ*¢ær®+©0΂ÎèQQQØŽ’æÍ³Æùù»÷]ÝÞ66´4"=”D‚¢Ž—‹Fmµ×½{€ ×Z•ä@<{ˆ`1·PÙm¼˜…­nGx`§„Ãú1ÌJYˆŸÜŒÑ´Ï}[[V‘ùýÇ·Ä*=ñ}yzÙ A£Ÿ-ØÁÀé}÷ùËš f–Žù;« Cɼ}‚¦õ˜¿Vä¿‚®ˆßíÌ´Io™Æ+‰`xKŒª®Mb-®×ö¦çV~ î§²ùaXe‹ÑÚÑÙ ’cx´OaÀ‰dBÇÊA~Ã^ÖŒ%Æ·{öRÅ,œÔÇÇœLl«º[0£¬ëwV;°—39I;Ÿ±É—&UèãyxÆR³þ†$λx±ˆ߸z ‹vò…±j!yí¯kI-Ü’ÇšüÄO\ÉŸ¡])eù1ôs°uƒIc†ž¶þ¹vLHM„‚ìG÷Žß›ýTˆ¨¿»ØDlc#+ÀŸ Z-Êæpìß°Z½@z¾AŠØ,*rTx,at•Hð:Ë…¬œïíœX¿ž²ÕãÛ/O‡û"­ùFß­7¢§â1'ãbïÂÇó~,Ÿþ ò™ÕÙçC®B²ø„ïc"e”ʘÆl6ŒIß'âϓňÇ>$R®±Ÿ‚ûó½–ªo*j{ôÇ í.V‘/æ]+•&Ãx‡…ÛšE¹goA“¯”[ˆ…Òï—L_1Ó”L¨§ÏÃË/PÖQɺ_u+ ['ç½P.øÃ4e@sëß/†rQCŒZѤ‡FÒR#¦sT¼ÆWfÆ8-7…:• knÊTöe ™­ŠŒAt; zpBЧ<´1ß c±Ìšïp¹¦ÉB´›«Lâ ’˜È,%€°‰º^,’©´|aÒ|þæä¤“¶ e„çµÓiµsªÑÌžŒå]|ôN«±´9¥Ï0 ×–!Â+¯¾—ëmy ¥‚ö±rVGìãxO’¯Â›«"^lœ4«YK ÕXºþâõ¯x£¿¼ê¥Éö§Yí°Åÿ¥> Ø7óú²ÇDË0v²µZü+£&Ý1éÞhI>ëREBÅöwÂfý¿PKvºZ<¹GðvL0IAR-STR912/micrium/.svn/text-base/bsp.h.svn-baseUT LjKLjKux êëÕXKs£8¾OÕü‡®ÚK’ò8‰§jjwsÂ;”°<&;' ƒˆU‹…WÈñøßD,dì89FÉ%~éëV?¸¾úüéê£7眩©›Ž?…¾¥9p}Û¶lMk#ƒ+yMÏEt z¶ÚRü¸`л¹ùvSQ¼^vÀ$Q÷PÎ2Òáä¨>-M¡ÐE9¢O(îØ4c(b(†ù0aˆ’ጄ)D¥É4ÜäÝz­c’mR?"È` y¶¦âÂ1‚e¸’1˜#XçÜË`C1CBŽ—8 i½ÒÍâuĸ{ÞçàôYWFÒm© £(£qH¸½ f ®6Å"9ªW’òE¶Nã¯(ŠqÎ(ž¯ÙN#ÙÂ&Üv?6‹®??ל¼çæ¯8ïÍÝÃãzü×ùë¶÷vQž"ÇÞ"hjÎÎÜw ý,¤ñÎë!Ï*.Ñ3ßß0ÏWÝEqÿ'$F @ô];¸NãLP…VpŒ h£‰Õ×&®Ä+¨Æ¿§ T<õè§xß‚Ä8i"åÞpЭ™ëi3Ïm"22€æÌ ¼¶˜Î?Š7G|¿¾âÕ™#N×+l»BÀe»¯ßYX¯·=4UÛ·gÛæ²gÚþc yLšH gñŸ2ÃÅ•ˆ‘=œéÞå… \ÞµÁ¡Ï5­ØŽåYMÁX '"Õ fª·%¨õl€s1ÜÔ´; ¼;Í<Ãq|»‘òvÍï|t‘„ ÝöE ºùÓ‡'dN; ÑVg(ßß±ñ2ˆà³,Hñß•Ç^õHˆ·:›&Р绩·æ5s—K‰¶ -ߎE¥M’÷ŠzÙãcŠNж8œ¶ïÞCß÷<^¢ ©À¬oYC›•àÚý`„˜ËB¶.ߌ îjÞrlÅÑzÓ¸r¸n¿ùû¤å.+ã aµY×6´±á´­¹+þ‡h¥ì ¥€T~‹©b¢`bŽî½&C°[T&Grj ü‰ØŽá3ïHÁÖÁD|i’âs2<{}|ÎúB)°_‡ÛY~÷Kïk¯u‹¿ul©\_{¼rÍÃuÐÙ„†Úß2µaë÷š#þ`?ƒùö5y—QÕƒü—ÏY1ÁÉUwbÅüÉêPœ°G {åÈ*PH9¥Î¦˜°äˆº$£Ëu Ûí¶½þ€èfëRÔ6uë(#\×…À±œŒù  Eÿ?‡£ÍékúøAs.èÖÔÖ<³oNLïG“ŸÓÄ|®€û2¶ ²Â©ìûµBå«. Ò¡0*«Aucxk&Ýýœd‰ûeb.&ÊÅj’êœRÇ»¿ 2¢HÌ5cäÁt)ãqØy•†\Ë\z¢6ã:î=Þ5X¾ça‘ۋ©ô‹j9à­ÔêJËPX•>Pm¼µj ²Âª”÷jÕ—y Õ¾~)|uXíÈm.Iº5š#ßÑŠ†ãXNm¢­ðçyhc6h¢NïÆá_PKwºZ<ž9ÇR‚V#IAR-STR912/micrium/.svn/all-wcpropsUT ‘LjK‘LjKux êëóV02å*.˳*O¶*JŒOI,³*K-*ÎÌÏÓ--Êá S03åÒÊåç—è'”–¤—è+EôêôLõKŠJó²õ rKÒò‹r‹õ=ƒtƒC‚, ôs3“‹2Ks¹\ý\¸’Š ô’¹¼ ÙgnH¹}ú»`¶fÐÑÖ °­PK vºZ<IAR-STR912/micrium/.svn/props/UT LjKʈKux êëPK wºZ<IAR-STR912/micrium/.svn/tmp/UT ‘LjKʈKux êëPK vºZ<&IAR-STR912/micrium/.svn/tmp/prop-base/UT LjKʈKux êëPK vºZ<&IAR-STR912/micrium/.svn/tmp/text-base/UT LjKʈKux êëPK vºZ<"IAR-STR912/micrium/.svn/tmp/props/UT LjKʈKux êëPKvºZ<¹GðvLIAR-STR912/micrium/bsp.hUT LjKLjKux êëÕXKs£8¾OÕü‡®ÚK’ò8‰§jjwsÂ;”°<&;' ƒˆU‹…WÈñøßD,dì89FÉ%~éëV?¸¾úüéê£7眩©›Ž?…¾¥9p}Û¶lMk#ƒ+yMÏEt z¶ÚRü¸`л¹ùvSQ¼^vÀ$Q÷PÎ2Òáä¨>-M¡ÐE9¢O(îØ4c(b(†ù0aˆ’ጄ)D¥É4ÜäÝz­c’mR?"È` y¶¦âÂ1‚e¸’1˜#XçÜË`C1CBŽ—8 i½ÒÍâuĸ{ÞçàôYWFÒm© £(£qH¸½ f ®6Å"9ªW’òE¶Nã¯(ŠqÎ(ž¯ÙN#ÙÂ&Üv?6‹®??ל¼çæ¯8ïÍÝÃãzü×ùë¶÷vQž"ÇÞ"hjÎÎÜw ý,¤ñÎë!Ï*.Ñ3ßß0ÏWÝEqÿ'$F @ô];¸NãLP…VpŒ h£‰Õ×&®Ä+¨Æ¿§ T<õè§xß‚Ä8i"åÞpЭ™ëi3Ïm"22€æÌ ¼¶˜Î?Š7G|¿¾âÕ™#N×+l»BÀe»¯ßYX¯·=4UÛ·gÛæ²gÚþc yLšH gñŸ2ÃÅ•ˆ‘=œéÞå… \ÞµÁ¡Ï5­ØŽåYMÁX '"Õ fª·%¨õl€s1ÜÔ´; ¼;Í<Ãq|»‘òvÍï|t‘„ ÝöE ºùÓ‡'dN; ÑVg(ßß±ñ2ˆà³,Hñß•Ç^õHˆ·:›&Р绩·æ5s—K‰¶ -ߎE¥M’÷ŠzÙãcŠNж8œ¶ïÞCß÷<^¢ ©À¬oYC›•àÚý`„˜ËB¶.ߌ îjÞrlÅÑzÓ¸r¸n¿ùû¤å.+ã aµY×6´±á´­¹+þ‡h¥ì ¥€T~‹©b¢`bŽî½&C°[T&Grj ü‰ØŽá3ïHÁÖÁD|i’âs2<{}|ÎúB)°_‡ÛY~÷Kïk¯u‹¿ul©\_{¼rÍÃuÐÙ„†Úß2µaë÷š#þ`?ƒùö5y—QÕƒü—ÏY1ÁÉUwbÅüÉêPœ°G {åÈ*PH9¥Î¦˜°äˆº$£Ëu Ûí¶½þ€èfëRÔ6uë(#\×…À±œŒù  Eÿ?‡£ÍékúøAs.èÖÔÖ<³oNLïG“ŸÓÄ|®€û2¶ ²Â©ìûµBå«. Ò¡0*«Aucxk&Ýýœd‰ûeb.&ÊÅj’êœRÇ»¿ 2¢HÌ5cäÁt)ãqØy•†\Ë\z¢6ã:î=Þ5X¾ça‘ۋ©ô‹j9à­ÔêJËPX•>Pm¼µj ²Âª”÷jÕ—y Õ¾~)|uXíÈm.Iº5š#ßÑŠ†ãXNm¢­ðçyhc6h¢NïÆá_PKxºZ<×ß:uÇaIAR-STR912/91x_conf.hUT ”LjK”LjKux êëµWMoÛ8½È —¶èÆ’òÕæFK´ET^‘J“¡Øt£Ö–RYÞlö×ïPŠ]›k±*Ð¥}ð›yóf81Ìàý‘oÝwàÆ“û„}Že]a>«J¹”³º*‹|¶†c¡§'ïa”/%DÙJÂnÝÀ'ûïé¬,gŠB6õcYÁþºÐõ€<=-óYVçeBf+Eö²Z¢hµ®­×9Wdër`4¥ÝÀ­¬Ö*Â>³š¹žUùS#²Sò‡*«^@‘ÙTMŽ3¤ÿæ¥ ðóu]V/7ê7ê8ªÐëƒB­ïâ¿›°_}]ü*>…IB9ðx$îHBáÎg®ŒÃ(N`œ2D.…8 î°ß2EcpS.â&î˜ð•¦7axH‹#Hè˜$²D…{©+8’ N<š4©Ð‚ˆ“[ ‚…ô oÆxˆj™›Ä4 ®H∹¸O‚¢XÀ‚OF†m$ItKýsµ¿”"ºÜ8âôÏwÎH ɘ¶›PÙ&HTµ(7h·0®¶0Jâ°i* oôFÀSlÚ®‡$òí– åBâQÞïu #Z ½Ym #AXD=ÜPB±IøE[„E©v6Evò÷OôàôD}Þä‹b.0ªW‹Mñ)¿AS^HÍzz2À‘*Ṭ¾A^ÀÃf±¾¸«r.áëß乜•«•,j¨%,Êå²|΋/°TjmÎÁ`«>|Uv÷"þƒÄh¨KxÚl­íËŽ¹+<²²µlS+ᲦãV³kñ‡d2fE!—V—Ãîr8]Žó.ÇE—ã²ËqÕå¸þÉC§!ëÛ¤êx:ÌŠoÖQ«}Ô굞Kõ/qÔ”Ø-uÇÒ¾RH5JáaÝW ©:¶tƒ­Ý`nÒxÂâÎzöß!EÔ ¥a[ÃŽ†Ï5|¡áK _iøZÃ5üɸÓD˜O‹½®!Õ(Å]ó8ì„h %i5…æ’R’ˆ^ÏQ5hiØÖ°cnŸôlŸ"ëšOa—D}RͰ¼Þ“€TóÁà{ ÞØ(ÅœÞU!UÇ–n°8ЈvÏ‹~€#·UûðpD³¼˜ºÕ˺Ζ°¨ä÷,f/ðW¶ÜHxûÙÿçÝ>¿½ÁìîLûÁ{sq é\Z–YÌóÅÏêùõµ»Ç5ú€×¨ý;ÛöÊu¬›¿ðß ¡}ïo÷ìYìvûÜÏØ’¸…ÏëWíÃ4Ô&¨Öø«mô.w:?ƒãŽÂ MXÄž&qd°Kõõ«Cè…Ó_0¨žSXøaÜ ˆ­ä|ž¤PNa¤j ,—Qøã½È¿v¸Ïó¬LLÖb¨ô‹nèåQÔ„?}¦O"Ý•pP´.•ªAÉ- ÊpÄJBWÜ8ç êÙu“Œè)ä¦Ó$Zl™1ß½“æj9’M=˜'åµY99 *|g÷Ë”exáâ™9=(«5”ª)xö Sr¥4½{ã<›ñꃽjJ„2–k¡ ȸülhB£8$o¶I”vxò€ö À“V÷銮| ~Ý??R»›ðm(cìØ³Â/´RuEªïº8y´˜§ü/D75ú»nÏêÅ{ýê_PKxºZO.v6æ0<>þ R¹¬ÄRäJVe‘×ðštï3ŒŠ¥€(»ðtÀŸƒW…:ÌõÒ¨E%aó:Ðó¬VË"ÏTQ•ÀEv«û™RÖ X]7b®ÿz4øãÈ$vBÖZ18<6Qç²X™ Ïѳ¢V*!e³R yWä’ªQE)êC¾ó¥SÁ‹/Šn4‘<+áZ@S£UÁܤ‰ Ùr j!@üȅɺ†º¹–ëÌÖaÔ"Sp›=@•ç„ûB-ÐÆ’=C;\ž-D 8]ñdx£DY˜™êêFÝgR`œûZfe¾€¬QÕ-FÉ1Ÿ‡ÇY+3>¯¤õª*çEùÖ™A–c»iY{žíI%×A–U6G˘®4ñ@ŠïECŸ ¸©–Ëê~#| :AÍFÜ®ÔÃAëU3¼—…Ò9͵êq’ x‹¬œ/qI €9¬.……Ù²–œ?çø³>ò1Z«äÉ~«t8Ô«ô÷Î*>ö}}¹‚ë¾ÿZÝ?!c>¦0IhJ#i<â3’P˜™7–Â(NàlÊ|yâ(¸ÂÂGM|Á|7MyÒ$…ãcÕ‹M‹0@H8‹#HèIL+NÉÀŸz<ÅA'>MÌdØ!%8 é!Ô„$!ü@#æ%1 ¨Ç“8b^ é˜D1‡S cø0rP“D—à³Gàdí;»¼8JéùÍ3€OBrF×>p¶ ÔÉè^Ð:OXª=Œ’84ì0G¹‰7‚tŠÜž0’È?j=Á4¥ŸÂéå0T´1¶iµ #NXD}4”P¤„/l‹0)ÍÓ$ÙEùþ‹úh̗ ~Ý>¬‹øâÃþÞþÞÑ;Ïd¶Ž¦ÌMán·˜–sqƒå`~5n¿Ö¯Tø“u‘}Ô>iðÛ^+Ù´­O”V®µ¹ýDU)ÌGب͞çŽD¨F–/;Þ÷BÜwU1éû£nþ´¿÷÷þÞ?ÿûtÆÞ@½-»5ªC½aÓä‰7Bå‹H¯Pª´²ëJ*ǰo·Àžhl;€Ÿg*s’yǰà#v¾nT9ÆyçÊ3ÿì ïußZߟ£xãF^Š¿Q+˜w][Ù.w§Ž›¦“Ð;žmTð$L¾íŽÝÈÝ$¿íÜ|Þ>w>· ŸŒwg¯Õn¢ßòm‡ü ù³äÖÉ{‘:K~hü—^ä¿8Kþ‹]òÓôt<Ù½‘»É~Û¹øA?ø»ðËðSoÚãÊ›º ¾ëÚvQ¾;w_ËÝ$¿eÜz?$=ȇÄMî]×°{$Ú;ŠÝÄÞum{èíN=ôÜ„ÞñlãÈÆïÅnRﺶqIÞã´ÆÈÝD¿íÜü6Fî.|ËG6:…g6Fî.|˧6lèõ¨:Zí&ú-ßvÈ÷(9Zí,yË'M'=Ö¼V»I~Ë·ò=Ö¼V;KÞòš.üÝÁ£ØMî]×°'¼ÇÊÝÄÞumãçM¬Ç¹0ŠÝÄÞumã\øg}b[½›ð_x·Å¿ÇÛêæoy“59ôx”mõó·ü0krèñ#„Vï0û?D˜õØxÜMúÛÎmüKdt~ÚãfÓÈÝ„¿í¼ ÿuüoùÿ2|ý'¼ èzÚPKxºZ<÷!–+t/ IAR-STR912/led.cUT ”LjK”LjKux êëÕVÛnÚ@}·ä˜6ReÈh¤V ÉÁ&E%`QÕ'Ë1kØÄ¬Ñî:JTåß;ãµ¹µIµ‹{.g×3gfl[¶µÇE”do?5îƒé‚§G³·(ž°˜ CÏ zž;‚ ¿;8^É¿~•æƒmÑç.åè±I0Τ‡ ›Tlë»mA¾È:ø*¹fç\;+˜hÀé)8h~بjƒ¡7òÆ•&ØÖã6z¿~|3 ¿ÎÃ`[µ*ø’ß…š~X0||8|þªÖ6‹`¾ðgÄyÉôE€?#Þ…’‡× SÏG%Ä"5]Áõãèb—‚‘–Y¤3Éš;Ç™ˆ4O,dªSŠþŸÁìlˆƒLn§"æÓL†ë¸Ò$¥Q;—%დ¿ÑN3¡Ébç±^Zõï.ÛªB§ŒX?œ3€¤¤p™Š$_ä: Å%*(®SÎÉ +™†å:~*)™^׬C†ÛŠ¿»jEÙs¤ –¾rÊbßã1Õ¢ë_]˜âŸ°ëlꘄî11᱑Óï¨}\¶{_Fi&#fhà”Â`0jc#ÀU«^)x ¡=Ë 4Ì Q’F· roÃ)röÑÙåw\¥r ’¤Šˆ‰´i /Ágü“a×™"´Û‰ñƒ3h@ú¢yIQ–ﯔfs³½c¸Mä%E©¢`C÷lŽ®Õ¬Ë¨Hך©‰ñvùs.™aá™±ñ¹0,zÒ ­Ö‚V’`øjõûøø)/ê%¥]~¦f~–$ðäf­D3)°šÏò[s<66½`c‚¼ÛF3‘_M§8 Õ,ç)Í&É,Ô%ccÌv.æxàzÿN ¼Þ߯M1Ç0•4ã`ÐéЀ+3¿>ÞÖOV¿¯×s/½»B1©‘¾ØË–Φ³Õï?vp™“olÖÿ½½È÷·x,âô*}o«Fv6Áe­©íb;úºâ/fZA8LŽ'htçOù+¬ÚWË?7©MO\t°ÒìÀë·Î{ÞÁ_%q9qv&ËðLAXPMó9Û$3·O@-XÄcÎÊV^z!ÍÅTÏŽþD>ùîQd’$7y×0E‹­Ä¡{cÕDÝ›¼¥ÜRÂw' œvÚÿÛ°{ñy ïëõ0_r|cd ¶l™ aýÓòú.vèt{^qNÛúPKxºZ<ò‹=Û¿ °[IAR-STR912/IAR-STR912-Lib.ewpUT ”LjK”LjKux êëí\msÚ¸þ|wfÿƒ§“Ow[0´½›Þa³c’z ’íÉLFØÂ¨5’¯,²¿~%Ù¼Iî‡{i’b[>ΑtÞtìÖïËyd- MÁ¿½iÔì7Ä> {ƒòîüüã§w7¿_üüÓÏ?µbJ¾AŸñËjMQï²[/š­úö¡¼îâǹð.¿¶ê‹½Æüò#Àì†à.ñA$ú¸s¼Õî ò ‰Ù.Í+%6Ûc%cž–‹ùž7kÕ³[TëÏÈõ'ßNâͺ(a§ ‰vŠPw€">‡V£øéЀ®{Òø Øƒëxz$€ÅüÚŠ ŽSf-Ž3Û(eVO7˜øÉ6Å_¥QdM ¹~kªs7e'JÀ6*¼?B×va@ŸŠQŠ0WƒÛ(Þk—Pاî ÅæX¼¦˜¡9ì¢ÉFܾžaí]E`qP‘TÓŸáøò”©=&ÖZië±™ÅfÐÂb¦GÖŽ»`‘©¼æÖÝ_~±hÆ«¡ ås¸fÝ+Z3H§À‡o-7?÷–S´„7²^m„ZIÇ„2ymžF MžLøíVL9©p`%>ÀÓ·ò+o6ƒKkÀd³„QFÕµ8»’Ír+w6î÷»_¼ñÃ¥7<»÷nÜûK>ÎÙ­7R^µ™ò’P¤>Ë]œâî|¨½o8Êh]°Ÿ£AûéTàµ÷vÍ®}l4ßÿKu½d~_ƒI{(¡ÀœÑͱ$ çqBƒžk>®ó2Ð ëAœ£ÆÃOæÕ?Fc+ÿªÎk—+cˆ'åZziÎyåö,Џ¯,“—¯ÎÄeu™ ëåá)1ǯwJ‚S„Ç’>_Ie“C‘%£ //'î ú%KJ9Sºep¾wE>Aä°YÍ:B!†Á »3`pœ\wÿ›" ùœ`„=Åf-`o•Fe¹%ÓFC(Z‡B® M"q×.æ6æùÅr¡<ۯⴂœEïå®ÊÙ•×í<´oœ^ç¬F´¬¯â±>ïh’%?C”ůªä¶ÑÃ~”–©rUnò‰'cä>7™ÜsÝœ!‘Šm–Ì‹Á°ÿG–ˆE+ ìh¬®5YÀ;hØÚ¬`VrxIJZƒ¦ àˆ/ÒpÁ¥ê^¯'“j„~/geU¶ÖcÂá1Ä}՘Ʉ«IKÊ1FÜa0<¸eXͮކÕÂÝ-MünëžÿñœèsYü?Wy,WéÉTV^QäT;YThÀ ·+8A -3XñÐ>%"¤9fT£"d¹+s&G‚ü9}Y Ñ/Kõêr¯6*À(±ÿªÏ‹'wÈ+/Ÿˆ aˆî1Ýðcƒ´czWÄ)Jµiê¿ o:ð’ ¥éUåìVæþh®'ùP›è,ã 𾳄¾ÁŠ=9IƒBé*³»iÂ.Ä!›Ž[7@Åçª c0ÅÀ/]|çªËûëN ª(Aþ¨šÕ‚"clü¬²^;3©Qˆ ’‘N59O§ò¤§S]Bœ[Å9brOÐô†Ì6”¨¯+1åm9Ç 1¡p““3ÈÖ¤D3hÏú9· ¤Çq•cÌý »;ƒ ¹´2 cé‡~û·?øÏ‘ „ýЇšªÎ@ôûn®·äãequÓìy?ÌoDlX.UÕê(¢h à@¸€Y¶É¸Ep5ùæ’øIGrâu˽ûÇòr/xÔ.™H+ñUÎGcë`«‰?"._~}õM…¶çö{µ…]1è­×½tܱ׿9‚Ü8]x1åJEÁö†Z#È`„&µ `ÖYçk';ÿÏhÕ×7l! ËNòëëïj"öºÞÍýª³òä­Ç§Û÷.šxýlKØÜÚþÊUÈw¹=ð™ë“ÈdÝ´dJ>=(´ã‘] -`§èbϾ˟xÇ^#©ò¥@^—dÓ˜ÊöÂxô4ŸÈœ&†à1{ôШ}Û…Ê« †¢º"4'BaÉ‰h6/+A2%U TÄåsOË‚ê’Ðl1ô ÅÈ!¡¿ä“’æñzÜW¬‚¯£µ º€î †æ–?=;h™xéH–gãqÕjâGÜé½4aˇ«®3ú\CþTcgŽXjHìK¬U½¾(Ã4¬¬Ææ$œ¯JpÄŽe%@¥e«:pòç’¬D–Þ”×8'nxZ­¶´JÊÂs¹÷8¯áÚ+ ꤌpWºÏ× $®ƒˆ#æÊ ( )˜w0£O]0)«ÝÓ2]žá™®E>ŒZŒ÷ð€}ˆ³ø9ª%†ºù:è\™òMÒ ªÊî%áVÎà ê¶ŸX™ßµ¼R}z?ƒeÒ/ÆÑÃM—ín+ƒ¸Ô¡¿~à+PxŽgZBƒlq€‰JJæìe£a75Àˆ*Ӄ맢Êbê·ëÓ‚ÚÊ:‘Çrw JKWºº¾â`†µ»s^…«ðÒWshÝ{9‡értê‹w€©3Óû&ž3t?{wû/XÑ?¸žŒ&ÅóʲA_/‡1¿[¸F:2ëÝß‹^’˜ÏÖæýnÂú~ýbȽ bÛÅМjkØf)ØÈjÕŸ¿i´R’Æ«ö4yþ ù Ó½Žn%K²;îEŽ~mWf/<}9¡ÙÄ=´|€õ æ@!8GzMu cDôPBMMS@ìwj!4×Ô!Ê4JüT¡$ÖCˆ¡¹B)‘ôPZ MÒ~ BM„PɰµêUzH«ŠØ1_¤V³[²EÅýßZòz&¶H- _Bj‡m€}’²W»C½M¦ìVÉÌknŒ`pø>Q±zã¶ø÷7PK xºZ< íAIAR-STR912/UT”LjKux êëPKxºZIAR-STR912/startup/.svn/UT•LjKux êëPKvºZ< 9Á8$IAR-STR912/startup/.svn/entriesUTLjKux êëPK vºZ<"íAéIAR-STR912/startup/.svn/prop-base/UTLjKux êëPK vºZ<"íAE IAR-STR912/startup/.svn/text-base/UTLjKux êëPKvºZ<:ùè TØ5$¡ IAR-STR912/startup/.svn/text-base/91x_vect.s.svn-baseUTLjKux êëPKvºZ<Âcyê E%5$IAR-STR912/startup/.svn/text-base/91x_init.s.svn-baseUTLjKux êëPKvºZ<@ö‹j#$—"IAR-STR912/startup/.svn/all-wcpropsUTLjKux êëPK vºZ<íA#IAR-STR912/startup/.svn/props/UTLjKux êëPK vºZ<íA×#IAR-STR912/startup/.svn/tmp/UTLjKux êëPK vºZ<&íA-$IAR-STR912/startup/.svn/tmp/prop-base/UTLjKux êëPK vºZ<&íA$IAR-STR912/startup/.svn/tmp/text-base/UTLjKux êëPK vºZ<"íAí$IAR-STR912/startup/.svn/tmp/props/UTLjKux êëPKvºZ<:ùè TؤI%IAR-STR912/startup/91x_vect.sUTLjKux êëPKvºZ<Âcyê E%¤¦2IAR-STR912/startup/91x_init.sUTLjKux êëPKxºZ<–ß‚SY¯E#¤>IAR-STR912/CppUTest-STR912-Main.ewdUT”LjKux êëPKxºZ<âU|פÅDIAR-STR912/main.cppUT”LjKux êëPKxºZ< eÿèM¤ FIAR-STR912/CppUTest-IAR.ewwUT”LjKux êëPK vºZ<íA]GIAR-STR912/linker/UTLjKux êëPKvºZ$yÒIAR-STR912/examples/WDG/polling/.svn/text-base/main.c.svn-baseUT’LjKux êëPKwºZ<94OÕÖL0$ØIAR-STR912/examples/WDG/polling/.svn/all-wcpropsUT’LjKux êëPK wºZ<+íANÙIAR-STR912/examples/WDG/polling/.svn/props/UT’LjKux êëPK wºZ<)íA³ÙIAR-STR912/examples/WDG/polling/.svn/tmp/UT’LjKux êëPK wºZ<3íAÚIAR-STR912/examples/WDG/polling/.svn/tmp/prop-base/UT’LjKux êëPK wºZ<3íAƒÚIAR-STR912/examples/WDG/polling/.svn/tmp/text-base/UT’LjKux êëPK wºZ</íAðÚIAR-STR912/examples/WDG/polling/.svn/tmp/props/UT’LjKux êëPKwºZ<2jê &¤YÛIAR-STR912/examples/WDG/polling/main.cUT’LjKux êëPKwºZ<7JõèÌo*¤ÖàIAR-STR912/examples/WDG/polling/91x_conf.hUT’LjKux êëPKwºZ[IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.eww.svn-baseUT“LjKux êëPKxºZ<Õ§qiÚL?$6\IAR-STR912/examples/TIM/PWM/.svn/text-base/tim_pwm.ewp.svn-baseUT“LjKux êëPKxºZ<~‚¹ýìƒ>$eIAR-STR912/examples/TIM/PWM/.svn/text-base/Readme.txt.svn-baseUT“LjKux êëPKxºZ$|hIAR-STR912/examples/TIM/PWM/.svn/text-base/91x_conf.h.svn-baseUT“LjKux êëPKxºZ,$`IAR-STR912/examples/TIM/OPM-PWM/.svn/entriesUT”LjKux êëPK xºZ</íAyŸIAR-STR912/examples/TIM/OPM-PWM/.svn/prop-base/UT“LjKux êëPK xºZ</íAâŸIAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/UT”LjKux êëPKxºZ<·¢ÅGØ<?$K IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/tim.ewd.svn-baseUT”LjKux êëPKxºZ<*’Â÷8B$œ¦IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/Readme.txt.svn-baseUT”LjKux êëPKxºZ$½IAR-STR912/examples/TIM/OPM-PWM/.svn/text-base/main.c.svn-baseUT”LjKux êëPKxºZIAR-STR912/examples/UART/.svn/text-base/uart.ewp.svn-baseUT”LjKux êëPKxºZ<–ÉÆ- ;$ IAR-STR912/examples/UART/.svn/text-base/Readme.txt.svn-baseUT”LjKux êëPKxºZ<×ß:uÇa;$IAR-STR912/examples/UART/.svn/text-base/91x_conf.h.svn-baseUT”LjKux êëPKxºZ$ù/IAR-STR912/examples/ADC/polling/.svn/text-base/main.c.svn-baseUT“LjKux êëPKxºZ<ËãÓL0$}6IAR-STR912/examples/ADC/polling/.svn/all-wcpropsUT“LjKux êëPK xºZ<+íAº7IAR-STR912/examples/ADC/polling/.svn/props/UT“LjKux êëPK xºZ<)íA8IAR-STR912/examples/ADC/polling/.svn/tmp/UT“LjKux êëPK xºZ<3íA‚8IAR-STR912/examples/ADC/polling/.svn/tmp/prop-base/UT“LjKux êëPK xºZ<3íAï8IAR-STR912/examples/ADC/polling/.svn/tmp/text-base/UT“LjKux êëPK xºZ</íA\9IAR-STR912/examples/ADC/polling/.svn/tmp/props/UT“LjKux êëPKxºZ IAR-STR912/examples/.svn/tmp/text-base/UT”LjKux êëPK wºZ<#íAŸ IAR-STR912/examples/.svn/tmp/props/UT‘LjKux êëPKxºZ<*µªSp ¤ü IAR-STR912/examples/examples.ewwUT”LjKux êëPK wºZ<íAæ¢IAR-STR912/examples/MC/UT‘LjKux êëPKwºZ< 2m XtL¤7£IAR-STR912/examples/MC/mc.ewpUT‘LjKux êëPKwºZ<÷o18Ê!¤æ«IAR-STR912/examples/MC/Readme.txtUT‘LjKux êëPKwºZ<Ô¾õ1Ø<¤y°IAR-STR912/examples/MC/mc.ewdUT‘LjKux êëPK yºZ<íA¨¶IAR-STR912/examples/MC/.svn/UT•LjKux êëPKwºZIIAR-STR912/examples/DMA/dma.ewpUT‘LjKux êëPKwºZIAR-STR912/source/91x_adc.cUTLjKux êëPK yºZ<íALIAR-STR912/source/.svn/UT•LjKux êëPKvºZ«IAR-STR912/include/.svn/props/UTLjKux êëPK vºZ<íA–«IAR-STR912/include/.svn/tmp/UTLjKux êëPK vºZ<&íAì«IAR-STR912/include/.svn/tmp/prop-base/UTLjKux êëPK vºZ<&íAL¬IAR-STR912/include/.svn/tmp/text-base/UTLjKux êëPK vºZ<"íA¬¬IAR-STR912/include/.svn/tmp/props/UTLjKux êëPKvºZ cpputest-4.0/platforms/Eclipse-Cygwin/README.md000644 000765 000024 00000010307 13663176127 022303 0ustar00basvoddestaff000000 000000 ## Using the Eclipse-Cygwin Project This project is for use on the Windows platform. These are the steps required for using it. (If you only wish to compile the CppUTest libraries, it is recommended that you use the method described at http://cpputest.github.io, rather than setting up Eclipse). ### Preparation #### 1. Install Cygwin You need to have Cygwin installed, with at least the Gnu C\C++ compiler, make, autotools and libtool. Please follow the instructions at http://cpputest.github.io to build CppUTest from the Cygwin bash prompt. #### 2. Set your PATH Next, you need to add the path to your Cygwin binaries to your Windows system path, e.g. ```dos C:\\Cygwin\bin ``` #### 3. Install Eclipse CDT Use your existing Eclipse CDT (Juno, Kepler, ...) or unpack the release to your system drive. You may use the 32 bit version as it will work on all systems. Unless you have a specific reason, you do not require the 64 bit version. You may need to install or update your Java JRE and add it to your system path. The JRE needs to match, e.g. 32 bit Eclipse requires the 32 bit JRE. #### 4. Install the C/C++Unit plugin Open Eclipse. Accept the default workspace for now (you may want to set a more appropriate workspace location later on). Then install the "C/C++ Unit Test" plugin: "Help"->"Install New Software"-> work with "Kepler - http://download.eclipse.org/releases/kepler". You will find the plugin under: ``` [ ] Programming Languages [x] C/C++ Unit Testing Support. ``` While you are at it, you might also want to install: ``` [ ] Linux Tools [x] Gcov Integration ``` #### 5. Add the CppUTest plugin Clone the [CppUTest Eclipse Test Runner](https://github.com/tcmak/CppUTestEclipseJunoTestRunner) and add it to Eclipse following the instructions there. ### Import this project into Eclipse In Eclipse you can't simply "open" a project - you have to first import it into the workspace: * File->Import...->General->Existing Projects into workspace * [Next >]->Select root directory: `/Platforms/Eclipse-Cygwin` * Make sure that `[ ] Copy projects into workspace` is **NOT** ticked. * Click Finish. ### Compile and run tests Before you can compile CppUTest in Eclipse, you must configure it using Automake. Instructions can be found at http://cpputest.github.io/. Once you have done this, select a configuration (Libraries, Check, CppUTestTests or CppUTestExtTests) via Project->BuildConfiguration->Set Active>. The 'Check' configuration will build the libraries along with all tests and run the tests. ### Working with the C/C++ Unit plugin Make sure your unit test executable has been built and exists, e.g. cpputest_build/CppUTestTests.exe. The first time you run tests using the plugin, you need to select them via Run->Run Configurations...->C/C++Unit->CppUTestTest. Click [Run]. (If Run is greyed out, you need to build the configuration CppUTestTests first) Once you have run the tests at least once, you should be able to select them by clicking the down triangle next to the green "Run" icon, where it should be listed right at the top. On subsequent runs, the executable will be built automatically, if necessary. Note that launch configurations have been included with this project; in your own projects, you will need to create these yourself. This is an example of what a successful test run would look like: ![Successful Test Run](https://raw.githubusercontent.com/cpputest/cpputest.github.io/master/images/eclipse-testrunner-01.png) You can select and rerun individual tests in the upper pane, and error messages for failed tests will appear in the lower pane. ### Troubleshooting #### Problem: I am getting no test results... ...but you know your tests should have run, and you did not receive any error message. ##### Possible Reason: This can happen if the Cygwin-generated binary can't find the Cygwin DLLs. (If you were to run your test executable at the Windows cmd prompt, you would see a Windows error message box to that effect). Since no error message is displayed in the console via stderr, this leaves the test runner ignorant of what happenend ##### Solution: You need to add /Cygwin/bin to your system PATH variable. Then you must restart Eclipse. cpputest-4.0/platforms/Eclipse-Cygwin/.project000644 000765 000024 00000266765 13663176127 022520 0ustar00basvoddestaff000000 000000 CppUTest org.eclipse.cdt.managedbuilder.core.genmakebuilder org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.core.ccnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature .gitattributes 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.gitattributes .gitignore 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.gitignore .travis.yml 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/.travis.yml AUTHORS 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/AUTHORS CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CMakeLists.txt COPYING 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/COPYING ChangeLog 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/ChangeLog CppUTest.dsw 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.dsw CppUTest.vcproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.vcproj CppUTest.vcxproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest.vcxproj CppUTest_VS2008.ncb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.ncb CppUTest_VS2008.sln 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.sln CppUTest_VS2008.suo 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2008.suo CppUTest_VS2010.sln 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2010.sln CppUTest_VS2010.suo 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/CppUTest_VS2010.suo Doxyfile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Doxyfile INSTALL 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/INSTALL Makefile.am 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile.am Makefile.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile.in Makefile_CppUTestExt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile_CppUTestExt Makefile_using_MakefileWorker 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/Makefile_using_MakefileWorker NEWS 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/NEWS README 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README README.md 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README.md README_CppUTest_for_C.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_CppUTest_for_C.txt README_InstallCppUTest.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_InstallCppUTest.txt README_UsersOfPriorVersions.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/README_UsersOfPriorVersions.txt aclocal.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/aclocal.m4 autogen.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/autogen.sh build 2 virtual:/virtual builds 2 virtual:/virtual cmake 2 virtual:/virtual compile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/compile config.guess 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.guess config.h.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.cmake config.h.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.in config.h.in~ 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.h.in~ config.sub 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/config.sub configure 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/configure configure.ac 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/configure.ac cpputest.pc.in 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cpputest.pc.in cpputest_build 2 virtual:/virtual cpputest_doxy_gen.conf 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cpputest_doxy_gen.conf depcomp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/depcomp docs 2 virtual:/virtual examples 2 virtual:/virtual include 2 virtual:/virtual install-sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/install-sh lib 2 virtual:/virtual ltmain.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/ltmain.sh m4 2 virtual:/virtual makeVS2008.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVS2008.bat makeVS2010.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVS2010.bat makeVc6.bat 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/makeVc6.bat missing 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/missing scripts 2 virtual:/virtual src 2 virtual:/virtual test-driver 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/test-driver tests 2 virtual:/virtual valgrind.suppressions 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/valgrind.suppressions build/ComponentMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/ComponentMakefile build/ComponentMakefileExampleParameters 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/ComponentMakefileExampleParameters build/MakefileWorker.mk 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/MakefileWorker.mk build/StaticLibMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/StaticLibMakefile build/alltests.mmp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/alltests.mmp build/bld.inf 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/bld.inf build/cpputest.mmp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/build/cpputest.mmp builds/make-gcc-macport.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/builds/make-gcc-macport.sh cmake/Modules 2 virtual:/virtual cpputest_build/CppUTestExtTests.exe 1 PARENT-2-PROJECT_LOC/cpputest_build/CppUTestExtTests.exe cpputest_build/CppUTestTests.exe 1 PARENT-2-PROJECT_LOC/cpputest_build/CppUTestTests.exe cpputest_build/Makefile 1 PARENT-2-PROJECT_LOC/cpputest_build/Makefile examples/.cdtproject 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.cdtproject examples/.project 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.project examples/.settings 2 virtual:/virtual examples/AllTests 2 virtual:/virtual examples/ApplicationLib 2 virtual:/virtual examples/CppUTestExample.dsw 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/CppUTestExample.dsw examples/Makefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/Makefile examples/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/README.txt include/CppUTest 2 virtual:/virtual include/CppUTestExt 2 virtual:/virtual include/Platforms 2 virtual:/virtual lib/CppUTest.lib 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/CppUTest.lib lib/NoteOnVisualStudio.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/NoteOnVisualStudio.txt lib/vs2008 2 virtual:/virtual m4/acx_pthread.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/acx_pthread.m4 m4/libtool.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/libtool.m4 m4/ltoptions.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltoptions.m4 m4/ltsugar.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltsugar.m4 m4/ltversion.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/ltversion.m4 m4/lt~obsolete.m4 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/m4/lt~obsolete.m4 scripts/CppUnitTemplates 2 virtual:/virtual scripts/GenerateSrcFiles.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/GenerateSrcFiles.sh scripts/InstallScripts.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/InstallScripts.sh scripts/NewCBaseModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCBaseModule.sh scripts/NewCFunction.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCFunction.sh scripts/NewCInterface.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCInterface.sh scripts/NewCIoDriver.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCIoDriver.sh scripts/NewCModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCModule.sh scripts/NewClass.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewClass.sh scripts/NewCmiModule.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewCmiModule.sh scripts/NewHelp.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewHelp.sh scripts/NewInterface.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewInterface.sh scripts/NewLibrary.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewLibrary.sh scripts/NewPackageDirs.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewPackageDirs.sh scripts/NewProject.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/NewProject.sh scripts/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/README.txt scripts/RefactorRenameIncludeFile.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/RefactorRenameIncludeFile.sh scripts/ReleaseCppUTest.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/ReleaseCppUTest.sh scripts/UnityTemplates 2 virtual:/virtual scripts/VS2010Templates 2 virtual:/virtual scripts/checkForCppUTestEnvVariable.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/checkForCppUTestEnvVariable.sh scripts/convertToUnity 2 virtual:/virtual scripts/filterGcov.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/filterGcov.sh scripts/generate_junit_report_ant.xml 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/generate_junit_report_ant.xml scripts/reformat.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/reformat.sh scripts/squeeze.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/squeeze.sh scripts/svnignore.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/svnignore.txt scripts/templates 2 virtual:/virtual scripts/travis_ci_build.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/travis_ci_build.sh scripts/zipExclude.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/zipExclude.txt src/CppUTest 2 virtual:/virtual src/CppUTestExt 2 virtual:/virtual src/Platforms 2 virtual:/virtual tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.cpp tests/AllTests.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.h tests/AllTests.vcproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcproj tests/AllTests.vcproj.HELLADE.struar2.user 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcproj.HELLADE.struar2.user tests/AllTests.vcxproj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllTests.vcxproj tests/AllocLetTestFree.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFree.c tests/AllocLetTestFree.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFree.h tests/AllocLetTestFreeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocLetTestFreeTest.cpp tests/AllocationInCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCFile.c tests/AllocationInCFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCFile.h tests/AllocationInCppFile.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCppFile.cpp tests/AllocationInCppFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/AllocationInCppFile.h tests/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CMakeLists.txt tests/CheatSheetTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CheatSheetTest.cpp tests/CompatabilityTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CompatabilityTests.cpp tests/CommandLineArgumentsTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CommandLineArgumentsTest.cpp tests/CommandLineTestRunnerTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CommandLineTestRunnerTest.cpp tests/CppUTestExt 2 virtual:/virtual tests/Debug 2 virtual:/virtual tests/JUnitOutputTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/JUnitOutputTest.cpp tests/MemoryLeakDetectorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakDetectorTest.cpp tests/MemoryLeakOperatorOverloadsTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakOperatorOverloadsTest.cpp tests/MemoryLeakWarningTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/MemoryLeakWarningTest.cpp tests/PluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/PluginTest.cpp tests/PreprocessorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/PreprocessorTest.cpp tests/RunAllTests.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/RunAllTests.sh tests/SetPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/SetPluginTest.cpp tests/SimpleStringCacheTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/SimpleStringCacheTest.cpp tests/SimpleStringTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/SimpleStringTest.cpp tests/TestFailureNaNTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFailureNaNTest.cpp tests/TestFailureTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFailureTest.cpp tests/TestFilterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestFilterTest.cpp tests/TestHarness_cTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestHarness_cTest.cpp tests/TestHarness_cTestCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestHarness_cTestCFile.c tests/TestInstallerTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestInstallerTest.cpp tests/TestMemoryAllocatorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestMemoryAllocatorTest.cpp tests/TestOutputTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestOutputTest.cpp tests/TestRegistryTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestRegistryTest.cpp tests/TestResultTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestResultTest.cpp tests/TestUTestMacro.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/TestUTestMacro.cpp tests/UtestTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/UtestTest.cpp cmake/Modules/CppUTestConfigurationOptions.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/CppUTestConfigurationOptions.cmake cmake/Modules/CppUTestWarningFlags.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/CppUTestWarningFlags.cmake cmake/Modules/FindCXX11.cmake 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/cmake/Modules/FindCXX11.cmake examples/.settings/org.eclipse.cdt.core.prefs 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/.settings/org.eclipse.cdt.core.prefs examples/AllTests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/AllTests.cpp examples/AllTests/CircularBufferTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/CircularBufferTest.cpp examples/AllTests/EventDispatcherTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/EventDispatcherTest.cpp examples/AllTests/HelloTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/HelloTest.cpp examples/AllTests/MockDocumentationTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/MockDocumentationTest.cpp examples/AllTests/PrinterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/PrinterTest.cpp examples/AllTests/RunAllTests.sh 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/AllTests/RunAllTests.sh examples/ApplicationLib/AllTests.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/AllTests.h examples/ApplicationLib/CircularBuffer.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/CircularBuffer.cpp examples/ApplicationLib/CircularBuffer.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/CircularBuffer.h examples/ApplicationLib/EventDispatcher.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/EventDispatcher.cpp examples/ApplicationLib/EventDispatcher.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/EventDispatcher.h examples/ApplicationLib/ExamplesNewOverrides.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/ExamplesNewOverrides.h examples/ApplicationLib/MockPrinter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/MockPrinter.h examples/ApplicationLib/Printer.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/Printer.cpp examples/ApplicationLib/Printer.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/Printer.h examples/ApplicationLib/hello.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/hello.c examples/ApplicationLib/hello.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/examples/ApplicationLib/hello.h include/CppUTest/CommandLineArguments.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CommandLineArguments.h include/CppUTest/CommandLineTestRunner.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CommandLineTestRunner.h include/CppUTest/CppUTestConfig.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/CppUTestConfig.h include/CppUTest/JUnitTestOutput.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/JUnitTestOutput.h include/CppUTest/MemoryLeakDetector.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetector.h include/CppUTest/MemoryLeakDetectorMallocMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetectorMallocMacros.h include/CppUTest/MemoryLeakDetectorNewMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakDetectorNewMacros.h include/CppUTest/MemoryLeakWarningPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/MemoryLeakWarningPlugin.h include/CppUTest/PlatformSpecificFunctions.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/PlatformSpecificFunctions.h include/CppUTest/PlatformSpecificFunctions_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/PlatformSpecificFunctions_c.h include/CppUTest/SimpleString.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/SimpleString.h include/CppUTest/SimpleStringInternalCache.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/SimpleStringInternalCache.h include/CppUTest/StandardCLibrary.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/StandardCLibrary.h include/CppUTest/TestFailure.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestFailure.h include/CppUTest/TestFilter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestFilter.h include/CppUTest/TestHarness.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestHarness.h include/CppUTest/TestHarness_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestHarness_c.h include/CppUTest/TestMemoryAllocator.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestMemoryAllocator.h include/CppUTest/TestOutput.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestOutput.h include/CppUTest/TestPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestPlugin.h include/CppUTest/TestRegistry.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestRegistry.h include/CppUTest/TestResult.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestResult.h include/CppUTest/TestTestingFixture.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/TestTestingFixture.h include/CppUTest/Utest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/Utest.h include/CppUTest/UtestMacros.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTest/UtestMacros.h include/CppUTestExt/CodeMemoryReportFormatter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/CodeMemoryReportFormatter.h include/CppUTestExt/GMock.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GMock.h include/CppUTestExt/GTestSupport.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GTestSupport.h include/CppUTestExt/GTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GTest.h include/CppUTestExt/GTestConvertor.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/GTestConvertor.h include/CppUTestExt/MemoryReportAllocator.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReportAllocator.h include/CppUTestExt/MemoryReportFormatter.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReportFormatter.h include/CppUTestExt/MemoryReporterPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MemoryReporterPlugin.h include/CppUTestExt/MockActualCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockActualCall.h include/CppUTestExt/MockCheckedActualCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockCheckedActualCall.h include/CppUTestExt/MockCheckedExpectedCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockCheckedExpectedCall.h include/CppUTestExt/MockExpectedCall.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockExpectedCall.h include/CppUTestExt/MockExpectedCallsList.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockExpectedCallsList.h include/CppUTestExt/MockFailure.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockFailure.h include/CppUTestExt/MockNamedValue.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockNamedValue.h include/CppUTestExt/MockSupport.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupport.h include/CppUTestExt/MockSupportPlugin.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupportPlugin.h include/CppUTestExt/MockSupport_c.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/MockSupport_c.h include/CppUTestExt/OrderedTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/CppUTestExt/OrderedTest.h include/Platforms/Gcc 2 virtual:/virtual include/Platforms/Symbian 2 virtual:/virtual include/Platforms/VisualCpp 2 virtual:/virtual include/Platforms/armcc 2 virtual:/virtual include/Platforms/c2000 2 virtual:/virtual lib/vs2008/CppUTest.lib 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/vs2008/CppUTest.lib lib/vs2008/vc90.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/lib/vs2008/vc90.pdb scripts/CppUnitTemplates/ClassName.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassName.cpp scripts/CppUnitTemplates/ClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassName.h scripts/CppUnitTemplates/ClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameC.c scripts/CppUnitTemplates/ClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameC.h scripts/CppUnitTemplates/ClassNameCMultipleInstance.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstance.c scripts/CppUnitTemplates/ClassNameCMultipleInstance.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstance.h scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCMultipleInstanceTest.cpp scripts/CppUnitTemplates/ClassNameCPolymorphic.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCPolymorphic.c scripts/CppUnitTemplates/ClassNameCPolymorphic.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCPolymorphic.h scripts/CppUnitTemplates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameCTest.cpp scripts/CppUnitTemplates/ClassNameTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ClassNameTest.cpp scripts/CppUnitTemplates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/InterfaceCTest.cpp scripts/CppUnitTemplates/InterfaceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/InterfaceTest.cpp scripts/CppUnitTemplates/MockClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassName.h scripts/CppUnitTemplates/MockClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassNameC.c scripts/CppUnitTemplates/MockClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/MockClassNameC.h scripts/CppUnitTemplates/ProjectTemplate 2 virtual:/virtual scripts/UnityTemplates/ClassNameCIoDriverTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCIoDriverTest.cpp scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCMultipleInstanceTest.cpp scripts/UnityTemplates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/ClassNameCTest.cpp scripts/UnityTemplates/FunctionNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/FunctionNameCTest.cpp scripts/UnityTemplates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/UnityTemplates/InterfaceCTest.cpp scripts/VS2010Templates/CppUTest_VS2010.props 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/VS2010Templates/CppUTest_VS2010.props scripts/VS2010Templates/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/VS2010Templates/README.txt scripts/convertToUnity/README.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/README.txt scripts/convertToUnity/cpp_u_test_to_unity.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity.rb scripts/convertToUnity/cpp_u_test_to_unity_utils.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity_utils.rb scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/cpp_u_test_to_unity_utils_tests.rb scripts/convertToUnity/create_group_runner.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/create_group_runner.rb scripts/convertToUnity/create_unity_test_runner.rb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/convertToUnity/create_unity_test_runner.rb scripts/templates/ClassName.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassName.cpp scripts/templates/ClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassName.h scripts/templates/ClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameC.c scripts/templates/ClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameC.h scripts/templates/ClassNameCIoDriver.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriver.c scripts/templates/ClassNameCIoDriver.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriver.h scripts/templates/ClassNameCIoDriverTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCIoDriverTest.cpp scripts/templates/ClassNameCMultipleInstance.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstance.c scripts/templates/ClassNameCMultipleInstance.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstance.h scripts/templates/ClassNameCMultipleInstanceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCMultipleInstanceTest.cpp scripts/templates/ClassNameCPolymorphic.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCPolymorphic.c scripts/templates/ClassNameCPolymorphic.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCPolymorphic.h scripts/templates/ClassNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameCTest.cpp scripts/templates/ClassNameTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ClassNameTest.cpp scripts/templates/FunctionNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameC.c scripts/templates/FunctionNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameC.h scripts/templates/FunctionNameCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/FunctionNameCTest.cpp scripts/templates/InterfaceCTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/InterfaceCTest.cpp scripts/templates/InterfaceTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/InterfaceTest.cpp scripts/templates/MockClassName.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassName.h scripts/templates/MockClassNameC.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassNameC.c scripts/templates/MockClassNameC.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/MockClassNameC.h scripts/templates/ProjectTemplate 2 virtual:/virtual src/CppUTest/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CMakeLists.txt src/CppUTest/CommandLineArguments.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CommandLineArguments.cpp src/CppUTest/CommandLineTestRunner.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/CommandLineTestRunner.cpp src/CppUTest/JUnitTestOutput.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/JUnitTestOutput.cpp src/CppUTest/MemoryLeakDetector.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/MemoryLeakDetector.cpp src/CppUTest/MemoryLeakWarningPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/MemoryLeakWarningPlugin.cpp src/CppUTest/SimpleString.cpp
1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/SimpleString.cpp src/CppUTest/SimpleStringInternalCache.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/SimpleStringInternalCache.cpp src/CppUTest/TestFailure.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestFailure.cpp src/CppUTest/TestFilter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestFilter.cpp src/CppUTest/TestHarness_c.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestHarness_c.cpp src/CppUTest/TestMemoryAllocator.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestMemoryAllocator.cpp src/CppUTest/TestOutput.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestOutput.cpp src/CppUTest/TestPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestPlugin.cpp src/CppUTest/TestRegistry.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestRegistry.cpp src/CppUTest/TestResult.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/TestResult.cpp src/CppUTest/Utest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTest/Utest.cpp src/CppUTestExt/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/CMakeLists.txt src/CppUTestExt/CodeMemoryReportFormatter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/CodeMemoryReportFormatter.cpp src/CppUTestExt/GTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/GTest.cpp src/CppUTestExt/MemoryReportAllocator.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReportAllocator.cpp src/CppUTestExt/MemoryReportFormatter.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReportFormatter.cpp src/CppUTestExt/MemoryReporterPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MemoryReporterPlugin.cpp src/CppUTestExt/MockActualCall.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockActualCall.cpp src/CppUTestExt/MockExpectedCall.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockExpectedCall.cpp src/CppUTestExt/MockExpectedCallsList.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockExpectedCallsList.cpp src/CppUTestExt/MockFailure.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockFailure.cpp src/CppUTestExt/MockNamedValue.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockNamedValue.cpp src/CppUTestExt/MockSupport.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupport.cpp src/CppUTestExt/MockSupportPlugin.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupportPlugin.cpp src/CppUTestExt/MockSupport_c.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/MockSupport_c.cpp src/CppUTestExt/OrderedTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/CppUTestExt/OrderedTest.cpp src/Platforms/C2000 2 virtual:/virtual src/Platforms/Gcc 2 virtual:/virtual src/Platforms/GccNoStdC 2 virtual:/virtual src/Platforms/Iar 2 virtual:/virtual src/Platforms/Symbian 2 virtual:/virtual src/Platforms/VisualCpp 2 virtual:/virtual src/Platforms/armcc 2 virtual:/virtual tests/CppUTestExt/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/AllTests.cpp tests/CppUTestExt/CMakeLists.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/CMakeLists.txt tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/CodeMemoryReportFormatterTest.cpp tests/CppUTestExt/GMockTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GMockTest.cpp tests/CppUTestExt/GTest1Test.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GTest1Test.cpp tests/CppUTestExt/GTest2ConvertorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/GTest2ConvertorTest.cpp tests/CppUTestExt/MemoryReportAllocatorTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReportAllocatorTest.cpp tests/CppUTestExt/MemoryReportFormatterTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReportFormatterTest.cpp tests/CppUTestExt/MemoryReporterPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MemoryReporterPluginTest.cpp tests/CppUTestExt/MockActualCallTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockActualCallTest.cpp tests/CppUTestExt/MockCheatSheetTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockCheatSheetTest.cpp tests/CppUTestExt/MockExpectedCallTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockExpectedCallTest.cpp tests/CppUTestExt/MockExpectedFunctionsListTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockExpectedFunctionsListTest.cpp tests/CppUTestExt/MockFailureTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockFailureTest.cpp tests/CppUTestExt/MockFailureTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockFailureTest.h tests/CppUTestExt/MockPluginTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockPluginTest.cpp tests/CppUTestExt/MockSupportTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupportTest.cpp tests/CppUTestExt/MockSupport_cTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTest.cpp tests/CppUTestExt/MockSupport_cTestCFile.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTestCFile.c tests/CppUTestExt/MockSupport_cTestCFile.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/MockSupport_cTestCFile.h tests/CppUTestExt/OrderedTestTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/OrderedTestTest.cpp tests/CppUTestExt/OrderedTestTest_c.c 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/OrderedTestTest_c.c tests/CppUTestExt/OrderedTestTest.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/CppUTestExt/OrderedTestTest.h tests/Debug/AllTests.bsc 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.bsc tests/Debug/AllTests.exe 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe tests/Debug/AllTests.exe.embed.manifest 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.embed.manifest tests/Debug/AllTests.exe.embed.manifest.res 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.embed.manifest.res tests/Debug/AllTests.exe.intermediate.manifest 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.exe.intermediate.manifest tests/Debug/AllTests.ilk 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.ilk tests/Debug/AllTests.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.obj tests/Debug/AllTests.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.pdb tests/Debug/AllTests.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllTests.sbr tests/Debug/AllocationInCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCFile.obj tests/Debug/AllocationInCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCFile.sbr tests/Debug/AllocationInCppFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCppFile.obj tests/Debug/AllocationInCppFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/AllocationInCppFile.sbr tests/Debug/BuildLog.htm 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/BuildLog.htm tests/Debug/CheatSheetTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CheatSheetTest.obj tests/Debug/CheatSheetTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CheatSheetTest.sbr tests/Debug/CodeMemoryReportFormatterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CodeMemoryReportFormatterTest.obj tests/Debug/CodeMemoryReportFormatterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CodeMemoryReportFormatterTest.sbr tests/Debug/CompatabilityTests.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CompatabilityTests.obj tests/Debug/CompatabilityTests.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CompatabilityTests.sbr tests/Debug/CommandLineArgumentsTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineArgumentsTest.obj tests/Debug/CommandLineArgumentsTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineArgumentsTest.sbr tests/Debug/CommandLineTestRunnerTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineTestRunnerTest.obj tests/Debug/CommandLineTestRunnerTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/CommandLineTestRunnerTest.sbr tests/Debug/GMockTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GMockTest.obj tests/Debug/GMockTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GMockTest.sbr tests/Debug/GTest1Test.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GTest1Test.obj tests/Debug/GTest1Test.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/GTest1Test.sbr tests/Debug/JUnitOutputTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/JUnitOutputTest.obj tests/Debug/JUnitOutputTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/JUnitOutputTest.sbr tests/Debug/MemoryLeakDetectorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakDetectorTest.obj tests/Debug/MemoryLeakDetectorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakDetectorTest.sbr tests/Debug/MemoryLeakOperatorOverloadsTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakOperatorOverloadsTest.obj tests/Debug/MemoryLeakOperatorOverloadsTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakOperatorOverloadsTest.sbr tests/Debug/MemoryLeakWarningTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakWarningTest.obj tests/Debug/MemoryLeakWarningTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryLeakWarningTest.sbr tests/Debug/MemoryReportAllocatorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportAllocatorTest.obj tests/Debug/MemoryReportAllocatorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportAllocatorTest.sbr tests/Debug/MemoryReportFormatterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportFormatterTest.obj tests/Debug/MemoryReportFormatterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReportFormatterTest.sbr tests/Debug/MemoryReporterPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReporterPluginTest.obj tests/Debug/MemoryReporterPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MemoryReporterPluginTest.sbr tests/Debug/MockActualCallTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockActualCallTest.obj tests/Debug/MockActualCallTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockActualCallTest.sbr tests/Debug/MockCheatSheetTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockCheatSheetTest.obj tests/Debug/MockCheatSheetTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockCheatSheetTest.sbr tests/Debug/MockExpectedCallTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedCallTest.obj tests/Debug/MockExpectedCallTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedCallTest.sbr tests/Debug/MockExpectedFunctionsListTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedFunctionsListTest.obj tests/Debug/MockExpectedFunctionsListTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockExpectedFunctionsListTest.sbr tests/Debug/MockFailureTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockFailureTest.obj tests/Debug/MockFailureTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockFailureTest.sbr tests/Debug/MockPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockPluginTest.obj tests/Debug/MockPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockPluginTest.sbr tests/Debug/MockSupportTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupportTest.obj tests/Debug/MockSupportTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupportTest.sbr tests/Debug/MockSupport_cTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTest.obj tests/Debug/MockSupport_cTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTest.sbr tests/Debug/MockSupport_cTestCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTestCFile.obj tests/Debug/MockSupport_cTestCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/MockSupport_cTestCFile.sbr tests/Debug/OrderedTestTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest.obj tests/Debug/OrderedTestTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest.sbr tests/Debug/OrderedTestTest_c.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest_c.obj tests/Debug/OrderedTestTest_c.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/OrderedTestTest_c.sbr tests/Debug/PluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PluginTest.obj tests/Debug/PluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PluginTest.sbr tests/Debug/PreprocessorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PreprocessorTest.obj tests/Debug/PreprocessorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/PreprocessorTest.sbr tests/Debug/SetPluginTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SetPluginTest.obj tests/Debug/SetPluginTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SetPluginTest.sbr tests/Debug/SimpleStringTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SimpleStringTest.obj tests/Debug/SimpleStringTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/SimpleStringTest.sbr tests/Debug/TestFailureTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFailureTest.obj tests/Debug/TestFailureTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFailureTest.sbr tests/Debug/TestFilterTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFilterTest.obj tests/Debug/TestFilterTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestFilterTest.sbr tests/Debug/TestHarness_cTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTest.obj tests/Debug/TestHarness_cTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTest.sbr tests/Debug/TestHarness_cTestCFile.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTestCFile.obj tests/Debug/TestHarness_cTestCFile.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestHarness_cTestCFile.sbr tests/Debug/TestInstallerTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestInstallerTest.obj tests/Debug/TestInstallerTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestInstallerTest.sbr tests/Debug/TestMemoryAllocatorTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestMemoryAllocatorTest.obj tests/Debug/TestMemoryAllocatorTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestMemoryAllocatorTest.sbr tests/Debug/TestOutputTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestOutputTest.obj tests/Debug/TestOutputTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestOutputTest.sbr tests/Debug/TestRegistryTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestRegistryTest.obj tests/Debug/TestRegistryTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestRegistryTest.sbr tests/Debug/TestResultTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestResultTest.obj tests/Debug/TestResultTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/TestResultTest.sbr tests/Debug/UtestTest.obj 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/UtestTest.obj tests/Debug/UtestTest.sbr 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/UtestTest.sbr tests/Debug/mt.dep 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/mt.dep tests/Debug/vc90.idb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/vc90.idb tests/Debug/vc90.pdb 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/tests/Debug/vc90.pdb include/Platforms/Gcc/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/Gcc/Platform.h include/Platforms/Symbian/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/Symbian/Platform.h include/Platforms/VisualCpp/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/VisualCpp/Platform.h include/Platforms/VisualCpp/stdint.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/VisualCpp/stdint.h include/Platforms/armcc/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/armcc/Platform.h include/Platforms/c2000/Platform.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/c2000/Platform.h include/Platforms/c2000/stdint.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/include/Platforms/c2000/stdint.h scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/ProjectMakefile scripts/CppUnitTemplates/ProjectTemplate/include 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/src 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/tests 2 virtual:/virtual scripts/templates/ProjectTemplate/Project.cproject 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/Project.cproject scripts/templates/ProjectTemplate/Project.project 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/Project.project scripts/templates/ProjectTemplate/ProjectMakefile 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/ProjectMakefile scripts/templates/ProjectTemplate/include 2 virtual:/virtual scripts/templates/ProjectTemplate/src 2 virtual:/virtual scripts/templates/ProjectTemplate/tests 2 virtual:/virtual src/Platforms/C2000/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/C2000/UtestPlatform.cpp src/Platforms/Gcc/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Gcc/UtestPlatform.cpp src/Platforms/GccNoStdC/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/GccNoStdC/UtestPlatform.cpp src/Platforms/Iar/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Iar/UtestPlatform.cpp src/Platforms/Symbian/README_Symbian.txt 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/README_Symbian.txt src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/SymbianMemoryLeakWarning.cpp src/Platforms/Symbian/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/Symbian/UtestPlatform.cpp src/Platforms/VisualCpp/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/VisualCpp/UtestPlatform.cpp src/Platforms/armcc/UtestPlatform.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/src/Platforms/armcc/UtestPlatform.cpp scripts/CppUnitTemplates/ProjectTemplate/include/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/src/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/tests/AllTests.cpp scripts/CppUnitTemplates/ProjectTemplate/tests/util 2 virtual:/virtual scripts/templates/ProjectTemplate/include/util 2 virtual:/virtual scripts/templates/ProjectTemplate/src/util 2 virtual:/virtual scripts/templates/ProjectTemplate/tests/AllTests.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/tests/AllTests.cpp scripts/templates/ProjectTemplate/tests/util 2 virtual:/virtual scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/include/util/ProjectBuildTime.h scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/src/util/ProjectBuildTime.cpp scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/CppUnitTemplates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/include/util/ProjectBuildTime.h scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/src/util/ProjectBuildTime.cpp scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp 1 PARENT-2-ECLIPSE_HOME/00_Dev/05_CppUTest/cpputest/scripts/templates/ProjectTemplate/tests/util/ProjectBuildTimeTest.cpp cpputest-4.0/platforms/Eclipse-Cygwin/CppUTestExtTests.launch000644 000765 000024 00000002626 13663176127 025440 0ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/Eclipse-Cygwin/.cproject000644 000765 000024 00000050222 13663176127 022636 0ustar00basvoddestaff000000 000000 make extensions true true true make examples true true true make cleanExamples true true true cpputest-4.0/platforms/armcc/Makefile000644 000765 000024 00000012316 13663176127 020731 0ustar00basvoddestaff000000 000000 # We don't need to clean up when we're making these targets NODEPS := clean debug # CPU architecture. Passing to armcc.exe. For list: armcc --cpu list ifndef CPU CPU = ARM7TDMI endif # ARM/THUMB mode. Passing to armcc.exe. May be 'thumb' or 'arm' ifndef CPU_MODE CPU_MODE = thumb endif # Path to cygwin binary CYGWIN_DIR :=C:/CYGWIN/bin # Path to ARMCC of Keil MDK-ARM, with libraries, includes and executables KEIL_DIR :=D:/Keil/ARM/ARMCC MKDIR :=$(CYGWIN_DIR)/mkdir RM :=$(CYGWIN_DIR)/rm CC :=@$(KEIL_DIR)/bin/armcc.exe AR :=@$(KEIL_DIR)/bin/armar.exe # source CppUTest files CPPUTEST_HOME := ../.. COMPONENT_NAME := CppUTest INCLUDE_DIRS :=\ $(CPPUTEST_HOME)/include \ $(CPPUTEST_HOME)/include/Platforms/armcc \ # armcc system include path SYS_INCLUDE_DIRS:=$(KEIL_DIR)/include SRC_DIRS :=\ $(CPPUTEST_HOME)/src/$(COMPONENT_NAME)\ $(CPPUTEST_HOME)/src/Platforms/armcc\ TARGET_PLATFORM :=armcc_$(CPU)_$(CPU_MODE) CPPUTEST_USE_MEM_LEAK_DETECTION := N CPPUTEST_USE_STD_CPP_LIB := N CPPUTEST_USE_VPATH := Y CPPUTEST_USE_STD_C_LIB := Y CPPUTEST_ENABLE_DEBUG := Y # Default dir for temporary files (d, o) # Default dir for the outout library CPPUTEST_OBJS_DIR = objs CPPUTEST_LIB_DIR = $(CPPUTEST_HOME)/lib/$(TARGET_PLATFORM) TARGET_LIB = \ $(CPPUTEST_LIB_DIR)/lib$(COMPONENT_NAME).a #Helper Functions get_src_from_dir = $(wildcard $1/*.cpp) $(wildcard $1/*.cc) $(wildcard $1/*.c) get_dirs_from_dirspec = $(wildcard $1) get_src_from_dir_list = $(foreach dir, $1, $(call get_src_from_dir,$(dir))) __src_to = $(subst .c,$1, $(subst .cc,$1, $(subst .cpp,$1,$(if $(CPPUTEST_USE_VPATH),$(notdir $2),$2)))) src_to = $(addprefix $(CPPUTEST_OBJS_DIR)/,$(call __src_to,$1,$2)) src_to_o = $(call src_to,.o,$1) src_to_d = $(call src_to,.d,$1) src_to_gcda = $(call src_to,.gcda,$1) src_to_gcno = $(call src_to,.gcno,$1) time = $(shell date +%s) delta_t = $(eval minus, $1, $2) debug_print_list = $(foreach word,$1,echo " $(word)";) echo; #Derived SRC = $(call get_src_from_dir_list, $(SRC_DIRS)) OBJ = $(call src_to_o,$(SRC)) STUFF_TO_CLEAN = $(OBJ) ALL_SRC = $(SRC) CPUFLAGS =--cpu=$(CPU) ifeq ($(CPU_MODE), thumb) CPUFLAGS +=--apcs=/interwork endif DEPFLAGS =$(CPUFLAGS) -M $(INCLUDES) --depend_format=unix_escaped --depend_single_line --no_depend_system_headers OPTFLAGS =-O1 CCFLAGS =$(CPUFLAGS) $(OPTFLAGS) -c $(INCLUDES)\ --$(CPU_MODE)\ --exceptions\ -D__CLK_TCK=1000\ # If we're using VPATH ifeq ($(CPPUTEST_USE_VPATH), Y) # gather all the source directories and add them VPATH += $(sort $(dir $(ALL_SRC))) # Add the component name to the objs dir path, to differentiate between same-name objects CPPUTEST_OBJS_DIR := $(addsuffix /$(COMPONENT_NAME),$(CPPUTEST_OBJS_DIR)) endif INCLUDES_DIRS_EXPANDED = $(call get_dirs_from_dirspec, $(INCLUDE_DIRS)) INCLUDES += $(foreach dir, $(INCLUDES_DIRS_EXPANDED), -I$(dir)) DEP_FILES = $(call src_to_d, $(ALL_SRC)) STUFF_TO_CLEAN += $(DEP_FILES) # Without the C library, we'll need to disable the C++ library and ... ifeq ($(CPPUTEST_USE_STD_C_LIB), N) CPPUTEST_USE_STD_CPP_LIB = N CPPUTEST_USE_MEM_LEAK_DETECTION = N CCFLAGS += -DCPPUTEST_STD_C_LIB_DISABLED else INCLUDE_DIRS +=$(SYS_INCLUDE_DIRS) endif ifeq ($(CPPUTEST_USE_MEM_LEAK_DETECTION), N) CCFLAGS += -DCPPUTEST_MEM_LEAK_DETECTION_DISABLED endif ifeq ($(CPPUTEST_ENABLE_DEBUG), Y) CCFLAGS += -g ARFLAGS := --debug_symbols endif ifeq ($(CPPUTEST_USE_STD_CPP_LIB), N) CCFLAGS += -DCPPUTEST_STD_CPP_LIB_DISABLED endif OBJS_DIRS :=$(sort $(dir $(STUFF_TO_CLEAN))) $(OBJS_DIRS) $(CPPUTEST_LIB_DIR): @echo Updating directory $@ $(MKDIR) -p $@ #This is the rule for creating the dependency files $(CPPUTEST_OBJS_DIR)/%.d: %.c Makefile | $(OBJS_DIRS) @echo Compiling C file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' $(CPPUTEST_OBJS_DIR)/%.d: %.cpp Makefile | $(OBJS_DIRS) @echo Compiling C++ file $< for dependency. Out file $@. $(CC) $(DEPFLAGS) $< --depend=$@ --depend_target='$(patsubst %.d,%.o,$@)' #This rule does the compilation C++ files $(CPPUTEST_OBJS_DIR)/%.o: %.cpp $(CPPUTEST_OBJS_DIR)/%.d Makefile @echo Compiling C++ file $<. Out file $@ $(CC) $(CCFLAGS) $< -o $@ #This rule does the compilation C files $(CPPUTEST_OBJS_DIR)/%.o: %.c $(CPPUTEST_OBJS_DIR)/%.d Makefile @echo Compiling C file $<. Out file $@ $(CC) $(CCFLAGS) $< -o $@ $(TARGET_LIB): $(OBJ) | $(CPPUTEST_LIB_DIR) @echo Archiving to $@ $(AR) $(ARFLAGS) --create $@ $^ .PHONY: all all: $(TARGET_LIB) @echo Done! .PHONY: debug debug: @echo @echo "Target Source files:" @$(call debug_print_list,$(SRC)) @echo "Target Object files:" @$(call debug_print_list,$(OBJ)) @echo "All Input Dependency files:" @$(call debug_print_list,$(DEP_FILES)) @echo Stuff to clean: @$(call debug_print_list,$(STUFF_TO_CLEAN)) @echo Includes: @$(call debug_print_list,$(INCLUDES)) @echo Directories to create: @$(call debug_print_list,$(OBJS_DIRS)) @echo Directories of CppUTest object files: @$(call debug_print_list,$(CPPUTEST_OBJS_DIR)) @echo Flags: @$(call debug_print_list,$(CCFLAGS)) #Don't create dependencies when we're cleaning, for instance ifeq (0, $(words $(findstring $(MAKECMDGOALS), $(NODEPS)))) -include $(DEP_FILES) endif clean: @$(RM) -rf $(STUFF_TO_CLEAN) cpputest-4.0/platforms/armcc/README000644 000765 000024 00000003360 13663176127 020150 0ustar00basvoddestaff000000 000000 Makefile to build CppUTest library to run in hardware using ARM C/C++ compiler. Also it is possible to build CppUTestExt library using "make all COMPONENT_NAME=CppUTestExt". All libraries is placed in lib directory of CppUTest home. Thumb mode is using. For ARM mode, you need to remove compiler key "--apcs=/interwork" and change $(CPU_MODE) to arm. You need installed CYGWIN with make.exe, rm.exe, mkdir.exe and installed Keil MDK-ARM. For compiling CppUTest library using ARMCC, please adjust Makefile: 1. # Path to cygwin binary CYGWIN_DIR :=C:/CYGWIN/bin 2. # Path to ARMCC of Keil MDK-ARM, with libraries, includes and executables KEIL_DIR :=D:/Keil/ARM/ARMCC 3. # source CppUTest files CPPUTEST_HOME := ../.. 4. other options explained in $(CPPUTEST_HOME)/build/MakefileWorker.mk CPPUTEST_USE_MEM_LEAK_DETECTION := Y CPPUTEST_USE_STD_CPP_LIB := N CPPUTEST_USE_VPATH := Y CPPUTEST_USE_STD_C_LIB := Y CPPUTEST_ENABLE_DEBUG := Y You may add additional options "CPU=xx" and "CPU_MODE=yy" CPU is an option that passed to armcc.exe. It selects CPU. List of CPU is available by executing 'armcc.exe --cpu list'. Default CPU architecture is ARM7TDMI. For armcc v5.02 build 28, CPU is one of the next: ARM7EJ-S ARM7TM ARM7TDM ARM7TDMI ARM710T ARM720T ARM740T ARM7TM-S ARM7TDMI-S ARM9TDMI ARM920T ARM922T ARM940T ARM9E-S ARM9EJ-S ARM926EJ-S ARM946E-S ARM966E-S ARM968E-S Cortex-M0 Cortex-M0plus SC000 Cortex-M1 Cortex-M1.os_extension Cortex-M1.no_os_extension Cortex-M3 Cortex-M3-rev0 SC300 Cortex-M4 Cortex-M4.fp Cortex-R4 Cortex-R4F CPU_MODE is one of 'arm', 'thumb'. Default is thumb. Tested with Keil MDK-ARM Pro v4.60 cpputest-4.0/platforms/armcc/TODO000644 000765 000024 00000000464 13663176127 017762 0ustar00basvoddestaff000000 000000 I am not familiar with automake. There is need to change build libCppUTest.a for target platform from makefile in current directory to automake in CppUTest root directory. And keep in mind that I want to add gcc way, and the others may want to add some instructions for different compilers and chips. cpputest-4.0/platforms/CCStudio/CppUTestExtRunAllTests1.pjt000644 000765 000024 00000007027 13663176127 025015 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\SimpleStringInternalCache.cpp" Source="..\..\src\CppUTest\TeamCityTestOutput.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\TestTestingFixture.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\GTest.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\CppUTestExt\CodeMemoryReporterTest.cpp" Source="..\..\tests\CppUTestExt\GMockTest.cpp" Source="..\..\tests\CppUTestExt\GTest1Test.cpp" Source="..\..\tests\CppUTestExt\GTest2ConvertorTest.cpp" Source="..\..\tests\CppUTestExt\MemoryReportAllocatorTest.cpp" Source="..\..\tests\CppUTestExt\MemoryReportFormatterTest.cpp" Source="..\..\tests\CppUTestExt\MockActualCallTest.cpp" Source="..\..\tests\CppUTestExt\MockCheatSheetTest.cpp" Source="..\..\tests\CppUTestExt\MockExpectedCallTest.cpp" Source="..\..\tests\CppUTestExt\MockFailureReporterForTest.cpp" Source="..\..\tests\CppUTestExt\MockFailureTest.cpp" Source="..\..\tests\CppUTestExt\MockHierarchyTest.cpp" Source="..\..\tests\CppUTestExt\MockPluginTest.cpp" Source="..\..\tests\CppUTestExt\MockReturnValueTest.cpp" Source="..\..\tests\CppUTestExt\MockStrictOrderTest.cpp" Source="..\..\tests\CppUTestExt\MockSupportTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTestExt\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\include\CppUTestExt\CppUTestGMock" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -d"CPPUTEST_USE_MALLOC_MACROS" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x20000 -f0x0 -heap0x2000 -m".\Debug\CppUTestExtRunAllTests.map" -o".\Debug\CppUTestExtRunAllTests1.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-4.0/platforms/CCStudio/CppUTestExtRunAllTests2.pjt000644 000765 000024 00000006375 13663176127 025023 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\SimpleStringInternalCache.cpp" Source="..\..\src\CppUTest\TeamCityTestOutput.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\TestTestingFixture.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\GTest.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupport_c.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\CppUTestExt\MemoryReporterPluginTest.cpp" Source="..\..\tests\CppUTestExt\MockCallTest.cpp" Source="..\..\tests\CppUTestExt\MockComparatorCopierTest.cpp" Source="..\..\tests\CppUTestExt\MockFailureReporterForTest.cpp" Source="..\..\tests\CppUTestExt\MockNamedValueTest.cpp" Source="..\..\tests\CppUTestExt\MockParameterTest.cpp" Source="..\..\tests\CppUTestExt\MockSupport_cTest.cpp" Source="..\..\tests\CppUTestExt\MockSupport_cTestCFile.c" Source="..\..\tests\CppUTestExt\OrderedTestTest.cpp" Source="..\..\tests\CppUTestExt\OrderedTestTest_c.c" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTestExt\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\include\CppUTestExt\CppUTestGMock" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -d"CPPUTEST_USE_MALLOC_MACROS" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x20000 -f0x0 -heap0x2000 -m".\Debug\CppUTestExtRunAllTests.map" -o".\Debug\CppUTestExtRunAllTests2.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-4.0/platforms/CCStudio/CppUTestRunAllTests1.pjt000644 000765 000024 00000005330 13663176127 024327 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\SimpleStringInternalCache.cpp" Source="..\..\src\CppUTest\TeamCityTestOutput.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\TestTestingFixture.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\AllocationInCFile.c" Source="..\..\tests\AllocationInCppFile.cpp" Source="..\..\tests\AllocLetTestFree.c" Source="..\..\tests\AllocLetTestFreeTest.cpp" Source="..\..\tests\CheatSheetTest.cpp" Source="..\..\tests\CompatabilityTests.cpp" Source="..\..\tests\CommandLineArgumentsTest.cpp" Source="..\..\tests\CommandLineTestRunnerTest.cpp" Source="..\..\tests\JUnitOutputTest.cpp" Source="..\..\tests\MemoryLeakDetectorTest.cpp" Source="..\..\tests\MemoryLeakWarningTest.cpp" Source="..\..\tests\MemoryOperatorOverloadTest.cpp" Source="..\..\tests\PluginTest.cpp" Source="..\..\tests\PreprocessorTest.cpp" Source="..\..\tests\SetPluginTest.cpp" Source="..\..\tests\TeamCityOutputTest.cpp" Source="..\..\tests\TestFailureNaNTest.cpp" Source="..\..\tests\TestFailureTest.cpp" Source="..\..\tests\TestUTestStringMacro.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTest\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x020000 -f0x0 -heap0x2000 -m".\Debug\CppUTestRunAllTests1.map" -o".\Debug\CppUTestRunAllTests1.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-4.0/platforms/CCStudio/CppUTestRunAllTests2.pjt000644 000765 000024 00000004631 13663176127 024333 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Executable CPUFamily=TMS320C28XX Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Tool="Linker" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\SimpleStringInternalCache.cpp" Source="..\..\src\CppUTest\TeamCityTestOutput.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\TestTestingFixture.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" Source="..\..\tests\SimpleStringCacheTest.cpp" Source="..\..\tests\TestFilterTest.cpp" Source="..\..\tests\TestHarness_cTest.cpp" Source="..\..\tests\TestHarness_cTestCFile.c" Source="..\..\tests\TestInstallerTest.cpp" Source="..\..\tests\TestMemoryAllocatorTest.cpp" Source="..\..\tests\TestOutputTest.cpp" Source="..\..\tests\TestRegistryTest.cpp" Source="..\..\tests\TestResultTest.cpp" Source="..\..\tests\TestUTestMacro.cpp" Source="..\..\tests\UtestTest.cpp" Source="C:\CCStudio_v3.3\C2000\cgtools\lib\src\farmem_cpp.cpp" Source="tests\CppUTest\AllTestsForTarget.cpp" Source="sim28335.cmd" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -i"$(Proj_dir)\..\..\tests" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 --preinclude="$(Proj_dir)\..\..\include\Platforms\c2000\stdint.h" ["Linker" Settings: "Debug"] Options=-a -c -farheap0x020000 -f0x0 -heap0x2000 -m".\Debug\CppUTestRunAllTests2.map" -o".\Debug\CppUTestRunAllTests2.out" -stack0x4000 --disable_auto_rts -w -l"rts2800_ml.lib" cpputest-4.0/platforms/CCStudio/CppUTest.pjt000644 000765 000024 00000004311 13663176127 022103 0ustar00basvoddestaff000000 000000 ; Code Composer Project File, Version 2.0 (do not modify or remove this line) [Project Settings] ProjectDir="C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\" ProjectType=Library CPUFamily=TMS320C28XX Tool="Archiver" Tool="Compiler" Tool="CustomBuilder" Tool="DspBiosBuilder" Config="Debug" [Source Files] Source="..\..\src\CppUTest\CommandLineArguments.cpp" Source="..\..\src\CppUTest\CommandLineTestRunner.cpp" Source="..\..\src\CppUTest\JUnitTestOutput.cpp" Source="..\..\src\CppUTest\MemoryLeakDetector.cpp" Source="..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp" Source="..\..\src\CppUTest\SimpleMutex.cpp" Source="..\..\src\CppUTest\SimpleString.cpp" Source="..\..\src\CppUTest\TeamCityTestOutput.cpp" Source="..\..\src\CppUTest\TestFailure.cpp" Source="..\..\src\CppUTest\TestFilter.cpp" Source="..\..\src\CppUTest\TestHarness_c.cpp" Source="..\..\src\CppUTest\TestMemoryAllocator.cpp" Source="..\..\src\CppUTest\TestOutput.cpp" Source="..\..\src\CppUTest\TestPlugin.cpp" Source="..\..\src\CppUTest\TestRegistry.cpp" Source="..\..\src\CppUTest\TestResult.cpp" Source="..\..\src\CppUTest\TestTestingFixture.cpp" Source="..\..\src\CppUTest\Utest.cpp" Source="..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\GTest.cpp" Source="..\..\src\CppUTestExt\MemoryReportAllocator.cpp" Source="..\..\src\CppUTestExt\MemoryReporterPlugin.cpp" Source="..\..\src\CppUTestExt\MemoryReportFormatter.cpp" Source="..\..\src\CppUTestExt\MockActualCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCall.cpp" Source="..\..\src\CppUTestExt\MockExpectedCallsList.cpp" Source="..\..\src\CppUTestExt\MockFailure.cpp" Source="..\..\src\CppUTestExt\MockNamedValue.cpp" Source="..\..\src\CppUTestExt\MockSupport.cpp" Source="..\..\src\CppUTestExt\MockSupport_c.cpp" Source="..\..\src\CppUTestExt\MockSupportPlugin.cpp" Source="..\..\src\CppUTestExt\OrderedTest.cpp" Source="..\..\src\Platforms\C2000\UtestPlatform.cpp" ["Archiver" Settings: "Debug"] Options=-r -o"..\..\lib\c2000\CppUTestd.lib" ["Compiler" Settings: "Debug"] Options=-g -rtti -pdsw225 -pden -pds1 -fr"$(Proj_dir)\Debug" -i"$(Proj_dir)\..\..\include" -d"_DEBUG" -d"LARGE_MODEL" -d"CPPUTEST_STD_CPP_LIB_DISABLED" -d"CPPUTEST_USE_MEM_LEAK_DETECTION" -ml -v28 cpputest-4.0/platforms/CCStudio/tests/000755 000765 000024 00000000000 13663444566 021025 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/CCStudio/sim28335.cmd000644 000765 000024 00000002607 13663176127 021545 0ustar00basvoddestaff000000 000000 /************************************************************/ /* Linker command file for simulator only */ /************************************************************/ /* Contains only the bare necessities for running a unit test * in the TI CCS 3.3 Simulator */ MEMORY { PAGE 0 : /* Program Memory */ /* Flash as one big segment */ FLASH : origin = 0x300000, length = 0x040000 PAGE 1 : /* Data Memory */ /* Internal SARAM */ RAM_0 : origin = 0x000000, length = 0x002000 /* 0x2000 to 0x3FFF: Not defined */ STACK : origin = 0x004000, length = 0x004000 /* stack needs own segment in low RAM */ RAM_1 : origin = 0x008000, length = 0x008000 /* External memory */ EMEM : origin = 0x100000, length = 0x030000 } SECTIONS { /* segment allocation */ .cinit : > FLASH, PAGE = 0 /* initialized internal RAM-data */ .pinit : > FLASH, PAGE = 0 /* initialized constructors */ .stack : > STACK, PAGE = 1 .text : > FLASH, PAGE = 0 .bss : > RAM_0, PAGE = 1 .ebss : > RAM_1, FILL = 0x0020, PAGE = 1 /* uninitialized external RAM-data */ .econst : > FLASH, PAGE = 0 .esysmem : > EMEM, PAGE = 1 /* not used if no malloc calls in code */ .cio : > RAM_0, PAGE = 1 /* keep the linker from complaining */ .reset : > FLASH, PAGE = 0, TYPE = DSECT /* not used */ } cpputest-4.0/platforms/CCStudio/sim28335.gel000644 000765 000024 00000025610 13663176127 021550 0ustar00basvoddestaff000000 000000 /********************************************************************/ /* f28335.gel */ /* Version 4.00.2 */ /* */ /* This GEL file is to be used with the TMS320F28335 DSP. */ /* Changes may be required to support specific hardware designs. */ /* */ /* Code Composer Studio supports six reserved GEL functions that */ /* automatically get executed if they are defined. They are: */ /* */ /* StartUp() - Executed whenever CCS is invoked */ /* OnReset() - Executed after Debug->Reset CPU */ /* OnRestart() - Executed after Debug->Restart */ /* OnPreFileLoaded() - Executed before File->Load Program */ /* OnFileLoaded() - Executed after File->Load Program */ /* OnTargetConnect() - Executed after Debug->Connect */ /* */ /********************************************************************/ StartUp() { /* The next line automatically loads the .gel file that comes */ /* with the DSP2833x Peripheral Header Files download. To use, */ /* uncomment, and copy the peripheral header .gel file to */ /* same directory as device .gel file. */ // GEL_LoadGel("$(GEL_file_dir)\\DSP2833x_Peripheral.gel"); } OnReset(int nErrorCode) { C28x_Mode(); XINTF_Enable(); } OnRestart(int nErrorCode) { /* CCS will call OnRestart() when you do a Debug->Restart and */ /* after you load a new file. Between running interrupt based */ /* programs, this function will clear interrupts and help keep */ /* the processor from going off into invalid memory. */ C28x_Mode(); IER = 0; IFR = 0; } OnPreFileLoaded() { C28x_Mode(); XINTF_Enable(); GEL_Reset(); } OnFileLoaded(int nErrorCode, int bSymbolsOnly) { } OnTargetConnect() { C28335_Memory_Map(); /* Initialize the CCS memory map */ /* Check to see if CCS has been started-up with the DSP already */ /* running in real-time mode. The user can add whatever */ /* custom initialization stuff they want to each case. */ if (GEL_IsInRealtimeMode()) /* Do real-time mode target initialization */ { // Note: This case never executes with the simulator } else /* Do stop-mode target initialization */ { // Note: This case always executes with the simulator } } /********************************************************************/ /* F28335 Memory Map */ /* */ /* Note: M0M1MAP and VMAP signals tied high on F28335 core */ /* */ /* 0x000000 - 0x0003ff M0 SARAM (Prog and Data) */ /* 0x000400 - 0x0007ff M1 SARAM (Prog and Data) */ /* 0x000800 - 0x001fff Peripheral Frame0 (PF0) (Data only) */ /* 0x004000 - 0x004fff XINTF Zone 0 (Prog and Data) */ /* 0x005000 - 0x005fff Peripheral Frame3 (PF3) (Data only) */ /* 0x006000 - 0x006fff Peripheral Frame1 (PF1) (Data only) */ /* 0x007000 - 0x007fff Peripheral Frame2 (PF2) (Data only) */ /* 0x008000 - 0x008fff L0 SARAM (Prog and Data) */ /* 0x009000 - 0x009fff L1 SARAM (Prog and Data) */ /* 0x00A000 - 0x00Afff L2 SARAM (Prog and Data) */ /* 0x00B000 - 0x00Bfff L3 SARAM (Prog and Data) */ /* 0x00C000 - 0x00Cfff L4 SARAM (Prog and Data) */ /* 0x00D000 - 0x00Dfff L5 SARAM (Prog and Data) */ /* 0x00E000 - 0x00Efff L6 SARAM (Prog and Data) */ /* 0x00F000 - 0x00Ffff L7 SARAM (Prog and Data) */ /* 0x100000 - 0x1fffff XINTF Zone 6 (Prog and Data) */ /* 0x200000 - 0x2fffff XINTF Zone 7 (Prog and Data */ /* 0x300000 - 0x33ffff Flash (Prog and Data) */ /* 0x380080 - 0x380088 ADC_cal function (Prog and Data) */ /* 0x380090 - 0x380090 PARTID value (Prog and Data) */ /* 0x380400 - 0x3807ff OTP (Prog and Data) */ /* 0x3f8000 - 0x3f8fff L0 SARAM (Prog and Data) */ /* 0x3f9000 - 0x3f9fff L1 SARAM (Prog and Data) */ /* 0x3fA000 - 0x3fAfff L2 SARAM (Prog and Data) */ /* 0x3fB000 - 0x3fBfff L3 SARAM (Prog and Data) */ /* 0x3fe000 - 0x3fffff BOOT ROM (Prog and Data) */ /********************************************************************/ menuitem "Initialize Memory Map"; hotmenu Memory_Map_Off() { GEL_MapReset(); GEL_MapOff(); } hotmenu C28335_Memory_Map() { GEL_MapReset(); GEL_MapOn(); /* Program memory map */ GEL_MapAdd(0x000,0,0x400,1,1); /* M0 SARAM */ GEL_MapAdd(0x400,0,0x400,1,1); /* M1 SARAM */ GEL_MapAdd(0x4000,0,0x1000,1,1); /* Zone 0 */ GEL_MapAdd(0x8000,0,0x1000,1,1); /* L0 SARAM */ GEL_MapAdd(0x9000,0,0x1000,1,1); /* L1 SARAM */ GEL_MapAdd(0xA000,0,0x1000,1,1); /* L2 SARAM */ GEL_MapAdd(0xB000,0,0x1000,1,1); /* L3 SARAM */ GEL_MapAdd(0xC000,0,0x1000,1,1); /* L4 SARAM */ GEL_MapAdd(0xD000,0,0x1000,1,1); /* L5 SARAM */ GEL_MapAdd(0xE000,0,0x1000,1,1); /* L6 SARAM */ GEL_MapAdd(0xF000,0,0x1000,1,1); /* L7 SARAM */ GEL_MapAdd(0x100000,0,0x100000,1,1); /* Zone 6 */ GEL_MapAdd(0x200000,0,0x100000,1,1); /* Zone 7 */ GEL_MapAdd(0x300000,0,0x40000,1,1); /* FLASH */ GEL_MapAdd(0x380080,0,0x00009,1,0); /* ADC_cal function*/ GEL_MapAdd(0x380090,0,0x00001,1,0); /* PARTID value */ GEL_MapAdd(0x380400,0,0x00400,1,0); /* OTP */ GEL_MapAdd(0x3f8000,0,0x1000,1,1); /* L0 SARAM Mirror */ GEL_MapAdd(0x3f9000,0,0x1000,1,1); /* L1 SARAM Mirror */ GEL_MapAdd(0x3fA000,0,0x1000,1,1); /* L2 SARAM Mirror */ GEL_MapAdd(0x3fb000,0,0x1000,1,1); /* L3 SARAM Mirror */ GEL_MapAdd(0x3fe000,0,0x2000,1,0); /* BOOT ROM */ /* Data memory map */ GEL_MapAdd(0x000,1,0x400,1,1); /* M0 SARAM */ GEL_MapAdd(0x400,1,0x400,1,1); /* M1 SARAM */ GEL_MapAdd(0x800,1,0x1800,1,1); /* PF0 */ GEL_MapAdd(0x4000,1,0x1000,1,1); /* Zone 0 */ GEL_MapAdd(0x5000,1,0x1000,1,1); /* PF3 */ GEL_MapAdd(0x6000,1,0x1000,1,1); /* PF1 */ GEL_MapAddStr(0x7000,1,0x1000,"R|W|AS2",0); /* PF2 */ GEL_MapAdd(0x8000,1,0x1000,1,1); /* L0 SARAM */ GEL_MapAdd(0x9000,1,0x1000,1,1); /* L1 SARAM */ GEL_MapAdd(0xA000,1,0x1000,1,1); /* L2 SARAM */ GEL_MapAdd(0xB000,1,0x1000,1,1); /* L3 SARAM */ GEL_MapAdd(0xC000,1,0x1000,1,1); /* L4 SARAM */ GEL_MapAdd(0xD000,1,0x1000,1,1); /* L5 SARAM */ GEL_MapAdd(0xE000,1,0x1000,1,1); /* L6 SARAM */ GEL_MapAdd(0xF000,1,0x1000,1,1); /* L7 SARAM */ GEL_MapAdd(0x100000,1,0x100000,1,1); /* Zone 6 */ GEL_MapAdd(0x200000,1,0x100000,1,1); /* Zone 7 */ GEL_MapAdd(0x300000,1,0x40000,1,0); /* FLASH */ GEL_MapAdd(0x380400,1,0x00400,1,0); /* OTP */ GEL_MapAdd(0x380080,1,0x00009,1,0); /* ADC_cal function*/ GEL_MapAdd(0x380090,1,0x00001,1,0); /* PARTID value */ GEL_MapAdd(0x3f8000,1,0x1000,1,1); /* L0 SARAM Mirror */ GEL_MapAdd(0x3f9000,1,0x1000,1,1); /* L1 SARAM Mirror */ GEL_MapAdd(0x3fA000,1,0x1000,1,1); /* L2 SARAM Mirror */ GEL_MapAdd(0x3fb000,1,0x1000,1,1); /* L3 SARAM Mirror */ GEL_MapAdd(0x3fe000,1,0x2000,1,0); /* BOOT ROM */ } /********************************************************************/ menuitem "Addressing Modes"; hotmenu C28x_Mode() { ST1 = ST1 & (~0x0100); /* AMODE = 0 */ ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ } hotmenu C24x_Mode() { ST1 = ST1 | 0x0100; /* AMODE = 1 */ ST1 = ST1 | 0x0200; /* OBJMODE = 1 */ } hotmenu C27x_Mode() { ST1 = ST1 & (~0x0100); /* AMODE = 0 */ ST1 = ST1 & (~0x0200); /* OBJMODE = 0 */ } /********************************************************************/ /* Enable the XINTF and configure GPIOs for XINTF function */ /********************************************************************/ int TxtOutCtl=0; menuitem "XINTF Enable" hotmenu XINTF_Enable() { if (TxtOutCtl==0) { GEL_TextOut("\nNOTES:\nTo configure the XINTF automatically on reset:\n uncomment the XINTF_Enable call in the OnReset function of the GEL file."); GEL_TextOut("\nNOTES:\nGel will enable XINTFx16 during Debug only.\nEnable XINTF in code prior to use."); TxtOutCtl=1; } /* enable XINTF clock (XTIMCLK) */ *0x7020 = 0x3700; /* GPBMUX1: XA0-XA7, XA16, XZCS0, */ /* XZCS7, XREADY, XRNW, XWE0 */ /* GPAMUX2: XA17-XA19, XZCS6 */ /* GPCMUX2: XA8-XA15 */ /* GPCMUX1: XD0-XD15 */ *(unsigned long *)0x6F96 = 0xFFFFFFC0; /* GPBMUX1 */ *(unsigned long *)0x6f88 = 0xFF000000; /* GPAMUX2 */ *(unsigned long *)0x6FA8 = 0x0000AAAA; /* GPCMUX2 */ *(unsigned long *)0x6FA6 = 0xAAAAAAAA; /* GPCMUX1 */ /* Uncomment for x32 data bus */ /* GPBMUX2: XD16-XD31 */ // *(unsigned long *)0x6F98 = 0xFFFFFFFF; /* GPBMUX2 */ /* Zone timing. /* Each zone can be configured seperately */ /* Uncomment the x16 or the x32 timing */ /* depending on the data bus width for */ /* the zone */ /* x16 Timing */ *(unsigned long *)0x0B20 = 0x0043FFFF; /* Zone0 */ *(unsigned long *)0x0B2C = 0x0043FFFF; /* Zone6 */ *(unsigned long *)0x0B2E = 0x0043FFFF; /* Zone7 */ /* x32 Timing: // *(unsigned long *)0x0B20 = 0x0041FFFF; /* x32 */ // *(unsigned long *)0x0B2C = 0x0041FFFF; /* x32 */ // *(unsigned long *)0x0B2E = 0x0041FFFF; /* x32 */ } /********************************************************************/ /*** End of file ***/ cpputest-4.0/platforms/CCStudio/CppUTest.wks000644 000765 000024 00000040271 13663176127 022117 0ustar00basvoddestaff000000 000000 !ÿÿ”& )ROOT—&} T ApplicationDefault Groupûj«—&§ * BOOKMARKSxx1•&B Ë$ __SYS_TEM__•&§í" Simulator•&Ë&TMS320C2800_0—&í/TMS320C2800_0ù£PeàhdfD@?_sGº ÿRAMÿ?NONE@ÿORAMPÿNONE€ÿÿRAMÿÿNONEÿÿ3RAM48NONE€8ˆ8ROM‰88NONE88ROM‘8ÿ8NONE8ÿ8ROM8ÿ?NONE€?ÿ¿?RAMÀ?ÿß?NONEà?ÿÿ?ROMÿRAM ÿ?NONE@ÿoRAMpÿ R|W|AS2€ÿÿRAMÿÿNONEÿÿ/RAM0ÿÿ3ROM48NONE€8ˆ8ROM‰88NONE88ROM‘8ÿ8NONE8ÿ8ROM8ÿ?NONE€?ÿ¿?RAMÀ?ÿß?NONEà?ÿÿ?ROM@ÿÿÿÿNONEÿÿNONESЗ&– T MAIN WINDOW,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî,•&¯? ¾(__LAYOUT_INFO__—&–`__LAYOUT_INFO__StandardLayout 0þÿ Simulator TMS320C2800_0—&–‘8 Layout 0l8Põ¯.\CC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTest.pjtDebugRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests1.pjtDebugRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests2.pjtDebugOC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestRunAllTests1.pjtDebugOC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestRunAllTests2.pjtDebug,ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿPäsßþÿÿ COutputFrameOutputB1!èßþP ÿÿCZincControlBarNot fully implementedA1 èßþPProperty Page ManagerÿÿCControlPluginParentWnd&{40EA375F-66C8-4616-B0AA-49B3FF3C4263}&PropertyPageManager Control - 1 Plugin ÐÏࡱá>þÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot Entryÿÿÿÿÿÿÿÿ_7ê@ÈfF°ªI³ÿþÿ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÿÿþÿÿÿþÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿRoot EntryÿÿÿÿÿÿÿÿW'ád+Ô¯ñP{^PMd¯û¬ÑContentsÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ__ww.wks.version.07152003__ Watch Locals__ww.wks.version.07152003__Watch 1\0 ch auto 0 0 0 0 ch 0 1 0 '0' <= ch && '9' >= ch auto 0 0 0 0 '0' <= ch && '9' >= ch 0 0 chÿÿÿÿ'0' <= ch && '9' >= chÿÿÿÿ€ DisassemblyA1#èßþP Disassemblyÿÿ CDisAsmWndþÿ Simulator TMS320C2800_0‰‰”]þÿ Simulator TMS320C2800_0á×1( 8èþÿÿÿ<èþÿÿÿÔ> ÿÿÿÿÿÿÿÿ500000<@ð èýÿÿÿþÿÿÿÿè ÿÿÿÿÿÿÿÿ1000000¡uðèþÿÿÿþÿÿÿØèþÿÿÿþÿÿÿn ÿÿÿÿÿÿÿÿ500000Ø_ðè»'è»ù> ÿÿÿÿÿÿÿÿ500000'8ðè¢þÿÿÿ'è¢þÿÿÿÏ ÿÿÿÿÿÿÿÿ500000''ðè¤þÿÿÿÿè  ÿÿÿÿÿÿÿÿ1000000ð èýÿÿÿþÿÿÿÿè ÿÿÿÿÿÿÿÿ11000000.Cðèþÿÿÿÿè  ÿÿÿÿÿÿÿÿ1000000ðèþÿÿÿþÿÿÿ'èþÿÿÿþÿÿÿ ÿÿÿÿÿÿÿÿ250000'}ðèþÿÿÿ†'èþÿÿÿ†  ÿÿÿÿÿÿÿÿ250000'}ð èþÿÿÿ'èþÿÿÿ‘ ÿÿÿÿÿÿÿÿ500000'}ðèýÿÿÿ‡ÿè  ÿÿÿÿÿÿÿÿ1000000ðèþÿÿÿ€ÿè  €ÿÿÿÿ1000000ðèýÿÿÿþÿÿÿÿè  ÿÿÿÿÿÿÿÿ1000000ð èþÿÿÿÿè  ÿÿÿÿÿÿÿÿ1000000 èÿÿÿÿÿÿÿÿ1000000èÿÿÿÿÿÿÿÿÿ,0,èèèèèè èè蹡º¡»¡èÿÿÿÿÿÿÿÿÿ,0, è!è$èèÿÿÿÿÿÿÿÿÿ,0, èèèè è"èèÿÿÿÿÿÿÿÿÿ,0, è 蹡þÿÿÿ<'èþÿÿÿ<D] ÿÿÿÿÿÿÿÿ333333'?ðº¡c<'èc<] ÿÿÿÿÿÿÿÿ333333'¥ð»¡j<'èj<‘] ÿÿÿÿÿÿÿÿ333333'!ð—þÿÿÿþÿÿÿÿè 1000000Úð蘪ÿ,0,—!è,è|ùÿÿÿÿÿÿÿÿ1600000,´ð èÿè ÿÿÿÿÿÿÿÿ11000000,´ðÈœÿÿÿ"è,è¥ÿÿÿÿÿÿÿÿ11000000,´ð$è‚,è‚ùÿÿÿÿÿÿÿÿ1400000,´ð#èþÿÿÿþÿÿÿÿè ÿÿÿÿÿÿÿÿ!,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ¯¯ç…1000000,´ð,´,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ¯¯ç…è:Tÿ,0,#è#è,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿKKgUntitledEC:\data\00_Dev\05_CppUTest\cpputest\src\CppUTestExt\MockSupport_c.cppEc:\data\00_dev\05_cpputest\cpputest\src\cpputestext\mocksupport_c.cppè,ÿÿÿÿÿÿÿÿøÿÿÿâÿÿÿ}}.Untitled>C:\data\00_Dev\05_CppUTest\cpputest\tests\SimpleStringTest.cpp>c:\data\00_dev\05_cpputest\cpputest\tests\simplestringtest.cppfŒô¯*.*7C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\XC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\Debug\CppUTestExtRunAllTests2.outRC:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\CppUTestExtRunAllTests2.pjt7C:\data\00_Dev\05_CppUTest\cpputest\platforms\CCStudio\•& Ñ?" Simulator•&¯?÷?&TMS320C2800_0—&Ñ?ÂUBMBreakpointsšcpputest-4.0/platforms/CCStudio/sim2833x.cfg000644 000765 000024 00000024732 13663176127 021647 0ustar00basvoddestaff000000 000000 /////////////////////////////////////////////////////////// // Initialize default F2833x memory map as defined by // // the MEMRSn signal. For F2833x, M0M1MAP=1 and VMAP=1. // /////////////////////////////////////////////////////////// module F2833x_memory; /////////////////////////////////////////////////////////// // M0 SARAM, shared prog and data space // /////////////////////////////////////////////////////////// memory M0_prog_mem; first 0x000000; last 0x0003FF; space prog; waitstates 0; type saram; shared M0_data_mem; end M0_prog_mem; memory M0_data_mem; first 0x000000; last 0x0003FF; space data; waitstates 0; type saram; end M0_data_mem; /////////////////////////////////////////////////////////// // M1 SARAM, shared prog and data space // /////////////////////////////////////////////////////////// memory M1_prog_mem; first 0x000400; last 0x0007FF; space prog; waitstates 0; type saram; shared M1_data_mem; end M1_prog_mem; memory M1_data_mem; first 0x000400; last 0x0007FF; space data; waitstates 0; type saram; end M1_data_mem; /////////////////////////////////////////////////////////// // PF0A, data space only // /////////////////////////////////////////////////////////// memory PF0A_data_mem; first 0x000800; last 0x000CFF; space data; waitstates 1; type saram; end PF0A_data_mem; /////////////////////////////////////////////////////////// // PIE Vector Table // /////////////////////////////////////////////////////////// memory PIE_vectors; first 0x000D00; last 0x000DFF; space data; waitstates 0; type saram; end PIE_vectors; /////////////////////////////////////////////////////////// // PF0B, data space only // /////////////////////////////////////////////////////////// memory PF0B_data_mem; first 0x000E00; last 0x001FFF; space data; waitstates 1; type saram; end PF0B_data_mem; /////////////////////////////////////////////////////////// // PF3, data space only // /////////////////////////////////////////////////////////// memory PF3_data_mem; first 0x005000; last 0x005FFF; space data; waitstates 2; type saram; end PF3_data_mem; ////////////////////////////////////////////////////////// // VBUS32 data space (PF1) // // 0x6000 - 0x6FFF // ////////////////////////////////////////////////////////// memory vbus32_data_mem; read_waitstates 2; write_waitstates 0; type vbus32; end vbus32_data_mem; ////////////////////////////////////////////////////////// // VBUS16 data space (PF2) // // 0x7000 - 0x7FFF // ////////////////////////////////////////////////////////// memory vbus16_data_mem; read_waitstates 2; write_waitstates 0; type vbus16; end vbus16_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 0, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF0_prog_mem; first 0x004000; last 0x004FFF; space prog; waitstates 7; type saram; shared XINTF0_data_mem; end XINTF0_prog_mem; memory XINTF0_data_mem; first 0x004000; last 0x004FFF; space data; waitstates 7; type saram; end XINTF0_data_mem; ////////////////////////////////////////////////////////// // L0 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L0_prog_mem; first 0x008000; last 0x008FFF; space prog; waitstates 0; type saram; shared L0_data_mem; end L0_prog_mem; memory L0_data_mem; first 0x008000; last 0x008FFF; space data; waitstates 0; type saram; end L0_data_mem; ////////////////////////////////////////////////////////// // L1 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L1_prog_mem; first 0x009000; last 0x009FFF; space prog; waitstates 0; type saram; shared L1_data_mem; end L1_prog_mem; memory L1_data_mem; first 0x009000; last 0x009FFF; space data; waitstates 0; type saram; end L1_data_mem; ////////////////////////////////////////////////////////// // L2 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L2_prog_mem; first 0x00A000; last 0x00AFFF; space prog; waitstates 0; type saram; shared L2_data_mem; end L2_prog_mem; memory L2_data_mem; first 0x00A000; last 0x00AFFF; space data; waitstates 0; type saram; end L2_data_mem; ////////////////////////////////////////////////////////// // L3 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L3_prog_mem; first 0x00B000; last 0x00BFFF; space prog; waitstates 0; type saram; shared L3_data_mem; end L3_prog_mem; memory L3_data_mem; first 0x00B000; last 0x00BFFF; space data; waitstates 0; type saram; end L3_data_mem; ////////////////////////////////////////////////////////// // L4 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L4_prog_mem; first 0x00C000; last 0x00CFFF; space prog; waitstates 0; type saram; shared L4_data_mem; end L4_prog_mem; memory L4_data_mem; first 0x00C000; last 0x00CFFF; space data; waitstates 0; type saram; end L4_data_mem; ////////////////////////////////////////////////////////// // L5 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L5_prog_mem; first 0x00D000; last 0x00DFFF; space prog; waitstates 0; type saram; shared L5_data_mem; end L5_prog_mem; memory L5_data_mem; first 0x00D000; last 0x00DFFF; space data; waitstates 0; type saram; end L5_data_mem; ////////////////////////////////////////////////////////// // L6 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L6_prog_mem; first 0x00E000; last 0x00EFFF; space prog; waitstates 1; type saram; shared L6_data_mem; end L6_prog_mem; memory L6_data_mem; first 0x00E000; last 0x00EFFF; space data; waitstates 1; type saram; end L6_data_mem; ////////////////////////////////////////////////////////// // L7 SARAM, shared prog and data space // ////////////////////////////////////////////////////////// memory L7_prog_mem; first 0x00F000; last 0x00FFFF; space prog; waitstates 1; type saram; shared L7_data_mem; end L7_prog_mem; memory L7_data_mem; first 0x00F000; last 0x00FFFF; space data; waitstates 1; type saram; end L7_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 6, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF6_prog_mem; first 0x100000; last 0x1FFFFF; space prog; waitstates 7; type saram; shared XINTF6_data_mem; end XINTF6_prog_mem; memory XINTF6_data_mem; first 0x100000; last 0x1FFFFF; space data; waitstates 7; type saram; end XINTF6_data_mem; ////////////////////////////////////////////////////////// // XINTF ZONE 7, shared prog and data space // ////////////////////////////////////////////////////////// memory XINTF7_prog_mem; first 0x200000; last 0x2FFFFF; space prog; waitstates 7; type saram; shared XINTF7_data_mem; end XINTF7_prog_mem; memory XINTF7_data_mem; first 0x200000; last 0x2FFFFF; space data; waitstates 7; type saram; end XINTF7_data_mem; ////////////////////////////////////////////////////////// // FLASH, shared prog and data space // ////////////////////////////////////////////////////////// memory FLASH_prog_mem; first 0x300000; last 0x33FFF7; space prog; waitstates 5; type flash; shared FLASH_data_mem; end FLASH_prog_mem; memory FLASH_data_mem; first 0x300000; last 0x33FFF7; space data; waitstates 5; type flash; end FLASH_data_mem; ////////////////////////////////////////////////////////// // PASSWORDS, shared prog and data space // ////////////////////////////////////////////////////////// memory PASSWORDS_prog_mem; first 0x33FFF8; last 0x33FFFF; space prog; waitstates 16; type flash; shared PASSWORDS_data_mem; end PASSWORDS_prog_mem; memory PASSWORDS_data_mem; first 0x33FFF8; last 0x33FFFF; space data; waitstates 16; type flash; end PASSWORDS_data_mem; ////////////////////////////////////////////////////////// // OTP, shared prog and data space // ////////////////////////////////////////////////////////// memory OTP_prog_mem; first 0x380400; last 0x3807FF; space prog; waitstates 8; type flash; shared OTP_data_mem; end OTP_prog_mem; memory OTP_data_mem; first 0x380400; last 0x3807FF; space data; waitstates 8; type flash; end OTP_data_mem; ////////////////////////////////////////////////////////// // BOOT ROM, shared prog and data space // ////////////////////////////////////////////////////////// memory BOOT_prog_mem; first 0x3FE000; last 0x3FFFFF; space prog; waitstates 1; type rom; shared BOOT_data_mem; end BOOT_prog_mem; memory BOOT_data_mem; first 0x3FE000; last 0x3FFFFF; space data; waitstates 1; type rom; end BOOT_data_mem; end F2833x_memory; cpputest-4.0/platforms/CCStudio/tests/CppUTest/000755 000765 000024 00000000000 13663444566 022534 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/CCStudio/tests/CppUTestExt/000755 000765 000024 00000000000 13663444566 023215 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/CCStudio/tests/CppUTestExt/AllTestsForTarget.cpp000644 000765 000024 00000004413 13663176127 027267 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2013, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" int main(int ac, char** av) { /* Specify commandline arguments here as needed */ char* argv[] = { (char*) 0, (char*) "-v", // (char*) "-gSimpleStringBuffer", // (char*) "-ojunit", }; ac = sizeof(argv) / sizeof(char*); MemoryReporterPlugin plugin; MockSupportPlugin mockPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&plugin); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); return CommandLineTestRunner::RunAllTests(ac, argv); } cpputest-4.0/platforms/CCStudio/tests/CppUTest/AllTestsForTarget.cpp000644 000765 000024 00000004106 13663176127 026605 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2013, Michael Feathers, James Grenning, Bas Vodde * and Arnd Strube * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, char** av) { /* Specify commandline arguments here as needed */ char* argv[] = { (char*) 0, (char*) "-v", // (char*) "-gSimpleStringBuffer", // (char*) "-ojunit", }; ac = sizeof(argv) / sizeof(char*); /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); return CommandLineTestRunner::RunAllTests(ac, argv); } cpputest-4.0/platforms/Dos/sources.mk000644 000765 000024 00000017001 13663176127 020741 0ustar00basvoddestaff000000 000000 CPPU_OBJECTS := \ $(CPPUTEST_HOME)/src/CppUTest/CommandLineArguments.o \ $(CPPUTEST_HOME)/src/CppUTest/CommandLineTestRunner.o \ $(CPPUTEST_HOME)/src/CppUTest/JUnitTestOutput.o \ $(CPPUTEST_HOME)/src/CppUTest/TeamCityTestOutput.o \ $(CPPUTEST_HOME)/src/CppUTest/MemoryLeakDetector.o \ $(CPPUTEST_HOME)/src/CppUTest/MemoryLeakWarningPlugin.o \ $(CPPUTEST_HOME)/src/CppUTest/SimpleMutex.o \ $(CPPUTEST_HOME)/src/CppUTest/SimpleString.o \ $(CPPUTEST_HOME)/src/CppUTest/SimpleStringInternalCache.o \ $(CPPUTEST_HOME)/src/CppUTest/TestFailure.o \ $(CPPUTEST_HOME)/src/CppUTest/TestFilter.o \ $(CPPUTEST_HOME)/src/CppUTest/TestHarness_c.o \ $(CPPUTEST_HOME)/src/CppUTest/TestMemoryAllocator.o \ $(CPPUTEST_HOME)/src/CppUTest/TestOutput.o \ $(CPPUTEST_HOME)/src/CppUTest/TestPlugin.o \ $(CPPUTEST_HOME)/src/CppUTest/TestRegistry.o \ $(CPPUTEST_HOME)/src/CppUTest/TestTestingFixture.o \ $(CPPUTEST_HOME)/src/CppUTest/TestResult.o \ $(CPPUTEST_HOME)/src/CppUTest/Utest.o \ $(CPPUTEST_HOME)/src/Platforms/Dos/UtestPlatform.o CPPUX_OBJECTS := \ $(CPPUTEST_HOME)/src/CppUTestExt/CodeMemoryReportFormatter.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MemoryReporterPlugin.o \ $(CPPUTEST_HOME)/src/CppUTestExt/IEEE754ExceptionsPlugin.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockFailure.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockSupportPlugin.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockActualCall.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockSupport_c.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MemoryReportAllocator.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockExpectedCall.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockNamedValue.o \ $(CPPUTEST_HOME)/src/CppUTestExt/OrderedTest.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MemoryReportFormatter.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockExpectedCallsList.o \ $(CPPUTEST_HOME)/src/CppUTestExt/MockSupport.o CPPU1_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/AllocLetTestFree.o \ $(CPPUTEST_HOME)/tests/CppUTest/AllocLetTestFreeTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/CheatSheetTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/CompatabilityTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/CommandLineArgumentsTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/CommandLineTestRunnerTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/JUnitOutputTest.o CPPU2_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/DummyMemoryLeakDetector.o \ $(CPPUTEST_HOME)/tests/CppUTest/MemoryLeakWarningTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/PluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/PreprocessorTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/SetPluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/SimpleMutexTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TeamCityOutputTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestFailureNaNTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestFailureTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestResultTest.o \ CPPU3_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/MemoryLeakDetectorTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/SimpleStringTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/SimpleStringCacheTest.o CPPU4_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestOutputTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestRegistryTest.o \ CPPU5_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/AllocationInCFile.o \ $(CPPUTEST_HOME)/tests/CppUTest/AllocationInCppFile.o \ $(CPPUTEST_HOME)/tests/CppUTest/MemoryOperatorOverloadTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TeamCityOutputTest.o CPPU6_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestFilterTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestHarness_cTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestHarness_cTestCFile.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestInstallerTest.o CPPU7_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestMemoryAllocatorTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestUTestMacro.o CPPU8_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTest/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTest/UtestPlatformTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/UtestTest.o \ $(CPPUTEST_HOME)/tests/CppUTest/TestUTestStringMacro.o \ CPPUX1_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/ExpectedFunctionsListTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/GMockTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/GTest1Test.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/GTest2ConvertorTest.o CPPUX2_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MemoryReportAllocatorTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MemoryReportFormatterTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MemoryReporterPluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockActualCallTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockCheatSheetTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockComparatorCopierTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockExpectedCallTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockHierarchyTest.o CPPUX3_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/CodeMemoryReporterTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/OrderedTestTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/OrderedTestTest_c.o \ CPPUX4_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockReturnValueTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockNamedValueTest.o CPPUX5_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockPluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockSupport_cTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockSupport_cTestCFile.o \ CPPUX6_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/ExpectedFunctionsListTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockCallTest.o CPPUX7_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockComparatorCopierTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockHierarchyTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockParameterTest.o \ CPPUX8_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/IEEE754PluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/IEEE754PluginTest_c.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockComparatorCopierTest.o CPPUX9_OBJECTS := \ $(CPPUTEST_HOME)/tests/CppUTestExt/AllTests.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureReporterForTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockFailureTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockHierarchyTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockPluginTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockReturnValueTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockStrictOrderTest.o \ $(CPPUTEST_HOME)/tests/CppUTestExt/MockSupportTest.o \ cpputest-4.0/platforms/Dos/dosbox-0.74.conf000644 000765 000024 00000024634 13663176127 021472 0ustar00basvoddestaff000000 000000 # This is the configurationfile for DOSBox 0.74. (Please use the latest version of DOSBox) # Lines starting with a # are commentlines and are ignored by DOSBox. # They are used to (briefly) document the effect of each option. [sdl] # fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back) # fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox. # fullresolution: What resolution to use for fullscreen: original or fixed size (e.g. 1024x768). # Using your monitor's native resolution with aspect=true might give the best results. # If you end up with small window on a large screen, try an output different from surface. # windowresolution: Scale the window to this size IF the output device supports hardware scaling. # (output=surface does not!) # output: What video system to use for output. # Possible values: surface, overlay, opengl, openglnb. # autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock) # sensitivity: Mouse sensitivity. # waitonerror: Wait before closing the console if dosbox has an error. # priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized. # pause is only valid for the second entry. # Possible values: lowest, lower, normal, higher, highest, pause. # mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value. # usescancodes: Avoid usage of symkeys, might not work on all operating systems. fullscreen=false fulldouble=false fullresolution=1366x768 windowresulultion=900x675 output=surface autolock=false sensitivity=50 waitonerror=true priority=higher,normal mapperfile=mapper-0.74.map usescancodes=true [dosbox] # language: Select another language file. # machine: The type of machine tries to emulate. # Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe. # captures: Directory where things like wave, midi, screenshot get captured. # memsize: Amount of memory DOSBox has in megabytes. # This value is best left at its default to avoid problems with some games, # though few games might require a higher value. # There is generally no speed advantage when raising this value. language= machine=svga_s3 captures=capture memsize=16 [render] # frameskip: How many frames DOSBox skips before drawing one. # aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!. # scaler: Scaler used to enlarge/enhance low resolution modes. # If 'forced' is appended, then the scaler will be used even if the result might not be desired. # Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x. frameskip=0 aspect=false scaler=normal2x [cpu] # core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate. # Possible values: auto, dynamic, normal, simple. # cputype: CPU Type used in emulation. auto is the fastest choice. # Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch. # cycles: Amount of instructions DOSBox tries to emulate each millisecond. # Setting this value too high results in sound dropouts and lags. # Cycles can be set in 3 ways: # 'auto' tries to guess what a game needs. # It usually works, but can fail for certain games. # 'fixed #number' will set a fixed amount of cycles. This is what you usually need if 'auto' fails. # (Example: fixed 4000). # 'max' will allocate as much cycles as your computer is able to handle. # # Possible values: auto, fixed, max. # cycleup: Amount of cycles to decrease/increase with keycombo.(CTRL-F11/CTRL-F12) # cycledown: Setting it lower than 100 will be a percentage. core=auto cputype=auto cycles=max cycleup=10 cycledown=20 [mixer] # nosound: Enable silent mode, sound is still emulated though. # rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged. # Possible values: 1024, 2048, 4096, 8192, 512, 256. # prebuffer: How many milliseconds of data to keep on top of the blocksize. nosound=true rate=44100 blocksize=1024 prebuffer=20 [midi] # mpu401: Type of MPU-401 to emulate. # Possible values: intelligent, uart, none. # mididevice: Device that will receive the MIDI data from MPU-401. # Possible values: default, win32, alsa, oss, coreaudio, coremidi, none. # midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use. # See the README/Manual for more details. mpu401=none mididevice=none midiconfig= [sblaster] # sbtype: Type of Soundblaster to emulate. gb is Gameblaster. # Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none. # sbbase: The IO address of the soundblaster. # Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300. # irq: The IRQ number of the soundblaster. # Possible values: 7, 5, 3, 9, 10, 11, 12. # dma: The DMA number of the soundblaster. # Possible values: 1, 5, 0, 3, 6, 7. # hdma: The High DMA number of the soundblaster. # Possible values: 1, 5, 0, 3, 6, 7. # sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer. # oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'. # Possible values: auto, cms, opl2, dualopl2, opl3, none. # oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well). # Possible values: default, compat, fast. # oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly). # Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000. sbtype=none sbbase=220 irq=7 dma=1 hdma=5 sbmixer=false oplmode=none oplemu=default oplrate=44100 [gus] # gus: Enable the Gravis Ultrasound emulation. # gusrate: Sample rate of Ultrasound emulation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # gusbase: The IO base address of the Gravis Ultrasound. # Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300. # gusirq: The IRQ number of the Gravis Ultrasound. # Possible values: 5, 3, 7, 9, 10, 11, 12. # gusdma: The DMA channel of the Gravis Ultrasound. # Possible values: 3, 0, 1, 5, 6, 7. # ultradir: Path to Ultrasound directory. In this directory # there should be a MIDI directory that contains # the patch files for GUS playback. Patch sets used # with Timidity should work fine. gus=false gusrate=44100 gusbase=240 gusirq=5 gusdma=3 ultradir=~ [speaker] # pcspeaker: Enable PC-Speaker emulation. # pcrate: Sample rate of the PC-Speaker sound generation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'. # Possible values: auto, on, off. # tandyrate: Sample rate of the Tandy 3-Voice generation. # Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716. # disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible). pcspeaker=false pcrate=44100 tandy=auto tandyrate=44100 disney=false [joystick] # joysticktype: Type of joystick to emulate: auto (default), none, # 2axis (supports two joysticks), # 4axis (supports one joystick, first joystick used), # 4axis_2 (supports one joystick, second joystick used), # fcs (Thrustmaster), ch (CH Flightstick). # none disables joystick emulation. # auto chooses emulation depending on real joystick(s). # (Remember to reset dosbox's mapperfile if you saved it earlier) # Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none. # timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away). # autofire: continuously fires as long as you keep the button pressed. # swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks. # buttonwrap: enable button wrapping at the number of emulated buttons. joysticktype=none [serial] # serial1: set type of device connected to com port. # Can be disabled, dummy, modem, nullmodem, directserial. # Additional parameters must be in the same line in the form of # parameter:value. Parameter for all types is irq (optional). # for directserial: realport (required), rxdelay (optional). # (realport:COM1 realport:ttyS0). # for modem: listenport (optional). # for nullmodem: server, rxdelay, txdelay, telnet, usedtr, # transparent, port, inhsocket (all optional). # Example: serial1=modem listenport:5000 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial2: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial3: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. # serial4: see serial1 # Possible values: dummy, disabled, modem, nullmodem, directserial. serial1=dummy serial2=dummy serial3=disabled serial4=disabled [dos] # xms: Enable XMS support. # ems: Enable EMS support. # umb: Enable UMB support. # keyboardlayout: Language code of the keyboard layout (or none). xms=true ems=true umb=true keyboardlayout=auto [ipx] # ipx: Enable ipx over UDP/IP emulation. ipx=false [autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount d . d: cd \ cpputest-4.0/platforms/Dos/Makefile000644 000765 000024 00000003633 13663176127 020373 0ustar00basvoddestaff000000 000000 CXX := wcl CC := wcl AR := wlib LINK := wlink LOG := ALLTESTS.LOG NULL := space := $(NULL) # comma := , path_separator := / drive = $(subst $(CYGDRIVE),$(lastword $(subst /, ,$(CYGDRIVE))):/,$(1)) convert_paths = $(if $(CYGDRIVE),$(subst /,$(path_separator),$(call drive,$(1))),$(1)) -include $(CPPUTEST_HOME)/platforms/Dos/platform.mk include $(CPPUTEST_HOME)/platforms/Dos/sources.mk # Disable W013 unreachable code - it overreacts to CHECK_EQUAL macros # Disable W367 conditional expression in if statement is always true - same # Disable W368 conditional expression in if statement is always false - same # Disable W391 assignment found in boolean expression - we don't care CFLAGS := \ -q -c -os -oc -d0 -we -w=3 -wcd=13 -wcd=367 -wcd=368 -wcd391 -wcd=472 -ml -zm \ -dCPPUTEST_MEM_LEAK_DETECTION_DISABLED=1 -dCPPUTEST_STD_CPP_LIB_DISABLED=1 \ -i$(call convert_paths,$(CPPUTEST_HOME)/include) \ -i$(call convert_paths,$(CPPUTEST_HOME)/include/Platforms/Dos) \ -i$(call convert_paths,$(WATCOM)/h) -i$(call convert_paths,$(WATCOM)/h/nt) \ CXXFLAGS := $(CFLAGS) -xds .PHONY: all clean all: CPPU.LIB CPPUX.LIB \ CPPU1.EXE CPPU2.EXE CPPU3.EXE CPPU4.EXE CPPU5.EXE CPPU6.EXE CPPU7.EXE CPPU8.EXE \ CPPUX1.EXE CPPUX2.EXE CPPUX3.EXE CPPUX4.EXE CPPUX5.EXE CPPUX6.EXE CPPUX7.EXE CPPUX8.EXE CPPUX9.EXE clean: rm -rf ../src/CppUTest/*.o ../src/CppUTestExt/*.o \ ../src/Platforms/dos/*.o ../tests/*.o ../tests/CppUTestExt/*.o \ *.o *.map *.txt *.LOG *.EXE *.err *.LIB *.LST %.o: %.cpp $(CXX) $(CXXFLAGS) -fo=$(call convert_paths,$@) $(call convert_paths,$<) %.o: %.c $(CC) $(CFLAGS) -fo=$(call convert_paths,$@) $(call convert_paths,$<) .SECONDEXPANSION: %.LIB: $$($$*_OBJECTS) $(AR) -q -lCPPU.LST $@ $(addprefix +,$(call convert_paths,$?)) %.EXE: $$($$*_OBJECTS) | CPPU.LIB CPPUX.LIB $(LINK) opt q,map,st=50k sys dos lib CPPU.LIB,CPPUX.LIB \ file $(subst $(space),$(comma),$(call convert_paths,$?)) name $@ cpputest-4.0/platforms/Dos/alltests.sh000755 000765 000024 00000002265 13663176127 021125 0ustar00basvoddestaff000000 000000 #!/bin/bash checkForCppUTestToolsEnvVariable() { if [ -z "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 1 fi if [ ! -d "$CPPUTEST_HOME" ] ; then echo "CPPUTEST_HOME not set to a directory. You must set CPPUTEST_HOME to the top level CppUTest directory" exit 2 fi } checkForCppUTestToolsEnvVariable printf "" > exit # so dosbox will run 'external' command 'exit' correctly printf "" >ALLTESTS.LOG for test in `ls *.EXE`; do kb=`ls -lsk ${test} | awk '{print $1}'` printf "Running ${test} (${kb}k) inside DOSBox...\n" dosbox -conf $CPPUTEST_HOME/platforms/Dos/dosbox-0.74.conf exit \ -c "echo *** ${test} (${kb}k) *****************************>>ALLTESTS.LOG" \ -c "${test}>>ALLTESTS.LOG" \ -noconsole -exit 1>console_output 2>dosbox_error.log || { printf "error running command!\n"; cat dosbox_error.log; exit 1; } done printf "\n" [ "`cat ALLTESTS.LOG`" ] || { printf "No tests to run!\n"; exit 1; } [ "`cat ALLTESTS.LOG|grep checks`" ] || { printf "No test output!\n"; exit 1; } cat ALLTESTS.LOG [ -z "`cat ALLTESTS.LOG|grep Failure`" ] || { printf "Failed tests!\n"; exit 1; } cpputest-4.0/platforms/Dos/.gitignore000644 000765 000024 00000000014 13663176127 020711 0ustar00basvoddestaff000000 000000 platform.mk cpputest-4.0/platforms/Dos/ALLTESTS.BAT000644 000765 000024 00000000644 13663176127 020515 0ustar00basvoddestaff000000 000000 REM Run all tests on Windows systems @echo off set log=%~n0.LOG & shift & set args=%* if exist %log% del %log% echo.>exit for %%a in (*.EXE) do call :run %%a echo. & type %log% echo. & echo Done. exit/b :run echo Running %1 inside DOSBox... echo *** %1 (%~z1 bytes) *********************>>%log% DOSBox.exe -conf ..\platforms\Dos\dosbox-0.74.conf exit ^ -c "%1 %args%>>%log%" -noconsole -exit exit/b cpputest-4.0/platforms/Dos/README.txt000644 000765 000024 00000001452 13663176127 020426 0ustar00basvoddestaff000000 000000 To compile on your Windows PC (or other platform), please create a file called "platform.mk" in this directory. ### Example platform.mk for use with Cygwin on Windows XP WATCOM := d:\\bin\\watcom CPPUTEST_HOME := /d/dev/05_CppUTest/cpputest DOSBOX := DOSBox CYGDRIVE:= /d/ path_separator := \\ ### Another example platform.mk for use with Cygwin on Windows 7 WATCOM := d:\watcom CPPUTEST_HOME := /cygdrive/c/data/00_Dev/05_CppUTest/cpputest INCLUDE := c:\data\00_Dev\05_CppUTest\cpputest\include DOSBOX := DOSBox CYGDRIVE:= /cygdrive/d/ path_separator := \\ ### platform.mk for use with Cygwin 2.5.0 on Windows 7 WATCOM := d:\watcom CPPUTEST_HOME := c:\\data\\00_Dev\\05_CppUTest\\cpputest INCLUDE := c:\data\00_Dev\05_CppUTest\cpputest\include DOSBOX := DOSBox CYGDRIVE:= /cygdrive/d/ path_separator := \\ cpputest-4.0/platforms/iar/CppUTestExtTest.icf000644 000765 000024 00000007745 13663176127 022504 0ustar00basvoddestaff000000 000000 /*###ICF### Section handled by ICF editor, don't touch! ****/ /*-Editor annotation file-*/ /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_1.xml" */ /*-Specials-*/ define symbol __ICFEDIT_intvec_start__ = 0x00000000; /*-Memory Regions-*/ define symbol __ICFEDIT_region_IROM1_start__ = 0x00000080; define symbol __ICFEDIT_region_IROM1_end__ = 0x0009FFFF; define symbol __ICFEDIT_region_IROM2_start__ = 0x0; define symbol __ICFEDIT_region_IROM2_end__ = 0x0; define symbol __ICFEDIT_region_EROM1_start__ = 0x0; define symbol __ICFEDIT_region_EROM1_end__ = 0x0; define symbol __ICFEDIT_region_EROM2_start__ = 0x0; define symbol __ICFEDIT_region_EROM2_end__ = 0x0; define symbol __ICFEDIT_region_EROM3_start__ = 0x0; define symbol __ICFEDIT_region_EROM3_end__ = 0x0; define symbol __ICFEDIT_region_IRAM1_start__ = 0x00100000; define symbol __ICFEDIT_region_IRAM1_end__ = 0x001FFFFF; define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; /*-Sizes-*/ define symbol __ICFEDIT_size_cstack__ = 0x600; define symbol __ICFEDIT_size_svcstack__ = 0x100; define symbol __ICFEDIT_size_irqstack__ = 0x100; define symbol __ICFEDIT_size_fiqstack__ = 0x100; define symbol __ICFEDIT_size_undstack__ = 0x100; define symbol __ICFEDIT_size_abtstack__ = 0x100; define symbol __ICFEDIT_size_heap__ = 0x8000; /**** End of ICF editor section. ###ICF###*/ define memory mem with size = 4G; define region IROM_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__] | mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; define region EROM_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__] | mem:[from __ICFEDIT_region_EROM2_start__ to __ICFEDIT_region_EROM2_end__] | mem:[from __ICFEDIT_region_EROM3_start__ to __ICFEDIT_region_EROM3_end__]; define region IRAM_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__] | mem:[from __ICFEDIT_region_IRAM2_start__ to __ICFEDIT_region_IRAM2_end__]; define region ERAM_region = mem:[from __ICFEDIT_region_ERAM1_start__ to __ICFEDIT_region_ERAM1_end__] | mem:[from __ICFEDIT_region_ERAM2_start__ to __ICFEDIT_region_ERAM2_end__] | mem:[from __ICFEDIT_region_ERAM3_start__ to __ICFEDIT_region_ERAM3_end__]; define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { }; define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { }; define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { }; define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { }; define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; do not initialize { section .noinit }; initialize by copy { readwrite }; if (isdefinedsymbol(__USE_DLIB_PERTHREAD)) { // Required in a multi-threaded application initialize by copy with packing = none { section __DLIB_PERTHREAD }; } place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; place in IROM_region { readonly }; place in EROM_region { readonly section application_specific_ro }; place in IRAM_region { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP }; place in ERAM_region { readwrite section application_specific_rw };cpputest-4.0/platforms/iar/CppUTestExt.ewp000644 000765 000024 00000145300 13663176127 021664 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 General 3 24 1 1 ICCARM 2 31 1 1 AARM 2 9 1 1 OBJCOPY 0 1 1 1 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 1 IARCHIVE 0 0 1 1 BILINK 0 Release ARM 0 General 3 24 1 0 ICCARM 2 31 1 0 AARM 2 9 1 0 OBJCOPY 0 1 1 0 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 0 IARCHIVE 0 0 1 0 BILINK 0 src CppUTestExt $PROJ_DIR$\..\..\src\CppUTestExt\CodeMemoryReportFormatter.cpp $PROJ_DIR$\..\..\src\CppUTestExt\GTest.cpp $PROJ_DIR$\..\..\src\CppUTestExt\IEEE754ExceptionsPlugin.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MemoryReportAllocator.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MemoryReporterPlugin.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MemoryReportFormatter.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockActualCall.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockExpectedCall.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockExpectedCallsList.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockFailure.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockNamedValue.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockSupport.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockSupport_c.cpp $PROJ_DIR$\..\..\src\CppUTestExt\MockSupportPlugin.cpp $PROJ_DIR$\..\..\src\CppUTestExt\OrderedTest.cpp Platforms Iar $PROJ_DIR$\..\..\src\Platforms\Iar\UtestPlatform.cpp cpputest-4.0/platforms/iar/tests/000755 000765 000024 00000000000 13663444566 020123 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/iar/CppUTest.ewd000644 000765 000024 00000250003 13663176127 021164 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 C-SPY 2 28 1 1 ARMSIM_ID 2 1 1 1 ANGEL_ID 2 0 1 1 CADI_ID 2 0 1 1 CMSISDAP_ID 2 4 1 1 GDBSERVER_ID 2 0 1 1 IARROM_ID 2 1 1 1 IJET_ID 2 8 1 1 JLINK_ID 2 16 1 1 LMIFTDI_ID 2 2 1 1 MACRAIGOR_ID 2 3 1 1 PEMICRO_ID 2 3 1 1 RDI_ID 2 2 1 1 STLINK_ID 2 3 1 1 THIRDPARTY_ID 2 0 1 1 TIFET_ID 2 1 1 1 XDS100_ID 2 5 1 1 $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin 0 $TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin 0 $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin 1 $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin 0 $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin 0 Release ARM 0 C-SPY 2 28 1 0 ARMSIM_ID 2 1 1 0 ANGEL_ID 2 0 1 0 CADI_ID 2 0 1 0 CMSISDAP_ID 2 4 1 0 GDBSERVER_ID 2 0 1 0 IARROM_ID 2 1 1 0 IJET_ID 2 8 1 0 JLINK_ID 2 16 1 0 LMIFTDI_ID 2 2 1 0 MACRAIGOR_ID 2 3 1 0 PEMICRO_ID 2 3 1 0 RDI_ID 2 2 1 0 STLINK_ID 2 3 1 0 THIRDPARTY_ID 2 0 1 0 TIFET_ID 2 1 1 0 XDS100_ID 2 5 1 0 $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin 0 $TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin 0 $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin 1 $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin 0 $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin 0 cpputest-4.0/platforms/iar/CppUTestTest.icf000644 000765 000024 00000007745 13663176127 022023 0ustar00basvoddestaff000000 000000 /*###ICF### Section handled by ICF editor, don't touch! ****/ /*-Editor annotation file-*/ /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\a_v1_1.xml" */ /*-Specials-*/ define symbol __ICFEDIT_intvec_start__ = 0x00000000; /*-Memory Regions-*/ define symbol __ICFEDIT_region_IROM1_start__ = 0x00000080; define symbol __ICFEDIT_region_IROM1_end__ = 0x0009FFFF; define symbol __ICFEDIT_region_IROM2_start__ = 0x0; define symbol __ICFEDIT_region_IROM2_end__ = 0x0; define symbol __ICFEDIT_region_EROM1_start__ = 0x0; define symbol __ICFEDIT_region_EROM1_end__ = 0x0; define symbol __ICFEDIT_region_EROM2_start__ = 0x0; define symbol __ICFEDIT_region_EROM2_end__ = 0x0; define symbol __ICFEDIT_region_EROM3_start__ = 0x0; define symbol __ICFEDIT_region_EROM3_end__ = 0x0; define symbol __ICFEDIT_region_IRAM1_start__ = 0x00100000; define symbol __ICFEDIT_region_IRAM1_end__ = 0x001FFFFF; define symbol __ICFEDIT_region_IRAM2_start__ = 0x0; define symbol __ICFEDIT_region_IRAM2_end__ = 0x0; define symbol __ICFEDIT_region_ERAM1_start__ = 0x0; define symbol __ICFEDIT_region_ERAM1_end__ = 0x0; define symbol __ICFEDIT_region_ERAM2_start__ = 0x0; define symbol __ICFEDIT_region_ERAM2_end__ = 0x0; define symbol __ICFEDIT_region_ERAM3_start__ = 0x0; define symbol __ICFEDIT_region_ERAM3_end__ = 0x0; /*-Sizes-*/ define symbol __ICFEDIT_size_cstack__ = 0x600; define symbol __ICFEDIT_size_svcstack__ = 0x100; define symbol __ICFEDIT_size_irqstack__ = 0x100; define symbol __ICFEDIT_size_fiqstack__ = 0x100; define symbol __ICFEDIT_size_undstack__ = 0x100; define symbol __ICFEDIT_size_abtstack__ = 0x100; define symbol __ICFEDIT_size_heap__ = 0x8000; /**** End of ICF editor section. ###ICF###*/ define memory mem with size = 4G; define region IROM_region = mem:[from __ICFEDIT_region_IROM1_start__ to __ICFEDIT_region_IROM1_end__] | mem:[from __ICFEDIT_region_IROM2_start__ to __ICFEDIT_region_IROM2_end__]; define region EROM_region = mem:[from __ICFEDIT_region_EROM1_start__ to __ICFEDIT_region_EROM1_end__] | mem:[from __ICFEDIT_region_EROM2_start__ to __ICFEDIT_region_EROM2_end__] | mem:[from __ICFEDIT_region_EROM3_start__ to __ICFEDIT_region_EROM3_end__]; define region IRAM_region = mem:[from __ICFEDIT_region_IRAM1_start__ to __ICFEDIT_region_IRAM1_end__] | mem:[from __ICFEDIT_region_IRAM2_start__ to __ICFEDIT_region_IRAM2_end__]; define region ERAM_region = mem:[from __ICFEDIT_region_ERAM1_start__ to __ICFEDIT_region_ERAM1_end__] | mem:[from __ICFEDIT_region_ERAM2_start__ to __ICFEDIT_region_ERAM2_end__] | mem:[from __ICFEDIT_region_ERAM3_start__ to __ICFEDIT_region_ERAM3_end__]; define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { }; define block SVC_STACK with alignment = 8, size = __ICFEDIT_size_svcstack__ { }; define block IRQ_STACK with alignment = 8, size = __ICFEDIT_size_irqstack__ { }; define block FIQ_STACK with alignment = 8, size = __ICFEDIT_size_fiqstack__ { }; define block UND_STACK with alignment = 8, size = __ICFEDIT_size_undstack__ { }; define block ABT_STACK with alignment = 8, size = __ICFEDIT_size_abtstack__ { }; define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { }; do not initialize { section .noinit }; initialize by copy { readwrite }; if (isdefinedsymbol(__USE_DLIB_PERTHREAD)) { // Required in a multi-threaded application initialize by copy with packing = none { section __DLIB_PERTHREAD }; } place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec }; place in IROM_region { readonly }; place in EROM_region { readonly section application_specific_ro }; place in IRAM_region { readwrite, block CSTACK, block SVC_STACK, block IRQ_STACK, block FIQ_STACK, block UND_STACK, block ABT_STACK, block HEAP }; place in ERAM_region { readwrite section application_specific_rw };cpputest-4.0/platforms/iar/CppUTest.ewp000644 000765 000024 00000145774 13663176127 021222 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 General 3 24 1 1 ICCARM 2 31 1 1 AARM 2 9 1 1 OBJCOPY 0 1 1 1 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 1 IARCHIVE 0 0 1 1 BILINK 0 Release ARM 0 General 3 24 1 0 ICCARM 2 31 1 0 AARM 2 9 1 0 OBJCOPY 0 1 1 0 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 0 IARCHIVE 0 0 1 0 BILINK 0 src CppUTest $PROJ_DIR$\..\..\src\CppUTest\CommandLineArguments.cpp $PROJ_DIR$\..\..\src\CppUTest\CommandLineTestRunner.cpp $PROJ_DIR$\..\..\src\CppUTest\JUnitTestOutput.cpp $PROJ_DIR$\..\..\src\CppUTest\MemoryLeakDetector.cpp $PROJ_DIR$\..\..\src\CppUTest\MemoryLeakWarningPlugin.cpp $PROJ_DIR$\..\..\src\CppUTest\SimpleMutex.cpp $PROJ_DIR$\..\..\src\CppUTest\SimpleString.cpp $PROJ_DIR$\..\..\src\CppUTest\SimpleStringInternalCache.cpp $PROJ_DIR$\..\..\src\CppUTest\TeamCityTestOutput.cpp $PROJ_DIR$\..\..\src\CppUTest\TestFailure.cpp $PROJ_DIR$\..\..\src\CppUTest\TestFilter.cpp $PROJ_DIR$\..\..\src\CppUTest\TestHarness_c.cpp $PROJ_DIR$\..\..\src\CppUTest\TestMemoryAllocator.cpp $PROJ_DIR$\..\..\src\CppUTest\TestOutput.cpp $PROJ_DIR$\..\..\src\CppUTest\TestPlugin.cpp $PROJ_DIR$\..\..\src\CppUTest\TestRegistry.cpp $PROJ_DIR$\..\..\src\CppUTest\TestResult.cpp $PROJ_DIR$\..\..\src\CppUTest\TestTestingFixture.cpp $PROJ_DIR$\..\..\src\CppUTest\Utest.cpp Platforms Iar $PROJ_DIR$\..\..\src\Platforms\Iar\UtestPlatform.cpp cpputest-4.0/platforms/iar/CppUTest.eww000644 000765 000024 00000000546 13663176127 021214 0ustar00basvoddestaff000000 000000 $WS_DIR$\CppUTest.ewp $WS_DIR$\CppUTestExt.ewp $WS_DIR$\CppUTestExtTest.ewp $WS_DIR$\CppUTestTest.ewp cpputest-4.0/platforms/iar/CppUTestExtTest.ewp000644 000765 000024 00000151013 13663176127 022522 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 General 3 24 1 1 ICCARM 2 31 1 1 AARM 2 9 1 1 OBJCOPY 0 1 1 1 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 1 IARCHIVE 0 0 1 1 BILINK 0 Release ARM 0 General 3 24 1 0 ICCARM 2 31 1 0 AARM 2 9 1 0 OBJCOPY 0 1 1 0 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 0 IARCHIVE 0 0 1 0 BILINK 0 tests failing passing $PROJ_DIR$\..\..\tests\CppUTestExt\CodeMemoryReporterTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\ExpectedFunctionsListTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\GMockTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\GTest1Test.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\GTest2ConvertorTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\IEEE754PluginTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\IEEE754PluginTest_c.c $PROJ_DIR$\..\..\tests\CppUTestExt\IEEE754PluginTest_c.h $PROJ_DIR$\..\..\tests\CppUTestExt\MemoryReportAllocatorTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MemoryReporterPluginTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MemoryReportFormatterTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockActualCallTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockCallTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockCheatSheetTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockComparatorCopierTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockExpectedCallTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockFailureReporterForTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockFailureReporterForTest.h $PROJ_DIR$\..\..\tests\CppUTestExt\MockFailureTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockHierarchyTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockNamedValueTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockParameterTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockPluginTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockReturnValueTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockStrictOrderTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockSupport_cTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\MockSupport_cTestCFile.c $PROJ_DIR$\..\..\tests\CppUTestExt\MockSupport_cTestCFile.h $PROJ_DIR$\..\..\tests\CppUTestExt\MockSupportTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\OrderedTestTest.cpp $PROJ_DIR$\..\..\tests\CppUTestExt\OrderedTestTest_c.c $PROJ_DIR$\..\..\tests\CppUTestExt\OrderedTestTest.h warnings $PROJ_DIR$\tests\CppUTestExt\AllTests.cpp cpputest-4.0/platforms/iar/CppUTestTest.ewd000644 000765 000024 00000250003 13663176127 022024 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 C-SPY 2 28 1 1 ARMSIM_ID 2 1 1 1 ANGEL_ID 2 0 1 1 CADI_ID 2 0 1 1 CMSISDAP_ID 2 4 1 1 GDBSERVER_ID 2 0 1 1 IARROM_ID 2 1 1 1 IJET_ID 2 8 1 1 JLINK_ID 2 16 1 1 LMIFTDI_ID 2 2 1 1 MACRAIGOR_ID 2 3 1 1 PEMICRO_ID 2 3 1 1 RDI_ID 2 2 1 1 STLINK_ID 2 3 1 1 THIRDPARTY_ID 2 0 1 1 TIFET_ID 2 1 1 1 XDS100_ID 2 5 1 1 $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin 0 $TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin 0 $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin 1 $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin 0 $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin 0 Release ARM 0 C-SPY 2 28 1 0 ARMSIM_ID 2 1 1 0 ANGEL_ID 2 0 1 0 CADI_ID 2 0 1 0 CMSISDAP_ID 2 4 1 0 GDBSERVER_ID 2 0 1 0 IARROM_ID 2 1 1 0 IJET_ID 2 8 1 0 JLINK_ID 2 16 1 0 LMIFTDI_ID 2 2 1 0 MACRAIGOR_ID 2 3 1 0 PEMICRO_ID 2 3 1 0 RDI_ID 2 2 1 0 STLINK_ID 2 3 1 0 THIRDPARTY_ID 2 0 1 0 TIFET_ID 2 1 1 0 XDS100_ID 2 5 1 0 $TOOLKIT_DIR$\plugins\middleware\HCCWare\HCCWare.ewplugin 0 $TOOLKIT_DIR$\plugins\middleware\PercepioTraceExporter\PercepioTraceExportPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\AVIX\AVIX.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\CMX\CmxTinyArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\embOS\embOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\MQX\MQXRtosPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\OpenRTOS\OpenRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\Quadros\Quadros_EWB7_Plugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\SafeRTOS\SafeRTOSPlugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\ThreadX\ThreadXArmPlugin.ENU.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\TI-RTOS\tirtosplugin.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-286-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-II\uCOS-II-KA-CSpy.ewplugin 0 $TOOLKIT_DIR$\plugins\rtos\uCOS-III\uCOS-III-KA-CSpy.ewplugin 0 $EW_DIR$\common\plugins\CodeCoverage\CodeCoverage.ENU.ewplugin 1 $EW_DIR$\common\plugins\Orti\Orti.ENU.ewplugin 0 $EW_DIR$\common\plugins\uCProbe\uCProbePlugin.ENU.ewplugin 0 cpputest-4.0/platforms/iar/CppUTestTest.ewp000644 000765 000024 00000150470 13663176127 022047 0ustar00basvoddestaff000000 000000 2 Debug ARM 1 General 3 24 1 1 ICCARM 2 31 1 1 AARM 2 9 1 1 OBJCOPY 0 1 1 1 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 1 IARCHIVE 0 0 1 1 BILINK 0 Release ARM 0 General 3 24 1 0 ICCARM 2 31 1 0 AARM 2 9 1 0 OBJCOPY 0 1 1 0 CUSTOM 3 0 BICOMP 0 BUILDACTION 1 ILINK 0 17 1 0 IARCHIVE 0 0 1 0 BILINK 0 tests failing passing $PROJ_DIR$\..\..\tests\CppUTest\AllocationInCFile.c $PROJ_DIR$\..\..\tests\CppUTest\AllocationInCppFile.cpp $PROJ_DIR$\..\..\tests\CppUTest\AllocLetTestFree.c $PROJ_DIR$\..\..\tests\CppUTest\AllocLetTestFreeTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\CheatSheetTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\CompatabilityTests.cpp $PROJ_DIR$\..\..\tests\CppUTest\CommandLineArgumentsTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\CommandLineTestRunnerTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\JUnitOutputTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\MemoryLeakDetectorTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\MemoryLeakWarningTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\MemoryOperatorOverloadTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\PluginTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\PreprocessorTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\SetPluginTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\SimpleMutexTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\SimpleStringTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TeamCityOutputTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestFailureNaNTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestFailureTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestFilterTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestHarness_cTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestHarness_cTestCFile.c $PROJ_DIR$\..\..\tests\CppUTest\TestInstallerTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestMemoryAllocatorTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestOutputTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestRegistryTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestResultTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestUTestMacro.cpp $PROJ_DIR$\..\..\tests\CppUTest\TestUTestStringMacro.cpp $PROJ_DIR$\..\..\tests\CppUTest\UtestPlatformTest.cpp $PROJ_DIR$\..\..\tests\CppUTest\UtestTest.cpp warnings $PROJ_DIR$\tests\AllTests.cpp cpputest-4.0/platforms/iar/tests/CppUTestExt/000755 000765 000024 00000000000 13663444566 022313 5ustar00basvoddestaff000000 000000 cpputest-4.0/platforms/iar/tests/AllTests.cpp000644 000765 000024 00000004053 13663176127 022357 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" int main(int ac, const char** av) { /* These checks are here to make sure assertions outside test runs don't crash */ CHECK(true); LONGS_EQUAL(1, 1); const char * av_override[] = {"exe", "-v"}; int rv = CommandLineTestRunner::RunAllTests(2, av_override); //Exiting from main causes IAR simulator to issue out-of-bounds memory access warnings. volatile int wait = 1; while (wait){} return rv; } cpputest-4.0/platforms/iar/tests/AllTests.h000644 000765 000024 00000004066 13663176127 022030 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ //Include this in the test main to execute these tests IMPORT_TEST_GROUP( Utest); IMPORT_TEST_GROUP( Failure); IMPORT_TEST_GROUP( TestOutput); IMPORT_TEST_GROUP( SimpleString); IMPORT_TEST_GROUP( TestInstaller); IMPORT_TEST_GROUP( NullTest); IMPORT_TEST_GROUP( MemoryLeakWarningTest); IMPORT_TEST_GROUP( TestHarness_c); IMPORT_TEST_GROUP( CommandLineTestRunner); IMPORT_TEST_GROUP( JUnitOutputTest); IMPORT_TEST_GROUP( MemoryLeakDetectorTest); /* In allTest.cpp */ IMPORT_TEST_GROUP(CheatSheet); cpputest-4.0/platforms/iar/tests/CppUTestExt/AllTests.cpp000644 000765 000024 00000005421 13663176127 024547 0ustar00basvoddestaff000000 000000 /* * Copyright (c) 2007, Michael Feathers, James Grenning and Bas Vodde * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE EARLIER MENTIONED AUTHORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "CppUTest/CommandLineTestRunner.h" #include "CppUTest/TestRegistry.h" #include "CppUTestExt/MemoryReporterPlugin.h" #include "CppUTestExt/MockSupportPlugin.h" #ifdef CPPUTEST_INCLUDE_GTEST_TESTS #include "CppUTestExt/GTestConvertor.h" #endif int main(int ac, const char** av) { const char * av_override[] = {"exe", "-v"}; #ifdef CPPUTEST_INCLUDE_GTEST_TESTS GTestConvertor convertor; convertor.addAllGTestToTestRegistry(); #endif MemoryReporterPlugin plugin; MockSupportPlugin mockPlugin; TestRegistry::getCurrentRegistry()->installPlugin(&plugin); TestRegistry::getCurrentRegistry()->installPlugin(&mockPlugin); #ifndef GMOCK_RENAME_MAIN int rv = CommandLineTestRunner::RunAllTests(2, av_override); #else /* Don't have any memory leak detector when running the Google Test tests */ testing::GMOCK_FLAG(verbose) = testing::internal::kWarningVerbosity; ConsoleTestOutput output; CommandLineTestRunner runner(ac, av, &output, TestRegistry::getCurrentRegistry()); return runner.runAllTestsMain(); #endif //Exiting from main causes IAR simulator to issue out-of-bounds memory access warnings. volatile int wait = 1; while (wait){} return rv; } cpputest-4.0/generated/CppUTestGeneratedConfig.h000644 000765 000024 00000017176 13663444513 022766 0ustar00basvoddestaff000000 000000 #ifndef _GENERATED_CPPUTESTGENERATEDCONFIG_H #define _GENERATED_CPPUTESTGENERATEDCONFIG_H 1 /* generated/CppUTestGeneratedConfig.h. Generated automatically at end of configure. */ /* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_DLFCN_H #define CPPUTEST_HAVE_DLFCN_H 1 #endif /* Define to 1 if you have the `fork' function. */ #ifndef CPPUTEST_HAVE_FORK #define CPPUTEST_HAVE_FORK 1 #endif /* Define to 1 if you have the `gettimeofday' function. */ #ifndef CPPUTEST_HAVE_GETTIMEOFDAY #define CPPUTEST_HAVE_GETTIMEOFDAY 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_INTTYPES_H #define CPPUTEST_HAVE_INTTYPES_H 1 #endif /* Define to 1 if the system has the type `long long int'. */ #ifndef CPPUTEST_HAVE_LONG_LONG_INT #define CPPUTEST_HAVE_LONG_LONG_INT 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_MEMORY_H #define CPPUTEST_HAVE_MEMORY_H 1 #endif /* Define to 1 if you have the `memset' function. */ #ifndef CPPUTEST_HAVE_MEMSET #define CPPUTEST_HAVE_MEMSET 1 #endif /* Define if you have POSIX threads libraries and header files. */ /* #undef HAVE_PTHREAD */ /* Define to 1 if you have the `pthread_mutex_lock' function. */ #ifndef CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK #define CPPUTEST_HAVE_PTHREAD_MUTEX_LOCK 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_STDDEF_H #define CPPUTEST_HAVE_STDDEF_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_STDINT_H #define CPPUTEST_HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_STDLIB_H #define CPPUTEST_HAVE_STDLIB_H 1 #endif /* Define to 1 if you have the `strdup' function. */ #ifndef CPPUTEST_HAVE_STRDUP #define CPPUTEST_HAVE_STRDUP 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_STRINGS_H #define CPPUTEST_HAVE_STRINGS_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_STRING_H #define CPPUTEST_HAVE_STRING_H 1 #endif /* Define to 1 if you have the `strstr' function. */ #ifndef CPPUTEST_HAVE_STRSTR #define CPPUTEST_HAVE_STRSTR 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_SYS_STAT_H #define CPPUTEST_HAVE_SYS_STAT_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_SYS_TIME_H #define CPPUTEST_HAVE_SYS_TIME_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_SYS_TYPES_H #define CPPUTEST_HAVE_SYS_TYPES_H 1 #endif /* Define to 1 if you have the header file. */ #ifndef CPPUTEST_HAVE_UNISTD_H #define CPPUTEST_HAVE_UNISTD_H 1 #endif /* Define to 1 if the system has the type `unsigned long long int'. */ #ifndef CPPUTEST_HAVE_UNSIGNED_LONG_LONG_INT #define CPPUTEST_HAVE_UNSIGNED_LONG_LONG_INT 1 #endif /* Define to 1 if you have the `vfork' function. */ #ifndef CPPUTEST_HAVE_VFORK #define CPPUTEST_HAVE_VFORK 1 #endif /* Define to 1 if you have the header file. */ /* #undef HAVE_VFORK_H */ /* Define to 1 if `fork' works. */ #ifndef CPPUTEST_HAVE_WORKING_FORK #define CPPUTEST_HAVE_WORKING_FORK 1 #endif /* Define to 1 if `vfork' works. */ #ifndef CPPUTEST_HAVE_WORKING_VFORK #define CPPUTEST_HAVE_WORKING_VFORK 1 #endif /* Include the GTest-related tests in the build */ /* #undef INCLUDE_GTEST_TESTS */ /* disable long long */ /* #undef LONG_LONG_DISABLED */ /* Define to the sub-directory where libtool stores uninstalled libraries. */ #ifndef CPPUTEST_LT_OBJDIR #define CPPUTEST_LT_OBJDIR ".libs/" #endif /* memory leak detection disabled */ /* #undef MEM_LEAK_DETECTION_DISABLED */ /* Name of package */ #ifndef CPPUTEST_PACKAGE #define CPPUTEST_PACKAGE "cpputest" #endif /* Define to the address where bug reports for this package should be sent. */ #ifndef CPPUTEST_PACKAGE_BUGREPORT #define CPPUTEST_PACKAGE_BUGREPORT "https://github.com/cpputest/cpputest" #endif /* Define to the full name of this package. */ #ifndef CPPUTEST_PACKAGE_NAME #define CPPUTEST_PACKAGE_NAME "CppUTest" #endif /* Define to the full name and version of this package. */ #ifndef CPPUTEST_PACKAGE_STRING #define CPPUTEST_PACKAGE_STRING "CppUTest 4.0" #endif /* Define to the one symbol short name of this package. */ #ifndef CPPUTEST_PACKAGE_TARNAME #define CPPUTEST_PACKAGE_TARNAME "cpputest" #endif /* Define to the home page for this package. */ #ifndef CPPUTEST_PACKAGE_URL #define CPPUTEST_PACKAGE_URL "" #endif /* Define to the version of this package. */ #ifndef CPPUTEST_PACKAGE_VERSION #define CPPUTEST_PACKAGE_VERSION "4.0" #endif /* Define to necessary symbol if this constant uses a non-standard name on your system. */ /* #undef PTHREAD_CREATE_JOINABLE */ /* Define to 1 if you have the ANSI C header files. */ #ifndef CPPUTEST_STDC_HEADERS #define CPPUTEST_STDC_HEADERS 1 #endif /* Standard C++ library disabled */ /* #undef STD_CPP_LIB_DISABLED */ /* Standard C library disabled */ /* #undef STD_C_LIB_DISABLED */ /* Version number of package */ #ifndef CPPUTEST_VERSION #define CPPUTEST_VERSION "4.0" #endif /* Define for Solaris 2.5.1 so the uint32_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ /* #undef _UINT32_T */ /* Define for Solaris 2.5.1 so the uint64_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ /* #undef _UINT64_T */ /* Define for Solaris 2.5.1 so the uint8_t typedef from , , or is not used. If the typedef were allowed, the #define below would cause a syntax error. */ /* #undef _UINT8_T */ /* Define to `__inline__' or `__inline' if that's what the C compiler calls it, or to nothing if 'inline' is not supported under any name. */ #ifndef __cplusplus /* #undef inline */ #endif /* Define to the type of a signed integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ /* #undef int16_t */ /* Define to the type of a signed integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ /* #undef int32_t */ /* Define to the type of a signed integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ /* #undef int64_t */ /* Define to the type of a signed integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ /* #undef int8_t */ /* Define to `int' if does not define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to the type of an unsigned integer type of width exactly 16 bits if such a type exists and the standard includes do not define it. */ /* #undef uint16_t */ /* Define to the type of an unsigned integer type of width exactly 32 bits if such a type exists and the standard includes do not define it. */ /* #undef uint32_t */ /* Define to the type of an unsigned integer type of width exactly 64 bits if such a type exists and the standard includes do not define it. */ /* #undef uint64_t */ /* Define to the type of an unsigned integer type of width exactly 8 bits if such a type exists and the standard includes do not define it. */ /* #undef uint8_t */ /* Define as `fork' if `vfork' does not work. */ /* #undef vfork */ /* once: _GENERATED_CPPUTESTGENERATEDCONFIG_H */ #endif