xref: /petsc/src/sys/tests/ex56.c (revision d71ae5a4db6382e7f06317b8d368875286fe9008)
1 
2 static char help[] = "Tests PetscHasExternalPackage().\n\n";
3 
4 #include <petscsys.h>
5 
6 int main(int argc, char **argv)
7 {
8   char      pkg[128] = "hdf5";
9   PetscBool has, flg;
10 
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 }
37 
38 /*TEST
39 
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
67 
68 TEST*/
69