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