#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
#     National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
#     Operator of Los Alamos National Laboratory.
# EPICS BASE is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************

#---------------------------------------------------------------
# EPICS Base directories

EPICS_BASE_HOST_BIN = $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH)
EPICS_BASE_HOST_LIB = $(EPICS_BASE)/lib/$(EPICS_HOST_ARCH)
ifdef T_A
  EPICS_BASE_LIB    = $(EPICS_BASE)/lib/$(T_A)
  EPICS_BASE_BIN    = $(EPICS_BASE)/bin/$(T_A)
endif

#---------------------------------------------------------------
# Version number for base shared libraries (and win32 products)

ifdef BASE_TOP
  # Unix lib.so.<v.r.m>  Darwin lib.<v.r.m>.dylib
  SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
  # Windows only allows 2 levels of version numbering
  PROD_VERSION = $(EPICS_VERSION).$(EPICS_REVISION)
endif # BASE_TOP

#---------------------------------------------------------------
# Where to find the installed build tools
#   Windows does not like commands with relative paths starting ../
#   so TOOLS must be an absolute path, although Perl scripts are OK.
#   FIND_TOOL is for scripts run before the build reaches src/tools
#   and must also work in submodules when EPICS_BASE is not built.

TOOLS = $(abspath $(EPICS_BASE_HOST_BIN))
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) \
    $(TOP)/src/tools/$(1)) $(EPICS_BASE)/src/tools/$(1))

#---------------------------------------------------------------
# Find Perl modules for dependencies
FIND_PM = $(wildcard $(EPICS_BASE)/lib/perl/$(1))

#---------------------------------------------------------------
# EPICS Base build tools and tool flags

PODTOHTML_pl     = $(TOOLS)/podToHtml.pl
PODTOHTML_dep    = $(PODTOHTML_pl) $(call FIND_PM,EPICS/PodHtml.pm)
PODTOHTML        = $(PERL) $(PODTOHTML_pl)
CONVERTRELEASE   = $(PERL) $(call FIND_TOOL,convertRelease.pl)
FULLPATHNAME     = $(PERL) $(TOOLS)/fullPathName.pl
GENVERSIONHEADER = $(PERL) $(TOOLS)/genVersionHeader.pl $(QUIET_FLAG) $(QUESTION_FLAG)

MAKERPATH = $(PYTHON) $(TOOLS)/makeRPath.py

#---------------------------------------------------------------
# tools for installing libraries and products
INSTALL = $(PERL) $(TOOLS)/installEpics.pl $(QUIET_FLAG)
INSTALL_PRODUCT = $(INSTALL)
INSTALL_LIBRARY = $(INSTALL)

#---------------------------------------------------------------
# tools for making header dependencies and variable replacement
MKMF       = $(PERL) $(TOOLS)/mkmf.pl
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl

#---------------------------------------------------------------
# tools for cleaning out unwanted files
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
DEPCLEAN = $(call FIND_TOOL,depclean.pl)

#---------------------------------------------------------------
# Tools for testing
TAPS_FAILED_LOG       = .taps-failed.log
TESTS_FAILED_LOG      = .tests-failed.log
TESTS_FAILED_PATH     = $(abspath $(TOP)/$(TESTS_FAILED_LOG))

TAPTOJUNIT            = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
PROVE                 = $(PERL) $(TOOLS)/epicsProve.pl --failures --color
PROVE.tap             = $(PROVE) --ext .tap --exec "$(CAT)"
TESTFAILURES          = $(PERL) $(TOOLS)/testFailures.pl
SHOWTESTFAILURES      = $(TESTFAILURES) $(TESTS_FAILED_PATH) $(TAPS_FAILED_LOG)

PROVE_FAILURE         = echo $(abspath .)>> $(TESTS_FAILED_PATH)
TAPFILE_FAILURE       = echo $@>> $(TAPS_FAILED_LOG)
