@@ -455,35 +455,21 @@ if(MSVC OR "${CMAKE_SIMULATE_ID}" STREQUAL MSVC)
455
455
include (ClangClCompileRules)
456
456
endif ()
457
457
458
- if (CMAKE_C_COMPILER_ID STREQUAL Clang)
458
+ if (CMAKE_C_COMPILER_ID MATCHES Clang)
459
459
add_compile_options ($<$<OR :$<COMPILE_LANGUAGE:C>,$<COMPILE_LANGUAGE:CXX>>:-Werror=gnu>)
460
460
endif ()
461
461
462
- if (CMAKE_SYSTEM_NAME STREQUAL Darwin OR
463
- EXISTS "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} " )
464
- set (SWIFT_BUILD_SYNTAXPARSERLIB_default TRUE )
465
- set (SWIFT_BUILD_SOURCEKIT_default TRUE )
466
- else ()
467
- set (SWIFT_BUILD_SYNTAXPARSERLIB_default FALSE )
468
- set (SWIFT_BUILD_SOURCEKIT_default FALSE )
469
- endif ()
470
- option (SWIFT_BUILD_SYNTAXPARSERLIB
471
- "Build the Swift Syntax Parser library"
472
- ${SWIFT_BUILD_SYNTAXPARSERLIB_default} )
473
- option (SWIFT_BUILD_ONLY_SYNTAXPARSERLIB
474
- "Only build the Swift Syntax Parser library" FALSE )
475
- option (SWIFT_BUILD_SOURCEKIT
476
- "Build SourceKit"
477
- ${SWIFT_BUILD_SOURCEKIT_default} )
478
- option (SWIFT_ENABLE_SOURCEKIT_TESTS
479
- "Enable running SourceKit tests"
480
- ${SWIFT_BUILD_SOURCEKIT_default} )
481
-
482
- if (NOT "${CMAKE_SYSTEM_NAME} " STREQUAL "Darwin" AND
483
- (SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT))
484
- set (SWIFT_NEED_EXPLICIT_LIBDISPATCH TRUE )
485
- else ()
486
- set (SWIFT_NEED_EXPLICIT_LIBDISPATCH FALSE )
462
+ option (SWIFT_BUILD_SYNTAXPARSERLIB "Build the Swift Syntax Parser library" TRUE )
463
+ option (SWIFT_BUILD_ONLY_SYNTAXPARSERLIB "Only build the Swift Syntax Parser library" FALSE )
464
+ option (SWIFT_BUILD_SOURCEKIT "Build SourceKit" TRUE )
465
+ option (SWIFT_ENABLE_SOURCEKIT_TESTS "Enable running SourceKit tests" ${SWIFT_BUILD_SOURCEKIT} )
466
+
467
+ if (SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT)
468
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
469
+ if (NOT EXISTS "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} " )
470
+ message (SEND_ERROR "SyntaxParserLib and SourceKit require libdispatch on non-Darwin hosts. Please specify SWIFT_PATH_TO_LIBDISPATCH_SOURCE" )
471
+ endif ()
472
+ endif ()
487
473
endif ()
488
474
489
475
#
@@ -965,122 +951,124 @@ if (LLVM_ENABLE_DOXYGEN)
965
951
message (STATUS "Doxygen: enabled" )
966
952
endif ()
967
953
968
- if (SWIFT_NEED_EXPLICIT_LIBDISPATCH)
969
- if (CMAKE_C_COMPILER_ID STREQUAL Clang AND
970
- CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
971
- OR LLVM_USE_SANITIZER)
972
- set (SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER} )
973
- set (SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER} )
974
- elseif (${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME} )
975
- if (CMAKE_SYSTEM_NAME STREQUAL Windows)
976
- set (SWIFT_LIBDISPATCH_C_COMPILER
977
- $<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
978
- set (SWIFT_LIBDISPATCH_CXX_COMPILER
979
- $<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
954
+ if (SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT)
955
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin)
956
+ if (CMAKE_C_COMPILER_ID STREQUAL Clang AND
957
+ CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
958
+ OR LLVM_USE_SANITIZER)
959
+ set (SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER} )
960
+ set (SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER} )
961
+ elseif (${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME} )
962
+ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
963
+ set (SWIFT_LIBDISPATCH_C_COMPILER
964
+ $<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
965
+ set (SWIFT_LIBDISPATCH_CXX_COMPILER
966
+ $<TARGET_FILE_DIR:clang>/clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
967
+ else ()
968
+ set (SWIFT_LIBDISPATCH_C_COMPILER $<TARGET_FILE_DIR:clang>/clang)
969
+ set (SWIFT_LIBDISPATCH_CXX_COMPILER $<TARGET_FILE_DIR:clang>/clang++)
970
+ endif ()
980
971
else ()
981
- set (SWIFT_LIBDISPATCH_C_COMPILER $<TARGET_FILE_DIR:clang>/clang)
982
- set (SWIFT_LIBDISPATCH_CXX_COMPILER $<TARGET_FILE_DIR:clang>/clang++)
972
+ message (SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)" )
983
973
endif ()
984
- else ()
985
- message (SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)" )
986
- endif ()
987
974
988
- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
989
- set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR bin)
990
- else ()
991
- set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR lib)
992
- endif ()
975
+ if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
976
+ set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR bin)
977
+ else ()
978
+ set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR lib)
979
+ endif ()
993
980
994
- include (ExternalProject)
995
- ExternalProject_Add(libdispatch
996
- SOURCE_DIR
997
- "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} "
998
- CMAKE_ARGS
999
- -DCMAKE_AR=${CMAKE_AR}
1000
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
1001
- -DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
1002
- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
1003
- -DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
1004
- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
1005
- -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
1006
- -DCMAKE_INSTALL_LIBDIR=lib
1007
- -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
1008
- -DCMAKE_LINKER=${CMAKE_LINKER}
1009
- -DCMAKE_RANLIB=${CMAKE_RANLIB}
1010
- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
1011
- -DBUILD_SHARED_LIBS=YES
1012
- -DENABLE_SWIFT=NO
1013
- -DENABLE_TESTING=NO
1014
- INSTALL_COMMAND
1015
- # NOTE(compnerd) provide a custom install command to
1016
- # ensure that we strip out the DESTDIR environment
1017
- # from the sub-build
1018
- ${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
1019
- STEP_TARGETS
1020
- install
1021
- BUILD_BYPRODUCTS
1022
- <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1023
- <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX} dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1024
- <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1025
- <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX} BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1026
- BUILD_ALWAYS
1027
- 1)
1028
-
1029
- ExternalProject_Get_Property(libdispatch install_dir)
1030
-
1031
- # CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
1032
- # the directory existing. Just create the location which will be populated
1033
- # during the installation.
1034
- file (MAKE_DIRECTORY ${install_dir} /include )
1035
-
1036
- add_library (dispatch SHARED IMPORTED )
1037
- set_target_properties (dispatch
1038
- PROPERTIES
1039
- IMPORTED_LOCATION
1040
- ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1041
- IMPORTED_IMPLIB
1042
- ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX} dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1043
- INTERFACE_INCLUDE_DIRECTORIES
1044
- ${install_dir} /include )
1045
-
1046
- add_library (BlocksRuntime SHARED IMPORTED )
1047
- set_target_properties (BlocksRuntime
1048
- PROPERTIES
1049
- IMPORTED_LOCATION
1050
- ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1051
- IMPORTED_IMPLIB
1052
- ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX} BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1053
- INTERFACE_INCLUDE_DIRECTORIES
1054
- ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime)
1055
-
1056
- add_dependencies (dispatch libdispatch-install )
1057
- add_dependencies (BlocksRuntime libdispatch-install )
1058
-
1059
- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1060
- set (SOURCEKIT_RUNTIME_DIR bin)
1061
- else ()
1062
- set (SOURCEKIT_RUNTIME_DIR lib)
1063
- endif ()
1064
- add_dependencies (sourcekit-inproc BlocksRuntime dispatch)
1065
- swift_install_in_component(FILES
1066
- $<TARGET_FILE:dispatch>
1067
- $<TARGET_FILE:BlocksRuntime>
1068
- DESTINATION ${SOURCEKIT_RUNTIME_DIR}
1069
- COMPONENT sourcekit-inproc)
1070
- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
981
+ include (ExternalProject)
982
+ ExternalProject_Add(libdispatch
983
+ SOURCE_DIR
984
+ "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} "
985
+ CMAKE_ARGS
986
+ -DCMAKE_AR=${CMAKE_AR}
987
+ -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
988
+ -DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
989
+ -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
990
+ -DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
991
+ -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
992
+ -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
993
+ -DCMAKE_INSTALL_LIBDIR=lib
994
+ -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
995
+ -DCMAKE_LINKER=${CMAKE_LINKER}
996
+ -DCMAKE_RANLIB=${CMAKE_RANLIB}
997
+ -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
998
+ -DBUILD_SHARED_LIBS=YES
999
+ -DENABLE_SWIFT=NO
1000
+ -DENABLE_TESTING=NO
1001
+ INSTALL_COMMAND
1002
+ # NOTE(compnerd) provide a custom install command to
1003
+ # ensure that we strip out the DESTDIR environment
1004
+ # from the sub-build
1005
+ ${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
1006
+ STEP_TARGETS
1007
+ install
1008
+ BUILD_BYPRODUCTS
1009
+ <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1010
+ <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX} dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1011
+ <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1012
+ <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX} BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1013
+ BUILD_ALWAYS
1014
+ 1)
1015
+
1016
+ ExternalProject_Get_Property(libdispatch install_dir)
1017
+
1018
+ # CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
1019
+ # the directory existing. Just create the location which will be populated
1020
+ # during the installation.
1021
+ file (MAKE_DIRECTORY ${install_dir} /include )
1022
+
1023
+ add_library (dispatch SHARED IMPORTED )
1024
+ set_target_properties (dispatch
1025
+ PROPERTIES
1026
+ IMPORTED_LOCATION
1027
+ ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1028
+ IMPORTED_IMPLIB
1029
+ ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX} dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1030
+ INTERFACE_INCLUDE_DIRECTORIES
1031
+ ${install_dir} /include )
1032
+
1033
+ add_library (BlocksRuntime SHARED IMPORTED )
1034
+ set_target_properties (BlocksRuntime
1035
+ PROPERTIES
1036
+ IMPORTED_LOCATION
1037
+ ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX} BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1038
+ IMPORTED_IMPLIB
1039
+ ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX} BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1040
+ INTERFACE_INCLUDE_DIRECTORIES
1041
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime)
1042
+
1043
+ add_dependencies (dispatch libdispatch-install )
1044
+ add_dependencies (BlocksRuntime libdispatch-install )
1045
+
1046
+ if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1047
+ set (SOURCEKIT_RUNTIME_DIR bin)
1048
+ else ()
1049
+ set (SOURCEKIT_RUNTIME_DIR lib)
1050
+ endif ()
1051
+ add_dependencies (sourcekit-inproc BlocksRuntime dispatch)
1071
1052
swift_install_in_component(FILES
1072
- $<TARGET_LINKER_FILE :dispatch>
1073
- $<TARGET_LINKER_FILE :BlocksRuntime>
1074
- DESTINATION lib
1053
+ $<TARGET_FILE :dispatch>
1054
+ $<TARGET_FILE :BlocksRuntime>
1055
+ DESTINATION ${SOURCEKIT_RUNTIME_DIR}
1075
1056
COMPONENT sourcekit-inproc)
1076
- endif ()
1057
+ if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS)
1058
+ swift_install_in_component(FILES
1059
+ $<TARGET_LINKER_FILE:dispatch>
1060
+ $<TARGET_LINKER_FILE:BlocksRuntime>
1061
+ DESTINATION lib
1062
+ COMPONENT sourcekit-inproc)
1063
+ endif ()
1077
1064
1078
1065
1079
- # FIXME(compnerd) this should be taken care of by the
1080
- # INTERFACE_INCLUDE_DIRECTORIES above
1081
- include_directories (AFTER
1082
- ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime
1083
- ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} )
1066
+ # FIXME(compnerd) this should be taken care of by the
1067
+ # INTERFACE_INCLUDE_DIRECTORIES above
1068
+ include_directories (AFTER
1069
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime
1070
+ ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} )
1071
+ endif ()
1084
1072
endif ()
1085
1073
1086
1074
# Add all of the subdirectories, where we actually do work.
@@ -1107,7 +1095,6 @@ else()
1107
1095
# Some tools (e.g. swift-reflection-dump) rely on a host swiftReflection, so
1108
1096
# ensure we build that when building tools.
1109
1097
if (SWIFT_INCLUDE_TOOLS)
1110
- add_subdirectory (stdlib/public /Reflection)
1111
1098
add_subdirectory (stdlib/public /SwiftShims)
1112
1099
endif ()
1113
1100
endif ()
@@ -1129,6 +1116,8 @@ endif()
1129
1116
1130
1117
add_subdirectory (utils)
1131
1118
1119
+ add_subdirectory (userdocs)
1120
+
1132
1121
if ("${CMAKE_SYSTEM_NAME} " STREQUAL "Darwin" )
1133
1122
if (SWIFT_BUILD_PERF_TESTSUITE)
1134
1123
add_subdirectory (benchmark)
0 commit comments