diff --git a/Makefile.am b/Makefile.am index 3fe1eacd7..9f33db7cd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/config/rpm.am -include ${top_srcdir}/config/deb.am -include ${top_srcdir}/config/tgz.am +include $(top_srcdir)/config/deb.am +include $(top_srcdir)/config/tgz.am if CONFIG_USER USER_DIR = lib cmd scripts @@ -31,7 +31,7 @@ if CONFIG_KERNEL install-data-local: destname=spl-$(SPL_META_VERSION)/$(LINUX_VERSION); \ instdest=$(DESTDIR)/usr/src/$$destname; \ - echo "${SPL_META_VERSION}" >$$instdest/spl.release; \ + echo "$(SPL_META_VERSION)" >$$instdest/spl.release; \ for instfile in $(noinst_HEADERS) module/$(LINUX_SYMBOLS); do \ $(INSTALL) -D $$instfile $$instdest/$$instfile; \ done diff --git a/Makefile.in b/Makefile.in index 4180b8167..e5304d0a0 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,6 +23,34 @@ # Build targets for RPM packages. ############################################################################### +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for DEB packages. +# +# Long term native distro specific Debian style packaging should be added. +# In the short term RPM packages are built and converted to DEB packages +# using alien. If someone familiar with Debian style packaging were to +# update the build system to correctly build Debian style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + +############################################################################### +# Copyright (C) 2010 Lawrence Livermore National Security, LLC. +# Written by Brian Behlendorf . +############################################################################### +# Build targets for TGZ packages. +# +# Long term native distro specific Slackware style packaging should be added. +# In the short term RPM packages are built and converted to TGZ packages +# using alien. If someone familiar with Slackware style packaging were to +# update the build system to correctly build Slackware style packages I would +# happily take it. Until then we will have to make due with alien. +# +############################################################################### + VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ @@ -46,7 +74,8 @@ target_triplet = @target@ DIST_COMMON = $(am__configure_deps) $(noinst_HEADERS) \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/spl-modules.spec.in $(srcdir)/spl.spec.in \ - $(srcdir)/spl_config.h.in $(top_srcdir)/config/rpm.am \ + $(srcdir)/spl_config.h.in $(top_srcdir)/config/deb.am \ + $(top_srcdir)/config/rpm.am $(top_srcdir)/config/tgz.am \ $(top_srcdir)/configure $(top_srcdir)/module/Makefile.in \ $(top_srcdir)/module/spl/Makefile.in \ $(top_srcdir)/module/splat/Makefile.in AUTHORS COPYING \ @@ -291,7 +320,7 @@ all: spl_config.h .SUFFIXES: am--refresh: @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/rpm.am $(am__configure_deps) +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/config/rpm.am $(top_srcdir)/config/deb.am $(top_srcdir)/config/tgz.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ @@ -860,8 +889,71 @@ rpm-common: --nodeps --rebuild $$rpmpkg || exit 1; \ cp $$rpmbuild/RPMS/*/* . || exit 1; \ $(RM) -R $$rpmbuild -include ${top_srcdir}/config/deb.am -include ${top_srcdir}/config/tgz.am + +deb-local: + @(if test "${HAVE_DPKGBUILD}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${DPKGBUILD} missing. Please install the\n" \ + "*** package for your distribution which provides ${DPKGBUILD},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi; \ + if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +deb-modules: deb-local rpm-modules + name=${PACKAGE}-modules; \ + version=${SPL_META_VERSION}-${SPL_META_RELEASE}; \ + release=`echo ${LINUX_VERSION} | $(SED) -e "s/-/_/g"`; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch}`; \ + pkg1=$${name}-$${version}_$${release}.$${arch}.rpm; \ + pkg2=$${name}-devel-$${version}_$${release}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-deb $$pkg1 $$pkg2; \ + $(RM) $$pkg1 $$pkg2 + +deb-utils: deb-local rpm-utils + name=${PACKAGE}; \ + version=${SPL_META_VERSION}-${SPL_META_RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch}`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-deb $$pkg1; \ + $(RM) $$pkg1 + +deb: deb-modules deb-utils + +tgz-local: + @(if test "${HAVE_ALIEN}" = "no"; then \ + echo -e "\n" \ + "*** Required util ${ALIEN} missing. Please install the\n" \ + "*** package for your distribution which provides ${ALIEN},\n" \ + "*** re-run configure, and try again.\n"; \ + exit 1; \ + fi) + +tgz-modules: tgz-local rpm-modules + name=${PACKAGE}-modules; \ + version=${SPL_META_VERSION}-${SPL_META_RELEASE}; \ + release=`echo ${LINUX_VERSION} | $(SED) -e "s/-/_/g"`; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch}`; \ + pkg1=$${name}-$${version}_$${release}.$${arch}.rpm; \ + pkg2=$${name}-devel-$${version}_$${release}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1 $$pkg2; \ + $(RM) $$pkg1 $$pkg2 + +tgz-utils: tgz-local rpm-utils + name=${PACKAGE}; \ + version=${SPL_META_VERSION}-${SPL_META_RELEASE}; \ + arch=`$(RPM) -qp $${name}-$${version}.src.rpm --qf %{arch}`; \ + pkg1=$${name}-$${version}.$${arch}.rpm; \ + fakeroot $(ALIEN) --scripts --to-tgz $$pkg1; \ + $(RM) $$pkg1 + +tgz: tgz-modules tgz-utils distclean-local:: -$(RM) -R autom4te*.cache @@ -878,7 +970,7 @@ distclean-local:: @CONFIG_KERNEL_TRUE@install-data-local: @CONFIG_KERNEL_TRUE@ destname=spl-$(SPL_META_VERSION)/$(LINUX_VERSION); \ @CONFIG_KERNEL_TRUE@ instdest=$(DESTDIR)/usr/src/$$destname; \ -@CONFIG_KERNEL_TRUE@ echo "${SPL_META_VERSION}" >$$instdest/spl.release; \ +@CONFIG_KERNEL_TRUE@ echo "$(SPL_META_VERSION)" >$$instdest/spl.release; \ @CONFIG_KERNEL_TRUE@ for instfile in $(noinst_HEADERS) module/$(LINUX_SYMBOLS); do \ @CONFIG_KERNEL_TRUE@ $(INSTALL) -D $$instfile $$instdest/$$instfile; \ @CONFIG_KERNEL_TRUE@ done diff --git a/cmd/Makefile.am b/cmd/Makefile.am index 5658d06c4..c1e841dfe 100644 --- a/cmd/Makefile.am +++ b/cmd/Makefile.am @@ -1,7 +1,7 @@ include $(top_srcdir)/config/Rules.am DEFAULT_INCLUDES += \ - -I${top_srcdir}/lib + -I$(top_srcdir)/lib sbin_PROGRAMS = spl splat diff --git a/cmd/Makefile.in b/cmd/Makefile.in index 2313a79c5..7f87fb2ec 100644 --- a/cmd/Makefile.in +++ b/cmd/Makefile.in @@ -251,8 +251,8 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -DEFAULT_INCLUDES = -include ${top_srcdir}/spl_config.h \ - -I${top_srcdir}/lib +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h \ + -I$(top_srcdir)/lib AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing \ -D__USE_LARGEFILE64 ${DEBUG_CFLAGS} diff --git a/config/Rules.am b/config/Rules.am index c6b00b6b8..0b41ec460 100644 --- a/config/Rules.am +++ b/config/Rules.am @@ -6,7 +6,7 @@ # Common rules for user space components. ############################################################################### -DEFAULT_INCLUDES = -include ${top_srcdir}/spl_config.h +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing diff --git a/config/spl-build.m4 b/config/spl-build.m4 index d956a8b43..dffa03655 100644 --- a/config/spl-build.m4 +++ b/config/spl-build.m4 @@ -9,18 +9,12 @@ AC_DEFUN([SPL_AC_CONFIG_KERNEL], [ SPL_AC_KERNEL - dnl # -Wall -fno-strict-aliasing -Wstrict-prototypes and other - dnl # compiler options are added by the kernel build system. - abs_srcdir=`readlink -f ${srcdir}` - KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" - KERNELCPPFLAGS="$KERNELCPPFLAGS -I${abs_srcdir}/include" - KERNELCPPFLAGS="$KERNELCPPFLAGS -include ${abs_srcdir}/spl_config.h" - if test "${LINUX_OBJ}" != "${LINUX}"; then KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" fi - AC_SUBST(KERNELMAKE_PARAMS) + + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" AC_SUBST(KERNELCPPFLAGS) SPL_AC_DEBUG diff --git a/configure b/configure index eea760d14..5784ec75c 100755 --- a/configure +++ b/configure @@ -11788,16 +11788,12 @@ $as_echo "$LINUX_SYMBOLS" >&6; } - abs_srcdir=`readlink -f ${srcdir}` - KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" - KERNELCPPFLAGS="$KERNELCPPFLAGS -I${abs_srcdir}/include" - KERNELCPPFLAGS="$KERNELCPPFLAGS -include ${abs_srcdir}/spl_config.h" - if test "${LINUX_OBJ}" != "${LINUX}"; then KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" fi + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" @@ -15341,16 +15337,12 @@ $as_echo "$LINUX_SYMBOLS" >&6; } - abs_srcdir=`readlink -f ${srcdir}` - KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" - KERNELCPPFLAGS="$KERNELCPPFLAGS -I${abs_srcdir}/include" - KERNELCPPFLAGS="$KERNELCPPFLAGS -include ${abs_srcdir}/spl_config.h" - if test "${LINUX_OBJ}" != "${LINUX}"; then KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ" fi + KERNELCPPFLAGS="$KERNELCPPFLAGS -Wstrict-prototypes" @@ -20369,7 +20361,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in "spl_config.h":H) (mv spl_config.h spl_config.h.tmp && - awk -f config/config.awk spl_config.h.tmp >spl_config.h && + awk -f ${ac_srcdir}/config/config.awk spl_config.h.tmp >spl_config.h && rm spl_config.h.tmp) || exit 1 ;; "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files diff --git a/configure.ac b/configure.ac index 562d03657..b09e31fd7 100644 --- a/configure.ac +++ b/configure.ac @@ -34,7 +34,7 @@ AM_SILENT_RULES AM_INIT_AUTOMAKE([$SPL_META_NAME], [$SPL_META_VERSION]) AC_CONFIG_HEADERS([spl_config.h], [ (mv spl_config.h spl_config.h.tmp && - awk -f config/config.awk spl_config.h.tmp >spl_config.h && + awk -f ${ac_srcdir}/config/config.awk spl_config.h.tmp >spl_config.h && rm spl_config.h.tmp) || exit 1]) AC_PROG_INSTALL diff --git a/include/Makefile.am b/include/Makefile.am index 64d9fa29e..d1289f0a0 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -2,17 +2,17 @@ # noinst_HEADERS because they are not installed in the usual include # location. We do not want to be using $includedir for this. # Installation is handled by the custom install-data-local rule. -noinst_HEADERS = *.h -noinst_HEADERS += fs/*.h -noinst_HEADERS += linux/*.h -noinst_HEADERS += rpc/*.h -noinst_HEADERS += sharefs/*.h -noinst_HEADERS += sys/fm/*.h -noinst_HEADERS += sys/fs/*.h -noinst_HEADERS += sys/sysevent/*.h -noinst_HEADERS += sys/*.h -noinst_HEADERS += util/*.h -noinst_HEADERS += vm/*.h +noinst_HEADERS = $(top_srcdir)/include/*.h +noinst_HEADERS += $(top_srcdir)/include/fs/*.h +noinst_HEADERS += $(top_srcdir)/include/linux/*.h +noinst_HEADERS += $(top_srcdir)/include/rpc/*.h +noinst_HEADERS += $(top_srcdir)/include/sharefs/*.h +noinst_HEADERS += $(top_srcdir)/include/sys/fm/*.h +noinst_HEADERS += $(top_srcdir)/include/sys/fs/*.h +noinst_HEADERS += $(top_srcdir)/include/sys/sysevent/*.h +noinst_HEADERS += $(top_srcdir)/include/sys/*.h +noinst_HEADERS += $(top_srcdir)/include/util/*.h +noinst_HEADERS += $(top_srcdir)/include/vm/*.h install-data-local: destname=spl-$(SPL_META_VERSION)/$(LINUX_VERSION); \ diff --git a/include/Makefile.in b/include/Makefile.in index 89b31678a..823f50d4e 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -215,8 +215,15 @@ top_srcdir = @top_srcdir@ # noinst_HEADERS because they are not installed in the usual include # location. We do not want to be using $includedir for this. # Installation is handled by the custom install-data-local rule. -noinst_HEADERS = *.h fs/*.h linux/*.h rpc/*.h sharefs/*.h sys/fm/*.h \ - sys/fs/*.h sys/sysevent/*.h sys/*.h util/*.h vm/*.h +noinst_HEADERS = $(top_srcdir)/include/*.h \ + $(top_srcdir)/include/fs/*.h $(top_srcdir)/include/linux/*.h \ + $(top_srcdir)/include/rpc/*.h \ + $(top_srcdir)/include/sharefs/*.h \ + $(top_srcdir)/include/sys/fm/*.h \ + $(top_srcdir)/include/sys/fs/*.h \ + $(top_srcdir)/include/sys/sysevent/*.h \ + $(top_srcdir)/include/sys/*.h $(top_srcdir)/include/util/*.h \ + $(top_srcdir)/include/vm/*.h all: all-am .SUFFIXES: diff --git a/lib/Makefile.in b/lib/Makefile.in index 201e20808..8c363b924 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -243,7 +243,7 @@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -DEFAULT_INCLUDES = -include ${top_srcdir}/spl_config.h +DEFAULT_INCLUDES = -include ${top_builddir}/spl_config.h AM_LIBTOOLFLAGS = --silent AM_CFLAGS = -Wall -Wshadow -Wstrict-prototypes -fno-strict-aliasing \ -D__USE_LARGEFILE64 ${DEBUG_CFLAGS} diff --git a/module/Makefile.in b/module/Makefile.in index caa403228..70a33ec14 100644 --- a/module/Makefile.in +++ b/module/Makefile.in @@ -12,23 +12,23 @@ clean: if [ -f Module.markers ]; then $(RM) Module.markers; fi modules_install: - # Install the kernel modules + @# Install the kernel modules $(MAKE) -C @LINUX_OBJ@ SUBDIRS=`pwd` \ INSTALL_MOD_PATH=$(DESTDIR) \ INSTALL_MOD_DIR=addon/spl $@ - find ${DESTDIR}/lib/modules/ -name 'modules.*' | xargs ${RM} - sysmap=${DESTDIR}/boot/System.map-@LINUX_VERSION@; \ + find $(DESTDIR)/lib/modules/ -name 'modules.*' | xargs $(RM) + sysmap=$(DESTDIR)/boot/System.map-@LINUX_VERSION@; \ if [ -f $$sysmap ]; then \ depmod -ae -F $$sysmap @LINUX_VERSION@; \ fi modules_uninstall: - # Uninstall the kernel modules - $(RM) -R ${DESTDIR}/lib/modules/@LINUX_VERSION@/addon/spl + @# Uninstall the kernel modules + $(RM) -R $(DESTDIR)/lib/modules/@LINUX_VERSION@/addon/spl distdir: list='$(subdir-m)'; for subdir in $$list; do \ - (find $$subdir -name '*.c' -o -name '*.h' | \ + (find @top_srcdir@/module/$$subdir -name '*.c' -o -name '*.h' |\ xargs /bin/cp -t $$distdir/$$subdir); \ done diff --git a/module/spl/Makefile.in b/module/spl/Makefile.in index ad29af406..5ee9b0167 100644 --- a/module/spl/Makefile.in +++ b/module/spl/Makefile.in @@ -1,26 +1,28 @@ # Makefile.in for spl kernel module MODULES := spl -EXTRA_CFLAGS = @KERNELCPPFLAGS@ +EXTRA_CFLAGS = @KERNELCPPFLAGS@ +EXTRA_CFLAGS += -I@abs_top_srcdir@/include +EXTRA_CFLAGS += -include @abs_top_builddir@/spl_config.h # Solaris porting layer module obj-m := spl.o -spl-objs += spl-debug.o -spl-objs += spl-proc.o -spl-objs += spl-kmem.o -spl-objs += spl-thread.o -spl-objs += spl-taskq.o -spl-objs += spl-rwlock.o -spl-objs += spl-vnode.o -spl-objs += spl-err.o -spl-objs += spl-time.o -spl-objs += spl-kobj.o -spl-objs += spl-module.o -spl-objs += spl-generic.o -spl-objs += spl-atomic.o -spl-objs += spl-mutex.o -spl-objs += spl-kstat.o -spl-objs += spl-condvar.o -spl-objs += spl-xdr.o -spl-objs += spl-cred.o +spl-objs += @top_srcdir@/module/spl/spl-debug.o +spl-objs += @top_srcdir@/module/spl/spl-proc.o +spl-objs += @top_srcdir@/module/spl/spl-kmem.o +spl-objs += @top_srcdir@/module/spl/spl-thread.o +spl-objs += @top_srcdir@/module/spl/spl-taskq.o +spl-objs += @top_srcdir@/module/spl/spl-rwlock.o +spl-objs += @top_srcdir@/module/spl/spl-vnode.o +spl-objs += @top_srcdir@/module/spl/spl-err.o +spl-objs += @top_srcdir@/module/spl/spl-time.o +spl-objs += @top_srcdir@/module/spl/spl-kobj.o +spl-objs += @top_srcdir@/module/spl/spl-module.o +spl-objs += @top_srcdir@/module/spl/spl-generic.o +spl-objs += @top_srcdir@/module/spl/spl-atomic.o +spl-objs += @top_srcdir@/module/spl/spl-mutex.o +spl-objs += @top_srcdir@/module/spl/spl-kstat.o +spl-objs += @top_srcdir@/module/spl/spl-condvar.o +spl-objs += @top_srcdir@/module/spl/spl-xdr.o +spl-objs += @top_srcdir@/module/spl/spl-cred.o diff --git a/module/splat/Makefile.in b/module/splat/Makefile.in index 2f63b458a..724f824d5 100644 --- a/module/splat/Makefile.in +++ b/module/splat/Makefile.in @@ -2,22 +2,24 @@ MODULES := splat EXTRA_CFLAGS = @KERNELCPPFLAGS@ +EXTRA_CFLAGS += -I@abs_top_srcdir@/include +EXTRA_CFLAGS += -include @abs_top_builddir@/spl_config.h # Solaris Porting LAyer Tests obj-m := splat.o -splat-objs += splat-ctl.o -splat-objs += splat-kmem.o -splat-objs += splat-taskq.o -splat-objs += splat-random.o -splat-objs += splat-mutex.o -splat-objs += splat-condvar.o -splat-objs += splat-thread.o -splat-objs += splat-rwlock.o -splat-objs += splat-time.o -splat-objs += splat-vnode.o -splat-objs += splat-kobj.o -splat-objs += splat-atomic.o -splat-objs += splat-list.o -splat-objs += splat-generic.o -splat-objs += splat-cred.o +splat-objs += @top_srcdir@/module/splat/splat-ctl.o +splat-objs += @top_srcdir@/module/splat/splat-kmem.o +splat-objs += @top_srcdir@/module/splat/splat-taskq.o +splat-objs += @top_srcdir@/module/splat/splat-random.o +splat-objs += @top_srcdir@/module/splat/splat-mutex.o +splat-objs += @top_srcdir@/module/splat/splat-condvar.o +splat-objs += @top_srcdir@/module/splat/splat-thread.o +splat-objs += @top_srcdir@/module/splat/splat-rwlock.o +splat-objs += @top_srcdir@/module/splat/splat-time.o +splat-objs += @top_srcdir@/module/splat/splat-vnode.o +splat-objs += @top_srcdir@/module/splat/splat-kobj.o +splat-objs += @top_srcdir@/module/splat/splat-atomic.o +splat-objs += @top_srcdir@/module/splat/splat-list.o +splat-objs += @top_srcdir@/module/splat/splat-generic.o +splat-objs += @top_srcdir@/module/splat/splat-cred.o diff --git a/scripts/Makefile.am b/scripts/Makefile.am index 949d77bdb..33700ee44 100644 --- a/scripts/Makefile.am +++ b/scripts/Makefile.am @@ -1,4 +1,4 @@ EXTRA_DIST = check.sh check: - ./check.sh + $(top_srcdir)/scripts/check.sh diff --git a/scripts/Makefile.in b/scripts/Makefile.in index 4e706159a..07d181c52 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -392,7 +392,7 @@ uninstall-am: check: - ./check.sh + $(top_srcdir)/scripts/check.sh # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded.