diff --git a/Makefile b/Makefile index 282fa7c..7f165e7 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,5 @@ +VERSION := $(shell ./get-version) + LIB_NAME := libbsd LIB_VERSION_MAJOR := 0 LIB_VERSION_MINOR := 1 @@ -10,7 +12,7 @@ LIB_SHARED_SO := $(LIB_NAME).so LIB_SONAME := $(LIB_SHARED_SO).$(LIB_VERSION_MAJOR) LIB_SHARED := $(LIB_SONAME).$(LIB_VERSION_MINOR).$(LIB_VERSION_MICRO) -TAR_NAME := $(LIB_NAME)-$(LIB_VERSION) +TAR_NAME := $(LIB_NAME)-$(VERSION) TAR_FILE := $(TAR_NAME).tar.gz LIB_DIST := \ @@ -120,7 +122,7 @@ src/hash/md5hl.c: src/hash/helper.c sed -e 's:hashinc:bsd/md5.h:g' -e 's:HASH:MD5:g' $< > $@ $(LIB_PKGCONFIG): $(LIB_PKGCONFIG).in - sed -e 's:@VERSION@:$(LIB_VERSION):' \ + sed -e 's:@VERSION@:$(VERSION):' \ -e 's:@prefix@:$(value prefix):' \ -e 's:@exec_prefix@:$(value exec_prefix):' \ -e 's:@libdir@:$(value usrlibdir):' \ @@ -149,6 +151,7 @@ ChangeLog: .PHONY: dist dist: $(LIB_DIST) mkdir $(TAR_NAME) + echo $(VERSION) >$(TAR_NAME)/.dist-version cp -a --parents $(LIB_DIST) `git ls-files` $(TAR_NAME) tar czf $(TAR_FILE) --exclude=.gitignore $(TAR_NAME) rm -rf $(TAR_NAME) diff --git a/get-version b/get-version new file mode 100755 index 0000000..5608445 --- /dev/null +++ b/get-version @@ -0,0 +1,48 @@ +#!/bin/sh +# +# get-version +# +# Copyright © 2009 Guillem Jover +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. 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. +# 3. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED ``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 AUTHOR 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. + +if [ -f .dist-version ]; then + # Get the version from the file distributed in the tarball. + version=$(cat .dist-version) +elif [ -d .git ]; then + # Ger the version from the git repository. + version=$(git describe --abbrev=4 HEAD 2>/dev/null) + + # Check if we are on a dirty checkout. + git update-index --refresh -q >/dev/null + dirty=$(git diff-index --name-only HEAD 2>/dev/null) + if [ -n "$dirty" ]; then + version="$version-dirty" + fi +else + echo "error: cannot get project version." 1>&2 + exit 1 +fi + +echo "$version" +