Skip to content

Commit 2a7f068

Browse files
committed
Add libkqueue as a git submodule to pick up fixes
1 parent 77299ec commit 2a7f068

File tree

6 files changed

+90
-25
lines changed

6 files changed

+90
-25
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
[submodule "libpwq"]
22
path = libpwq
33
url = https://github.com/mheily/libpwq.git
4+
[submodule "libkqueue"]
5+
path = libkqueue
6+
url = https://github.com/mheily/libkqueue.git

Makefile.am

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,23 @@
55
ACLOCAL_AMFLAGS = -I m4
66

77
if BUILD_OWN_PTHREAD_WORKQUEUES
8-
SUBDIRS= \
9-
dispatch \
10-
libpwq \
11-
man \
12-
os \
13-
private \
14-
src \
15-
tests
16-
else
17-
SUBDIRS= \
18-
dispatch \
19-
man \
20-
os \
21-
private \
22-
src \
23-
tests
8+
MAYBE_PTHREAD_WORKQUEUES = libpwq
9+
endif
10+
11+
if BUILD_OWN_KQUEUES
12+
MAYBE_KQUEUES = libkqueue
2413
endif
2514

15+
SUBDIRS= \
16+
dispatch \
17+
$(MAYBE_PTHREAD_WORKQUEUES) \
18+
$(MAYBE_KQUEUES) \
19+
man \
20+
os \
21+
private \
22+
src \
23+
tests
24+
2625
EXTRA_DIST= \
2726
README.md \
2827
LICENSE \

configure.ac

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,46 @@ AC_CONFIG_MACRO_DIR([m4])
1111
ac_clean_files=a.out.dSYM
1212
AM_MAINTAINER_MODE
1313

14+
#
15+
# Command line argument to specify build variant (default to release).
16+
# Impacts default value of CFLAGS et al. so must come before AC_PROG_CC
17+
#
18+
AC_ARG_WITH([build-variant],
19+
[AS_HELP_STRING([--with-build-variant=release|debug|releaseassert|releasedebuginfo], [Specify build variant [default=release]])],
20+
[dispatch_build_variant=${withval}],
21+
[dispatch_build_variant=release]
22+
)
23+
AS_CASE([$dispatch_build_variant],
24+
[debug], [
25+
default_compiler_flags="-g -O0"
26+
dispatch_enable_asserts=true
27+
dispatch_enable_optimization=false
28+
],
29+
[release], [
30+
default_compiler_flags="-O2"
31+
dispatch_enable_asserts=false
32+
dispatch_enable_optimization=true
33+
],
34+
[releaseassert], [
35+
default_compiler_flags="-O2"
36+
dispatch_enable_asserts=true
37+
dispatch_enable_optimization=true
38+
],
39+
[releasedebuginfo], [
40+
default_compiler_flags="-g -O2"
41+
dispatch_enable_asserts=false
42+
dispatch_enable_optimization=true
43+
],
44+
[AC_MSG_ERROR("invalid build-variant $dispatch_build_variant")]
45+
)
46+
AM_CONDITIONAL(DISPATCH_ENABLE_ASSERTS, $dispatch_enable_asserts)
47+
AM_CONDITIONAL(DISPATCH_ENABLE_OPTIMIZATION, $dispatch_enable_optimization)
48+
49+
: ${CFLAGS=$default_compiler_flags}
50+
: ${CXXFLAGS=$default_compiler_flags}
51+
: ${OBJCFLAGS=$default_compiler_flags}
52+
: ${OBJCXXFLAGS=$default_compiler_flags}
53+
1454
AC_PROG_CC([clang gcc cc])
1555
AC_PROG_CXX([clang++ g++ c++])
1656
AC_PROG_OBJC([clang gcc cc])
@@ -183,12 +223,18 @@ esac
183223
AC_SEARCH_LIBS(clock_gettime, rt)
184224
AC_SEARCH_LIBS(pthread_create, pthread)
185225

