[cairo-commit] 2 commits - cairo-version.h configure.in Makefile.am RELEASING src/cairoint.h src/cairo-misc.c src/cairo-version.c src/cairo-version.h src/Makefile.am

Behdad Esfahbod behdad at kemper.freedesktop.org
Thu Aug 28 15:20:15 PDT 2008


 Makefile.am         |    3 +
 RELEASING           |    6 +--
 cairo-version.h     |    8 ++++
 configure.in        |    2 -
 src/Makefile.am     |    2 +
 src/cairo-misc.c    |   44 --------------------------
 src/cairo-version.c |   88 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/cairo-version.h |   12 +++++--
 src/cairoint.h      |    7 ++++
 9 files changed, 120 insertions(+), 52 deletions(-)

New commits:
commit 894940b81f0272a2993d3a785fd505b3a4375e6e
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Aug 28 18:18:23 2008 -0400

    Some nasty tracks to make changing version number not cause a total rebuild
    
    Quite slick!  This comes handy when git-bisect'ing.  The canonical version
    number is in toplevel cairo-version.h now.

diff --git a/Makefile.am b/Makefile.am
index b2eeccd..a47cee4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@ if CAIRO_HAS_PNG_FUNCTIONS
 SUBDIRS += boilerplate test perf
 endif
 
-configure: src/cairo-version.h
+configure: cairo-version.h
 
 .PHONY: doc test retest recheck check-valgrind
 # We have some generated header files, so we really need to build the
@@ -58,6 +58,7 @@ endif
 
 EXTRA_DIST = \
 	autogen.sh \
+	cairo-version.h \
 	AUTHORS \
 	BIBLIOGRAPHY \
 	BUGS \
diff --git a/RELEASING b/RELEASING
index ac306fc..1672f46 100644
--- a/RELEASING
+++ b/RELEASING
@@ -54,7 +54,7 @@ Here are the steps to follow to create a new cairo release:
 		find src/ -name '*.h' ! -name '*-private.h' ! -name 'cairoint.h' ! -name 'cairo-features-win32.h' | \
 		xargs git diff X.Y.Z.. --
 
-4) Increment cairo_version_{minor|micro} in src/cairo-version.h:
+4) Increment cairo_version_{minor|micro} in cairo-version.h:
 
 	If there are backward-incompatible changes in the API, stop
 	now and don't release. Go back and fix the API instead. Cairo
@@ -70,7 +70,7 @@ Here are the steps to follow to create a new cairo release:
 	Otherwise, (ie. there are only bug fixes), increment
 	cairo_version_micro to the next larger (even) number.
 
-5) Commit the changes to NEWS and src/cairo-version.h
+5) Commit the changes to NEWS and cairo-version.h
 
 	It's especially important to mention the new version number in your
 	commit log.
@@ -98,7 +98,7 @@ Here are the steps to follow to create a new cairo release:
 	  prints it for you.
 
 7) Increment cairo_version_micro to the next larger (odd) number in
-   src/cairo-version.h, commit, and push.
+   cairo-version.h, commit, and push.
 
 8) Push the newly created tag out to the central tree with a command
    something like:
diff --git a/cairo-version.h b/cairo-version.h
new file mode 100644
index 0000000..bfe4958
--- /dev/null
+++ b/cairo-version.h
@@ -0,0 +1,8 @@
+#ifndef CAIRO_VERSION_H
+#define CAIRO_VERSION_H
+
+#define CAIRO_VERSION_MAJOR 1
+#define CAIRO_VERSION_MINOR 7
+#define CAIRO_VERSION_MICRO 5
+
+#endif
diff --git a/configure.in b/configure.in
index 41dab9d..7ab6d53 100644
--- a/configure.in
+++ b/configure.in
@@ -3,7 +3,7 @@ AC_PREREQ(2.58)
 dnl Parse Version.mk and declare m4 variables out of it
 m4_define([cairo_version_macro],
 		m4_translit(
-		m4_bpatsubst(m4_include(src/cairo-version.h),
+		m4_bpatsubst(m4_include(cairo-version.h),
 			     [^.define \([a-zA-Z0-9_]*\)  *\([0-9][0-9]*\)],
 			     [[m4_define(\1, \[\2\])]]),
 			    [A-Z], [a-z]))
diff --git a/src/Makefile.am b/src/Makefile.am
index 012f294..444714b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -79,6 +79,7 @@ cairo_base_sources =				\
 	cairo-paginated-surface-private.h	\
 	cairo-analysis-surface.c		\
 	cairo-analysis-surface-private.h	\
+	cairo-version.c				\
 	cairo-version.h				\
 	cairoint.h
 cairo_all_sources = $(cairo_base_sources) $(cairo_base_headers)
@@ -289,6 +290,7 @@ XRENDER_LIBS=@XRENDER_LIBS@
 cairoincludedir = $(includedir)/cairo
 cairoinclude_HEADERS =			\
 	cairo-deprecated.h		\
+	$(top_srcdir)/cairo-version.h	\
 	$(cairo_headers)
 
 nodist_cairoinclude_HEADERS =		\
diff --git a/src/cairo-misc.c b/src/cairo-misc.c
index 960a8b6..9a0ede0 100644
--- a/src/cairo-misc.c
+++ b/src/cairo-misc.c
@@ -126,50 +126,6 @@ cairo_status_to_string (cairo_status_t status)
 
 
 /**
- * cairo_version:
- *
- * Returns the version of the cairo library encoded in a single
- * integer as per %CAIRO_VERSION_ENCODE. The encoding ensures that
- * later versions compare greater than earlier versions.
- *
- * A run-time comparison to check that cairo's version is greater than
- * or equal to version X.Y.Z could be performed as follows:
- *
- * <informalexample><programlisting>
- * if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...}
- * </programlisting></informalexample>
- *
- * See also cairo_version_string() as well as the compile-time
- * equivalents %CAIRO_VERSION and %CAIRO_VERSION_STRING.
- *
- * Return value: the encoded version.
- **/
-int
-cairo_version (void)
-{
-    return CAIRO_VERSION;
-}
-
-/**
- * cairo_version_string:
- *
- * Returns the version of the cairo library as a human-readable string
- * of the form "X.Y.Z".
- *
- * See also cairo_version() as well as the compile-time equivalents
- * %CAIRO_VERSION_STRING and %CAIRO_VERSION.
- *
- * Return value: a string containing the version.
- **/
-const char*
-cairo_version_string (void)
-{
-    return CAIRO_VERSION_STRING;
-}
-slim_hidden_def (cairo_version_string);
-
-
-/**
  * cairo_glyph_allocate:
  * @num_glyphs: number of glyphs to allocate
  *
diff --git a/src/cairo-version.c b/src/cairo-version.c
new file mode 100644
index 0000000..a502988
--- /dev/null
+++ b/src/cairo-version.c
@@ -0,0 +1,88 @@
+/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */
+/* cairo - a vector graphics library with display and print output
+ *
+ * Copyright © 2002 University of Southern California
+ * Copyright © 2005 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it either under the terms of the GNU Lesser General Public
+ * License version 2.1 as published by the Free Software Foundation
+ * (the "LGPL") or, at your option, under the terms of the Mozilla
+ * Public License Version 1.1 (the "MPL"). If you do not alter this
+ * notice, a recipient may use your version of this file under either
+ * the MPL or the LGPL.
+ *
+ * You should have received a copy of the LGPL along with this library
+ * in the file COPYING-LGPL-2.1; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * You should have received a copy of the MPL along with this library
+ * in the file COPYING-MPL-1.1
+ *
+ * The contents of this file are subject to the Mozilla Public License
+ * Version 1.1 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
+ * OF ANY KIND, either express or implied. See the LGPL or the MPL for
+ * the specific language governing rights and limitations.
+ *
+ * The Original Code is the cairo graphics library.
+ *
+ * The Initial Developer of the Original Code is University of Southern
+ * California.
+ *
+ * Contributor(s):
+ *	Carl D. Worth <cworth at cworth.org>
+ */
+
+#define CAIRO_VERSION_H 1
+
+#include "cairoint.h"
+
+/* get the "real" version info instead of dummy cairo-version.h */
+#undef CAIRO_VERSION_H
+#include "../cairo-version.h"
+
+/**
+ * cairo_version:
+ *
+ * Returns the version of the cairo library encoded in a single
+ * integer as per %CAIRO_VERSION_ENCODE. The encoding ensures that
+ * later versions compare greater than earlier versions.
+ *
+ * A run-time comparison to check that cairo's version is greater than
+ * or equal to version X.Y.Z could be performed as follows:
+ *
+ * <informalexample><programlisting>
+ * if (cairo_version() >= CAIRO_VERSION_ENCODE(X,Y,Z)) {...}
+ * </programlisting></informalexample>
+ *
+ * See also cairo_version_string() as well as the compile-time
+ * equivalents %CAIRO_VERSION and %CAIRO_VERSION_STRING.
+ *
+ * Return value: the encoded version.
+ **/
+int
+cairo_version (void)
+{
+    return CAIRO_VERSION;
+}
+
+/**
+ * cairo_version_string:
+ *
+ * Returns the version of the cairo library as a human-readable string
+ * of the form "X.Y.Z".
+ *
+ * See also cairo_version() as well as the compile-time equivalents
+ * %CAIRO_VERSION_STRING and %CAIRO_VERSION.
+ *
+ * Return value: a string containing the version.
+ **/
+const char*
+cairo_version_string (void)
+{
+    return CAIRO_VERSION_STRING;
+}
+slim_hidden_def (cairo_version_string);
diff --git a/src/cairo-version.h b/src/cairo-version.h
index bfe4958..5100800 100644
--- a/src/cairo-version.h
+++ b/src/cairo-version.h
@@ -1,8 +1,14 @@
+/* This is a dummy file.
+ * The actual version info is in toplevel cairo-version.h.
+ * The purpose of this file is to make most of the source files NOT depend
+ * on the real cairo-version.h, and as a result, changing library version
+ * would not cause a complete rebuild of all object files (just a relink).
+ * This is useful when bisecting. */
 #ifndef CAIRO_VERSION_H
 #define CAIRO_VERSION_H
 
-#define CAIRO_VERSION_MAJOR 1
-#define CAIRO_VERSION_MINOR 7
-#define CAIRO_VERSION_MICRO 5
+#define CAIRO_VERSION_MAJOR USE_cairo_version_OR_cairo_version_string_INSTEAD
+#define CAIRO_VERSION_MINOR USE_cairo_version_OR_cairo_version_string_INSTEAD
+#define CAIRO_VERSION_MICRO USE_cairo_version_OR_cairo_version_string_INSTEAD
 
 #endif
commit ab5c528de2fc744d77c44ea1a9a3467f1ec5f81d
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Thu Aug 28 17:36:43 2008 -0400

    Undefine PACKAGE* macros defined by autotools
    
    We use our own macros.  This makes it easier for other build systems.

diff --git a/src/cairoint.h b/src/cairoint.h
index d5515a4..e4c3369 100644
--- a/src/cairoint.h
+++ b/src/cairoint.h
@@ -50,6 +50,13 @@
 #include "config.h"
 #endif
 
+/* We use our own macros */
+#undef PACKAGE
+#undef PACKAGE_NAME
+#undef PACKAGE_STRING
+#undef PACKAGE_TARNAME
+#undef PACKAGE_VERSION
+
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>


More information about the cairo-commit mailing list