Actual source code: ex56.c

  1: static char help[] = "Tests PetscHasExternalPackage().\n\n";

  3: #include <petscsys.h>

  5: int main(int argc, char **argv)
  6: {
  7:   char      pkg[128] = "hdf5";
  8:   PetscBool has, flg;

 10:   PetscFunctionBeginUser;
 11:   PetscCall(PetscInitialize(&argc, &argv, NULL, help));
 12:   PetscCall(PetscOptionsGetString(NULL, NULL, "-pkg", pkg, sizeof(pkg), NULL));
 13:   PetscCall(PetscHasExternalPackage(pkg, &has));
 14:   PetscCall(PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has]));
 15:   PetscCall(PetscStrcmp(pkg, "hdf5", &flg));
 16: #if defined(PETSC_HAVE_HDF5)
 17:   PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined");
 18: #else
 19:   PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined");
 20: #endif
 21:   PetscCall(PetscStrcmp(pkg, "parmetis", &flg));
 22: #if defined(PETSC_HAVE_PARMETIS)
 23:   PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined");
 24: #else
 25:   PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined");
 26: #endif
 27:   PetscCall(PetscStrcmp(pkg, "yaml", &flg));
 28: #if defined(PETSC_HAVE_YAML)
 29:   PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined");
 30: #else
 31:   PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is configured but PETSC_HAVE_YAML is undefined");
 32: #endif
 33:   PetscCall(PetscFinalize());
 34:   return 0;
 35: }

 37: /*TEST

 39:    test:
 40:       suffix: blaslapack
 41:       args: -pkg blaslapack
 42:    test:
 43:       suffix: hdf5
 44:       requires: hdf5
 45:       args: -pkg hdf5
 46:    test:
 47:       suffix: no-hdf5
 48:       requires: !hdf5
 49:       args: -pkg hdf5
 50:    test:
 51:       suffix: parmetis
 52:       requires: parmetis
 53:       args: -pkg parmetis
 54:    test:
 55:       suffix: no-parmetis
 56:       requires: !parmetis
 57:       args: -pkg parmetis
 58:    test:
 59:       suffix: yaml
 60:       requires: yaml
 61:       args: -pkg yaml
 62:    test:
 63:       suffix: no-yaml
 64:       requires: !yaml
 65:       args: -pkg yaml

 67: TEST*/