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