include $(TOPDIR)/.config
RES:=$(shell if [ -f .lastbuild ]; then echo 1; else echo 0; fi)

ifeq '$(RES)' '1'
include .lastbuild
endif

ARCH=$(shell uname -m)
VR:=$(shell uname -r)
ID:=$(shell id -u)
ifneq ($(VR),$(UNAME))
this:
#	@echo -ne "\\033[1;31m"
	@echo -ne "Running kernel doesn't match with the source"
#	@echo -ne "\\033[0;39m"
	@echo
endif

CC:=gcc
CDEBUG:= -DPCMCIA_DEBUG=1
DEFS :=  -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=$(ARCH) 
CFLAGS_$(CONFIG_MODVERSIONS):= -DMODULE -DMODVERSIONS -include $(KERNEL_SRC)/include/linux/modversions.h
CFLAGS := -DLINUX_OS -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -O2 $(DEFS) -I$(KERNEL_SRC)/include -I$(INC) -I$(INC)/pcmcia $(CFLAGS_y)
PCMCIAADDONFLAGS := -I$(PCMCIA_SRC)/include
srcs := card.c command.c common.c fastvnet_cs.c interrupt.c mgmt.c rx.c tx.c vnet.c vnetlinux.c 
pcisrcs := $(patsubst fastvnet_cs.c, fastvnet_cs.c ,$(srcs))
objs := $(srcs:.c=.o)
objs := $(patsubst fastvnet_cs.o, ,$(objs))
objs := $(patsubst debug.o, ,$(objs))

RF:='0'
DBG:='0'
LIB:=-
DEBUGORNO:=


PCMCIA-y:=

PCMCIA-$(CONFIG_PCMCIA_502) += inter$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_502A) += rfmd$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_3COM) += 3COM$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_502AD) += revd$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_502AE) += reve$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_504) += 504$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_504_2958) += 504_2958$(DEBUG)
PCMCIA-$(CONFIG_PCMCIA_504A_2958) += 504A_2958$(DEBUG)
PCMCIA-$(CONFIG_PCI_506) += pci$(DEBUG)


usage:
	@echo -ne "\\33[1;31m"
	@echo "Wrong usage. Usage is : make " 
	@echo "rfmd  (for RFMD free build),           rfmdD (for RFMD checked build)"
	@echo "3COM  (for 3COM free build),           3COMD (for 3COM checked build)"
	@echo "pci   (for PCI free build),            pciD  (for PCI checked build)"
	@echo "504   (for 504 PCMCIA free build),     504D  (for 504 PCMIA checked build)"
	@echo "504+2958   (for 504+2958 PCMCIA free build),     504+2958  (for 504+2958 PCMIA checked build)"
	@echo "504A+2958   (for 504A+2958 PCMCIA free build),     504A+2958  (for 504A+2958 PCMIA checked build)"
	@echo "revd  (for Revision D free build),     revdD  (for Revision D checked build)"
	@echo "reve  (for Revision E free build),     reveD  (for Revision E checked build)"
	@echo -ne "\\33[0;39m"
 
all:
	@echo PCMCIA yes : $(PCMCIA-y)
	@for i in $(PCMCIA-y); do make $$i || exit 1; done

final: $(objs) $(DEBUGORNO) fastvnet_cs.o
	ld -r -o $(OBJDIR)/$(MODULE).o fastvnet_cs.o $(DEBUGORNO) $(objs)
	nm $(OBJDIR)/$(MODULE).o |sort -u >$(OBJDIR)/$(patsubst %.o,%.map,$(MODULE).o); 

rfmdD:
ifneq '$(LB)' 'RD'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RD" >>" .lastbuild"
endif
	DEBUGORNO=debug.o
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DINT_ROAM $(CDEBUG)' MODULE:='pcmf502r' LIB:=-RFMD- DEBUGORNO:=debug.o 

rfmd:
ifneq '$(LB)' 'R'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=R" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DINT_ROAM ' MODULE:='pcmf502r' LIB:=-RFMD- 

3COMD:
ifneq '$(LB)' 'RD'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RD" >>" .lastbuild"
endif
	DEBUGORNO=debug.o
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD_3COM $(CDEBUG)' MODULE:='pcmf502r3' LIB:=-RFMD_3COM- DEBUGORNO:=debug.o

