#
# Makefile for nsp_cs & nsp32
#

# $Id: Makefile,v 1.13 2003/03/05 07:32:21 elca Exp $

NSP_VERSION=$(shell date +%Y%m%d)#
PROJECT=nsp_cs+nsp32-$(NSP_VERSION)

TOPDIR   = /usr/src/linux
CC       = gcc
comma   := ,

KERNEL_SUBVERSION = $(shell grep "^PATCHLEVEL = " $(TOPDIR)/Makefile | awk '{print $$3}')
PWD=$(shell pwd)#

ifeq ($(KERNEL_SUBVERSION),4)
  MODVERSION = -include $(TOPDIR)/include/linux/modversions.h
endif

ifeq ($(KERNEL_SUBVERSION),5)
  MODVERSION = -I$(TOPDIR)/include/asm-i386/mach-default
  include $(TOPDIR)/.__modpost.cmd
endif

# Select your CPU type
# ARCH_DEF = -march=i386   # i386
# ARCH_DEF = -march=i486   # i486
# ARCH_DEF = -march=i586   # pentium / pentium MMX
ARCH_DEF = -march=i686     # pentium 2 / pentium 3 / pentium 4
# ARCH_DEF = -march=k6     # K6
# ARCH_DEF = -march=athlon # Athlon
# ARCH_DEF = -march=$(shell uname --machine)

CFLAGS = -nostdinc -D__KERNEL__ \
	-I$(TOPDIR)/include -I$(TOPDIR)/drivers/scsi \
	-Wall -Wstrict-prototypes -Wno-trigraphs \
	-O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe \
	-mpreferred-stack-boundary=2 -iwithprefix include \
	$(ARCH_DEF) \
	-DMODULE -DMODVERSIONS \
	-DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) \
	-DKBUILD_MODNAME=$(subst $(comma),_,$(subst -,_,$(*F))) \
	$(MODVERSION)
KERNEL  = $(TOPDIR)/vmlinux

GENERATED = nsp_cs.o nsp_cs.mod.c nep_cs.mod.o nsp_cs.ko \
	    nsp32.o  nsp32.mod.c  nsp32.mod.o  nsp32.ko

.PHONY: clean dist all

ifeq ($(KERNEL_SUBVERSION),5)
all: nsp_cs.ko nsp32.ko
else
all: nsp_cs.o nsp32.o
endif

%.o: %.c
	$(CC) $(CFLAGS) -c $<

%.ko: %.o %.mod.o
	ld -m elf_i386 -r -o $@ $^

%.mod.c: %.o $(KERNEL)
	cd $(TOPDIR) ; $(cmd___modpost) $(PWD)/$<


$(KERNEL):
	@echo
	@echo "Compilation process requires kernel internal data files."
	@echo "You must re-compile your kernel to create these files."
	@echo
	@exit 1

nsp_cs.o: nsp_cs.c nsp_cs.h nsp_io.h nsp_message.c nsp_debug.c

nsp32.o: nsp32.c nsp32.h nsp32_io.h nsp32_debug.c

clean:
	rm -f $(GENERATED)

dist:
	rm -rf $(PROJECT)/
	mkdir $(PROJECT)
	cp ChangeLog README.nsp_cs README.nsp_cs.eng MAINTAINERS.nsp_cs Q_and_A.nsp_cs Q_and_A.nsp_cs.eng Makefile Configure.help.nsp_cs Configure.help.nsp_cs.eng COPYING $(PROJECT)/
	cp nsp_cs.c nsp_cs.h nsp_io.h nsp_debug.c nsp_message.c nsp_cs.conf nsp_cs.4 nsp_cs.4j $(PROJECT)/
	cp nsp32.c nsp32.h nsp32_io.h README.nsp32_cb README.nsp32_cb.eng nsp32_debug.c $(PROJECT)/
	tar cvf $(PROJECT).tar $(PROJECT)/
	gzip -9f $(PROJECT).tar

# end
