# Copyright 2017 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Three copies of libtrace-engine are built:
# 1) Shared library for use by userspace tracing.
# 2) Static library for use by userspace tracing.
# 3) Static library to be linked into libdriver.so for use by driver tracing.
#
# N.B. Please DO NOT use (2) unless you KNOW you need to. Generally you do not.
# If in doubt, ask. (2) is for very special circumstances where
# libtrace-engine.so is not available.

LOCAL_DIR := $(GET_LOCAL_DIR)

# Common pieces.

LOCAL_SRCS := \
    $(LOCAL_DIR)/context.cpp \
    $(LOCAL_DIR)/context_api.cpp \
    $(LOCAL_DIR)/engine.cpp \
    $(LOCAL_DIR)/nonce.cpp

LOCAL_STATIC_LIBS := \
    system/ulib/async \
    system/ulib/async.cpp \
    system/ulib/fbl \
    system/ulib/zx \
    system/ulib/zxcpp

LOCAL_LIBS := \
    system/ulib/c \
    system/ulib/zircon

# The default version for the normal case.

MODULE := $(LOCAL_DIR)

MODULE_TYPE := userlib
MODULE_COMPILEFLAGS += -fvisibility=hidden

MODULE_SRCS := $(LOCAL_SRCS)

MODULE_EXPORT := so
MODULE_SO_NAME := trace-engine

MODULE_STATIC_LIBS := $(LOCAL_STATIC_LIBS)

MODULE_LIBS := $(LOCAL_LIBS)

include make/module.mk

# A special version for programs and shared libraries that can't use
# libtrace-engine.so, e.g., because it is unavailable.
# N.B. Please verify that you really need this before using it.
# Generally you DO NOT want to use this.

MODULE := $(LOCAL_DIR).static
MODULE_NAME := trace-engine-static

MODULE_TYPE := userlib
MODULE_COMPILEFLAGS += -fvisibility=hidden
MODULE_COMPILEFLAGS += -DSTATIC_LIBRARY

MODULE_SRCS := $(LOCAL_SRCS)

MODULE_STATIC_LIBS := $(LOCAL_STATIC_LIBS)

MODULE_LIBS := $(LOCAL_LIBS)

MODULE_PACKAGE := static

include make/module.mk

# And again, but this time for drivers.
# This gets linked into libdriver.so.

MODULE := $(LOCAL_DIR).driver
MODULE_NAME := trace-engine-driver

MODULE_TYPE := userlib
MODULE_COMPILEFLAGS += -fvisibility=hidden
MODULE_COMPILEFLAGS += -DDDK_TRACING

# trace_generate_nonce() exists even when driver tracing is disabled
MODULE_SRCS := \
    $(LOCAL_DIR)/nonce.cpp

MODULE_STATIC_LIBS := \
    system/ulib/fbl

ifeq ($(call TOBOOL,$(ENABLE_DRIVER_TRACING)),true)
MODULE_SRCS += \
    $(LOCAL_DIR)/context.cpp \
    $(LOCAL_DIR)/context_api.cpp \
    $(LOCAL_DIR)/engine.cpp

MODULE_STATIC_LIBS += \
    system/ulib/async.cpp \
    system/ulib/async \
    system/ulib/zx \
    system/ulib/zxcpp
endif

MODULE_LIBS := $(LOCAL_LIBS)

include make/module.mk

# Header-only src package for use by exported trace-reader package.

MODULE := $(LOCAL_DIR).headers-for-reader
MODULE_NAME := trace-engine-headers-for-reader

MODULE_TYPE := userlib
MODULE_COMPILEFLAGS += -fvisibility=hidden

MODULE_PACKAGE_SRCS := none
MODULE_PACKAGE_INCS := \
    $(LOCAL_DIR)/include/trace-engine/fields.h \
    $(LOCAL_DIR)/include/trace-engine/types.h

MODULE_STATIC_LIBS := \
    system/ulib/fbl

MODULE_LIBS :=

MODULE_PACKAGE := src

include make/module.mk
