blob: 5d037a94c93caa0dcdaeb1d878f3629b7b45a862 [file] [log] [blame]
# Copyright 2022 Google LLC
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("skcms.gni")
# Use for CPU-specific skcms transform code that needs particular compiler flags.
# (This is patterned after `opts` in Skia's BUILD.gn.)
template("arch") {
if (invoker.enabled) {
source_set(target_name) {
visibility = [ ":*" ]
check_includes = false
forward_variables_from(invoker, "*")
}
} else {
# If not enabled, a phony empty target that swallows all otherwise unused variables.
source_set(target_name) {
visibility = [ ":*" ]
check_includes = false
forward_variables_from(invoker,
"*",
[
"sources",
"cflags",
"defines",
])
}
}
}
arch("skcms_TransformHsw") {
enabled = current_cpu == "x64" && target_os != "android"
sources = skcms_TransformHsw
if (is_win) {
if (is_clang) {
cflags = [
"/clang:-mavx2",
"/clang:-mf16c",
"/clang:-ffp-contract=off",
]
} else {
cflags = [ "/arch:AVX2" ]
}
} else {
cflags = [
"-mavx2",
"-mf16c",
"-std=c11",
]
}
}
arch("skcms_TransformSkx") {
enabled = current_cpu == "x64" && target_os != "android"
sources = skcms_TransformSkx
if (is_win) {
if (is_clang) {
cflags = [
"/clang:-mavx512f",
"/clang:-mavx512dq",
"/clang:-mavx512cd",
"/clang:-mavx512bw",
"/clang:-mavx512vl",
"/clang:-ffp-contract=off",
]
} else {
cflags = [ "/arch:AVX512" ]
}
} else {
cflags = [
"-mavx512f",
"-mavx512dq",
"-mavx512cd",
"-mavx512bw",
"-mavx512vl",
"-std=c11",
]
}
}
static_library("skcms") {
cflags = []
if (!is_win || is_clang) {
cflags += [ "-std=c11" ]
}
if (target_cpu != "x64" || target_os == "android") {
defines = [
"SKCMS_DISABLE_HSW",
"SKCMS_DISABLE_SKX",
]
}
public = skcms_public_headers
sources = skcms_public + skcms_TransformBaseline
deps = [
":skcms_TransformHsw",
":skcms_TransformSkx",
]
}