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*/