#
#----------------------------------------------------------------------
#   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.
#----------------------------------------------------------------------


help:
	@echo " -----------------------------------------------------------------";
	@echo "|                   UVMC LIBRARY COMPILATION                      |";
	@echo " -----------------------------------------------------------------";
	@echo "|                                                                 |";
	@echo "| The UVM and UVMC libraries must be compiled prior to running    |";
	@echo "| any example.                                                    |";
	@echo "|                                                                 |";
	@echo "| Questa users should not require building the UVM (or OVM)       |";
	@echo "| libraries, as they came precompiled and debug ready with        |";
	@echo "| the Questa distribution. Use the modelsim.ini to specifiy the   |";
	@echo "| UVM/OVM version you want to compile against.                    |";
	@echo "|                                                                 |";
	@echo "| Usage                                                           |";
	@echo "| =====                                                           |";
	@echo "|                                                                 |";
	@echo "|   make [variable=value] <target(s)>                             |";
	@echo "|                                                                 |";
	@echo "| Targets                                                         |";
	@echo "| =======                                                         |";
	@echo "|                                                                 |";
	@echo "| You can combine targets to build more than one library.         |";
	@echo "|                                                                 |";
	@echo "|   uvmc      makes both uvmc32 and uvmc64                        |";
	@echo "|   uvmc32    make UVM Connect (uvmc_pkg) 32b                     |";
	@echo "|   uvmc64    make UVM Connect (uvmc_pkg) 64b                     |";
	@echo "|                                                                 |";
	@echo "|   ovmc      makes both ovmc32 and ovmc64                        |";
	@echo "|   ovmc32    make UVM Connect for OVM (ovmc_pkg) 32b             |";
	@echo "|   ovmc64    make UVM Connect for OVM (ovmc_pkg) 64b             |";
	@echo "|                                                                 |";
	@echo "|                                                                 |";
	@echo "| To build a custom UVM/OVM, override the built-in library        |";
	@echo "| distributed with Questa, specify one or more of the following   |";
	@echo "| targets *before* any of the uvmc/ovmc targets above. You        |";
	@echo "| must define UVM_HOME (or OVM_HOME) when using these targets.    |";
	@echo "|                                                                 |";
	@echo "|   uvm       makes both uvm32 and uvm64                          |";
	@echo "|   uvm32     make UVM lib (uvm_pkg) 32b (override built-in)      |";
	@echo "|   uvm64     make UVM lib (uvm_pkg) 64b (override built-in)      |";
	@echo "|                                                                 |";
	@echo "|                                                                 |";
	@echo "|   ovm       makes both ovm32 and ovm64                          |";
	@echo "|   ovm32     make OVM lib (ovm_pkg) 32b (override built-in)      |";
	@echo "|   ovm64     make OVM lib (ovm_pkg) 64b (override built-in)      |";
	@echo "|                                                                 |";
	@echo "| Recommended usage:                                              |";
	@echo "|                                                                 |";
	@echo "|   Build 32/64-bit libraries for UVM Connect, using built-in UVM |";
	@echo "|                                                                 |";
	@echo "|   > make uvmc                                                   |";
	@echo "|                                                                 |";
	@echo "| Alternate usage:                                                |";
	@echo "|                                                                 |";
	@echo "|   Build 32 bit libraries for both UVM and UVM Connect           |";
	@echo "|                                                                 |";
	@echo "|   > make uvm32 uvmc32 UVM_HOME=<path-to-UVM-source>             |";
	@echo "|                                                                 |";
	@echo "|                                                                 |";
	@echo "| Variables                                                       |";
	@echo "| =========                                                       |";
	@echo "|                                                                 |";
	@echo "| The following variables can be set as environment variables,    |";
	@echo "| e.g. setenv UVM_HOME <path-to-UVM>, or provided on the make     |";
	@echo "| command line, e.g. BITS=64.                                     |";
	@echo "|                                                                 |";
	@echo "| UVM_HOME / OVM_HOME                                             |";
	@echo "|                                                                 |";
	@echo "|   Location of the UVM / OVM source. Required when not using the |";
	@echo "|   debug-enabled UVM or OVM library that ships with Questa.      |";
	@echo "|   It is recommended that you use the built-in libraries and thus|";
	@echo "|   leave UVM_HOME and OVM_HOME undefined, even as an env variable|";
	@echo "|   Make sure Questa choses UVM 1.1a or OVM 2.1.1 or greater.     |";
	@echo "|   You can select which built-in library via your modelsim.ini.  |";
	@echo "|                                                                 |";
	@echo "|   *** MAKE SURE you use the same UVM/OVM version for compiling  |";
	@echo "|       user code as was used for compiling UVM Connect.          |";
	@echo "|                                                                 |";
	@echo "| UVMC_HOME                                                       |";
	@echo "|                                                                 |";
	@echo "|   The location of the UVM Connect source. If not                |";
	@echo "|   specified, the parent of this lib directory (..) is chosen.   |";
	@echo "|   Unless you are compiling outside the UVMC installation tree,  |";
	@echo "|   you will not need to set this variable.                       |";
	@echo "|                                                                 |";
	@echo "| UVMC_LIB / UVM_LIB                                              |";
	@echo "| OVMC_LIB / OVM_LIB                                              |";
	@echo "|                                                                 |";
	@echo "|   You can override the default work directory into which library|";
	@echo "|   object files are placed by specifying any of these variables  |";
	@echo "|   via an environment variable setting or make command line      |";
	@echo "|   options. Make command line options take precedence.           |";
	@echo "|                                                                 |";
	@echo "| Other options:                                                  |";
	@echo "|                                                                 |";
	@echo "|   clean : Remove all library directories                        |";
	@echo "|   help  : Print this help information                           |";
	@echo "|                                                                 |";
	@echo "|                                                                 |";
	@echo " -----------------------------------------------------------------";


