source: configure.ac @ 08ce416

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 08ce416 was 08ce416, checked in by Thierry Delisle <tdelisle@…>, 3 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: 10.2 KB
RevLine 
[5d6ce1f]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])
[00cc023]6AC_CONFIG_AUX_DIR([automake])
[107b01a]7AC_CONFIG_MACRO_DIRS([automake])
[a5c722b]8AC_CONFIG_HEADERS([config.h:src/config.h.in])
[575a6e5]9AM_SILENT_RULES([yes])
[5d6ce1f]10
[0c30ecc]11m4_include([tools/build/cfa.m4])
[534e4e4]12
[575a6e5]13# don't use the default CFLAGS as they unconditonnaly add -O2
14: ${CFLAGS=""}
[c886f4b]15: ${CXXFLAGS=""}
[575a6e5]16
[44f44617]17AM_INIT_AUTOMAKE([subdir-objects])
[00cc023]18
[df47e2f]19# Allow program name tansformation
[6363ad1]20# will fill program_transform_name with appropriate sed regex
[df47e2f]21AC_ARG_PROGRAM
22
[c59712e]23#==============================================================================
[df47e2f]24#Trasforming cc1 will break compilation
[37fe352]25M4CFA_PROGRAM_NAME
[c59712e]26
[0ea0b8f]27#==============================================================================
28# New AST toggling support
29AH_TEMPLATE([CFA_USE_NEW_AST],[Sets whether or not to use the new-ast, this is adefault value and can be overrided by --old-ast and --new-ast])
[969e7ee7]30DEFAULT_NEW_AST="False"
[0ea0b8f]31AC_ARG_ENABLE(new-ast,
32        [  --enable-new-ast     whether or not to use new ast as the default AST algorithm],
33        [case "${enableval}" in
[969e7ee7]34                yes) newast=true ; DEFAULT_NEW_AST="True"  ;;
35                no)  newast=false; DEFAULT_NEW_AST="False" ;;
[0ea0b8f]36                *) AC_MSG_ERROR([bad value ${enableval} for --enable-new-ast]) ;;
[08ce416]37        esac],[newast=true])
[0ea0b8f]38AC_DEFINE_UNQUOTED([CFA_USE_NEW_AST], $newast)
[969e7ee7]39AC_SUBST(DEFAULT_NEW_AST)
[0ea0b8f]40
[c59712e]41#==============================================================================
42# version information
43
[65c61ec]44rm -f version
[2042d41]45echo ${PACKAGE_VERSION} > version               # file containing version number for other tools
[65c61ec]46chmod ugo-w version
[2042d41]47ver_major=`cut -d '.' -f1 version`              # subdivide version number into components at periods
48ver_minor=`cut -d '.' -f2 version`
49ver_patch=`cut -d '.' -f3 version`
50ver_build=`cut -d '.' -f4 version`
[47a8d17]51
[4b1afb6]52# AC_SUBST([CONFIG_STATUS_DEPENDENCIES], ['$(top_srcdir)/version'])
[47a8d17]53AC_DEFINE_UNQUOTED(CFA_VERSION_MAJOR, ${ver_major}, [Major version number.])
54AC_DEFINE_UNQUOTED(CFA_VERSION_MINOR, ${ver_minor}, [Minor version number.])
55AC_DEFINE_UNQUOTED(CFA_VERSION_PATCH, ${ver_patch}, [Patch version number.])
56AC_DEFINE_UNQUOTED(CFA_VERSION_BUILD, ${ver_build}, [Build version number.])
[4b1afb6]57AC_DEFINE_UNQUOTED(CFA_VERSION_SHORT, ["${ver_major}"], [Major])
58AC_DEFINE_UNQUOTED(CFA_VERSION, ["${ver_major}.${ver_minor}"], [Major.Minor])
59AC_DEFINE_UNQUOTED(CFA_VERSION_LONG, ["${ver_major}.${ver_minor}.${ver_patch}"], [Major.Minor.Patch])
60AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
[ec129c4]61
[c59712e]62#==============================================================================
63# HACK to be able to use conditionnals inside makefiles
[05f4b85]64DOifskipcompile='ifeq ($(skipcompile),yes)
65else'
66AC_SUBST([DOifskipcompile])
67AM_SUBST_NOTMAKE([DOifskipcompile])
68
69DOendif='endif'
70AC_SUBST([DOendif])
71AM_SUBST_NOTMAKE([DOendif])
72
[bbfd0e0]73#==============================================================================
74# distcc support
75
76AC_ARG_ENABLE(distcc,
77        [  --enable-distcc     whether or not to enable distributed compilation],
78        enable_distcc=$enableval, enable_distcc=no)
79
[7c6b262]80AC_ARG_WITH(bwlimit,
81        [  --with-bwlimit=RATE     RATE the maximum rate at which rsync will be limited when using distributed builds],
82        [], [])
83
[bbfd0e0]84AM_CONDITIONAL([ENABLE_DISTCC], [test x$enable_distcc = xyes])
[d65f92c]85HAS_DISTCC="False"
[bbfd0e0]86
87if test x$enable_distcc = xyes; then
88        CXX="distcc ${CXX}"
89        LD="distcc ${LD} -lstdc++"
[d65f92c]90        HAS_DISTCC="True"
[bbfd0e0]91        echo "Enabling distributed builds"
92fi
93
94AC_SUBST(CXX)
95AC_SUBST(LD)
[d65f92c]96AC_SUBST(HAS_DISTCC)
[bbfd0e0]97
[c59712e]98#==============================================================================
99# Installation paths
[534e4e4]100M4CFA_PARSE_PREFIX
[5d6ce1f]101
[c59712e]102#==============================================================================
[50697b0]103# Create variables for commonly used targets
[ff1e0f38]104
[8e485801]105TOP_SRCDIR="$(readlink -m $ac_confdir/)/"
106TOP_BUILDDIR="$(readlink -m $ac_pwd/)/"
[ff1e0f38]107
108AC_DEFINE_UNQUOTED(TOP_SRCDIR, "$TOP_SRCDIR", [Top src directory])
109AC_DEFINE_UNQUOTED(TOP_BUILDDIR, "$TOP_BUILDDIR", [Top build directory])
110
111DRIVER_DIR=${TOP_BUILDDIR}driver/
112CFACC=${DRIVER_DIR}cfa
[158b026]113CFACC_INSTALL=${CFA_BINDIR}${CFA_NAME}
[ff1e0f38]114CFACPP=${DRIVER_DIR}cfa-cpp
[7fb69f6]115AC_SUBST(DRIVER_DIR)
116AC_SUBST(CFACC)
[158b026]117AC_SUBST(CFACC_INSTALL)
[50697b0]118AC_SUBST(CFACPP)
119
[c59712e]120#==============================================================================
[7fb69f6]121# Flag variables needed to build in tree
[ff1e0f38]122LIBCFA_SRC='${TOP_SRCDIR}/libcfa/src'
123BUILD_IN_TREE_FLAGS="-XCFA -t -B${DRIVER_DIR}"
[7fb69f6]124AC_SUBST(BUILD_IN_TREE_FLAGS)
125
[ff1e0f38]126#==============================================================================
127# handle the list of hosts to build for
128for var in $ac_configure_args
129do
130        #strip quotes surrouding values
131        case $var in
132                # skip cross compilation related arguments
[534e4e4]133                \'--host=*) ;; \'host_alias=*) ;; \'--build=*) ;; \'build_alias=*) ;; \'--target=*) ;; \'target_alias=*) ;;
[ff1e0f38]134
135                # skip the target hosts
[534e4e4]136                \'--with-target-hosts=*) ;;
[ff1e0f38]137
[120a28c3]138                # skip gprofiler for libcfa
139                \'--enable-gprofiler=*) ;;
140                \'--disable-gprofiler) ;;
141
[08ce416]142                # skip the target hosts
143                \'--enable-new-ast=*) ;;
144                \'--disable-new-ast) ;;
145
[2fbc904]146                # skip this, it only causes problems
147                \'--srcdir=*) ;;
148
[ff1e0f38]149                # append all other arguments to the sub configure arguments
150                *) LIBCFA_GENERAL_ARGS="${LIBCFA_GENERAL_ARGS} $var";;
151        esac
152done
153
154#==============================================================================
155# handle the list of hosts to build for
156AC_CANONICAL_BUILD
157AC_CANONICAL_HOST
158
[47c1928]159if ! test "$host_cpu" = "$build_cpu"; then
160        case $host_cpu in
161                i386)
162                        HOST_FLAGS="-m32"
163                        ;;
164                i686)
165                        HOST_FLAGS="-m32"
166                        ;;
167                x86_64)
168                        HOST_FLAGS="-m64"
169                        ;;
170        esac
171fi
172AC_SUBST(HOST_FLAGS)
173
[ff1e0f38]174default_target="${host_cpu}:debug, ${host_cpu}:nodebug"
175AC_ARG_WITH(target-hosts,
176        [  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:[debug|nodebug|nolib]],
177        target_hosts=$withval, target_hosts=${default_target})
178
[120a28c3]179AC_ARG_ENABLE(gprofiler,
180        [  --enable-gprofiler     whether or not to enable gprofiler tools (if available)],
181        enable_gprofiler=$enableval, enable_gprofiler=yes)
182
[df8b87cd]183AC_ARG_ENABLE(demangler,
184        [  --enable-demangler     whether or not to build the demangler (executable and library)],
185        enable_demangler=$enableval, enable_demangler=yes)
186
[ff1e0f38]187AC_SUBST(TARGET_HOSTS, ${target_hosts})
188
189LIBCFA_PATHS="DRIVER_DIR=${DRIVER_DIR}"
190
191for i in $(echo $target_hosts | sed "s/,/ /g")
192do
193        # call your procedure/other scripts here below
[534e4e4]194        arch_name=$(echo $i | sed -r "s/:(.*)//g")
[ff1e0f38]195        lib_config=$(echo $i | sed -r "s/(.*)://g")
[37fe352]196
197        case $lib_config in
198                "nodebug") ;;
199                "debug") ;;
200                "nolib") ;;
[3fcbdca1]201                "profile") ;;
[37fe352]202                *)
203                        >&2 echo "Configuration must be 'debug', 'nodebug' or 'nolib'"
204                        exit 1
205                ;;
206        esac
207
208        M4CFA_CANNON_CPU([${arch_name}])
209        lib_arch=${cannon_arch_name}
[a5121bf]210        lib_dir="libcfa/${lib_arch}-${lib_config}"
[ff1e0f38]211
212        LIBCFA_TARGET_DIRS="${LIBCFA_TARGET_DIRS} ${lib_dir}"
[3b2f41e]213        LIBCFA_1TARGET_DIR="${lib_dir}"
[ff1e0f38]214        LIBCFA_TARGET_MAKEFILES="${LIBCFA_TARGET_MAKEFILES} ${lib_dir}/Makefile"
215
[a5121bf]216        mkdir -p ${lib_dir}
217        echo -n "${LIBCFA_GENERAL_ARGS} " > ${lib_dir}/config.data
218        echo -n "${LIBCFA_PATHS} " >> ${lib_dir}/config.data
219        echo -n "ARCHITECTURE=${lib_arch} " >> ${lib_dir}/config.data
[c6bbcdb]220        echo -n "CONFIGURATION=${lib_config} " >> ${lib_dir}/config.data
221        echo -n "CFA_VERSION=${ver_major}:${ver_minor}:${ver_patch}" >> ${lib_dir}/config.data
[ff1e0f38]222done
223
224AC_SUBST(LIBCFA_TARGET_DIRS)
[3b2f41e]225AC_SUBST(LIBCFA_1TARGET_DIR)
[ff1e0f38]226AC_SUBST(LIBCFA_TARGET_MAKEFILES)
227
[37fe352]228M4CFA_CANNON_CPU([${host_cpu}])
229AC_DEFINE_UNQUOTED(CFA_DEFAULT_CPU, "$cannon_arch_name", [Default cpu to use if neither -m32 or -m64 are defined.])
230AC_DEFINE_UNQUOTED(CFA_64_CPU, "x64", [CPU to use if the -m64 flags is given.])
231AC_DEFINE_UNQUOTED(CFA_32_CPU, "x86", [CPU to use if the -m32 flags is given.])
232
[c59712e]233#==============================================================================
234# CAFLAGS
[3f414ef]235AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
236AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
237
[c59712e]238#==============================================================================
[5d6ce1f]239# Checks for programs.
240AC_PROG_CXX
241AC_PROG_CC
[8e5724e]242AM_PROG_AS
[c3a4385]243# These are often not installed and people miss seeing the "no", so stop the configure.
[56c3935]244AC_PROG_YACC
[c3a4385]245if test "${YACC}" = "yacc" ; then echo "Error: bison required." ; exit 1 ; fi
[56c3935]246AC_PROG_LEX
[c3a4385]247if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
[107b01a]248AC_PROG_LIBTOOL
[5d6ce1f]249AC_PROG_INSTALL
250
251# Checks for libraries.
[41cca44]252AC_CHECK_LIB([fibre], [Fibre::yield], [HAVE_LIBFIBRE=1], [HAVE_LIBFIBRE=0])
253AM_CONDITIONAL([WITH_LIBFIBRE], [test "$HAVE_LIBFIBRE" -eq 1])
[5d6ce1f]254
[114936a]255AC_CHECK_LIB([profiler], [ProfilingIsEnabledForAllThreads], [HAVE_LIBPROFILER=1], [HAVE_LIBPROFILER=0])
[120a28c3]256AM_CONDITIONAL([WITH_LIBPROFILER], [test "x$enable_gprofiler" = "xyes" -a "$HAVE_LIBPROFILER" -eq 1])
[114936a]257
258AC_CHECK_LIB([tcmalloc], [malloc], [HAVE_LIBTCMALLOC=1], [HAVE_LIBTCMALLOC=0])
[120a28c3]259AM_CONDITIONAL([WITH_LIBTCMALLOC], [test "x$enable_gprofiler" = "xyes" -a "$HAVE_LIBTCMALLOC" -eq 1])
[114936a]260
[df8b87cd]261# conditionnally build the demangler
262if test "x$enable_demangler" == xyes; then
263        LIBDEMANGLE="libdemangle.a"
264        DEMANGLER="demangler"
265else
266        LIBDEMANGLE=""
267        DEMANGLER=""
268fi
269AC_SUBST([LIBDEMANGLE])
270AC_SUBST([DEMANGLER])
271
[5d6ce1f]272# Checks for header files.
[1f86d5e]273AC_CHECK_HEADERS([libintl.h malloc.h unistd.h], [], [echo "Error: Missing required header"; exit 1])
[5d6ce1f]274
275# Checks for typedefs, structures, and compiler characteristics.
[1f86d5e]276AC_CHECK_TYPES([_Float32], AC_DEFINE([HAVE_KEYWORDS_FLOATXX], [], [Have keywords _FloatXX.]), [], [[]])
277
278# Checks for compiler flags.
279M4CFA_CHECK_COMPILE_FLAG([-Wcast-function-type], AC_DEFINE([HAVE_CAST_FUNCTION_TYPE], [], [Have compiler warning cast-function-type.]))
[5d6ce1f]280
[95d0a5db]281#==============================================================================
282# backend compiler implementation
283AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${CC}", [Backend compiler to use.])
284AC_SUBST(CFA_BACKEND_CC)
285
[c59712e]286#==============================================================================
[00cc023]287AC_CONFIG_FILES([
288        Makefile
[bf71cfd]289        driver/Makefile
[00cc023]290        src/Makefile
[3b2f41e]291        libcfa/Makefile:libcfa/Makefile.dist.in
[bf71cfd]292        tests/Makefile
[4149d9d]293        tools/Makefile
[2b7afbd]294        tools/prettyprinter/Makefile
[00cc023]295        ])
[5d6ce1f]296
[08ce416]297# Some of our makefile don't need to be distributed
298AM_CONDITIONAL([CFORALL_DISTRIBUTE], [test -e $TOP_SRCDIR/autogen.sh])
299AM_COND_IF([CFORALL_DISTRIBUTE],
300        [AC_CONFIG_FILES([
301                longrun_tests/Makefile
302                benchmark/Makefile
303                benchmark/io/http/Makefile
304                ])])
305
[bf71cfd]306AC_CONFIG_LINKS([tests/test.py:tests/test.py])
[56de5932]307
[bf71cfd]308AC_OUTPUT(tests/config.py)
[7e91d4f]309
[5d6ce1f]310# Final text
311AC_MSG_RESULT(Cforall configuraton completed. Type "make -j 8 install".)
Note: See TracBrowser for help on using the repository browser.