# 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("qcms_config") {
include_dirs = [ "src" ]
}
disable_qcms = false
static_library("qcms") {
if (disable_qcms) {
sources = [ "src/empty.c" ]
} else {
sources = [
"src/chain.c",
"src/chain.h",
"src/iccread.c",
"src/matrix.c",
"src/matrix.h",
"src/qcms.h",
"src/qcms_util.c",
"src/qcmsint.h",
"src/qcmstypes.h",
"src/transform.c",
"src/transform_util.c",
"src/transform_util.h",
]
defines = []
if (current_cpu == "x86" || current_cpu == "x64") {
defines += [ "SSE2_ENABLE" ]
sources += [ "src/transform-sse2.c" ]
}
if (use_fuzzing_engine) {
defines += [ "USE_LIBFUZZER" ]
}
}
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
public_configs = [ ":qcms_config" ]
if (is_win) {
cflags = [
"/wd4018", # Signed/unsigned mismatch in comparison.
"/wd4056", # Overflow in floating-point constant arithmetic (INFINITY).
"/wd4756", # Overflow in constant arithmetic (INFINITY).
]
}
}
# fuzzers BUILD depends on this target. Needed for package discovery
group("fuzzers") {
}
fuzzer_test("qcms_color_space_fuzzer") {
sources = [
"//testing/libfuzzer/fuzzers/color_space_data.h",
"qcms_color_space_fuzzer.cc",
]
deps = [
":qcms",
"//base",
]
dict = "//testing/libfuzzer/fuzzers/dicts/icc.dict"
libfuzzer_options = [ "max_len=4194304" ]
}
if (!disable_qcms) {
executable("qcms_tests") {
if (current_cpu == "x86" || current_cpu == "x64") {
defines = [ "SSE2_ENABLE" ]
}
sources = [
"src/tests/qcms_test_internal_srgb.c",
"src/tests/qcms_test_main.c",
"src/tests/qcms_test_munsell.c",
"src/tests/qcms_test_ntsc_gamut.c",
"src/tests/qcms_test_output_trc.c",
"src/tests/qcms_test_tetra_clut_rgba.c",
"src/tests/qcms_test_util.c",
]
deps = [
"//build/win:default_exe_manifest",
"//third_party/qcms",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [ "//build/config/compiler:no_chromium_code" ]
public_configs = [ ":qcms_config" ]
}
}