UVMC_HOME ?= ..

UVM_LIB  ?= $(UVMC_HOME)/lib/uvmc_lib
UVMC_LIB ?= $(UVMC_HOME)/lib/uvmc_lib
OVM_LIB  ?= $(UVMC_HOME)/lib/ovmc_lib
OVMC_LIB ?= $(UVMC_HOME)/lib/ovmc_lib

BITS = 32

#---------------------#
# COMBINATION TARGETS #
#---------------------#

uvmc: clean_uvmc uvmc32 uvmc64

ovmc: clean_ovmc ovmc32 ovmc64

uvm: clean_uvm uvm32 uvm64

ovm: clean_ovm ovm32 ovm64

clean: clean_uvm clean_uvmc clean_ovm clean_ovmc


#------#
# UVMC #
#------#

uvmc_pkg: 
	vlib $(UVMC_LIB)
	vlog  -$(BITS) \
              -work $(UVMC_LIB) \
              +incdir+$(UVM_HOME)/src \
              +incdir+$(UVMC_HOME)/src/connect/sv \
              -L $(UVM_LIB) \
              $(UVMC_HOME)/src/connect/sv/uvmc_pkg.sv
	sccom -$(BITS) \
              -work $(UVMC_LIB) \
              -Wall \
              -g \
              -I$(UVMC_HOME)/src/connect/sc \
              $(UVMC_HOME)/src/connect/sc/uvmc.cpp
	sccom -$(BITS) \
              -work $(UVMC_LIB) \
              -g \
              -I$(UVMC_HOME)/src/connect/sc \
              -lib $(UVMC_LIB) \
              -DSC_INCLUDE_DYNAMIC_PROCESSES \
              -linkshared

uvmc32:
	$(MAKE) -f Makefile.questa BITS=32 uvmc_pkg

uvmc64:
	$(MAKE) -f Makefile.questa BITS=64 uvmc_pkg

clean_uvmc:
	@if [ -d $(UVMC_LIB)/uvmc_pkg ];  then \
           rm -rf $(UVMC_LIB);  \
	fi


#------#
# OVMC #
#------#

ovmc_pkg: 
	vlib $(OVMC_LIB)
	vlog  -$(BITS) \
              -work $(OVMC_LIB) \
              +define+OVMC \
              +incdir+$(OVM_HOME)/src \
              +incdir+$(UVMC_HOME)/src/connect/sv \
              -L $(OVM_LIB) \
              $(UVMC_HOME)/src/connect/sv/ovmc_pkg.sv
	sccom -$(BITS) \
              -work $(OVMC_LIB) \
              -Wall \
              -g \
              -I$(UVMC_HOME)/src/connect/sc \
              $(UVMC_HOME)/src/connect/sc/uvmc.cpp
	sccom -$(BITS) \
              -work $(OVMC_LIB) \
              -g \
              -I$(UVMC_HOME)/src/connect/sc \
              -lib $(OVMC_LIB) \
              -DSC_INCLUDE_DYNAMIC_PROCESSES \
              -linkshared

ovmc32:
	$(MAKE) -f Makefile.questa BITS=32 ovmc_pkg

ovmc64:
	$(MAKE) -f Makefile.questa BITS=64 ovmc_pkg

clean_ovmc:
	@if [ -d $(OVMC_LIB)/ovmc_pkg ];  then \
           rm -rf $(OVMC_LIB);  \
	fi




# NOTE: Questa users should use the built-in libraries that
#       ship with Questa. These libraries provide extra debug
#       features not present in the Accella open-source library.
#       To use the built-in libraries, do not specify the 'uvm'
#       or 'ovm' targets when making 'uvmc' or 'ovmc'.

#-----#
# UVM #
#-----#

uvm_pkg: check_uvm_home
	vlib $(UVM_LIB)
	vlog  -$(BITS) \
              -work $(UVM_LIB) \
              +incdir+$(UVM_HOME)/src \
              $(UVM_HOME)/src/uvm_pkg.sv \
              $(UVM_HOME)/src/dpi/uvm_dpi.cc

uvm32:
	$(MAKE) -f Makefile.questa BITS=32 uvm_pkg

uvm64:
	$(MAKE) -f Makefile.questa BITS=64 uvm_pkg

clean_uvm:
	@if [ -d $(UVM_LIB)/uvm_pkg ];  then \
           rm -rf $(UVM_LIB); \
	fi

check_uvm_home:
ifndef UVM_HOME
	@echo ""
	@echo "*** "
	@echo "*** ERROR: Must define UVM_HOME to build UVM library ***"
	@echo "*** "
	@echo ""
	exit 1
endif

	
#-----#
# OVM #
#-----#

ovm_pkg: check_ovm_home
	vlib $(OVM_LIB)
	vlog  -$(BITS) \
              -work $(OVM_LIB) \
              +incdir+$(OVM_HOME)/src \
              $(OVM_HOME)/src/ovm_pkg.sv

ovm32:
	$(MAKE) -f Makefile.questa BITS=32 ovm_pkg

ovm64:
	$(MAKE) -f Makefile.questa BITS=64 ovm_pkg

clean_ovm:
	@if [ -d $(OVM_LIB)/ovm_pkg ];  then \
           rm -rf $(OVM_LIB);  \
	fi

check_ovm_home:
ifndef OVM_HOME
	@echo ""
	@echo "*** "
	@echo "*** ERROR: Must define OVM_HOME to build OVM library ***"
	@echo "*** "
	@echo ""
	exit 1
endif

