From c9a913795679c3f5895de8258f31269530c5eaed Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 26 Nov 2008 12:53:24 -0800 Subject: [PATCH] First step of META build system cleanup --- META | 2 +- config/kernel | 10 ---- config/lustre | 10 ---- config/user | 8 ---- config/zfs-build.m4 | 7 ++- config/zfs-meta.m4 | 112 ++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 16 +------ 7 files changed, 121 insertions(+), 44 deletions(-) create mode 100644 config/zfs-meta.m4 diff --git a/META b/META index 9b66d312f0..d43327990b 100644 --- a/META +++ b/META @@ -1,6 +1,6 @@ Meta: 1 Name: zfs Branch: 1.0 -Version: 0.3.4 +Version: 0.4.0 Release: 1 Release-Tags: relext diff --git a/config/kernel b/config/kernel index 0ffcc6fa6f..22a43aaa70 100644 --- a/config/kernel +++ b/config/kernel @@ -1,11 +1 @@ # Default ZFS kernel mode configuration - -UNAME=`uname -r | cut -d- -f1` - -CONFIG=kernel - -NAME=zfs -BRANCH=`awk '/[Bb]ranch:/ {print $$2}' META` -VERSION=`awk '/[Vv]ersion:/ {print $$2}' META` -RELEASE=`awk '/[Rr]elease:/ {print $$2}' META` -BUILDDIR=$NAME #+$CONFIG diff --git a/config/lustre b/config/lustre index e3daba9081..33feba291a 100644 --- a/config/lustre +++ b/config/lustre @@ -1,11 +1 @@ # Default ZFS lustre mode configuration - -UNAME=`uname -r | cut -d- -f1` - -CONFIG=lustre - -NAME=zfs -BRANCH=`awk '/[Bb]ranch:/ {print $$2}' META` -VERSION=`awk '/[Vv]ersion:/ {print $$2}' META` -RELEASE=`awk '/[Rr]elease:/ {print $$2}' META` -BUILDDIR=$NAME #+$CONFIG diff --git a/config/user b/config/user index 2061d3d77d..0d617c86be 100644 --- a/config/user +++ b/config/user @@ -1,9 +1 @@ # Default ZFS user mode configuration - -CONFIG=user - -NAME=zfs -BRANCH=`awk '/[Bb]ranch:/ {print $$2}' META` -VERSION=`awk '/[Vv]ersion:/ {print $$2}' META` -RELEASE=`awk '/[Rr]elease:/ {print $$2}' META` -BUILDDIR=$NAME #+$CONFIG diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index a268e59860..aba0be6a7e 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -17,14 +17,19 @@ AC_DEFUN([ZFS_AC_CONFIG], [ . ./config/$zfsconfig TOPDIR=`/bin/pwd` - ZFSDIR=${TOPDIR}/$BUILDDIR + BUILDDIR=$META_NAME #+$zfsconfig + ZFSDIR=$TOPDIR/$BUILDDIR LIBDIR=$ZFSDIR/lib CMDDIR=$ZFSDIR/zcmd + UNAME=`uname -r | cut -d- -f1` + AC_SUBST(UNAME) AC_SUBST(TOPDIR) + AC_SUBST(BUILDDIR) AC_SUBST(ZFSDIR) AC_SUBST(LIBDIR) AC_SUBST(CMDDIR) + AC_SUBST(UNAME) ]) AC_DEFUN([ZFS_AC_KERNEL], [ diff --git a/config/zfs-meta.m4 b/config/zfs-meta.m4 new file mode 100644 index 0000000000..199638096b --- /dev/null +++ b/config/zfs-meta.m4 @@ -0,0 +1,112 @@ +dnl # +dnl # ZFS_AC_META +dnl # Read metadata from the META file. +dnl # +dnl # AUTHOR: +dnl # Chris Dunlap +dnl # +AC_DEFUN([ZFS_AC_META], [ + AC_MSG_CHECKING([metadata]) + + META="$srcdir/META" + _zfs_ac_meta_got_file=no + if test -f "$META"; then + _zfs_ac_meta_got_file=yes + + META_NAME=_ZFS_AC_META_GETVAL([(?:NAME|PROJECT|PACKAGE)]); + if test -n "$META_NAME"; then + AC_DEFINE_UNQUOTED([META_NAME], ["$META_NAME"], + [Define the project name.] + ) + AC_SUBST([META_NAME]) + fi + + META_VERSION=_ZFS_AC_META_GETVAL([VERSION]); + if test -n "$META_VERSION"; then + AC_DEFINE_UNQUOTED([META_VERSION], ["$META_VERSION"], + [Define the project version.] + ) + AC_SUBST([META_VERSION]) + fi + + META_RELEASE=_ZFS_AC_META_GETVAL([RELEASE]); + if test -n "$META_RELEASE"; then + AC_DEFINE_UNQUOTED([META_RELEASE], ["$META_RELEASE"], + [Define the project release.] + ) + AC_SUBST([META_RELEASE]) + fi + + if test -n "$META_NAME" -a -n "$META_VERSION"; then + META_ALIAS="$META_NAME-$META_VERSION" + test -n "$META_RELEASE" && + META_ALIAS="$META_ALIAS-$META_RELEASE" + AC_DEFINE_UNQUOTED([META_ALIAS], + ["$META_ALIAS"], + [Define the project alias string.] + ) + AC_SUBST([META_ALIAS]) + fi + + META_DATE=_ZFS_AC_META_GETVAL([DATE]); + if test -n "$META_DATE"; then + AC_DEFINE_UNQUOTED([META_DATE], ["$META_DATE"], + [Define the project release date.] + ) + AC_SUBST([META_DATE]) + fi + + META_AUTHOR=_ZFS_AC_META_GETVAL([AUTHOR]); + if test -n "$META_AUTHOR"; then + AC_DEFINE_UNQUOTED([META_AUTHOR], ["$META_AUTHOR"], + [Define the project author.] + ) + AC_SUBST([META_AUTHOR]) + fi + + m4_pattern_allow([^LT_(CURRENT|REVISION|AGE)$]) + META_LT_CURRENT=_ZFS_AC_META_GETVAL([LT_CURRENT]); + META_LT_REVISION=_ZFS_AC_META_GETVAL([LT_REVISION]); + META_LT_AGE=_ZFS_AC_META_GETVAL([LT_AGE]); + if test -n "$META_LT_CURRENT" \ + -o -n "$META_LT_REVISION" \ + -o -n "$META_LT_AGE"; then + test -n "$META_LT_CURRENT" || META_LT_CURRENT="0" + test -n "$META_LT_REVISION" || META_LT_REVISION="0" + test -n "$META_LT_AGE" || META_LT_AGE="0" + AC_DEFINE_UNQUOTED([META_LT_CURRENT], + ["$META_LT_CURRENT"], + [Define the libtool library 'current' + version information.] + ) + AC_DEFINE_UNQUOTED([META_LT_REVISION], + ["$META_LT_REVISION"], + [Define the libtool library 'revision' + version information.] + ) + AC_DEFINE_UNQUOTED([META_LT_AGE], ["$META_LT_AGE"], + [Define the libtool library 'age' + version information.] + ) + AC_SUBST([META_LT_CURRENT]) + AC_SUBST([META_LT_REVISION]) + AC_SUBST([META_LT_AGE]) + fi + fi + + AC_MSG_RESULT([$_zfs_ac_meta_got_file]) + ] +) + +AC_DEFUN([_ZFS_AC_META_GETVAL], + [`perl -n\ + -e "BEGIN { \\$key=shift @ARGV; }"\ + -e "next unless s/^\s*\\$key@<:@:=@:>@//i;"\ + -e "s/^((?:@<:@^'\"#@:>@*(?:(@<:@'\"@:>@)@<:@^\2@:>@*\2)*)*)#.*/\\@S|@1/;"\ + -e "s/^\s+//;"\ + -e "s/\s+$//;"\ + -e "s/^(@<:@'\"@:>@)(.*)\1/\\@S|@2/;"\ + -e "\\$val=\\$_;"\ + -e "END { print \\$val if defined \\$val; }"\ + '$1' $META`]dnl +) diff --git a/configure.ac b/configure.ac index 8bc8a54ea7..bbbc4ca149 100644 --- a/configure.ac +++ b/configure.ac @@ -32,10 +32,10 @@ AC_INIT AC_LANG(C) - +ZFS_AC_META AC_CONFIG_AUX_DIR([config]) AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(zfs, 0.4.0) +AM_INIT_AUTOMAKE([$META_NAME], [$META_VERSION]) AC_CONFIG_HEADERS([zfs_config.h]) AM_MAINTAINER_MODE @@ -57,18 +57,6 @@ ZFS_AC_LICENSE ZFS_AC_DEBUG ZFS_AC_2ARGS_BIO_END_IO_T -AC_SUBST(UNAME) -AC_SUBST(CONFIG) -AC_SUBST(NAME) -AC_SUBST(SVNURL) -AC_SUBST(BRANCH) -AC_SUBST(VERSION) -AC_SUBST(RELEASE) -AC_SUBST(BRANCHURL) -AC_SUBST(TAGURL) -AC_SUBST(BUILDURL) -AC_SUBST(BUILDDIR) - # Check for needed userspace bits AC_CHECK_HEADERS(sys/types.h sys/byteorder.h sys/isa_defs.h \ sys/systeminfo.h sys/u8_textprep.h libdiskmgt.h)