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

import("//fusl/fusl.gni")

fusl_source_set("string") {
  sources = [
    "bcmp.c",
    "bcopy.c",
    "bzero.c",
    "index.c",
    "memccpy.c",
    "memchr.c",
    "memcmp.c",
    "memmem.c",
    "mempcpy.c",
    "memrchr.c",
    "rindex.c",
    "stpcpy.c",
    "stpncpy.c",
    "strcasecmp.c",
    "strcasestr.c",
    "strcat.c",
    "strchr.c",
    "strchrnul.c",
    "strcmp.c",
    "strcpy.c",
    "strcspn.c",
    "strdup.c",
    "strerror_r.c",
    "strlcat.c",
    "strlcpy.c",
    "strlen.c",
    "strncasecmp.c",
    "strncat.c",
    "strncmp.c",
    "strncpy.c",
    "strndup.c",
    "strnlen.c",
    "strpbrk.c",
    "strrchr.c",
    "strsep.c",
    "strsignal.c",
    "strspn.c",
    "strstr.c",
    "strtok.c",
    "strtok_r.c",
    "strverscmp.c",
    "swab.c",
    "wcpcpy.c",
    "wcpncpy.c",
    "wcscasecmp.c",
    "wcscasecmp_l.c",
    "wcscat.c",
    "wcschr.c",
    "wcscmp.c",
    "wcscpy.c",
    "wcscspn.c",
    "wcsdup.c",
    "wcslen.c",
    "wcsncasecmp.c",
    "wcsncasecmp_l.c",
    "wcsncat.c",
    "wcsncmp.c",
    "wcsncpy.c",
    "wcsnlen.c",
    "wcspbrk.c",
    "wcsrchr.c",
    "wcsspn.c",
    "wcsstr.c",
    "wcstok.c",
    "wcswcs.c",
    "wmemchr.c",
    "wmemcmp.c",
    "wmemcpy.c",
    "wmemmove.c",
    "wmemset.c",
  ]

  deps = []
  if (current_cpu == "x64") {
    sources += [
      "x86_64/memcpy.s",
      "x86_64/memmove.s",
      "x86_64/memset.s",
    ]
  } else {
    sources += [ "memmove.c" ]

    deps += [ ":generic_no_stack_protector" ]
  }
}

if (current_cpu != "x64") {
  fusl_source_set("generic_no_stack_protector") {
    configs += [ "//fusl:fusl_no_stack_protector_config" ]

    sources = [
      "memcpy.c",
      "memset.c",
    ]
  }
}
