Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • configure.ac

    r575a6e5 rad486c5b  
    77#AC_CONFIG_SRCDIR([src/main.cc])
    88AC_CONFIG_HEADERS([config.h:src/config.h.in])
    9 AM_SILENT_RULES([yes])
    10 
    11 m4_include([automake/cfa.m4])
    12 
    13 # don't use the default CFLAGS as they unconditonnaly add -O2
    14 : ${CFLAGS=""}
     9AM_SILENT_RULES([no])
    1510
    1611AM_INIT_AUTOMAKE([subdir-objects])
     
    2015AC_ARG_PROGRAM
    2116
    22 #==============================================================================
    2317#Trasforming cc1 will break compilation
    24 M4CFA_PROGRAM_NAME
    25 
    26 #==============================================================================
    27 # version information
     18if test "${program_transform_name}" = ""; then
     19    AC_MSG_ERROR([Program transform not supported.
     20                Use --with-cfa-name='[[Desired name here]]' instead])
     21fi
     22
     23AC_ARG_WITH(cfa-name,
     24        [  --with-cfa-name=NAME     NAME too which cfa will be installed],
     25        cfa_name=$withval, cfa_name="cfa")
     26
     27#Define the new name of the installed command
     28AC_SUBST(CFA_NAME, ${cfa_name})
    2829
    2930rm -f version
     
    4546AC_DEFINE_UNQUOTED(CFA_VERSION_FULL, ["${ver_major}.${ver_minor}.${ver_patch}.${ver_build}"], [Major.Minor.Patch.Build])
    4647
    47 #==============================================================================
    48 # HACK to be able to use conditionnals inside makefiles
     48# Installation paths
     49
     50AC_ARG_WITH(backend-compiler,
     51        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
     52        backendcompiler=$withval, backendcompiler="")
     53if test "x$backendcompiler" != "x"; then
     54        BACKEND_CC=${backendcompiler}
     55else
     56        AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
     57        if test "x$BACKEND_CC" = "x"; then
     58                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
     59                exit 1
     60        fi
     61fi
     62AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
     63AC_SUBST(CFA_BACKEND_CC)
     64
     65
     66
     67AC_ARG_ENABLE(target-release, AS_HELP_STRING([--enable-target-release], [Build and install the release target]))
     68AC_ARG_ENABLE(target-debug, AS_HELP_STRING([--enable-target-debug], [Build and install the debug target]))
     69AC_ARG_ENABLE(threading, AS_HELP_STRING([--enable-threading], [Build and install libcfa with threading support (Enabled by default)]),
     70[case "${enableval}" in
     71  yes) build_threading="yes" ;;
     72  no)  build_threading="no" ;;
     73  *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
     74esac],[build_threading="yes"])
     75
     76case "$enable_target_release" in
     77        yes)
     78                case "$enable_target_debug" in
     79                        yes)
     80                                build_release="yes"
     81                                build_debug="yes"
     82                                ;;
     83                        no)
     84                                build_release="yes"
     85                                build_debug="no"
     86                                ;;
     87                        *)
     88                                build_release="yes"
     89                                build_debug="no"
     90                                ;;
     91                esac
     92                ;;
     93        no)
     94                case "$enable_target_debug" in
     95                        yes)
     96                                build_release="no"
     97                                build_debug="yes"
     98                                ;;
     99                        no)
     100                                build_release="no"
     101                                build_debug="no"
     102                                ;;
     103                        *)
     104                                build_release="no"
     105                                build_debug="yes"
     106                                ;;
     107                esac
     108                ;;
     109        *)
     110                case "$enable_target_debug" in
     111                        yes)
     112                                build_release="no"
     113                                build_debug="yes"
     114                                ;;
     115                        no)
     116                                build_release="yes"
     117                                build_debug="no"
     118                                ;;
     119                        *)
     120                                build_release="yes"
     121                                build_debug="yes"
     122                                ;;
     123                esac
     124                ;;
     125esac
     126
     127AM_CONDITIONAL([BUILD_RELEASE], [test "x$build_release" = "xyes"])
     128AM_CONDITIONAL([BUILD_DEBUG], [test "x$build_debug" = "xyes"])
     129AM_CONDITIONAL([BUILD_NO_LIB], [test "x$build_release$build_debug" = "xnono"])
     130AM_CONDITIONAL([BUILD_CONCURRENCY], [test "x$build_threading" = "xyes"])
     131
    49132DOifskipcompile='ifeq ($(skipcompile),yes)
    50133else'
     
    56139AM_SUBST_NOTMAKE([DOendif])
    57140
    58 #==============================================================================
    59 # backend compiler implementation
    60 AC_ARG_WITH(backend-compiler,
    61        [  --with-backend-compiler=PROGRAM     PROGRAM that performs the final code compilation (must be gcc-compatible) ],
    62        backendcompiler=$withval, backendcompiler="")
    63 if test "x$backendcompiler" != "x"; then
    64        BACKEND_CC=${backendcompiler}
    65 else
    66        AC_PATH_PROG(BACKEND_CC, gcc, [])       # check gcc installed
    67        if test "x$BACKEND_CC" = "x"; then
    68                AC_MSG_ERROR(some version of gcc is needed. Get it at ftp://ftp.gnu.org)
    69                exit 1
    70        fi
    71 fi
    72 AC_DEFINE_UNQUOTED(CFA_BACKEND_CC, "${BACKEND_CC}", [Location of include files.])
    73 AC_SUBST(CFA_BACKEND_CC)
    74 
    75 #==============================================================================
    76 # Installation paths
    77 M4CFA_PARSE_PREFIX
    78 
    79 #==============================================================================
     141if test "x$prefix" = "xNONE"; then
     142        cfa_prefix=${ac_default_prefix}
     143else
     144        cfa_prefix=${prefix}
     145fi
     146AC_DEFINE_UNQUOTED(CFA_PREFIX, "${cfa_prefix}", [Location of cfa install.])
     147AC_SUBST(CFA_PREFIX, ${cfa_prefix})
     148
     149if test "$includedir" = '${prefix}/include'; then
     150        cfa_incdir="${cfa_prefix}/include/${cfa_name}"
     151else
     152        cfa_incdir=${includedir}
     153fi
     154AC_DEFINE_UNQUOTED(CFA_INCDIR, "${cfa_incdir}", [Location of include files.])
     155AC_SUBST(CFA_INCDIR, ${cfa_incdir})
     156
     157if test "$bindir" = '${exec_prefix}/bin'; then
     158        cfa_bindir="${cfa_prefix}/bin"
     159else
     160        cfa_bindir=${bindir}
     161fi
     162AC_DEFINE_UNQUOTED(CFA_BINDIR, "${cfa_bindir}", [Location of cfa command.])
     163AC_SUBST(CFA_BINDIR, ${cfa_bindir})
     164
     165if test "$libdir" = '${exec_prefix}/lib'; then
     166        cfa_libdir="${cfa_prefix}/lib/${cfa_name}"
     167else
     168        cfa_libdir=${libdir}
     169fi
     170AC_DEFINE_UNQUOTED(CFA_LIBDIR, "${cfa_libdir}", [Location of cc1 and cfa-cpp commands.])
     171AC_SUBST(CFA_LIBDIR, ${cfa_libdir})
     172
    80173# Create variables for commonly used targets
    81 
    82 TOP_SRCDIR=$ac_pwd/$ac_confdir/
    83 TOP_BUILDDIR=$ac_pwd/
    84 
    85 AC_DEFINE_UNQUOTED(TOP_SRCDIR, "$TOP_SRCDIR", [Top src directory])
    86 AC_DEFINE_UNQUOTED(TOP_BUILDDIR, "$TOP_BUILDDIR", [Top build directory])
    87 
    88 DRIVER_DIR=${TOP_BUILDDIR}driver/
    89 CFACC=${DRIVER_DIR}cfa
    90 CFACPP=${DRIVER_DIR}cfa-cpp
     174DRIVER_DIR='$(top_builddir)/src/driver'
     175CFACC=${DRIVER_DIR}/cfa
     176CFACPP=${DRIVER_DIR}/cfa-cpp
    91177AC_SUBST(DRIVER_DIR)
    92178AC_SUBST(CFACC)
    93179AC_SUBST(CFACPP)
    94180
    95 #==============================================================================
    96181# Flag variables needed to build in tree
    97 LIBCFA_SRC='${TOP_SRCDIR}/libcfa/src'
    98 BUILD_IN_TREE_FLAGS="-XCFA -t -B${DRIVER_DIR}"
     182LIBCFA_SRC='$(top_srcdir)/src/libcfa'
     183LIBCFA_BUILD='$(top_builddir)/src/libcfa'
     184BUILD_IN_TREE_FLAGS_NOLIB="-XCFA -t -B${DRIVER_DIR}"
     185BUILD_IN_TREE_FLAGS="${BUILD_IN_TREE_FLAGS_NOLIB} -L${LIBCFA_BUILD} -I${LIBCFA_SRC} -I${LIBCFA_SRC}/containers -I${LIBCFA_SRC}/concurrency -I${LIBCFA_SRC}/stdhdr"
     186AC_SUBST(BUILD_IN_TREE_FLAGS_NOLIB)
    99187AC_SUBST(BUILD_IN_TREE_FLAGS)
    100188
    101 #==============================================================================
    102 # handle the list of hosts to build for
    103 for var in $ac_configure_args
    104 do
    105         #strip quotes surrouding values
    106         case $var in
    107                 # skip cross compilation related arguments
    108                 \'--host=*) ;; \'host_alias=*) ;; \'--build=*) ;; \'build_alias=*) ;; \'--target=*) ;; \'target_alias=*) ;;
    109 
    110                 # skip the target hosts
    111                 \'--with-target-hosts=*) ;;
    112 
    113                 # append all other arguments to the sub configure arguments
    114                 *) LIBCFA_GENERAL_ARGS="${LIBCFA_GENERAL_ARGS} $var";;
    115         esac
    116 done
    117 
    118 #==============================================================================
    119 # handle the list of hosts to build for
    120189AC_CANONICAL_BUILD
    121190AC_CANONICAL_HOST
    122 
    123 default_target="${host_cpu}:debug, ${host_cpu}:nodebug"
    124 AC_ARG_WITH(target-hosts,
    125         [  --with-target-hosts=HOSTS     HOSTS comma seperated list of hosts to build for, format ARCH:[debug|nodebug|nolib]],
    126         target_hosts=$withval, target_hosts=${default_target})
    127 
    128 AC_SUBST(TARGET_HOSTS, ${target_hosts})
    129 
    130 LIBCFA_PATHS="DRIVER_DIR=${DRIVER_DIR}"
    131 
    132 for i in $(echo $target_hosts | sed "s/,/ /g")
    133 do
    134         # call your procedure/other scripts here below
    135         arch_name=$(echo $i | sed -r "s/:(.*)//g")
    136         lib_config=$(echo $i | sed -r "s/(.*)://g")
    137 
    138         case $lib_config in
    139                 "nodebug") ;;
    140                 "debug") ;;
    141                 "nolib") ;;
    142                 *)
    143                         >&2 echo "Configuration must be 'debug', 'nodebug' or 'nolib'"
    144                         exit 1
    145                 ;;
     191AC_SUBST([MACHINE_TYPE],[$host_cpu])
     192
     193if ! test "$host_cpu" = "$build_cpu"; then
     194        case $host_cpu in
     195                i386)
     196                        CFLAGS+=" -m32 "
     197                        CXXFLAGS+=" -m32 "
     198                        CFAFLAGS+=" -m32 "
     199                        LDFLAGS+=" -m32 "
     200                        ;;
     201                i686)
     202                        CFLAGS+=" -m32 "
     203                  CXXFLAGS+=" -m32 "
     204                  CFAFLAGS+=" -m32 "
     205                  LDFLAGS+=" -m32 "
     206                        ;;
     207                x86_64)
     208                        CFLAGS+=" -m64 "
     209                        CXXFLAGS+=" -m64 "
     210                        CFAFLAGS+=" -m64 "
     211                        LDFLAGS+=" -m64 "
     212                        ;;
    146213        esac
    147 
    148         M4CFA_CANNON_CPU([${arch_name}])
    149         lib_arch=${cannon_arch_name}
    150         lib_dir="libcfa/${lib_arch}-${lib_config}"
    151 
    152         LIBCFA_TARGET_DIRS="${LIBCFA_TARGET_DIRS} ${lib_dir}"
    153         LIBCFA_TARGET_MAKEFILES="${LIBCFA_TARGET_MAKEFILES} ${lib_dir}/Makefile"
    154 
    155         mkdir -p ${lib_dir}
    156         echo -n "${LIBCFA_GENERAL_ARGS} " > ${lib_dir}/config.data
    157         echo -n "${LIBCFA_PATHS} " >> ${lib_dir}/config.data
    158         echo -n "ARCHITECTURE=${lib_arch} " >> ${lib_dir}/config.data
    159         echo -n "CONFIGURATION=${lib_config}" >> ${lib_dir}/config.data
    160 done
    161 
    162 AC_SUBST(LIBCFA_TARGET_DIRS)
    163 AC_SUBST(LIBCFA_TARGET_MAKEFILES)
    164 
    165 M4CFA_CANNON_CPU([${host_cpu}])
    166 AC_DEFINE_UNQUOTED(CFA_DEFAULT_CPU, "$cannon_arch_name", [Default cpu to use if neither -m32 or -m64 are defined.])
    167 AC_DEFINE_UNQUOTED(CFA_64_CPU, "x64", [CPU to use if the -m64 flags is given.])
    168 AC_DEFINE_UNQUOTED(CFA_32_CPU, "x86", [CPU to use if the -m32 flags is given.])
    169 
    170 #==============================================================================
    171 # CAFLAGS
     214fi
     215
    172216AC_DEFINE_UNQUOTED(CFA_FLAGS, "${CFAFLAGS}", [compilation flags for cfa libraries and test programs.])
    173217AC_SUBST(CFA_FLAGS, ${CFAFLAGS})
    174218
    175 #==============================================================================
    176219# Checks for programs.
    177220AC_PROG_CXX
     
    209252AC_CHECK_FUNCS([memset putenv strchr strtol])
    210253
    211 #==============================================================================
    212254AC_CONFIG_FILES([
    213255        Makefile
    214         driver/Makefile
     256        src/driver/Makefile
    215257        src/Makefile
    216         benchmark/Makefile
    217         tests/Makefile
    218         tests/preempt_longrun/Makefile
     258        src/benchmark/Makefile
     259        src/examples/Makefile
     260        src/tests/Makefile
     261        src/tests/preempt_longrun/Makefile
     262        src/prelude/Makefile
     263        src/libcfa/Makefile
    219264        tools/Makefile
    220265        tools/prettyprinter/Makefile
    221266        ])
    222267
    223 AC_CONFIG_LINKS([tests/test.py:tests/test.py])
    224 
    225 AC_OUTPUT(tests/config.py)
     268AC_CONFIG_LINKS([src/tests/test.py:src/tests/test.py])
     269
     270AC_OUTPUT(src/tests/config.py)
     271
     272AM_COND_IF([BUILD_RELEASE],
     273        [AM_COND_IF([BUILD_DEBUG],
     274                [AC_MSG_NOTICE(Building libcfa for target: release & debug)],
     275                [AC_MSG_NOTICE(Building libcfa for target: release)])],
     276        [AM_COND_IF([BUILD_DEBUG],
     277                [AC_MSG_NOTICE(Building libcfa for target: debug)],
     278                [AC_MSG_NOTICE(Running cfa without libcfa)])])
    226279
    227280# Final text
Note: See TracChangeset for help on using the changeset viewer.