Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • configure.ac

    r158b026 r05f4b85  
    55AC_INIT([cfa-cc],[1.0.0.0],[cforall@plg.uwaterloo.ca])
    66AC_CONFIG_AUX_DIR([automake])
    7 AC_CONFIG_MACRO_DIRS([automake])
    87#AC_CONFIG_SRCDIR([src/main.cc])
    9 AC_CONFIG_HEADERS([config.h:src/config.h.in])
    10 AM_SILENT_RULES([yes])
    11 
    12 m4_include([automake/cfa.m4])
    13 
    14 # don't use the default CFLAGS as they unconditonnaly add -O2
    15 : ${CFLAGS=""}
     8AC_CONFIG_HEADERS([config.h])
     9AM_SILENT_RULES([no])
    1610
    1711AM_INIT_AUTOMAKE([subdir-objects])
     12AM_MAINTAINER_MODE(enable)                      # may require auto* software to be installed
    1813
    1914# Allow program name tansformation
     
    2116AC_ARG_PROGRAM
    2217
    23 #==============================================================================
    2418#Trasforming cc1 will break compilation
    25 M4CFA_PROGRAM_NAME
    26 
    27 #==============================================================================
    28 # version information
     19if test "${program_transform_name}" = ""; then
     20    AC_MSG_ERROR([Program transform not supported.
     21                Use --with-cfa-name='[[Desired name here]]' instead])
     22fi
     23
     24AC_ARG_WITH(cfa-name,
     25        [  --with-cfa-name=NAME     NAME too which cfa will be installed],
     26        cfa_name=$withval, cfa_name="cfa")
     27
     28#Define the new name of the installed command
     29AC_SUBST(CFA_NAME, ${cfa_name})
    2930
    3031rm -f version
     
    4647AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
    4748
    48 #==============================================================================
    49 # HACK to be able to use conditionnals inside makefiles
     49# Installation paths
     50
     51AC_ARG_WITH(backend-compiler,
     52        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
     53        backendcompiler=$withval, backendcompiler="")
     54if test "x$backendcompiler" != "x"; then
     55        BACKEND_CC=${backendcompiler}
     56else
     57        AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
     58        if test "x$BACKEND_CC" = "x"; then
     59                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
     60                exit 1
     61        fi
     62fi
     63AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
     64AC_SUBST(CFA_BACKEND_CC)
     65
     66
     67
     68AC_ARG_ENABLE(target-release, AS_HELP_STRING([--enable-target-release], [Build and install the release target]))
     69AC_ARG_ENABLE(target-debug, AS_HELP_STRING([--enable-target-debug], [Build and install the debug target]))
     70AC_ARG_ENABLE(threading, AS_HELP_STRING([--enable-threading], [Build and install libcfa with threading support (Enabled by default)]),
     71[case "${enableval}" in
     72  yes) build_threading="yes" ;;
     73  no)  build_threading="no" ;;
     74  *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
     75esac],[build_threading="yes"])
     76
     77case "$enable_target_release" in
     78        yes)
     79                case "$enable_target_debug" in
     80                        yes)
     81                                build_release="yes"
     82                                build_debug="yes"
     83                                ;;
     84                        no)
     85                                build_release="yes"
     86                                build_debug="no"
     87                                ;;
     88                        *)
     89                                build_release="yes"
     90                                build_debug="no"
     91                                ;;
     92                esac
     93                ;;
     94        no)
     95                case "$enable_target_debug" in
     96                        yes)
     97                                build_release="no"
     98                                build_debug="yes"
     99                                ;;
     100                        no)
     101                                build_release="no"
     102                                build_debug="no"
     103                                ;;
     104                        *)
     105                                build_release="no"
     106                                build_debug="yes"
     107                                ;;
     108                esac
     109                ;;
     110        *)
     111                case "$enable_target_debug" in
     112                        yes)
     113                                build_release="no"
     114                                build_debug="yes"
     115                                ;;
     116                        no)
     117                                build_release="yes"
     118                                build_debug="no"
     119                                ;;
     120                        *)
     121                                build_release="yes"
     122                                build_debug="yes"
     123                                ;;
     124                esac
     125                ;;
     126esac
     127
     128AM_CONDITIONAL([BUILD_RELEASE], [test "x$build_release" = "xyes"])
     129AM_CONDITIONAL([BUILD_DEBUG], [test "x$build_debug" = "xyes"])
     130AM_CONDITIONAL([BUILD_NO_LIB], [test "x$build_release$build_debug" = "xnono"])
     131AM_CONDITIONAL([BUILD_CONCURRENCY], [test "x$build_threading" = "xyes"])
     132
    50133DOifskipcompile='ifeq ($(skipcompile),yes)
    51134else'
     
    57140AM_SUBST_NOTMAKE([DOendif])
    58141
    59 #==============================================================================
    60 # distcc support
    61 
    62 AC_ARG_ENABLE(distcc,
    63         [  --enable-distcc     whether or not to enable distributed compilation],
    64         enable_distcc=$enableval, enable_distcc=no)
    65 
    66 AM_CONDITIONAL([ENABLE_DISTCC], [test x$enable_distcc = xyes])
    67 HAS_DISTCC="False"
    68 
    69 if test x$enable_distcc = xyes; then
    70         CXX="distcc ${CXX}"
    71         LD="distcc ${LD} -lstdc++"
    72         HAS_DISTCC="True"
    73         echo "Enabling distributed builds"
    74 fi
    75 
    76 AC_SUBST(CXX)
    77 AC_SUBST(LD)
    78 AC_SUBST(HAS_DISTCC)
    79 
    80 #==============================================================================
    81 # Installation paths
    82 M4CFA_PARSE_PREFIX
    83 
    84 #==============================================================================
    85 # Create variables for commonly used targets
    86 
    87 TOP_SRCDIR="$(readlink -m $ac_confdir/)/"
    88 TOP_BUILDDIR="$(readlink -m $ac_pwd/)/"
    89 
    90 AC_DEFINE_UNQUOTED(TOP_SRCDIR, "$TOP_SRCDIR", [Top src directory])
    91 AC_DEFINE_UNQUOTED(TOP_BUILDDIR, "$TOP_BUILDDIR", [Top build directory])
    92 
    93 DRIVER_DIR=${TOP_BUILDDIR}driver/
    94 CFACC=${DRIVER_DIR}cfa
    95 CFACC_INSTALL=${CFA_BINDIR}${CFA_NAME}
    96 CFACPP=${DRIVER_DIR}cfa-cpp
    97 AC_SUBST(DRIVER_DIR)
    98 AC_SUBST(CFACC)
    99 AC_SUBST(CFACC_INSTALL)
    100 AC_SUBST(CFACPP)
    101 
    102 #==============================================================================
    103 # Flag variables needed to build in tree
    104 LIBCFA_SRC='${TOP_SRCDIR}/libcfa/src'
    105 BUILD_IN_TREE_FLAGS="-XCFA -t -B${DRIVER_DIR}"
    106 AC_SUBST(BUILD_IN_TREE_FLAGS)
    107 
    108 #==============================================================================
    109 # handle the list of hosts to build for
    110 for var in $ac_configure_args
    111 do
    112         #strip quotes surrouding values
    113         case $var in
    114                 # skip cross compilation related arguments
    115                 \'--host=*) ;; \'host_alias=*) ;; \'--build=*) ;; \'build_alias=*) ;; \'--target=*) ;; \'target_alias=*) ;;
    116 
    117                 # skip the target hosts
    118                 \'--with-target-hosts=*) ;;
    119 
    120                 # skip gprofiler for libcfa
    121                 \'--enable-gprofiler=*) ;;
    122                 \'--disable-gprofiler) ;;
    123 
    124                 # append all other arguments to the sub configure arguments
    125                 *) LIBCFA_GENERAL_ARGS="${LIBCFA_GENERAL_ARGS} $var";;
    126         esac
    127 done
    128 
    129 #==============================================================================
    130 # handle the list of hosts to build for
     142if test "x$prefix" = "xNONE"; then
     143        cfa_prefix=${ac_default_prefix}
     144else
     145        cfa_prefix=${prefix}
     146fi
     147AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
     148AC_SUBST(CFA_PREFIX, ${cfa_prefix})
     149
     150if test "$includedir" = '${prefix}/include'; then
     151        cfa_incdir="${cfa_prefix}/include/${cfa_name}"
     152else
     153        cfa_incdir=${includedir}
     154fi
     155AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
     156AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     157
     158if test "$bindir" = '${exec_prefix}/bin'; then
     159        cfa_bindir="${cfa_prefix}/bin"
     160else
     161        cfa_bindir=${bindir}
     162fi
     163AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
     164AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     165
     166if test "$libdir" = '${exec_prefix}/lib'; then
     167        cfa_libdir="${cfa_prefix}/lib/${cfa_name}"
     168else
     169        cfa_libdir=${libdir}
     170fi
     171AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
     172AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
     173
    131174AC_CANONICAL_BUILD
    132175AC_CANONICAL_HOST
     176AC_SUBST([MACHINE_TYPE],[$host_cpu])
    133177
    134178if ! test "$host_cpu" = "$build_cpu"; then
    135179        case $host_cpu in
    136180                i386)
    137                         HOST_FLAGS="-m32"
     181                        CFLAGS+=" -m32 "
     182                        CXXFLAGS+=" -m32 "
     183                        CFAFLAGS+=" -m32 "
     184                        LDFLAGS+=" -m32 "
    138185                        ;;
    139186                i686)
    140                         HOST_FLAGS="-m32"
     187                        CFLAGS+=" -m32 "
     188                  CXXFLAGS+=" -m32 "
     189                  CFAFLAGS+=" -m32 "
     190                  LDFLAGS+=" -m32 "
    141191                        ;;
    142192                x86_64)
    143                         HOST_FLAGS="-m64"
     193                        CFLAGS+=" -m64 "
     194                        CXXFLAGS+=" -m64 "
     195                        CFAFLAGS+=" -m64 "
     196                        LDFLAGS+=" -m64 "
    144197                        ;;
    145198        esac
    146199fi
    147 AC_SUBST(HOST_FLAGS)
    148 
    149 default_target="${host_cpu}:debug, ${host_cpu}:nodebug"
    150 AC_ARG_WITH(target-hosts,
    151         [  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:[debug|nodebug|nolib]],
    152         target_hosts=$withval, target_hosts=${default_target})
    153 
    154 AC_ARG_ENABLE(gprofiler,
    155         [  --enable-gprofiler     whether or not to enable gprofiler tools (if available)],
    156         enable_gprofiler=$enableval, enable_gprofiler=yes)
    157 
    158 AC_ARG_ENABLE(demangler,
    159         [  --enable-demangler     whether or not to build the demangler (executable and library)],
    160         enable_demangler=$enableval, enable_demangler=yes)
    161 
    162 AC_SUBST(TARGET_HOSTS, ${target_hosts})
    163 
    164 LIBCFA_PATHS="DRIVER_DIR=${DRIVER_DIR}"
    165 
    166 for i in $(echo $target_hosts | sed "s/,/ /g")
    167 do
    168         # call your procedure/other scripts here below
    169         arch_name=$(echo $i | sed -r "s/:(.*)//g")
    170         lib_config=$(echo $i | sed -r "s/(.*)://g")
    171 
    172         case $lib_config in
    173                 "nodebug") ;;
    174                 "debug") ;;
    175                 "nolib") ;;
    176                 "profile") ;;
    177                 *)
    178                         >&2 echo "Configuration must be 'debug', 'nodebug' or 'nolib'"
    179                         exit 1
    180                 ;;
    181         esac
    182 
    183         M4CFA_CANNON_CPU([${arch_name}])
    184         lib_arch=${cannon_arch_name}
    185         lib_dir="libcfa/${lib_arch}-${lib_config}"
    186 
    187         LIBCFA_TARGET_DIRS="${LIBCFA_TARGET_DIRS} ${lib_dir}"
    188         LIBCFA_TARGET_MAKEFILES="${LIBCFA_TARGET_MAKEFILES} ${lib_dir}/Makefile"
    189 
    190         mkdir -p ${lib_dir}
    191         echo -n "${LIBCFA_GENERAL_ARGS} " > ${lib_dir}/config.data
    192         echo -n "${LIBCFA_PATHS} " >> ${lib_dir}/config.data
    193         echo -n "ARCHITECTURE=${lib_arch} " >> ${lib_dir}/config.data
    194         echo -n "CONFIGURATION=${lib_config} " >> ${lib_dir}/config.data
    195         echo -n "CFA_VERSION=${ver_major}:${ver_minor}:${ver_patch}" >> ${lib_dir}/config.data
    196 done
    197 
    198 AC_SUBST(LIBCFA_TARGET_DIRS)
    199 AC_SUBST(LIBCFA_TARGET_MAKEFILES)
    200 
    201 M4CFA_CANNON_CPU([${host_cpu}])
    202 AC_DEFINE_UNQUOTED(CFA_DEFAULT_CPU, "$cannon_arch_name", [Default cpu to use if neither -m32 or -m64 are defined.])
    203 AC_DEFINE_UNQUOTED(CFA_64_CPU, "x64", [CPU to use if the -m64 flags is given.])
    204 AC_DEFINE_UNQUOTED(CFA_32_CPU, "x86", [CPU to use if the -m32 flags is given.])
    205 
    206 #==============================================================================
    207 # CAFLAGS
     200
    208201AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
    209202AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
    210203
    211 #==============================================================================
    212204# Checks for programs.
    213205AC_PROG_CXX
    214206AC_PROG_CC
    215207AM_PROG_AS
     208AM_PROG_CC_C_O  # deprecated
    216209# These are often not installed and people miss seeing the "no", so stop the configure.
    217210AC_PROG_YACC
     
    219212AC_PROG_LEX
    220213if test "${LEX}" = "lex" ; then echo "Error: flex required." ; exit 1 ; fi
    221 AC_PROG_LIBTOOL
    222214AC_PROG_INSTALL
     215AC_PROG_MAKE_SET
     216AC_PROG_RANLIB
    223217
    224218# Checks for libraries.
    225 AC_CHECK_LIB([fibre], [Fibre::yield], [HAVE_LIBFIBRE=1], [HAVE_LIBFIBRE=0])
    226 AM_CONDITIONAL([WITH_LIBFIBRE], [test "$HAVE_LIBFIBRE" -eq 1])
    227 
    228 AC_CHECK_LIB([profiler], [ProfilingIsEnabledForAllThreads], [HAVE_LIBPROFILER=1], [HAVE_LIBPROFILER=0])
    229 AM_CONDITIONAL([WITH_LIBPROFILER], [test "x$enable_gprofiler" = "xyes" -a "$HAVE_LIBPROFILER" -eq 1])
    230 
    231 AC_CHECK_LIB([tcmalloc], [malloc], [HAVE_LIBTCMALLOC=1], [HAVE_LIBTCMALLOC=0])
    232 AM_CONDITIONAL([WITH_LIBTCMALLOC], [test "x$enable_gprofiler" = "xyes" -a "$HAVE_LIBTCMALLOC" -eq 1])
    233 
    234 # conditionnally build the demangler
    235 if test "x$enable_demangler" == xyes; then
    236         LIBDEMANGLE="libdemangle.a"
    237         DEMANGLER="demangler"
    238 else
    239         LIBDEMANGLE=""
    240         DEMANGLER=""
    241 fi
    242 AC_SUBST([LIBDEMANGLE])
    243 AC_SUBST([DEMANGLER])
    244219
    245220# Checks for header files.
    246 AC_CHECK_HEADERS([libintl.h malloc.h unistd.h], [], [echo "Error: Missing required header"; exit 1])
     221AC_FUNC_ALLOCA
     222AC_CHECK_HEADERS([fenv.h float.h inttypes.h libintl.h limits.h malloc.h stddef.h stdlib.h string.h unistd.h])
    247223
    248224# Checks for typedefs, structures, and compiler characteristics.
    249 AC_CHECK_TYPES([_Float32], AC_DEFINE([HAVE_KEYWORDS_FLOATXX], [], [Have keywords _FloatXX.]), [], [[]])
    250 
    251 # Checks for compiler flags.
    252 M4CFA_CHECK_COMPILE_FLAG([-Wcast-function-type], AC_DEFINE([HAVE_CAST_FUNCTION_TYPE], [], [Have compiler warning cast-function-type.]))
    253 
    254 #==============================================================================
    255 # backend compiler implementation
    256 AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${CC}", [Backend compiler to use.])
    257 AC_SUBST(CFA_BACKEND_CC)
    258 
    259 #==============================================================================
     225AC_HEADER_STDBOOL
     226AC_C_INLINE
     227AC_TYPE_INT16_T
     228AC_TYPE_INT32_T
     229AC_TYPE_INT8_T
     230AC_C_RESTRICT
     231AC_TYPE_SIZE_T
     232AC_TYPE_UINT16_T
     233AC_TYPE_UINT32_T
     234AC_TYPE_UINT8_T
     235
     236# Checks for library functions.
     237AC_CHECK_FUNCS([memset putenv strchr strtol])
     238
    260239AC_CONFIG_FILES([
    261240        Makefile
    262         driver/Makefile
     241        src/driver/Makefile
    263242        src/Makefile
    264         benchmark/Makefile
    265         tests/Makefile
    266         longrun_tests/Makefile
     243        src/benchmark/Makefile
     244        src/examples/Makefile
     245        src/tests/Makefile
     246        src/tests/preempt_longrun/Makefile
     247        src/prelude/Makefile
     248        src/libcfa/Makefile
    267249        tools/Makefile
    268250        tools/prettyprinter/Makefile
    269251        ])
    270252
    271 AC_CONFIG_LINKS([tests/test.py:tests/test.py])
    272 
    273 AC_OUTPUT(tests/config.py)
     253AC_OUTPUT
     254
     255AM_COND_IF([BUILD_RELEASE],
     256        [AM_COND_IF([BUILD_DEBUG],
     257                [AC_MSG_NOTICE(Building libcfa for target: release & debug)],
     258                [AC_MSG_NOTICE(Building libcfa for target: release)])],
     259        [AM_COND_IF([BUILD_DEBUG],
     260                [AC_MSG_NOTICE(Building libcfa for target: debug)],
     261                [AC_MSG_NOTICE(Running cfa without libcfa)])])
    274262
    275263# Final text
Note: See TracChangeset for help on using the changeset viewer.