From 411b2ffac686478f3312c4a0c5cf20a230a3f728 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 8 Aug 2021 13:47:10 -0400 Subject: Add version constants to public header --- include/serd/serd.h | 23 +++++++++++++++++++++++ meson.build | 11 +++++++++-- src/serd_config.h | 3 --- src/serdi.c | 10 +++++++--- 4 files changed, 39 insertions(+), 8 deletions(-) diff --git a/include/serd/serd.h b/include/serd/serd.h index 790dfde0..3655f0b4 100644 --- a/include/serd/serd.h +++ b/include/serd/serd.h @@ -87,6 +87,29 @@ extern "C" { @{ */ +/** + The major version number of the serd library. + + Semver: Increments when incompatible API changes are made. +*/ +#define SERD_MAJOR_VERSION 1 + +/** + The minor version number of the serd library. + + Semver: Increments when functionality is added in a backwards compatible + manner. +*/ +#define SERD_MINOR_VERSION 0 + +/** + The micro version number of the serd library. + + Semver: Increments when changes are made that do not affect the API, such as + performance improvements or bug fixes. +*/ +#define SERD_MICRO_VERSION 1 + /// Flags that describe the details of a node typedef enum { SERD_IS_LONG = 1u << 0u, ///< Literal node should be triple-quoted diff --git a/meson.build b/meson.build index 9ae07fa1..21cbb3ed 100644 --- a/meson.build +++ b/meson.build @@ -10,9 +10,11 @@ project('serd', ['c'], 'warning_level=2', ]) +serd_major_version = meson.project_version().split('.')[0] +serd_minor_version = meson.project_version().split('.')[1] +serd_micro_version = meson.project_version().split('.')[2] serd_src_root = meson.current_source_dir() -major_version = meson.project_version().split('.')[0] -version_suffix = '-@0@'.format(major_version) +version_suffix = '-@0@'.format(serd_major_version) versioned_name = 'serd' + version_suffix # Load build tools @@ -160,6 +162,11 @@ else ] endif +# Define version constants to trigger a warning if those in the code don't mwatch +library_args += ['-DSERD_MAJOR_VERSION=@0@'.format(serd_major_version), + '-DSERD_MINOR_VERSION=@0@'.format(serd_minor_version), + '-DSERD_MICRO_VERSION=@0@'.format(serd_micro_version)] + exess_dep = dependency('exess-0', version: '>= 0.0.1', fallback: ['exess', 'exess_dep']) diff --git a/src/serd_config.h b/src/serd_config.h index 53378a48..90888c39 100644 --- a/src/serd_config.h +++ b/src/serd_config.h @@ -28,9 +28,6 @@ #ifndef SERD_CONFIG_H #define SERD_CONFIG_H -// Define version unconditionally so a warning will catch a mismatch -#define SERD_VERSION "1.0.1" - #if !defined(SERD_NO_DEFAULT_CONFIG) // We need unistd.h to check _POSIX_VERSION diff --git a/src/serdi.c b/src/serdi.c index 2de41ce7..d84e3663 100644 --- a/src/serdi.c +++ b/src/serdi.c @@ -1,5 +1,5 @@ /* - Copyright 2011-2020 David Robillard + Copyright 2011-2021 David Robillard Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above @@ -14,7 +14,6 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -#include "serd_config.h" #include "system.h" #include "serd/serd.h" @@ -47,11 +46,16 @@ typedef struct { static int print_version(void) { - printf("serdi " SERD_VERSION " \n"); + printf("serdi %d.%d.%d \n", + SERD_MAJOR_VERSION, + SERD_MINOR_VERSION, + SERD_MICRO_VERSION); + printf("Copyright 2011-2021 David Robillard .\n" "License: \n" "This is free software; you are free to change and redistribute it." "\nThere is NO WARRANTY, to the extent permitted by law.\n"); + return 0; } -- cgit v1.2.1