forked from osandov/drgn
-
Notifications
You must be signed in to change notification settings - Fork 6
/
configure.ac
158 lines (133 loc) · 5.44 KB
/
configure.ac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
dnl Copyright (c) Meta Platforms, Inc. and affiliates.
dnl SPDX-License-Identifier: LGPL-2.1-or-later
AC_INIT([libdrgn], [0.0.27],
[https://github.com/osandov/drgn/issues],,
[https://github.com/osandov/drgn])
AC_CONFIG_AUX_DIR([build-aux])
AC_CONFIG_MACRO_DIR([m4])
AC_PROG_CC
AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign nostdinc subdir-objects])
AM_SILENT_RULES([yes])
AM_PROG_AR
LT_INIT
AC_SYS_LARGEFILE
AC_REQUIRE_AUX_FILE([tap-driver.sh])
MY_C_AUTO
MY_C_SWITCH_ENUM
MY_CHECK_VA_ARGS_COMMA_DELETION
AC_ARG_ENABLE([openmp],
[AS_HELP_STRING([--enable-openmp@<:@=ARG@:>@],
[use OpenMP. ARG may be yes, no, or the name of
the OpenMP runtime library to use (e.g., gomp or
omp)
@<:@default=yes@:>@])],
[], [enable_openmp=yes])
OPENMP_CFLAGS=
OPENMP_LIBS=
AS_CASE(["x$enable_openmp"],
[xyes], [OPENMP_CFLAGS=-fopenmp],
[xno], [],
dnl Use -Wc so that -fopenmp only gets passed when compiling, not
dnl linking, otherwise the linker will add the default runtime library.
[OPENMP_CFLAGS=-Wc,-fopenmp
OPENMP_LIBS=-l$enable_openmp])
AC_SUBST(OPENMP_CFLAGS)
AC_SUBST(OPENMP_LIBS)
dnl We need Python for code generation even if we're not building the bindings.
AM_PATH_PYTHON([3.6])
AC_ARG_ENABLE([python],
[AS_HELP_STRING([--enable-python],
[build Python bindings @<:@default=no@:>@])],
[], [enable_python=no])
AM_CONDITIONAL([ENABLE_PYTHON], [test "x$enable_python" != xno])
AM_COND_IF([ENABLE_PYTHON],
[AS_IF([test -z "$PYTHON_CPPFLAGS"],
[prog="import sysconfig
include = sysconfig.get_path('include')
platinclude = sysconfig.get_path('platinclude')
include_paths = [[include]]
if platinclude != include:
include_paths.append(plat_include)
print(' '.join('-I' + path for path in include_paths))"
PYTHON_CPPFLAGS=`"$PYTHON" -c "$prog"`])
AC_SUBST(PYTHON_CPPFLAGS)
AC_MSG_CHECKING([for $PYTHON development headers])
save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS $PYTHON_CPPFLAGS"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[#include <Python.h>]])],
[AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])
AC_MSG_ERROR(
[Could not compile test program with Python headers.
You may need to install your distribution's Python development package (e.g.,
python3-devel or python3-dev) or specify the location of the Python development
headers by setting the PYTHON_CPPFLAGS environment variable.])])
CPPFLAGS="$save_CPPFLAGS"])
PKG_PROG_PKG_CONFIG
PKG_CHECK_MODULES(elfutils, [libelf >= 0.165 libdw >= 0.165])
AC_ARG_WITH([libkdumpfile],
[AS_HELP_STRING([--with-libkdumpfile],
[build with support for the makedumpfile kernel
core dump format using libkdumpfile
@<:@default=auto@:>@])],
[], [with_libkdumpfile=auto])
AS_CASE(["x$with_libkdumpfile"],
[xyes], [PKG_CHECK_MODULES(libkdumpfile, [libkdumpfile])],
[xauto], [PKG_CHECK_MODULES(libkdumpfile, [libkdumpfile],
[with_libkdumpfile=yes],
[with_libkdumpfile=no])])
AM_CONDITIONAL([WITH_LIBKDUMPFILE], [test "x$with_libkdumpfile" = xyes])
AM_COND_IF([WITH_LIBKDUMPFILE], [AC_DEFINE(WITH_LIBKDUMPFILE)])
dnl We need check for running tests, but we don't want to fail the build over
dnl it. Instead, if it's not found, set variables so that only `make check`
dnl fails.
PKG_CHECK_MODULES(check, [check >= 0.10.0],,
[check_CFLAGS="\$(error Test requires 'check' ('check-devel') >= 0.10.0)"
check_LIBS="\$(error Test requires 'check' ('check-devel') >= 0.10.0)"])
AC_ARG_ENABLE([compiler-warnings],
[AS_HELP_STRING([--enable-compiler-warnings@<:@=no|yes|error@:>@],
[enable compiler warnings. If no, then only the
default compiler warnings are enabled. If yes,
then additional warnings required by the package
are enabled. If error, then warnings are treated
as errors (this is only intended for
developers). @<:@default=yes@:>@])],
[], [enable_compiler_warnings=no])
dnl Make Clang error instead of warn for unknown warning options.
AX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],
[compiler_flags_test="-Werror=unknown-warning-option"],
[compiler_flags_test=""])
AS_IF([test "x$enable_compiler_warnings" != xno],
[AX_APPEND_COMPILE_FLAGS([ dnl
-Wall dnl
-Wformat-overflow=2 dnl
-Wformat-truncation=2 dnl
-Wimplicit-fallthrough dnl
-Wmissing-prototypes dnl
-Wpointer-arith dnl
-Wshadow dnl
-Wvla dnl
-Wno-format-zero-length dnl
], [WARN_CFLAGS], [$compiler_flags_test])])
AS_IF([test "x$enable_compiler_warnings" = xerror],
[AX_APPEND_FLAG([-Werror], [WARN_CFLAGS])])
AC_SUBST(WARN_CFLAGS)
AC_ARG_ENABLE([asan],
[AS_HELP_STRING([--enable-asan], [enable AddressSanitizer])],
[], [enable_asan=no])
AS_IF([test "x$enable_asan" != xno],
[AX_APPEND_FLAG([-fsanitize=address], [SANITIZER_CFLAGS])
AX_APPEND_FLAG([-fno-omit-frame-pointer], [SANITIZER_CFLAGS])
AX_APPEND_FLAG([-fsanitize=address], [SANITIZER_LDFLAGS])])
AC_ARG_ENABLE([ubsan],
[AS_HELP_STRING([--enable-ubsan],
[enable UndefinedBehaviorSanitizer])],
[], [enable_ubsan=no])
AS_IF([test "x$enable_ubsan" != xno],
[AX_APPEND_FLAG([-fsanitize=undefined], [SANITIZER_CFLAGS])
AX_APPEND_FLAG([-fno-omit-frame-pointer], [SANITIZER_CFLAGS])
AX_APPEND_FLAG([-fsanitize=undefined], [SANITIZER_LDFLAGS])])
AC_SUBST(SANITIZER_CFLAGS)
AC_SUBST(SANITIZER_LDFLAGS)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT