]> git.ipfire.org Git - thirdparty/gcc.git/blame - c++tools/configure.ac
btf: emit non-representable bitfield as void
[thirdparty/gcc.git] / c++tools / configure.ac
CommitLineData
35fc243f 1# Configure script for c++tools
a945c346 2# Copyright (C) 2020-2024 Free Software Foundation, Inc.
35fc243f
NS
3# Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
4#
5# This file is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License as published by
7# the Free Software Foundation; either version 3 of the License, or
8# (at your option) any later version.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; see the file COPYING3. If not see
17# <http://www.gnu.org/licenses/>.
18
19# C++ has grown a C++20 mapper server. This may be used to provide
20# and/or learn and/or build required modules. This sample server
21# shows how the protocol introduced by wg21.link/p1184 may be used.
22# By default g++ uses an in-process mapper.
23
24sinclude(../config/acx.m4)
a20893cf 25sinclude(../config/ax_lib_socket_nsl.m4)
35fc243f
NS
26
27AC_INIT(c++tools)
28
29AC_CONFIG_SRCDIR([server.cc])
30
31# Determine the noncanonical names used for directories.
32ACX_NONCANONICAL_TARGET
33
34AC_CANONICAL_SYSTEM
35AC_PROG_INSTALL
3f78c8cb
NS
36test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
37AC_SUBST(INSTALL_PROGRAM)
35fc243f
NS
38
39AC_PROG_CXX
40MISSING=`cd $ac_aux_dir && ${PWDCMD-pwd}`/missing
41AC_CHECK_PROGS([AUTOCONF], [autoconf], [$MISSING autoconf])
42AC_CHECK_PROGS([AUTOHEADER], [autoheader], [$MISSING autoheader])
43
e4d306cf
IS
44AC_LANG(C++)
45
35fc243f
NS
46dnl Enabled by default
47AC_MSG_CHECKING([whether to build C++ tools])
48 AC_ARG_ENABLE(c++-tools,
49 [AS_HELP_STRING([--enable-c++-tools],
50 [build auxiliary c++ tools])],
51 cxx_aux_tools=$enableval,
52 cxx_aux_tools=yes)
53
54AC_MSG_RESULT($cxx_aux_tools)
55CXX_AUX_TOOLS="$cxx_aux_tools"
56AC_SUBST(CXX_AUX_TOOLS)
57
58AC_ARG_ENABLE([maintainer-mode],
59AS_HELP_STRING([--enable-maintainer-mode],
60[enable maintainer mode. Add rules to rebuild configurey bits]),,
61[enable_maintainer_mode=no])
62case "$enable_maintainer_mode" in
4b1987f8
EB
63 yes) maintainer_mode=yes ;;
64 no) maintainer_mode=no ;;
65 *) AC_MSG_ERROR([unknown maintainer mode $enable_maintainer_mode]) ;;
35fc243f
NS
66esac
67AC_MSG_CHECKING([maintainer-mode])
68AC_MSG_RESULT([$maintainer_mode])
69test "$maintainer_mode" = yes && MAINTAINER=yes
70AC_SUBST(MAINTAINER)
71
e4d306cf
IS
72# Handle configuration of checking; for the tools in this directory we
73# default to release checking and stricter checks do not change this.
74
75AC_ARG_ENABLE(checking,
76[AS_HELP_STRING([[--enable-checking[=LIST]]],
77 [enable expensive run-time checks. With LIST,
78 enable only specific categories of checks.
79 Categories are: yes,no,all,none,release.])],
80[ac_checking_flags="${enableval}"],[
81# Default to checking.
82ac_checking_flags=yes
83])
84IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS="$IFS,"
85for check in release $ac_checking_flags
86do
87 case $check in
88 # these set all the flags to specific states
89 yes|all|release|assert) ac_assert_checking=1 ; ;;
90 no|none) ac_assert_checking= ; ;;
91 *) ;;
92 esac
93done
94IFS="$ac_save_IFS"
95
96if test x$ac_assert_checking != x ; then
97 AC_DEFINE(ENABLE_ASSERT_CHECKING, 1,
98[Define if you want assertions enabled. This is a cheap check.])
99fi
100
544f4775
NS
101# Check whether --enable-default-pie was given.
102AC_ARG_ENABLE(default-pie,
103[AS_HELP_STRING([--enable-default-pie],
104 [enable Position Independent Executable as default])],
b6cb10af
MP
105[PICFLAG=-fPIE], [PICFLAG=])
106
107# Enable --enable-host-pie
108AC_ARG_ENABLE(host-pie,
109[AS_HELP_STRING([--enable-host-pie],
110 [build host code as PIE])],
111[PICFLAG=-fPIE; LD_PICFLAG=-pie], [])
112AC_SUBST(PICFLAG)
33ebb0df
MP
113
114# Enable --enable-host-bind-now
115AC_ARG_ENABLE(host-bind-now,
116[AS_HELP_STRING([--enable-host-bind-now],
117 [link host code as BIND_NOW])],
118[LD_PICFLAG="$LD_PICFLAG -Wl,-z,now"], [])
119AC_SUBST(enable_host_bind_now)
b6cb10af 120AC_SUBST(LD_PICFLAG)
544f4775 121
35fc243f
NS
122# Check if O_CLOEXEC is defined by fcntl
123AC_CACHE_CHECK(for O_CLOEXEC, ac_cv_o_cloexec, [
124AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
125#include <fcntl.h>]], [[
126return open ("/dev/null", O_RDONLY | O_CLOEXEC);]])],
127[ac_cv_o_cloexec=yes],[ac_cv_o_cloexec=no])])
128if test $ac_cv_o_cloexec = yes; then
129 AC_DEFINE(HOST_HAS_O_CLOEXEC, 1,
130 [Define if O_CLOEXEC supported by fcntl.])
131fi
132
09616422
NS
133AC_CHECK_HEADERS(sys/mman.h)
134
35fc243f
NS
135# C++ Modules would like some networking features to provide the mapping
136# server. You can still use modules without them though.
137# The following network-related checks could probably do with some
138# Windows and other non-linux defenses and checking.
139
140# Local socket connectivity wants AF_UNIX networking
141# Check for AF_UNIX networking
142AC_CACHE_CHECK(for AF_UNIX, ac_cv_af_unix, [
143AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
144#include <sys/types.h>
145#include <sys/socket.h>
146#include <sys/un.h>
147#include <netinet/in.h>]],[[
148sockaddr_un un;
149un.sun_family = AF_UNSPEC;
150int fd = socket (AF_UNIX, SOCK_STREAM, 0);
151connect (fd, (sockaddr *)&un, sizeof (un));]])],
152[ac_cv_af_unix=yes],
153[ac_cv_af_unix=no])])
154if test $ac_cv_af_unix = yes; then
155 AC_DEFINE(HAVE_AF_UNIX, 1,
156 [Define if AF_UNIX supported.])
157fi
158
159# Remote socket connectivity wants AF_INET6 networking
160# Check for AF_INET6 networking
161AC_CACHE_CHECK(for AF_INET6, ac_cv_af_inet6, [
162AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
163#include <sys/types.h>
164#include <sys/socket.h>
165#include <netinet/in.h>
166#include <netdb.h>]],[[
167sockaddr_in6 in6;
168in6.sin6_family = AF_UNSPEC;
169struct addrinfo *addrs = 0;
170struct addrinfo hints;
171hints.ai_flags = 0;
172hints.ai_family = AF_INET6;
173hints.ai_socktype = SOCK_STREAM;
174hints.ai_protocol = 0;
175hints.ai_canonname = 0;
176hints.ai_addr = 0;
177hints.ai_next = 0;
178int e = getaddrinfo ("localhost", 0, &hints, &addrs);
179const char *str = gai_strerror (e);
180freeaddrinfo (addrs);
181int fd = socket (AF_INET6, SOCK_STREAM, 0);
182connect (fd, (sockaddr *)&in6, sizeof (in6));]])],
183[ac_cv_af_inet6=yes],
184[ac_cv_af_inet6=no])])
185if test $ac_cv_af_inet6 = yes; then
186 AC_DEFINE(HAVE_AF_INET6, 1,
187 [Define if AF_INET6 supported.])
188fi
189
190# Efficient server response wants epoll
191# Check for epoll_create, epoll_ctl, epoll_pwait
192AC_CACHE_CHECK(for epoll, ac_cv_epoll, [
193AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
194#include <sys/epoll.h>]],[[
195int fd = epoll_create (1);
196epoll_event ev;
197ev.events = EPOLLIN;
198ev.data.fd = 0;
199epoll_ctl (fd, EPOLL_CTL_ADD, 0, &ev);
200epoll_pwait (fd, 0, 0, -1, 0);]])],
201[ac_cv_epoll=yes],
202[ac_cv_epoll=no])])
203if test $ac_cv_epoll = yes; then
204 AC_DEFINE(HAVE_EPOLL, 1,
205 [Define if epoll_create, epoll_ctl, epoll_pwait provided.])
206fi
207
208# If we can't use epoll, try pselect.
209# Check for pselect
210AC_CACHE_CHECK(for pselect, ac_cv_pselect, [
211AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
212#include <sys/select.h>]],[[
213pselect (0, 0, 0, 0, 0, 0);]])],
214[ac_cv_pselect=yes],
215[ac_cv_pselect=no])])
216if test $ac_cv_pselect = yes; then
217 AC_DEFINE(HAVE_PSELECT, 1,
218 [Define if pselect provided.])
219fi
220
221# And failing that, use good old select.
222# If we can't even use this, the server is serialized.
223# Check for select
224AC_CACHE_CHECK(for select, ac_cv_select, [
225AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
226#include <sys/select.h>]],[[
227select (0, 0, 0, 0, 0);]])],
228[ac_cv_select=yes],
229[ac_cv_select=no])])
230if test $ac_cv_select = yes; then
231 AC_DEFINE(HAVE_SELECT, 1,
232 [Define if select provided.])
233fi
234
235# Avoid some fnctl calls by using accept4, when available.
236# Check for accept4
237AC_CACHE_CHECK(for accept4, ac_cv_accept4, [
238AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
239#include <sys/socket.h>]],[[
240int err = accept4 (1, 0, 0, SOCK_NONBLOCK);]])],
241[ac_cv_accept4=yes],
242[ac_cv_accept4=no])])
243if test $ac_cv_accept4 = yes; then
244 AC_DEFINE(HAVE_ACCEPT4, 1,
245 [Define if accept4 provided.])
246fi
247
248# For better server messages, look for a way to stringize network addresses
249# Check for inet_ntop
250AC_CACHE_CHECK(for inet_ntop, ac_cv_inet_ntop, [
251AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
252#include <arpa/inet.h>
253#include <netinet/in.h>]],[[
254sockaddr_in6 in6;
255char buf[INET6_ADDRSTRLEN];
256const char *str = inet_ntop (AF_INET6, &in6, buf, sizeof (buf));]])],
257[ac_cv_inet_ntop=yes],
258[ac_cv_inet_ntop=no])])
259if test $ac_cv_inet_ntop = yes; then
260 AC_DEFINE(HAVE_INET_NTOP, 1,
261 [Define if inet_ntop provided.])
262fi
263
4e7e7c13
JJ
264# Determine what GCC version number to use in filesystem paths.
265GCC_BASE_VER
266
a20893cf
RO
267# Solaris needs libsocket and libnsl for socket functions before 11.4.
268# libcody uses those.
269save_LIBS="$LIBS"
270LIBS=
271AX_LIB_SOCKET_NSL
272NETLIBS="$LIBS"
273LIBS="$save_LIBS"
274AC_SUBST(NETLIBS)
275
35fc243f
NS
276AC_CONFIG_HEADERS([config.h])
277AC_CONFIG_FILES([Makefile])
278
279AC_OUTPUT