1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
# 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",
]
}
|