Actual source code: ex56.c


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

  4: #include <petscsys.h>

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

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

 38: /*TEST

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

 68: TEST*/