Wed Jul 10 15:24 2013 Andreas Schneider <asn@cryptomilk.org>
    * cmocka: version 0.3.1
    * Fixed pointer conversion on s390 and ppc (32bit big endian).
    * Fixed the customer_database test on big endian.

Wed Jun 05 08:14 2013 Andreas Schneider <asn@cryptomilk.org>
    * cmocka: version 0.3.0
    * Added a better mock object example.
    * Added pkgconfig file.
    * Added new macros mock_type() and mock_ptr_type().
    * Added more documentation.
    * Fixed installation problems on some platforms.

Mon Jan 14 11:16 2013 Andreas Schneider <asn@cryptomilk.org>
    * cmocka: version 0.2.0
    * Added doxygen api documentation.
    * Added new cmake build system.
    * Added support to create windows NSIS installer.
    * Fixed examples which didn't work.
    * Fixed a huge amount of bugs.

Mon Sep 15 17:21:22 2008 Google Inc. <opensource@google.com>
	* cmockery: version 0.12
	* Made it possible to specify additional compiler, lib tool and link 
	  flags on Windows.
	* Added Windows makefile to the tar ball.

Fri Aug 29 10:50:46 2008  Google Inc. <opensource@google.com>

	* cmockery: version 0.11
	* Made it possible to specify executable, library and object output 
	  directories.

Tue Aug 26 10:18:02 2008  Google Inc. <opensource@google.com>

	* cmockery: initial release:
	  A lightweight library to simplify and generalize the process of 
	  writing unit tests for C applications.
