xref: /petsc/src/sys/tests/ex56.c (revision b698fc57f0bea7237255b29c1b77df0acc362ffd)
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   PetscErrorCode    ierr;
11 
12   ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr;
13   ierr = PetscOptionsGetString(NULL,NULL,"-pkg",pkg,sizeof(pkg),NULL);CHKERRQ(ierr);
14   ierr = PetscHasExternalPackage(pkg, &has);CHKERRQ(ierr);
15   ierr = PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has]);CHKERRQ(ierr);
16   ierr = PetscStrcmp(pkg, "hdf5", &flg);CHKERRQ(ierr);
17 #if defined(PETSC_HAVE_HDF5)
18   if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined");
19 #else
20   if (flg && has)  SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined");
21 #endif
22   ierr = PetscStrcmp(pkg, "parmetis", &flg);CHKERRQ(ierr);
23 #if defined(PETSC_HAVE_PARMETIS)
24   if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined");
25 #else
26   if (flg && has)  SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined");
27 #endif
28   ierr = PetscStrcmp(pkg, "yaml", &flg);CHKERRQ(ierr);
29 #if defined(PETSC_HAVE_YAML)
30   if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined");
31 #else
32   if (flg && has)  SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is configured but PETSC_HAVE_YAML is undefined");
33 #endif
34   ierr = PetscFinalize();
35   return ierr;
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