| # Copyright 2014 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("//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_mac && !is_ios && !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_fuzzer") { |
| sources = [ |
| "fuzz/hunspell_fuzzer.cc", |
| "fuzz/hunspell_fuzzer_hunspell_dictionary.h", |
| ] |
| 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" |
| } |