#
#----------------------------------------------------------------------
#   Copyright 2009-2012 Mentor Graphics Corporation
#   All Rights Reserved Worldwide
#
#   Licensed under the Apache License, Version 2.0 (the
#  "License"); you may not use this file except in
#   compliance with the License.  You may obtain a copy of
#   the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in
#   writing, software distributed under the License is
#   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
#   CONDITIONS OF ANY KIND, either express or implied.  See
#   the License for the specific language governing
#   permissions and limitations under the License.
#----------------------------------------------------------------------


UVMC_HOME ?= ..
#UVMC_LIB ?= $(UVMC_HOME)/lib/uvmc_lib
#UVM_LIB  ?= $(UVMC_HOME)/lib/uvmc_lib
#UVMC_LIB ?= uvmc_lib
#UVM_LIB  ?= uvmc_lib
UVMC_LIB ?= INCA_libs
UVM_LIB  ?= INCA_libs


BITS ?= 

all: check_uvm_home clean lib32 lib64

check_uvm_home:
ifndef UVM_HOME
	@echo "ERROR: UVM_HOME environment variable is not defined"
	UVM_HOME	
endif
	
lib32:
	$(MAKE) -f Makefile.ius lib

lib64:
	$(MAKE) -f Makefile.ius BITS=-64bit lib


	   #-L $(UVM_LIB) \

IUS =   irun \
	  -access rw \
	  $(BITS) \
	  -uvmhome $(UVM_HOME) \
	  -incdir $(UVM_HOME)/src \
	  -incdir $(UVMC_HOME)/src/connect/sv \
	  $(UVMC_HOME)/src/connect/sv/uvmc_pkg.sv \
	  $(UVM_HOME)/src/dpi/uvm_dpi.cc \
	  -cflags "-g -I/spiratech/external/IUS/11.10.001/tools/include -I$(UVMC_HOME)/src/connect/sc" \
	   $(UVMC_HOME)/src/connect/sc/uvmc.cpp \
          +UVM_VERBOSITY=$(UVM_VERBOSITY) 

lib: uvmc_sv uvmc_sc 
	#-vlib $(UVMC_LIB);
	#-vlib $(UVM_LIB);
	#irun \
	#   -elaborate  \
	#   $(BITS) \
	#   -work $(UVM_LIB) \
	#   -incdir $(UVM_HOME)/src \
	#   $(UVM_HOME)/src/uvm_pkg.sv \
	#   $(UVM_HOME)/src/dpi/uvm_dpi.cc; 

uvmc_sv:
	irun  \
	   -elaborate \
	   $(BITS) \
	   -uvmhome $(UVM_HOME) \
	   -incdir $(UVM_HOME)/src \
	   -incdir $(UVMC_HOME)/src/connect/sv \
	   $(UVMC_HOME)/src/connect/sv/uvmc_pkg.sv

uvmc_sc:
	ncsc \
	   $(BITS) \
	   -cflags "-g -I/spiratech/external/IUS/11.10.001/tools/include -I$(UVMC_HOME)/src/connect/sc" \
	   $(UVMC_HOME)/src/connect/sc/uvmc.cpp

uvmc_link:
	ncsc \
	   $(BITS) \
	   -cflags "-g -I$(UVMC_HOME)/src/connect/sc -DSC_INCLUDE_DYNAMIC_PROCESSES" \
	   -linkshared;

clean:
	-rm -rf $(UVM_LIB)/_* $(UVM_LIB)/uvm*pkg
	-rm -rf $(UVMC_LIB)/_* $(UVMC_LIB)/uvm*pkg


