summaryrefslogtreecommitdiff
path: root/test/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'test/Makefile')
-rw-r--r--test/Makefile325
1 files changed, 325 insertions, 0 deletions
diff --git a/test/Makefile b/test/Makefile
new file mode 100644
index 0000000..2c5ba97
--- /dev/null
+++ b/test/Makefile
@@ -0,0 +1,325 @@
+################################################################################
+#
+#
+# Copyright(c) 1999 - 2007 Intel Corporation. All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59
+# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# The full GNU General Public License is included in this distribution in the
+# file called LICENSE.
+#
+# Contact Information:
+# Linux NICS <linux.nics@intel.com>
+# Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
+#
+################################################################################
+MYDIR =$(shell echo `pwd`)
+
+###########################################################################
+# Driver files
+
+# core driver files
+CFILES = dopanic_drv.c
+HFILES =
+ifeq (,$(BUILD_KERNEL))
+BUILD_KERNEL=$(shell uname -r)
+endif
+
+###########################################################################
+# Environment tests
+
+# Kernel Search Path
+# All the places we look for kernel source
+KSP := /lib/modules/$(BUILD_KERNEL)/source \
+ /lib/modules/$(BUILD_KERNEL)/build \
+ /usr/src/linux-$(BUILD_KERNEL) \
+ /usr/src/linux-$($(BUILD_KERNEL) | sed 's/-.*//') \
+ /usr/src/kernel-headers-$(BUILD_KERNEL) \
+ /usr/src/kernel-source-$(BUILD_KERNEL) \
+ /usr/src/linux-$($(BUILD_KERNEL) | sed 's/\([0-9]*\.[0-9]*\)\..*/\1/') \
+ /usr/src/linux
+
+# prune the list down to only values that exist
+# and have an include/linux sub-directory
+test_dir = $(shell [ -e $(dir)/include/linux ] && echo $(dir))
+KSP := $(foreach dir, $(KSP), $(test_dir))
+
+# we will use this first valid entry in the search path
+ifeq (,$(KSRC))
+ KSRC := $(firstword $(KSP))
+endif
+
+ifeq (,$(KSRC))
+ $(error Linux kernel source not found)
+else
+ifeq (/lib/modules/$(shell uname -r)/source, $(KSRC))
+ KOBJ := /lib/modules/$(shell uname -r)/build
+else
+ KOBJ := $(KSRC)
+endif
+endif
+
+# check for version.h and autoconf.h for running kernel in /boot (SUSE)
+ifneq (,$(wildcard /boot/vmlinuz.version.h))
+ VERSION_FILE := /boot/vmlinuz.version.h
+ CONFIG_FILE := /boot/vmlinuz.autoconf.h
+ KVER := $(shell $(CC) $(CFLAGS) -E -dM $(VERSION_FILE) | \
+ grep UTS_RELEASE | awk '{ print $$3 }' | sed 's/\"//g')
+ ifeq ($(KVER),$(shell uname -r))
+ # set up include path to override headers from kernel source
+ x:=$(shell rm -rf include)
+ x:=$(shell mkdir -p include/linux)
+ x:=$(shell cp /boot/vmlinuz.version.h include/linux/version.h)
+ x:=$(shell cp /boot/vmlinuz.autoconf.h include/linux/autoconf.h)
+ CFLAGS += -I./include
+ else
+ VERSION_FILE := $(KOBJ)/include/linux/version.h
+ CONFIG_FILE := $(KSRC)/include/linux/autoconf.h
+ endif
+else
+ VERSION_FILE := $(KOBJ)/include/linux/version.h
+ CONFIG_FILE := $(KSRC)/include/linux/autoconf.h
+endif
+
+ifeq (,$(wildcard $(VERSION_FILE)))
+ $(error Linux kernel source not configured - missing version.h)
+endif
+
+ifeq (,$(wildcard $(CONFIG_FILE)))
+ $(error Linux kernel source not configured - missing config.h)
+endif
+
+# pick a compiler
+ifneq (,$(findstring egcs-2.91.66, $(shell cat /proc/version)))
+ CC := kgcc gcc cc
+else
+ CC := gcc cc
+endif
+test_cc = $(shell $(cc) --version > /dev/null 2>&1 && echo $(cc))
+CC := $(foreach cc, $(CC), $(test_cc))
+CC := $(firstword $(CC))
+ifeq (,$(CC))
+ $(error Compiler not found)
+endif
+
+# we need to know what platform the driver is being built on
+# some additional features are only built on Intel platforms
+ARCH := $(shell uname -m | sed 's/i.86/i386/')
+ifeq ($(ARCH),alpha)
+ CFLAGS += -ffixed-8 -mno-fp-regs
+endif
+ifeq ($(ARCH),x86_64)
+ CFLAGS += -mcmodel=kernel -mno-red-zone
+endif
+ifeq ($(ARCH),ppc)
+ CFLAGS += -msoft-float
+endif
+ifeq ($(ARCH),ppc64)
+ CFLAGS += -m64 -msoft-float
+ LDFLAGS += -melf64ppc
+endif
+
+# standard flags for module builds
+CFLAGS += -DLINUX -D__KERNEL__ -DMODULE -O2 -pipe -Wall
+CFLAGS += -I$(KSRC)/include -I.
+CFLAGS += $(shell [ -f $(KSRC)/include/linux/modversions.h ] && \
+ echo "-DMODVERSIONS -DEXPORT_SYMTAB \
+ -include $(KSRC)/include/linux/modversions.h")
+
+CFLAGS += $(CFLAGS_EXTRA)
+#ifeq (,$(shell echo $(CFLAGS_EXTRA) | grep NAPI))
+#CFLAGS += -DE1000_NO_NAPI
+#CFLAGS_EXTRA += -DE1000_NO_NAPI
+#endif
+
+RHC := $(KSRC)/include/linux/rhconfig.h
+ifneq (,$(wildcard $(RHC)))
+ # 7.3 typo in rhconfig.h
+ ifneq (,$(shell $(CC) $(CFLAGS) -E -dM $(RHC) | grep __module__bigmem))
+ CFLAGS += -D__module_bigmem
+ endif
+endif
+
+# get the kernel version - we use this to find the correct install path
+KVER := $(shell $(CC) $(CFLAGS) -E -dM $(VERSION_FILE) | grep UTS_RELEASE | \
+ awk '{ print $$3 }' | sed 's/\"//g')
+
+KKVER := $(shell echo $(KVER) | \
+ awk '{ if ($$0 ~ /2\.[4-9]\./) print "1"; else print "0"}')
+# ifeq ($(KKVER), 0)
+# $(error *** Aborting the build. \
+# *** This driver is not supported on kernel versions older than 2.4.0)
+# endif
+
+# set the install path
+INSTDIR := /lib/modules/$(KVER)/kernel/drivers/char
+
+# look for SMP in config.h
+SMP := $(shell $(CC) $(CFLAGS) -E -dM $(CONFIG_FILE) | \
+ grep CONFIG_SMP | awk '{ print $$3 }')
+ifneq ($(SMP),1)
+ SMP := 0
+endif
+
+ifneq ($(SMP),$(shell uname -a | grep SMP > /dev/null 2>&1 && echo 1 || echo 0))
+ $(warning ***)
+ ifeq ($(SMP),1)
+ $(warning *** Warning: kernel source configuration (SMP))
+ $(warning *** does not match running kernel (UP))
+ else
+ $(warning *** Warning: kernel source configuration (UP))
+ $(warning *** does not match running kernel (SMP))
+ endif
+ $(warning *** Continuing with build,)
+ $(warning *** resulting driver may not be what you want)
+ $(warning ***)
+endif
+
+ifeq ($(SMP),1)
+ CFLAGS += -D__SMP__
+endif
+
+# Any special handling for this driver
+
+###########################################################################
+# 2.4.x & 2.6.x Specific rules
+
+K_VERSION:=$(shell uname -r | cut -c1-3 | sed 's/2\.[56]/2\.6/')
+
+ifeq ($(K_VERSION), 2.6)
+
+# Makefile for 2.6.x kernel
+TARGET = dopanic.ko
+
+# man page
+MANSECTION = 8
+MANFILE = $(TARGET:.ko=.$(MANSECTION))
+# ifeq (,$(wildcard /etc/SuSE-release))
+# CFLAGS_DOPANIC += -I$(KSRC)/include/asm/mach-generic
+# CFLAGS_EXTRA += $(CFLAGS_DOPANIC)
+# endif
+
+ifneq ($(PATCHLEVEL),)
+EXTRA_CFLAGS += $(CFLAGS_EXTRA)
+obj-m += dopanic.o
+dopanic-objs := $(CFILES:.c=.o)
+else
+default:
+ifeq ($(KOBJ),$(KSRC))
+ make -C $(KSRC) V=1 SUBDIRS=$(shell pwd) modules
+else
+ make -C $(KSRC) V=1 O=$(KOBJ) SUBDIRS=$(shell pwd) modules
+endif
+endif
+
+else # ifeq ($(K_VERSION),2.6)
+
+# Makefile for 2.4.x kernel
+TARGET = dopanic
+
+# man page
+MANSECTION = 8
+MANFILE = $(TARGET:.o=.$(MANSECTION))
+
+# Get rid of compile warnings in kernel header files from SuSE
+ifneq (,$(wildcard /etc/SuSE-release))
+ CFLAGS += -Wno-sign-compare -fno-strict-aliasing
+endif
+
+# Get rid of compile warnings in kernel header files from fedora
+ifneq (,$(wildcard /etc/fedora-release))
+ CFLAGS += -fno-strict-aliasing
+endif
+
+.SILENT: $(TARGET)
+$(TARGET): $(filter-out $(TARGET), $(CFILES:.c=.o))
+ $(LD) $(LDFLAGS) -r $^ -o $@
+ echo; echo
+ echo "**************************************************"
+ echo "** $(TARGET) built for $(KVER)"
+ echo -n "** SMP "
+ if [ "$(SMP)" = "1" ]; \
+ then echo "Enabled"; else echo "Disabled"; fi
+ echo "**************************************************"
+ echo
+
+$(CFILES:.c=.o): $(HFILES) Makefile
+default:
+ echo "** CFLAGS = $(CFLAGS)"
+ make
+
+endif # ifeq ($(K_VERSION),2.6)
+
+ifeq (,$(MANDIR))
+ # find the best place to install the man page
+ MANPATH := $(shell (manpath 2>/dev/null || echo $MANPATH) | sed 's/:/ /g')
+ ifneq (,$(MANPATH))
+ # test based on inclusion in MANPATH
+ test_dir = $(findstring $(dir), $(MANPATH))
+ else
+ # no MANPATH, test based on directory existence
+ test_dir = $(shell [ -e $(dir) ] && echo $(dir))
+ endif
+ # our preferred install path
+ # should /usr/local/man be in here ?
+ MANDIR := /usr/share/man /usr/man
+ MANDIR := $(foreach dir, $(MANDIR), $(test_dir))
+ MANDIR := $(firstword $(MANDIR))
+endif
+ifeq (,$(MANDIR))
+ # fallback to /usr/man
+ MANDIR := /usr/man
+endif
+
+# depmod version for rpm builds
+DEPVER := $(shell /sbin/depmod -V 2>/dev/null | \
+ awk 'BEGIN {FS="."} NR==1 {print $$2}')
+
+###########################################################################
+# Build rules
+
+$(MANFILE).gz: ../$(MANFILE)
+ gzip -c $< > $@
+
+install: default $(MANFILE).gz
+ # remove all old versions of the driver
+ find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET) -exec rm -f {} \; || true
+ find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET).gz -exec rm -f {} \; || true
+ install -D -m 644 $(TARGET) $(INSTALL_MOD_PATH)$(INSTDIR)/$(TARGET)
+ifeq (,$(INSTALL_MOD_PATH))
+ /sbin/depmod -a || true
+else
+ ifeq ($(DEPVER),1 )
+ /sbin/depmod -r $(INSTALL_MOD_PATH) -a || true
+ else
+ /sbin/depmod -b $(INSTALL_MOD_PATH) -a -n > /dev/null || true
+ endif
+endif
+ install -D -m 644 $(MANFILE).gz $(INSTALL_MOD_PATH)$(MANDIR)/man$(MANSECTION)/$(MANFILE).gz
+ man -c -P'cat > /dev/null' $(MANFILE:.$(MANSECTION)=) || true
+
+uninstall:
+ if [ -e $(INSTDIR)/$(TARGET) ] ; then \
+ rm -f $(INSTDIR)/$(TARGET) ; \
+ fi
+ /sbin/depmod -a
+ if [ -e $(MANDIR)/man$(MANSECTION)/$(MANFILE).gz ] ; then \
+ rm -f $(MANDIR)/man$(MANSECTION)/$(MANFILE).gz ; \
+ fi
+
+.PHONY: clean install
+
+clean:
+ rm -rf $(TARGET) $(TARGET:.ko=.o) $(TARGET:.ko=.mod.c) $(TARGET:.ko=.mod.o) $(CFILES:.c=.o) $(MANFILE).gz .*cmd .tmp_versions