File: BUILD.gn

package info (click to toggle)
webkit2gtk 2.48.5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 429,764 kB
  • sloc: cpp: 3,697,587; javascript: 194,444; ansic: 169,997; python: 46,499; asm: 19,295; ruby: 18,528; perl: 16,602; xml: 4,650; yacc: 2,360; sh: 2,098; java: 1,993; lex: 1,327; pascal: 366; makefile: 298
file content (100 lines) | stat: -rw-r--r-- 2,297 bytes parent folder | download | duplicates (14)
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",
  ]
}