Skip to content

Commit 40a9bfb

Browse files
authored
Merge pull request swiftlang#144 from dgrove-oss/linux-compile-fixes
fixes for compilation/linking problems on linux
2 parents fb84c14 + a23ea8c commit 40a9bfb

File tree

14 files changed

+46
-9
lines changed

14 files changed

+46
-9
lines changed

Diff for: .gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,5 @@ config
2929
configure
3030
libtool
3131
.dirstamp
32+
/dispatch/module.modulemap
33+
/private/module.modulemap

Diff for: configure.ac

+15-1
Original file line numberDiff line numberDiff line change
@@ -432,6 +432,20 @@ AS_IF([test "x$have_mach" = "xtrue"], [
432432
])
433433
AM_CONDITIONAL(HAVE_DARWIN_LD, [test "x$dispatch_cv_ld_darwin" == "xyes"])
434434

435+
#
436+
# symlink platform-specific module.modulemap files
437+
#
438+
AS_CASE([$target_os],
439+
[darwin*], [ dispatch_module_map_os=darwin ],
440+
[ dispatch_module_map_os=generic ]
441+
)
442+
AC_CONFIG_COMMANDS([modulemaps], [
443+
ln -fs $dispatch_module_map_os/module.modulemap $ac_top_srcdir/dispatch/module.modulemap
444+
ln -fs $dispatch_module_map_os/module.modulemap $ac_top_srcdir/private/module.modulemap
445+
],
446+
[dispatch_module_map_os="$dispatch_module_map_os"]
447+
)
448+
435449
#
436450
# Temporary: some versions of clang do not mark __builtin_trap() as
437451
# __attribute__((__noreturn__)). Detect and add if required.
@@ -449,6 +463,6 @@ AC_CONFIG_FILES([Makefile dispatch/Makefile man/Makefile os/Makefile private/Mak
449463
#
450464
# Generate testsuite links
451465
#
452-
AC_CONFIG_LINKS([tests/dispatch:$top_srcdir/private tests/leaks-wrapper:tests/leaks-wrapper.sh])
466+
AC_CONFIG_LINKS([tests/dispatch:$ac_top_srcdir/private tests/leaks-wrapper:tests/leaks-wrapper.sh])
453467

454468
AC_OUTPUT

Diff for: dispatch/Makefile.am

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,5 +24,5 @@ dispatch_HEADERS= \
2424
time.h
2525

2626
if HAVE_SWIFT
27-
dispatch_HEADERS+=module.map
27+
dispatch_HEADERS+=module.modulemap
2828
endif
File renamed without changes.
File renamed without changes.

Diff for: libdispatch.xcodeproj/project.pbxproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -662,8 +662,8 @@
662662
C01866BD1C5973210040FC07 /* libdispatch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libdispatch.a; sourceTree = BUILT_PRODUCTS_DIR; };
663663
C01866BE1C59735B0040FC07 /* libdispatch-mp-static.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "libdispatch-mp-static.xcconfig"; sourceTree = "<group>"; };
664664
C01866BF1C5976C90040FC07 /* run-on-install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "run-on-install.sh"; sourceTree = "<group>"; };
665-
C901445E1C73A7FE002638FC /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
666-
C90144641C73A845002638FC /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; path = module.modulemap; sourceTree = "<group>"; };
665+
C901445E1C73A7FE002638FC /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = darwin/module.modulemap; sourceTree = "<group>"; };
666+
C90144641C73A845002638FC /* module.modulemap */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = "sourcecode.module-map"; name = module.modulemap; path = darwin/module.modulemap; sourceTree = "<group>"; };
667667
C913AC0E143BD34800B78976 /* data_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = data_private.h; sourceTree = "<group>"; tabWidth = 8; };
668668
C927F35F10FD7F1000C5AB8B /* ddt.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ddt.xcodeproj; path = tools/ddt/ddt.xcodeproj; sourceTree = "<group>"; };
669669
C96CE17A1CEB851600F4B8E6 /* dispatch_objc.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = dispatch_objc.m; sourceTree = "<group>"; };
File renamed without changes.

Diff for: private/generic/module.modulemap

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module DispatchPrivate [system] [extern_c] {
2+
umbrella header "private.h"
3+
exclude header "mach_private.h"
4+
module * { export * }
5+
export *
6+
}
7+
8+
module DispatchIntrospectionPrivate [system] [extern_c] {
9+
header "introspection_private.h"
10+
export *
11+
}

Diff for: src/Makefile.am

+3-2
Original file line numberDiff line numberDiff line change
@@ -87,10 +87,11 @@ if BUILD_OWN_BLOCKS_RUNTIME
8787
libdispatch_la_SOURCES+= BlocksRuntime/data.c BlocksRuntime/runtime.c
8888
CBLOCKS_FLAGS+= -I$(top_srcdir)/src/BlocksRuntime
8989
CXXBLOCKS_FLAGS+= -I$(top_srcdir)/src/BlocksRuntime
90+
BLOCKS_RUNTIME_LIBS=-ldl
9091
endif
9192

9293
libdispatch_la_LDFLAGS=-avoid-version
93-
libdispatch_la_LIBADD=$(KQUEUE_LIBS) $(PTHREAD_WORKQUEUE_LIBS) $(BSD_OVERLAY_LIBS)
94+
libdispatch_la_LIBADD=$(KQUEUE_LIBS) $(PTHREAD_WORKQUEUE_LIBS) $(BSD_OVERLAY_LIBS) $(BLOCKS_RUNTIME_LIBS)
9495

9596
if HAVE_DARWIN_LD
9697
libdispatch_la_LDFLAGS+=-Wl,-compatibility_version,1 \
@@ -163,7 +164,7 @@ SWIFT_GEN_FILES= \
163164
$(SWIFT_OBJ_FILES:%=%.~partial.swiftdoc) \
164165
$(SWIFT_OBJ_FILES:%=%.~partial.swiftdeps)
165166

166-
SWIFTC_FLAGS = -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.map -I$(abs_top_srcdir) -Xcc -fblocks
167+
SWIFTC_FLAGS = -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks
167168
if DISPATCH_ENABLE_OPTIMIZATION
168169
SWIFTC_FLAGS+=-O
169170
endif

Diff for: src/init.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1197,7 +1197,7 @@ dispatch_source_type_readwrite_init(dispatch_source_t ds,
11971197
dispatch_queue_t q DISPATCH_UNUSED)
11981198
{
11991199
ds->ds_is_level = true;
1200-
#ifdef HAVE_DECL_NOTE_LOWAT
1200+
#if HAVE_DECL_NOTE_LOWAT
12011201
// bypass kernel check for device kqueue support rdar://19004921
12021202
ds->ds_dkev->dk_kevent.fflags = NOTE_LOWAT;
12031203
#endif

Diff for: src/queue.c

+7
Original file line numberDiff line numberDiff line change
@@ -2734,12 +2734,16 @@ _dispatch_block_create_with_voucher_and_priority(dispatch_block_flags_t flags,
27342734
bool assign = (flags & DISPATCH_BLOCK_ASSIGN_CURRENT);
27352735

27362736
if (assign && !(flags & DISPATCH_BLOCK_HAS_VOUCHER)) {
2737+
#if OS_VOUCHER_ACTIVITY_SPI
27372738
voucher = VOUCHER_CURRENT;
2739+
#endif
27382740
flags |= DISPATCH_BLOCK_HAS_VOUCHER;
27392741
}
2742+
#if OS_VOUCHER_ACTIVITY_SPI
27402743
if (voucher == VOUCHER_CURRENT) {
27412744
voucher = _voucher_get();
27422745
}
2746+
#endif
27432747
if (assign && !(flags & DISPATCH_BLOCK_HAS_PRIORITY)) {
27442748
pri = _dispatch_priority_propagate();
27452749
flags |= DISPATCH_BLOCK_HAS_PRIORITY;
@@ -5840,6 +5844,9 @@ _dispatch_main_queue_callback_4CF(
58405844
void
58415845
dispatch_main(void)
58425846
{
5847+
dispatch_once_f(&_dispatch_root_queues_pred, NULL,
5848+
_dispatch_root_queues_init_once);
5849+
58435850
#if HAVE_PTHREAD_MAIN_NP
58445851
if (pthread_main_np()) {
58455852
#endif

Diff for: src/shims/linux_stubs.h

-2
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ typedef uint32_t voucher_activity_trace_id_t;
4747

4848
typedef uint32_t voucher_activity_id_t;
4949

50-
typedef uint32_t _voucher_activity_buffer_hook_t;;
51-
5250
typedef uint32_t voucher_activity_flag_t;
5351

5452
typedef struct { } mach_msg_header_t;

Diff for: src/voucher.c

+2
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,7 @@ _voucher_init(void)
15601560
{
15611561
}
15621562

1563+
#if OS_VOUCHER_ACTIVITY_SPI
15631564
void*
15641565
voucher_activity_get_metadata_buffer(size_t *length)
15651566
{
@@ -1631,6 +1632,7 @@ voucher_activity_initialize_4libtrace(voucher_activity_hooks_t hooks)
16311632
{
16321633
(void)hooks;
16331634
}
1635+
#endif // OS_VOUCHER_ACTIVITY_SPI
16341636

16351637
size_t
16361638
_voucher_debug(voucher_t v, char* buf, size_t bufsiz)

Diff for: src/voucher_internal.h

+2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,10 @@ voucher_get_mach_voucher(voucher_t voucher);
9090
void _voucher_init(void);
9191
void _voucher_atfork_child(void);
9292
void _voucher_activity_debug_channel_init(void);
93+
#if OS_VOUCHER_ACTIVITY_SPI
9394
void _voucher_activity_swap(firehose_activity_id_t old_id,
9495
firehose_activity_id_t new_id);
96+
#endif
9597
void _voucher_xref_dispose(voucher_t voucher);
9698
void _voucher_dispose(voucher_t voucher);
9799
size_t _voucher_debug(voucher_t v, char* buf, size_t bufsiz);

0 commit comments

Comments
 (0)