1dnl
2dnl Copyright (C) 2010. See COPYRIGHT in top-level directory.
3dnl
4
5AC_PREREQ(2.62)
6
7AC_INIT([armci],[0])
8AC_CONFIG_AUX_DIR(m4)
9AC_CONFIG_MACRO_DIR(m4)
10AM_INIT_AUTOMAKE([-Wall -Werror foreign 1.12.3 color-tests parallel-tests])
11
12LT_PREREQ([2.2.6])
13
14## Bug in libtool adds -O2 and -g by default
15if test ! -z "$MPICC" ; then
16   CC=$MPICC
17   export CC
18fi
19PAC_PUSH_FLAG(CFLAGS)
20AC_PROG_CC(mpicc)
21
22AM_PROG_AR
23
24LT_INIT(disable-shared)
25PAC_POP_FLAG(CFLAGS)
26
27## Non-verbose make
28m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
29
30## Version checks
31if test -s "$srcdir/VERSION" ; then
32    . $srcdir/VERSION
33    export ARMCI_VERSION
34else
35    AC_MSG_ERROR([Version information not found. Configuration aborted.])
36fi
37
38# ABI version
39AC_SUBST(libarmci_abi_version)
40
41# Release version
42# Produce a numeric version assuming the following format:
43# Version: [MAJ].[MIN].[REV][EXT][EXT_NUMBER]
44# Example: 1.0.7rc1 has
45#          MAJ = 1
46#          MIN = 0
47#          REV = 7
48#          EXT = rc
49#          EXT_NUMBER = 1
50#
51# Converting to numeric version will convert EXT to a format number:
52#          ALPHA (a) = 0
53#          BETA (b)  = 1
54#          RC (rc)   = 2
55#          PATCH (p) = 3
56# Regular releases are treated as patch 0
57#
58# Numeric version will have 1 digit for MAJ, 2 digits for MIN,
59# 2 digits for REV, 1 digit for EXT and 2 digits for EXT_NUMBER.
60changequote(<<,>>)
61V1=`expr $ARMCI_VERSION : '\([0-9]*\)\.[0-9]*\.*[0-9]*[a-zA-Z]*[0-9]*'`
62V2=`expr $ARMCI_VERSION : '[0-9]*\.\([0-9]*\)\.*[0-9]*[a-zA-Z]*[0-9]*'`
63V3=`expr $ARMCI_VERSION : '[0-9]*\.[0-9]*\.*\([0-9]*\)[a-zA-Z]*[0-9]*'`
64V4=`expr $ARMCI_VERSION : '[0-9]*\.[0-9]*\.*[0-9]*\([a-zA-Z]*\)[0-9]*'`
65V5=`expr $ARMCI_VERSION : '[0-9]*\.[0-9]*\.*[0-9]*[a-zA-Z]*\([0-9]*\)'`
66changequote([,])
67
68if test "$V2" -le 9 ; then V2=0$V2 ; fi
69if test "$V3" = "" ; then V3=0; fi
70if test "$V3" -le 9 ; then V3=0$V3 ; fi
71if test "$V4" = "a" ; then
72    V4=0
73elif test "$V4" = "b" ; then
74    V4=1
75elif test "$V4" = "rc" ; then
76    V4=2
77elif test "$V4" = "" ; then
78    V4=3
79    V5=0
80elif test "$V4" = "p" ; then
81    V4=3
82fi
83if test "$V5" -le 9 ; then V5=0$V5 ; fi
84
85ARMCI_NUMVERSION=`expr $V1$V2$V3$V4$V5 + 0`
86AC_SUBST(ARMCI_NUMVERSION)
87AC_SUBST(ARMCI_VERSION)
88
89AC_CONFIG_HEADER(src/armciconf.h)
90AH_TOP([/* -*- Mode: C; c-basic-offset:4 ; -*- */
91/*
92 *  (C) 2010 by Argonne National Laboratory.
93 *      See COPYRIGHT in top-level directory.
94 */
95#ifndef _ARMCICONF_H_
96#define _ARMCICONF_H_
97])
98AH_BOTTOM([#endif /* _ARMCICONF_H_ */])
99
100PAC_ARG_STRICT
101PAC_CC_FUNCTION_NAME_SYMBOL
102
103## Error checking functionality
104#AC_ARG_ENABLE(error-checking,
105	#AC_HELP_STRING([--enable-error-checking],[Enable error checking functionality]),
106	#enable_error_checking=$enableval,
107	#enable_error_checking=yes)
108#if test "$enable_error_checking" = "yes" ; then
109   #AC_DEFINE(ERROR_CHECKING,1,[Define if error checking is enabled])
110#fi
111
112## Check if __VA_ARGS__ is defined by the compiler
113PAC_C_MACRO_VA_ARGS
114
115## const and restrict
116AC_C_CONST
117AC_C_RESTRICT
118
119## Chcek for C99
120AC_PROG_CC_C99
121if test "$ac_cv_prog_cc_c99" = "no" ; then
122   AC_ERROR([C99 not supported by the compiler])
123fi
124
125AC_CHECK_HEADERS([execinfo.h stdint.h inttypes.h])
126AC_TYPE_UINT8_T
127
128## Debugging support
129AC_ARG_ENABLE(g, AC_HELP_STRING([--enable-g],[Enable Debugging]),
130                 [ debug=$enableval ],
131                 [ debug=no ])
132AC_MSG_CHECKING(debugging support)
133AC_MSG_RESULT($debug)
134if test "$debug" = "yes"; then
135   CFLAGS="$CFLAGS -g -O0"
136fi
137
138## Safety checks
139AC_ARG_ENABLE(safety-checks, AC_HELP_STRING([--disable-safety-checks],[Disable safety checks for better performance]),
140                 [ safety_enabled=$enableval ],
141                 [ safety_enabled=yes ])
142AC_MSG_CHECKING(whether safety checks are enabled)
143AC_MSG_RESULT($safety_enabled)
144if test "$safety_enabled" = "no"; then
145   AC_DEFINE(NO_SEATBELTS,1,[Defined when safety checks are disabled])
146fi
147
148## ARMCI Groups
149AC_ARG_ENABLE(armci-group, AC_HELP_STRING([--enable-armci-group],[Enable ARMCI subset-collective group formation]),
150                 [ armci_group_enabled=$enableval ],
151                 [ armci_group_enabled=no ])
152AC_MSG_CHECKING(whether ARMCI subset-collective group formation is enabled)
153AC_MSG_RESULT($armci_group_enabled)
154if test "$armci_group_enabled" = "yes"; then
155   AC_DEFINE(ARMCI_GROUP,1,[Defined when ARMCI subset-collective group formation is enabled])
156fi
157
158# Check for support for weak symbols.
159AC_ARG_ENABLE(weak-symbols, AC_HELP_STRING([--enable-weak-symbols],
160                 [Use weak symbols to implement PARMCI routines (default)]),,
161                 enable_weak_symbols=yes)
162if test $enable_weak_symbols = yes ; then
163    # Turn off weak symbols if they aren't available
164    PAC_PROG_C_WEAK_SYMBOLS(,enable_weak_symbols=no)
165fi
166if test $enable_weak_symbols = "yes" ; then
167    AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define if weak symbols should be used])
168    # Check for the ability to support multiple weak symbols
169    if test "$pac_cv_prog_c_weak_symbols" = "pragma weak" ; then
170       PAC_PROG_C_MULTIPLE_WEAK_SYMBOLS(AC_DEFINE(HAVE_MULTIPLE_PRAGMA_WEAK,1,[Define if multiple weak symbols may be defined]))
171    fi
172fi
173
174## Enable creation of libtool-style versioning or no versioning
175AC_ARG_ENABLE(versioning,
176        [AC_HELP_STRING([--enable-versioning],[Enable library versioning])],,
177        [enable_versioning=yes])
178
179if test "$enable_versioning" = "yes" ; then
180   libarmci_abi_versionflags="-version-info \$(libarmci_abi_version)"
181else
182   libarmci_abi_versionflags="-avoid-version"
183fi
184export libarmci_abi_versionflags
185AC_SUBST(libarmci_abi_versionflags)
186
187
188## Documentation
189AC_PATH_PROG([DOXYGEN],[doxygen],,$PATH)
190AC_SUBST(DOXYGEN)
191
192AC_SUBST(top_srcdir)
193
194## Final output
195AC_OUTPUT(Makefile)
196