#--------------------------------------------------------------------------------
#--------------------------------------------------------------------------------
# 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 open portion of 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

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

NODEBUG = 1

IANS_OS_OBJ  =  ians_base.o ians_kernel.o   

LIB_OBJ      =	lib/incg_message.o lib/incg_gp_mem.o \
		lib/incg_log.o lib/incg_flow.o  lib/incg_timer.o \
		lib/incg_utils.o lib/incg_pci.o

CC = gcc
OPTIMIZE = -O3
MAKEFLAGS += -s                            # make it silent
TEAMING_DEFS = -DIANS_ADAPTER_TEAMING  -DIANS_BASE_ADAPTER_TEAMING
LINK_OBJ=$(IANS_OS_OBJ) $(LIB_OBJ)
SOURCES=$(LINK_OBJ:.o=.c)
TARGET = bin/ians_os.o
INCLUDES = -I.   -Ilib  -I../inc -I/usr/include
DEFINES =  -D__KERNEL__ -DMODULE  -DINPD_LINUX

DEFINES+=$(TEAMING_DEFS)

ifneq ($(NODEBUG),1)
DEFINES += -DDEBUG 
endif

MODE_CONFIG = "module built"
ifeq ($(SMP),1)
DEFINES+=-D__SMP__ -DCONFIG_SMP
MODE_CONFIG+="for SMP kernel"
else
MODE_CONFIG+="for UP kernel"
endif

ifeq ($(MODVERSIONS),1)
DEFINES+=-DMODVERSIONS
MODE_CONFIG+="with modversions ENABLED."
else
MODE_CONFIG+="with modversions DISABLED."
endif

SMP_STATUS = $(findstring SMP, $(shell uname -v))

ifeq ($(SMP_STATUS), SMP) 
MAKEFLAGS+=-j

endif

CFLAGS= -fomit-frame-pointer -Wall  -Wstrict-prototypes $(OPTIMIZE) $(DEFINES) $(INCLUDES) -Winline

all: $(TARGET)

$(TARGET): pre_ians_os.o lib/lib.o
	ld -r $^ -o $@
	@echo $(MODE_CONFIG)


pre_ians_os.o: $(IANS_OS_OBJ)
	ld -r  $^ -o $@

lib/lib.o: $(LIB_OBJ)
	ld -r $^ -o $@

%.o: %.c
	@echo "Compiling $< ..."
	$(CC) $(CFLAGS) -c $< -o $@

depend:
	makedepend -f .depend -- $(CFLAGS) -- $(SOURCES)

clean:
	find . -name \*.o -exec rm -f {} \;
	find . -name \*~ -exec rm -f {} \;

veryclean: clean
	echo -n > .depend
	@echo "you should run make depend"

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"

include .depend
