:orphan:
# PetscHasExternalPackage
Determine whether PETSc has been configured with the given package
## Synopsis
```
#include "petscsys.h"
PetscErrorCode PetscHasExternalPackage(const char pkg[], PetscBool *has)
```
Not Collective
## Input Parameter
- ***pkg -*** external package name
## Output Parameter
- ***has -*** `PETSC_TRUE` if PETSc is configured with the given package, else `PETSC_FALSE`.
## Notes
This is basically an alternative for `PETSC_HAVE_XXX` whenever a preprocessor macro is not available/desirable, e.g. in Python.
The external package name pkg is e.g. "hdf5", "yaml", "parmetis".
It should correspond to the name listed in `./configure --help` or e.g. in `PetscViewerType`, `MatPartitioningType`, `MatSolverType`.
The lookup is case insensitive, i.e. looking for "HDF5" or "hdf5" is the same.
## See Also
`PetscViewerType`, `MatPartitioningType`, `MatSolverType`
## Level
intermediate
## Location
src/sys/objects/package.c
## Examples
src/tao/constrained/tutorials/ex1.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/sys/objects/package.c)
[Index of all Sys routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)