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

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

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

CC:=gcc
CDEBUG:= -DPCMCIA_DEBUG=1
DEFS := -pipe -O3 -fomit-frame-pointer -fno-strict-aliasing

CFLAGS_$(CONFIG_MODVERSIONS):= -DMODULE -DMODVERSIONS -include $(KERNEL_SRC)/include/linux/modversions.h
CFLAGS := -DLINUX_OS -D__KERNEL__ $(DEFS) -I$(KERNEL_SRC)/include -I$(INC) -I$(INC)/pcmcia -Wall $(CFLAGS_y)
PCMCIAADDONFLAGS := -I$(KERNEL_SRC)/pcmcia/include
srcs := card.c command.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'
MODULE:=pcmf502.o
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_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 "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; done

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

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

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

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

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

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

 #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) -DRFMD -DINT_ROAM -DRX_CRC -DREV_D' RF:='0' DBG:='1' MODULE:='pcmf502rd.o' LIB:=-REVD- DEBUGORNO:=debug.o     


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

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


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

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

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


fastvnet_cs.o:fastvnet_cs.c $(INC)/pcmcia/vnet.h
	$(CC) $(CFLAGS) -DMODULE -c fastvnet_cs.c -o fastvnet_cs.o

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