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