160fbe2beSVaclav Hapla static char help[] = "Tests PetscHasExternalPackage().\n\n";
260fbe2beSVaclav Hapla
360fbe2beSVaclav Hapla #include <petscsys.h>
460fbe2beSVaclav Hapla
main(int argc,char ** argv)5*d71ae5a4SJacob Faibussowitsch int main(int argc, char **argv)
6*d71ae5a4SJacob Faibussowitsch {
760fbe2beSVaclav Hapla char pkg[128] = "hdf5";
860fbe2beSVaclav Hapla PetscBool has, flg;
960fbe2beSVaclav Hapla
10327415f7SBarry Smith PetscFunctionBeginUser;
119566063dSJacob Faibussowitsch PetscCall(PetscInitialize(&argc, &argv, NULL, help));
129566063dSJacob Faibussowitsch PetscCall(PetscOptionsGetString(NULL, NULL, "-pkg", pkg, sizeof(pkg), NULL));
139566063dSJacob Faibussowitsch PetscCall(PetscHasExternalPackage(pkg, &has));
149566063dSJacob Faibussowitsch PetscCall(PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has]));
159566063dSJacob Faibussowitsch PetscCall(PetscStrcmp(pkg, "hdf5", &flg));
1660fbe2beSVaclav Hapla #if defined(PETSC_HAVE_HDF5)
1708401ef6SPierre Jolivet PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined");
1860fbe2beSVaclav Hapla #else
1908401ef6SPierre Jolivet PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined");
2060fbe2beSVaclav Hapla #endif
219566063dSJacob Faibussowitsch PetscCall(PetscStrcmp(pkg, "parmetis", &flg));
2260fbe2beSVaclav Hapla #if defined(PETSC_HAVE_PARMETIS)
2308401ef6SPierre Jolivet PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined");
2460fbe2beSVaclav Hapla #else
2508401ef6SPierre Jolivet PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined");
2660fbe2beSVaclav Hapla #endif
279566063dSJacob Faibussowitsch PetscCall(PetscStrcmp(pkg, "yaml", &flg));
2860fbe2beSVaclav Hapla #if defined(PETSC_HAVE_YAML)
2908401ef6SPierre Jolivet PetscCheck(!flg || has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined");
3060fbe2beSVaclav Hapla #else
3108401ef6SPierre Jolivet PetscCheck(!flg || !has, PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is configured but PETSC_HAVE_YAML is undefined");
3260fbe2beSVaclav Hapla #endif
339566063dSJacob Faibussowitsch PetscCall(PetscFinalize());
34b122ec5aSJacob Faibussowitsch return 0;
3560fbe2beSVaclav Hapla }
3660fbe2beSVaclav Hapla
3760fbe2beSVaclav Hapla /*TEST
3860fbe2beSVaclav Hapla
3960fbe2beSVaclav Hapla test:
4060fbe2beSVaclav Hapla suffix: blaslapack
4160fbe2beSVaclav Hapla args: -pkg blaslapack
4260fbe2beSVaclav Hapla test:
4360fbe2beSVaclav Hapla suffix: hdf5
4460fbe2beSVaclav Hapla requires: hdf5
4560fbe2beSVaclav Hapla args: -pkg hdf5
4660fbe2beSVaclav Hapla test:
4760fbe2beSVaclav Hapla suffix: no-hdf5
4860fbe2beSVaclav Hapla requires: !hdf5
4960fbe2beSVaclav Hapla args: -pkg hdf5
5060fbe2beSVaclav Hapla test:
5160fbe2beSVaclav Hapla suffix: parmetis
5260fbe2beSVaclav Hapla requires: parmetis
5360fbe2beSVaclav Hapla args: -pkg parmetis
5460fbe2beSVaclav Hapla test:
5560fbe2beSVaclav Hapla suffix: no-parmetis
5660fbe2beSVaclav Hapla requires: !parmetis
5760fbe2beSVaclav Hapla args: -pkg parmetis
5860fbe2beSVaclav Hapla test:
5960fbe2beSVaclav Hapla suffix: yaml
6060fbe2beSVaclav Hapla requires: yaml
6160fbe2beSVaclav Hapla args: -pkg yaml
6260fbe2beSVaclav Hapla test:
6360fbe2beSVaclav Hapla suffix: no-yaml
6460fbe2beSVaclav Hapla requires: !yaml
6560fbe2beSVaclav Hapla args: -pkg yaml
6660fbe2beSVaclav Hapla
6760fbe2beSVaclav Hapla TEST*/
68