#
# ======== 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.8.0_66/$(BUILD_HOST_OS)

ifeq (,$(XDCTOOLS_JAVA_HOME))
    override XDCTOOLS_JAVA_HOME := \
	$(TOOLS)/vendors/oracle/jdk/jdk1.8.0_66/$(BUILD_HOST_OS)/jre
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
