xref: /petsc/src/sys/tests/ex56.c (revision 1b37a2a7cc4a4fb30c3e967db1c694c0a1013f51)
1 static char help[] = "Tests PetscHasExternalPackage().\n\n";
2 
3 #include <petscsys.h>
4 
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