move package/linux into target/linux, use wbx' new kernel code. support building...
[openwrt/svn-archive/archive.git] / openwrt / target / linux / package / shfs / patches / 101-kmod_build.patch
diff --git a/openwrt/target/linux/package/shfs/patches/101-kmod_build.patch b/openwrt/target/linux/package/shfs/patches/101-kmod_build.patch
new file mode 100644 (file)
index 0000000..6359004
--- /dev/null
@@ -0,0 +1,103 @@
+--- shfs-0.35-orig/shfs/Linux-2.4/Makefile     2004-06-01 15:16:19.000000000 +0200
++++ shfs-0.35-2/shfs/Linux-2.4/Makefile        2005-04-09 02:34:35.000000000 +0200
+@@ -1,3 +1,17 @@
++#
++# the original Makefile was trashed and replaced by this one
++# The main reason is that loadable modules should be built with
++# the same compile flags the kernel was built with, so we'd better
++# let the kernel tree build the module for us, like that :
++#
++#   make -C $(KERNEL_DIR) SUBDIRS="$(shell pwd)" modules
++#   make -C $(KERNEL_DIR) SUBDIRS="$(shell pwd)" modules_install
++#
++#
++# $(TOPDIR)/lib/string.o is needed at link time because the memchr function 
++# is not exported on mips (insmod: unresolved symbol memchr)
++#
++
+ ifndef KERNEL
+ KERNEL=$(shell uname -r)
+ endif
+@@ -10,67 +24,30 @@
+ KERNEL_SOURCES=${MODULESDIR}/build
+ endif
+-ifeq (${MODVERSIONS},detect)
+-  ifeq ($(shell test -e ${KERNEL_SOURCES}/include/linux/modversions.h; echo $$?),0)
+-    MODVERSIONS=yes
+-  endif
+-endif
+-
+-ifeq (${MODVERSIONS},yes)
+-MVER=-DMODVERSIONS -DEXPORT_SYMTAB
+-endif
+-
+-LINVER=linux-${KERNEL}
+-
+-ALL_TARGETS := shfs.o
+-
+-SEARCHDIRS := -I- -I. -I${KERNEL_SOURCES}/include #-I/usr/src/linux/include/
++all: all-y
+-CC     := gcc
+-CFLAGS  = -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe -Wall ${SEARCHDIRS} -DMODULE ${MVER} -D__KERNEL__ -DLINUX
+-LINKER    := ld
+-LDFLAGS    = -r
+-LOADLIBES := 
++O_TARGET := shfs.o
+-all: ${ALL_TARGETS}
++shfs-objs := dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
+-%.o: %.c $(wildcard *.h)
+-      ${CC} ${CFLAGS} -c $< -o $@
++obj-y := $(shfs-objs) 
++obj-m := $(O_TARGET)
+-shfs.o: dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
+-      ${LINKER} ${LDFLAGS} -o $@ ${filter-out %.a %.so, $^} ${LOADLIBES}
+-
+-tidy:
+-      ${RM} core dcache.o dir.o fcache.o file.o inode.o ioctl.o proc.o shell.o symlink.o
+-
+-clean: tidy patch-clean
+-      ${RM} shfs.o
++-include $(TOPDIR)/Rules.make
++all-y:
++      make -C ${KERNEL_SOURCES} TOPDIR="${KERNEL_SOURCES}" SUBDIRS="$(shell pwd)" modules
++      
+ install: shfs.o
+       rm -f ${MODULESDIR}/kernel/fs/shfs/shfs.o
+       install -m644 -b -D shfs.o ${MODULESDIR}/kernel/fs/shfs/shfs.o
+-      if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi
+ uninstall:
+       rm -rf ${MODULESDIR}/kernel/fs/shfs
+-      if [ -x /sbin/depmod -a "${ROOT}" = "/" ]; then /sbin/depmod -aq; fi
+-patch:
+-      rm -rf ${LINVER} ${LINVER}.orig; mkdir ${LINVER};
+-      for i in Documentation fs/shfs include/linux; do \
+-        mkdir -p ${LINVER}/$$i; \
+-      done
+-      cp ${KERNEL_SOURCES}/Documentation/Configure.help ${LINVER}/Documentation
+-      cp ${KERNEL_SOURCES}/fs/{Makefile,Config.in} ${LINVER}/fs
+-      cp -r ${LINVER} ${LINVER}.orig
+-      cp ../../Changelog *.c shfs_debug.h proc.h ${LINVER}/fs/shfs/
+-      cp shfs.h shfs_fs* ${LINVER}/include/linux/
+-      (cd ${LINVER}; patch -p1 <../kernel-config.diff)
+-      find . -type f -name "*.orig" -print | xargs rm -f
+-      diff -urN ${LINVER}.orig ${LINVER} >${LINVER}.diff; true
+-
+-patch-clean:
+-      rm -rf ${LINVER} ${LINVER}.orig;
+-      rm -f ${LINVER}.diff
+-      
+-.PHONY : all tidy clean install uninstall patch patch-clean
++clean:
++      rm -f core *.o *.a *.s
++
++shfs.o: $(shfs-objs)
++      $(LD) -r -o $@ $(shfs-objs) $(TOPDIR)/lib/string.o
++