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