186-
#
187-
# Prefer native kqueue(2); otherwise use libkqueue if present.
188-
#
189-
AC_CHECK_HEADER(sys/event.h, [],
190-
[PKG_CHECK_MODULES(KQUEUE, libkqueue)]
226+
AS_IF([test -f $srcdir/libkqueue/configure.ac],
227+
[AC_DEFINE(BUILD_OWN_KQUEUES, 1, [Define if building libkqueue from source])
228+
ac_configure_args="--disable-libkqueue-install $ac_configure_args"
229+
AC_CONFIG_SUBDIRS([libkqueue])
230+
build_own_kqueues=true],
231+
[build_own_kqueues=false
232+
AC_CHECK_HEADER(sys/event.h, [],
233+
[PKG_CHECK_MODULES(KQUEUE, libkqueue)]
234+
)
235+
]
191236
)
237+
AM_CONDITIONAL(BUILD_OWN_KQUEUES, $build_own_kqueues)
192238

193239
AC_CHECK_FUNCS([strlcpy getprogname], [],
194240
[PKG_CHECK_MODULES(BSD_OVERLAY, libbsd-overlay,[

libkqueue

Submodule libkqueue added at f4f39d6

src/Makefile.am

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,20 @@ EXTRA_libdispatch_la_DEPENDENCIES=
6060
AM_CPPFLAGS=-I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/private
6161

6262
DISPATCH_CFLAGS=-Wall $(VISIBILITY_FLAGS) $(OMIT_LEAF_FP_FLAGS) \
63-
$(MARCH_FLAGS) $(KQUEUE_CFLAGS) $(BSD_OVERLAY_CFLAGS)
64-
AM_CFLAGS= $(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CBLOCKS_FLAGS)
63+
$(MARCH_FLAGS) $(BSD_OVERLAY_CFLAGS)
64+
if DISPATCH_ENABLE_ASSERTS
65+
DISPATCH_CFLAGS+=-DDISPATCH_DEBUG=1
66+
endif
67+
AM_CFLAGS= $(KQUEUE_CFLAGS) $(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CBLOCKS_FLAGS)
6568
AM_OBJCFLAGS=$(DISPATCH_CFLAGS) $(CBLOCKS_FLAGS)
66-
AM_CXXFLAGS=$(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CXXBLOCKS_FLAGS)
69+
AM_CXXFLAGS=$(KQUEUE_CFLAGS) $(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CXXBLOCKS_FLAGS)
6770
AM_OBJCXXFLAGS=$(DISPATCH_CFLAGS) $(CXXBLOCKS_FLAGS)
6871

72+
if BUILD_OWN_KQUEUES
73+
KQUEUE_LIBS+=$(top_builddir)/libkqueue/libkqueue.la
74+
KQUEUE_CFLAGS+=-I$(top_srcdir)/libkqueue/include
75+
endif
76+
6977
if BUILD_OWN_PTHREAD_WORKQUEUES
7078
PTHREAD_WORKQUEUE_LIBS=$(top_builddir)/libpwq/libpthread_workqueue.la
7179
PTHREAD_WORKQUEUE_CFLAGS=-I$(top_srcdir)/libpwq/include
@@ -150,7 +158,10 @@ SWIFT_GEN_FILES= \
150158
$(SWIFT_OBJ_FILES:%=%.~partial.swiftdeps)
151159

152160
SWIFTC_FLAGS = -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks
153-
161+
if DISPATCH_ENABLE_OPTIMIZATION
162+
SWIFTC_FLAGS+=-O
163+
endif
164+
154165
$(abs_builddir)/swift/%.o: $(abs_srcdir)/swift/%.swift
155166
$(SWIFTC) -frontend -c $(SWIFT_ABS_SRC_FILES) -primary-file $< \
156167
$(SWIFTC_FLAGS) -module-name Dispatch -module-link-name dispatch \

tests/Makefile.am

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ AM_OBJCFLAGS=$(DISPATCH_TESTS_CFLAGS) $(CBLOCKS_FLAGS)
115115
AM_CXXFLAGS=$(DISPATCH_TESTS_CFLAGS) $(CXXBLOCKS_FLAGS) $(BSD_OVERLAY_CFLAGS)
116116
AM_OBJCXXFLAGS=$(DISPATCH_TESTS_CFLAGS) $(CXXBLOCKS_FLAGS)
117117

118+
if BUILD_OWN_KQUEUES
119+
KQUEUE_LIBS+=$(top_builddir)/libkqueue/libkqueue.la
120+
KQUEUE_CFLAGS+=-I$(top_srcdir)/libkqueue/include
121+
endif
122+
118123
if !BUILD_OWN_PTHREAD_WORKQUEUES
119124
if HAVE_PTHREAD_WORKQUEUES
120125
PTHREAD_WORKQUEUE_LIBS=-lpthread_workqueue

0 commit comments

Comments
 (0)