From 982f98fdf8e39852f58c81d923c787eb5ceedb24 Mon Sep 17 00:00:00 2001 From: Claus-Justus Heine <Claus-Justus.Heine@IANS.Uni-Stuttgart.DE> Date: Thu, 22 May 2008 01:37:48 +0000 Subject: [PATCH] Optionally build also profiling enabled libraries. --- Makefile.am.template | 9 +++-- configure.ac | 55 ++++++++++++++++++++++++++++--- generate-alberta-automakefiles.sh | 42 +++++++++++++++++++---- m4/alberta-check.m4 | 16 +++++++-- m4/alberta-dims.m4 | 3 +- m4/grapeiface.m4 | 43 ++++++++++++++++++++++++ 6 files changed, 151 insertions(+), 17 deletions(-) diff --git a/Makefile.am.template b/Makefile.am.template index d77a9eb..743f040 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 1099603..c359127 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 8eb71c0..18a3d56 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 51877cd..183f91d 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 00f5651..7ad273c 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 ce3720b..dc5d94c 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 -- GitLab