# On non-Darwin require UUID. if(CMAKE_SYSTEM_NAME STREQUAL "Darwin") set(UUID_INCLUDE "") set(UUID_LIBRARIES "") elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") set(UUID_INCLUDE "") set(UUID_LIBRARIES "ole32.lib") else() find_package(UUID REQUIRED) set(UUID_INCLUDE "-I${UUID_INCLUDE_DIRS}") endif() # Figure out if we can track VC revisions. # FIXME: Copied from Clang. function(find_first_existing_file out_var) foreach(file ${ARGN}) if(EXISTS "${file}") set(${out_var} "${file}" PARENT_SCOPE) return() endif() endforeach() endfunction() macro(find_first_existing_vc_file out_var path) find_first_existing_file(${out_var} "${path}/.git/logs/HEAD" # Git "${path}/.svn/wc.db" # SVN 1.7 "${path}/.svn/entries" # SVN 1.6 ) endmacro() set(get_svn_script "${LLVM_MAIN_SRC_DIR}/cmake/modules/GetSVN.cmake") function(generate_revision_inc revision_inc_var name dir) find_first_existing_vc_file(dep_file "${dir}") # Create custom target to generate the VC revision include. set(revision_inc "${CMAKE_CURRENT_BINARY_DIR}/${name}Revision.inc") string(TOUPPER ${name} upper_name) if(DEFINED dep_file) add_custom_command(OUTPUT "${revision_inc}" DEPENDS "${dep_file}" "${get_svn_script}" COMMAND ${CMAKE_COMMAND} "-DFIRST_SOURCE_DIR=${dir}" "-DFIRST_NAME=${upper_name}" "-DHEADER_FILE=${revision_inc}" -P "${get_svn_script}") else() # Generate an empty Revision.inc file if we are not using git or SVN. file(WRITE "${revision_inc}" "") endif() # Mark the generated header as being generated. set_source_files_properties("${revision_inc}" PROPERTIES GENERATED TRUE HEADER_FILE_ONLY TRUE) set(${revision_inc_var} ${revision_inc} PARENT_SCOPE) endfunction() generate_revision_inc(llvm_revision_inc LLVM "${LLVM_MAIN_SRC_DIR}") generate_revision_inc(clang_revision_inc Clang "${CLANG_MAIN_SRC_DIR}") generate_revision_inc(swift_revision_inc Swift "${SWIFT_SOURCE_DIR}") set(version_inc_files ${llvm_revision_inc} ${clang_revision_inc} ${swift_revision_inc}) add_swift_library(swiftBasic STATIC Cache.cpp ClusteredBitVector.cpp DiverseStack.cpp Edit.cpp EditorPlaceholder.cpp FileSystem.cpp JSONSerialization.cpp LangOptions.cpp LLVMContext.cpp Mangler.cpp Platform.cpp PrefixMap.cpp PrettyStackTrace.cpp PrimitiveParsing.cpp Program.cpp QuotedString.cpp SourceLoc.cpp Statistic.cpp StringExtras.cpp TaskQueue.cpp ThreadSafeRefCounted.cpp Timer.cpp Unicode.cpp UUID.cpp Version.cpp ${version_inc_files} # Platform-specific TaskQueue implementations Unix/TaskQueue.inc # Platform-agnostic fallback TaskQueue implementation Default/TaskQueue.inc UnicodeExtendedGraphemeClusters.cpp.gyb C_COMPILE_FLAGS ${UUID_INCLUDE} LINK_LIBRARIES swiftDemangling ${UUID_LIBRARIES} LLVM_COMPONENT_DEPENDS support) message(STATUS "Swift version: ${SWIFT_VERSION}") message(STATUS "Swift vendor: ${SWIFT_VENDOR}") string(REGEX REPLACE "([0-9]+)\\.[0-9]+(\\.[0-9]+)?" "\\1" SWIFT_VERSION_MAJOR ${SWIFT_VERSION}) string(REGEX REPLACE "[0-9]+\\.([0-9]+)(\\.[0-9]+)?" "\\1" SWIFT_VERSION_MINOR ${SWIFT_VERSION}) set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DSWIFT_VERSION=${SWIFT_VERSION} -DSWIFT_VERSION_MAJOR=${SWIFT_VERSION_MAJOR} -DSWIFT_VERSION_MINOR=${SWIFT_VERSION_MINOR}") if ("${SWIFT_VERSION}" MATCHES "[0-9]+\\.[0-9]+\\.[0-9]+") string(REGEX REPLACE "[0-9]+\\.[0-9]+\\.([0-9]+)" "\\1" SWIFT_VERSION_PATCHLEVEL ${SWIFT_VERSION}) set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DSWIFT_HAS_VERSION_PATCHLEVEL=1 -DSWIFT_VERSION_PATCHLEVEL=${SWIFT_VERSION_PATCHLEVEL}") else() set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DSWIFT_HAS_VERSION_PATCHLEVEL=0") endif() if(NOT "${SWIFT_VENDOR}" STREQUAL "") set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DSWIFT_VENDOR=\"\\\"${SWIFT_VENDOR}\\\"\"") endif() set(SWIFT_COMPILER_VERSION "" CACHE STRING "The string that identifies the SCM commit(s) for this build") message(STATUS "Swift compiler version: ${SWIFT_COMPILER_VERSION}") message(STATUS "Embedded clang compiler version: ${CLANG_COMPILER_VERSION}") if(SWIFT_COMPILER_VERSION) set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DSWIFT_COMPILER_VERSION=\"\\\"${SWIFT_COMPILER_VERSION}\\\"\"") endif() if(CLANG_COMPILER_VERSION) set_property(SOURCE Version.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -DCLANG_COMPILER_VERSION=\"\\\"${CLANG_COMPILER_VERSION}\\\"\"") endif()