# Makefile - makefile for building the analysis tools
#
# modification history
# --------------------
# 01j,21jan14,wzc  Fix ar missed in environment.
# 01i,24aug11,flu  CQID: WIND00295502 remove stacktrace.so libanalysistest.a for LP64.
# 01h,15aug11,flu  CQID WIND00293303
# 01g,02aug11,jfu  Create directory in adding test case for vxauto test(RQ:WIND00267114)
# 01g,29jul11,flu  Add simso and simnt for auto test building.(CQ:WIND00290406)
# 01g,20jul11,flu  create libanalysistest.a for vxtest.(RQ:WIND00267114)
# 01f,30jun11,wzc  Porting stacktrace-1.0 into analysis.(RQ:WIND00061556)
# 01e,25nov10,flu  Add dkms dependency.(CQ:WIND00241407)
# 01d,24nov10,flu  Skip dkms building for some OPT.(CQ:WIND00242405)
# 01c,01nov10,pca  Exclude unnecessary objects from LP64 builds
# 01b,13may08,c_c  default rule builds everything.
# 01a,26mar08,c_c  created.
#
# DESCRIPTION
# This file contains the makefile rules for building the Analysis Tools
#
#*/

TGT_DIR=$(WIND_BASE)/target
TOOLS_SRC_ROOT = .

SUPPORTED_OPTIONS_ANALYSIS_SKIP = -inet6only -inet6 -basic

ifeq ($(filter $(OPT), $(SUPPORTED_OPTIONS_ANALYSIS_SKIP)),)
all: subdirs dkms
.PHONY: all dkms
else
all:subdirs
.PHONY: all
endif

# The SUBDIRS variable needs to be manually defined to make sure the
# subdirectories are built in the correct order.  Normally this would be done
# by specifying dependencies, for example:
#	coveragescope: rtilib scopeutils
# Unfortunately the Vx make rule fragments specify the phony subdirectory goals
# as double-colon rules (e.g., coveragescope::) which prevents other makefiles
# from adding meaningful dependencies.

# Including defs.library to see VSB defines _WRS_CONFIG_SMP/LP64.
include $(TGT_DIR)/h/make/defs.library

ifndef _WRS_CONFIG_LP64
SUBDIRS = rtilib scopeutils memscope profile stethoscope coveragescope stacktrace
else
SUBDIRS = rtilib scopeutils coveragescope cafe stacktrace
endif

include $(TOOLS_SRC_ROOT)/make/common_rules.mk

ifeq ($(ENABLE_HEADER_GENERATION),1)

ifeq ($(VX_CPU_FAMILY),simlinux)
        IS_SIM_ARCH = true
endif

ifeq ($(VX_CPU_FAMILY),simpc)
        IS_SIM_ARCH = true
endif

ifeq ($(VX_CPU_FAMILY),simso)
        IS_SIM_ARCH = true
endif

ANALYSISTEST_PATH = $(VSB_DIR)/$(VX_CPU_FAMILY)$(ARCH_OPTION_SUFFIX)/$(CPU)$(CPU_OPTION_SUFFIX)/$(TOOL_COMMON_DIR)$(LIB_DIR_TAG)$(MINOR_OPTION_SUFFIX)

ANALYSISTEST_OBJS = $(LIB_ROOT)/$(LIBDIRBASE)/objcoveragecomm/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objrtilib/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objscopeutils/*.o

ifndef _WRS_CONFIG_LP64
ANALYSISTEST_OBJS += $(LIB_ROOT)/$(LIBDIRBASE)/objclock/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objfilter/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objquery/*.o \
		$(ANALYSISTEST_PATH)/objstacktrace/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objmemscope/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objprofile/*.o
ifneq (true,$(IS_SIM_ARCH))
ANALYSISTEST_OBJS += $(LIB_ROOT)/$(LIBDIRBASE)/objparam/*.o \
		$(LIB_ROOT)/$(LIBDIRBASE)/objpatch/*.o
endif

endif

endif


dkms:subdirs
	$(MAKE) -C scopeutils $@
	$(MAKE) -C coveragescope $@
ifndef _WRS_CONFIG_LP64
	$(MAKE) -C stacktrace $@
	$(MAKE) -C memscope $@
	$(MAKE) -C profile $@
	$(MAKE) -C stethoscope $@
ifeq ($(ENABLE_HEADER_GENERATION),1)
	$(AR) -r $(ANALYSISTEST_PATH)/libanalysistest.a $(ANALYSISTEST_OBJS)
endif
endif
