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

#
# RR1520=1 for SATA controller, 0 for HPT37x2 PATA controller
#
ifndef RR1520
RR1520 = 0
endif

#
# change KERNELDIR according to your system
#
ifndef KERNELDIR
KERNELDIR = /lib/modules/$(shell uname -r)/build
endif

DRIVER_VERSION = 2.1.060607

#
# 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 := $(shell cat $(KERNELDIR)/include/linux/version.h | grep UTS_RELEASE | cut -c22-24 | head -n 1)

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 := hpt37x2.o

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

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

ifeq ($(RR1520), 1)
EXTRA_CFLAGS += -DRR1520 -DHPT3XX_SATA_RESET
endif

ifndef NON_RAID
EXTRA_CFLAGS += -DSUPPORT_ARRAY
endif

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

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

else

TARGET = hpt37x2.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 ($(RR1520), 1)
C_DEFINES += -DRR1520 -DHPT3XX_SATA_RESET
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 
C_DEFINES += -DSUPPORT_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
