Commit 77c3d18b authored by Peter W. Draper's avatar Peter W. Draper
Browse files

Sort out various issues with compilation flags

Also add ability to disable optimizations and add debugging flags


Former-commit-id: 3064d197009712af27b78692a93a353b6ff668fa
parent b8ea5af5
Building SWIFT
==============
SWIFT is built from a clean source repository using the commands:
./autogen
./configure
make
and from a distribution tarball using:
./configure
make
The compiler choice is GCC by default, but that can be changed using the "CC"
environment variable. This can be just set, or passed on the ./configure
command line, i.e.:
bash:
export CC=icc
./configure
[t]csh:
setenv CC=icc
./configure
or:
./configure CC=icc
to use an Intel compiler. The main "programs" can be found in the "examples/"
directory.
By default an attempt to choose suitable set of optimizing compiler flags
will be made, targetted for the host machine of the build. If this doesn't
work or the binaries will for another architecture then you can stop the
selection of flags using:
./configure --disable-optimization
and then supply your own flags using the "CFLAGS" environment variable, as for
CC.
Note that any CFLAGS that you supply will be added to those determined by
configure in all circumstances. To build SWIFT with debugging support you
can use:
./configure --enable-debug --disable-optimization
You could also add some additional flags:
./configure --enable-debug --disable-optimization CFLAGS="-O2"
for instance.
Dependencies: needs to be filled in...
# This file is part of SWIFT.
# Coypright (c) 2012 pedro.gonnet@durham.ac.uk.
# Copyright (C) 2012 pedro.gonnet@durham.ac.uk.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
......@@ -15,25 +15,33 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# init the project
# Init the project.
AC_INIT([SWIFT],[0.1.0])
AC_CONFIG_SRCDIR([src/space.c])
AM_INIT_AUTOMAKE
AC_USE_SYSTEM_EXTENSIONS
LT_INIT
# my own macro collection
# Add local macro collection.
AC_CONFIG_MACRO_DIR([m4])
# generate header file
# Stop default CFLAGS from anyone except the environment.
: ${CFLAGS=""}
# Generate header file.
AM_CONFIG_HEADER(config.h)
# find and test the compiler
# Find and test the compiler.
AX_CHECK_ENABLE_DEBUG
AC_PROG_CC
AM_PROG_CC_C_O
# Check for MPI. Need to do this before characterising the compiler (C99 mode).
# Enable POSIX and platform extension preprocessor macros.
AC_USE_SYSTEM_EXTENSIONS
# Add libtool support.
LT_INIT
# Check for MPI. Need to do this before characterising the compiler (C99 mode),
# as this changes the compiler.
AC_ARG_ENABLE([mpi],
[AS_HELP_STRING([--enable-mpi],[compile with functionality for distributed-memory parallelim using MPI @<:@default=yes@:>@])],
[if test "x$enable_mpi" != "xno"
......@@ -43,28 +51,51 @@ AC_ARG_ENABLE([mpi],
[ACX_MPI([ CC="$MPICC" AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.]) ])])
AM_CONDITIONAL([HAVEMPI],[test -n "$MPICC"])
# Need C99 and inline support.
AC_PROG_CC_C99
AC_C_INLINE
AX_CC_MAXOPT
# Define HAVE_POSIX_MEMALIGN if it works.
AX_FUNC_POSIX_MEMALIGN
AX_GCC_ARCHFLAG([no])
# Check SSE & AVX support.
AX_EXT
if test "$SIMD_FLAGS" != ""; then
CFLAGS="$CFLAGS $SIMD_FLAGS"
# Only optimize if allowed, otherwise assume user will set CFLAGS as
# appropriate.
AC_ARG_ENABLE(optimization,
[AC_HELP_STRING(
[--enable-optimization],
[Enable compile time optimization flags for host @<:@default=yes@:>@]
)],
[enable_opt="$enableval"],
[enable_opt="yes"]
)
if test "${enable_opt}" = "yes" ; then
# Add code optimisation flags and tuning to host. This is a funny macro
# that does not like CFLAGS being already set. Work around that as we have
# at least set it to "", so it is set.
ac_test_CFLAGS="no"
old_CFLAGS="$CFLAGS"
AX_CC_MAXOPT
ac_test_CFLAGS="yes"
CFLAGS="$old_CFLAGS $CFLAGS"
# Check SSE & AVX support (some overlap with AX_CC_MAXOPT).
AX_EXT
if test "$SIMD_FLAGS" != ""; then
CFLAGS="$CFLAGS $SIMD_FLAGS"
fi
fi
# autoconf stuff
# Autoconf stuff.
AC_PROG_INSTALL
AC_PROG_MAKE_SET
AC_HEADER_STDC
# check for the libraries we will need
# Check for the libraries we will need.
AC_CHECK_LIB(m,sqrt,,AC_MSG_ERROR(something is wrong with the math library!))
# Check for pthreads
# Check for pthreads.
ACX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
CC="$PTHREAD_CC" LDFLAGS="$PTHREAD_LIBS $LIBS"],
AC_MSG_ERROR([Could not find a working version of
......@@ -73,7 +104,7 @@ ACX_PTHREAD([LIBS="$PTHREAD_LIBS $LIBS" CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
non-standard location.]))
# Check for OpenMP
# Check for OpenMP.
AC_OPENMP
AC_SUBST(OPENMP_CFLAGS)
if test -z "${OPENMP_CFLAGS}"; then
......@@ -83,7 +114,7 @@ else
CFLAGS="$CFLAGS $OPENMP_CFLAGS"
fi
# Check for metis
# Check for metis.
AC_ARG_WITH([metis],
[AS_HELP_STRING([--with-metis=PATH],[prefix where the metis library is installed @<:@default=yes@:>@])],
[if test "x$with_metis" != "xno"
......@@ -102,39 +133,44 @@ AC_SUBST(METIS_LDFLAGS)
AM_CONDITIONAL([HAVEMETIS],[test -n "$METIS_LDFLAGS"])
# check for zlib
# Check for zlib.
AC_CHECK_LIB(z,gzopen,[
AC_DEFINE([HAVE_LIBZ],[1],[Set to 1 if zlib is installed.])
LDFLAGS="$LDFLAGS -lz"
],[])
# Check for HDF5
AX_LIB_HDF5()
# Check for HDF5.
AX_LIB_HDF5
# check for setaffinity
# Check for setaffinity.
AC_CHECK_FUNC( pthread_setaffinity_np , AC_DEFINE([HAVE_SETAFFINITY],[true],
[Defined if pthread_setaffinity_np exists.]) )
# Check for timing functions needed by cycle.h
# Check for timing functions needed by cycle.h.
AC_HEADER_TIME
AC_CHECK_HEADERS([sys/time.h c_asm.h intrinsics.h mach/mach_time.h])
AC_CHECK_TYPE([hrtime_t],[AC_DEFINE(HAVE_HRTIME_T, 1, [Define to 1 if hrtime_t is defined in <sys/time.h>])],,[#if HAVE_SYS_TIME_H
AC_CHECK_TYPE([hrtime_t],[AC_DEFINE(HAVE_HRTIME_T, 1, [Define to 1 if hrtime_t
is defined in <sys/time.h>])],,
[#if HAVE_SYS_TIME_H
#include <sys/time.h>
#endif])
AC_CHECK_FUNCS([gethrtime read_real_time time_base_to_time clock_gettime mach_absolute_time])
AC_MSG_CHECKING([for _rtc intrinsic])
rtc_ok=yes
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#ifdef HAVE_INTRINSICS_H
AC_LINK_IFELSE([AC_LANG_PROGRAM(
[[#ifdef HAVE_INTRINSICS_H
#include <intrinsics.h>
#endif]], [[_rtc()]])],[AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])],[rtc_ok=no])
#endif]],
[[_rtc()]])],
[AC_DEFINE(HAVE__RTC,1,[Define if you have the UNICOS _rtc() intrinsic.])],[rtc_ok=no])
AC_MSG_RESULT($rtc_ok)
# make the documentation
# Make the documentation.
DX_INIT_DOXYGEN(libswift,doc/Doxyfile,doc/)
# .in files.
# Handle .in files.
AC_CONFIG_FILES([Makefile src/Makefile examples/Makefile doc/Makefile doc/Doxyfile])
# generate output.
# Generate output.
AC_OUTPUT
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment