source: libcfa/configure.ac@ bb58825

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since bb58825 was 08ce416, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Changed configure to use new-ast by default.
Ast options no longer pushed to libcfa (that didn't make sense).
Long Run tests and benchmark no longer distributed.
Added missing source to distribution.
Added pybin to distribution.

  • Property mode set to 100644
File size: 12.6 KB
RevLine 
[c59712e]1# -*- Autoconf -*-
2# Process this file with autoconf to produce a configure script.
3
4AC_PREREQ([2.68])
[08ce416]5AC_INIT([cfa-cc],[1.0.0],[cforall@plg.uwaterloo.ca])
[38d12e7]6AC_CONFIG_AUX_DIR([automake])
7AC_CONFIG_MACRO_DIRS([automake])
[575a6e5]8AM_SILENT_RULES([yes])
[c59712e]9
[bcadb26]10m4_include([../tools/build/cfa.m4])
[37fe352]11
[c59712e]12AM_INIT_AUTOMAKE([subdir-objects])
13
[575a6e5]14# don't use the default CFLAGS as they unconditonnaly add -O2
15: ${CFLAGS=""}
16
[2b3d6ff]17# define this to override
18AR_FLAGS="cr"
19
[c59712e]20# Allow program name tansformation
21# will fill program_transform_name with appropriate sed regex
22AC_ARG_PROGRAM
23
[37fe352]24AC_ARG_VAR(ARCHITECTURE, [The architecture to use when building libcfa])
[c59712e]25AC_ARG_VAR(CONFIGURATION, [The configuration to use when building libcfa, options are: deubg, nodebug, nolib (prelude-only)])
[ff1e0f38]26AC_ARG_VAR(DRIVER_DIR, [The path to the cforall driver directory])
[c6bbcdb]27AC_ARG_VAR(CFA_VERSION, [The long version of cfa])
[ff1e0f38]28
[bbfd0e0]29AC_ARG_ENABLE(distcc,
30 [ --enable-distcc whether or not to enable distributed compilation],
31 enable_distcc=$enableval, enable_distcc=no)
32
[7c6b262]33AC_ARG_WITH(bwlimit,
34 [ --with-bwlimit=RATE RATE the maximum rate at which rsync will be limited when using distributed builds],
35 DIST_BWLIMIT=$withval, DIST_BWLIMIT=0)
36
[bbfd0e0]37echo -n "checking for distributated build... "
38if test x$enable_distcc = xno; then
39 CFACC=${DRIVER_DIR}cfa
40 echo "no"
41else
[d65f92c]42 tools="$(readlink -m $ac_confdir/)/../tools/build"
43 config=$(basename $(readlink -f .))
44 echo "$tools/distcc_hash $config"
45 CFADIR_HASH=$($tools/distcc_hash $config)
[14347ac]46 CFACC="distcc ~/.cfadistcc/${CFADIR_HASH}/cfa"
[bbfd0e0]47 echo "yes (hash=${CFADIR_HASH})"
48fi
[14347ac]49CFACPP=${DRIVER_DIR}cfa-cpp
[bbfd0e0]50LOCAL_CFACC=${DRIVER_DIR}cfa
[81e60f7]51LOCAL_CC1=${DRIVER_DIR}cc1
[bbfd0e0]52
53AM_CONDITIONAL([ENABLE_DISTCC], [test x$enable_distcc = xyes])
54
[ff1e0f38]55AC_SUBST(CFACC)
56AC_SUBST(CFACPP)
[bbfd0e0]57AC_SUBST(LOCAL_CFACC)
[81e60f7]58AC_SUBST(LOCAL_CC1)
[bbfd0e0]59AC_SUBST(CFADIR_HASH)
[c6bbcdb]60AC_SUBST(CFA_VERSION)
[7c6b262]61AC_SUBST(DIST_BWLIMIT)
[ff1e0f38]62
[575a6e5]63#==============================================================================
64#Handle specific flags
[37fe352]65case $ARCHITECTURE in
66 "x64" ) ARCH_FLAGS="-m64";;
67 "x86" ) ARCH_FLAGS="-m32";;
68 "arm" ) ARCH_FLAGS="";;
69esac
[ff1e0f38]70
[37fe352]71AC_SUBST(ARCH_FLAGS)
[ff1e0f38]72
[575a6e5]73case $CONFIGURATION in
74 "debug" )
[c8c0c7c5]75 CONFIG_CFLAGS="-O0 -g"
[575a6e5]76 CONFIG_CFAFLAGS="-debug"
[e523b07]77 CONFIG_BUILDLIB="yes"
[575a6e5]78 ;;
79 "nodebug" )
[3fcbdca1]80 CONFIG_CFLAGS="-O3 -s"
[575a6e5]81 CONFIG_CFAFLAGS="-nodebug"
[e523b07]82 CONFIG_BUILDLIB="yes"
[575a6e5]83 ;;
84 "nolib" )
[3fcbdca1]85 CONFIG_CFLAGS="-O3 -s"
[c9e640e]86 CONFIG_CFAFLAGS="-nolib"
[e523b07]87 CONFIG_BUILDLIB="no"
[575a6e5]88 ;;
[3fcbdca1]89 "profile" )
90 CONFIG_CFLAGS="-O3 -g -fno-omit-frame-pointer"
91 CONFIG_CFAFLAGS="-nodebug"
92 CONFIG_BUILDLIB="yes"
93 ;;
[d119b984]94 *)
95 AC_MSG_ERROR('Invalid value $CONFIGURATION for \$CONFIGURATION')
96 ;;
[575a6e5]97esac
98
[13363f4]99CONFIG_CFAFLAGS="${CONFIG_CFAFLAGS} ${CFAFLAGS}"
100
[575a6e5]101AC_SUBST(CONFIG_CFLAGS)
102AC_SUBST(CONFIG_CFAFLAGS)
[e523b07]103AC_SUBST(CONFIG_BUILDLIB)
104
105AM_CONDITIONAL([BUILDLIB], [test "x${CONFIG_BUILDLIB}" = "xyes"])
[575a6e5]106
[3ac8b9f]107AM_T='$(T)'
108AC_SUBST(AM_T)
109
[37fe352]110#==============================================================================
111#Trasforming cc1 will break compilation
112M4CFA_PROGRAM_NAME
[ff1e0f38]113
[37fe352]114#==============================================================================
115# Installation paths
116M4CFA_PARSE_PREFIX
[c59712e]117
118# Checks for programs.
[04bc1c0]119LT_INIT([disable-static])
[38d12e7]120
[c59712e]121AC_PROG_CXX
122AC_PROG_CC
123AM_PROG_AS
[107b01a]124AC_PROG_LIBTOOL
[c59712e]125AC_PROG_INSTALL
126AC_PROG_MAKE_SET
127
[5751a56]128
129
130#io_uring 5.4 and earlier uses defines
131#io_uring 5.5 uses enum values
132#io_uring 5.6 and later uses probes
[d3a518c]133
134AH_TEMPLATE([CFA_HAVE_LINUX_IO_URING_H],[Defined if io_uring support is present when compiling libcfathread.])
135AH_TEMPLATE([CFA_HAVE_IORING_OP_NOP],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_NOP.])
136AH_TEMPLATE([CFA_HAVE_IORING_OP_READV],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_READV.])
137AH_TEMPLATE([CFA_HAVE_IORING_OP_WRITEV],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_WRITEV.])
138AH_TEMPLATE([CFA_HAVE_IORING_OP_FSYNC],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_FSYNC.])
139AH_TEMPLATE([CFA_HAVE_IORING_OP_READ_FIXED],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_READ_FIXED.])
140AH_TEMPLATE([CFA_HAVE_IORING_OP_WRITE_FIXED],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_WRITE_FIXED.])
141AH_TEMPLATE([CFA_HAVE_IORING_OP_POLL_ADD],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_POLL_ADD.])
142AH_TEMPLATE([CFA_HAVE_IORING_OP_POLL_REMOVE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_POLL_REMOVE.])
143AH_TEMPLATE([CFA_HAVE_IORING_OP_SYNC_FILE_RANGE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_SYNC_FILE_RANGE.])
144AH_TEMPLATE([CFA_HAVE_IORING_OP_SENDMSG],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_SENDMSG.])
145AH_TEMPLATE([CFA_HAVE_IORING_OP_RECVMSG],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_RECVMSG.])
146AH_TEMPLATE([CFA_HAVE_IORING_OP_TIMEOUT],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_TIMEOUT.])
147AH_TEMPLATE([CFA_HAVE_IORING_OP_TIMEOUT_REMOVE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_TIMEOUT_REMOVE.])
148AH_TEMPLATE([CFA_HAVE_IORING_OP_ACCEPT],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_ACCEPT.])
149AH_TEMPLATE([CFA_HAVE_IORING_OP_ASYNC_CANCEL],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_ASYNC_CANCEL.])
150AH_TEMPLATE([CFA_HAVE_IORING_OP_LINK_TIMEOUT],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_LINK_TIMEOUT.])
151AH_TEMPLATE([CFA_HAVE_IORING_OP_CONNECT],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_CONNECT.])
152AH_TEMPLATE([CFA_HAVE_IORING_OP_FALLOCATE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_FALLOCATE.])
153AH_TEMPLATE([CFA_HAVE_IORING_OP_OPENAT],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_OPENAT.])
154AH_TEMPLATE([CFA_HAVE_IORING_OP_CLOSE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_CLOSE.])
155AH_TEMPLATE([CFA_HAVE_IORING_OP_FILES_UPDATE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_FILES_UPDATE.])
156AH_TEMPLATE([CFA_HAVE_IORING_OP_STATX],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_STATX.])
157AH_TEMPLATE([CFA_HAVE_IORING_OP_READ],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_READ.])
158AH_TEMPLATE([CFA_HAVE_IORING_OP_WRITE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_WRITE.])
159AH_TEMPLATE([CFA_HAVE_IORING_OP_FADVISE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_FADVISE.])
160AH_TEMPLATE([CFA_HAVE_IORING_OP_MADVISE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_MADVISE.])
161AH_TEMPLATE([CFA_HAVE_IORING_OP_SEND],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_SEND.])
162AH_TEMPLATE([CFA_HAVE_IORING_OP_RECV],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_RECV.])
163AH_TEMPLATE([CFA_HAVE_IORING_OP_OPENAT2],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_OPENAT2.])
164AH_TEMPLATE([CFA_HAVE_IORING_OP_EPOLL_CTL],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_EPOLL_CTL.])
165AH_TEMPLATE([CFA_HAVE_IORING_OP_SPLICE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_SPLICE.])
166AH_TEMPLATE([CFA_HAVE_IORING_OP_PROVIDE_BUFFERS],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_PROVIDE_BUFFERS.])
167AH_TEMPLATE([CFA_HAVE_IORING_OP_REMOVE_BUFFER],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_REMOVE_BUFFER.])
[c402739f]168AH_TEMPLATE([CFA_HAVE_IORING_OP_TEE],[Defined if io_uring support is present when compiling libcfathread and supports the operation IORING_OP_TEE.])
[d3a518c]169AH_TEMPLATE([CFA_HAVE_IOSQE_FIXED_FILE],[Defined if io_uring support is present when compiling libcfathread and supports the flag FIXED_FILE.])
170AH_TEMPLATE([CFA_HAVE_IOSQE_IO_DRAIN],[Defined if io_uring support is present when compiling libcfathread and supports the flag IO_DRAIN.])
171AH_TEMPLATE([CFA_HAVE_IOSQE_ASYNC],[Defined if io_uring support is present when compiling libcfathread and supports the flag ASYNC.])
172AH_TEMPLATE([CFA_HAVE_IOSQE_IO_LINK],[Defined if io_uring support is present when compiling libcfathread and supports the flag IO_LINK.])
173AH_TEMPLATE([CFA_HAVE_IOSQE_IO_HARDLINK],[Defined if io_uring support is present when compiling libcfathread and supports the flag IO_HARDLINK.])
174AH_TEMPLATE([CFA_HAVE_SPLICE_F_FD_IN_FIXED],[Defined if io_uring support is present when compiling libcfathread and supports the flag SPLICE_F_FD_IN_FIXED.])
[85f19eb]175AH_TEMPLATE([CFA_HAVE_IORING_SETUP_ATTACH_WQ],[Defined if io_uring support is present when compiling libcfathread and supports the flag IORING_SETUP_ATTACH_WQ.])
[c402739f]176AH_TEMPLATE([CFA_HAVE_PREADV2],[Defined if preadv2 support is present when compiling libcfathread.])
177AH_TEMPLATE([CFA_HAVE_PWRITEV2],[Defined if pwritev2 support is present when compiling libcfathread.])
178AH_TEMPLATE([CFA_HAVE_PWRITEV2],[Defined if pwritev2 support is present when compiling libcfathread.])
179AH_TEMPLATE([CFA_HAVE_STATX],[Defined if statx support is present when compiling libcfathread.])
180AH_TEMPLATE([CFA_HAVE_OPENAT2],[Defined if openat2 support is present when compiling libcfathread.])
[d3a518c]181AH_TEMPLATE([__CFA_NO_STATISTICS__],[Defined if libcfathread was compiled without support for statistics.])
182
[c402739f]183define(ioring_ops, [IORING_OP_NOP,IORING_OP_READV,IORING_OP_WRITEV,IORING_OP_FSYNC,IORING_OP_READ_FIXED,IORING_OP_WRITE_FIXED,IORING_OP_POLL_ADD,IORING_OP_POLL_REMOVE,IORING_OP_SYNC_FILE_RANGE,IORING_OP_SENDMSG,IORING_OP_RECVMSG,IORING_OP_TIMEOUT,IORING_OP_TIMEOUT_REMOVE,IORING_OP_ACCEPT,IORING_OP_ASYNC_CANCEL,IORING_OP_LINK_TIMEOUT,IORING_OP_CONNECT,IORING_OP_FALLOCATE,IORING_OP_OPENAT,IORING_OP_CLOSE,IORING_OP_FILES_UPDATE,IORING_OP_STATX,IORING_OP_READ,IORING_OP_WRITE,IORING_OP_FADVISE,IORING_OP_MADVISE,IORING_OP_SEND,IORING_OP_RECV,IORING_OP_OPENAT2,IORING_OP_EPOLL_CTL,IORING_OP_SPLICE,IORING_OP_PROVIDE_BUFFERS,IORING_OP_REMOVE_BUFFER,IORING_OP_TEE])
[85f19eb]184define(ioring_flags, [IOSQE_FIXED_FILE,IOSQE_IO_DRAIN,IOSQE_ASYNC,IOSQE_IO_LINK,IOSQE_IO_HARDLINK,SPLICE_F_FD_IN_FIXED,IORING_SETUP_ATTACH_WQ])
[f854ee32]185
186define(ioring_from_decls, [
187 m4_foreach([op], [ioring_ops], [
188 AC_CHECK_DECL(op, [AC_DEFINE([CFA_HAVE_]op)], [], [[#include <linux/io_uring.h>]])
189 ])
190])
[5751a56]191
192AC_CHECK_HEADERS([linux/io_uring.h], [
193 AC_DEFINE(CFA_HAVE_LINUX_IO_URING_H)
[f854ee32]194 AC_CHECK_HEADER([liburing.h], [
195 AC_CHECK_LIB([uring], [io_uring_get_probe], [
196 m4_foreach([op], [ioring_ops], [
197 AC_CHECK_DECL(op, [
198 AC_RUN_IFELSE([
199 AC_LANG_PROGRAM(
200 [[#include <liburing.h>]],
201 [[int main() {]]
202 [[ struct io_uring_probe *probe = io_uring_get_probe();]]
203 [[ if(io_uring_opcode_supported(probe, ]]op[[))]]
204 [[ return 0;]]
205 [[ else]]
206 [[ return 1;]]
207 [[}]]
208 )
209 ],[
210 AC_DEFINE([CFA_HAVE_]op)
211 ],[
212 AC_MSG_FAILURE([Check support for] op [ with liburing failed])
213 ])
214 ], [], [[#include <linux/io_uring.h>]])
215 ])
216 ], [
217 ioring_from_decls
218 ])
219 ], [
220 ioring_from_decls
[5751a56]221 ])
[22ddade]222
223 # check support for various io_uring flags
224 m4_foreach([op], [ioring_flags], [
225 AC_CHECK_DECL(op, [AC_DEFINE([CFA_HAVE_]op)], [], [[#include <linux/io_uring.h>]])
226 ])
[5751a56]227])
[c402739f]228AC_CHECK_FUNC([preadv2], [AC_DEFINE([CFA_HAVE_PREADV2])])
229AC_CHECK_FUNC([pwritev2], [AC_DEFINE([CFA_HAVE_PWRITEV2])])
[27273f9]230
[c59712e]231AC_CONFIG_FILES([
232 Makefile
233 src/Makefile
234 prelude/Makefile
235 ])
[c402739f]236AC_CONFIG_FILES([src/concurrency/io/call.cfa], [python3 ${srcdir}/src/concurrency/io/call.cfa.in > src/concurrency/io/call.cfa])
[c59712e]237
[c680a4b]238AC_CONFIG_HEADERS(prelude/defines.hfa)
239
[c59712e]240AC_OUTPUT()
241
242# Final text
[27273f9]243AC_MSG_RESULT(Cforall library configuraton completed. Type "make -j 8 install".)
Note: See TracBrowser for help on using the repository browser.