# -*- shell-script -*-
#
# Copyright © 2009      CNRS
# Copyright © 2009-2010 INRIA.  All rights reserved.
# Copyright © 2009, 2011      Université Bordeaux 1
# Copyright © 2009-2010 Cisco Systems, Inc.  All rights reserved.
#
# See COPYING in top-level directory.
# 
# Additional copyrights may follow
# 
# $HEADER$
#

AC_INIT([hwloc], 
        [m4_normalize(esyscmd([config/hwloc_get_version.sh VERSION --base]))],
        [http://www.open-mpi.org/community/help/], [hwloc])
AC_PREREQ(2.63)
AC_CONFIG_AUX_DIR(./config)
# Note that this directory must *exactly* match what was specified via
# -I in ACLOCAL_AMFLAGS in the top-level Makefile.am.
AC_CONFIG_MACRO_DIR(./config)

cat <<EOF

###
### Configuring hwloc distribution tarball
### Startup tests
###
EOF

# This must be before AM_INIT_AUTOMAKE
AC_CANONICAL_TARGET

# Init automake
AM_INIT_AUTOMAKE([1.10 dist-bzip2 subdir-objects foreign tar-ustar -Wall -Werror])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])

# We want new Libtool.  None of that old stuff.  Pfft.    
m4_ifdef([LT_PREREQ], [],
	 [m4_fatal([libtool version 2.2.6 or higher is required], [63])])
LT_PREREQ([2.2.6])

AC_LANG([C])

# Make configure depend on the VERSION file, since it's used in AC_INIT
AC_SUBST([CONFIGURE_DEPENDENCIES], ['$(top_srcdir)/VERSION'])

# Get the version of hwloc that we are installing
AC_MSG_CHECKING([for hwloc version])
HWLOC_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION`"
HWLOC_MAJOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --major`"
HWLOC_MINOR_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --minor`"
HWLOC_RELEASE_VERSION="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release`"
HWLOC_REPO_REV="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --repo-rev`"
HWLOC_RELEASE_DATE="`$srcdir/config/hwloc_get_version.sh $srcdir/VERSION --release-date`"
AC_SUBST(HWLOC_VERSION)
AC_SUBST(HWLOC_SVN_R)
AC_SUBST(HWLOC_RELEASE_DATE)
AC_DEFINE_UNQUOTED([HWLOC_MAJOR_VERSION], [$HWLOC_MAJOR_VERSION],
    [Major version of hwloc])
AC_DEFINE_UNQUOTED([HWLOC_MINOR_VERSION], [$HWLOC_MINOR_VERSION],
    [Minor version of hwloc])
AC_DEFINE_UNQUOTED([HWLOC_RELEASE_VERSION], [$HWLOC_RELEASE_VERSION],
    [Release version of hwloc])
AC_MSG_RESULT([$HWLOC_VERSION])

# Override/fixup the version numbers set by AC_INIT, since on
# developer builds, there's no good way to know what the version is
# before running configure :(.  We only use the base version number
# (ie, no svn r numbers) for the version set in AC_INIT.  This will
# always match reality because we add the VERSION file (the only way
# to change the major.minor.release{greek}) into the configure
# dependencies.

PACKAGE_VERSION="$HWLOC_VERSION"
PACKAGE_STRING="${PACKAGE_NAME} ${PACKAGE_VERSION}"
VERSION="${PACKAGE_VERSION}"

# For standalone configurations, we also include a .so version number.

. $srcdir/VERSION
AC_SUBST([libhwloc_so_version])

# Setup the header file
AH_TOP([/* -*- c -*-
 *
 * Copyright © 2009 CNRS, INRIA., Université Bordeaux 1  All rights reserved.
 * Copyright © 2009 Cisco Systems, Inc.  All rights reserved.
 * $COPYRIGHT$
 * 
 * Additional copyrights may follow
 * 
 * $HEADER$
 *
 * This file is automatically generated by configure.  Edits will be lost
 * the next time you run configure!
 */

#ifndef HWLOC_CONFIGURE_H
#define HWLOC_CONFIGURE_H
])
AH_BOTTOM([
#endif /* HWLOC_CONFIGURE_H */
])

# Setup C compiler

CFLAGS_save="$CFLAGS"
AC_PROG_CC
AM_PROG_CC_C_O
CFLAGS="$CFLAGS_save"

# Define hwloc's configure arguments
HWLOC_DEFINE_ARGS

# If debug mode, add -g
AS_IF([test "$hwloc_debug" = "1"],
      [CFLAGS="$CFLAGS -g"])

# If the user didn't specifically ask for embedding mode, default to
# standalone mode
AS_IF([test "$enable_embedded_mode" != "yes"],
      [AS_IF([test ! -d "$srcdir/doc"],
             [AC_MSG_WARN([The hwloc source tree looks incomplete for a standalone])
              AC_MSG_WARN([build.  Perhaps this hwloc tree is intended for an embedded])
              AC_MSG_WARN([build?  Try using the --enable-embedded-mode switch.])
              AC_MSG_ERROR([Cannot build standalone hwloc])],
             [HWLOC_BUILD_STANDALONE])])

# Setup the hwloc core
HWLOC_SETUP_CORE([], [], [AC_MSG_ERROR([Cannot build hwloc core])], [1])

# Setup hwloc's docs, utils, and tests
AS_IF([test "$hwloc_mode" = "standalone"],
      [HWLOC_SETUP_DOCS
       HWLOC_SETUP_UTILS
       HWLOC_SETUP_TESTS])

# Run the AM_CONDITIONALs
HWLOC_DO_AM_CONDITIONALS

# Set the final flags
CFLAGS="$HWLOC_EMBEDDED_CFLAGS $CFLAGS"
CPPFLAGS="$HWLOC_EMBEDDED_CPPFLAGS $CPPFLAGS"
LIBS="$HWLOC_EMBEDDED_LIBS $LIBS"

# Setup libtool, but disable C++, F77, Java and Windows Resource
# Compiler support -- we don't need that stuff.
AM_ENABLE_SHARED
AM_DISABLE_STATIC
AM_PROG_LIBTOOL([win32-dll])
LT_LANG([C])

# Party on
AC_OUTPUT
