diff --git a/Makefile.in b/Makefile.in
index 6c449de..e737ff1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,22 @@
-.PHONEY: all
+# Copyright (C) 2011 Red Hat, Inc. All rights reserved.
+#
+# This file is part of the thin-provisioning-tools source.
+#
+# thin-provisioning-tools is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# thin-provisioning-tools is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with thin-provisioning-tools. If not, see
+# .
+
+.PHONY: all
PROGRAMS=\
thin_repair \
@@ -31,30 +49,41 @@ PROGRAM_SOURCE=\
thin_repair.cc \
thin_restore.cc
-CXX=g++
-OBJECTS=$(subst .cc,.o,$(SOURCE))
+CXX:=@CXX@
+OBJECTS:=$(subst .cc,.o,$(SOURCE))
TOP_DIR:=@top_srcdir@
-CXXFLAGS=-Wall -I$(TOP_DIR)
+TOP_BUILDDIR:=@top_builddir@
+CXXFLAGS+=-Wall
CXXFLAGS+=@CXXOPTIMISE_FLAG@
CXXFLAGS+=@CXXDEBUG_FLAG@
-LIBS=-lstdc++
-INSTALL=@INSTALL@
-PREFIX=@prefix@
-BINDIR=$(DESTDIR)/$(PREFIX)/sbin
+INCLUDES+=-I$(TOP_BUILDDIR) -I$(TOP_DIR)
+LIBS:=-lstdc++
+LIBEXPAT:=-lexpat
+INSTALL:=@INSTALL@
+STRIP=
+DESTDIR:=@prefix@
+BINDIR:=$(DESTDIR)/sbin
+MANPATH:=$(DESTDIR)$(MANDIR)
-.PHONEY: test-programs
+vpath %.cc $(TOP_DIR)
+
+INSTALL_DIR = $(INSTALL) -m 755 -d
+INSTALL_PROGRAM = $(INSTALL) -m 755 $(STRIP)
+INSTALL_DATA = $(INSTALL) -p -m 644
+
+.PHONY: test-programs
test-programs: $(TEST_PROGRAMS)
-.SUFFIXES: .cc .o .d
+.SUFFIXES: .d
-.cc.d:
- $(CXX) -MM -MT $(subst .cc,.o,$<) $(CXXFLAGS) $< > $@.$$$$; \
- sed 's,\([^ :]*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
- rm -f $@.$$$$
+%.d: %.cc
+ $(CXX) -MM -MT $(subst .cc,.o,$<) $(INCLUDES) $(CXXFLAGS) $< > $@.$$$$;\
+ sed 's,\([^ :]*\)\.o[ :]*,\1.o $@ : Makefile ,g' < $@.$$$$ > $@; \
+ $(RM) $@.$$$$
-.cc.o:
- $(CXX) -c $(CXXFLAGS) $(INCLUDES) -o $@ $<
+%.o: %.cc
+ $(CXX) -c $(INCLUDES) $(CXXFLAGS) -o $@ $<
THIN_DUMP_SOURCE=$(SOURCE)
THIN_RESTORE_SOURCE=$(SOURCE)
@@ -77,29 +106,37 @@ THIN_RESTORE_OBJECTS=$(subst .cc,.o,$(THIN_RESTORE_SOURCE))
THIN_REPAIR_OBJECTS=$(subst .cc,.o,$(THIN_REPAIR_SOURCE))
thin_dump: $(THIN_DUMP_OBJECTS) thin_dump.o
- $(CXX) $(CXXFLAGS) -o $@ $+ $(LIBS) -lexpat
+ $(CXX) $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
thin_restore: $(THIN_RESTORE_OBJECTS) thin_restore.o
- $(CXX) $(CXXFLAGS) -o $@ $+ $(LIBS) -lexpat
+ $(CXX) $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
thin_repair: $(THIN_REPAIR_OBJECTS) thin_repair.o
$(CXX) $(CXXFLAGS) -o $@ $+ $(LIBS)
-.PHONEY: clean
clean:
- rm -f *.o unit-tests/*.o *.d unit-tests/*.d $(TEST_PROGRAMS) $(PROGRAMS)
+ $(RM) *.o unit-tests/*.o *.d unit-tests/*.d $(TEST_PROGRAMS) $(PROGRAMS)
+distclean: clean
+ $(RM) config.cache config.log config.status configure.h version.h Makefile unit-tests/Makefile
+.PHONY: clean distclean
-.PHONEY: install
install: $(PROGRAMS)
- $(INSTALL) -m 755 -D thin_repair $(BINDIR)/thin_repair
- $(INSTALL) -m 755 -D thin_dump $(BINDIR)/thin_dump
- $(INSTALL) -m 755 -D thin_restore $(BINDIR)/thin_restore
- $(INSTALL) -m 644 man8/* $(MANDIR)/man8
+ $(INSTALL_DIR) $(BINDIR)
+ $(INSTALL_PROGRAM) thin_repair $(BINDIR)/thin_repair
+ $(INSTALL_PROGRAM) thin_dump $(BINDIR)/thin_dump
+ $(INSTALL_PROGRAM) thin_restore $(BINDIR)/thin_restore
+ $(INSTALL_DIR) $(MANPATH)/man8
+ $(INSTALL_DATA) man8/thin_repair.8 $(MANPATH)/man8/thin_repair.8
+ $(INSTALL_DATA) man8/thin_dump.8 $(MANPATH)/man8/thin_dump.8
+ $(INSTALL_DATA) man8/thin_restore.8 $(MANPATH)/man8/thin_restore.8
+.PHONY: install
--include $(subst .cc,.d,$(SOURCE))
--include $(subst .cc,.d,$(TEST_SOURCE))
--include $(subst .cc,.d,$(PROGRAM_SOURCE))
-
-ifeq ("$(TESTING)", "yes")
-include unit-tests/Makefile.in
+ifeq (,$(findstring $(MAKECMDGOALS),clean distclean))
+ -include $(subst .cc,.d,$(SOURCE))
+ -include $(subst .cc,.d,$(TEST_SOURCE))
+ -include $(subst .cc,.d,$(PROGRAM_SOURCE))
+endif
+
+ifeq ("@TESTING@", "yes")
+include unit-tests/Makefile
endif
diff --git a/configure.in b/configure.in
index b2830ef..78d88c1 100644
--- a/configure.in
+++ b/configure.in
@@ -23,7 +23,7 @@ AC_PREREQ(2.61)
################################################################
dnl -- Process this file with autoconf to produce a configure script.
AC_INIT
-AC_CONFIG_HEADERS([configure.h])
+# AC_CONFIG_HEADERS([configure.h])
################################################################################
dnl -- Setup the directory where autoconf has auxilary files
@@ -77,11 +77,11 @@ AC_MSG_CHECKING(group owner)
AC_ARG_WITH(group,
AC_HELP_STRING([--with-group=GROUP],
[set the group owner of installed files [[GROUP=]]]),
- GROUP=$withval)
-AC_MSG_RESULT($GROUP)
+ INSTALL_GROUP=$withval)
+AC_MSG_RESULT($INSTALL_GROUP)
-if test x$GROUP != x; then
- INSTALL="$INSTALL -g $GROUP"
+if test x$INSTALL_GROUP != x; then
+ INSTALL="$INSTALL -g $INSTALL_GROUP"
fi
################################################################################
@@ -140,6 +140,7 @@ AC_SUBST(INSTALL)
AC_SUBST(prefix)
AC_SUBST(RELEASE_DATE)
AC_SUBST(RELEASE_DATE)
+AC_SUBST(TESTING)
AC_SUBST(THIN_PROVISIONING_TOOLS_VERSION)
################################################################################
@@ -147,7 +148,7 @@ dnl -- First and last lines should not contain files to generate in order to
dnl -- keep utility scripts running properly
AC_CONFIG_FILES([
Makefile
-unit-tests/Makefile.in
+unit-tests/Makefile
version.h
])
AC_OUTPUT
diff --git a/mk_release b/mk_release
index a437647..2a4fa68 100644
--- a/mk_release
+++ b/mk_release
@@ -16,6 +16,7 @@ mkdir $dir
git clone . $dir
cd $dir
git checkout $tag
+autoreconf
rm -rf .git
cd $tmp
tar jcvf $orig_dir/thin-provisioning-tools-$tag.tar.bz2 thin-provisioning-tools-$tag
diff --git a/thin-provisioning-tools.spec b/thin-provisioning-tools.spec
deleted file mode 100644
index eef41d3..0000000
--- a/thin-provisioning-tools.spec
+++ /dev/null
@@ -1,42 +0,0 @@
-#
-# Copyright (C) 2011 Red Hat, Inc
-#
-Summary: Device-mapper thin provisioning tools
-Name: device-mapper-persistent-data
-Version: 0.0.1
-Release: 1%{?dist}
-License: GPLv3
-Group: System Environment/Base
-URL: http://sources.redhat.com/lvm2
-BuildRequires: expat-devel, libstdc++-devel, boost-devel
-Source0: ftp://sources.redhat.com/pub/lvm2/thin-provisioning-tools-%{version}.tar.bz2
-Requires: expat
-
-%description
-thin-provisioning-tools contains dump,restore and repair tools to
-manage device-mapper thin provisioning target metadata devices.
-
-%prep
-%setup -q -n thin-provisioning-tools-%{version}
-
-%build
-%global _root_sbindir /sbin
-%configure --enable-debug --enable-testing
-
-%install
-make DESTDIR=%{buildroot} install
-
-%clean
-
-%files
-%doc COPYING README
-%{_mandir}/man8/thin_dump.8.gz
-%{_mandir}/man8/thin_repair.8.gz
-%{_mandir}/man8/thin_restore.8.gz
-%{_root_sbindir}/thin_dump
-%{_root_sbindir}/thin_repair
-%{_root_sbindir}/thin_restore
-
-%changelog
-* Thu Dec 15 2011 Heinz Mauelshagen - 0.0.1-1
-- Initial version
diff --git a/unit-tests/Makefile.in b/unit-tests/Makefile.in
new file mode 100644
index 0000000..4d4ee5d
--- /dev/null
+++ b/unit-tests/Makefile.in
@@ -0,0 +1,65 @@
+# Copyright (C) 2011 Red Hat, Inc. All rights reserved.
+#
+# This file is part of the thin-provisioning-tools source.
+#
+# thin-provisioning-tools is free software: you can redistribute it
+# and/or modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, either version 3 of
+# the License, or (at your option) any later version.
+#
+# thin-provisioning-tools is distributed in the hope that it will be
+# useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with thin-provisioning-tools. If not, see
+# .
+
+TEST_SOURCE=\
+ unit-tests/cache_t.cc
+
+# FIXME Make these tests work.
+# unit-tests/block_t.cc \
+ unit-tests/btree_t.cc \
+ unit-tests/endian_t.cc \
+ unit-tests/run_list_t.cc \
+ unit-tests/space_map_t.cc \
+ unit-tests/space_map_disk_t.cc \
+ unit-tests/transaction_manager_t.cc
+
+TEST_PROGRAMS=$(subst .cc,,$(TEST_SOURCE))
+
+unit-test: $(TEST_PROGRAMS)
+ for p in $(TEST_PROGRAMS); do echo Running $$p; ./$$p; done
+
+.PHONY: unit-test
+
+unit-tests/block_t: unit-tests/block_t.o
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS)
+
+unit-tests/btree_t: unit-tests/btree_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/cache_t: unit-tests/cache_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/run_list_t: unit-tests/run_list_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/space_map_t: unit-tests/space_map_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/space_map_disk_t: unit-tests/space_map_disk_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/transaction_manager_t: unit-tests/transaction_manager_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/metadata_t: unit-tests/metadata_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+unit-tests/endian_t: unit-tests/endian_t.o $(OBJECTS)
+ g++ $(CXXFLAGS) -o $@ $+ $(LIBS) $(LIBEXPAT)
+
+all: $(TEST_PROGRAMS)
diff --git a/unit-tests/Makefile.in.in b/unit-tests/Makefile.in.in
deleted file mode 100644
index 863f882..0000000
--- a/unit-tests/Makefile.in.in
+++ /dev/null
@@ -1,43 +0,0 @@
-TEST_SOURCE=\
- unit-tests/block_t.cc \
- unit-tests/btree_t.cc \
- unit-tests/cache_t.cc \
- unit-tests/endian_t.cc \
- unit-tests/run_list_t.cc \
- unit-tests/space_map_t.cc \
- unit-tests/space_map_disk_t.cc \
- unit-tests/transaction_manager_t.cc
-
-TEST_PROGRAMS=$(subst .cc,,$(TEST_SOURCE))
-
-.PHONEY: unit-test
-
-unit-test: $(TEST_PROGRAMS)
- for p in $(TEST_PROGRAMS); do echo Running $$p; ./$$p; done
-
-unit-tests/block_t: unit-tests/block_t.o
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/btree_t: unit-tests/btree_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/cache_t: unit-tests/cache_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/run_list_t: unit-tests/run_list_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/space_map_t: unit-tests/space_map_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/space_map_disk_t: unit-tests/space_map_disk_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/transaction_manager_t: unit-tests/transaction_manager_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/metadata_t: unit-tests/metadata_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)
-
-unit-tests/endian_t: unit-tests/endian_t.o $(OBJECTS)
- g++ $(CPPFLAGS) -o $@ $+ $(LIBS)