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 CHKERRQ(PetscOptionsGetString(NULL,NULL,"-pkg",pkg,sizeof(pkg),NULL)); 14 CHKERRQ(PetscHasExternalPackage(pkg, &has)); 15 CHKERRQ(PetscPrintf(PETSC_COMM_WORLD, "PETSc has %s? %s\n", pkg, PetscBools[has])); 16 CHKERRQ(PetscStrcmp(pkg, "hdf5", &flg)); 17 #if defined(PETSC_HAVE_HDF5) 18 PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is not configured but PETSC_HAVE_HDF5 is defined"); 19 #else 20 PetscCheckFalse(flg && has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says HDF5 is configured but PETSC_HAVE_HDF5 is undefined"); 21 #endif 22 CHKERRQ(PetscStrcmp(pkg, "parmetis", &flg)); 23 #if defined(PETSC_HAVE_PARMETIS) 24 PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is not configured but PETSC_HAVE_PARMETIS is defined"); 25 #else 26 PetscCheckFalse(flg && has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says PARMETIS is configured but PETSC_HAVE_PARMETIS is undefined"); 27 #endif 28 CHKERRQ(PetscStrcmp(pkg, "yaml", &flg)); 29 #if defined(PETSC_HAVE_YAML) 30 PetscCheckFalse(flg && !has,PETSC_COMM_WORLD, PETSC_ERR_PLIB, "PetscHasExternalPackage() says YAML is not configured but PETSC_HAVE_YAML is defined"); 31 #else 32 PetscCheckFalse(flg && has,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