@@ -180,6 +180,14 @@ option(SWIFT_ENABLE_PARSEABLE_MODULE_INTERFACES
180180 "Generate .swiftinterface files alongside .swiftmodule files"
181181 TRUE )
182182
183+ # Allow building Swift with Clang's Profile Guided Optimization
184+ if (SWIFT_PROFDATA_FILE AND EXISTS ${SWIFT_PROFDATA_FILE} )
185+ if (NOT CMAKE_C_COMPILER_ID MATCHES Clang)
186+ message (FATAL_ERROR "SWIFT_PROFDATA_FILE can only be specified when compiling with clang" )
187+ endif ()
188+ add_definitions ("-fprofile-instr-use=${SWIFT_PROFDATA_FILE} " )
189+ endif ()
190+
183191#
184192# User-configurable Android specific options.
185193#
@@ -311,10 +319,6 @@ option(SWIFT_STDLIB_ENABLE_SIL_OWNERSHIP
311319 "Build the standard libraries and overlays with sil ownership enabled."
312320 FALSE )
313321
314- option (SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS
315- "Build the standard libraries, overlays, and runtime with normal arguments at +0"
316- TRUE )
317-
318322option (SWIFT_ENABLE_RUNTIME_FUNCTION_COUNTERS
319323 "Enable runtime function counters and expose the API."
320324 FALSE )
@@ -409,13 +413,24 @@ elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
409413 set (SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE )
410414 set (SWIFT_BUILD_SOURCEKIT_default FALSE )
411415 endif ()
416+ elseif (CMAKE_SYSTEM_NAME STREQUAL Windows)
417+ if (EXISTS ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} AND
418+ CMAKE_CXX_COMPILER_ID STREQUAL Clang)
419+ set (SWIFT_BUILD_SYNTAXPARSERLIB_default TRUE )
420+ set (SWIFT_BUILD_SOURCEKIT_default TRUE )
421+ else ()
422+ set (SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE )
423+ set (SWIFT_BUILD_SOURCEKIT_default FALSE )
424+ endif ()
412425else ()
413426 set (SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE )
414427 set (SWIFT_BUILD_SOURCEKIT_default FALSE )
415428endif ()
416429option (SWIFT_BUILD_SYNTAXPARSERLIB
417430 "Build the Swift Syntax Parser library"
418431 ${SWIFT_BUILD_SYNTAXPARSERLIB_default} )
432+ option (SWIFT_BUILD_ONLY_SYNTAXPARSERLIB
433+ "Only build the Swift Syntax Parser library" FALSE )
419434option (SWIFT_BUILD_SOURCEKIT
420435 "Build SourceKit"
421436 ${SWIFT_BUILD_SOURCEKIT_default} )
@@ -492,15 +507,11 @@ include(SwiftSharedCMakeConfig)
492507# Support building Swift as a standalone project, using LLVM as an
493508# external library.
494509if (SWIFT_BUILT_STANDALONE)
495- swift_common_standalone_build_config(SWIFT SWIFT_CROSS_COMPILING )
510+ swift_common_standalone_build_config(SWIFT)
496511else ()
497512 swift_common_unified_build_config(SWIFT)
498513endif ()
499514
500- if (NOT EXISTS "${CLANG_MAIN_INCLUDE_DIR} /clang/AST/Decl.h" )
501- message (FATAL_ERROR "Clang is missing from llvm/tools subdirectory." )
502- endif ()
503-
504515set (SWIFT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR} " )
505516set (SWIFT_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} " )
506517set (SWIFT_CMAKE_DIR "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
@@ -803,20 +814,17 @@ message(STATUS "Building host Swift tools for ${SWIFT_HOST_VARIANT_SDK} ${SWIFT_
803814message (STATUS " Build type: ${CMAKE_BUILD_TYPE} " )
804815message (STATUS " Assertions: ${LLVM_ENABLE_ASSERTIONS} " )
805816message (STATUS " LTO: ${SWIFT_TOOLS_ENABLE_LTO} " )
806- message (STATUS " +0 Normal Args: ${SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS} " )
807817message (STATUS "" )
808818
809819if (SWIFT_BUILD_STDLIB OR SWIFT_BUILD_SDK_OVERLAY)
810820
811821 message (STATUS "Building Swift standard library and overlays for SDKs: ${SWIFT_SDKS} " )
812822 message (STATUS " Build type: ${SWIFT_STDLIB_BUILD_TYPE} " )
813823 message (STATUS " Assertions: ${SWIFT_STDLIB_ASSERTIONS} " )
814- message (STATUS " +0 Normal Args: ${SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS} " )
815824 message (STATUS "" )
816825
817826 message (STATUS "Building Swift runtime with:" )
818827 message (STATUS " Leak Detection Checker Entrypoints: ${SWIFT_RUNTIME_ENABLE_LEAK_CHECKER} " )
819- message (STATUS " +0 Normal Args: ${SWIFT_ENABLE_GUARANTEED_NORMAL_ARGUMENTS} " )
820828 message (STATUS "" )
821829
822830else ()
@@ -901,8 +909,18 @@ if(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
901909 set (SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER} )
902910 set (SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER} )
903911 elseif (${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME} )
904- set (SWIFT_LIBDISPATCH_C_COMPILER ${PATH_TO_CLANG_BUILD} /bin/clang)
905- set (SWIFT_LIBDISPATCH_CXX_COMPILER ${PATH_TO_CLANG_BUILD} /bin/clang++)
912+ get_target_property (CLANG_LOCATION clang LOCATION )
913+ get_filename_component (CLANG_LOCATION ${CLANG_LOCATION} DIRECTORY )
914+
915+ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
916+ set (SWIFT_LIBDISPATCH_C_COMPILER
917+ ${CLANG_LOCATION} /clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
918+ set (SWIFT_LIBDISPATCH_CXX_COMPILER
919+ ${CLANG_LOCATION} /clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
920+ else ()
921+ set (SWIFT_LIBDISPATCH_C_COMPILER ${CLANG_LOCATION} /clang)
922+ set (SWIFT_LIBDISPATCH_CXX_COMPILER ${CLANG_LOCATION} /clang++)
923+ endif ()
906924 else ()
907925 message (SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)" )
908926 endif ()
@@ -977,12 +995,24 @@ if(SWIFT_NEED_EXPLICIT_LIBDISPATCH)
977995 add_dependencies (dispatch libdispatch-install )
978996 add_dependencies (BlocksRuntime libdispatch-install )
979997
998+ if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
999+ set (SOURCEKIT_RUNTIME_DIR bin)
1000+ else ()
1001+ set (SOURCEKIT_RUNTIME_DIR lib)
1002+ endif ()
9801003 swift_install_in_component(sourcekit-inproc
9811004 FILES
9821005 $<TARGET_FILE:dispatch>
9831006 $<TARGET_FILE:BlocksRuntime>
984- DESTINATION
985- lib${LLVM_LIBDIR_SUFFIX} )
1007+ DESTINATION ${SOURCEKIT_RUNTIME_DIR} )
1008+ if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1009+ swift_install_in_component(sourcekit-inproc
1010+ FILES
1011+ $<TARGET_LINKER_FILE:dispatch>
1012+ $<TARGET_LINKER_FILE:BlocksRuntime>
1013+ DESTINATION lib)
1014+ endif ()
1015+
9861016
9871017 # FIXME(compnerd) this should be taken care of by the
9881018 # INTERFACE_INCLUDE_DIRECTORIES above
0 commit comments