From 1e0058f610ca9bbb192facf6a8bbf59ce3f2fb8b Mon Sep 17 00:00:00 2001 From: Miklos Szeredi Date: Wed, 10 Nov 2004 10:05:43 +0000 Subject: [PATCH] separate kernel configure --- .cvsignore | 2 +- ChangeLog | 9 ++++ Makefile.am | 7 ++- configure.in | 90 ++++---------------------------- fuse.pc.in | 2 +- include/linux/.cvsignore | 1 + include/linux/Makefile.am | 5 ++ kernel/.cvsignore | 3 ++ kernel/Makefile.in | 25 +++++---- kernel/configure.ac | 72 +++++++++++++++++++++++++ kernel/fuse_i.h | 18 +++---- {include => kernel}/linux/fuse.h | 0 kernel/makeconf.sh | 9 ++++ makeconf.sh | 2 +- 14 files changed, 143 insertions(+), 102 deletions(-) create mode 100644 kernel/configure.ac rename {include => kernel}/linux/fuse.h (100%) create mode 100755 kernel/makeconf.sh diff --git a/.cvsignore b/.cvsignore index 94d2eb8..8c9db8e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -6,9 +6,9 @@ configure install-sh mkinstalldirs missing -config.log *.cache config.* depcomp libtool INSTALL +fuse.pc diff --git a/ChangeLog b/ChangeLog index ded2564..ceed29a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2004-11-10 Miklos Szeredi + + * Separate configure for the kernel directory + + * Add pkg-config support. To compile a FUSE based filesystem you + can do "gcc -Wall `pkg-config --cflags --libs fuse` myfs.c -o myfs" + or similar. Note, that the PKG_CONFIG_PATH environment variable + usually needs to be set to "/usr/local/lib/pkgconfig". + 2004-11-09 Miklos Szeredi * Split 2.0 branch diff --git a/Makefile.am b/Makefile.am index f319a92..140691e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ ## Process this file with automake to produce Makefile.in -SUBDIRS = @subdirs@ +SUBDIRS = @subdirs@ @subdirs2@ EXTRA_DIST = \ fuse.spec \ @@ -8,3 +8,8 @@ EXTRA_DIST = \ Filesystems \ BUGS \ doc/how-fuse-works + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = fuse.pc + +$(pkgconfig_DATA): config.status diff --git a/configure.in b/configure.in index 1782113..2fb7f38 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_INIT(lib/fuse.c) -AM_INIT_AUTOMAKE(fuse, 1.9) +AM_INIT_AUTOMAKE(fuse, 2.1-pre0) AM_CONFIG_HEADER(include/config.h) m4_ifdef([LT_INIT], @@ -7,11 +7,6 @@ m4_ifdef([LT_INIT], [AC_PROG_LIBTOOL]) AC_PROG_CC -if test -z "$LD"; then - LD=ld -fi -AC_SUBST(LD) - # compatibility for automake < 1.8 if test -z "$mkdir_p"; then mkdir_p="../mkinstalldirs" @@ -22,7 +17,7 @@ CFLAGS="-Wall -W -g -O2" CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=64 -D_REENTRANT" AC_ARG_ENABLE(kernel-module, - [ --enable-kernel-module Compile kernel module, requires --with-kernel option ]) + [ --enable-kernel-module Compile kernel module ]) AC_ARG_ENABLE(lib, [ --enable-lib Compile with library ]) AC_ARG_ENABLE(util, @@ -32,85 +27,20 @@ AC_ARG_ENABLE(example, AC_ARG_ENABLE(auto-modprobe, [ --enable-auto-modprobe Automatically insert kernel module]) -subdirs="include" +subdirs2="include" if test "$enable_kernel_module" != "no"; then - AC_MSG_CHECKING([kernel source directory]) - kernelsrc= - AC_ARG_WITH(kernel, - [ --with-kernel Specify location of kernel source ], - [kernelsrc="$withval"]) - - if test -z "$kernelsrc"; then - buildlink=/lib/modules/`uname -r`/build - if test -e $buildlink; then - kernelsrc=`(cd $buildlink; /bin/pwd)` - else - AC_MSG_RESULT([Not found]) - AC_MSG_ERROR([ -*** Please specify the location of the kernel source with -*** the '--with-kernel=SRCDIR' option]) - fi - fi - AC_MSG_RESULT([$kernelsrc]) - - AC_MSG_CHECKING([kernel source version]) - if test -r $kernelsrc/include/linux/version.h; then - kernsrcver=`(echo "#include "; echo "kernsrcver=UTS_RELEASE") | cpp -I $kernelsrc/include | grep "^kernsrcver=" | cut -d \" -f 2` - fi - if test -z "$kernsrcver"; then - AC_MSG_RESULT([Not found]) - AC_MSG_ERROR([ -*** Cannot determine the version of the linux kernel source. Please -*** configure the kernel before running this script]) - fi - AC_MSG_RESULT([$kernsrcver]) - majver=`echo "$kernsrcver" | cut -f-2 -d.` - kmoduledir=/lib/modules/$kernsrcver - AC_SUBST(kernelsrc) - AC_SUBST(majver) - AC_SUBST(kmoduledir) - subdirs="$subdirs kernel" - - if echo "$kernsrcver" | grep -q "^2.4"; then - old_cflags="$CFLAGS" - CFLAGS="-I${kernelsrc}/include -Wall -O2 -fno-strict-aliasing -D__KERNEL__" - AC_CHECK_DECL(i_size_read, - AC_DEFINE(HAVE_I_SIZE_FUNC, 1, - [Kernel has i_size_read() and i_size_write() functions]),, - [#include ]) - CFLAGS="$old_cflags" - fi - AC_MSG_CHECKING([if kernel has extended attribute support]) - if test -f $kernelsrc/include/linux/xattr.h; then - AC_DEFINE(HAVE_KERNEL_XATTR, 1, [Kernel has xattr support],,) - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - - isuml=no - KERNELMAKE_PARAMS= - KERNELCPPFLAGS= - AC_MSG_CHECKING([if this is user mode linux]) - if test -f $kernelsrc/include/linux/autoconf.h && grep -q "^#define CONFIG_USERMODE 1" $kernelsrc/include/linux/autoconf.h; then - isuml=yes - KERNELMAKE_PARAMS="ARCH=um" - KERNELCPPFLAGS="-D__arch_um__ -DSUBARCH=\\\"i386\\\" -D_LARGEFILE64_SOURCE -I${kernelsrc}/arch/um/include -Derrno=kernel_errno -I${kernelsrc}/arch/um/kernel/tt/include -I${kernelsrc}/arch/um/kernel/skas/include" - fi - AC_MSG_RESULT([$isuml]) - AC_SUBST(KERNELMAKE_PARAMS) - AC_SUBST(KERNELCPPFLAGS) + AC_CONFIG_SUBDIRS(kernel) fi if test "$enable_lib" != "no"; then - subdirs="$subdirs lib"; + subdirs2="$subdirs2 lib"; fi if test "$enable_util" != "no"; then - subdirs="$subdirs util"; + subdirs2="$subdirs2 util"; fi if test "$enable_example" != "no"; then - subdirs="$subdirs example"; + subdirs2="$subdirs2 example"; fi if test "$enable_auto_modprobe" = "yes"; then AC_DEFINE(AUTO_MODPROBE, 1, [Automatically insert kernel module]) @@ -119,7 +49,7 @@ fi AC_CHECK_FUNCS([setxattr]) AC_CHECK_MEMBERS([struct stat.st_atim]) -AC_SUBST(subdirs) - -AC_OUTPUT([Makefile kernel/Makefile lib/Makefile util/Makefile example/Makefile include/Makefile include/linux/Makefile]) +AC_SUBST(subdirs2) +AC_CONFIG_FILES([fuse.pc Makefile lib/Makefile util/Makefile example/Makefile include/Makefile include/linux/Makefile]) +AC_OUTPUT diff --git a/fuse.pc.in b/fuse.pc.in index d55970c..d728b21 100644 --- a/fuse.pc.in +++ b/fuse.pc.in @@ -7,4 +7,4 @@ Name: fuse Description: Filesystem in Userspace Version: @VERSION@ Libs: -L${libdir} -lfuse -Cflags: -I${includedir}/fuse +Cflags: -I${includedir} diff --git a/include/linux/.cvsignore b/include/linux/.cvsignore index 3dda729..3e71cc3 100644 --- a/include/linux/.cvsignore +++ b/include/linux/.cvsignore @@ -1,2 +1,3 @@ Makefile.in Makefile +fuse.h diff --git a/include/linux/Makefile.am b/include/linux/Makefile.am index 173f647..486c3d4 100644 --- a/include/linux/Makefile.am +++ b/include/linux/Makefile.am @@ -1,3 +1,8 @@ ## Process this file with automake to produce Makefile.in noinst_HEADERS = fuse.h + +all-local: fuse.h + +fuse.h: + ln -s ../../kernel/linux/fuse.h . diff --git a/kernel/.cvsignore b/kernel/.cvsignore index a9f8088..907cdec 100644 --- a/kernel/.cvsignore +++ b/kernel/.cvsignore @@ -1,4 +1,7 @@ Makefile +configure +config.* +*.cache .deps .*.cmd *.mod.c diff --git a/kernel/Makefile.in b/kernel/Makefile.in index 7850b83..d0e6f6d 100644 --- a/kernel/Makefile.in +++ b/kernel/Makefile.in @@ -2,11 +2,14 @@ SHELL = /bin/sh INSTALL = @INSTALL@ -mkdir_p = @mkdir_p@ +mkdir_p = mkdir -p majver = @majver@ +VERSION = @PACKAGE_VERSION@ -DISTFILES = Makefile.in dev.c dir.c file.c inode.c util.c fuse_i.h +DISTFILES = Makefile.in configure.ac configure config.h.in makeconf.sh \ + dev.c dir.c file.c inode.c util.c fuse_i.h COMPATDISTFILES = compat/parser.c compat/parser.h +LINUXDISTFILES = linux/fuse.h fusemoduledir = @kmoduledir@/kernel/fs/fuse @@ -32,20 +35,24 @@ clean: distclean: clean rm -f Makefile + rm -f config.h config.log config.status + rm -rf autom4te.cache .tmp_versions maintainer-clean: distclean -distdir: $(DISTFILES) $(COMPATDISTFILES) +distdir: $(DISTFILES) $(COMPATDISTFILES) $(LINUXDISTFILES) cp -p $(DISTFILES) $(distdir) mkdir $(distdir)/compat cp -p $(COMPATDISTFILES) $(distdir)/compat + mkdir $(distdir)/linux + cp -p $(LINUXDISTFILES) $(distdir)/linux ifeq ($(majver), 2.4) -CC = @CC@ -LD = @LD@ +CC = gcc +LD = ld CFLAGS = -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -pipe -CPPFLAGS = -I@kernelsrc@/include -I../include -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DFUSE_VERSION=\"@VERSION@\" @KERNELCPPFLAGS@ +CPPFLAGS = -I@kernelsrc@/include -I. -D__KERNEL__ -DMODULE -D_LOOSE_KERNEL_NAMES -DFUSE_VERSION=\"$(VERSION)\" @KERNELCPPFLAGS@ fuse_objs = dev.o dir.o file.o inode.o util.o compat/parser.o @@ -59,7 +66,7 @@ all-spec: fuse.o fuse.o: $(fuse_objs) $(LD) -r -o fuse.o $(fuse_objs) -fuse_headers = fuse_i.h ../include/linux/fuse.h +fuse_headers = fuse_i.h linux/fuse.h dev.o: $(fuse_headers) dir.o: $(fuse_headers) @@ -69,8 +76,8 @@ util.o: $(fuse_headers) else -export FUSE_INCLUDE ?= $(shell pwd)/../include -EXTRA_CFLAGS += -I$(FUSE_INCLUDE) -DFUSE_VERSION=\"@VERSION@\" +export FUSE_INCLUDE ?= $(shell pwd) +EXTRA_CFLAGS += -I$(FUSE_INCLUDE) -DFUSE_VERSION=\"$(VERSION)\" obj-m := fuse.o fuse-objs := dev.o dir.o file.o inode.o util.o diff --git a/kernel/configure.ac b/kernel/configure.ac new file mode 100644 index 0000000..8dce5bd --- /dev/null +++ b/kernel/configure.ac @@ -0,0 +1,72 @@ +AC_INIT(fuse-kernel, 2.1-pre0) +AC_CONFIG_HEADERS([config.h]) + +AC_MSG_CHECKING([kernel source directory]) +kernelsrc= +AC_ARG_WITH(kernel, + [ --with-kernel=PATH Specify location of kernel source ], + [kernelsrc="$withval"]) + +if test -z "$kernelsrc"; then + buildlink=/lib/modules/`uname -r`/build + if test -e $buildlink; then + kernelsrc=`(cd $buildlink; /bin/pwd)` + else + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([ +*** Please specify the location of the kernel source with +*** the '--with-kernel=SRCDIR' option]) + fi +fi +AC_MSG_RESULT([$kernelsrc]) + +AC_MSG_CHECKING([kernel source version]) +if test -r $kernelsrc/include/linux/version.h; then + kernsrcver=`(echo "#include "; echo "kernsrcver=UTS_RELEASE") | cpp -I $kernelsrc/include | grep "^kernsrcver=" | cut -d \" -f 2` +fi +if test -z "$kernsrcver"; then + AC_MSG_RESULT([Not found]) + AC_MSG_ERROR([ +*** Cannot determine the version of the linux kernel source. Please +*** configure the kernel before running this script]) +fi +AC_MSG_RESULT([$kernsrcver]) +majver=`echo "$kernsrcver" | cut -f-2 -d.` +kmoduledir=/lib/modules/$kernsrcver +AC_SUBST(kernelsrc) +AC_SUBST(majver) +AC_SUBST(kmoduledir) +subdirs="$subdirs kernel" + +if echo "$kernsrcver" | grep -q "^2.4"; then + old_cflags="$CFLAGS" + CFLAGS="-I${kernelsrc}/include -Wall -O2 -fno-strict-aliasing -D__KERNEL__" + AC_CHECK_DECL(i_size_read, + AC_DEFINE(HAVE_I_SIZE_FUNC, 1, + [Kernel has i_size_read() and i_size_write() functions]),, + [#include ]) + CFLAGS="$old_cflags" +fi +AC_MSG_CHECKING([if kernel has extended attribute support]) +if test -f $kernelsrc/include/linux/xattr.h; then + AC_DEFINE(HAVE_KERNEL_XATTR, 1, [Kernel has xattr support],,) + AC_MSG_RESULT([yes]) +else + AC_MSG_RESULT([no]) +fi + +isuml=no +KERNELMAKE_PARAMS= +KERNELCPPFLAGS= +AC_MSG_CHECKING([if this is user mode linux]) +if test -f $kernelsrc/include/linux/autoconf.h && grep -q "^#define CONFIG_USERMODE 1" $kernelsrc/include/linux/autoconf.h; then + isuml=yes + KERNELMAKE_PARAMS="ARCH=um" + KERNELCPPFLAGS="-D__arch_um__ -DSUBARCH=\\\"i386\\\" -D_LARGEFILE64_SOURCE -I${kernelsrc}/arch/um/include -Derrno=kernel_errno -I${kernelsrc}/arch/um/kernel/tt/include -I${kernelsrc}/arch/um/kernel/skas/include" +fi +AC_MSG_RESULT([$isuml]) +AC_SUBST(KERNELMAKE_PARAMS) +AC_SUBST(KERNELCPPFLAGS) + +AC_CONFIG_FILES([Makefile]) +AC_OUTPUT diff --git a/kernel/fuse_i.h b/kernel/fuse_i.h index 8e3b416..c74238b 100644 --- a/kernel/fuse_i.h +++ b/kernel/fuse_i.h @@ -20,15 +20,15 @@ #include #ifndef KERNEL_2_6 -#include -#ifdef CONFIG_MODVERSIONS -#define MODVERSIONS -#include -#endif -#ifndef HAVE_I_SIZE_FUNC -#define i_size_read(inode) ((inode)->i_size) -#define i_size_write(inode, size) do { (inode)->i_size = size; } while(0) -#endif +# include +# ifdef CONFIG_MODVERSIONS +# define MODVERSIONS +# include +# endif +# ifndef HAVE_I_SIZE_FUNC +# define i_size_read(inode) ((inode)->i_size) +# define i_size_write(inode, size) do { (inode)->i_size = size; } while(0) +# endif #endif #include #include diff --git a/include/linux/fuse.h b/kernel/linux/fuse.h similarity index 100% rename from include/linux/fuse.h rename to kernel/linux/fuse.h diff --git a/kernel/makeconf.sh b/kernel/makeconf.sh new file mode 100755 index 0000000..d9d6fe1 --- /dev/null +++ b/kernel/makeconf.sh @@ -0,0 +1,9 @@ +#! /bin/sh + +echo Running autoheader... +autoheader +echo Running autoconf... +autoconf + +rm -f config.cache config.status +echo "To compile run './configure', and then 'make'." diff --git a/makeconf.sh b/makeconf.sh index 2deb4fc..67357e3 100755 --- a/makeconf.sh +++ b/makeconf.sh @@ -1,7 +1,7 @@ #! /bin/sh echo Running libtoolize... -libtoolize --automake +libtoolize --automake -c if test ! -z "`which autoreconf`"; then echo Running autoreconf... -- 2.30.2