1*60fbe2beSVaclav Hapla 2*60fbe2beSVaclav Hapla static char help[] = "Tests PetscHasExternalPackage().\n\n"; 3*60fbe2beSVaclav Hapla 4*60fbe2beSVaclav Hapla #include <petscsys.h> 5*60fbe2beSVaclav Hapla 6*60fbe2beSVaclav Hapla int main(int argc,char **argv) 7*60fbe2beSVaclav Hapla { 8*60fbe2beSVaclav Hapla char pkg[128] = "hdf5"; 9*60fbe2beSVaclav Hapla PetscBool has,flg; 10*60fbe2beSVaclav Hapla PetscErrorCode ierr; 11*60fbe2beSVaclav Hapla 12*60fbe2beSVaclav Hapla ierr = PetscInitialize(&argc,&argv,NULL,help);if (ierr) return ierr; 13*60fbe2beSVaclav Hapla ierr = PetscOptionsGetString(NULL,NULL,"-pkg",pkg,sizeof(pkg),NULL);CHKERRQ(ierr); 14*60fbe2beSVaclav Hapla ierr = PetscHasExternalPackage(pkg, &has);CHKERRQ(ierr); 15*60fbe2beSVaclav Hapla ierr = PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has]);CHKERRQ(ierr); 16*60fbe2beSVaclav Hapla ierr = PetscStrcmp(pkg, "hdf5", &flg);CHKERRQ(ierr); 17*60fbe2beSVaclav Hapla #if defined(PETSC_HAVE_HDF5) 18*60fbe2beSVaclav Hapla if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined"); 19*60fbe2beSVaclav Hapla #else 20*60fbe2beSVaclav Hapla if (flg && has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined"); 21*60fbe2beSVaclav Hapla #endif 22*60fbe2beSVaclav Hapla ierr = PetscStrcmp(pkg, "parmetis", &flg);CHKERRQ(ierr); 23*60fbe2beSVaclav Hapla #if defined(PETSC_HAVE_PARMETIS) 24*60fbe2beSVaclav Hapla if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined"); 25*60fbe2beSVaclav Hapla #else 26*60fbe2beSVaclav Hapla if (flg && has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined"); 27*60fbe2beSVaclav Hapla #endif 28*60fbe2beSVaclav Hapla ierr = PetscStrcmp(pkg, "yaml", &flg);CHKERRQ(ierr); 29*60fbe2beSVaclav Hapla #if defined(PETSC_HAVE_YAML) 30*60fbe2beSVaclav Hapla if (flg && !has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined"); 31*60fbe2beSVaclav Hapla #else 32*60fbe2beSVaclav Hapla if (flg && has) SETERRQ(PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is configured but PETSC_HAVE_YAML is undefined"); 33*60fbe2beSVaclav Hapla #endif 34*60fbe2beSVaclav Hapla ierr = PetscFinalize(); 35*60fbe2beSVaclav Hapla return ierr; 36*60fbe2beSVaclav Hapla } 37*60fbe2beSVaclav Hapla 38*60fbe2beSVaclav Hapla /*TEST 39*60fbe2beSVaclav Hapla 40*60fbe2beSVaclav Hapla test: 41*60fbe2beSVaclav Hapla suffix: blaslapack 42*60fbe2beSVaclav Hapla args: -pkg blaslapack 43*60fbe2beSVaclav Hapla test: 44*60fbe2beSVaclav Hapla suffix: hdf5 45*60fbe2beSVaclav Hapla requires: hdf5 46*60fbe2beSVaclav Hapla args: -pkg hdf5 47*60fbe2beSVaclav Hapla test: 48*60fbe2beSVaclav Hapla suffix: no-hdf5 49*60fbe2beSVaclav Hapla requires: !hdf5 50*60fbe2beSVaclav Hapla args: -pkg hdf5 51*60fbe2beSVaclav Hapla test: 52*60fbe2beSVaclav Hapla suffix: parmetis 53*60fbe2beSVaclav Hapla requires: parmetis 54*60fbe2beSVaclav Hapla args: -pkg parmetis 55*60fbe2beSVaclav Hapla test: 56*60fbe2beSVaclav Hapla suffix: no-parmetis 57*60fbe2beSVaclav Hapla requires: !parmetis 58*60fbe2beSVaclav Hapla args: -pkg parmetis 59*60fbe2beSVaclav Hapla test: 60*60fbe2beSVaclav Hapla suffix: yaml 61*60fbe2beSVaclav Hapla requires: yaml 62*60fbe2beSVaclav Hapla args: -pkg yaml 63*60fbe2beSVaclav Hapla test: 64*60fbe2beSVaclav Hapla suffix: no-yaml 65*60fbe2beSVaclav Hapla requires: !yaml 66*60fbe2beSVaclav Hapla args: -pkg yaml 67*60fbe2beSVaclav Hapla 68*60fbe2beSVaclav Hapla TEST*/ 69