chromium/third_party/fast_float/BUILD.gn

# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/gclient_args.gni")

config("fast_float_config") {
  include_dirs = [ "src/include" ]
}

source_set("fast_float") {
  public = [ "src/include/fast_float/fast_float.h" ]

  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]

  public_configs = [ ":fast_float_config" ]
}

if (build_with_chromium) {
  import("//testing/test.gni")

  test("fast_float_json_fmt_test") {
    testonly = true
    sources = [ "src/tests/json_fmt.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  test("fast_float_rcppfastfloat_test") {
    testonly = true
    sources = [ "src/tests/rcppfastfloat_test.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  test("fast_float_example_test") {
    testonly = true
    sources = [ "src/tests/example_test.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  test("fast_float_example_comma_test") {
    testonly = true
    sources = [ "src/tests/example_comma_test.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  # Disabled because it uses exceptions.
  # test("fast_float_long_test") {
  #   testonly = true
  #   sources = [ "src/tests/long_test.cpp" ]
  #   deps = [ ":fast_float" ]
  #   configs -= [ "//build/config/compiler:chromium_code" ]
  #   configs += [ "//build/config/compiler:no_chromium_code" ]
  # }

  test("fast_float_powersoffive_hardround_test") {
    testonly = true
    sources = [ "src/tests/powersoffive_hardround.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  # Disabled because it uses exceptions.
  # test("fast_float_string_test") {
  #   testonly = true
  #   sources = [ "src/tests/string_test.cpp" ]
  #   deps = [ ":fast_float" ]
  #   configs -= [ "//build/config/compiler:chromium_code" ]
  #   configs += [ "//build/config/compiler:no_chromium_code" ]
  # }

  test("fast_float_fast_int_test") {
    testonly = true
    sources = [ "src/tests/fast_int.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  test("fast_float_fortran_test") {
    testonly = true
    sources = [ "src/tests/fortran.cpp" ]
    deps = [ ":fast_float" ]
    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]
  }

  # Unused for now, befcause it uses a C++23 header.
  # test("fast_float_fixedwidthtest") {
  #   testonly = true
  #   sources = [ "src/tests/fixedwidthtest.cpp" ]
  #   deps = [ ":fast_float" ]
  #   configs -= [ "//build/config/compiler:chromium_code" ]
  #   configs += [ "//build/config/compiler:no_chromium_code" ]
  # }
}