#
# ======== TOOLS ========
#
#  This file defines macros that are used to locate the various
#  tools used for Iliad builds.  The following macros may be defined:
#
#
#    JDK	- location of a Java Developer's Kit. The JDK is used to
#		  build packages that contain Java code.
#
#    CLASSPATH	- the classpath used when running the Iliad tools.  The 
#		  default is "<dir>/iliad.jar;<dir>/antlr.jar;<dir>/js.jar",
#		  where <dir> is the directory containing iliad.jar.
#

#
#  The definitions below are for UNIX or PC builds within the xdc tree.
#

TOOLS := $(subst \,/,$(TOOLS))
JDK   := $(TOOLS)/vendors/oracle/jdk/jdk1.7.0_25-64/$(BUILD_HOST_OS)

ifeq (,$(XDCTOOLS_JAVA_HOME))
    override XDCTOOLS_JAVA_HOME := \
        $(TOOLS)/vendors/oracle/jre/1.7.0_80/$(BUILD_HOST_OS)
endif
export XDCTOOLS_JAVA_HOME

IMPORTS := $(XDCROOT)/../imports

# -p $(XDCROOT)/packages is added because utils.findFile cannot find files
# in xdc packages using other path components
ifeq (Windows,$(HOSTOS))
    XDCUSEPATHFORUTILS := true
    _X := exe
    TAR   := $(IMPORTS)/xdc/cygwin/tar.exe
else ifeq (Linux,$(HOSTOS))
    _X := x86_64U
    TAR   := $(XDCROOT)/../bin/tar.x$(_M)
else
    _X := x$(_M)
    TAR   := $(XDCROOT)/../bin/tar.$(_X)
endif

ZIP	:= $(IMPORTS)/xdc/utils/zip/$(HOSTOS)/zip
UNZIP	:= $(IMPORTS)/xdc/utils/zip/$(HOSTOS)/unzip

_B := $(XDCROOT)/packages/xdc/services/host/bin

CMV      := $(_B)/cmv.$(_X)
CMP      := $(_B)/cmp.$(_X)
TEE      := $(_B)/tee.$(_X)
SAVENV   := $(_B)/xdcenv.$(_X)
PKGTOP   := $(_B)/xdcdir.$(_X) -t
SETDATE  := $(_B)/setdate.$(_X)
FIXDEP   := $(_B)/fixdep.$(_X)
FIXLIST  := $(_B)/fixlist.$(_X)
MKDEP    := $(_B)/mkdep.$(_X)
FINDPKGS := $(_B)/xdcpkg.$(_X)
GDBRUN   := $(_B)/gdbrun.$(_X)
XDCCPP   := $(_B)/xdccpp.$(_X)

XDC	 := $(XDCROOT)/packages/xdc/bld/bin/xdc.$(_X)
XS	 := $(XDCROOT)/packages/xdc/xs/xs.$(_X) -p $(JDK) \
                -p $(XDCROOT)/packages/xdc/shelf/java -p $(XDCROOT)/packages
