xref: /aosp_15_r20/external/clang/lib/Basic/CMakeLists.txt (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Liset(LLVM_LINK_COMPONENTS
2*67e74705SXin Li  Core
3*67e74705SXin Li  MC
4*67e74705SXin Li  Support
5*67e74705SXin Li  )
6*67e74705SXin Li
7*67e74705SXin Li# Figure out if we can track VC revisions.
8*67e74705SXin Lifunction(find_first_existing_file out_var)
9*67e74705SXin Li  foreach(file ${ARGN})
10*67e74705SXin Li    if(EXISTS "${file}")
11*67e74705SXin Li      set(${out_var} "${file}" PARENT_SCOPE)
12*67e74705SXin Li      return()
13*67e74705SXin Li    endif()
14*67e74705SXin Li  endforeach()
15*67e74705SXin Liendfunction()
16*67e74705SXin Li
17*67e74705SXin Limacro(find_first_existing_vc_file out_var path)
18*67e74705SXin Li  find_first_existing_file(${out_var}
19*67e74705SXin Li    "${path}/.git/logs/HEAD" # Git
20*67e74705SXin Li    "${path}/.svn/wc.db"     # SVN 1.7
21*67e74705SXin Li    "${path}/.svn/entries"   # SVN 1.6
22*67e74705SXin Li    )
23*67e74705SXin Liendmacro()
24*67e74705SXin Li
25*67e74705SXin Lifind_first_existing_vc_file(llvm_vc "${LLVM_MAIN_SRC_DIR}")
26*67e74705SXin Lifind_first_existing_vc_file(clang_vc "${CLANG_SOURCE_DIR}")
27*67e74705SXin Li
28*67e74705SXin Li# The VC revision include that we want to generate.
29*67e74705SXin Liset(version_inc "${CMAKE_CURRENT_BINARY_DIR}/SVNVersion.inc")
30*67e74705SXin Li
31*67e74705SXin Liset(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake")
32*67e74705SXin Li
33*67e74705SXin Liif(DEFINED llvm_vc AND DEFINED clang_vc)
34*67e74705SXin Li  # Create custom target to generate the VC revision include.
35*67e74705SXin Li  add_custom_command(OUTPUT "${version_inc}"
36*67e74705SXin Li    DEPENDS "${llvm_vc}" "${clang_vc}" "${get_svn_script}"
37*67e74705SXin Li    COMMAND
38*67e74705SXin Li    ${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${LLVM_MAIN_SRC_DIR}"
39*67e74705SXin Li                     "-DFIRST_NAME=LLVM"
40*67e74705SXin Li                     "-DSECOND_SOURCE_DIR=${CLANG_SOURCE_DIR}"
41*67e74705SXin Li                     "-DSECOND_NAME=SVN"
42*67e74705SXin Li                     "-DHEADER_FILE=${version_inc}"
43*67e74705SXin Li                     -P "${get_svn_script}")
44*67e74705SXin Li
45*67e74705SXin Li  # Mark the generated header as being generated.
46*67e74705SXin Li  set_source_files_properties("${version_inc}"
47*67e74705SXin Li    PROPERTIES GENERATED TRUE
48*67e74705SXin Li               HEADER_FILE_ONLY TRUE)
49*67e74705SXin Li
50*67e74705SXin Li  # Tell Version.cpp that it needs to build with -DHAVE_SVN_VERSION_INC.
51*67e74705SXin Li  set_source_files_properties(Version.cpp
52*67e74705SXin Li    PROPERTIES COMPILE_DEFINITIONS "HAVE_SVN_VERSION_INC")
53*67e74705SXin Lielse()
54*67e74705SXin Li  # Not producing a VC revision include.
55*67e74705SXin Li  set(version_inc)
56*67e74705SXin Li
57*67e74705SXin Li  # Being able to force-set the SVN revision in cases where it isn't available
58*67e74705SXin Li  # is useful for performance tracking, and matches compatibility from autoconf.
59*67e74705SXin Li  if(SVN_REVISION)
60*67e74705SXin Li    set_source_files_properties(Version.cpp
61*67e74705SXin Li      PROPERTIES COMPILE_DEFINITIONS "SVN_REVISION=\"${SVN_REVISION}\"")
62*67e74705SXin Li  endif()
63*67e74705SXin Liendif()
64*67e74705SXin Li
65*67e74705SXin Liadd_clang_library(clangBasic
66*67e74705SXin Li  Attributes.cpp
67*67e74705SXin Li  Builtins.cpp
68*67e74705SXin Li  CharInfo.cpp
69*67e74705SXin Li  Cuda.cpp
70*67e74705SXin Li  Diagnostic.cpp
71*67e74705SXin Li  DiagnosticIDs.cpp
72*67e74705SXin Li  DiagnosticOptions.cpp
73*67e74705SXin Li  FileManager.cpp
74*67e74705SXin Li  FileSystemStatCache.cpp
75*67e74705SXin Li  IdentifierTable.cpp
76*67e74705SXin Li  LangOptions.cpp
77*67e74705SXin Li  Module.cpp
78*67e74705SXin Li  ObjCRuntime.cpp
79*67e74705SXin Li  OpenMPKinds.cpp
80*67e74705SXin Li  OperatorPrecedence.cpp
81*67e74705SXin Li  SanitizerBlacklist.cpp
82*67e74705SXin Li  Sanitizers.cpp
83*67e74705SXin Li  SourceLocation.cpp
84*67e74705SXin Li  SourceManager.cpp
85*67e74705SXin Li  TargetInfo.cpp
86*67e74705SXin Li  Targets.cpp
87*67e74705SXin Li  TokenKinds.cpp
88*67e74705SXin Li  Version.cpp
89*67e74705SXin Li  VersionTuple.cpp
90*67e74705SXin Li  VirtualFileSystem.cpp
91*67e74705SXin Li  Warnings.cpp
92*67e74705SXin Li  ${version_inc}
93*67e74705SXin Li  )
94*67e74705SXin Li
95