Merge pull request #307 from compnerd/swift-tests
build: explicitly link tests to swiftCore swiftOnoneSupport
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 379a095..c58bd89 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,7 +33,32 @@
option(ENABLE_DISPATCH_INIT_CONSTRUCTOR "enable libdispatch_init as a constructor" ON)
set(USE_LIBDISPATCH_INIT_CONSTRUCTOR ${ENABLE_DISPATCH_INIT_CONSTRUCTOR})
-# TODO(compnerd) swift options
+option(ENABLE_SWIFT "enable libdispatch swift overlay" OFF)
+if(ENABLE_SWIFT)
+ if(NOT CMAKE_SWIFT_COMPILER)
+ message(FATAL_ERROR "CMAKE_SWIFT_COMPILER must be defined to enable swift")
+ endif()
+
+ get_filename_component(SWIFT_TOOLCHAIN ${CMAKE_SWIFT_COMPILER} DIRECTORY)
+ get_filename_component(SWIFT_TOOLCHAIN ${SWIFT_TOOLCHAIN} DIRECTORY)
+
+ string(TOLOWER ${CMAKE_SYSTEM_NAME} SWIFT_OS)
+ set(SWIFT_RUNTIME_LIBDIR ${SWIFT_TOOLCHAIN}/lib/swift/${SWIFT_OS}/${CMAKE_SYSTEM_PROCESSOR})
+
+ add_library(swiftCore
+ SHARED IMPORTED GLOBAL)
+ set_target_properties(swiftCore
+ PROPERTIES
+ IMPORTED_LOCATION
+ ${SWIFT_RUNTIME_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}swiftCore${CMAKE_SHARED_LIBRARY_SUFFIX})
+
+ add_library(swiftSwiftOnoneSupport
+ SHARED IMPORTED GLOBAL)
+ set_target_properties(swiftSwiftOnoneSupport
+ PROPERTIES
+ IMPORTED_LOCATION
+ ${SWIFT_RUNTIME_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}swiftSwiftOnoneSupport${CMAKE_SHARED_LIBRARY_SUFFIX})
+endif()
option(BUILD_SHARED_LIBS "build shared libraries" ON)
diff --git a/dispatch/CMakeLists.txt b/dispatch/CMakeLists.txt
index dbfb866..b50b1ba 100644
--- a/dispatch/CMakeLists.txt
+++ b/dispatch/CMakeLists.txt
@@ -14,11 +14,12 @@
source.h
time.h
DESTINATION
- ${CMAKE_INSTALL_FULL_INCLUDEDIR}/dispatch/)
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}/dispatch)
if(ENABLE_SWIFT)
+ get_filename_component(MODULE_MAP module.modulemap REALPATH)
install(FILES
- module.modulemap
+ ${MODULE_MAP}
DESTINATION
- ${CMAKE_INSTALL_FULL_INCLUEDIR}/dispatch/)
+ ${CMAKE_INSTALL_FULL_INCLUDEDIR}/dispatch)
endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e6f265e..475902d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -69,7 +69,7 @@
data.m
object.m)
endif()
-if(CMAKE_SWIFT_COMPILER)
+if(ENABLE_SWIFT)
set(swift_optimization_flags)
if(CMAKE_BUILD_TYPE MATCHES Release)
set(swift_optimization_flags -O)
@@ -203,4 +203,11 @@
dispatch
DESTINATION
"${CMAKE_INSTALL_FULL_LIBDIR}")
+if(ENABLE_SWIFT)
+ install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftmodule
+ ${CMAKE_CURRENT_BINARY_DIR}/swift/Dispatch.swiftdoc
+ DESTINATION
+ "${CMAKE_INSTALL_FULL_LIBDIR}/swift/${SWIFT_OS}/${CMAKE_SYSTEM_PROCESSOR}")
+endif()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 0f8628f..eee686f 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -2,19 +2,6 @@
execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CMAKE_SOURCE_DIR}/private" "${CMAKE_CURRENT_BINARY_DIR}/dispatch")
execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/leaks-wrapper.sh" "${CMAKE_CURRENT_BINARY_DIR}/leaks-wrapper")
-# TODO(compnerd) hoist this out of the test directory
-if(SWIFT_RUNTIME_LIBDIR)
- add_library(swiftCore SHARED IMPORTED)
- set_target_properties(swiftCore
- PROPERTIES
- IMPORTED_LOCATION ${SWIFT_RUNTIME_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}swiftCore${CMAKE_SHARED_LIBRARY_SUFFIX})
-
- add_library(swiftSwiftOnoneSupport SHARED IMPORTED)
- set_target_properties(swiftSwiftOnoneSupport
- PROPERTIES
- IMPORTED_LOCATION ${SWIFT_RUNTIME_LIBDIR}/${CMAKE_SHARED_LIBRARY_PREFIX}swiftSwiftOnoneSupport${CMAKE_SHARED_LIBRARY_SUFFIX})
-endif()
-
add_library(bsdtests
STATIC
bsdtests.c
@@ -74,10 +61,11 @@
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR})
- if(CMAKE_SWIFT_COMPILER)
- # For testing in swift.org CI system; make deadlines lenient by default
- # to reduce probability of test failures due to machine load.
- target_compile_options(${name} PRIVATE -DLENIENT_DEADLINES=1)
+ if(ENABLE_SWIFT)
+ # For testing in swift.org CI system; make deadlines lenient by default
+ # to reduce probability of test failures due to machine load.
+ target_compile_options(${name} PRIVATE -DLENIENT_DEADLINES=1)
+ target_link_libraries(${name} PRIVATE swiftCore swiftSwiftOnoneSupport)
endif()
if(WITH_BLOCKS_RUNTIME)
target_include_directories(${name}