# 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.

config("libipt_config") {
  # Suppress warnings in upstream code that are triggered by Fuchsia compilation flags.
  cflags = [
    "-Wno-conversion",
    "-Wno-implicit-fallthrough",
    "-Wno-strict-prototypes",
  ]
}

static_library("libipt") {
  sources = [
    "include/intel-pt.h",
    "internal/include/pt_asid.h",
    "internal/include/pt_block_cache.h",
    "internal/include/pt_block_decoder.h",
    "internal/include/pt_config.h",
    "internal/include/pt_cpu.h",
    "internal/include/pt_cpuid.h",
    "internal/include/pt_decoder_function.h",
    "internal/include/pt_encoder.h",
    "internal/include/pt_event_queue.h",
    "internal/include/pt_ild.h",
    "internal/include/pt_image.h",
    "internal/include/pt_image_section_cache.h",
    "internal/include/pt_insn.h",
    "internal/include/pt_insn_decoder.h",
    "internal/include/pt_last_ip.h",
    "internal/include/pt_mapped_section.h",
    "internal/include/pt_packet.h",
    "internal/include/pt_packet_decoder.h",
    "internal/include/pt_query_decoder.h",
    "internal/include/pt_retstack.h",
    "internal/include/pt_section.h",
    "internal/include/pt_section_file.h",
    "internal/include/pt_sync.h",
    "internal/include/pt_time.h",
    "internal/include/pt_tnt_cache.h",
    "internal/include/pti-disp-defs.h",
    "internal/include/pti-disp.h",
    "internal/include/pti-imm-defs.h",
    "internal/include/pti-imm.h",
    "internal/include/pti-modrm-defs.h",
    "internal/include/pti-modrm.h",
    "src/pt_asid.c",
    "src/pt_block_cache.c",
    "src/pt_block_decoder.c",
    "src/pt_config.c",
    "src/pt_decoder_function.c",
    "src/pt_encoder.c",
    "src/pt_error.c",
    "src/pt_event_queue.c",
    "src/pt_ild.c",
    "src/pt_image.c",
    "src/pt_image_section_cache.c",
    "src/pt_insn.c",
    "src/pt_insn_decoder.c",
    "src/pt_last_ip.c",
    "src/pt_packet.c",
    "src/pt_packet_decoder.c",
    "src/pt_query_decoder.c",
    "src/pt_retstack.c",
    "src/pt_section.c",
    "src/pt_section_file.c",
    "src/pt_sync.c",
    "src/pt_time.c",
    "src/pt_tnt_cache.c",
    "src/pt_version.c",
  ]

  if (is_linux || is_mac) {
    sources += [
      "internal/include/posix/pt_section_posix.h",

      # IWBN to include init.c but we're building a static library,
      # and thus it won't be brought in (nothing external references it).
      #"src/posix/init.c",
      "src/posix/pt_cpuid.c",
      "src/posix/pt_section_posix.c",
    ]
  }

  deps = []

  include_dirs = [
    "include",
    "internal/include",
  ]

  if (is_linux || is_mac) {
    include_dirs += [ "internal/include/posix" ]
  }

  defines = [
    "PT_VERSION_MAJOR=1",
    "PT_VERSION_MINOR=6",
    "PT_VERSION_BUILD=0",
    "PT_VERSION_EXT=\"\"",

    # This is a workaround to ensure posix/init.c is brought in by the linker.
    # See pt_ild.c.
    "INCLUDE_EARLY_INIT",
  ]

  configs += [ ":libipt_config" ]
}
