diff --git a/Makefile.am.template b/Makefile.am.template
index d77a9eb52d0bd1509f9cf09ef5a2bb5acd4b37c6..743f0400e9344f8b44df19dee80bc56aac6f2df3 100644
--- a/Makefile.am.template
+++ b/Makefile.am.template
@@ -20,11 +20,14 @@ noinst_LTLIBRARIES += $(assemble%LIBCODE%_libs)
AM_CFLAGS = $(ALBERTA_%EFLAGS%_CFLAGS)
AM_CXXFLAGS = $(ALBERTA_%EFLAGS%_CXXFLAGS)
+AM_LDFLAGS = ${AM_CFLAGS}
nodist_libalberta%LIBCODE%_la_SOURCES = $(sources)
libalberta%LIBCODE%_la_LIBADD = $(assemble%LIBCODE%_libs)
libalberta%LIBCODE%_la_CPPFLAGS = \
- $(CPPFLAGS) -DDIM_OF_WORLD=%DIM_OF_WORLD% -DALBERTA_DEBUG=%ALBERTA_DEBUG%
+ $(CPPFLAGS) -DDIM_OF_WORLD=%DIM_OF_WORLD% \
+ -DALBERTA_DEBUG=%ALBERTA_DEBUG% \
+ -DALBERTA_PROFILE=%ALBERTA_PROFILE%
libalberta%LIBCODE%_la_LDFLAGS = -version-info 4:0:0
# Various flavours of block-matrix assembly
@@ -76,7 +79,9 @@ lib_LTLIBRARIES += libalberta_gfx%LIBCODE%.la
nodist_libalberta_gfx%LIBCODE%_la_SOURCES = $(gfxsources)
libalberta_gfx%LIBCODE%_la_CPPFLAGS = \
- $(CPPFLAGS) -DDIM_OF_WORLD=%DIM_OF_WORLD% -DALBERTA_DEBUG=%ALBERTA_DEBUG%
+ $(CPPFLAGS) -DDIM_OF_WORLD=%DIM_OF_WORLD% \
+ -DALBERTA_DEBUG=%ALBERTA_DEBUG% \
+ -DALBERTA_PROFILE=%ALBERTA_PROFILE%
#libalberta_gfx%LIBCODE%_la_LIBADD = @GLTOOLS_ALL_LIBS@ @OPENDX_ALL_LIBS@ @OPENGL_ALL_LIBS@
libalberta_gfx%LIBCODE%_la_LDFLAGS = -version-info 4:0:0
diff --git a/configure.ac b/configure.ac
index 109960359f31502d40c531ed1e3187f9bc3cd3c7..c359127cc5d5f3356e15f77d7e74159f88bfe113 100644
--- a/configure.ac
+++ b/configure.ac
@@ -55,7 +55,8 @@ AC_CONFIG_FILES([Makefile gnu-compat/Makefile
alberta/src/Common/Makefile
alberta/src/Common/Makefile.alberta
alberta/src/alberta_Nd/Makefile
- alberta/src/alberta_Nd_debug/Makefile])
+ alberta/src/alberta_Nd_debug/Makefile
+ alberta/src/alberta_Nd_profile/Makefile])
AC_CONFIG_COMMANDS([demo],
[if ! test "$srcdir" = \. ; then
@@ -247,13 +248,22 @@ AC_SUBST([DRANDN_F77_FUNC])
#
ALBERTA_ENABLE_FLAG([debug],
[disable building of ALBERTA libraries with debugging information.],
- 1,
+ [enabled],
BUILD_DEBUG_LIBS)
+#
+# Profiling. Should come first because if not set we can forget about
+# ALBERTA_PROFILE_CFLAGS
+#
+ALBERTA_ENABLE_FLAG([profiling],
+ [disable building of ALBERTA libraries with profiling information.],
+ [disabled],
+ BUILD_PROFILE_LIBS)
+
################################################################################
#
-# Set useful default flags for debugging and optimization, but allow
-# for user override.
+# Set useful default flags for debugging, profiling and optimization,
+# but allow for user override.
#
if test "${BUILD_DEBUG_LIBS}" = "1"; then
@@ -350,6 +360,43 @@ if ! test "${ALBERTA_FFLAGS+set}" = set; then
fi
AC_ARG_VAR([ALBERTA_FFLAGS], [Fortran compiler-flags])
+if test "${BUILD_PROFILE_LIBS}" = "1"; then
+#
+# ****************************************************************************
+#
+# set default profiling flags, but allow for user-override
+#
+ if ! test "${ALBERTA_PROFILE_CFLAGS+set}" = set; then
+ if test "${alberta_save_CFLAGS+set}" = set; then
+ ALBERTA_PROFILE_CFLAGS="${alberta_save_CFLAGS}"
+ else
+ if test "$GCC" = yes; then
+ ALBERTA_PROFILE_CFLAGS="-Wall -pedantic -std=c99 -O3 -pg"
+ else # use autoconf default
+ ALBERTA_PROFILE_CFLAGS="${CFLAGS}"
+ fi
+ fi
+ fi
+
+ AC_ARG_VAR([ALBERTA_PROFILE_CFLAGS],
+ [C compiler-flags used to create the profiling libraries])
+ ALBERTA_ISO_C99_CHECK([${ALBERTA_PROFILE_CFLAGS}])
+
+ if ! test "${ALBERTA_PROFILE_CXXFLAGS+set}" = set; then
+ if test "${alberta_save_CXXFLAGS+set}" = set; then
+ ALBERTA_PROFILE_CXXFLAGS="${alberta_save_CXXFLAGS}"
+ else
+ if test "$GCC" = yes; then
+ ALBERTA_PROFILE_CXXFLAGS="-Wall -fno-rtti -fno-exceptions -O3 -pg"
+ else # use autoconf defaults
+ ALBERTA_PROFILE_CXXFLAGS="${CXXFLAGS}"
+ fi
+ fi
+ fi
+ AC_ARG_VAR([ALBERTA_PROFILE_CXXFLAGS],
+ [C++ compiler-flags used to create the profiling libraries])
+fi
+
#
# Now set the XXFLAGS to the set of flags we will likely use for the
# actual build. Later we will zap them.
diff --git a/generate-alberta-automakefiles.sh b/generate-alberta-automakefiles.sh
index 8eb71c00c06310c4f3f28ddd87cad574741ecceb..18a3d56b7ac638b768b631bc79874538aac6065f 100755
--- a/generate-alberta-automakefiles.sh
+++ b/generate-alberta-automakefiles.sh
@@ -5,14 +5,25 @@
# same.
#
-for ALBERTA_DEBUG in 0 1; do
+for debug in 0 1 2; do
for DIM_OF_WORLD in 1 2 3; do
- if test $ALBERTA_DEBUG -eq 0; then
+ if test $debug -eq 0; then
LIBCODE=_${DIM_OF_WORLD}d
EFLAGS=OPTIMIZE
- else
+ ALBERTA_DEBUG=0
+ ALBERTA_PROFILE=0
+ elif test $debug -eq 1; then
LIBCODE=_${DIM_OF_WORLD}d_debug
EFLAGS=DEBUG
+ ALBERTA_DEBUG=1
+ ALBERTA_PROFILE=0
+ elif test $debug -eq 2; then
+ LIBCODE=_${DIM_OF_WORLD}d_profile
+ EFLAGS=PROFILE
+ ALBERTA_DEBUG=0
+ ALBERTA_PROFILE=1
+ else
+ exit 1
fi
DIRECTORY="alberta/src/alberta${LIBCODE}"
mkdir -p ${DIRECTORY}
@@ -20,30 +31,47 @@ for ALBERTA_DEBUG in 0 1; do
-e "s/%DIM_OF_WORLD%/$DIM_OF_WORLD/g" \
-e "s/%DEBUG%/$DEBUG/g" \
-e "s/%ALBERTA_DEBUG%/$ALBERTA_DEBUG/g" \
+ -e "s/%ALBERTA_PROFILE%/$ALBERTA_PROFILE/g" \
-e "s/%LIBCODE%/$LIBCODE/g" \
-e "s/%EFLAGS%/$EFLAGS/g" \
-e "s/%NO_MULTI_DIM%//g" \
-e "s/%MULTI_DIM%/#/g" \
Makefile.am.template > ${DIRECTORY}/Makefile.am
done
- if test $ALBERTA_DEBUG -eq 0; then
+ if test $debug -eq 0; then
DIRECTORY="alberta/src/alberta_Nd"
- else
+ elif test $debug -eq 1; then
DIRECTORY="alberta/src/alberta_Nd_debug"
+ elif test $debug -eq 2; then
+ DIRECTORY="alberta/src/alberta_Nd_profile"
+ else
+ exit 1
fi
mkdir -p ${DIRECTORY}
for DIM_OF_WORLD in 4 5 6 7 8 9; do
- if test $ALBERTA_DEBUG -eq 0; then
+ if test $debug -eq 0; then
LIBCODE=_${DIM_OF_WORLD}d
EFLAGS=OPTIMIZE
- else
+ ALBERTA_DEBUG=0
+ ALBERTA_PROFILE=0
+ elif test $debug -eq 1; then
LIBCODE=_${DIM_OF_WORLD}d_debug
EFLAGS=DEBUG
+ ALBERTA_DEBUG=1
+ ALBERTA_PROFILE=0
+ elif test $debug -eq 2; then
+ LIBCODE=_${DIM_OF_WORLD}d_profile
+ EFLAGS=DEBUG
+ ALBERTA_DEBUG=0
+ ALBERTA_PROFILE=1
+ else
+ exit 1
fi
sed \
-e "s/%DIM_OF_WORLD%/$DIM_OF_WORLD/g" \
-e "s/%DEBUG%/$DEBUG/g" \
-e "s/%ALBERTA_DEBUG%/$ALBERTA_DEBUG/g" \
+ -e "s/%ALBERTA_PROFILE%/$ALBERTA_PROFILE/g" \
-e "s/%LIBCODE%/$LIBCODE/g" \
-e "s/%EFLAGS%/$EFLAGS/g" \
-e "s/%NO_MULTI_DIM%/#/g" \
diff --git a/m4/alberta-check.m4 b/m4/alberta-check.m4
index 51877cd02dd41104c2f32d98821a34fcc3b6e8f4..183f91d1adff964564895baacf39d9e65ad73522 100644
--- a/m4/alberta-check.m4
+++ b/m4/alberta-check.m4
@@ -25,6 +25,9 @@ AC_DEFUN([ALBERTA_CHECK_NEWLIBS],
if test "${ALBERTA_DEBUG}" = "1"; then
ALBERTA_LIB_$1=alberta_$1d_debug
ALBERTA_LIB_$1_C=ac_cv_lib_ALBERTA$1_DEBUG
+elif test "${ALBERTA_PROFILE}" = "1"; then
+ ALBERTA_LIB_$1=alberta_$1d_profile
+ ALBERTA_LIB_$1_C=ac_cv_lib_ALBERTA$1_PROFILE
else
ALBERTA_LIB_$1=alberta_$1d
ALBERTA_LIB_$1_C=ac_cv_lib_ALBERTA$1
@@ -79,10 +82,17 @@ dnl
AC_DEFUN([ALBERTA_OPTIONS],
[
AC_ARG_ENABLE(debug,
-[ --enable-debug use debug-enabled ALBERTA libraries (default: off)],
-[ALBERTA_DEBUG=1],
-[ALBERTA_DEBUG=0])
+ AC_HELP_STRING([--enable-debug],
+ [Use debug-enabled ALBERTA libraries (default: off)]),
+ [ALBERTA_DEBUG=1],
+ [ALBERTA_DEBUG=0])
AC_SUBST([ALBERTA_DEBUG])
+AC_ARG_ENABLE(profiling,
+ AC_HELP_STRING([--enable-profiling],
+ [Use profiling-enabled ALBERTA libraries (default: off)]),
+ [ALBERTA_PROFILE=1],
+ [ALBERTA_PROFILE=0])
+AC_SUBST([ALBERTA_PROFILE])
])
dnl
diff --git a/m4/alberta-dims.m4 b/m4/alberta-dims.m4
index 00f56510fa82ce9ff04a63f5cd02cf6cacae98cb..7ad273c9f43c4fd8fae9a00e5a1be935940e9336 100644
--- a/m4/alberta-dims.m4
+++ b/m4/alberta-dims.m4
@@ -23,7 +23,8 @@ m4_if(DEFAULT,1,
0, BUILD_ALBERTA_$1)])
m4_if(m4_eval(($1) < 4),1,
[AC_CONFIG_FILES([alberta/src/alberta_$1d/Makefile])
- AC_CONFIG_FILES([alberta/src/alberta_$1d_debug/Makefile])])
+ AC_CONFIG_FILES([alberta/src/alberta_$1d_debug/Makefile])
+ AC_CONFIG_FILES([alberta/src/alberta_$1d_profile/Makefile])])
])
#
diff --git a/m4/grapeiface.m4 b/m4/grapeiface.m4
index ce3720b0e9878e795383ed24af539f69c2da9ad0..dc5d94cbbaef1d209b9b859b49e47682dfce6714 100644
--- a/m4/grapeiface.m4
+++ b/m4/grapeiface.m4
@@ -4,11 +4,16 @@ dnl Some defines to enable building of alberta_movi. This is more
dnl complicated than necessary so that it is easier to build a
dnl stand-alone version of albert_movi.
dnl
+
ALBERTA_CHECK_PACKAGE([grape],[gr],[grape],[],[${OPENGL_ALL_LIBS}],
[grape.h],[],[],[optional])
ALBERTA_LIB_PATHS='$prefix/lib'
ALBERTA_ALL_INCLUDES='-I$(top_srcdir)/alberta/src/Common/ -I$(top_srcdir)/alberta_util/src/ -I$(top_builddir)/alberta_util/src/'
+#
+# ordinary libraries
+#
+
ALBERTA_LIBS_1='$(top_builddir)/alberta/src/alberta_1d/libalberta_1d.la $(top_builddir)/alberta_util/src/libalberta_util.la $(BLAS_ALL_LIBS)'
ALBERTA_LIBS_2='$(top_builddir)/alberta/src/alberta_2d/libalberta_2d.la $(top_builddir)/alberta_util/src/libalberta_util.la $(BLAS_ALL_LIBS)'
@@ -16,22 +21,54 @@ ALBERTA_LIBS_2='$(top_builddir)/alberta/src/alberta_2d/libalberta_2d.la $(top_bu
ALBERTA_LIBS_3='$(top_builddir)/alberta/src/alberta_3d/libalberta_3d.la $(top_builddir)/alberta_util/src/libalberta_util.la $(BLAS_ALL_LIBS)'
ALBERTA_DEBUG=
+#
+# debug libraries
+#
+
ALBERTA_DEBUG_LIBS_1='$(top_builddir)/alberta/src/alberta_1d_debug/libalberta_1d_debug.la $(top_builddir)/alberta_util/src/libalberta_util_debug.la $(BLAS_ALL_LIBS)'
ALBERTA_DEBUG_LIBS_2='$(top_builddir)/alberta/src/alberta_2d_debug/libalberta_2d_debug.la $(top_builddir)/alberta_util/src/libalberta_util_debug.la $(BLAS_ALL_LIBS)'
ALBERTA_DEBUG_LIBS_3='$(top_builddir)/alberta/src/alberta_3d_debug/libalberta_3d_debug.la $(top_builddir)/alberta_util/src/libalberta_util_debug.la $(BLAS_ALL_LIBS)'
+#
+# profiling libraries
+#
+
+ALBERTA_PROFILE_LIBS_1='$(top_builddir)/alberta/src/alberta_1d_profile/libalberta_1d_profile.la $(top_builddir)/alberta_util/src/libalberta_util_profile.la $(BLAS_ALL_LIBS)'
+
+ALBERTA_PROFILE_LIBS_2='$(top_builddir)/alberta/src/alberta_2d_profile/libalberta_2d_profile.la $(top_builddir)/alberta_util/src/libalberta_util_profile.la $(BLAS_ALL_LIBS)'
+
+ALBERTA_PROFILE_LIBS_3='$(top_builddir)/alberta/src/alberta_3d_profile/libalberta_3d_profile.la $(top_builddir)/alberta_util/src/libalberta_util_profile.la $(BLAS_ALL_LIBS)'
+
+#
+# ordinary gfx libraries
+#
+
ALBERTA_GFX_LIBS_1='$(top_builddir)/alberta/src/alberta_1d/libalberta_gfx_1d.la'
ALBERTA_GFX_LIBS_2='$(top_builddir)/alberta/src/alberta_2d/libalberta_gfx_2d.la'
ALBERTA_GFX_LIBS_3='$(top_builddir)/alberta/src/alberta_3d/libalberta_gfx_3d.la'
+#
+# debug gfx libraries
+#
+
ALBERTA_DEBUG_GFX_LIBS_1='$(top_builddir)/alberta/src/alberta_1d_debug/libalberta_gfx_1d_debug.la'
ALBERTA_DEBUG_GFX_LIBS_2='$(top_builddir)/alberta/src/alberta_2d_debug/libalberta_gfx_2d_debug.la'
ALBERTA_DEBUG_GFX_LIBS_3='$(top_builddir)/alberta/src/alberta_3d_debug/libalberta_gfx_3d_debug.la'
+#
+# profiling gfx libraries
+#
+
+ALBERTA_PROFILE_GFX_LIBS_1='$(top_builddir)/alberta/src/alberta_1d_debug/libalberta_gfx_1d_debug.la'
+ALBERTA_PROFILE_GFX_LIBS_2='$(top_builddir)/alberta/src/alberta_2d_debug/libalberta_gfx_2d_debug.la'
+ALBERTA_PROFILE_GFX_LIBS_3='$(top_builddir)/alberta/src/alberta_3d_debug/libalberta_gfx_3d_debug.la'
+
ALBERTA_DEBUG=
+ALBERTA_PROFILE=
+
AC_SUBST(ALBERTA_DEBUG)
AC_SUBST(ALBERTA_LIB_PATHS)
AC_SUBST(ALBERTA_ALL_INCLUDES)
@@ -41,6 +78,9 @@ AC_SUBST(ALBERTA_LIBS_3)
AC_SUBST(ALBERTA_DEBUG_LIBS_1)
AC_SUBST(ALBERTA_DEBUG_LIBS_2)
AC_SUBST(ALBERTA_DEBUG_LIBS_3)
+AC_SUBST(ALBERTA_PROFILE_LIBS_1)
+AC_SUBST(ALBERTA_PROFILE_LIBS_2)
+AC_SUBST(ALBERTA_PROFILE_LIBS_3)
AC_SUBST(ALBERTA_GFX_LIBS_1)
AC_SUBST(ALBERTA_GFX_LIBS_2)
@@ -48,6 +88,9 @@ AC_SUBST(ALBERTA_GFX_LIBS_3)
AC_SUBST(ALBERTA_DEBUG_GFX_LIBS_1)
AC_SUBST(ALBERTA_DEBUG_GFX_LIBS_2)
AC_SUBST(ALBERTA_DEBUG_GFX_LIBS_3)
+AC_SUBST(ALBERTA_PROFILE_GFX_LIBS_1)
+AC_SUBST(ALBERTA_PROFILE_GFX_LIBS_2)
+AC_SUBST(ALBERTA_PROFILE_GFX_LIBS_3)
dnl
dnl end of ALBERTA_GRAPE_STUFF