• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# This setups the actions for generated header file headers used by the clang
2# libs. The below are heavily influenced by LLVM.
3
4import("//build_overrides/clspv.gni")
5
6# Based on below files
7#   `clang/include/clang/Config/BUILD.gn`
8#   `clang/include/clang/Basic/BUILD.gn`
9#   `clang/lib/Basic/BUILD.gn`
10import(
11    "//$clspv_llvm_dir/llvm/utils/gn/secondary/clang/lib/ARCMigrate/enable.gni")
12import(
13    "//$clspv_llvm_dir/llvm/utils/gn/secondary/clang/lib/StaticAnalyzer/Frontend/enable.gni")
14import("//$clspv_llvm_dir/llvm/utils/gn/secondary/llvm/version.gni")
15import("../../write_cmake_config.gni")
16import("../../write_vcsrevision.gni")
17
18# from include/clang/Basic
19write_cmake_config("version") {
20  input = "//$clspv_llvm_dir/clang/include/clang/Basic/Version.inc.in"
21  output = "$root_gen_dir/$clspv_llvm_dir/clang/Basic/Version.inc"
22  values = [
23    "CLANG_VERSION=$llvm_version",
24    "CLANG_VERSION_MAJOR=$llvm_version_major",
25    "CLANG_VERSION_MINOR=$llvm_version_minor",
26    "CLANG_VERSION_PATCHLEVEL=$llvm_version_patch",
27  ]
28}
29
30# from clang/lib/Basic
31config("write_vcsrevision_config") {
32  # To pick up the generated inc file.
33  include_dirs = [ "$root_gen_dir/$clspv_llvm_dir/clang/lib/Basic" ]
34  visibility = [ ":write_vcsversion" ]
35}
36
37write_vcsrevision("write_vcsversion") {
38  header = "$root_gen_dir/$clspv_llvm_dir/clang/lib/Basic/VCSVersion.inc"
39  names = [
40    "LLVM",
41    "CLANG",
42  ]
43  public_configs = [ ":write_vcsrevision_config" ]
44}
45
46write_cmake_config("Config") {
47  input = "//$clspv_llvm_dir/clang/include/clang/Config/config.h.cmake"
48  output = "$root_gen_dir/$clspv_llvm_dir/clang/Config/config.h"
49  values = [
50    "BUG_REPORT_URL=https://github.com/llvm/llvm-project/issues/",
51    "CLANG_DEFAULT_PIE_ON_LINUX=1",
52    "CLANG_DEFAULT_LINKER=",
53    "CLANG_DEFAULT_CXX_STDLIB=",
54    "CLANG_DEFAULT_RTLIB=",
55    "CLANG_DEFAULT_OBJCOPY=objcopy",
56    "CLANG_DEFAULT_OPENMP_RUNTIME=libomp",
57    "CLANG_DEFAULT_UNWINDLIB=",
58    "CLANG_INSTALL_LIBDIR_BASENAME=lib",
59    "CLANG_RESOURCE_DIR=",
60    "C_INCLUDE_DIRS=",
61    "CLANG_CONFIG_FILE_SYSTEM_DIR=",
62    "CLANG_CONFIG_FILE_USER_DIR=",
63    "CLANG_SPAWN_CC1=",
64    "DEFAULT_SYSROOT=",
65    "GCC_INSTALL_PREFIX=",
66    "ENABLE_LINKER_BUILD_ID=",
67    "ENABLE_X86_RELAX_RELOCATIONS=1",
68    "CLANG_ENABLE_OBJC_REWRITER=1",  # FIXME: flag?
69    "CLANG_SYSTEMZ_DEFAULT_ARCH=z10",
70    "PPC_LINUX_DEFAULT_IEEELONGDOUBLE=",
71  ]
72
73  if (clang_enable_arcmt) {
74    values += [ "CLANG_ENABLE_ARCMT=1" ]
75  } else {
76    values += [ "CLANG_ENABLE_ARCMT=" ]
77  }
78
79  if (clang_enable_static_analyzer) {
80    values += [ "CLANG_ENABLE_STATIC_ANALYZER=1" ]
81  } else {
82    values += [ "CLANG_ENABLE_STATIC_ANALYZER=" ]
83  }
84
85  if (host_os != "win") {
86    values += [ "CLANG_HAVE_RLIMITS=1" ]
87  } else {
88    values += [ "CLANG_HAVE_RLIMITS=" ]
89  }
90
91  if (llvm_enable_libxml2) {
92    values += [ "CLANG_HAVE_LIBXML=1" ]
93  } else {
94    values += [ "CLANG_HAVE_LIBXML=" ]
95  }
96
97  if (host_os == "mac") {
98    # FIXME: Hardcoding this isn't great, but assuming that the host ld version
99    # has anything to do with the ld version where the built clang will run
100    # isn't either. Probably want to make this a declare_args.
101    values += [ "HOST_LINK_VERSION=305" ]
102  } else {
103    values += [ "HOST_LINK_VERSION=" ]
104  }
105}
106