# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//testing/libfuzzer/fuzzer_test.gni")
config("hunspell_config") {
defines = [
"HUNSPELL_STATIC",
"HUNSPELL_CHROME_CLIENT",
"USE_HUNSPELL",
]
}
config("hunspell_warnings") {
if (is_clang) {
cflags = [ "-Wno-unused-private-field" ]
}
}
static_library("hunspell") {
sources = [
"google/bdict.cc",
"google/bdict.h",
"google/bdict_reader.cc",
"google/bdict_reader.h",
"google/bdict_writer.cc",
"google/bdict_writer.h",
"src/hunspell/affentry.cxx",
"src/hunspell/affentry.hxx",
"src/hunspell/affixmgr.cxx",
"src/hunspell/affixmgr.hxx",
"src/hunspell/atypes.hxx",
"src/hunspell/baseaffix.hxx",
"src/hunspell/csutil.cxx",
"src/hunspell/csutil.hxx",
"src/hunspell/filemgr.cxx",
"src/hunspell/filemgr.hxx",
"src/hunspell/hashmgr.cxx",
"src/hunspell/hashmgr.hxx",
"src/hunspell/htypes.hxx",
"src/hunspell/hunspell.cxx",
"src/hunspell/hunspell.h",
"src/hunspell/hunspell.hxx",
"src/hunspell/hunzip.cxx",
"src/hunspell/hunzip.hxx",
"src/hunspell/langnum.hxx",
"src/hunspell/phonet.cxx",
"src/hunspell/phonet.hxx",
"src/hunspell/replist.cxx",
"src/hunspell/replist.hxx",
"src/hunspell/suggestmgr.cxx",
"src/hunspell/suggestmgr.hxx",
"src/hunspell/w_char.hxx",
"src/parsers/textparser.cxx",
"src/parsers/textparser.hxx",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
# Must be after no_chromium_code for warning flags to be ordered correctly.
":hunspell_warnings",
]
public_configs = [ ":hunspell_config" ]
defines = [ "OPENOFFICEORG" ]
deps = [
"//base",
"//third_party/icu",
]
cflags = []
if (is_win) {
cflags += [
# TODO(jschuh): http://crbug.com/167187 size_t -> int
"/wd4267",
]
}
if (is_posix && !is_mac && !is_clang) {
cflags += [
"-Wno-unused-value",
"-Wno-unused-variable",
"-Wno-write-strings",
]
}
if (is_posix && !is_apple && !is_clang) {
cflags += [
# affentry.hxx has NULL as default parameter for a FLAG in two
# places.
"-Wno-conversion-null",
]
}
if (is_clang) {
cflags += [
# affentry.cxx has one `while ((p = nextchar(p)));` parsing loop.
"-Wno-empty-body",
# affentry.hxx has NULL as default parameter for a FLAG in two
# places.
"-Wno-null-conversion",
]
}
}
fuzzer_test("hunspell_spell_fuzzer") {
sources = [
"fuzz/hunspell_fuzzer_hunspell_dictionary.h",
"fuzz/hunspell_spell_fuzzer.cc",
]
deps = [
":hunspell",
"//base:base",
]
# This is a dictionary for the fuzzer, not a spellcheck dictionary.
dict = "fuzz/hunspell.dict"
}
fuzzer_test("hunspell_suggest_fuzzer") {
sources = [
"fuzz/hunspell_fuzzer_hunspell_dictionary.h",
"fuzz/hunspell_suggest_fuzzer.cc",
]
deps = [
":hunspell",
"//base:base",
]
# This is a dictionary for the fuzzer, not a spellcheck dictionary.
dict = "fuzz/hunspell.dict"
}
fuzzer_test("bdict_fuzzer") {
sources = [ "fuzz/bdict_fuzzer.cc" ]
deps = [
":hunspell",
"//base:base",
]
seed_corpus = "fuzz/bdict_corpus"
}