1 static char help[] = "Tests PetscHasExternalPackage().\n\n";
2
3 #include <petscsys.h>
4
main(int argc,char ** argv)5 int main(int argc, char **argv)
6 {
7 char pkg[128] = "hdf5";
8 PetscBool has, flg;
9
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 }
36
37 /*TEST
38
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
66
67 TEST*/
68