#
# Makefile for hpt374 Linux driver
# Copyright (c)  2000-2003 HighPoint Technologies, Inc. All rights reserved
# History:       Jan 12, 2001 initial code
#                May 18, 2003 OpenSource build		
#

#
# RR154X=1 for SATA controller, 0 for HPT374 PATA controller
#
RR154X ?= 1
CROSS_CTRL ?= 1

#
# change KERNELDIR according to your system
#
KERNELDIR ?= /usr/src/linux

DRIVER_VERSION = 2.17

#
# Debug Options:
#
#   -DDEBUG: include debug code
#   -DDEBUG_LEVEL=x:
#       0 - No debug output message
#       1 - print only error messages
#       2 - print error and warning
#       3 - print all messages (info, warning, error)
#
ifeq ($(DEBUG),1)
DEBUGOPT += -DDBG=1
ifdef DEBUG_LEVEL
DEBUGOPT += -DDEBUG_LEVEL=$(DEBUG_LEVEL)
else
DEBUGOPT += -DDEBUG_LEVEL=1
endif
else
DEBUGOPT += -DDBG=0
endif

KERNEL_VER := 2.$(shell expr `grep LINUX_VERSION_CODE $(KERNELDIR)/include/linux/version.h | cut -d\  -f3` / 256 % 256)

ARCH := $(shell uname -m)

ifndef NON_RAID
ifeq ($(ARCH), x86_64)
RAID_O = raid-x86_64.o
else
RAID_O = raid.o
endif
else
RAID_O =
endif

ifeq ($(KERNEL_VER), 2.6)

obj-m := hpt374.o

ifndef NON_RAID
hpt374-objs := hpt.o raid.obj
else
hpt374-objs := hpt.o
endif

EXTRA_CFLAGS := -DDRIVER_VERSION=\"${DRIVER_VERSION}\" -DLIST_H_INCLUDED -DLINUX -D_LINUX_ -Idrivers/scsi $(DEBUGOPT)

ifeq ($(RR154X), 1)
EXTRA_CFLAGS += -DRR154X
endif

ifeq ($(CROSS_CTRL),1)
EXTRA_CFLAGS += -DNO_CROSS_CTRL=0
else
EXTRA_CFLAGS += -DNO_CROSS_CTRL=1
endif

ifndef NON_RAID
EXTRA_CFLAGS += -DSUPPORT_ARRAY -DSUPPORT_OLD_ARRAY
endif

default:
ifndef NON_RAID
	cp -f $(RAID_O) raid.obj
endif
	$(MAKE) -C $(KERNELDIR) SUBDIRS=`pwd` modules

clean:
	@rm -f hpt374.* raid.obj *~ core hpt.o

else

TARGET = hpt374.o

HEADERS = global.h  \
		  vdevice.h \
		  stypes.h \
		  hptintf.h \
		  hpt3xx.h \
		  atapi.h \
		  device.h \
		  channel.h \
		  chip.h \
		  command.h \
		  compiler.h \
		  osheader.h \
		  oslinux.h 
		
CSRCS = hpt.c

C_DEFINES = -DDRIVER_VERSION=\"${DRIVER_VERSION}\" -DLIST_H_INCLUDED \
		-DMODVERSIONS -DMODULE -DLINUX -D_LINUX_ -D__KERNEL__=1 -DCONFIG_PCI

ifeq ($(RR154X), 1)
C_DEFINES += -DRR154X
endif

ifeq ($(CROSS_CTRL),1)
C_DEFINES += -DNO_CROSS_CTRL=0
else
C_DEFINES += -DNO_CROSS_CTRL=1
endif

COBJS = $(CSRCS:.c=.o)

ifndef NON_RAID
HEADERS += array.h arraydat.h raid5n.h
C_DEFINES += -DSUPPORT_ARRAY -DSUPPORT_OLD_ARRAY
endif

CC = gcc

CFLAGS = ${C_DEFINES} ${DEBUGOPT} -Wall \
		-O2 -Wstrict-prototypes -fomit-frame-pointer \
		-I. \
		-I$(KERNELDIR)/include \
		-I$(KERNELDIR)/drivers/scsi

#
# cross-compiler prefix
# to build x86_64 driver use
#   make ARCH=x86_64 CROSS_COMPILE=x86_64-linux- KERNELDIR=...
#
CROSS_COMPILE =

ifeq ($(ARCH), x86_64)
CFLAGS += -mcmodel=kernel -mno-red-zone
endif

.c.o:
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -c $*.c -o $*.o

all: $(TARGET)

$(COBJS): Makefile $(HEADERS) $(CSRCS)

$(TARGET): hpt.o $(RAID_O)
	$(CROSS_COMPILE)$(LD) -r $^ -o $@

clean:
	@rm -f $(CSRCS:.c=.o) $(TARGET) *~ core

endif
