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