xref: /aosp_15_r20/external/google-breakpad/configure.ac (revision 9712c20fc9bbfbac4935993a2ca0b3958c5adad2)
1*9712c20fSFrederick Mayle# Copyright 2006 Google LLC
2*9712c20fSFrederick Mayle#
3*9712c20fSFrederick Mayle# Redistribution and use in source and binary forms, with or without
4*9712c20fSFrederick Mayle# modification, are permitted provided that the following conditions are
5*9712c20fSFrederick Mayle# met:
6*9712c20fSFrederick Mayle#
7*9712c20fSFrederick Mayle#     * Redistributions of source code must retain the above copyright
8*9712c20fSFrederick Mayle# notice, this list of conditions and the following disclaimer.
9*9712c20fSFrederick Mayle#     * Redistributions in binary form must reproduce the above
10*9712c20fSFrederick Mayle# copyright notice, this list of conditions and the following disclaimer
11*9712c20fSFrederick Mayle# in the documentation and/or other materials provided with the
12*9712c20fSFrederick Mayle# distribution.
13*9712c20fSFrederick Mayle#     * Neither the name of Google LLC nor the names of its
14*9712c20fSFrederick Mayle# contributors may be used to endorse or promote products derived from
15*9712c20fSFrederick Mayle# this software without specific prior written permission.
16*9712c20fSFrederick Mayle#
17*9712c20fSFrederick Mayle# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18*9712c20fSFrederick Mayle# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19*9712c20fSFrederick Mayle# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20*9712c20fSFrederick Mayle# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21*9712c20fSFrederick Mayle# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22*9712c20fSFrederick Mayle# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23*9712c20fSFrederick Mayle# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24*9712c20fSFrederick Mayle# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25*9712c20fSFrederick Mayle# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26*9712c20fSFrederick Mayle# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27*9712c20fSFrederick Mayle# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*9712c20fSFrederick Mayle
29*9712c20fSFrederick Mayle
30*9712c20fSFrederick MayleAC_PREREQ([2.71])
31*9712c20fSFrederick Mayle
32*9712c20fSFrederick MayleAC_INIT([breakpad],[0.1],[[email protected]])
33*9712c20fSFrederick Maylednl Sanity check: the argument is just a file that should exist.
34*9712c20fSFrederick MayleAC_CONFIG_SRCDIR(README.md)
35*9712c20fSFrederick MayleAC_CONFIG_AUX_DIR(autotools)
36*9712c20fSFrederick MayleAC_CONFIG_MACRO_DIR([m4])
37*9712c20fSFrederick MayleAC_CANONICAL_HOST
38*9712c20fSFrederick Mayle
39*9712c20fSFrederick MayleAM_INIT_AUTOMAKE(subdir-objects tar-ustar 1.13)
40*9712c20fSFrederick MayleAC_CONFIG_HEADERS(src/config.h)
41*9712c20fSFrederick MayleAM_MAINTAINER_MODE
42*9712c20fSFrederick Mayle
43*9712c20fSFrederick MayleAM_PROG_AR
44*9712c20fSFrederick MayleAM_PROG_AS
45*9712c20fSFrederick MayleAC_PROG_CC
46*9712c20fSFrederick MayleAM_PROG_CC_C_O
47*9712c20fSFrederick MayleAC_PROG_CPP
48*9712c20fSFrederick MayleAC_PROG_CXX
49*9712c20fSFrederick MayleAC_PROG_RANLIB
50*9712c20fSFrederick Mayle
51*9712c20fSFrederick Maylednl This must come before all the feature tests below.
52*9712c20fSFrederick MayleAC_ARG_ENABLE(m32,
53*9712c20fSFrederick Mayle              AS_HELP_STRING([--enable-m32],
54*9712c20fSFrederick Mayle                             [Compile/build with -m32]
55*9712c20fSFrederick Mayle                             [(default is no)]),,
56*9712c20fSFrederick Mayle              [enable_m32=no])
57*9712c20fSFrederick Mayleif test "x$enable_m32" = xyes; then
58*9712c20fSFrederick Mayle  CFLAGS="${CFLAGS} -m32"
59*9712c20fSFrederick Mayle  CXXFLAGS="${CXXFLAGS} -m32"
60*9712c20fSFrederick Maylefi
61*9712c20fSFrederick Mayle
62*9712c20fSFrederick MayleAC_SYS_LARGEFILE
63*9712c20fSFrederick MayleAX_PTHREAD
64*9712c20fSFrederick MayleAC_CHECK_HEADERS([a.out.h sys/mman.h sys/random.h])
65*9712c20fSFrederick MayleAC_CHECK_FUNCS([arc4random getcontext getrandom memfd_create])
66*9712c20fSFrederick MayleAM_CONDITIONAL([HAVE_GETCONTEXT], [test "x$ac_cv_func_getcontext" = xyes])
67*9712c20fSFrederick MayleAM_CONDITIONAL([HAVE_MEMFD_CREATE], [test "x$ac_cv_func_memfd_create" = xyes])
68*9712c20fSFrederick Mayle
69*9712c20fSFrederick MayleAX_CXX_COMPILE_STDCXX(17, , mandatory)
70*9712c20fSFrederick Mayle
71*9712c20fSFrederick Maylednl Test supported warning flags.
72*9712c20fSFrederick MayleWARN_CXXFLAGS=
73*9712c20fSFrederick Maylednl This warning flag is used by clang.  Its default behavior is to warn when
74*9712c20fSFrederick Maylednl given an unknown flag rather than error out.
75*9712c20fSFrederick MayleAC_LANG_PUSH([C++])
76*9712c20fSFrederick MayleAX_CHECK_COMPILE_FLAG([-Werror=unknown-warning-option],[
77*9712c20fSFrederick Mayle  ax_compiler_flags_test="-Werror=unknown-warning-option"
78*9712c20fSFrederick Mayle],[
79*9712c20fSFrederick Mayle  ax_compiler_flags_test=""
80*9712c20fSFrederick Mayle])
81*9712c20fSFrederick MayleAX_APPEND_COMPILE_FLAGS(m4_flatten([
82*9712c20fSFrederick Mayle  -Wmissing-braces
83*9712c20fSFrederick Mayle  -Wnon-virtual-dtor
84*9712c20fSFrederick Mayle  -Woverloaded-virtual
85*9712c20fSFrederick Mayle  -Wreorder
86*9712c20fSFrederick Mayle  -Wsign-compare
87*9712c20fSFrederick Mayle  -Wunused-local-typedefs
88*9712c20fSFrederick Mayle  -Wunused-variable
89*9712c20fSFrederick Mayle  -Wvla
90*9712c20fSFrederick Mayle]), [WARN_CXXFLAGS], [${ax_compiler_flags_test}])
91*9712c20fSFrederick MayleAS_VAR_APPEND([WARN_CXXFLAGS], " -Werror")
92*9712c20fSFrederick MayleAC_LANG_POP([C++])
93*9712c20fSFrederick MayleAC_SUBST([WARN_CXXFLAGS])
94*9712c20fSFrederick Mayle
95*9712c20fSFrederick Maylednl Test support for O_CLOEXEC
96*9712c20fSFrederick MayleAX_CHECK_DEFINE([fcntl.h], [O_CLOEXEC], [],
97*9712c20fSFrederick Mayle                [AC_DEFINE([O_CLOEXEC], [0], [Fallback definition for old systems])])
98*9712c20fSFrederick Mayle
99*9712c20fSFrederick Mayle# Only build Linux client libs when compiling for Linux
100*9712c20fSFrederick Maylecase $host in
101*9712c20fSFrederick Mayle  *-*-linux* | *-android* )
102*9712c20fSFrederick Mayle    LINUX_HOST=true
103*9712c20fSFrederick Mayle    ;;
104*9712c20fSFrederick Mayleesac
105*9712c20fSFrederick MayleAM_CONDITIONAL(LINUX_HOST, test x$LINUX_HOST = xtrue)
106*9712c20fSFrederick Mayle
107*9712c20fSFrederick Mayle# Only use Android support headers when compiling for Android
108*9712c20fSFrederick Maylecase $host in
109*9712c20fSFrederick Mayle  *-android*)
110*9712c20fSFrederick Mayle    ANDROID_HOST=true
111*9712c20fSFrederick Mayle    ;;
112*9712c20fSFrederick Mayleesac
113*9712c20fSFrederick MayleAM_CONDITIONAL(ANDROID_HOST, test x$ANDROID_HOST = xtrue)
114*9712c20fSFrederick Mayle
115*9712c20fSFrederick Mayle# Some tools (like mac ones) only support x86 currently.
116*9712c20fSFrederick Maylecase $host_cpu in
117*9712c20fSFrederick Mayle  i?86|x86_64)
118*9712c20fSFrederick Mayle    X86_HOST=true
119*9712c20fSFrederick Mayle    ;;
120*9712c20fSFrederick Mayleesac
121*9712c20fSFrederick MayleAM_CONDITIONAL(X86_HOST, test x$X86_HOST = xtrue)
122*9712c20fSFrederick Mayle
123*9712c20fSFrederick MayleAC_ARG_ENABLE(processor,
124*9712c20fSFrederick Mayle              AS_HELP_STRING([--disable-processor],
125*9712c20fSFrederick Mayle                             [Don't build processor library]
126*9712c20fSFrederick Mayle                             [(default is no)]),,
127*9712c20fSFrederick Mayle              [enable_processor=yes])
128*9712c20fSFrederick MayleAM_CONDITIONAL(DISABLE_PROCESSOR, test "x$enable_processor" != xyes)
129*9712c20fSFrederick Mayle
130*9712c20fSFrederick MayleAC_ARG_ENABLE(tools,
131*9712c20fSFrederick Mayle              AS_HELP_STRING([--disable-tools],
132*9712c20fSFrederick Mayle                             [Don't build tool binaries]
133*9712c20fSFrederick Mayle                             [(default is no)]),,
134*9712c20fSFrederick Mayle              [enable_tools=yes])
135*9712c20fSFrederick MayleAM_CONDITIONAL(DISABLE_TOOLS, test "x$enable_tools" != xyes)
136*9712c20fSFrederick Mayle
137*9712c20fSFrederick Mayleif test x$LINUX_HOST = xfalse -a "x$enable_processor" != xyes -a "x$enable_tools" != xyes; then
138*9712c20fSFrederick Mayle  AC_MSG_ERROR([--disable-processor and --disable-tools were specified, and not building for Linux. Nothing to build!])
139*9712c20fSFrederick Maylefi
140*9712c20fSFrederick Mayle
141*9712c20fSFrederick MayleAC_ARG_ENABLE(system-test-libs,
142*9712c20fSFrederick Mayle              AS_HELP_STRING([--enable-system-test-libs],
143*9712c20fSFrederick Mayle                             [Use gtest/gmock/etc... from the system instead ]
144*9712c20fSFrederick Mayle                             [of the local copies (default is local)]),,
145*9712c20fSFrederick Mayle              [enable_system_test_libs=no])
146*9712c20fSFrederick MayleAM_CONDITIONAL(SYSTEM_TEST_LIBS, test "x$enable_system_test_libs" = xyes)
147*9712c20fSFrederick Mayle
148*9712c20fSFrederick MayleAC_ARG_VAR([GMOCK_CFLAGS], [Compiler flags for gmock])
149*9712c20fSFrederick MayleAC_ARG_VAR([GMOCK_LIBS], [Linker flags for gmock])
150*9712c20fSFrederick MayleAC_ARG_VAR([GTEST_CFLAGS], [Compiler flags for gtest])
151*9712c20fSFrederick MayleAC_ARG_VAR([GTEST_LIBS], [Linker flags for gtest])
152*9712c20fSFrederick Mayleif test "x$enable_system_test_libs" = xyes; then
153*9712c20fSFrederick Mayle  : "${GMOCK_CFLAGS:=-pthread}"
154*9712c20fSFrederick Mayle  : "${GMOCK_LIBS:=-lgmock -lgtest -pthread -lpthread}"
155*9712c20fSFrederick Mayle  : "${GTEST_CFLAGS:=-pthread}"
156*9712c20fSFrederick Mayle  : "${GTEST_LIBS:=-lgtest -pthread -lpthread}"
157*9712c20fSFrederick Maylefi
158*9712c20fSFrederick Mayle
159*9712c20fSFrederick MayleAC_ARG_ENABLE(selftest,
160*9712c20fSFrederick Mayle              AS_HELP_STRING([--enable-selftest],
161*9712c20fSFrederick Mayle                             [Run extra tests with "make check" ]
162*9712c20fSFrederick Mayle                             [(may conflict with optimizations) ]
163*9712c20fSFrederick Mayle                             [(default is no)]),,
164*9712c20fSFrederick Mayle              [enable_selftest=no])
165*9712c20fSFrederick MayleAM_CONDITIONAL(SELFTEST, test "x$enable_selftest" = xyes)
166*9712c20fSFrederick Mayle
167*9712c20fSFrederick MayleAC_ARG_WITH(rustc-demangle,
168*9712c20fSFrederick Mayle            AS_HELP_STRING([--with-rustc-demangle=/path/to/rustc-demangle],
169*9712c20fSFrederick Mayle                             [Link against the rustc-demangle library]
170*9712c20fSFrederick Mayle                             [to demangle Rust language symbols during]
171*9712c20fSFrederick Mayle                             [symbol dumping (default is no)]
172*9712c20fSFrederick Mayle                             [Pass the path to the crate root.]),,
173*9712c20fSFrederick Mayle            [with_rustc_demangle=no])
174*9712c20fSFrederick Mayle
175*9712c20fSFrederick MayleRUSTC_DEMANGLE_BASE_CFLAGS="-DHAVE_RUSTC_DEMANGLE"
176*9712c20fSFrederick MayleRUSTC_DEMANGLE_BASE_LIBS="-lrustc_demangle -lpthread -ldl"
177*9712c20fSFrederick Mayle
178*9712c20fSFrederick Mayleif test "x${with_rustc_demangle}" != xno; then
179*9712c20fSFrederick Mayle  if ! test -f "${with_rustc_demangle}/Cargo.toml"; then
180*9712c20fSFrederick Mayle    AC_MSG_ERROR(You must pass the path to the rustc-demangle crate for --with-rustc-demangle)
181*9712c20fSFrederick Mayle  fi
182*9712c20fSFrederick Mayle  RUSTC_DEMANGLE_CFLAGS="-I${with_rustc_demangle}/crates/capi/include ${RUSTC_DEMANGLE_BASE_CFLAGS}"
183*9712c20fSFrederick Mayle  RUSTC_DEMANGLE_LIBS="-L${with_rustc_demangle}/target/release ${RUSTC_DEMANGLE_BASE_LIBS}"
184*9712c20fSFrederick Maylefi
185*9712c20fSFrederick Mayle
186*9712c20fSFrederick MayleAC_ARG_ENABLE(system-rustc-demangle,
187*9712c20fSFrederick Mayle              AS_HELP_STRING([--enable-system-rustc-demangle],
188*9712c20fSFrederick Mayle                             [Link against the rustc-demangle library]
189*9712c20fSFrederick Mayle                             [to demangle Rust language symbols during]
190*9712c20fSFrederick Mayle                             [symbol dumping (default is no). This assumes]
191*9712c20fSFrederick Mayle                             [that rustc-demangle is installed in your sysroot,]
192*9712c20fSFrederick Mayle                             [and all headers from it are available in your]
193*9712c20fSFrederick Mayle                             [standard include path]
194*9712c20fSFrederick Mayle                             ),,
195*9712c20fSFrederick Mayle               [enable_system_rustc_demangle=no])
196*9712c20fSFrederick Mayle
197*9712c20fSFrederick Mayleif test "x${enable_system_rustc_demangle}" != xno; then
198*9712c20fSFrederick Mayle  if test "x${with_rustc_demangle}" != xno; then
199*9712c20fSFrederick Mayle    AC_MSG_ERROR([--enable-system-rustc-demangle and --with-rustc-demangle are mutually exclusive.])
200*9712c20fSFrederick Mayle  fi
201*9712c20fSFrederick Mayle
202*9712c20fSFrederick Mayle  RUSTC_DEMANGLE_CFLAGS="${RUSTC_DEMANGLE_BASE_CFLAGS}"
203*9712c20fSFrederick Mayle  RUSTC_DEMANGLE_LIBS="${RUSTC_DEMANGLE_BASE_LIBS}"
204*9712c20fSFrederick Mayle
205*9712c20fSFrederick Mayle  AC_CHECK_LIB([rustc_demangle], [rustc_demangle], [],
206*9712c20fSFrederick Mayle               [AC_MSG_ERROR(librustc_demangle.a must be present when --enable-system-rustc-demangle is specified)],
207*9712c20fSFrederick Mayle               [$RUSTC_DEMANGLE_LIBS])
208*9712c20fSFrederick Mayle  AC_CHECK_HEADERS(rustc_demangle.h, [],
209*9712c20fSFrederick Mayle                   [AC_MSG_ERROR(rustc_demangle.h must be present when --enable-system-rustc-demangle is specified)])
210*9712c20fSFrederick Maylefi
211*9712c20fSFrederick Mayle
212*9712c20fSFrederick MayleAC_ARG_VAR([RUSTC_DEMANGLE_CFLAGS], [Compiler flags for rustc-demangle])
213*9712c20fSFrederick MayleAC_ARG_VAR([RUSTC_DEMANGLE_LIBS], [Linker flags for rustc-demangle])
214*9712c20fSFrederick Mayle
215*9712c20fSFrederick MayleAC_ARG_ENABLE(zstd,
216*9712c20fSFrederick Mayle              AS_HELP_STRING([--enable-zstd],
217*9712c20fSFrederick Mayle                             [Enable decompression of ELF sections with zstd]),,
218*9712c20fSFrederick Mayle              [enable_zstd=no])
219*9712c20fSFrederick Mayleif test "x${enable_zstd}" != xno; then
220*9712c20fSFrederick Mayle  AC_CHECK_LIB(zstd, ZSTD_decompress, [],
221*9712c20fSFrederick Mayle               [AC_MSG_ERROR([zstd library not found.])])
222*9712c20fSFrederick Mayle  AC_CHECK_HEADER(zstd.h, [],
223*9712c20fSFrederick Mayle                  [AC_MSG_ERROR([zstd header not found.])])
224*9712c20fSFrederick Maylefi
225*9712c20fSFrederick Mayle
226*9712c20fSFrederick MayleAC_ARG_WITH(tests-as-root,
227*9712c20fSFrederick Mayle            AS_HELP_STRING([--with-tests-as-root],
228*9712c20fSFrederick Mayle                           [Run the tests as root. Use this on platforms]
229*9712c20fSFrederick Mayle                           [like travis-ci.org that require root privileges]
230*9712c20fSFrederick Mayle                           [to use ptrace (default is no)]),,
231*9712c20fSFrederick Mayle            [with_tests_as_root=no])
232*9712c20fSFrederick MayleAM_CONDITIONAL(TESTS_AS_ROOT, test "x$with_tests_as_root" = xyes)
233*9712c20fSFrederick Mayle
234*9712c20fSFrederick MayleAC_CONFIG_FILES(m4_flatten([
235*9712c20fSFrederick Mayle  breakpad.pc
236*9712c20fSFrederick Mayle  breakpad-client.pc
237*9712c20fSFrederick Mayle  Makefile
238*9712c20fSFrederick Mayle]))
239*9712c20fSFrederick Mayle
240*9712c20fSFrederick MayleAC_OUTPUT
241