mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-04 23:28:07 +02:00
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.
This commit is contained in:
parent
ab5c528de2
commit
894940b81f
8 changed files with 113 additions and 52 deletions
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
8
cairo-version.h
Normal file
8
cairo-version.h
Normal file
|
|
@ -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
|
||||
|
|
@ -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]))
|
||||
|
|
|
|||
|
|
@ -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 = \
|
||||
|
|
|
|||
|
|
@ -125,50 +125,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
|
||||
|
|
|
|||
88
src/cairo-version.c
Normal file
88
src/cairo-version.c
Normal file
|
|
@ -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@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);
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue