From e833fd4a5c1fc22077c36782070837553f60b258 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Wed, 26 Nov 2008 14:06:23 -0800 Subject: [PATCH] Additional buidl system cleanup. Starting to move all of the kernel specific build info in to config/kernel, likewise and user specific build flags should go in config/user. This seems like a reasonable way to go. --- TODO | 30 --------------------------- config/kernel | 50 +++++++++++++++++++++++++++++++++++++++++++++ config/zfs-build.m4 | 10 ++++++--- configure.ac | 47 ------------------------------------------ 4 files changed, 57 insertions(+), 80 deletions(-) delete mode 100644 TODO diff --git a/TODO b/TODO deleted file mode 100644 index 0d9310dfde..0000000000 --- a/TODO +++ /dev/null @@ -1,30 +0,0 @@ -* We may need a libefi replacement. It appears libefi is used - to determine if the device passed to zpool is a 'whole device' - or just a partition of a device. In the short term I think we - can simply treat everything as a partition and be alright. - -* We also do not have support for getting Solaris style device - ids which is done when a zpool is setup. We may or may not - be able to live without this, the jury is still out. - ------------------------------------------------------------------------ - -* Port zvol (ZFS volume interface). - -* Port zpl (ZFS posix interface). - -* Port lustre fsfilt interface to use DMU. - -* Andreas issue #1: - "the maximum allocation DMU "blocksize" was 128kB and it would be better - to be able to get 1MB contiguous allocations for best performance" - -* Andreas issue #2: - "there would need to be some work done to allow multiple operations to - be atomic. This is needed by Lustre for object creation + LAST_ID - updates, unlink + llog updates, etc. Conceptually this isn't very - much work for a phase tree, but I've never looked at the ZFS code." - -* Design and implement mechanism for viewing and modifying OST content - from user space (by manipulating datasets/objects), possibly - by implementing scaled down file system interface. diff --git a/config/kernel b/config/kernel index 22a43aaa70..d7d52ad07f 100644 --- a/config/kernel +++ b/config/kernel @@ -1 +1,51 @@ # Default ZFS kernel mode configuration + +# Kernel build make options +KERNELMAKE_PARAMS= +#KERNELMAKE_PARAMS="V=1" # Enable verbose module build + +# Kernel build cpp flags +KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL " +KERNELCPPFLAGS="$KERNELCPPFLAGS -I$splsrc -I$splsrc/include -I$TOPDIR" + +# Minimally required for pread() functionality an other GNU goodness +HOSTCFLAGS="$HOSTCFLAGS -ggdb -O2 -std=c99 -D_GNU_SOURCE -D__EXTENSIONS__ " + +# XXX: Quiet warnings not covered by the gcc-* patches +# XXX: Once all the warnings are resolved these flags should be removed +HOSTCFLAGS="$HOSTCFLAGS -Wno-switch -Wno-unused -Wno-missing-braces -Wno-parentheses " +HOSTCFLAGS="$HOSTCFLAGS -Wno-uninitialized -fno-strict-aliasing " + +# Expected defines not covered by zfs_config.h or spl_config.h +HOSTCFLAGS="$HOSTCFLAGS -DHAVE_SPL -D_POSIX_PTHREAD_SEMANTICS " +HOSTCFLAGS="$HOSTCFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT " +HOSTCFLAGS="$HOSTCFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\" " + +# Expected default include paths additional paths added by Makefiles +HOSTCFLAGS="$HOSTCFLAGS -I$TOPDIR " + +if test "$kernelbuild" != "$kernelsrc"; then + KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild" +fi + +# XXX: I really, really hate this... but to ensure the kernel build +# system compiles C files shared between a library and a kernel module, +# we need to ensure each file has a unique make target. To do that +# I'm creating symlinks for each shared file at configure time. It +# may be possible something better can be done in the Makefile but it +# will take some serious investigation and I don't have the time now. + +echo "Creating symlinks for additional make targets" +ln -f -s $LIBDIR/libport/u8_textprep.c $LIBDIR/libport/ku8_textprep.c +ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/kavl.c +ln -f -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/uavl.c +ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/knvpair.c +ln -f -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/unvpair.c +ln -f -s $LIBDIR/libzcommon/zfs_deleg.c $LIBDIR/libzcommon/kzfs_deleg.c +ln -f -s $LIBDIR/libzcommon/zfs_prop.c $LIBDIR/libzcommon/kzfs_prop.c +ln -f -s $LIBDIR/libzcommon/zprop_common.c $LIBDIR/libzcommon/kzprop_common.c +ln -f -s $LIBDIR/libzcommon/compress.c $LIBDIR/libzcommon/kcompress.c +ln -f -s $LIBDIR/libzcommon/list.c $LIBDIR/libzcommon/klist.c +ln -f -s $LIBDIR/libzcommon/zfs_namecheck.c $LIBDIR/libzcommon/kzfs_namecheck.c +ln -f -s $LIBDIR/libzcommon/zfs_comutil.c $LIBDIR/libzcommon/kzfs_comutil.c +ln -f -s $LIBDIR/libzcommon/zpool_prop.c $LIBDIR/libzcommon/kzpool_prop.c diff --git a/config/zfs-build.m4 b/config/zfs-build.m4 index 484ce8dd30..badb8b69e1 100644 --- a/config/zfs-build.m4 +++ b/config/zfs-build.m4 @@ -13,9 +13,6 @@ AC_DEFUN([ZFS_AC_CONFIG], [ *** in ./config/ with the '--with-zfs-config=CONFIG' option]) fi - AC_MSG_RESULT([$zfsconfig]); - . ./config/$zfsconfig - TOPDIR=`/bin/pwd` BUILDDIR=$ZFS_META_NAME #+$zfsconfig ZFSDIR=$TOPDIR/$BUILDDIR @@ -30,6 +27,13 @@ AC_DEFUN([ZFS_AC_CONFIG], [ AC_SUBST(LIBDIR) AC_SUBST(CMDDIR) AC_SUBST(UNAME) + + AC_MSG_RESULT([$zfsconfig]); + . ./config/$zfsconfig + + AC_SUBST(KERNELMAKE_PARAMS) + AC_SUBST(KERNELCPPFLAGS) + AC_SUBST(HOSTCFLAGS) ]) AC_DEFUN([ZFS_AC_KERNEL], [ diff --git a/configure.ac b/configure.ac index 8a09cbf1c5..4fd10dee5f 100644 --- a/configure.ac +++ b/configure.ac @@ -102,30 +102,6 @@ AC_EGREP_HEADER(sysinfo, sys/systeminfo.h, #AC_DEFINE([HAVE_UNICODE], 1, ["None"]) #AC_DEFINE([HAVE_INTTYPES], 1, [Define to 1 if unint16 defined in header file]) -# Add "V=1" to KERNELMAKE_PARAMS to enable verbose module build -KERNELMAKE_PARAMS= -KERNELCPPFLAGS="$KERNELCPPFLAGS -DHAVE_SPL -D_KERNEL -I$splsrc -I$splsrc/include -I$TOPDIR" - -# Minimally required for pread() functionality an other GNU goodness -HOSTCFLAGS="$HOSTCFLAGS -ggdb -O2 -std=c99 -D_GNU_SOURCE -D__EXTENSIONS__ " -# Quiet warnings not covered by the gcc-* patches -HOSTCFLAGS="$HOSTCFLAGS -Wno-switch -Wno-unused -Wno-missing-braces -Wno-parentheses " -HOSTCFLAGS="$HOSTCFLAGS -Wno-uninitialized -fno-strict-aliasing " -# Expected defines not covered by zfs_config.h -HOSTCFLAGS="$HOSTCFLAGS -DHAVE_SPL -D_POSIX_PTHREAD_SEMANTICS " -HOSTCFLAGS="$HOSTCFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_REENTRANT " -HOSTCFLAGS="$HOSTCFLAGS -DTEXT_DOMAIN=\\\"zfs-linux-kernel\\\" " -# Expected default include paths additional paths added by Makefiles -HOSTCFLAGS="$HOSTCFLAGS -I$TOPDIR " - -if test "$kernelbuild" != "$kernelsrc"; then - KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$kernelbuild" -fi - -AC_SUBST(KERNELMAKE_PARAMS) -AC_SUBST(KERNELCPPFLAGS) -AC_SUBST(HOSTCFLAGS) - AC_CONFIG_FILES([ Makefile config/Makefile doc/Makefile @@ -187,26 +163,3 @@ AC_CONFIG_FILES([ Makefile zfs/zcmd/zpool/Makefile ]) AC_OUTPUT - -# HACK: I really, really hate this... but to ensure the kernel build -# system compiles C files shared between a library and a kernel module, -# we need to ensure each file has a unique make target. To do that -# I'm creating symlinks for each shared file at configure time. It -# may be possible something better can be done in the Makefile but it -# will take some serious investigation and I don't have the time now. - -echo -echo "Creating symlinks for additional make targets" -ln -s $LIBDIR/libport/u8_textprep.c $LIBDIR/libport/ku8_textprep.c -ln -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/kavl.c -ln -s $LIBDIR/libavl/avl.c $LIBDIR/libavl/uavl.c -ln -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/knvpair.c -ln -s $LIBDIR/libnvpair/nvpair.c $LIBDIR/libnvpair/unvpair.c -ln -s $LIBDIR/libzcommon/zfs_deleg.c $LIBDIR/libzcommon/kzfs_deleg.c -ln -s $LIBDIR/libzcommon/zfs_prop.c $LIBDIR/libzcommon/kzfs_prop.c -ln -s $LIBDIR/libzcommon/zprop_common.c $LIBDIR/libzcommon/kzprop_common.c -ln -s $LIBDIR/libzcommon/compress.c $LIBDIR/libzcommon/kcompress.c -ln -s $LIBDIR/libzcommon/list.c $LIBDIR/libzcommon/klist.c -ln -s $LIBDIR/libzcommon/zfs_namecheck.c $LIBDIR/libzcommon/kzfs_namecheck.c -ln -s $LIBDIR/libzcommon/zfs_comutil.c $LIBDIR/libzcommon/kzfs_comutil.c -ln -s $LIBDIR/libzcommon/zpool_prop.c $LIBDIR/libzcommon/kzpool_prop.c