160fbe2beSVaclav Hapla 260fbe2beSVaclav Hapla static char help[] = "Tests PetscHasExternalPackage().\n\n"; 360fbe2beSVaclav Hapla 460fbe2beSVaclav Hapla #include <petscsys.h> 560fbe2beSVaclav Hapla 660fbe2beSVaclav Hapla int main(int argc,char **argv) 760fbe2beSVaclav Hapla { 860fbe2beSVaclav Hapla char pkg[128] = "hdf5"; 960fbe2beSVaclav Hapla PetscBool has,flg; 1060fbe2beSVaclav Hapla PetscErrorCode ierr; 1160fbe2beSVaclav Hapla 1260fbe2beSVaclav Hapla ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr; 13*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscOptionsGetString(NULL,NULL,"-pkg",pkg,sizeof(pkg),NULL)); 14*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscHasExternalPackage(pkg, &has)); 15*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has])); 16*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscStrcmp(pkg, "hdf5", &flg)); 1760fbe2beSVaclav Hapla #if defined(PETSC_HAVE_HDF5) 182c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined"); 1960fbe2beSVaclav Hapla #else 202c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined"); 2160fbe2beSVaclav Hapla #endif 22*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscStrcmp(pkg, "parmetis", &flg)); 2360fbe2beSVaclav Hapla #if defined(PETSC_HAVE_PARMETIS) 242c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined"); 2560fbe2beSVaclav Hapla #else 262c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined"); 2760fbe2beSVaclav Hapla #endif 28*5f80ce2aSJacob Faibussowitsch CHKERRQ(PetscStrcmp(pkg, "yaml", &flg)); 2960fbe2beSVaclav Hapla #if defined(PETSC_HAVE_YAML) 302c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined"); 3160fbe2beSVaclav Hapla #else 322c71b3e2SJacob Faibussowitsch PetscCheckFalse(flg && has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is configured but PETSC_HAVE_YAML is undefined"); 3360fbe2beSVaclav Hapla #endif 3460fbe2beSVaclav Hapla ierr = PetscFinalize(); 3560fbe2beSVaclav Hapla return ierr; 3660fbe2beSVaclav Hapla } 3760fbe2beSVaclav Hapla 3860fbe2beSVaclav Hapla /*TEST 3960fbe2beSVaclav Hapla 4060fbe2beSVaclav Hapla test: 4160fbe2beSVaclav Hapla suffix: blaslapack 4260fbe2beSVaclav Hapla args: -pkg blaslapack 4360fbe2beSVaclav Hapla test: 4460fbe2beSVaclav Hapla suffix: hdf5 4560fbe2beSVaclav Hapla requires: hdf5 4660fbe2beSVaclav Hapla args: -pkg hdf5 4760fbe2beSVaclav Hapla test: 4860fbe2beSVaclav Hapla suffix: no-hdf5 4960fbe2beSVaclav Hapla requires: !hdf5 5060fbe2beSVaclav Hapla args: -pkg hdf5 5160fbe2beSVaclav Hapla test: 5260fbe2beSVaclav Hapla suffix: parmetis 5360fbe2beSVaclav Hapla requires: parmetis 5460fbe2beSVaclav Hapla args: -pkg parmetis 5560fbe2beSVaclav Hapla test: 5660fbe2beSVaclav Hapla suffix: no-parmetis 5760fbe2beSVaclav Hapla requires: !parmetis 5860fbe2beSVaclav Hapla args: -pkg parmetis 5960fbe2beSVaclav Hapla test: 6060fbe2beSVaclav Hapla suffix: yaml 6160fbe2beSVaclav Hapla requires: yaml 6260fbe2beSVaclav Hapla args: -pkg yaml 6360fbe2beSVaclav Hapla test: 6460fbe2beSVaclav Hapla suffix: no-yaml 6560fbe2beSVaclav Hapla requires: !yaml 6660fbe2beSVaclav Hapla args: -pkg yaml 6760fbe2beSVaclav Hapla 6860fbe2beSVaclav Hapla TEST*/ 69