blob: 5510318e5d5504e5baef4308f900b8f38d6ed647 [file] [log] [blame]
# 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()