@@ -465,10 +465,7 @@ option(SWIFT_BUILD_SOURCEKIT "Build SourceKit" TRUE)
465
465
option (SWIFT_ENABLE_SOURCEKIT_TESTS "Enable running SourceKit tests" ${SWIFT_BUILD_SOURCEKIT} )
466
466
467
467
if (SWIFT_BUILD_SYNTAXPARSERLIB OR SWIFT_BUILD_SOURCEKIT )
468
- if (CMAKE_SYSTEM_NAME STREQUAL Darwin )
469
- set (SWIFT_NEED_EXPLICIT_LIBDISPATCH FALSE )
470
- else ()
471
- set (SWIFT_NEED_EXPLICIT_LIBDISPATCH TRUE )
468
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Darwin )
472
469
if (NOT EXISTS "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} " )
473
470
message (SEND_ERROR "SyntaxParserLib and SourceKit require libdispatch on non-Darwin hosts. Please specify SWIFT_PATH_TO_LIBDISPATCH_SOURCE" )
474
471
endif ()
@@ -954,122 +951,124 @@ if (LLVM_ENABLE_DOXYGEN)
954
951
message (STATUS "Doxygen: enabled" )
955
952
endif ()
956
953
957
- if (SWIFT_NEED_EXPLICIT_LIBDISPATCH )
958
- if (CMAKE_C_COMPILER_ID STREQUAL Clang AND
959
- CMAKE_C_COMPILER_VERSION VERSION_GREATER 3.8
960
- OR LLVM_USE_SANITIZER )
961
- set (SWIFT_LIBDISPATCH_C_COMPILER ${CMAKE_C_COMPILER} )
962
- set (SWIFT_LIBDISPATCH_CXX_COMPILER ${CMAKE_CXX_COMPILER} )
963
- elseif (${CMAKE_SYSTEM_NAME} STREQUAL ${CMAKE_HOST_SYSTEM_NAME} )
964
- if (CMAKE_SYSTEM_NAME STREQUAL Windows )
965
- set (SWIFT_LIBDISPATCH_C_COMPILER
966
- $< TARGET_FILE_DIR:clang> /clang-cl${CMAKE_EXECUTABLE_SUFFIX} )
967
- set (SWIFT_LIBDISPATCH_CXX_COMPILER
968
- $< 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 ()
969
971
else ()
970
- set (SWIFT_LIBDISPATCH_C_COMPILER $< TARGET_FILE_DIR:clang> /clang )
971
- 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)" )
972
973
endif ()
973
- else ()
974
- message (SEND_ERROR "libdispatch requires a newer clang compiler (${CMAKE_C_COMPILER_VERSION} < 3.9)" )
975
- endif ()
976
974
977
- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS )
978
- set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR bin )
979
- else ()
980
- set (SOURCEKIT_LIBDISPATCH_RUNTIME_DIR lib )
981
- 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 ()
982
980
983
- include (ExternalProject )
984
- ExternalProject_Add (libdispatch
985
- SOURCE_DIR
986
- "${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} "
987
- CMAKE_ARGS
988
- -DCMAKE_AR=${CMAKE_AR}
989
- -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
990
- -DCMAKE_C_COMPILER=${SWIFT_LIBDISPATCH_C_COMPILER}
991
- -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS}
992
- -DCMAKE_CXX_COMPILER=${SWIFT_LIBDISPATCH_CXX_COMPILER}
993
- -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}
994
- -DCMAKE_MAKE_PROGRAM=${CMAKE_MAKE_PROGRAM}
995
- -DCMAKE_INSTALL_LIBDIR=lib
996
- -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR>
997
- -DCMAKE_LINKER=${CMAKE_LINKER}
998
- -DCMAKE_RANLIB=${CMAKE_RANLIB}
999
- -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
1000
- -DBUILD_SHARED_LIBS=YES
1001
- -DENABLE_SWIFT=NO
1002
- -DENABLE_TESTING=NO
1003
- INSTALL_COMMAND
1004
- # NOTE(compnerd) provide a custom install command to
1005
- # ensure that we strip out the DESTDIR environment
1006
- # from the sub-build
1007
- ${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --target install
1008
- STEP_TARGETS
1009
- install
1010
- BUILD_BYPRODUCTS
1011
- <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1012
- <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1013
- <INSTALL_DIR>/${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1014
- <INSTALL_DIR>/lib/${CMAKE_IMPORT_LIBRARY_PREFIX}BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1015
- BUILD_ALWAYS
1016
- 1 )
1017
-
1018
- ExternalProject_Get_Property (libdispatch install_dir )
1019
-
1020
- # CMake does not like the addition of INTERFACE_INCLUDE_DIRECTORIES without
1021
- # the directory existing. Just create the location which will be populated
1022
- # during the installation.
1023
- file (MAKE_DIRECTORY ${install_dir} /include )
1024
-
1025
- add_library (dispatch SHARED IMPORTED )
1026
- set_target_properties (dispatch
1027
- PROPERTIES
1028
- IMPORTED_LOCATION
1029
- ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}dispatch${CMAKE_SHARED_LIBRARY_SUFFIX}
1030
- IMPORTED_IMPLIB
1031
- ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX}dispatch${CMAKE_IMPORT_LIBRARY_SUFFIX}
1032
- INTERFACE_INCLUDE_DIRECTORIES
1033
- ${install_dir} /include )
1034
-
1035
- add_library (BlocksRuntime SHARED IMPORTED )
1036
- set_target_properties (BlocksRuntime
1037
- PROPERTIES
1038
- IMPORTED_LOCATION
1039
- ${install_dir} /${SOURCEKIT_LIBDISPATCH_RUNTIME_DIR}/${CMAKE_SHARED_LIBRARY_PREFIX}BlocksRuntime${CMAKE_SHARED_LIBRARY_SUFFIX}
1040
- IMPORTED_IMPLIB
1041
- ${install_dir} /lib/${CMAKE_IMPORT_LIBRARY_PREFIX}BlocksRuntime${CMAKE_IMPORT_LIBRARY_SUFFIX}
1042
- INTERFACE_INCLUDE_DIRECTORIES
1043
- ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime )
1044
-
1045
- add_dependencies (dispatch libdispatch-install )
1046
- add_dependencies (BlocksRuntime libdispatch-install )
1047
-
1048
- if (SWIFT_HOST_VARIANT_SDK STREQUAL WINDOWS )
1049
- set (SOURCEKIT_RUNTIME_DIR bin )
1050
- else ()
1051
- set (SOURCEKIT_RUNTIME_DIR lib )
1052
- endif ()
1053
- add_dependencies (sourcekit-inproc BlocksRuntime dispatch )
1054
- swift_install_in_component (FILES
1055
- $< TARGET_FILE:dispatch>
1056
- $< TARGET_FILE:BlocksRuntime>
1057
- DESTINATION ${SOURCEKIT_RUNTIME_DIR}
1058
- COMPONENT sourcekit-inproc )
1059
- 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 )
1060
1052
swift_install_in_component (FILES
1061
- $< TARGET_LINKER_FILE :dispatch>
1062
- $< TARGET_LINKER_FILE :BlocksRuntime>
1063
- DESTINATION lib
1053
+ $< TARGET_FILE :dispatch>
1054
+ $< TARGET_FILE :BlocksRuntime>
1055
+ DESTINATION ${SOURCEKIT_RUNTIME_DIR}
1064
1056
COMPONENT sourcekit-inproc )
1065
- 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 ()
1066
1064
1067
1065
1068
- # FIXME(compnerd) this should be taken care of by the
1069
- # INTERFACE_INCLUDE_DIRECTORIES above
1070
- include_directories (AFTER
1071
- ${SWIFT_PATH_TO_LIBDISPATCH_SOURCE} /src/BlocksRuntime
1072
- ${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 ()
1073
1072
endif ()
1074
1073
1075
1074
# Add all of the subdirectories, where we actually do work.
0 commit comments