[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Can I peforma conditional tests???
From: |
Ronald Landheer-Cieslak |
Subject: |
Re: Can I peforma conditional tests??? |
Date: |
Wed, 9 Apr 2003 12:34:42 +0200 (CEST) |
Have a look at this:
$ info Conditionals -f automake
HTH
rlc
On Sat, 5 Apr 2003, Dr. David Kirkby wrote:
> I have a program that can be configured in one of three ways:
>
> 1) To be built run like a normal single-threaded application.
> 2) To be built as a multi-threaded application using muoltiple cpus on
> the one machine
> 3) To be built as a distributed processing application, running in
> parallel on a number of computers.
>
> There are a number of tests I'l like to perform that are appropiate
> for all three configurations, but some are only appropiate for case 2
> (multi-threaded) and some for case 3 (distributed processing).
>
> How can I configure extra sets of tests to run if the program was
> configured for multi-threaded or distibuted use? I don't want to run
> all tests in all cases, as some will fail.
>
>
> At present my configure.ac defines 'ENABLE_POSIX_THREADS' if the
> application is configured for threaded opperation and 'ENABLE_MPI'
> gets defined if the program is configured for distributed processing.
> (see below for the full details if wanted).
>
> Is there a way to pass ENABLE_POSIX_THREADS and ENABLE_MPI to the
> tests subdirectory and if so how do i make the tests conditoinal on
> these being defined? Or is there a better way??
>
>
> # My top -level Makefile.am is:
> AUTOMAKE_OPTIONS = gnits
> SUBDIRS = . src man docs examples tools tests
>
> # Makeifile.am in tests subdirectory is:
> TESTS_ENVIRONMENT = top_builddir=$(top_builddir)
> top_srcdir=$(top_srcdir)
> TESTS = \
> 1a.test \
> 1b.test
>
> # Now how do I perform 2a.test +1b.test when configured for
> multi-threded use ?
> # and how do I peform tests 3a.test +3b.test when configured for
> distirbuted processing?
>
>
>
>
> # Extract from configure.ac. This is the only bits of relavance to
> the#
> # multi-threaded and/or distributed processing code.
>
> # This is case 2 above (multi-threading).
> sinclude(acx_pthread.m4)
> AC_ARG_WITH(threads,
> [ --with-threads support thread-based parallel computation -
> this
> needs a POSIX thread library (pthreads or
> similar)
> installed])
>
> if test "x$with_threads" = "xyes"; then
> AC_CHECK_LIB(thread, thr_setconcurrency,
> [AC_DEFINE(HAVE_THR_SETCONCURRENCY)])
> ACX_PTHREAD([AC_DEFINE(ENABLE_POSIX_THREADS)])
> LIBS="$PTHREAD_LIBS $LIBS"
> CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
> CC="$PTHREAD_CC"
> fi
>
>
>
> # case 3 above (distributed processing).
> AC_ARG_WITH(mpi,
> AC_HELP_STRING([--with-mpi=[mpi_install_prefix]],[support MPI-b
> ased parallel computation (needs MPICH installed)]))
> AC_ARG_WITH(mpe,
> AC_HELP_STRING([--with-mpe=[mpi_install_prefix]],[implies --wit
> h-mpi and additionally links in MPE logging support]))
>
> if test "x$with_mpi" != "x" \
> || test "x$with_mpe" != "x"; then
>
> if test "x$with_mp" = "xyes"; then
> AC_MSG_ERROR([it does not make sense to use --with-mp with
> --with-mpi or --w
> ith-mpe])
> fi
> AC_HAVE_HEADERS(mpi.h)
> AC_DEFINE(ENABLE_MPI)
> AC_CHECK_LIB(socket, getsockopt)
> AC_CHECK_LIB(nsl, xdr_void)
> AC_CHECK_LIB(rt, sched_yield)
> if test "x$with_mpe" != "x"; then
> if test "x$with_mpe" = "xyes"; then
> path_to_mpe=/usr/local
> else
> path_to_mpe=$with_mpe
> fi
> CFLAGS="$CFLAGS -I$path_to_mpe/include -L$path_to_mpe/lib"
> AC_CHECK_LIB(pmpich, MPI_Init , , [AC_MSG_ERROR([Could not link
> test progra
> m with libpmpich.a])])
> AC_CHECK_LIB(mpe, MPE_Init_log , , [AC_MSG_ERROR([Could not link
> test progr
> am with libmpe.a])])
> AC_CHECK_LIB(lmpe, MPE_Init_log , ,[AC_MSG_ERROR([Could not link
> test progr
> am with liblmpe.a])] , -lmpe)
> else
> if test "x$with_mpi" = "xyes"; then
> path_to_mpi=/usr/local
> else
> path_to_mpi=$with_mpi
> fi
> CFLAGS="$CFLAGS -I$path_to_mpi/include -L$path_to_mpi/lib"
> AC_CHECK_LIB(mpich, MPI_Init, , [AC_MSG_ERROR([Could not link
> test program
> with libmpich.a])])
> fi
> fi
>
>