From 0f402b85fe0cee61b1b23345f178b80be4168cab Mon Sep 17 00:00:00 2001 From: David Grove Date: Tue, 5 Jul 2016 14:31:17 -0400 Subject: [PATCH] avoid requiring __DISPATCH_BUILDING_SWIFT_MODULE__ macro on Linux Instead of using a special macro, check for __has_feature(modules) to activate including stdio.h in dispatch.h on Linux. Also, fix one place where OS_OBJECT_SWIFT_3 was used outside of an OS_OBJECT_USE_OBJC block (to prepare for SWIFT_SDK_OVERLAY_DISPATCH_EPOCH being defined by the clang importer on non-Darwin platforms). --- dispatch/dispatch.h | 4 ++-- dispatch/object.h | 2 +- src/Makefile.am | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dispatch/dispatch.h b/dispatch/dispatch.h index c865f8482..9869bc2ec 100644 --- a/dispatch/dispatch.h +++ b/dispatch/dispatch.h @@ -44,8 +44,8 @@ #endif #ifdef __linux__ -#ifdef __DISPATCH_BUILDING_SWIFT_MODULE__ -#include // for off_t +#if __has_feature(modules) +#include // for off_t (to match Glibc.modulemap) #endif #define DISPATCH_LINUX_UNAVAILABLE() \ __DISPATCH_UNAVAILABLE("This interface is unavailable on linux systems") diff --git a/dispatch/object.h b/dispatch/object.h index 041ee8116..8b2030138 100644 --- a/dispatch/object.h +++ b/dispatch/object.h @@ -108,7 +108,7 @@ typedef union { #define DISPATCH_RETURNS_RETAINED #endif -#if OS_OBJECT_SWIFT3 +#if OS_OBJECT_SWIFT3 && OS_OBJECT_USE_OBJC #define DISPATCH_SOURCE_TYPE_DECL(name) \ DISPATCH_EXPORT struct dispatch_source_type_s \ _dispatch_source_type_##name; \ diff --git a/src/Makefile.am b/src/Makefile.am index 58fa4ef12..f06a49347 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -149,7 +149,7 @@ SWIFT_GEN_FILES= \ $(SWIFT_OBJ_FILES:%=%.~partial.swiftdoc) \ $(SWIFT_OBJ_FILES:%=%.~partial.swiftdeps) -SWIFTC_FLAGS = -Xcc -D__DISPATCH_BUILDING_SWIFT_MODULE__=1 -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks +SWIFTC_FLAGS = -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks $(abs_builddir)/swift/%.o: $(abs_srcdir)/swift/%.swift $(SWIFTC) -frontend -c $(SWIFT_ABS_SRC_FILES) -primary-file $< \