#
# Makefile to build and install all files for 3Com ADSL Modem USB
#

RPMBIN="rpmbuild"
ifeq ($(shell [ -f /etc/debian_version ] && echo "yes"), yes)
	DISTRO = "deb"
else
ifeq ($(shell [ -f /etc/mandrake-release ] && echo "yes"), yes)
	DISTRO = ""
else
ifeq ($(shell [ -f /etc/redhat-release ] && echo "yes"), yes)
	DISTRO = "rh"
else
ifeq ($(shell [ -f /etc/SuSE-release ] && echo "yes"), yes)
	DISTRO = "suse"
	RPMBIN = "rpm"
else
	DISTRO = ""
endif
endif
endif
endif

DEST_MACHINE = $(shell uname -m)
DEST_KERNEL = $(shell uname -r)
DEST_KERNEL_MAIN = $(shell uname -r | cut -d'.' -f1-2)
KERNEL_PATH = /lib/modules/$(DEST_KERNEL)/build
CONFIG_PATH = /usr/src/linux
CONFIG_NAME = .config
MODULE_PATH = /lib/modules/$(DEST_KERNEL)/kernel/drivers/usb
NAME = 3cp4218-$(shell date +%Y-%m-%d)
RPM_BIN_NAME = ${NAME}.k${DEST_KERNEL}${DISTRO}.${DEST_MACHINE}.rpm
TGZ_SRC_NAME = ${NAME}-src.tgz
ifeq ($(DEST_KERNEL_MAIN), 2.4)
MODULE_NORMAL = $(MODULE_PATH)/3cp4218.o
MODULE_DEBUG = $(MODULE_PATH)/3cp4218dbg.o
else
MODULE_NORMAL = $(MODULE_PATH)/3cp4218.ko
MODULE_DEBUG = $(MODULE_PATH)/3cp4218dbg.ko
endif
RPM_VERSION = $(shell date +%Y_%m_%d)_$(shell echo $(DEST_KERNEL) | tr "-" "_")
RPM_RELEASE = 1

all: clean compile_install

new: clean compile_install2

#install: LIBUSB 3COM_INIT 3COM_FIRMWARE 3COM_MODULE 3COM_SCRIPTS 3COM_PANEL 3COM_CONFIG BRIDGED
compile_install: 3COM_INIT 3COM_FIRMWARE 3COM_MODULE 3COM_SCRIPTS 3COM_PANEL 3COM_CONFIG BRIDGED

compile_install2: 3COM_INIT 3COM_FIRMWARE 3COM_MODULE2 3COM_SCRIPTS 3COM_CONFIG BRIDGED


#LIBUSB: libusb
#	cd libusb && ./configure && make && cp .libs/libusb-0.1.so.4.1.1 /usr/lib/ && ln -sf /usr/lib/libusb-0.1.so.4.1.1 /usr/lib/libusb-0.1.so.4 && ldconfig

3COM_INIT: init
	cd init && make && make install

3COM_FIRMWARE:
	cd firmware && make

3COM_MODULE: module
	cd module && make && make install

3COM_MODULE2: module2
	cd module2 && make && make install

3COM_SCRIPTS: scripts
	cd scripts && make

3COM_PANEL: panel
	cd panel && make && make install

3COM_CONFIG: config
	cd config && make && make install

BRIDGED: bridged
	cd bridged && make && make install

package: clean
	cd .. && tar -zcvf ${TGZ_SRC_NAME} 3cp4218

deb: clean compile_install
	mv -f /etc/3cp4218 /etc/3cp4218.config
	cp -pf scripts/config/3cp4218 /etc/3cp4218
	cd debian && ./create-pkg.sh ${DEST_MACHINE}
	mv -f /etc/3cp4218.config /etc/3cp4218

rpm: clean compile_install
	mv -f /etc/3cp4218 /etc/3cp4218.config
	cp -pf scripts/config/3cp4218 /etc/3cp4218
	${RPMBIN} -bb \
		--define "_rpmdir ${PWD}" \
		--define "_builddir ${PWD}" \
		--define "_arch ${DEST_MACHINE}" \
		--define "__check_files ''" \
		--define "_rpmfilename ${RPM_BIN_NAME}" \
		--define "module_normal ${MODULE_NORMAL}" \
		--define "module_debug ${MODULE_DEBUG}" \
		--define "version ${RPM_VERSION}" \
		--define "release ${RPM_RELEASE}" \
		3cp4218.spec
	mv ${RPM_BIN_NAME} ..
	mv -f /etc/3cp4218.config /etc/3cp4218

uninstall: config firmware init module module2 panel scripts bridged
	cd config && make uninstall
	cd firmware && make uninstall
	cd init && make uninstall
	cd module && make uninstall
	cd module2 && make uninstall
	cd panel && make uninstall
	cd scripts && make uninstall
	cd bridged && make uninstall

clean: config init module module2 panel sarlib bridged
	cd config && make clean
	cd init && make clean
	cd module && make clean
	cd module2 && make clean
	cd panel && make clean
	cd sarlib && make clean
	cd bridged && make clean

add_service: scripts/Makefile
	cd scripts && make add_service

remove_service: scripts/Makefile
	cd scripts && make remove_service

help:
	echo "Type:"
	echo "  make -> To compile driver for your system"
	echo "  make -e DEST_MACHINE=i586 -> To compile driver for i586 machine"
	echo "  make rpm -> To build a rpm package for your system (it will be created in previous directory)"
	echo "  make -e DEST_MACHINE=i586 rpm -> To build a rpm package for i586 machine"
	echo "  make deb -> To build a deb package for your system (it will be created in previous directory)"
	echo "  make package -> To build a tgz package (it will be created in previous directory)"
	echo "  make uninstall -> To remove installed files"
	echo "  make add_service -> To install driver as a service (you don't need type cxstart.sh)"
	echo "  make remove_service -> To remove driver service"

