2025-06-28 10:54:47 +02:00

71 lines
2.2 KiB
Tcl

tcl::tm::add [file normalize [file join [file dirname [info script]] .]]
package require testme
# These tests check the MPI compiler driver mpi{c,c++,fc} functionality
testme::unit -name "MPI C compiler driver test" -tags {mpi c} {
package require buildme
buildme::sandbox {
buildme::shell "mpicc -o a hello_mpi.c && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI C++ compiler driver test" -tags {mpi c++} {
package require buildme
buildme::sandbox {
buildme::shell "mpicxx -o a hello_mpi.cpp && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI FORTRAN77 compiler driver test" -tags {mpi fortran} {
package require buildme
buildme::sandbox {
buildme::shell "mpif77 -o a hello_mpi.F && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI FORTRAN90 compiler driver test" -tags {mpi fortran} {
package require buildme
buildme::sandbox {
buildme::shell "mpif90 -o a hello_mpi.f90 && mpiexec -np 1 ./a"
}
}
# These tests check the MPI's PkgConfig module to be used as a dependency
# This fixes the issue related to the PkgConf-GFORTRAN interaction.
# Specifically, pkgconf (contrary to the original pkg-config utility) omits system
# directories (/ucrt64/include and alike) from command line options by default
# while gfortran (unlike gcc) maintains no default lookup directories and thus requires it.
set ::env(PKG_CONFIG_ALLOW_SYSTEM_CFLAGS) 1
testme::unit -name "MPI C dependency test" -tags {mpi c} {
package require buildme
buildme::sandbox {
buildme::shell "cc -o a hello_mpi.c `pkgconf msmpi --cflags --libs` && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI C++ dependency test" -tags {mpi c++} {
package require buildme
buildme::sandbox {
buildme::shell "c++ -o a hello_mpi.cpp `pkgconf msmpi --cflags --libs` && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI FORTRAN77 dependency test" -tags {mpi fortran} {
package require buildme
buildme::sandbox {
buildme::shell "gfortran -o a hello_mpi.F `pkgconf msmpi --cflags --libs` && mpiexec -np 1 ./a"
}
}
testme::unit -name "MPI FORTRAN90 dependency test" -tags {mpi fortran} {
package require buildme
buildme::sandbox {
buildme::shell "gfortran -o a hello_mpi.f90 `pkgconf msmpi --cflags --libs` && mpiexec -np 1 ./a"
}
}