# makefile for the Linux WLAN PRISM/AMD79C930 pcmcia driver

include ../config.mk

# -E outputs preprocessed 

ifndef CFLAGS
CFLAGS = -O2 -Wall -Wstrict-prototypes -Winline -fomit-frame-pointer -pipe
endif

WLAN_INCLUDE_DEBUG="-DWLAN_INCLUDE_DEBUG"
WLAN_INCLUDE_SNIF="-DWLAN_INCLUDE_SNIF"
#WLAN_INCLUDE_WEP="-DWLAN_INCLUDE_WEP"

# Module names
CS_MODULE=am930_cs.o
ISA_MODULE=am930_isa.o

# Construct our list of targets
MODULES=
ifneq "" "$(findstring $(MAKE_ISA), yY)"
MODULES+= am930_isa.o
endif
ifneq "" "$(findstring $(MAKE_CS), yY)"
MODULES+= am930_cs.o
endif

# Install dir
MODDIR = $(DESTDIR)$(MODULES_DIR)

# Object file dirs
ISA_OBJ_DIR=isa_obj
CS_OBJ_DIR=cs_obj

# Implicit rules to handle the separate obj dirs
$(ISA_OBJ_DIR)/%.o : ../p80211/%.c
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

$(ISA_OBJ_DIR)/%.o : %.c
	$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@

$(CS_OBJ_DIR)/%.o : ../p80211/%.c
	$(CC) -c $(CFLAGS) $(CPPFLAGS) -DWLAN_PCMCIA $< -o $@

$(CS_OBJ_DIR)/%.o : %.c
	$(CC) -c $(CFLAGS) $(CPPFLAGS) -DWLAN_PCMCIA $< -o $@

# Compiler flags
CPPFLAGS=-D__LINUX_WLAN__ -D__KERNEL__ -DMODULE=1 \
	-I../include -I$(LINUX_SRC)/include -I$(PCMCIA_SRC)/include \
	-I$(PCMCIA_SRC)/modules \
	$(WLAN_INCLUDE_DEBUG) $(WLAN_INCLUDE_SNIF)

# Source and obj definitions for ISA
ISA_SRC=am930mod.c \
		am930hw.c \
		am930hw_db.c \
		am930llc.c \
		am930mac.c \
		am930mgr.c \
		../p80211/p80211.c

ISA_OBJ=$(ISA_OBJ_DIR)/am930mod.o \
		$(ISA_OBJ_DIR)/am930hw.o \
		$(ISA_OBJ_DIR)/am930llc.o \
		$(ISA_OBJ_DIR)/am930mac.o \
		$(ISA_OBJ_DIR)/am930mgr.o \
		$(ISA_OBJ_DIR)/p80211.o

# Source and obj definitions for CS
CS_SRC=am930cs.c \
		am930di.c \
		am930hw.c \
		am930hw_db.c \
		am930llc.c \
		am930mac.c \
		am930mgr.c \
		../p80211/p80211.c

CS_OBJ=$(CS_OBJ_DIR)/am930cs.o \
		$(CS_OBJ_DIR)/am930di.o \
		$(CS_OBJ_DIR)/am930hw.o \
		$(CS_OBJ_DIR)/am930llc.o \
		$(CS_OBJ_DIR)/am930mac.o \
		$(CS_OBJ_DIR)/am930mgr.o \
		$(CS_OBJ_DIR)/p80211.o

# Construct our list of dependency sources
DEP_SRC=
ifneq "" "$(findstring $(MAKE_ISA), yY)"
DEP_SRC+= $(ISA_SRC)
endif
ifneq "" "$(findstring $(MAKE_CS), yY)"
DEP_SRC+= $(CS_SRC)
endif

all : .depend dirs $(MODULES)

dep .depend: $(DEP_SRC) ../config.mk
	$(CPP) -M $(CPPFLAGS) $(DEP_SRC) > .depend

dirs : 
ifneq "" "$(findstring $(MAKE_CS), yY)"
	mkdir -p $(CS_OBJ_DIR)
endif
ifneq "" "$(findstring $(MAKE_ISA), yY)"
	mkdir -p $(ISA_OBJ_DIR)
endif

$(CS_MODULE) :	$(CS_OBJ)
	$(LD) -r -o $@ $(CS_OBJ)
	chmod -x $@

$(ISA_MODULE) :	$(ISA_OBJ)
	$(LD) -r -o $@ $(ISA_OBJ)
	chmod -x $@

install : $(MODULES)
ifneq "" "$(findstring $(MAKE_CS), yY)"
	mkdir -p $(MODDIR)/pcmcia
	cp -p $(CS_MODULE)  $(MODDIR)/pcmcia
endif
ifneq "" "$(findstring $(MAKE_ISA), yY)"
	mkdir -p $(MODDIR)/net
	cp -p $(ISA_MODULE) $(MODDIR)/net
endif

clean: 
	rm -f core core.* *.o .*.o *.s *.a .depend tmp_make *~ tags
	rm -f ../p80211/*.o ../p80211.*.o ../p80211/*.s ../p80211*.a 
	rm -f ../p80211/.depend ../p80211/tmp_make ../p80211/*~
	rm -fr $(CS_OBJ_DIR) $(ISA_OBJ_DIR)
	
#
# Include a dependency file (if one exists)
#
ifeq (.depend,$(wildcard .depend))
include .depend
endif
