#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
# Copyright (c) 1999 - 2000, Intel Corporation 
#
# 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.
#
# 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. Neither the name of Intel Corporation nor the names of its contributors 
#    may be used to endorse or promote products derived from this software 
#    without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 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 OUT OF THE USE OF THIS SOFTWARE,
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
#
#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------

#   /***************************************************************************
#   **                                                                        **
#   ** INTEL CORPORATION                                                      **
#   **                                                                        **
#   ** This software is supplied under the terms of the license included      **
#   ** above.  All use of this software must be in accordance with the terms  **
#   ** of that license.                                                       **
#   **                                                                        **
#   **  Abstract:                                                             **
#   **    Makefile for the Advanced Networking Services (ANS) module.         **
#   **                                                                        **
#   **  Environment:                                                          **
#   **    Kernel Mode (linux 2.2.x)                                           **
#   **                                                                        **
#   ***************************************************************************/



# MUST point to the correct files
CONFIG_FILE = /usr/include/linux/config.h
VERSION_FILE = /usr/include/linux/version.h

# Adjust the following paths to match the appropriate directories
KERNEL_VERSION = $(shell gcc -E -dM $(VERSION_FILE) | grep UTS | awk '{ print $$3; }' | sed -e 's/\"//g')
MODULES_DIR = /lib/modules/$(KERNEL_VERSION)/net/
BIN_DIR = /usr/sbin/
LIB_DIR = /usr/lib/
INC_DIR = /usr/include/ians/

DEFAULT_SMP = 0
ifndef SMP
SMP = $(shell test -e $(CONFIG_FILE) || echo -n $(DEFAULT_SMP))
ifneq ($(SMP), $(DEFAULT_SMP))
SMP = $(shell gcc -E -dM $(CONFIG_FILE) | grep CONFIG_SMP | awk '{ print $$3; }')
ifneq ($(SMP), 1)
SMP = 0
endif
endif
endif

DEFAULT_MODVER = 1
ifndef MODVERSIONS
MODVERSIONS = $(shell test -e $(CONFIG_FILE) || echo -n $(DEFAULT_MODVER))
ifneq ($(MODVERSIONS), $(DEFAULT_MODVER))
MODVERSIONS = $(shell gcc -E -dM $(CONFIG_FILE) | grep CONFIG_MODVERSIONS | awk '{ print $$3 }')
ifneq ($(MODVERSIONS), 1)
MODVERSIONS = 0
endif
endif
endif

MODE = 1
NODEBUG = 1

MAKEFLAGS += -s   #make it silent

TARGET = bin/ians.o

all: $(TARGET) 

$(TARGET): src/bin/ians_os.o
	ld -r $^ bin/ians_core.o -o bin/ians.o
	@echo module build for kernel $(KERNEL_VERSION)

src/bin/ians_os.o:  	 
	cd src && (make MODE=$(MODE) SMP=$(SMP) NODEBUG=$(NODEBUG) MODVERSIONS=$(MODVERSIONS))

depend:
	cd src && (make depend MODE=$(MODE) MODVERSIONS=$(MODVERSIONS) SMP=$(SMP))

clean:
	find . -name \*~ -exec rm -f {} \;
	cd src && (make clean)

veryclean: clean
	rm -f $(TARGET)
	cd src && (make veryclean)

install:	all
	mkdir -p $(INC_DIR)
	/usr/bin/install -b inc/cfg.h		$(INC_DIR)
	/usr/bin/install -b inc/pubDefs.h	$(INC_DIR)
	/usr/bin/install -b inc/status.h	$(INC_DIR)
	/usr/bin/install -b bin/ianscfg		$(BIN_DIR)
	/usr/bin/install -b bin/libiansapi.a	$(LIB_DIR)
	/usr/bin/install -b bin/libiansapi.so	$(LIB_DIR)
	/usr/bin/install -b bin/ians.o		$(MODULES_DIR)

	/sbin/depmod -a $(KERNEL_VERSION)
	/sbin/ldconfig

uninstall:
	/bin/rm -f $(INC_DIR)*
	/bin/rm -f $(BIN_DIR)ianscfg
	/bin/rm -f $(LIB_DIR)libiansapi.a
	/bin/rm -f $(LIB_DIR)libiansapi.so
	/bin/rm -f $(MODULES_DIR)ians.o
	rmdir $(INC_DIR)

	/sbin/depmod -a $(KERNEL_VERSION)
	/sbin/ldconfig


options:
	@echo "SMP=[0/1]         compile with smp disabled/enabled"
	@echo "MODVERSIONS=[0/1] compile with modeversions disabled/enabled"
	@echo "Default values are taken from the kernel headers"
