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