# Makefile for the Linux CAN-bus driver. # Written by Arnaud Westenberg email:arnaud@wanadoo.nl # This software is released under the GPL-License. # Version lincan-0.2 9 Aug 2003 # # This version is adapted from uLan Communication driver # (C) Copyright 1999 by Pavel Pisa pisa@cmp.felk.cvut.cz # #***************************************************************** ifdef SUBDIRS SUBDIRS = endif ifneq ($(wildcard ../../../../../ocera.mk),) ifndef TOPDIR include ../../../../../ocera.mk else LINUX_DIR = ../../../../../kernel/linux/ endif else OCERA_NOTDEF = 1 all: @echo -e "You should go to the ocera/ directory and do 'make' to generate the ocera.mk file first.\nThanks." endif # Where to look for kernel # if not defined, sources of current running kernel are found #KERNEL_LOCATION=/usr/src/linux #KERNEL_LOCATION=/usr/src/linux-2.2.19 #KERNEL_LOCATION=/usr/src/linux-2.2.22 #KERNEL_LOCATION=/usr/src/linux-2.6.0-test4 #KERNEL_LOCATION=/home/cvs/ocera/ocera-build/kernel/linux ifdef LINUX_DIR KERNEL_LOCATION = $(LINUX_DIR) endif # Enable debugging messages #DEBUG = y # You can comment out the hardware you don't need. This will result in a smaller # driver. By default, all hardware is supported in the driver. See the README # file for a description of the supported hardware. # pccan Not to be confused with PCCCAN!!! # pcccan Not to be confused with PCCAN!!! SUPPORTED_CARDS = pip pccan smartcan nsi cc_can104 \ pc_i03 pcm3680 aim104 m437 pcccan ssv \ bfadcan pikronisa virtual template #SUPPORTED_CARDS = pcm3680 bfadcan pikronisa template #SUPPORTED_CARDS = pikronisa ########## Don't change anything under this line ################ # currently running kernel CURRENT=$(shell uname -r) KERNEL_NEW=$(shell if [ -d /lib/modules/$(CURRENT)/build ] ; \ then echo yes ; else echo no ; fi ) #KERNEL_LOCATION=/usr/src/kernel/$(CURRENT) #KERNEL_LOCATION=/lib/modules/$(CURRENT)/build ifndef KERNEL_LOCATION ifeq ($(KERNEL_NEW),yes) KERNEL_LOCATION=/lib/modules/$(CURRENT)/build MODULE_CHAR_LOC=/lib/modules/$(CURRENT)/kernel/drivers/char else KERNEL_LOCATION=/usr/src/linux MODULE_CHAR_LOC=/lib/modules/$(CURRENT)/misc endif endif TOPDIR = $(KERNEL_LOCATION) CONFIG_SHELL = TOPDIR=$(TOPDIR) KERNEL_VERSION := $(shell awk -F\" '/REL/ {print $$2}' \ $(KERNEL_LOCATION)/include/linux/version.h | awk -F\- '{print $$1}') PROC_FS := $(shell awk -F\ '/PROC_FS/ {print $$3}' \ $(KERNEL_LOCATION)/include/linux/autoconf.h) DEVFS_FS := $(shell awk -F\ '/DEVFS_FS/ {print $$3}' \ $(KERNEL_LOCATION)/include/linux/autoconf.h) KERNEL_MODULE_V26 := $(shell echo $(KERNEL_VERSION) \ | sed -n 's/^.*2\.[5-9]\..*$$/yes/p') ifdef DEBUG EXTRA_CFLAGS += -DCAN_DEBUG EXTRA_CFLAGS += -ggdb endif ifndef MODVERSIONS # EXTRA_CFLAGS += -DNOVER #else # EXTRA_CFLAGS += -DMODVERSIONS endif ifdef DEVFS_FS EXTRA_CFLAGS += -DWITH_DEVFS_FS endif ifdef PROC_FS O_OBJS += proc.o endif # Target object file if any # this must be undefined for 2.5.xx kernels ifndef KERNEL_MODULE_V26 O_TARGET = can.o endif # Regular object files O_OBJS += $(SUPPORTED_CARDS:%=%.o) O_OBJS += can_queue.o devcommon.o main.o modparms.o setup.o \ sja1000p.o sja1000.o i82527.o irq.o boardlist.o \ open.o proc.o close.o write.o read.o ioctl.o select.o # Objects with exported symbols (-DEXPORT_SYMTAB) OX_OBJS = # Module objects M_OBJS = $(O_TARGET) # Module only objects with exported symbols (-DEXPORT_SYMTAB) MX_OBJS = # Kernel only objects L_OBJS = # Kernel only objects with exported symbols (-DEXPORT_SYMTAB) LX_OBJS = # Additional CFLAGS EXTRA_CFLAGS += # Linux 2.4.2 build system needs next can-objs = $(O_OBJS) obj-y = $(O_OBJS) obj-m = can.o ifndef KERNEL_MODULE_V26 FINAL_MODULE_OBJS=$(obj-m) else FINAL_MODULE_OBJS=$(obj-m:%.o=%.ko) endif ########## Source/target independent buil of module ############# #ifndef OCERA_NOTDEF all : default #endif default : make_this_module cp $(FINAL_MODULE_OBJS) ../$(FINAL_MODULE_OBJS) dep: make_this_module_dep install : install_this_module .supported_cards.h: Makefile echo >.supported_cards.h $(foreach card, $(SUPPORTED_CARDS), \ echo \#define ENABLE_CARD_$(card) 1 >>.supported_cards.h ;) make_this_module: .supported_cards.h echo Linux kernel version $(KERNEL_VERSION) echo Linux kernel sources $(KERNEL_LOCATION) echo Module target $(obj-m) echo Module objects $(can-objs) DIR=`pwd`; (cd $(KERNEL_LOCATION); make SUBDIRS=$$DIR modules) make_this_module_dep: DIR=`pwd`; (cd $(KERNEL_LOCATION); make SUBDIRS=$$DIR dep) install_this_module: make_this_module su -c "mkdir -v -p $(MODULE_CHAR_LOC) && cp -v $(FINAL_MODULE_OBJS) $(MODULE_CHAR_LOC)" ifndef KERNEL_MODULE_V26 include $(KERNEL_LOCATION)/Rules.make clean: rm -f $(M_OBJS) $(MX_OBJS) $(O_OBJS) $(OX_OBJS) $(obj-m) \ .*.o.flags .*.o.cmd .*.ko.cmd .depend .supported_cards.h *~ \ ../$(FINAL_MODULE_OBJS) distclean: clean else clean: rm -f $(M_OBJS) $(MX_OBJS) $(O_OBJS) $(OX_OBJS) $(obj-m:%.o=%.ko) \ $(obj-m:%.o=%.mod.o) .*.o.flags .*.o.cmd .*.ko.cmd .depend .supported_cards.h *~ \ ../$(FINAL_MODULE_OBJS) distclean: clean endif