#
# Quantis PCI/PCIe driver
#
# Copyright (c) 2004-2010 id Quantique SA, Carouge/Geneva, Switzerland
# All rights reserved.
#
# ----------------------------------------------------------------------------
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions, and the following disclaimer,
#    without modification.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY.
#
# ----------------------------------------------------------------------------
#
# Alternatively, this software may be distributed under the terms of the
# terms of the GNU General Public License version 2 as published by the
# Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
#
# ----------------------------------------------------------------------------
#
# For history of changes, ChangeLog.txt

#Shell command to get the operating system name
KERNEL_NAME_CMD = uname -s | tr [A-Z] [a-z] | sed -e 's/sunos/solaris/'
#Shell command to get the operating system version
KERNEL_VERSION_CMD = uname -r

### default target ###
all: modules

#":" is a shell command doing nothing. Seems to be mandatory on Linux to
#make the first assignation to OSName.
check_supported_os:
	@:;OSName=`$(KERNEL_NAME_CMD)`;OSVer=`$(KERNEL_VERSION_CMD)` ; \
            case "$$OSName$$OSVer" in                           \
	    freebsd*)                                         \
	    echo "Found FreeBSD compatible platform!" ;              \
	    ;;                                                 \
	    linux*)                                           \
	    echo "Found GNU/Linux compatible platform"         \
	    ;;                                                 \
	    "solaris5.10")                                         \
	    echo "Found Solaris compatible platform" ;          \
	    ;;                                                 \
	    "solaris5.11")                                         \
	    echo "Found Solaris compatible platform" ;          \
	    ;;                                                 \
	    *)                                               \
	     echo "$$OSName (Version $$OSVer) is not a supported platform!" ;  \
	     false                                             \
	    ;;                                                 \
	 esac                                                  \

### Build modules ###
modules: check_supported_os
	@cd `$(KERNEL_NAME_CMD)` ;                              \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` modules

### Install modules in system directories ###
install: modules
	@cd `$(KERNEL_NAME_CMD)` ;                                 \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` install

modules_install: install

### Remove modules from system directories ###
uninstall: 
	@cd `$(KERNEL_NAME_CMD)` ;                                 \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` uninstall

### Load modules in the kernel ###
load: 
	@cd `$(KERNEL_NAME_CMD)` ;                                 \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` load

### Unload modules in the kernel ###
unload: 
	@cd `$(KERNEL_NAME_CMD)` ;                                 \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` unload

### Remove generates files ###
clean:
	@cd `$(KERNEL_NAME_CMD)` ;                         \
	$(MAKE) -f Makefile.`$(KERNEL_NAME_CMD)` clean
	@rm -f *~


### Display help ###
help:
	@echo ""
	@echo "  Builds quantis_pci module for a Unix system."
	@echo "  Currently supported systems: Linux 2.6, FreeBSD 7 and 8, Solaris/OpenSolaris 5.10 and 5.11."
	@echo "    modules         - build the module."
	@echo "    install         - copy the module's files in the correct system directories."
	@echo "    modules_install - same as 'install'."
	@echo "    uninstall       - remove the module's files from the system directories."
	@echo "    load            - load the module in the kernel."
	@echo "    unload          - unload the module in the kernel."
	@echo "    clean           - remove generated files"
	@echo ""

