Skip to content

Commit 57c5c28

Browse files
authored
Merge pull request swiftlang#110 from dgrove-oss/build-variants
autoconf support for selecting build variant
2 parents 77299ec + 6389607 commit 57c5c28

File tree

4 files changed

+51
-1
lines changed

4 files changed

+51
-1
lines changed

configure.ac

Lines changed: 40 additions & 0 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])

src/Makefile.am

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ AM_CPPFLAGS=-I$(top_builddir) -I$(top_srcdir) -I$(top_srcdir)/private
6161

6262
DISPATCH_CFLAGS=-Wall $(VISIBILITY_FLAGS) $(OMIT_LEAF_FP_FLAGS) \
6363
$(MARCH_FLAGS) $(KQUEUE_CFLAGS) $(BSD_OVERLAY_CFLAGS)
64+
if DISPATCH_ENABLE_ASSERTS
65+
DISPATCH_CFLAGS+=-DDISPATCH_DEBUG=1
66+
endif
6467
AM_CFLAGS= $(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CBLOCKS_FLAGS)
6568
AM_OBJCFLAGS=$(DISPATCH_CFLAGS) $(CBLOCKS_FLAGS)
6669
AM_CXXFLAGS=$(PTHREAD_WORKQUEUE_CFLAGS) $(DISPATCH_CFLAGS) $(CXXBLOCKS_FLAGS)
@@ -150,6 +153,9 @@ SWIFT_GEN_FILES= \
150153
$(SWIFT_OBJ_FILES:%=%.~partial.swiftdeps)
151154

152155
SWIFTC_FLAGS = -Xcc -fmodule-map-file=$(abs_top_srcdir)/dispatch/module.modulemap -I$(abs_top_srcdir) -Xcc -fblocks
156+
if DISPATCH_ENABLE_OPTIMIZATION
157+
SWIFTC_FLAGS+=-O
158+
endif
153159

154160
$(abs_builddir)/swift/%.o: $(abs_srcdir)/swift/%.swift
155161
$(SWIFTC) -frontend -c $(SWIFT_ABS_SRC_FILES) -primary-file $< \

src/internal.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,12 @@ DISPATCH_EXPORT DISPATCH_NOTHROW void dispatch_atfork_child(void);
353353

354354
#if DISPATCH_DEBUG
355355
// sys/queue.h debugging
356+
#if defined(__linux__)
357+
#define QUEUE_MACRO_DEBUG 1
358+
#else
356359
#undef TRASHIT
357360
#define TRASHIT(x) do {(x) = (void *)-1;} while (0)
361+
#endif
358362
#endif // DISPATCH_DEBUG
359363
#define _TAILQ_TRASH_ENTRY(elm, field) do { \
360364
TRASHIT((elm)->field.tqe_next); \

src/source.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6585,7 +6585,7 @@ dispatch_kevent_debug(const char *verb, const _dispatch_kevent_qos_s *kev,
65856585
#else
65866586
0ull, 0ull,
65876587
#endif
6588-
str, function, line);
6588+
function, line);
65896589
#endif
65906590
}
65916591

0 commit comments

Comments
 (0)