3COM:
ifneq '$(LB)' 'R'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=R" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD_3COM ' MODULE:='pcmf502r3' LIB:=-RFMD_3COM-

504D:
ifneq '$(LB)' '504D'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504D" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) $(CDEBUG) -DATMEL_WLAN -DRFMD -DR504' RF:='0' DBG:='1' MODULE:='pcmf504' LIB:=-504- DEBUGORNO:=debug.o

504:
ifneq '$(LB)' '504'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DR504' RF:='0' DBG:='0' MODULE:='pcmf504' LIB:=-504-

504_2958D:
ifneq '$(LB)' '504_2958D'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504_2958D" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) $(CDEBUG) -DATMEL_WLAN -DRFMD -DR504_2958' RF:='0' DBG:='1' MODULE:='pcmf504_2958' LIB:=-504_2958- DEBUGORNO:=debug.o

504_2958:
ifneq '$(LB)' '504_2958'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504_2958" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DR504_2958' RF:='0' DBG:='0' MODULE:='pcmf504_2958' LIB:=-504_2958-

504A_2958D:
ifneq '$(LB)' '504A_2958D'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504A_2958D" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) $(CDEBUG) -DATMEL_WLAN -DRFMD -DR504A_2958' RF:='0' DBG:='1' MODULE:='pcmf504A_2958' LIB:=-504A_2958- DEBUGORNO:=debug.o

504A_2958:
ifneq '$(LB)' '504A_2958'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=504A_2958" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DR504A_2958' RF:='0' DBG:='0' MODULE:='pcmf504A_2958' LIB:=-504A_2958-


 #revision D debug
revdD:
ifneq '$(LB)' 'RD-d'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RD-d" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) $(CDEBUG) -DATMEL_WLAN -DRFMD -DINT_ROAM -DREV_D' RF:='0' DBG:='1' MODULE:='pcmf502rd' LIB:=-REVD- DEBUGORNO:=debug.o



revd:
ifneq '$(LB)' 'RD'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RD" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DINT_ROAM -DREV_D' RF:='0' DBG:='0' MODULE:='pcmf502rd' LIB:=-REVD-

reveD:
ifneq '$(LB)' 'RE-d'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RE-d" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) $(CDEBUG) -DATMEL_WLAN -DRFMD -DINT_ROAM -DREV_E' RF:='0' DBG:='1' MODULE:='pcmf502re' LIB:=-REVE- DEBUGORNO:=debug.o 


reve:
ifneq '$(LB)' 'RE'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=RE" >>" .lastbuild"
endif
	make final CFLAGS:='$(PCMCIAADDONFLAGS) $(CFLAGS) -DATMEL_WLAN -DRFMD -DINT_ROAM -DREV_E' RF:='0' DBG:='0' MODULE:='pcmf502re' LIB:=-REVE- 

pci:
ifneq '$(LB)' 'PCI'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=PCI" >>" .lastbuild"
endif
	make CFLAGS:='$(CFLAGS) -DATMEL_WLAN -DPCI -DRFMD -DINT_ROAM' MODULE:='pcifvnet' final 

pciD:
ifneq '$(LB)' 'PCID'
	@rm -f ".lastbuild"
	make clean
	@echo "LB:=PCID" >>" .lastbuild"
endif
	make CFLAGS:='$(CFLAGS) -DATMEL_WLAN -DPCI -DRFMD -DINT_ROAM -DPCI_DEBUG' MODULE:='pcifvnet' DEBUGORNO:=debug.o final 


fastvnet_cs.o:fastvnet_cs.c $(INC)/pcmcia/vnet.h
ifeq	'$(NEW_KERN)' 'y' 
	$(CC) $(CFLAGS) $(NEWKERNFLAGS) $(KMODNAMEFLAG)$(MODULE) -DMODULE -c fastvnet_cs.c -o fastvnet_cs.o
else	
	$(CC) $(CFLAGS) -DMODULE -c fastvnet_cs.c -o fastvnet_cs.o
endif

clean:
	find . -name '*.o'|xargs rm -f
	find . -name '*.ko'|xargs rm -f
