summaryrefslogtreecommitdiff
path: root/doc/plustek/Makefile.kernel24
diff options
context:
space:
mode:
Diffstat (limited to 'doc/plustek/Makefile.kernel24')
-rw-r--r--doc/plustek/Makefile.kernel24251
1 files changed, 251 insertions, 0 deletions
diff --git a/doc/plustek/Makefile.kernel24 b/doc/plustek/Makefile.kernel24
new file mode 100644
index 0000000..207ef39
--- /dev/null
+++ b/doc/plustek/Makefile.kernel24
@@ -0,0 +1,251 @@
+# Makefile for the plustek scanner driver (kernel-module)
+#
+###############################################################################
+#
+# define the directories
+#
+HOME_DIR := .
+SRC_DIR := $(HOME_DIR)
+INC_DIR := $(SRC_DIR)
+OBJ_DIR := $(HOME_DIR)/obj
+DOC_DIR := $(HOME_DIR)/doc
+BACKEND := $(SRC_DIR)
+
+#
+# define the used tools
+#
+MD = mkdir -p
+CC = gcc
+TAR = tar
+REF = cxref
+
+#
+# Comment/uncomment the following line to disable/enable debugging
+# can also be set by commandline parameter: make all DEBUG=y
+#
+#DEBUG = y
+
+#
+# common compiler options
+#
+OPT = -fomit-frame-pointer -D_PTDRV_VERSTR=\"$(VERSIONSTR)\"
+
+#
+# cxref options
+#
+REFOPT = -xref-all -index-all -html32
+
+#
+# Comment out if you are not running SMP. Someone take this out of here
+# when the SMP stuff gets moved out of the kernel Makefile.
+# SMP = 1
+# SMP_PROF = 1
+
+#
+# add the following to get assembly listing
+# -Wa,-alh,-L -g
+
+#
+# get some version numbers
+#
+ifeq ($(LINUXVERSION),)
+ LINUXVERSION = $(shell uname -r)
+endif
+
+VERSIONSTR = $(shell grep "define BACKEND_VERSION" $(SRC_DIR)/plustek_pp.c | cut -b25-50 )
+
+# Change it here or specify it on the "make" commandline
+ifeq ($(HEADER_PATH),)
+MACHTYPE = $(shell env | grep debian-linux | wc -l | sed 's/ //g')
+ifeq ($(MACHTYPE),1)
+# debian
+ HEADER_PATH = /usr/src/kernel-headers-$(LINUXVERSION)/include
+else
+# redhat, slackware
+ HEADER_PATH = /usr/src/linux/include
+endif
+# HEADER_PATH = /usr/include
+endif
+
+ifeq ($(DEBUG),y)
+ DEBFLAGS = -O -g -DDEBUG # "-O" is needed to expand inlines
+else
+ DEBFLAGS = -O2
+endif
+
+#
+# the new style reference
+#
+K24_HEADER_PATH = /lib/modules/$(LINUXVERSION)/build/include
+
+#
+# try to autodetect if we can use the new style header include references
+#
+KERNEL_HEADERS = $(shell if test -d $(K24_HEADER_PATH); then \
+ echo $(K24_HEADER_PATH); \
+ else \
+ echo $(HEADER_PATH); \
+ fi; )
+
+#
+# seems to be necessary for kernels 2.4.x
+#
+MODVERFILE = $(shell if [ -e $(KERNEL_HEADERS)/linux/modversions.h ]; then \
+ echo $(KERNEL_HEADERS)/linux/modversions.h ; \
+ else \
+ echo $(KERNEL_HEADERS)/linux/modsetver.h ; \
+ fi )
+
+MODFLAGS = -DMODULE
+
+#
+# set MODVERSIONS if the kernel uses it
+#
+VERSUSED = $(shell grep 'define CONFIG_MODVERSIONS' \
+ $(KERNEL_HEADERS)/linux/autoconf.h | wc -l | sed 's/ //g')
+ifeq ($(VERSUSED),1)
+ MODFLAGS += -DMODVERSIONS -include $(MODVERFILE)
+endif
+
+
+WARNFLAGS = -Wall -Wstrict-prototypes
+CFLAGS = $(WARNFLAGS) $(OPT) -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(DEBFLAGS) $(MODFLAGS)
+MODLIB = /lib/modules/$(LINUXVERSION)
+
+ifdef SMP
+CFLAGS += -D__SMP__
+
+ifdef SMP_PROF
+CFLAGS += -D__SMP_PROF__
+endif
+endif
+
+TARGET = pt_drv
+
+OBJ = $(TARGET).o
+NAMES := dac detect genericio image map misc models io procfs
+NAMES := $(NAMES) motor p9636 ptdrv scale tpa p48xx p12 p12ccd
+NAMES := $(addprefix plustek-pp_, $(NAMES))
+SRCS := $(addprefix $(SRC_DIR)/, $(NAMES))
+SRCS := $(addsuffix .c, $(SRCS))
+OBJS := $(addprefix $(OBJ_DIR)/, $(NAMES))
+OBJS := $(addsuffix .o, $(OBJS))
+INCS := scan dbg types scandata procs hwdefs sysdep
+INCS := $(addsuffix .h, $(INCS))
+HDRS = $(addprefix $(INC_DIR)/plustek-pp_, $(INCS))
+
+#
+# the header files we need from the backend
+#
+BACKINCS := plustek-pp.h
+BACKINCS := $(addprefix $(BACKEND)/, $(BACKINCS))
+
+group = "root"
+mode = "644"
+INST_DIR = /lib/modules/$(LINUXVERSION)/kernel/drivers/char
+
+info:
+ @clear
+ @echo "Makefile to create the Plustek-Scanner kernel-module:"
+ @echo "all ... builds the module"
+ @echo "all DEBUG=y ... builds the module with debug-messages enabled"
+ @echo "clean ... cleans up the show"
+ @echo "install ... installs the module to the library path"
+ @echo "uninstall ... removes the module from the library path"
+ @echo "load ... tries to load the module and creates device nodes"
+ @echo "unload ... unloads the module"
+
+
+all: .depend chkdir $(OBJ)
+
+#
+# create object directory
+#
+.PHONY : chkdir
+chkdir:
+ @-$(MD) $(OBJ_DIR)
+ @-$(MD) $(DOC_DIR)
+
+$(OBJ): $(OBJS)
+ $(LD) -r $^ -o $@
+
+$(OBJS): Makefile $(HDRS) $(BACKINCS)
+
+$(OBJ_DIR)/%.o : $(SRC_DIR)/%.c
+ $(CC) $(CFLAGS) -c $< -o $@
+
+$(OBJ_DIR)/$(OBJ): VERSION1 VERSION0
+
+#
+# copy the driver to the modules directory
+#
+install:
+ mkdir -p $(INST_DIR)
+ install -c -m $(mode) $(OBJ) $(INST_DIR)
+ /sbin/depmod -a
+
+#
+# remove it
+#
+uninstall:
+ rm -f $(INST_DIR)/$(OBJ)
+
+#
+# use modprobe to load the driver, remember to set the
+# parameter in /etc/modules.conf (see sane-plustek_pp.man for more details)
+#
+load: $(INST_DIR)/$(OBJ)
+# invoke modprobe with all arguments we got
+ /sbin/modprobe $(TARGET) || exit 1
+
+# Remove stale nodes and replace them, then give gid and perms
+ rm -f /dev/$(TARGET)*
+
+# when using the devfs support, we check the /dev/scanner entries
+# and only create links to the devfs nodes
+# at least we create one link
+ @if [ -e /dev/scanner/$(TARGET)* ]; then \
+ ln -s /dev/scanner/$(TARGET)0 /dev/$(TARGET); \
+ for name in `ls /dev/scanner | grep $(TARGET)`; do \
+ ln -s /dev/scanner/$$name /dev/$$name ; \
+ done \
+ else \
+ mknod /dev/$(TARGET) c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)0 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 0; \
+ mknod /dev/$(TARGET)1 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 1; \
+ mknod /dev/$(TARGET)2 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 2; \
+ mknod /dev/$(TARGET)3 c `cat /proc/devices | sed -ne "s/\([0-9]*\) pt_drv/\1/p"` 3; \
+ \
+ chgrp $(group) /dev/$(TARGET)*; \
+ chmod $(mode) /dev/$(TARGET)*; \
+ fi
+
+#
+# unload the driver
+#
+unload:
+ /sbin/modprobe -r $(TARGET) || exit 1
+
+# Remove stale nodes
+ rm -f /dev/$(TARGET)*
+
+#
+# create reference docu
+#
+doc: chkdir
+ $(REF) $(REFOPT) $(INC_DIR)/*.h $(SRC_DIR)/*.c $(BACKEND)/plustek-share.h \
+ -D__KERNEL__ -I$(KERNEL_HEADERS) -I$(INC_DIR) -I$(BACKEND) $(MODFLAGS) \
+ -D_PTDRV_V1=$(VERSION1) -D_PTDRV_V0=$(VERSION0) -D_PTDRV_BUILD=$(BUILD) -O$(DOC_DIR)
+
+clean:
+ @-rm -f $(OBJ_DIR)/*.o .depend depend dep $(REF).* *.html $(TARGET).o
+ @-rm -rf $(OBJ_DIR)
+ @-rm -rf $(DOC_DIR)
+
+depend .depend dep:
+ $(CC) $(CFLAGS) -M $(SRCS) > $@
+
+ifeq (.depend,$(wildcard .depend))
+#include .depend
+endif
+